java 线程池

2020-01-02
阅读 3 分钟
2.1k
java 线程池 Java 的 concurrent 包下提供了多种线程池的实现,使用起来非常方便 ExecutorService ExecutorService 是线程池的抽象接口,concurrent 包提供了如下如下几个线程池的实现 Executors.newSingleThreadExecutor: 仅由一个线程组成的线程池 Executors.newFixedThreadPool(num): 固定线程数量的线程池 Executors...

java atomic

2020-01-02
阅读 3 分钟
1.7k
java atomic 原子变量提供各种原子操作,多线程场景下操作不需要加锁,性能非常好 简例 {代码...} AtomicInteger get: 返回当前 int 值 incrementAndGet: 自增,返回自增后的值 getAndIncrement: 自增,发挥自增前的值 addAndGet: 加上一个 int,并且获取加上之后的值 getAndAdd: 加上一个 int,并且返回加上之前的值 co...

java io 流

2020-01-02
阅读 15 分钟
2.1k
java io 流 io 流总览 io 流主要提供四个接口 InputStream: 输入字节流 OutputStream: 输出字节流 Reader: 输入字符流 Writer: 输出字符流 InputStream InputStream 输入字节流,关注字节的读取,io 包提供如下 InputStream 的实现 ByteArrayInputStream: 字节数组输入流 FileInputStream: 文件字节输入流 PipedInputStr...

java stream

2020-01-01
阅读 5 分钟
1.4k
stream 是 java 8 的一大亮点,专注于了集合的处理,包括抽取,过滤,转化,聚合,化简等,借助新的 lambda 表达式,极大地简化了流式处理的流程,提高了代码的可读性,同时支持并发和串行两种模式,可以很容易地写出高性能的代码

java 正则表达式

2020-01-01
阅读 5 分钟
2.4k
java 正则表达式 正则表达式是一个非常强大的字符串处理工具,通过一种特殊的语法来描述一种模式,再通过模式可以完成字符串的匹配,萃取,替换等操作 简例 要判断一个字符串是否是一个邮箱,可能需要很多的判断逻辑,使用则表达式,只需要下面代码即可 {代码...} 主要有 Pattern 对象和 Matcher 对象 Pattern: 模式对象...

java lambda 表达式

2020-01-01
阅读 2 分钟
1.2k
java lambda 表达式 lambda 是 java 8 引入的新特性,lambda 能替换简单的函数和类,简化了代码,提高了代码可读性 语法 {代码...} 如果参数类型可以自动推导,可以省略 如果参数只有一个,小括号可以省略 如果主体只有一条语句,大括号可以省略 如果主体只有一条语句,return 语句可以省略 函数式接口 java 里面没有函...

java 数学计算

2020-01-01
阅读 5 分钟
1.7k
java 数学计算 java.lang.Math 库提供了常用的数学计算工具 常量 {代码...} 取整 abs(x): 绝对值 floor(x): 向下取整 ceil(x): 向上取整 round(x): 四舍五入,如果有两个(x.5),返回较大的那个数 rint(x): 最接近的整数,如果有两个(x.5),返回偶数 floorDiv(x, y): 向下取整除法 floorMod(x, y): java 默认的取摸 % 得...

java 字符串

2020-01-01
阅读 2 分钟
1.6k
java 字符串 断言 startsWith(x): 前缀判断 endsWith(x): 后缀判断 contains(x): 包含判断 equalsIgnoreCase(x): 忽略大小写的判断相等 {代码...} 字符串查找 {代码...} 字符串操作 substring: 子字符串 trim: 去掉前后空白 split: 字符串分割成字符串数组 join: 字符串合并 {代码...} 字符串转化 {代码...} 字符串构造 ...

java 字典

2020-01-01
阅读 8 分钟
2.2k
Map 描述的是一种映射关系,一个 key 对应一个 value,可以添加,删除,修改和获取 key/value,util 提供了多种 Map

java 集合

2020-01-01
阅读 9 分钟
1.4k
java 集合 数据结构总览 Collection Collection 接口主要关注集合的添加,删除,包含 isEmpty: 判断是否没有元素 size: 获取元素个数 add: 添加元素 addAll: 添加给定集合中的所有元素,相当于并集 remove: 删除元素 removeAll: 删除给定集合中的所有元素,相当于差集 removeIf: 删除满足谓词的元素 retainAll: 保留给定...

java 基本类型

