疑难汉字
字 读音 含义 刳 kū 从中间破开;破开后再挖空。 「刳竹」 剡 yǎn 削;削尖 [sharpen]
scoop 安装
首先要有一个 Powershell 3.0 与 .Net 4.5 以上的环境。 在 PowerShell 中输入: 1iex (new-object net.webclient).downloadstring('https://get.scoop.sh') 如果没有网络问题,则可以直接安装成功(可能需要修改一些与 admin 有关的 policy)。如果安装不成功,则删除C:\Users\LC\scoop再试一次。 12# 安装 curlscoop install curl
MySQL 中的引号
标准的 SQL 中只允许用单引号表达字符串类型。有些 SQL 方言允许使用双引号包裹字符串,如 MySQL,有些则不允许,如 Oracle。 反引号是专门用来表达 identifier 的。
MySQL 字符串和数字隐式转换的 pitfall
Data truncation: Truncated incorrect 不要小看 MySQL,它出 warning 就一定有错误。 不要滥用 MySQL 字符串到decimal,和 decimal 到 string 的转换。这样有时候 MySQL 不只是 warning。
散列算法
MD5 易于碰撞。 SHA1 是 git 默认的 commit 用的散列算法。 SHA2 是第二代安全散列算法,合共有六种。 SHA256 是其中一种。 参考: https://blog.csdn.net/chenze666/article/details/79730753 https://www.keycdn.com/support/sha1-vs-sha256
checklist
写代码 checklist注意位置注意顺序注意初始化注意返回值注意注释注意防御性编程注意数据库性能 上线 checklist代码变更 check 代码配置变更 check 配置系统变更注意上线顺序依赖中间件变更注意配置中间件配置中心配了吗交互所有细节都实现了吗?配监控和埋点数据库变更了吗?安全检查
JDWP 与远程调试
JDWP(Java Debug Wire Protocol),它提供了调试器和目标 JVM (target vm)之间的调试协议。 在 target vm 启动时,增加这个 JAVA_OPTS: 1JAVA_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=26310" 在服务器端,增加 remote debuging 的时候使用如下配置: 12345678# Java 9 以上-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000# Java 5-8-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000# Java 1.4.x -Xdebug...
Maven 插件配置指南
本文主要参考了《Guide to Configuring Plug-ins》: maven 实际上有两种插件: 构建插件,需要在<build/>元素里配置。如<build><pluginManagement/></build>,当然也有<build><plugins/></build>。 报告插件,会在“site generation”里被执行,应该在<reporting/>里配置。如<reporting><plugins/></reporting>。 要引用插件至少要有三个元素:groupId,artifactId, version。 mojo 是什么根据《What is MOJO in Maven?》,mojo 是 Maven plain Old Java Object 的意思。实际上是可执行的 goal。 通用配置一个插件通常包含一个以上的mojo,当一个 mojo 被映射到 goal 的时候,则包含多个 mojo(即一个插件可能有多个...
Maven 构建生命周期
maven-生命周期.xmind 构建生命周期的基础知识Maven 基于一个“构建生命 周期”的中心概念,也就意味着构建和发布一个特定的工件(也就是工程)的过程已经被清晰地定义了。 有三种内置的生命周期:default,clean 和 site。default 生命周期处理处理项目部署,clean 生命周期处理项目清理,site 生命周期处理项目的站点(site)文档的创建。 实际上这些 lifecycle 只是在(比如 idea 里)对 phase 归类的时候特别有用,我们平时使用 mvn 命令的时候是无法指定这几个生命周期的。 一个构建生命周期是由多个阶段(phases)组成的上面每个生命周期是由不同的 phase 列表组成的。一个 phase 表示一个生命周期的一个 stage(这两者有什么差别?)。 default 里 phases 的顺序大致上是是 validate -> compile -> test -> package -> verify -> install -> deploy。 使用命令行如果我们使用命令: 1mvn...
卡表和 RSet
上下文卡表和 RSet(Remember Set),是 JVM 为了解决分代收集时,live set 扫描需要穿梭到不同的代的时候的效率问题。 使用缓存表来提高查询效率,是化顺序查找为部分随机查找的一种常用的设计思路。 例如,在传统的计算机体系结构中,当我们把内存分成页以后,会有一个页表,页表又会有一个快表,作为一个中间缓存项,来帮助我们查找我们需要使用的页表项(table entry)。 JVM 在进行垃圾收集的时候,有一项非常重要的工作就是确定这一次垃圾收集的对象到底有多少个,即确定 live set 的范围。 对于新生代垃圾收集器而言,这个问题又有其特殊之处。根据 JVM 的弱分代收集假设(weak generational hypothesis)的存在,每次垃圾收集的时候,新生代的扫描范围可能很大,但新生代的 live set 不应该太大。card table/Remember Set 的设计目的,就是尽量减少无用的垃圾扫描范围,使用类似操作系统或者数据库的脏页表的形式,来做类似快表的查询。 卡表(card table) 卡表是 CMS 的解决方案。 卡表通常在 JVM...