工具类:
1 | package redis; |
测试类:
1 | package redis; |
每多学一点知识,就少写一行代码
1 | package redis; |
1 | package redis; |
新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
1 | package java8.lambda; |
1 | Test Java8 lambda! |
首先建立文本log.txt
:
1 | 2 this is a test |
awk '{print $1,$4}' log.txt
1 | $ awk '{print $1,$4}' log.txt |
awk -F, '{print $1,$2}' log.txt
1 | $ awk -F, '{print $1,$2}' log.txt |
awk -F '[ ,]' '{print $1,$2,$5}' log.txt
1 | $ awk -F '[ ,]' '{print $1,$2,$5}' log.txt |
awk -v
设置变量a=1
, 例如:awk -v a=1 '{print $1,$1+a}' log.txt
1 | $ awk -v a=1 '{print $1,$1+a}' log.txt |
awk -f cal.awk log.txt
1) 过滤第一例大于2的行. 例如:awk '$1>2' log.txt
2) 过滤第一列大于2并且第二列等于’Are’的行. 例如:awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
注意:~ 表示模式开始。// 中是模式。
例子:
1 | # 输出第二列包含 "th",并打印第二列与第四列 |
1 | # 输出包含"re" 的行 |
1 | # 忽略大小写 |
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句}
例如cal.awk
内容如下:
1 | #!/bin/awk -f |
G. 统计行数
1 | awk '/error/' app.log | awk 'END {print NR}' |
或者:
1 | grep -c 'error' app.log |
Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
操作系统: Mac OS Yosemite 10.10.5
Mac地址:https://download.docker.com/mac/stable/Docker.dmg
Docker.dmg:安装提供Docker Engine,Docker CLI客户端,Docker Compose和Docker Machine
1)运行Docker.dmg安装
2)配置个人加速镜像(我使用阿里云https://cr.console.aliyun.com/#/accelerator)
3) 运行docker version
和docker info
检查
1 | ➜ docker version |
1 | ➜ docker info |
启动运行nginx, 执行docker run -d -p 80:80 --name webserver nginx
1 | ➜ docker run -d -p 80:80 --name webserver nginx |
启动bash命令交互操作客户端
1 | ➜ docker exec -it webserver bash |
停止niginx, 运行docker stop webserver
1 | ➜ docker stop webserver |
删除nginx, 运行docker rm webserver
1 | ➜ docker rm webserver |
镜像官方仓库:https://hub.docker.com/explore/
下载ubuntu
1 | ➜ docker pull ubuntu:14.04 |
启动运行ubuntu
-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
–rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。
ubuntu:14.04:这是指用 ubuntu:14.04 镜像为基础来启动容器。
–name myUbuntu:给容器取一个别名叫
myUbuntu
1 | ➜ docker run -it --rm --name myUbuntu ubuntu:14.04 |
或者不指定ubuntu版本,直接启动时,直接下载最新版本ubuntu:latest
1 | ➜ docker run -it --name myUbuntu ubuntu:14.04 |
停止ubuntu容器
1 | ➜ docker stop myUbuntu |
删除ubuntu容器
1 | ➜ docker rm myUbuntu |
查看历史镜像
1 | ➜ docker images |
删除ubuntu镜像
使用docker rmi <IMAGE ID>
删除,但是必须先要docker rm myUbuntu
才能删除镜像
1 | ➜ docker rmi 7c09e61e9035 |
查看docker进程
1 | ➜ docker ps -a |
1) 启动nginx
1 | ➜ docker run -d -p 80:80 --name webserver nginx |
2) 启动bash控制台并修改index.html
内容
1 | ➜ docker exec -it webserver bash |
3)查看容器修改内容
1 | ➜ docker diff webserver |
4)制作v2版本tag的nginx
1 | ➜ docker commit --author "zhengyong" --message "update index.htm" webserver nigix:v2 |
5) 启动v2版本nginx
1 | ➜ docker run -d -p 80:80 --name ng nigix:v2 |
1)创建工程目录
和Dockerfile
文件
1 | ➜ mkdir mynginx |
2)Dockerfile
文件内容
1 | FROM nginx |
3) 构建docker镜像
使用命令docker build -t nginx:v3 .
构建:
1 | ➜ docker build -t nginx:v3 . |
docker导致mac硬盘空间不足:
1 | docker rm $(docker ps -a -q) |
1 | <dependency> |
A rule can contain many conditions and patterns such as:
1 | Account (balance == 200) |
The above conditions check if the Account balance is 200 or the Customer name is “Vivek”.
A variable name in Drools starts with a Dollar($) symbol.
1 | $account : Account( ) |
Drools can work with all the native Java types and even Enum.
The special characters, # or //, can be used to mark single-line comments.
For multi-line comments, use the following format:
1 | /* |
Functions are a convenience feature. They can be used in conditions and consequences. Functions represent an alternative to the utility/helper classes. For example:
1 | function double calculateSquare (double value) { |
Salience is a very important feature of Rule Syntax. Salience is used by the conflict resolution strategy to decide which rule to fire first. By default, it is the main criterion.
We can use salience to define the order of firing rules. Salience has one attribute, which takes any expression that returns a number of type int (positive as well as negative numbers are valid). The higher the value, the more likely a rule will be picked up by the conflict resolution strategy to fire.
1 | salience ($account.balance * 5) |
The default salience value is 0. We should keep this in mind when assigning salience values to some rules only.
https://www.tutorialspoint.com/drools/drools_rule_syntax.htm
- 当前table Node数组赋给临时变量,并记录老table的初始化容量和加载因子
- 如果老初始化容量大于0,新表初始化容量直接扩大为原来的2倍
- 循环老table,对新table赋值
1) 如果如果链表只有一个,则进行直接赋值
newTab[e.hash & (newCap - 1)] = e
2)如果红黑二叉树:……
3)链表赋值,如果新表位置变化
e.hash & oldCap) == 0
, 则老表数据在新表位置为(老数组位置i+老数组容量oldCap)
1 | final Node<K, V>[] resize() { |
JDK-1.7 线程不安全
resize()导致线程不安全
1 | transfer()函数逻辑 |
1 | <dependency> |
1 | import org.junit.Assert; |
1 | @RunWith(PowerMockRunner.class) |
幻读:事务1读取数据时,事务2增加并提交,事务1再次读取数据时,可以看到事务B新增的数据。
不可重复读:事务1读取数据时,事务2修改并提交该数据,事务1再次读取事务时,可以看到事务B修改后的记录
脏读:事务1更新了记录,但没有提交,事务2读取了更新后的行,然后事务T1回滚,现在T2读取无效。
http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html
Spring 2.5在2.0的基于Schema的Bean配置的基础之上,再增加了扩展XML配置的机制。通过该机制,我们可以编写自己的Schema,并根据自定义的Schema用自定的标签配置Bean。要使用的Spring的扩展XML配置机制,也比较简单,有以下4个步骤:
- 编写自定义Schema文件;
- 编写自定义NamespaceHandler;
- 编写解析BeanDefinition的parser
- 在Spring中注册上述组建
1 | <dependency> |
1 | package schema; |
1 | package schema; |
实体类:
1 | package schema; |
最后在META-INF目录下添加两个配置文件(spring.handler
和spring.schema
):
spring.handler
配置如下:
1 | http\://www.pomelo.com/schema/people=schema.StudentNamespaceHandler |
spring.schema
配置如下:
1 | http\://www.pomelo.com/schema/people.xsd=META-INF/people.xsd |
新建applicationContext.xml
放在clasapath下面:
1 | <?xml version="1.0" encoding="UTF-8"?> |
java调用:
1 | package schema; |
具体代码详见:https://github.com/zyongjava/pomelo/blob/master/src/main/resources/META-INF/people.xsd
1 | <!--swagger --> |
二、spring boot配置
1 | package cn.pomelo.web.config; |
三、swagger-ui.html配置
1 | import org.springframework.context.annotation.Configuration; |
四、注解说明
常用到的注解:
1 | @Api |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true