l1n6yun's Blog

记录学习的技能和遇到的问题

0%

先来看下面写好的批处理代码,有木有眼花缭乱的感觉,不要害怕哦,其实核心代码只有一行而已!准确的说应该是将一些最基本的DOS命令组合在了一起。

1
2
3
4
5
6
@echo off
color e
title 批处理扫网段主机
echo.
@for /f "tokens=1-4 delims=." %%i in (ip.txt) do (@for /l %%n in (1,1,255) do @ping -w 600 -n 1 -l 1 %%i.%%j.%%k.%%n|find /i "ttl")
echo.&echo 扫描完毕,按任意键退出...&pause>nul

复制以上代码粘贴到记事本文档里,然后另存为 批量ping.bat ,再新建一个空白的文本文档,重命名为 ip.txt 。一切准备完事儿,就可以将你要批量扫描的ip段的地址放入 ip.txt 里(比如要扫自己对应的内网IP段就可以在 ip.txt 里输入 192.168.0.1 后保存),然后双击一键运行 批量ping.bat 批处理脚本就可以看到返回的结果了。格式类似于:

1
2
3
4
5
6
7
来自 192.168.0.1 的回复: 字节=1 时间<1ms TTL=64
来自 192.168.0.101 的回复: 字节=1 时间=31ms TTL=64
来自 192.168.0.103 的回复: 字节=1 时间=326ms TTL=64
来自 192.168.0.104 的回复: 字节=1 时间=26ms TTL=64
来自 192.168.0.108 的回复: 字节=1 时间<1ms TTL=64
来自 192.168.0.162 的回复: 字节=1 时间<1ms TTL=128
……此处省略余下的所有可能的结果……

下面我就来解读一下介个看起来有点儿吃力的批处理命令吧。我们分拆来看一下,ping -w 600 -n 1 -l 1 表示对指定ip地址ping一次,等待超时的时间为600毫秒;|find /i "ttl" 指的是仅显示ping返回结果中带“ttl”字符串的结果,也就是将指定网段内不存活的主机过滤掉了。而前面的 @for /f "tokens=1-4 delims=." %%i in (ip.txt) 意思是将“ip.txt”里的字符串(也就是我们要查找的ip段的地址)以“.”为界分割为四部分,分别赋予后面的变量 %%i、%%j、%%k 。最后剩下的 @for /l %%n in (1,1,255) 则表示从1开始循环+1递增一直到255停止,然后赋予变量 %%n 。不知道这样说同学能否看懂呢?看不懂滴可以在cmd窗口里输入 for /? 查看一下命令详解吧。

  1. 将一下代码保存为浏览器书签
    1
    javascript:document.cookie=window.prompt("Linx Edit cookie:",document.cookie);void(0);
  2. 打开需要查询或编辑的网站
  3. 点击书签即可对Cookie进行操作

Linx 是作者的名称

基于之前的文章方法,加入批处理命令即可实现自动备份。只是由于批处理命令中对于备份文件的名字按照时间命名比较特别,所以特别整理一文。

复制date文件夹备份

假想环境:
MySQL 安装位置:C:\MySQL
论坛数据库名称为:bbs
数据库备份目的地:C:\db_bak\

新建db_bak.bat,写入以下代码

1
2
3
net stop mysql
xcopy c:\mysql\data\bbs\*.* c:\db_bak\bbs\%date:~0,10%\ /S /I
net start mysql

然后使用Windows的“计划任务”定时执行该批处理脚本即可。(例如:每天凌晨3点执行back_db.bat)

解释:备份和恢复的操作都比较简单,完整性比较高,控制备份周期比较灵活,例如,用%date:0,10%。此方法适合有独立主机但对mysql没有管理经验的用户。缺点是占用空间比较多,备份期间mysql会短时间断开(例如:针对30M左右的数据库耗时5s左右),针对%date:0,10%的用法参考 。

mysqldump备份成sql文件

假想环境:

MySQL 安装位置:C:\MySQL
论坛数据库名称为:bbs
MySQL root 密码:123456
数据库备份目的地:D:\db_backup\

脚本:

1
2
3
4
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
C:\MySQL\bin\mysqldump --opt -u root --password=123456 bbs > D:\db_backup\bbs_%Ymd%.sql
@echo on

将以上代码保存为backup_db.bat

然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天凌晨5点执行back_db.bat)

说明:此方法可以不用关闭数据库,并且可以按每一天的时间来名称备份文件。

通过%date:5,2%来组合得出当前日期,组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(**如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:,20%得到的当前计算机日期格式**),所以通过%date:5,2%即可得到日期中的第五个字符开始的两个字符,例如今天为2009-02-05,通过%date:5,2%则可以得到02。(日期的字符串的下标是从0开始的)

