2017-04-06 blademainer
众所周知,当我们执行没有任何调优参数(如java -jar myapplication.jar)的 Java 应用程序时,JVM 会自动调整几个参数,以便在执行环境中具有最佳性能。但是许多开发者发现,如果让 JVM ergonomics (即JVM人体工程学,用于自动选择和行为调整)对垃圾收集器、堆大小和运行编译器使用默认设置值,运行在Linux容器(docker,rkt,runC,lxcfs 等)中的 Java 进程会与我们的预期表现严重不符。 本篇文章采用简单的方法来向开发人员展示在 Linux 容器中打包 Java 应用程序时应该知道什么。 more 存在的问题 我们往往把容器当虚拟机,让它定义一些虚拟 CPU 和虚拟内 继续阅读 »
2017-03-23 blademainer
我们的项目里面经常需要使用jenkins来编译docker,然后jenkins本身就是docker运行起来的,因此编译docker镜像就无法进行。通过调查发现:可以通过映射宿主机器的docker来达到运行的目的。 命令如下: bash docker run -it --rm \ --privileged=true \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker:/var/run/docker \ -v /usr/bin/docker:/usr/bin/docker \ --group-add=$(stat 继续阅读 »
2017-03-14 blademainer
Linux 终端常用快捷键 more 移动光标 ctrl+b: 前移一个字符(backward) ctrl+f: 后移一个字符(forward) alt+b: 前移一个单词 alt+f: 后移一个单词 ctrl+a: 移到行首(a是首字母) ctrl+e: 移到行尾(end) ctrl+x: 行首到当前光标替换 继续阅读 »
2017-02-17 blademainer
openjdk目录结构 ``` ├─agent Serviceability Agent的客户端实现 ├─make 用来build出HotSpot的各种配置文件 ├─src HotSpot VM的源代码 │ ├─cpu CPU相关代码(汇编器、模板解释器、ad文件、部分runtime函数在这里实现) │ ├─os 操作系相关代码 │ ├─os_cpu 继续阅读 »
2017-02-14 blademainer
一 编程规约 (一) 命名规约 (二) 常量定义 (三) 格式规约 (四) OOP规约 (五) 集合处理 (六) 并发处理 (七) 控制语句 (八) 注释规约 (九) 其它 二 异常日志 (一) 异常处理 (二) 日志规约 三 MySQL规约 (一) 建表规约 (二) 索引规约 (三) SQL规约 (四) ORM规约 四 工程规约 (一) 应用分层 (二) 二方库规约 (三) 服务器规约 五 安全规约 * * * more 一 编程规约    (一)命名规约  【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 继续阅读 »
2016-12-18 blademainer
记录工作中经常要去爬的maven相关技术。 拷贝maven依赖到target/lib下 xml org.apache.maven.plugins maven-dependency-plugin copy-dependencies prepare-package copy 继续阅读 »
2016-11-14 blademainer
这里收藏工作中用到的下载地址,也为了防止做重复的搜索工作,同时分享给大家。 more java相关 api https://docs.oracle.com/javase/8/docs/api/index.html javase http://www.oracle.com/technetwork/java/javase/downloads/index.html server-jre8 http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html linux wget下载 java8 wget --no-check 继续阅读 »
2016-09-12 blademainer
这里收藏工作中用到的脚本,也为了防止做重复的搜索工作,同时分享给大家。 more 数组 初始化数组 shell name = (value1 value2 ... valuen) $ A=(a b c d) $ echo ${A[@]} # 输出所有元素 数组去重 shell $ array=($(awk -vRS=' ' '!a[$1]++' <<< ${array[@]})) 取得数组元素的个数 shell $ echo ${#A[@]} 取下标 shell $ echo ${A[1]} # 从1开始 清除元素 shell $ unset A $ echo ${A[@]} 循环取元素 shell $ fo 继续阅读 »
2016-04-18 blademainer
Why 读ConcurrentHashMap的时候,我们遇到的一个很大的概念就是Segment(java8之后只有在调用writeObject方法的方法的时候才会用到segment),该类继承了ReentrantLock,用于实现分段锁(乐观锁)。处于心痒痒的目的,我也尝试写了个简陋版的分段锁。 How 该Demo实现的比较简单:根据key获取或者创建Lock(获取锁的时候使用double check),然后使用该锁来同步put或者read(ConcurrentHashMap的读操作使用的volatile,这里不深入)。不足之处还请指正~ What java实现: github more ```java package 继续阅读 »
2016-03-29 blademainer
问题 在日常开发中,当使用ObjectMapper进行解析json时,我们时常需要将json解析成我们指定泛型的集合类型Collection。 但是如果直接使用objectMapper.readValue(json, Collection.class)的话,那么就会解析为Collection的类型,这个明显不是我们想要的。 方案 在jackson内,如果要反序列化为Collection或者Map,我们可以使用 - CollectionType construct = CollectionType.construct(LinkedList.class, SimpleType.construct(clazz)); - 继续阅读 »