正则表达式学习
正则表达式的学习和使用
一、概述正则表达式用于文本内容的查找和替换。
正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。
正则表达式在线工具
二、匹配单个字符. 可以用来匹配任何的单个字符,但是在绝大多数实现里面,不能匹配换行符;
. 是元字符,表示它有特殊的含义,而不是字符本身的含义。如果需要匹配 . ,那么要用 \ 进行转义,即在 . 前面加上 \ 。
正则表达式一般是区分大小写的,但是也有些实现是不区分。
正则表达式
nam.
匹配结果
My name is Zheng.
三、匹配一组字符[ ] 定义一个字符集合;
0-9、a-z 定义了一个字符区间,区间使用 ASCII 码来确定,字符区间在 [ ] 中使用。
- 只有在 [ ] 之间才是元字符,在 [ ] 之外就是一个普通字符;
^ 在 [ ] 中是取非操作。
应用
匹配以 abc 为开头,并且最后一个字母不为数字的字符串:
正则表达式
abc[^0-9]
匹配结果
abcd
abc1
abc2
四、使用元字符匹配空白字符
元字符
说明
[\b]
回退(删除)一个字符
...
MySQL学习-01-存储引擎、索引、性能优化、切分
mysql学习内容整理、存储引擎、索引、性能优化、切分
一、存储引擎InnoDBInnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。
实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE READ)。在可重复读隔离级别下,通过多版本并发控制(MVCC)+ 间隙锁(next-key locking)防止幻影读。
主索引是聚簇索引,在索引中保存了数据,从而避免直接读取磁盘,因此对查询性能有很大的提升。
内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够加快读操作并且自动创建的自适应哈希索引、能够加速插入操作的插入缓冲区等。
支持真正的在线热备份。其它存储引擎不支持在线热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能也意味着停止读取。
MyISAMMyISAM 设计简单,数据以紧密格式存储。对于只读数据,或者表比较小、可以容忍修复操作,则依然可以使用 MyISAM。
MyISAM 提供了大量的特性,包括压缩表、空间数据索引等。
不支持事务。
不支持行级锁,只能对整张表 ...
移动设备怎样定位
移动设备怎样定位现象没有GPS接收器的设备可以定位
云翼的iPad 1代 Wifi版(型号MD292CH),在接入公司wifi的情况下,可在地图软件上定位到“我的位置”
五福的三星手机,不开GPS模块,但接入了Wifi和移动运营商,可在百度地图上定位到“我的位置”
不接入网络可以定位
吴笑的iPhone 4S,关闭无线网和蜂窝数据(包括2G,3G),可以定位
吴笑的车载导航,只有GPS接收器,没有任何网络接入,可以定位导航
定位原理(先说理想空间里的几何模型,通信和经纬度后补)仅依靠GPS定位GPS接收器与卫星1通信,获得与卫星1(记为Sat_1)的距离(记为Dist_1)GPS接收器与卫星2通信,获得与卫星2(记为Sat_2)的距离(记为Dist_2)
分别以Sat_1, Sat_2为圆心,Dist_1, Dist_2为半径,画一个球,两球相交得一个空心圆,接收器在这个空心圆上某一点。
如果再有第三颗GPS卫星,同理画一个球,运气好的话,此球与空心圆有一个交点(相切),此时三颗星就可定位了。 如果不相切,球与圆圈有两个交点,排除一个不在地球表面的(可以理解为地球表面作为第四个球参 ...
IDEA快捷键整理
IDEA的快捷键整理记录
常用常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码例如要输入for(User user : users)只需输入user.for+Tab再比如,要输入Date birthday = user.getBirthday();只需输入user.getBirthday().var+Tab即可。代码标签输入完成后,按Tab,生成代码。
Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等) 或者右键(Generate)fori/sout/psvm + TabCtrl+Alt+T 生成try catch 或者 Alt+enterCTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里Ctrl + O 重写方法Ctrl + I 实现方法Ctr+shift+U 大小写转化ALT+回车 导入包,自动修正ALT+/ 代码提示CTRL+J 自动代码Ctrl+Shift+J,整合两行为一行CTR ...
Markdown Guide
Markdown 语法指导
该文件用来测试和展示书写README的各种markdown语法。
标题:#h1级标题##h2级标题###h3级标题####h4级标题#####h5级标题######h6级标题分割线:三个以上的短线 即可作出分割线----超链接:[连接名称](网址 , 标题)[我是链接名](http://www.izhangbo.cn, "我是标题")[<i class="icon-refresh"></i> 点我刷新](/sonfilename/)另一种超链接写法:[链接名][链接代号][here][3]然后在别的地方定义 3 这个详细链接信息,[3]: http://www.izhangbo.cn "聚牛团队"直接展示链接的写法:<http://www.izhangbo.cn>键盘键<kbd>Ctrl+[</kbd> and <kbd>Ctrl+]</kbd>code格式:反引号Use the `printf()` funct ...
GitHub的表情预览
github的全部表情系列
最新emoji大全:emoji列表
Java学习-并发知识整理
Java并发相关知识 线程的相关理论及其使用、基础线程操作、线程中断机制、还有线程的互斥与同步、JUC、Java内存模型、线程安全、线程锁的优化
一、线程状态转换
新建(New)创建后尚未启动。
可运行(Runnable)可能正在运行,也可能正在等待 CPU 时间片。
包含了操作系统线程状态中的 Running 和 Ready。
阻塞(Blocking)等待获取一个排它锁,如果其线程释放了锁就会结束此状态。
无限期等待(Waiting)等待其它线程显式地唤醒,否则不会被分配 CPU 时间片。
进入方法
退出方法
没有设置 Timeout 参数的 Object.wait() 方法
Object.notify() / Object.notifyAll()
没有设置 Timeout 参数的 Thread.join() 方法
被调用的线程执行完毕
LockSupport.park() 方法
-
限期等待(Timed Waiting)无需等待其它线程显式地唤醒,在一定时间之后会被系统自动唤醒。
调用 Thread.sleep() 方法使线程进入限期等待状态 ...
编程系列书单推荐
-> 数据结构与算法、操作系统、计算机网络、数据库、java等
数据结构与算法
算法
数据结构与算法分析
编程珠玑
剑指 Offer
操作系统
现代操作系统
深入理解计算机系统
鸟哥的 Linux 私房菜
Unix 环境高级编程
Unix/Linux 编程实践教程
Operating Systems: Three Easy Pieces (OSTEP)
计算机网络
计算机网络
计算机网络 自顶向下方法
图解 HTTP
TCP/IP 详解 卷 1:协议
UNIX 网络编程
Linux 多线程服务端编程
面向对象
Head First 设计模式
设计模式 可复用面向对象软件的基础
敏捷软件开发 原则、模式与实践
数据库
数据库系统概念
MySQL 必知必会
高性能 MySQL
Redis 设计与实现
Redis 实战
Java
Java 编程思想
Effective java 中文版
深入理解 Java 虚拟机
Java 并发编程实战
精通 Spring 4.x
Spring 揭秘
C++
C++ Primer
Effective C++
C++ 编程规范
STL ...
Python-字符串相关操作
Python 字符串操作
(string 替换、删除、截取、复制、连接、比较、查找、包含、大小写转换)
一、去空格及特殊符号s.strip().lstrip().rstrip(',')
二、复制字符串#strcpy(sStr1,sStr2)sStr1 = 'strcpy'sStr2 = sStr1sStr1 = 'strcpy2'print(sStr2)
三、连接字符串#strcat(sStr1,sStr2)sStr1 = 'strcat'sStr2 = 'append'sStr1 += sStr2print(sStr1)
四、查找字符#strchr(sStr1,sStr2)# < 0 为未找到sStr1 = 'strchr'sStr2 = 's'nPos = sStr1.index(sStr2)print(nPos)
五、比较字符串#strcmp(sStr1,sStr2)sStr1 = 'strchr'sStr2 ...
Java学习-集合框架
java集合框架相关知识、 集合容器的设计模式、集合接口和实现类源码分析
一、概览容器主要包括 Collection 和 Map 两种,Collection 又包含了 List、Set 以及 Queue。
Collection
1. Set
HashSet:基于哈希表实现,支持快速查找。但不支持有序性操作,例如根据一个范围查找元素的操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。
TreeSet:基于红黑树实现,支持有序性操作,但是查找效率不如 HashSet,HashSet 查找时间复杂度为 O(1),TreeSet 则为 O(logN)。
LinkedHashSet:具有 HashSet 的查找效率,且内部使用双向链表维护元素的插入顺序。
2. List
ArrayList:基于动态数组实现,支持随机访问。
Vector:和 ArrayList 类似,但它是线程安全的。
LinkedList:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedLis ...
Java资源大全
Java资源大全中文 java相关工具、相关知识书籍、java相关资源链接
Java资源大全中文版我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。
古董级工具
这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。
Apache Ant:基于XML的构建管理工具。官网
cglib:字节码生成库。官网
GlassFish:应用服务器,由Oracle赞助支持的Java EE参考实现。官网
Hudson:持续集成服务器,目前仍在活跃开发。官网
JavaServer Faces:Mojarra是JSF标准的一个开源实现,由Oracle开发。官网
JavaServer Pages:支持自定义标签库的网站通用模板库。官网
Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。官网
构建工具
构建及应用依赖关系处理工具。
A ...
Java学习-IO知识整理
Java I/O 的知识内容 磁盘操作、字节操作、字符操作、网络操作、缓冲。。。
一、概览Java 的 I/O 大概可以分成以下几类:
磁盘操作:File
字节操作:InputStream 和 OutputStream
字符操作:Reader 和 Writer
对象操作:Serializable
网络操作:Socket
新的输入/输出:NIO
二、磁盘操作File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。
递归地输出一个目录下所有文件:
public static void listAllFiles(File dir) { if (dir == null || !dir.exists()) { return; } if (dir.isFile()) { System.out.println(dir.getName()); return; } for (File file : dir.listFiles()) { ...
Java学习-基础知识
Java相关的基础知识、数据类型、String、特性、关键字、反射、异常、泛型、注解等
一、数据类型
包装类型
缓存池
二、String
概览
不可变的好处
String, StringBuffer and StringBuilder
String.intern()
三、运算
参数传递
float 与 double
隐式类型转换
switch
四、继承
访问权限
抽象类与接口
super
重写与重载
五、Object 通用方法
概览
equals()
hashCode()
toString()
clone()
六、关键字
final
static
七、反射
八、异常
九、泛型
十、注解
十一、特性
Java 各版本的新特性
Java 与 C++ 的区别
JRE or JDK
参考资料
一、数据类型包装类型八个基本类型:
boolean/1
byte/8
char/16
short/16
int/32
float/32
long/64
double/64
基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。
Int ...
Hexo使用教程
安装所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。
npm install -g hexo-cli
进阶安装和使用对于熟悉 npm 的进阶用户,可以仅局部安装 hexo 包。
npm install hexo
安装以后,可以使用以下两种方式执行 Hexo:
npx hexo <command>
将 Hexo 所在的目录下的 node_modules 添加到环境变量之中即可直接使用 hexo <command>:
echo 'PATH="$PATH:./node_modules/.bin"' >> ~/.profile
依旧用hexo -v查看一下版本
至此就全部安装完了。
接下来初始化一下hexo
hexo init myblog
这个myblog可以自己取什么名字都行,然后
cd myblog //进入这个myblog文件夹npm install
新建完成后,指定文件夹目录下有:
node_modules: 依赖包public:存放生成的页面
scaffolds:生成文章的一些模 ...
版本控制工具-Git
分布式版本控制git的学习、工作流、分支管理、SSH等
学习资料
Git - 简明指南
图解 Git
廖雪峰 : Git 教程
Learn Git Branching
集中式与分布式Git 属于分布式版本控制系统,而 SVN 属于集中式。
集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。
集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件的会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。
分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一个分支相当于复制一份完整代码。
Git 的中心服务器Git 的中心服务器用来交换每个用户的修改。没有中心服务器也能工作,但是中心服务器能够 24 小时保持开机状态,这样就能更方便的交换修改。Github 就是一种 Git 中心服务器。
Git 工作流
新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。
Git 版本库有一个称为 stage ...