利用WinRAR对MySQL数据库进行定时备份。

对于MySQL的备份,最好的方法就是直接备份MySQL数据库的Data目录。下面提供了一个利用WinRAR来对Data目录进行定时备份的方法。

首先当然要把WinRAR安装到计算机上。

将下面的命令写入到一个文本文件里

1
2
3
net stop mysql
c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar d:\mysql\data
net start mysql

保存,然后将文本文件的扩展名修改成CMD。进入控制面版,打开计划任务,双击“添加计划任务”。在计划任务向导中找到刚才的CMD文件,接着为这个任务指定一个运行时间和运行时使用的账号密码就可以了。

这种方法缺点是占用时间比较多,备份期间压缩需要时间,mysql断开比第一种方法更多的时间,但是对于文件命名很好。

一些代码保存为 清除桌面快捷方式小箭头.reg 文件运行后,重启 explorer.exe 进程

1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"29"=""

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*****************************************
Copyright (c) 2004, Laser Lu
http://www.idow.net
*****************************************/
function convertCurrency(currencyDigits) {
// Constants:
var MAXIMUM_NUMBER = 99999999999.99;
// Predefine the radix characters and currency symbols for output:
var CN_ZERO = "零";
var CN_ONE = "壹";
var CN_TWO = "贰";
var CN_THREE = "叁";
var CN_FOUR = "肆";
var CN_FIVE = "伍";
var CN_SIX = "陆";
var CN_SEVEN = "柒";
var CN_EIGHT = "捌";
var CN_NINE = "玖";
var CN_TEN = "拾";
var CN_HUNDRED = "佰";
var CN_THOUSAND = "仟";
var CN_TEN_THOUSAND = "万";
var CN_HUNDRED_MILLION = "亿";
var CN_SYMBOL = "";
var CN_DOLLAR = "元";
var CN_TEN_CENT = "角";
var CN_CENT = "分";
var CN_INTEGER = "整";

// Variables:
var integral; // Represent integral part of digit number.
var decimal; // Represent decimal part of digit number.
var outputCharacters; // The output result.
var parts;
var digits, radices, bigRadices, decimals;
var zeroCount;
var i, p, d;
var quotient, modulus;

// Validate input string:
currencyDigits = currencyDigits.toString();
if (currencyDigits == "") {
PUT.alert("不能为空。");
return false;
}
if (currencyDigits.match(/[^,.\d]/) != null) {
PUT.alert("请输入数字。");
return '';
}
if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
PUT.alert("请输入正确数字。");
return false;
}

// Normalize the format of input digits:
currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.
currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.
// Assert the number is not greater than the maximum number.
if (Number(currencyDigits) > MAXIMUM_NUMBER) {
PUT.alert("超出了最大数字转换。");
return false;
}

// Process the coversion from currency digits to characters:
// Separate integral and decimal parts before processing coversion:
parts = currencyDigits.split(".");
if (parts.length > 1) {
integral = parts[0];
decimal = parts[1];
// Cut down redundant decimal digits that are after the second.
decimal = decimal.substr(0, 2);
}
else {
integral = parts[0];
decimal = "";
}
// Prepare the characters corresponding to the digits:
digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
decimals = new Array(CN_TEN_CENT, CN_CENT);
// Start processing:
outputCharacters = "";
// Process integral part if it is larger than 0:
if (Number(integral) > 0) {
zeroCount = 0;
for (i = 0; i < integral.length; i++) {
p = integral.length - i - 1;
d = integral.substr(i, 1);
quotient = p / 4;
modulus = p % 4;
if (d == "0") {
zeroCount++;
}
else {
if (zeroCount > 0)
{
outputCharacters += digits[0];
}
zeroCount = 0;
outputCharacters += digits[Number(d)] + radices[modulus];
}
if (modulus == 0 && zeroCount < 4) {
outputCharacters += bigRadices[quotient];
zeroCount = 0;
}
}
outputCharacters += CN_DOLLAR;
}
// Process decimal part if there is:
if (decimal != "") {
for (i = 0; i < decimal.length; i++) {
d = decimal.substr(i, 1);
if (d != "0") {
outputCharacters += digits[Number(d)] + decimals[i];
}
}
}
// Confirm and return the final output string:
if (outputCharacters == "") {
outputCharacters = CN_ZERO + CN_DOLLAR;
}
if (decimal == "") {
outputCharacters += CN_INTEGER;
}
outputCharacters = CN_SYMBOL + outputCharacters;
return outputCharacters;
}

