Skip to content

Instantly share code, notes, and snippets.

Shell部分用法介绍

1)${BASH_SOURCE-$0} 获取脚本名称
2)dirname 文件 获取当前文件目录
3)${parameter:-default} 指定默认值
4)>/dev/null 2>&1 表示任何输出不显示

☞:针对4解析:
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思

#Java注解(Annotations) @(Java)[annotations] 注解的作用分为

  • 编写文档
  • 代码分析
  • 编译检查

基本内置注释

  • @Overwrite 重写父类方法
  • @Deprecated 不推荐使用

Mysql Lock Mode

row_level: shared(S) locks、exclusive(X) locks
T1 hold S on row r,T2 can hold S on row r too.

Intention Locks(意图锁)
使用意图锁来使InnoDB支持多粒度锁(允许记录锁和表锁共存)
意图锁用来表明一个事物将在此表中需要S或者X锁,使用IS、IX来表明事务使用的记录锁的类型。
IS: 用来设置S锁

#Mysql执行计划详解 执行计划 EXPLAIN返回结果信息如下:

| id| select_type| table| type| possible_keys| key | key_len| ref| rows| extra

####**id:**表示SQL的执行顺序 z1427869861616 id相同的,执行顺序由上到下 z1427869889962 id不同,id值越大优先级越高,越先执行

Tomcat Connector

@(tomcat)[connector] 安装与配置

apache-tomcat http有3种接收连接请求的协议,分别是:BIO、NIO、APR。
BIO:是tomcat默认的协议,对应的Connector中protocol配置是"HTTP/1.1",或者是"org.apache.coyote.http11.Http11Protocol"。
NIO:利用java的异步io处理技术,对应的配置是"org.apache.coyote.http11.Http11NioProtocol"
APR:是利用系统级别来解决异步IO的问题。配置相对前两个比较麻烦,除了配置相应协议外"org.apache.coyote.http11.Http11AprProtocol",还有安装apr,步骤如下:

  1. 安装apr

Gist 插入图片

@(开发工具)[gist]

####上传图片 将所需要的图片上传到gist 文章所需的目录下。

  • 下载工程 git clone https://gist.github.com/idxxxxxxx.git
  • 将所需要的图片复制到此工程目录。(注:由于同一篇gist下,文件的顺序是按文件名进行排列的,ASCII靠前的排前面,所以建议将图片的名称改成z开头,保证文章在最前面)
  • 添加&提交&推送 git add xxx git commit -m "xxxx" git push origin master 此时可以去gist web下查看图片是否OK。

非ROOT用户安装mysql

####安装cmake 下载,解压 ./configure --prefix=xxxx 编译安装make && make install 如果报 CMakeCache.txt的错误,删除CMakeCache.txt即可,重新编译安装

####安装mysql /home/wgx_ldj/lamp/soft/cmake-2.8.5/bin/cmake . \
-DCMAKE_INSTALL_PREFIX=/home/wgx_ldj/lamp/soft/mysql-5.5.28 \
-DMYSQL_DATADIR=/home/wgx_ldj/lamp/soft/mysql-5.5.28 \

Eclipse转IntelliJ IDEA

####工程概念对比

Eclipse IDEA
workspace project
project modules
JRE JDK

流式Builder模式

最近在开发过程中用到了builder模式,比如订单创建、道具发送参数创建等,传统的builder模式已被大家熟知,传统的构建模式专注于抽象的构建步骤(详见附录A),现在介绍一下fluent builder.
fluent builder源于Martin Fowler的这篇文章:FluentInterface,它专注于属性值的设置,不需要繁琐的setter方法和参数构造器就可以完成对象的创建和校验。实例如下:
实体类的写法(为了篇幅,以下去掉了注释):

public class Order implements Serializable {
    private static final long serialVersionUID = 7820429648874014638L;
    private Long id;

private String orderSn;

Integer反序列化后遇到的比较问题

情景回放:
定义了一个不变量 Integer TYPE = 1;
使用Mybatis查询出一个整形对象TYPE_1,TYPE_1的值也是1, TYPE == TYPE_1 是返回true的。
当加入redis缓存,从缓存中获取TYPE_1,TYPE_1的值也是1,但是TYPE == TYPE_1返回false。


在说此问题之前,先看下面代码: