一些小参考

2022-12-08 14:26:23 浏览数 (1)

一些小参考

于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

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用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>这里表示内连样式

代码语言:javascript复制
<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来规定,摁了按钮之后就进行怎样的处理

代码语言:javascript复制
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);

形势参数

  1. 数据库名称
  2. 版本号
  3. 描述文本
  4. 数据库大小
  5. 创建回调

执行数据库操作

代码语言: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,那么传出去的数据就不会变.

代码语言:javascript复制
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);
代码语言:javascript复制
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

代码语言:javascript复制
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 ;删除表

代码语言:javascript复制
xxxxxxxxxxINSERT INTO table_name ( field1, field2,...fieldN )                       VALUES                       ( value1, value2,...valueN );

插入数据:field对应变量名,一个field对应一个value,LIKE后面可以跟‘%…’用来表示正则表达式的匹配比如说 url LIKE '%com'表示选择url里面结尾是com的元素,order子句表示排序,[ASC]表示升序,[DESC]表示降序

代码语言:javascript复制
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 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
代码语言:javascript复制
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

日期值

0 人点赞