使用方法:

1
2
3
4
5
6
convertCurrency(123.45)
"壹佰贰拾叁元肆角伍分"
convertCurrency(123000.45)
"壹拾贰万叁仟元肆角伍分"
convertCurrency(123456.78)
"壹拾贰万叁仟肆佰伍拾陆元柒角捌分"

create_code.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
session_start();
//生成验证码图片
header("Content-type: image/png");
// 全数字
$str = "1,2,3,4,5,6,7,8,9,a,b,c,d,f,g"; //要显示的字符,可自己进行增删
$list = explode(",", $str);
$cmax = count($list) - 1;
$verifyCode = '';
for ( $i=0; $i < 5; $i++ ){
$randnum = mt_rand(0, $cmax);
$verifyCode .= $list[$randnum]; //取出字符,组合成为我们要的验证码字符
}
$_SESSION['code'] = $verifyCode; //将字符放入SESSION中

$im = imagecreate(58,28); //生成图片
$black = imagecolorallocate($im, 0,0,0); //此条及以下三条为设置的颜色
$white = imagecolorallocate($im, 255,255,255);
$gray = imagecolorallocate($im, 200,200,200);
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im,0,0,$white); //给图片填充颜色

//将验证码绘入图片
imagestring($im, 5, 10, 8, $verifyCode, $black); //将验证码写入到图片中

for($i=0;$i<50;$i++) //加入干扰象素
{
imagesetpixel($im, rand()p , rand()0 , $black); //加入点状干扰素
imagesetpixel($im, rand()p , rand()0 , $red);
imagesetpixel($im, rand()p , rand()0 , $gray);
//imagearc($im, rand()p, rand()p, 20, 20, 75, 170, $black); //加入弧线状干扰素
//imageline($im, rand()p, rand()p, rand()p, rand()p, $red); //加入线条状干扰素
}
imagepng($im);
imagedestroy($im);
?>

引用
demo.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd" -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>

<body>
<form action="act.php" method="post">
<input type="text" name="code" />
<img id="code" src="create_code.php" alt="看不清楚,换一张" style="cursor: pointer; vertical-align:middle;" onClick="create_code()"/>
<!--<button type="button" onClick="create_code()">更换</button>-->
<button type="submit">提交</button>
</form>
<script>
function create_code(){
document.getElementById('code').src = 'create_code.php?'+Math.random()*10000;
}
</script>
</body>
</html>

//处理,判断是否输入正确
act.php

1
2
3
4
5
6
7
8
9
<?php
session_start();

if($_POST['code'] == $_SESSION['code']){
echo 'ok';
}else{
echo 'no';
}
?>

有没有觉得浏览器自带的原始滚动条很不美观,同时也有看到很多网站的自定义滚动条显得高端,就连 chrome32.0 开发板都抛弃了原始的滚动条,美观多了。那 ** webkit浏览器 ** 是如何自定义滚动条的呢?

前言

webkit 支持拥有 overflow 属性的区域,列表框,下拉菜单,textarea 的滚动条自定义样式,所以用处还是挺大的。当然,兼容所有浏览器的滚动条样式目前是不存在的。

演示

来看看这2个滚动条demo: demo1(图片版)demo2(纯CSS3版)

滚动条组成

样式名 介绍
::-webkit-scrollbar 滚动条整体部分
::-webkit-scrollbar-thumb 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
::-webkit-scrollbar-track 滚动条的轨道(里面装有Thumb)
::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)
::-webkit-scrollbar-corner 边角,即两个滚动条的交汇处
::-webkit-resizer 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件

简洁版

这里就不贴出详细代码了, demo 里面可以通过查看源码寻找具体样式的设置。来看看 demo2 中第二个滚动条的样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/  
::-webkit-scrollbar
{
width: 16px;
height: 16px;
background-color: #F5F5F5;
}

/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px;
background-color: #F5F5F5;
}

/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #555;
}

详细设置

定义滚动条就是利用伪元素与伪类,那什么是伪元素和伪类呢?

伪类大家应该很熟悉 :link , :focus , :hover ,此外 CSS3 中又增加了许多伪类选择器,如 :nth-child , :last-child , :nth-last-of-type() 等。

CSS 中的伪元素大家以前看过: :first-line , :first-letter , :before , :after 。那么在 CSS3 中,伪元素进行了调整,在以前的基础上增加了一个 : 也就是现在变成了” ::first-letter , ::first-line , ::before , ::after “,另外 CSS3 还增加了一个 ::selection 。两个 :: 和一个 :CSS3 中主要用来区分伪类和伪元素。

