Git配置
|
|
用户的git配置文件在~/.gitconfig,我的配置:
|
|
Git常用命令
查看、帮助命令
|
|
查看提交记录
|
|
添加、提交、删除、找回,重置修改文件
|
|
查看文件diff
|
|
Git 本地分支管理
查看、切换、创建和删除分支
|
|
分支合并和rebase
|
|
Git补丁管理
|
|
Git暂存管理
|
|
Git远程分支管理
|
|
实例
打patch过程
|
|
|
|
用户的git配置文件在~/.gitconfig,我的配置:
|
|
查看、帮助命令
|
|
查看提交记录
|
|
添加、提交、删除、找回,重置修改文件
|
|
查看文件diff
|
|
查看、切换、创建和删除分支
|
|
分支合并和rebase
|
|
Git补丁管理
|
|
Git暂存管理
|
|
Git远程分支管理
|
|
打patch过程
|
|
tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;当然其功能远不止于此。
ubuntu可以使用sudo apt-get install tmux来安装。安装完成后输入命令tmux即可打开软件,界面十分简单,类似一个下方带有状态栏的终端控制台;但根据tmux的定义,在开启了tmux服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板,虽然其使用方法与终端控制台完全相同。
tmux使用C/S模型构建,主要包括以下单元模块:
server | 服务器。输入tmux命令时就开启了一个服务器。 |
session | 会话。一个服务器可以包含多个会话。 |
window | 窗口。一个会话可以包含多个窗口。 |
pane | 面板。一个窗口可以包含多个面板。 |
|
|
类似各种平铺式窗口管理器,tmux使用键盘操作,常用快捷键包括:
Ctrl+b | 激活控制台;此时以下按键生效 | |
系统操作 | ? | 列出所有快捷键;按q返回 |
d | 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 | |
D | 选择要脱离的会话;在同时开启了多个会话时使用 | |
Ctrl+z | 挂起当前会话 | |
r | 强制重绘未脱离的会话 | |
s | 选择并切换会话;在同时开启了多个会话时使用 | |
: | 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器 | |
[ | 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出 | |
~ | 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 | |
窗口操作 | c | 创建新窗口 |
& | 关闭当前窗口 | |
数字键 | 切换至指定窗口 | |
p | 切换至上一窗口 | |
n | 切换至下一窗口 | |
l | 在前后两个窗口间互相切换 | |
w | 通过窗口列表切换窗口 | |
, | 重命名当前窗口;这样便于识别 | |
. | 修改当前窗口编号;相当于窗口重新排序 | |
f | 在所有窗口中查找指定文本 | |
面板操作 | ” | 将当前面板平分为上下两块 |
% | 将当前面板平分为左右两块 | |
x | 关闭当前面板 | |
! | 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板 | |
Ctrl+方向键 | 以1个单元格为单位移动边缘以调整当前面板大小 | |
Alt+方向键 | 以5个单元格为单位移动边缘以调整当前面板大小 | |
Space | 在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled | |
q | 显示面板编号 | |
o | 在当前窗口中选择下一面板 | |
方向键 | 移动光标以选择面板 | |
{ | 向前置换当前面板 | |
} | 向后置换当前面板 | |
Alt+o | 逆时针旋转当前窗口的面板 | |
Ctrl+o | 顺时针旋转当前窗口的面板 |
tmux的系统级配置文件为/etc/tmux.conf,用户级配置文件为~/.tmux.conf。没有该文件新建一个即可。配置文件实际上就是tmux的命令集合,也就是说每行配置均可在进入命令行模式后输入生效。
注意:更改配置之后需要重启tmux或者进入命令模式(按按键前缀后再按: )输入 source-file ~/.tmux.conf即可。
|
|
copy-mode(复制模式)
a.PREFIX [ 进入复制模式
b.按 space 开始复制,移动光标选择复制区域
c.按 Enter 复制并退出copy-mode。
d.将光标移动到指定位置,按 PREIFX ] 粘贴
在~/.tmux.conf中加入如下行,否则在VIM中复制模式无法完成操作
|
|
重新连接到之前的窗口
|
|
不过如果没有会话会提示:
|
|
修改Tmux配置如果无分离终端则新建,在.tmux.conf加入如下行:
|
|
Start tmux on every shell login
|
|
添加:
|
|
详细参考:https://wiki.archlinux.org/index.php/Tmux#Start_tmux_on_every_shell_login
这样做,会使每一个该用户下的终端都进入tmux。如果需要ssh到其他机子上,进入其上的tmux 或 screen,会导致快捷键冲突以及显示混乱。
参考:
1.https://wiki.freebsdchina.org/software/t/tmux?utm_source=twitterfeed&utm_medium=twitter
2.http://linuxtoy.org/archives/from-screen-to-tmux.html
3.http://linuxtoy.org/archives/from-screen-to-tmux.html
4.http://os.51cto.com/art/200908/144275.htm
5.http://blog.onovps.com/archives/tmux-attach.html
6.http://tmux.sourceforge.net/
7.http://www.cnblogs.com/congbo/archive/2012/08/30/2649420.html
|
|
这个add函数可以无限次调用循环调用,并且把所有传进去的值相加,最后返回相加总数。这道题咋一看有点特别,但代码量极其少而精,重点技术在于:作用域、交替、匿名函数、toString的巧妙。
让我们来解释这个过程:add(3)(4)(5)
看到这其实就很明白了,代码中temp.toString的重写只是为了函数不执行时能够返回最后运算的结果值,所以这个地方是可以任意修改的,你让它返回什么它就返回什么,比如改写:
|
|
执行结果:
|
|
垂直分表
垂直分表就是一个包含有很多列的表拆分成多个表,比如表A包含20个字段,现在拆分成表A1和A2,两个表各十个字段(具体如何拆根据业务来选择)。
优势:在高并发的情境下,可以减少表锁和行锁的次数。
劣势:在数据记录非常大的情况下,读写速度还是会遇到瓶颈。
水平分表
假如某个网站,它的数据库的某个表已经达到了上亿条记录,那么此时如果通过select去查询,在没有索引的情况下,他的查询会非常慢,那么就可以通过hash算法将这个表分成10个子表(此时每个表的 的数据量只有1000万条了)。同时生成一个总表,记录各个子表的信息,假如查询一条id=100的记录,它不再需要全表扫描,而是通过总表找到该记录在哪个对应的子表上,然后再去相应的表做检索,这样就降低了IO压力。
劣势:会给前端程序应用程序的SQL代码的维护带来很大的麻烦,这时候可以使用MySQL的Merge存储引擎实现分表。
用Merge存储引擎分表,对应用程序的SQL语句来说是透明的,不需要修改任何代码。
|
|
实际上merge存储引擎是一个虚拟的表,对应的实际表必须是myisam类型的表,如果你的mysql是5.1以上版本,默认数据库使用的事InnoDB存储引擎的,所以在创建total时,t1和t2表必须是myisam存储引擎的。
如果需要定期增加分表,只需要修改merge表的union即可。
|
|
横向分区
举例说明:假如有100W条数据,分成十份,前10W条数据放到第一个分区,第二个10W条数据放到第二个分区,依此类推。取出一条数据的时候,这条数据包含了表结构中的所有字段,横向分区并没有改变表的结构。
分区表分为RANGE,LIST,HASH,KEY四种类型,并且分区表的索引是可以局部针对分区表建立的
创建分区表
|
|
纵向分区
举例说明:在设计用户表的时候,开始的时候没有考虑好,而把个人的所有信息都放到了一张表里面去,这个表里面就会有比较大的字段,如个人简介,而这些简介呢,也许不会有好多人去看,所以等到有人要看的时候,再去查找,分表的时候,可以把这样的大字段,分开来
完整的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件。
说明:正则表达式通常用于两种任务:1.验证,2.搜索/替换。用于验证时,通常需要在前后分别加上^和$,以匹配整个待验证字符串;搜索/替换时是否加上此限定则根据搜索的要求而定,此外,也有可能要在前后加上\b而不是^和$。此表所列的常用正则表达式,除个别外均未在前后加上任何限定,请根据需要,自行处理。
说明 | 正则表达式 |
---|---|
网址(URL) | [a-zA-z]+://[^\s] |
IP地址(IP Address) | ((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) |
电子邮件(Email) | \w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+) |
QQ号码 | [1-9]\d{4,} |
HTML标记(包含内容或自闭合) | <(.)(.)>.<\/\1>|<(.) \/> |
密码(由数字/大写字母/小写字母/标点符号组成,四种都必有,8位以上) | (?=^.{8,}$)(?=.\d)(?=.\W+)(?=.[A-Z])(?=.[a-z])(?!.\n).$ |
日期(年-月-日) | (\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9])) |
日期(月/日/年) | ((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2}) |
时间(小时:分钟, 24小时制) | ((1|0?)[0-9]|2[0-3]):([0-5][0-9]) |
汉字(字符) | [\u4e00-\u9fa5] |
中文及全角标点符号(字符) | [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee] |
中国大陆固定电话号码 | (\d{4}-|\d{3}-)?(\d{8}|\d{7}) |
中国大陆手机号码 | 1\d{10} |
中国大陆邮政编码 | [1-9]\d{5} |
中国大陆身份证号(15位或18位) | \d{15}(\d\d[0-9xX])? |
非负整数(正整数或零) | \d+ |
正整数 | [0-9][1-9][0-9] |
负整数 | -[0-9][1-9][0-9] |
整数 | -?\d+ |
小数 | (-?\d+)(.\d+)? |
不包含abc的单词 | \b((?!abc)\w)+\b |
作者:卢钧轶(cenalulu)
本文原文地址:http://cenalulu.github.io<!--0-->
下面这个键位图应该是大家最常看见的经典版了。其实这个版本是一系列的入门教程键位图的组合结果。要查看不同编辑模式下的键位图,可以看这里打包下载
此外,这里还有简体中文版。
基本操作的入门版。原版出处还有keynote版本可供DIY以及其他相关有用的cheatsheet。
下图是300DPI的超清大图,另外查看原文还有更多版本:黑白,低分辨率,色盲等
下图是一个更新时间较新的现代版,含有的信息也更丰富。原文链接
使用 unicode 范围 \u4e00 - \u9fff 来判别汉字
unicode 分配给汉字(中日韩越统一表意文字)的范围为 4E00-9FFF
|
|
ajax的技术核心是 XMLHttpRequest 对象;
ajax 请求过程:创建 XMLHttpRequest 对象、连接服务器、发送请求、接收响应数据;
|
|
参考
Mysql复制表+主键(表结构、索引和主键、数据)
mysql> create table test_users like users;
复制表结构和索引到test_users (新表:test_users 原表:users)
mysql> insert into test_users (select * from users);
复制数据,两步加起来才能创建一个和users完全一样(表结构、索引和主键、数据)的表。
mysql> create table test_users select * from users;
(只复制表数据,以及表结构)
mysql> create table test_users select names from users;
复制users表里的names数据、结构到新表 test_users
通常情况下,Web服务器(如Apache)会默认开启对断点续传的支持。因此,如果直接通过Web服务器来提供文件的下载,可以不必做特别的配置,即可享受到断点续传的好处。断点续传是在发起HTTP请求的时候加入RANGE头来告诉服务器客户端已经下载了多少字节。等所有这些请求都返回之后,再把得到的内容一块一块的拼接起来得到完整的资源。
1.判断服务器是否支持断点续传
|
|
输出结果 Accept-Ranges: bytes ,说明服务器支持按字节下载。
2.curl 命令发送字节范围下载
|
|
3.FileDownload.class.php
|
|
demo
|
|
4.Discuz!论坛软件的attachment.php
|
|