2020-01-01
阅读 4 分钟
1.3k
java 基本类型 基本类型 java 基本的基本类型包括 boolean, byte, char, short, int, long, float, double 每个类型都有一个封装类,封装类继承自 Object 对象,可以用作存放在容器中,另外还提供了一些辅助函数 基本类型 封装类 内存空间 取值范围 描述 boolean Boolean 1 true 或 false 布尔类型 byte Byte 8 [-128, 1...

表达式求值相关算法

2019-12-09
阅读 4 分钟
2.5k
语法分析: 将字符串表达式转化为数字和操作符的 token 数组,['1', '+', '2', '*', '(', '3', '+', '4', ')']

系统监控设计与实现

2019-11-28
阅读 4 分钟
1.7k
监控宿主机器的一些基础指标,并写入到 influxdb 用于之后的可视化以及报警服务 监控的指标包括:cpu利用率,cpu负载,内存使用,网络负载,iops,磁盘等 总体设计 主要分为两大模块,reporter,collector 和 scheduler collector: 负责具体的某些监控指标的采集 reporter: 负责将采集到的指标写入到数据库 scheduler: ...

golang 命令行参数解析 hflag

2019-11-28
阅读 4 分钟
5k
简介 hflag 是被设计用来替代标准的 flag 库,提供更强大更灵活的命令行解析功能,相比标准库,hflag 有如下特点 支持可选参数和必选参数 支持参数缩写 支持位置参数,位置参数可以出现在任意位置 支持 bool 参数简写 (-aux 和 -a -u -x 等效) 支持值参数缩写 (-p123456 和 -p 123456 等效) 更多类型的支持,支持 net.IP...

golang 标准命令行解析库 flag

2019-11-28
阅读 4 分钟
4.4k
flag 库实现了对命令行参数的解析 基本用法 {代码...} 上面代码指定了两个选项: bool 类型的 b 选项,默认值为 false,帮助信息 bool flag string 类型的 s 选项,默认值为 hello golang,帮助信息 string flag 执行 go run main.go 将输出 b 和 s 的值 {代码...} 执行 go run main.go -b -s "hello world" 将修改 b 和 ...

docker consul 环境搭建

2019-11-28
阅读 1 分钟
2.2k
consul 有客服端模式(client)和服务端模式(server),在实际的部署中会在每个客户端机器上部署一个本地 client, server 的数据会同步到 client,服务直接和本地 client 交互,有效地减少了网络通信

docker etcd 环境搭建

2019-11-27
阅读 3 分钟
3.8k
etcd 是用 golang 编写,raft 协议实现的分布式高可靠的 kv 存储系统,常用来作为配置共享和服务注册发现,Kubernetes 就使用 etcd 来保存整个集群的状态

mysql 事务

2019-11-27
阅读 1 分钟
1.4k
一致性(Consistency): 事务开始之前和结束之后,数据库的完整性没有被破坏,写入的数据必须完全符合所有的预设约束,触发器,级联回滚等等

c++ 实现 blocking queue

2019-11-27
阅读 3 分钟
6.8k
使用 std::vector 实现一个环形队列,使用两个指针 start 和 end 来标识起止位置,push 的时候在 end 处插入,pop 的时候直接 start 指针往后移即可

golang 反射

2019-11-27
阅读 3 分钟
1.6k
reflect.Type 指的就是一个类型,可以是基本类型 int,string,也可以是自定义的结构体类型,可以通过 reflect.TypeOf() 获取对象的类型

空类的大小

2019-11-27
阅读 2 分钟
2k
空类就是没有任何数据成员的类,这种类占用的内存大小在不同的语言里面有不同的实现 c {代码...} 这个结果输出是0,也就是说 c 语言中的空类大小为 0 {代码...} 在 gcc 中,两个空类拥有相同的地址,但是比较的结果却是不同的……这个我也不知道咋解释…… c++ {代码...} c++ 的空类大小为1,因为 c++ 中规定不同的对象必须...

docker jenkins ci/cd

2019-11-27
阅读 3 分钟
2.4k
Jenkins 是一个很老的 ci/cd 服务了,但是至今并未过时,几乎是各种公司的首选,足见其功能强大 最近用 docker 搭建了一个 Jenkins 服务,实现了代码提交后自动触发测试和部署,再也不用手动发布了,节省了大量的时间 制作 docker 镜像 {代码...} 这里我在基础镜像上安装了 make 工具,因为我大部分项目都是用 make 构建...

golang 依赖管理之 mod

2019-11-27
阅读 4 分钟
11.2k
go 很早就考虑了依赖管理的问题,内置 go get 命令,可以直接获取对应的依赖,非常方便,但是有一个巨大的缺陷,没有版本的维护和管理,而版本不一致可能会导致各种兼容性问题,因此出现了很多第三方依赖管理工具,dep 和 glide 就是其中的佼佼者,到了 go 1.11 官方终于推出了自己的依赖管理工具 mod,并内置在 go 版本...

golang 网络框架之 gin

2019-11-27
阅读 3 分钟
5.1k
golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析,对象返回等等,原生 api 就显得有些不太够用了,而 gin 是一个功能完备,性能很高的 web 网络框架,特别适合 web api 的开发

docker golang 开发环境

2019-11-27
阅读 3 分钟
4.9k
go 版本的不一致,依赖库不一致,导致编译失败;代码生成工具不一致,导致生成代码有问题;依赖工具缺失,导致测试不通过等等,开发环境和生产环境之间的差异会导致各种各样奇怪的问题,而 docker 特别擅长解决这种一致性问题

nginx 入门教程

2019-11-27
阅读 4 分钟
2.1k
nginx 是一个开源的高性能 web 服务器(可能是性能最好的),使用非常广泛,既可以用来部署静态资源,也可以用来作为反向代理,甚至可以作为负载均衡服务器。

golang grpc keepalive

2019-11-27
阅读 2 分钟
5.2k
最近遇到 grpc 客户端报错 rpc error: code = Unavailable desc = transport is closing,原因是连接长时间没有使用,被服务端断开,这种情况通过简单粗暴的重试策略可以解决,更加优雅的解决方案是增加保持连接策略

shell 编程

2018-11-04
阅读 5 分钟
1.4k
变量定义:name=Tom变量使用:echo $name自定义环境变量:export name常见环境变量:$HOME $PATH查看环境变量:env声明只读变量:readonly name特殊变量:

admob 广告开发者报表 api

2018-11-04
阅读 4 分钟
6.3k
广告是移动应用非常好的变现模式,作为开发者经常会接很多家的广告平台,每个广告平台都有自己的报表系统,就会有一个各个平台数据汇总分析的需求,首先第一步就需要从各个广告平台获取数据,除了在web页面提供基本的数据导出功能,基本上各个平台都会提供 api 来方便数据拉取的自动化。

shell俄罗斯方块

2015-07-24
阅读 14 分钟
2.6k
网上看到一个牛人用shell写了俄罗斯方块,找了好久的原作者,这是我找到的最老的地址了,转载自:[链接] 这个代码写的很好,shell学习的很好的资料,和大家一起学习!! {代码...}