webkit的伪类和伪元素的实现很强,可以把滚动条当成一个页面元素来定义,再结合一些高级的 CSS3 属性,比如渐变、圆角、RGBa等等。然后如果有些地方要用图片,可以把图片也可以转换成 Base64 ,不然每次都得加载那个多个图片,增加请求数。

任何对象都可以设置:边框、阴影、背景图片等等,创建的滚动条任然会按照操作系统本身的设置来完成其交互的行为。下面的伪类可以应用到上面的伪元素中。有点小复杂,具体怎么写可以看第一个 demo ,那里也有注释。

样式名 介绍
:horizontal horizontal 伪类适用于任何水平方向上的滚动条
:vertical vertical 伪类适用于任何垂直方向的滚动条
:decrement decrement 伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮
:increment increment 伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮
:start start 伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的前面
:end end 伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的后面
:double-button double-button 伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。
:single-button single-button 伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。
:no-button no-button 伪类表示轨道结束的位置没有按钮。
:corner-present corner-present 伪类表示滚动条的角落是否存在。
:window-inactive 适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。
::-webkit-scrollbar-track-piece:start 滚动条上半边或左半边
::-webkit-scrollbar-thumb:window-inactive 当焦点不在当前区域滑块的状态
::-webkit-scrollbar-button:horizontal:decrement:hover 当鼠标在水平滚动条下面的按钮上的状态

导语:

Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。

Ulysses for Mac

Ulysses for Mac

一,认识 Markdown

在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版、字体设置。它使我们专心于码字,用「标记」语法,来代替常见的排版格式。例如此文从内容到格式,甚至插图,键盘就可以通通搞定了。目前来看,支持 Markdown 语法的编辑器有很多,包括很多网站(例如简书)也支持了 Markdown 的文字录入。Markdown 从写作到完成,导出格式随心所欲,你可以导出 HTML 格式的文件用来网站发布,也可以十分方便的导出 PDF 格式,这种格式写出的简历更能得到 HR 的好感。甚至可以利用 CloudApp 这种云服务工具直接上传至网页用来分享你的文章,全球最大的轻博客平台 Tumblr,也支持 Mou 这类 Markdown 工具的直接上传。

Markdown 官方文档

这里可以看到官方的 Markdown 语法规则文档,当然,** 后文我也会用自己的方式阐述这些语法的具体用法 **。

使用 Markdown 的优点

  • 专注你的文字内容而不是排版样式,安心写作。
  • 轻松的导出 HTML、PDF 和本身的 .md 文件。
  • 纯文本内容,兼容所有的文本编辑器与字处理软件。
  • 随时修改你的文章版本,不必像字处理软件生成若干文件版本导致混乱。
  • 可读、直观、学习成本低。

使用 Markdown 的误区

*We believe that writing is about content, about what you want to say – not about fancy formatting. *
我们坚信写作写的是内容,所思所想,而不是花样格式。
— Ulysses for Mac

  • Markdown 旨在简洁、高效,也由于 Markdown 的易读易写,人们用不同的编程语言实现了多个版本的解析器和生成器,这就导致了目前不同的 Markdown 工具集成了不同的功能(基础功能大致相同),例如流程图与时序图,复杂表格与复杂公式的呈现,虽然功能的丰富并没有什么本质的缺点,但终归有些背离初衷,何况在编写的过程中很费神,不如使用专业的工具撰写来的更有效率,所以如果你需实现复杂功能,专业的图形界面工具会更加方便。** 当然,如果你对折腾这些不同客户端对 Markdown 的定制所带来高阶功能感到愉悦的话,那也是无可厚非的。 **

flowchart.js on Github(使用 Markdown 绘制流程图)

flowchart.js on Github(使用 Markdown 绘制流程图)

我该用什么工具?

Mou for Mac

Mou for Mac

  • 在 Mac OS X 上,我强烈建议你用 Mou 这款免费且十分好用的 Markdown 编辑器,它支持实时预览,既左边是你编辑 Markdown 语言,右边会实时的生成预览效果。不仅如此,Mou 还有一些有趣的偏好设置(Preference),例如主题(Themes)与样式(CSS),它们可以配置出定制化的文本编辑效果与导出效果,如果你对自带的主题与样式不满意还可以到 GitHub 上搜索其它爱好者为 Mou 编写的更多主题样式,导入的方式可以在偏好设置的 Themes 或 CSS 选项中 选择 reload。

Mou 的编写与预览窗口

Mou 的编写与预览窗口

如果你从事文字工作,我强烈建议你购买 Ulysses for Mac,这款软件入围了苹果 Mac App Store 的 The Best of 2013。它支持更多的写作格式、多文档的支持。Mou,iA writer 这些软件都是基于单文档的管理方式,而 Ulysses 支持 Folder、Filter 的管理,一个 Folder 里面可以创建多个 Sheet,Sheet 之间也可以进行 Combine 处理。

