一些小参考
于2021年10月21日2021年10月21日由Sukuna发布
git语句集合
git本质就是记录对文件的修改,通过对文件的修改求和来求出文件的最后样子
工作区(你本身的电脑)和版本库(git仓库,仓库里面有git的主体和暂存区),首先是工作区提交到暂存区(可以重复很多次),然后暂存区提交到git主体就是提交改变内容,插入分支里面(git commit的话只会commit暂存区内容)
安装:(Shell)sudo apt-get install git
在某个文件夹里面创建新的版本库:
代码语言:javascript复制$ mkdir learngit$ cd learngit$ pwd/root/learngit$ git init
添加文件
代码语言:javascript复制xxxxxxxxxx$ git add readme.txt$ git commit -m "wrote a readme file"(""内的为本次更改的说明)
查询状态
代码语言:javascript复制xxxxxxxxxx$ git status
查看本地库和git库的差别
代码语言:javascript复制xxxxxxxxxx$ git diff readme.txt
查询修改记录
代码语言:javascript复制xxxxxxxxxx$ git log$ git reflog(更强大)
版本修改:
代码语言:javascript复制xxxxxxxxxx$ git reset --hard (version number or HEAD^)
获得git仓库里面最近一次add或者commit的版本
代码语言:javascript复制xxxxxxxxxx$ git checkout -- readme.txt
暂存区的修改撤销掉
代码语言:javascript复制xxxxxxxxxx$ git reset HEAD readme.txt$ git checkout -- readme.txt
删除版本库
代码语言:javascript复制xxxxxxxxxx$ git rm test.txt
ssh key
代码语言:javascript复制xxxxxxxxxx$ ssh-keygen -t rsa -C "youremail@example.com"#在/root/User/.ssh/id_rsa.pub
连接远程库
代码语言:javascript复制xxxxxxxxxx$ git remote add origin git@github.com:url
推送到远程库
代码语言:javascript复制xxxxxxxxxx$ git push <远程主机名> <本地分支名>:<远程分支名>(本地==远程可以不用谢、写远程)$ git push origin(push all)
删除远程库
代码语言:javascript复制xxxxxxxxxx$ git remote rm origin
克隆仓库
代码语言:javascript复制xxxxxxxxxx$ git clone git@github.com:michaelliao/gitskills.git
创建分支
代码语言:javascript复制xxxxxxxxxx$ git branch dev
切换分支
代码语言:javascript复制xxxxxxxxxx$ git checkout dev$ git switch master
合并分支
代码语言:javascript复制xxxxxxxxxx$ git merge dev$ git merge --no-ff -m "merge with no-ff" dev(合并分支并且提交一个commiit)
查看所有分支
代码语言:javascript复制xxxxxxxxxx$ git branch
保存现场
代码语言:javascript复制xxxxxxxxxx$ git stash
回到工作现场
代码语言:javascript复制xxxxxxxxxx$ git stash pop
拉取远程仓库
代码语言:javascript复制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>
声明可见的页面内容
<h1h2h3>
声明标题
<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
里面的叫做textcss
的样式,还加上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标签内容都有这个特性
图像映射,
代码语言:javascript复制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>
表格有关:
代码语言:javascript复制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>
列表
无序列表
代码语言:javascript复制xxxxxxxxxx<ul><li>Coffee</li><li>Milk</li></ul>
有序列表
代码语言:javascript复制xxxxxxxxxx<ol><li>Coffee</li><li>Milk</li></ol>
当然,列表可以嵌套列表
代码语言:javascript复制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标签适用于整个整体
代码语言:javascript复制xxxxxxxxxx<div style="color:#0000FF"> <h3>这是一个在 div 元素中的标题。</h3> <p>这是一个在 div 元素中的文本。</p></div>
五位布局:
代码语言:javascript复制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
规定填几的倍数
插入脚本:
代码语言:javascript复制xxxxxxxxxx<script>document.write("Hello World!")</script><noscript>抱歉,你的浏览器不支持 JavaScript!</noscript>
canvas
画布:
定义一个canvas画布
代码语言:javascript复制xxxxxxxxxx<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"></canvas>
代码语言:javascript复制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类似的东西)
代码语言:javascript复制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);
形势参数
- 数据库名称
- 版本号
- 描述文本
- 数据库大小
- 创建回调
执行数据库操作
代码语言:javascript复制xxxxxxxxxxdb.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');});
WebWorker(背后运行js代码)
运行的机理都是一样的,生成一个对象然后用onmessage来处理,用RTTI来获得result元素,改变内部html代码
代码语言:javascript复制xxxxxxxxxxvar i=0;function timedCount(){ i=i 1; postMessage(i); setTimeout("timedCount()",500);}//递归timedCount();
这是一个js代码demo_worker.js
,每次访问这个的时候都会postMessage出去,只要没有执行下一次PostMessage,那么传出去的数据就不会变.
xxxxxxxxxxvar 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代码)
代码语言:javascript复制xxxxxxxxxxif(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 ;
删除表
xxxxxxxxxxINSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
插入数据:field对应变量名,一个field对应一个value,LIKE后面可以跟‘%…’用来表示正则表达式的匹配比如说 url LIKE '%com'
表示选择url里面结尾是com的元素,order子句表示排序,[ASC]表示升序,[DESC]表示降序
xxxxxxxxxxSELECT column_name,column_nameFROM 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语句限定列元素
更新数据:
代码语言:javascript复制xxxxxxxxxxUPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]
删除数据:WHERE表示条件
代码语言:javascript复制xxxxxxxxxxDELETE FROM table_name [WHERE Clause]
UNION操作:可以把两个SELECT的内容合并在一起
代码语言:javascript复制xxxxxxxxxxSELECT expression1, expression2, ... expression_nFROM tables[WHERE conditions]UNION [ALL | DISTINCT]SELECT expression1, expression2, ... expression_nFROM tables[WHERE conditions];
Gourp By:group by表示分组,可以统计
代码语言:javascript复制xxxxxxxxxxSELECT column_name, function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name;
连接:
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
xxxxxxxxxxSELECT (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 | 日期值 |