Java Util
所需工具库
Guava
commons-lang
测试所需工具库
junit-jupiter-api
junit-platform-commons
junit-platform-launcher
junit-platform-engine
常用代码片段
分割大的列表变成小的列表
1Lists.partition(bigList, splitSize);
将 String 变成 List
123456public static List<String> splitStringToList(String text, String separator) { if (Strings.isNullOrEmpty(text)) { return Lists.newArrayList(); } return Lists.newArrayList(text.split(separator));}
判断是否开启了 Debug 模式
12345678private static final String AGENT ...
优化程序性能
写程序最主要的目标就是使它在所有可能的情况下都正确工作。
代码剖析程序是测量程序各个部分性能的工具。
程序性能分析
度量标准:每元素的周期数(Cycles Per Element, CPE)
优化编译器的性能
内存别名使用:两个指针可能指向同一个内存位置的情况
消除循环的低效率
代码移动:为了改进代码,程序员必须经常帮助编译器显式地完成代码的移动
一个有经验的程序员工作的一部分就是避免引入渐进低效率代码
减少过程调用
消除不必要的内存引入
引入临时变量
循环展开
展开因子与延迟界限有一定的关系
提高并行性
并行因子与延迟界限和处理单元的数目油一定关系
多个累计变量
重新结合变换
用向量指令达到更高的并行度
低级优化,结构化代码以利用硬件功能
现代处理器
指令级并行
两个界限
延迟界限
吞吐量界限
寄存器
现代 x86-64 处理器有 16 个寄存器
分支预测和预测错误处罚
不要过分关心可预测的分支
书写适合用条件传送实现的代码
用功能性的风格重写条件操作,使得编译采用条件数据传送
内存性能
加载
例如 L1 级 cache 的 4 周期访问时间 ...
知识管理
知识管理
我们每天都在接触各种各样的信息,并从中提取出自己所需的知识,那下面就来聊聊如何利用工具来管理知识。
笔记类工具
为知笔记: 跟 Evernote 和有道云笔记是很类似的
本人已经付费两年,从免费版用到订阅版,一年 60 元,并不是非常贵
支持 Markdown 模式,版本控制,跨平台同步,体验就好
目前用来记录一些比较琐细的 idea 和知识点,后期再作统一处理
缺点
Markdown 的阅读模式体验还是很不错的,但是编辑的时候不是非常有效率
富文本的排版比较麻烦,所以一般都采用 Markdown 书写
语雀: 阿里旗下出品的知识管理分享产品
网址:www.yuque.com
从内测开始使用,现在已经开放注册了
自动排版:富文本排版,样式好看
知识库管理:类似笔记库
目录索引:与为知笔记一样具有协作分享功能
目前主要用其记录比较详细,内容比较多的笔记
缺点
目前没有移动端,只有网页端,手机只能打开浏览器进行查看
Notion: 颠覆式笔记应用
拖拽式组合网页:随意插入想要的组件
笔记之间可以相互链接,类似网页
谷歌账号可以直接登入,不需要注册账号
支持嵌入 ...
Go Skills
Overview
Go 是编译型语言
Go 原生支持 UTF-8,可以处理各国语言
main 包用来定义一个独立运行的程序
空标识符:_(下划线)
格式化代码工具
gofmt
goimports
命令行参数
os.Args 是一个字符串 slice, slice 索引是半开区间的
变量
接口和引用类型(slice、指针、map、通道、函数)的零值为 nil
new(T) 返回地址,即指针
所有的变量都有地址,即指针
基本数据
rune 类型是 int32 类型的同义词,代表一个 Unicode
byte 类型是 int8 类型的同义词
就 Go 而言,取模余数的正负号总是与被除数一致
Go 的 range 循环也适用于字符串,按 UTF-8 隐式解码
整数转换成字符串
fmt.Sprintf(“%d”, x)
strconv.Itoa(x)
strconv.FormatInt(int64(x), 2)
字符串转化成整数
x, err := strconv.Atoi("123")
y, err := strconv.ParseInt(&qu ...
Workflow for iPhone
Workflow 软件
Workflow: 著名的软件,已被 Apple 收购
Workflow 自带的 gallery: 里面有很多的自动化流程,需要自己甄别
少数派收集的 workflow: 有一些很有意思的自动化流程
Microsoft Flow: 微软旗下出品的 workflow 产品
可以联动微软旗下的其他软件
OneDrive
Excel
Outlook
Wunderlist
Workflow Example
下面就列举下我所使用的几个 workflow
使用 Workflow 软件
Add Event: 快速添加到日历,软件内部 gallery 收录
Save as Reminder Note: 快速添加到提醒事项,软件内部 gallery 收录
闪念胶囊:少数派 workflow gallery,通过语音和文字快速记录备忘录
WiFi Priority: 少数派 workflow gallery,终于可以连接指定 WiFi,而不是默认信号好的那个了
12306 SMS to Cal: 少数派 workflow gallery,复制 12306 短信,快速将乘车 ...
Kotlin skills
基础
静态类型的编程语言
关键字 fun 用来声明一个函数
函数
参数列表的后面跟着返回类型,它们之间用一个冒号隔开
在 Kotlin 中,if 是表达式,而赋值操作变成了语句
只有表达式体函数的返回类型可以忽略
对于有返回值的代码块体函数,必须显式地写出返回类型和 return 语句
变量
如果变量没有初始化器,必须显式地指定它的类型
尽可能地使用 val 关键字来声明所有的 Kotlin 变量
val 变量只能进行唯一一次初始化
即使 var 关键字允许变量改变自己的值,但它的类型却是改变不了的
枚举
enum class 表示枚举类型
如果要在枚举类中定义任何方法,就要使用分号把枚举常量列表和方法定义分开
when
when 对应 Java 中的 switch 语句
when 可以带参数以及不带参数
Kotlin 没有三元运算符,可以用 when 来代替 if
智能转换
在 Kotlin 中,你要使用 is 检查来判断一个变量是否是某种类型
使用 as 关键字来表示到特定类型的显式转换
循环
使用 … 运算符来表示区间
downTo
step
until ...
Shell Skills
Shell Skills
基础知识
shebang 字符
在 Bash 中,每个命令都是通过分号或换行符来分隔的
当使用 bash shell.sh 运行脚本时不需要
当使用 ./shell.sh 运行脚本时,脚本的第一行需要有 #! /bin/bash
终端打印
命令
echo
-e: 转义序列
颜色:echo -e "\e[1;31m text \e[0m"
printf
可以在 echo 和 printf 的双引号中引用变量
三种模式
双引号:推荐使用
单引号
不加引号
环境变量
在 Bash 中,每个变量的值都是字符串
export 命令用来设置环境变量
查看进程中的环境变量:cat /proc/$PID/environ
查看某个进程 PID:pgrep appName
赋值与相等
赋值:var=value
相等:var = value
重定向
<: 输出到 stdin
>: 截断,清除再添加
>>: 在末尾添加
命令执行完的退出状态:$?
成功:0
失败:非 0
/dev/null 是一个特殊的设备 ...
Java Skill
工具
Intellij IDEA
插件
Vim
使用 vim 编写代码
Lombok
grep console: add color for console output
string manipulation
rainbow brackets
error prone
compile | use javac with error prone
avoid compile error
p3c: alibaba java code formatter
request-mapper
RoboPOJOGenerator
sonarLint
findbugs
json to kotlin class
善用快捷键
重新指定快捷键
组合序列
Java
代码组织结构
数据库的表与 Entity 一一对应
table
join column
DTO 转化
org.springframework.beans.BeanUtils.copyProperties 浅复制
guava
com.google.common.base.Convert
12345678 ...
React Skills
配置 ES6 环境
生成 package.json 文件
npm init -y
通过 npm --save 或者 npm --save-dev 安装依赖包,其版本号,会包含在文件中
–save: 适用于生产和开发
–save-dev: 适用于开发环境
脚本命令
npm run command
全局安装 babel-cli
npm install -g babel-cli
安装转换环境
1npm install --save-dev babel-preset-es2015 babel-cli
新建配置文件
新建.babelrc
1234567{ "presets": [ ["env", { "modules": false }] ]}
自动构建
npm install --save-dev webpack
npm install --save-dev webpack-dev-server
npm install --save-dev html-web ...
Ubuntu 配置
安装 Node.js
可以直接官网下载安装
12curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -sudo apt-get install nodejs
Node version management
1curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
应用软件
Office
Only Office
Google Web Office
Microsoft Web Office
API Document
Zeal
思维导图
MindMaster: 亿图免费思维导图
XMind
文本导出为 PDF 格式
Typora 可以直接导出 PDF
markdown preview plus:Chrome 插件
编辑器安装 PDF 插件
美化
123456789101112131415wget -q -O - http://archive.getdeb.net/getdeb-archive. ...