Mac 上一些 Markdown 编辑器

Mac 上一些 Markdown 编辑器

  • 由于笔者很少接触 Windows,Windows 下的 Markdown 没有过多涉猎,经朋友介绍,有两款还算不错,一款叫做 MarkdownPad ,另一款叫做 MarkPad
  • iOS 端很多 app 早已经支持了 Markdown 录入,例如 Drafts,Day One,iA writer 等,另外 Ulysses for iPad 现在已经上架,可以说是 iOS 平台最好的编辑器了。
  • 在 Web端,我强烈推荐简书这款产品,上面有无数热爱文字的人在不停的创造,分享。在 Web 端使用 Markdown * 没有比简书更舒服的地方了,同样支持左右两栏的实时预览,字体优雅,简洁。

简书的编辑预览模式

简书的编辑预览模式

二,Markdown 语法的简要规则

标题

标题

标题

标题是每篇文章都需要也是最常用的格式,在 Markdown 中,如果一段文字被定义为标题,只要在这段文字前加 # 号即可。

# 一级标题

## 二级标题

### 三级标题

以此类推,总共六级标题,建议在井号后加一个空格,这是最标准的 Markdown 语法。

列表

熟悉 HTML 的同学肯定知道有序列表与无序列表的区别,在 Markdown 下,列表的显示只需要在文字前加上 -* 即可变为无序列表,有序列表则直接在文字前加1. 2. 3. 符号要和文字之间加上一个字符的空格。

无序列表与有序列表

无序列表与有序列表

引用

如果你需要引用一小段别处的句子,那么就要用引用的格式。

例如这样

只需要在文本前加入 > 这种尖括号(大于号)即可

引用

引用

图片与链接

插入链接与插入图片的语法很像,区别在一个 !

图片为:![](){ImgCap}{/ImgCap}

链接为:[]()

插入图片的地址需要图床,这里推荐围脖图床修复计划CloudApp 的服务,生成URL地址即可。

URL 与图片

URL 与图片

粗体与斜体

Markdown 的粗体和斜体也非常简单,用两个 * 包含一段文本就是粗体的语法,用一个 * 包含一段文本就是斜体的语法。

例如:** 这里是粗体 ** * 这里是斜体 *

表格

表格是我觉得 Markdown 比较累人的地方,例子如下:

1
2
3
4
5
| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |

这种语法生成的表格如下:

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

代码框

如果你是个程序猿,需要在文章里优雅的引用代码框,在 Markdown下实现也非常简单,只需要用两个 ` 把中间的代码包裹起来。图例:

使用 `tab` 键即可缩进

使用 tab 键即可缩进。

分割线

分割线的语法只需要三个 * 号,例如:


[ 到这里,Markdown 的基本语法在日常的使用中基本就没什么大问题了,只要多加练习,配合好用的工具,写起东西来肯定会行云流水。更多的语法规则,其实 Mou 的 Help 文档栗子很好,当你第一次使用 Mou 时,就会显示该文档。可以用来对用的查找和学习。

三,相关推荐:

工具

图床工具用来上传图片获取 URL 地址

在线好用的Markdown工具,为印象笔记而生

相关文章阅读:

对于文件夹:

1、解除对某磁盘某个文件夹的强行隐藏(示例):

1
attrib d:\"Program Files" -s -h /s /d

2、解除对某磁盘全部文件夹的强行隐藏(示例):

1
attrib d:\"*" -s -h /s /d

——友情提示:以上示例中,d:为磁盘盘符;引号内为文件夹名称;相关命令参数:

参数 注释
+r 设置只读文件属性。
-r 清除只读文件属性。
+a 设置存档属性。
-a 清除存档属性。
+s 设置系统文件属性。
-s 清除系统文件属性。
+h 设置隐藏文件属性。
-h 清除隐藏文件属性。
/s 将attrib和任意命令行选项应用到当前目录及其所有子目录中的匹配文件。
/d 将attrib和任意命令行选项应用到目录。
/? 在命令提示符下显示帮助。

对于文件:

1
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [ /D]]
参数 注释
+ 设置属性。
- 清除属性。
R 只读文件属性。
A 存档文件属性。
S 系统文件属性。
H 隐藏文件属性。
[drive:][path][filename] 指定要处理的文件属性。
/S 处理当前文件夹及其子文件夹中的匹配文件。
/D 也处理文件夹。

例如:

1
attrib -s -h -r c:\*.*