一些小参考
git语句集合
git本质就是记录对文件的修改,通过对文件的修改求和来求出文件的最后样子
工作区(你本身的电脑)和版本库(git仓库,仓库里面有git的主体和暂存区),首先是工作区提交到暂存区(可以重复很多次),然后暂存区提交到git主体就是提交改变内容,插入分支里面(git commit的话只会commit暂存区内容)
安装:(Shell)sudo apt-get install git
在某个文件夹里面创建新的版本库:
$ mkdir learngit
$ cd learngit
$ pwd
/root/learngit
$ git init
添加文件
xxxxxxxxxx
$ git add readme.txt
$ git commit -m "wrote a readme file"(""内的为本次更改的说明)
查询状态
xxxxxxxxxx
$ git status
查看本地库和git库的差别
xxxxxxxxxx
$ git diff readme.txt
查询修改记录
xxxxxxxxxx
$ git log
$ git reflog(更强大)
版本修改:
xxxxxxxxxx
$ git reset --hard (version number or HEAD^)
获得git仓库里面最近一次add或者commit的版本
xxxxxxxxxx
$ git checkout -- readme.txt
暂存区的修改撤销掉
xxxxxxxxxx
$ git reset HEAD readme.txt
$ git checkout -- readme.txt
删除版本库
xxxxxxxxxx
$ git rm test.txt
ssh key
xxxxxxxxxx
$ ssh-keygen -t rsa -C "youremail@example.com"
#在/root/User/.ssh/id_rsa.pub
连接远程库
xxxxxxxxxx
$ git remote add origin git@github.com:url
推送到远程库
xxxxxxxxxx
$ git push <远程主机名> <本地分支名>:<远程分支名>(本地==远程可以不用谢、写远程)
$ git push origin(push all)
删除远程库
xxxxxxxxxx
$ git remote rm origin
克隆仓库
xxxxxxxxxx
$ git clone git@github.com:michaelliao/gitskills.git
创建分支
xxxxxxxxxx
$ git branch dev
切换分支
xxxxxxxxxx
$ git checkout dev
$ git switch master
合并分支
xxxxxxxxxx
$ git merge dev
$ git merge --no-ff -m "merge with no-ff" dev(合并分支并且提交一个commiit)
查看所有分支
xxxxxxxxxx
$ git branch
保存现场
xxxxxxxxxx
$ git stash
回到工作现场
xxxxxxxxxx
$ git stash pop
拉取远程仓库
xxxxxxxxxx
$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ git pull origin(拉取全部)
$ git pull origin master:brantest
因此,多人协作的工作模式通常是这样:
- 首先,可以试图用
git push origin <branch-name>
推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; - 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
html标签合集
基础
<!DOCTYPE html>
声明html文件的类型
<!-- 这是一个注释 -->
表示注释
<hr>
页面水平线
<br/>
表示换行
<html>
声明html主体文件
<head>
声明文档的元数据
<title>
声明页面的标题
<body>
声明可见的页面内容
<h1\h2\h3>
声明标题
<p>
声明普通段落
<b>
加粗
<i>
斜体
<code>
代码文本
<sub>
下标
<sup>
上标
<strong>
定义加重语气
<del>
删除线
<ins>
插入语
<abbr>
定义缩写
<a href="https://www.sukunahust.com" target="_blank">这是一个链接</a>
a标签声明一个链接,链接的形式就是<a>
之间的内容,target用于定义你超链接会在哪里显示
<img loading="lazy" src="/images/logo.png" width="258" height="39" style="float:right"/>
用img标签声明一个图片,src表示图片的来源,这个又称之为图床,其中float属性代表图像浮动
<base href="http://www.sukunahust.com/images/" target="_blank">
base命令相当于一个预处理命令,在这里,所有的链接会在前面加上www.sukunahust.com
所有的target都是"_blank"
<link rel="stylesheet" type="text/css" href="mystyle.css">
链接到外部的css,这里代表链接到mystyle.css
里面的叫做text\css
的样式,还加上stylesheet
<meta http-equiv="refresh" content="30" name="keywords" content="HTML, CSS, XML, XHTML, JavaScript" name="author" content="Sukuna">
描述基本元数据的,这里表示30秒刷新,作者信息和搜索殷勤关键词
<p style="color:blue;margin-left:20px;">这是一个段落。</p>
这里表示内连样式
<style type="text/css">
h1 {color:red;}
p {color:blue;}
</style>
这里表示内连样式表,在这个html文本里面,所有的h1和p标签内容都有这个特性
图像映射,
x<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap">
<map name="planetmap">
<area shape="rect" coords="0,0,82,126" alt="Sun" href="sun.htm">
<area shape="circle" coords="90,58,3" alt="Mercury" href="mercur.htm">
<area shape="circle" coords="124,58,8" alt="Venus" href="venus.htm">
</map>
表格有关:
xxxxxxxxxx
<h4>单元格跨两列:</h4>
<table border="1">
<caption>Monthly savings</caption>(表格标题)
<tr>
<th>Name</th>(表格头)
<th colspan="2">Telephone</th>
</tr>
<tr>
<td>Bill Gates</td>(表格内容)
<td>555 77 854</td>
<td>555 77 855</td>
</tr>
</table>
<h4>单元格跨两行:</h4>
<table border="1">
<tr>
<th>First Name:</th>
<td>Bill Gates</td>
</tr>
<tr>
<th rowspan="2">Telephone:</th>
<td>555 77 854</td>
</tr>
<tr>
<td>555 77 855</td>
</tr>
</table>
列表
无序列表
xxxxxxxxxx
<ul>
<li>Coffee</li>
<li>Milk</li>
</ul>
有序列表
xxxxxxxxxx
<ol>
<li>Coffee</li>
<li>Milk</li>
</ol>
当然,列表可以嵌套列表
xxxxxxxxxx
<dl>
<dt>Math</dt>
<dd>Calculas</dd>
<dd>Linear Algebra</dd>
<dt>CS</dt>
<dd>Data Structure</dd>
<dd>Computer Networking</dd>
</dl>
区块与布局
区块元素,style标签适用于整个整体
xxxxxxxxxx
<div style="color:#0000FF">
<h3>这是一个在 div 元素中的标题。</h3>
<p>这是一个在 div 元素中的文本。</p>
</div>
五位布局:
xxxxxxxxxx
<div id="container" style="width:500px">
<div id="header" style="background-color:#FFA500;">
<h1 style="margin-bottom:0;">主要的网页标题</h1></div>
<div id="menu" style="background-color:#FFD700;height:200px;width:100px;float:left;">
<b>菜单</b><br>
HTML<br>
CSS<br>
JavaScript</div>
<div id="content" style="background-color:#EEEEEE;height:200px;width:400px;float:left;">
内容在这里</div>
<div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">
脚</div>
</div>
<nav>
底部链接
<article>
独立的文章
<section>
部分
<aside>
侧边栏
<footer>
页脚
<figure>
和<figcaption>
内容和注释
表单
<form action="html_form_action.php" method="get">
定义一个表单,这里就是点击提交按钮,输入数据就会到html_form_action.php
里面
<input>
表单选项,可以选择:
<input type="text" name="firstname">
普通文本框
<input type="password" name="pwd">
密码
<input type="radio" name="sex" value="male">
单选
<input type="color" name="favcolor">
颜色
<input type="date" name="bday">
日期
<input type="number" name="quantity" min="1" max="5">
数字
<input type="range" name="points" min="1" max="10">
<input type="submit">
滑动条
<input type="url" name="homepage">
url
<input type="checkbox" name="vehicle" value="Bike">I have a bike
多选
<input type="submit" value="Submit">
提交按钮
<input type="file" name="img" multiple>
提交文件
<datalist>
和<option value=''>
构成拖拽选项
杂项
嵌套显示页面:<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<output>
输出
<keygen>
加密
颜色定义#数字
表单属性
autocomplete
自动填充
novalidate
不验证
input的form
属性规定输入域所属的一个或多个表单
formaction
规定了提交的动作可以与action不同
formenctype
规定了post
模式下的数据编码形式
formmethod
规定提交的模式:是POST还是GET
formnovalidate
验证
formtarget="_blank"
提交到新的页面上
multiple
提交多个
pattern="[A-Za-z]{3}"
正则表达式规定
placeholder
显示期待的值
required
必填项
step
规定填几的倍数
插入脚本:
xxxxxxxxxx
<script>
document.write("Hello World!")
</script>
<noscript>抱歉,你的浏览器不支持 JavaScript!</noscript>
canvas
画布:
定义一个canvas画布
xxxxxxxxxx
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
</canvas>
xxxxxxxxxx
<script>
在js代码里面画画
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
//路径
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
ctx.arc(95,50,40,0,2*Math.PI);//圆
// 创建渐变
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
</script>
svg(和canvas类似的东西)
xxxxxxxxxx
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
<polygon points="100,10 40,180 190,60 10,60 160,180"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;">
</svg>
简单的javascript的应用
button
按钮可以用onclick来规定,摁了按钮之后就进行怎样的处理
xxxxxxxxxx
<p id="demo">点击按钮获取您当前坐标(可能需要比较长的时间获取):</p>
<button onclick="getLocation()">点我</button>
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else
{
x.innerHTML="该浏览器不支持获取地理位置。";
}
}
function showPosition(position)
{
x.innerHTML="纬度: " + position.coords.latitude +
"<br>经度: " + position.coords.longitude;
}
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="用户拒绝对获取地理位置的请求。"
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="位置信息是不可用的。"
break;
case error.TIMEOUT:
x.innerHTML="请求用户地理位置超时。"
break;
case error.UNKNOWN_ERROR:
x.innerHTML="未知错误。"
break;
}
}
</script>
多媒体:
<video>
用于展示视频资源
<source src="movie.mp4" type="video/mp4">
在里面添加src
<audio controls>
用于展示音频资源
数据库
openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
形势参数
- 数据库名称
- 版本号
- 描述文本
- 数据库大小
- 创建回调
执行数据库操作
xxxxxxxxxx
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
});
WebWorker(背后运行js代码)
运行的机理都是一样的,生成一个对象然后用onmessage来处理,用RTTI来获得result元素,改变内部html代码
xxxxxxxxxx
var i=0;
function timedCount()
{
i=i+1;
postMessage(i);
setTimeout("timedCount()",500);
}
//递归
timedCount();
这是一个js代码demo_worker.js
,每次访问这个的时候都会postMessage出去,只要没有执行下一次PostMessage,那么传出去的数据就不会变.
xxxxxxxxxx
var w;
function startWorker() {
if(typeof(Worker) !== "undefined") {
//创建workers
if(typeof(w) == "undefined") {
w = new Worker("demo_workers.js");
}
//有message传出来就执行,只要workers没有执行完毕,这里就不会停止
w.onmessage = function(event) {
document.getElementById("result").innerHTML = event.data;
};
} else {
document.getElementById("result").innerHTML = "抱歉,你的浏览器不支持 Web Workers...";
}
}
function stopWorker()
{
w.terminate();
w = undefined;
}
EventSource对象(背后运行php代码)
xxxxxxxxxx
if(typeof(EventSource)!=="undefined")
{
// 浏览器支持 Server-Sent
// 一些代码.....
var source=new EventSource("demo_sse.php");//根据php代码来建立EventSource
//根据传来的message来执行动作
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br>";
};
}
else
{
// 浏览器不支持 Server-Sent..
}
Web存储
2种:
- localStorage – 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
- sessionStorage – 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
API:
- 保存数据:localStorage.setItem(key,value);
- 读取数据:localStorage.getItem(key);
- 删除单个数据:localStorage.removeItem(key);
- 删除所有数据:localStorage.clear();
- 得到某个索引的key:localStorage.key(index);
xxxxxxxxxx
<script>
function clickCounter()
{
if(typeof(Storage)!=="undefined")
{
if (sessionStorage.clickcount)
{
sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
}
else
{
sessionStorage.clickcount=1;
}
document.getElementById("result").innerHTML="在这个会话中你已经点击了该按钮 " + sessionStorage.clickcount + " 次 ";
}
else
{
document.getElementById("result").innerHTML="抱歉,您的浏览器不支持 web 存储";
}
}
</script>
<p><button onclick="clickCounter()" type="button">点我!</button></p>
<div id="result"></div>
字符实体:
字符 | 实体编号 | 实体名称 | 描述 |
---|---|---|---|
非间断空格(non-breaking space) | |||
¡ | ¡ | ¡ | 倒置感叹号(inverted exclamation mark) |
¢ | ¢ | ¢ | 美分符号(cent) |
£ | £ | £ | 英镑符号(pound) |
¤ | ¤ | ¤ | 货币符号(currency) |
¥ | ¥ | ¥ | 人民币/日元符号(yen) |
¦ | ¦ | ¦ | 间断的竖杠(broken vertical bar) |
§ | § | § | 小节号(section) |
¨ | ¨ | ¨ | 分音符号(spacing diaeresis) |
© | © | © | 版权所有(copyright) |
ª | ª | ª | 阴性序数记号(feminine ordinal indicator) |
« | « | « | 左双角引号(angle quotation mark (left)) |
¬ | ¬ | ¬ | 否定符号(negation) |
| | 软连字符(soft hyphen) | |
® | ® | ® | 注册商标(registered trademark) |
¯ | ¯ | ¯ | 长音符号(spacing macron) |
° | ° | ° | 度符号(degree) |
± | ± | ± | 加减号/正负号(plus-or-minus) |
² | ² | ² | 上标 2(superscript 2) |
³ | ³ | ³ | 上标 3(superscript 3) |
´ | ´ | ´ | 尖音符号(spacing acute) |
µ | µ | µ | 微米符号(micro) |
¶ | ¶ | ¶ | 段落符号(paragraph) |
· | · | · | 中间点(middle dot) |
¸ | ¸ | ¸ | 变音符号(spacing cedilla) |
¹ | ¹ | ¹ | 上标 1(superscript 1) |
º | º | º | 阳性序数记号(masculine ordinal indicator) |
» | » | » | 右双角引号(angle quotation mark (right)) |
¼ | ¼ | ¼ | 1/4 分数(fraction 1/4) |
½ | ½ | ½ | 1/2 分数(fraction 1/2) |
¾ | ¾ | ¾ | 3/4 分数(fraction 3/4) |
¿ | ¿ | ¿ | 倒置问号(inverted question mark) |
SQL语句合集(用MySQL)
mysql -u root -p
进入MySQL
cd /usr/bin
./mysqld_safe &
启动SQL
CREATE DATABASE 数据库名;
创建数据库
drop database 数据库名;
删除数据库
use 数据库名;
选择数据库
CREATE TABLE table_name (column_name column_type,column_name column_type);
创建表,用逗号隔开
DROP TABLE table_name ;
删除表
xxxxxxxxxx
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
插入数据:field对应变量名,一个field对应一个value,LIKE后面可以跟‘%…’用来表示正则表达式的匹配比如说 url LIKE '%com'
表示选择url里面结尾是com的元素,order子句表示排序,[ASC]表示升序,[DESC]表示降序
xxxxxxxxxx
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
[WHERE condition1 [AND [OR]] condition2
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
{OR WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'}
查询数据,可以用*代替column_name,当然也可以用where语句限定列元素
更新数据:
xxxxxxxxxx
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
删除数据:WHERE表示条件
xxxxxxxxxx
DELETE FROM table_name [WHERE Clause]
UNION操作:可以把两个SELECT的内容合并在一起
xxxxxxxxxx
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
Gourp By:group by表示分组,可以统计
xxxxxxxxxx
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
连接:
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
xxxxxxxxxx
SELECT (fields) FROM tableA nickname_for_tableA INNER JOIN tableB nickname_for_tableB ON (statement);
NULL:
- IS NULL: 当列的值是 NULL,此运算符返回 true。
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
- <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。
事物处理
用 BEGIN, ROLLBACK, COMMIT来实现(就是先不急着做,先放到队列里面,然后commit的时候再做)
- BEGIN 开始一个事务
- ROLLBACK 事务回滚
- COMMIT 事务确认
正则表达式
模式 | 描述 |
---|---|
^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 |
. | 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式。 |
[…] | 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 |
[^…] | 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 |
p1|p2|p3 | 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
{n} | n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
% | 类似于Unix的* |
类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
DOUBLE | 8 bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
0 条评论