随笔分类 -  Java

Java中将InputStream读取为String, 各种方法的性能对比
摘要:如下, 一共存在11种实现方式及其对应的性能测试结果:1. 使用IOUtils.toString (Apache Utils) 2. 使用CharStreams (guava) 3. 使用Scanner (JDK) 4. 使用Stream Api (Java 8). 提醒: 这种方式会将不同的换行符 阅读全文

posted @ 2017-02-05 03:48 Milton 阅读(50257) 评论(0) 推荐(4) 编辑

JVM heap中各generation的大小(Sizing the Generations)
摘要:查看参数 使用 -XX:+PrintFlagsFinal 打印当前环境JVM参数默认值, 比如: java -XX:PrintFlagsFinal -version, 也可以用java [生产环境参数] -XX:+PrintFlagsFinal –version | grep [待查证的参数]查看具 阅读全文

posted @ 2017-01-30 23:38 Milton 阅读(1427) 评论(0) 推荐(0) 编辑

Spring启动后扫描解析注解的过程
摘要:对应的类: ComponentScanBeanDefinitionParser.parse() ClassPathBeanDefinitionScanner.doScan() 参考 http://blog.csdn.net/xieyuooo/article/details/9089441 阅读全文

posted @ 2016-12-24 02:26 Milton 阅读(817) 评论(0) 推荐(0) 编辑

Java8 jvm参数
摘要:jmap输出 MaxHeapFreeRatio: GC后如果发现空闲堆内存占到整个预估堆内存的N%(百分比),则收缩堆内存的预估最大值, 预估堆内存是堆大小动态调控的重要选项之一. 堆内存预估最大值一定小于或等于固定最大值(-Xmx指定的数值). 前者会根据使用情况动态调大或缩小, 以提高GC回收的 阅读全文

posted @ 2016-12-05 15:57 Milton 阅读(19575) 评论(0) 推荐(2) 编辑

Spring 下默认事务机制中@Transactional 无效的原因
摘要:Spring中 @Transactional 注解的限制1. 同一个类中, 一个nan-transactional的方法去调用transactional的方法, 事务会失效 If you use (default) Spring Proxy AOP, then all AOP functionali 阅读全文

posted @ 2016-11-09 13:56 Milton 阅读(44545) 评论(2) 推荐(9) 编辑

java线上应用问题排查方法和工具
摘要:linux性能监测点 CPU, Memory, IO, Network Linux性能监测工具-cpu 基本概念: 上下文切换(Context Switches): 如果可运行的线程数大于CPU的数量,那么OS最终会强行换出正在执行的线程,从而使其他线程能够使用CPU,它会保存当前运行线程的执行上下 阅读全文

posted @ 2016-10-29 00:24 Milton 阅读(421) 评论(0) 推荐(0) 编辑

使用codemodel生成Java代码
摘要:例子 阅读全文

posted @ 2016-10-17 01:39 Milton 阅读(609) 评论(0) 推荐(0) 编辑

用于部署war并重启Tomcat的脚本
摘要:只需要定义两个变量, 一个是目标tomcat实例的目录, 另一个是war包的名称 对应的Jenkins Pipeline配置 阅读全文

posted @ 2016-09-13 20:48 Milton 阅读(1968) 评论(0) 推荐(0) 编辑

Spring BeanUtils 的对象复制 copyProperties
摘要:Spring提供了一个非常棒的对象复制方法, 其参数的顺序和apache commons提供的同名方法是不一样的, 这个要小心. 源码 可以看到, 成员变量赋值是基于目标对象的成员列表, 并且会跳过ignore的以及在源对象中不存在的, 所以这个方法是安全的, 不会因为两个对象之间的结构差异导致错误 阅读全文

posted @ 2016-09-01 18:38 Milton 阅读(26146) 评论(0) 推荐(0) 编辑

配置Jenkins使用Gitlab的代码库进行构建
摘要:1. 首先确认Jenkins上安装了Git plugin, 以及Subversion plugin Manage Jenkins -> Plugin Manager -> Available 2. 配置git命令路径 Manage Jenkins -> Global Tool Configurati 阅读全文

posted @ 2016-08-11 15:42 Milton 阅读(27410) 评论(0) 推荐(0) 编辑

Dubbo消费端错误: ClassNotFoundException: org.apache.zookeeper.proto.WatcherEvent
摘要:出现错误的原因是消费端war没有启动成功, 但是zkClient和Dubbo的对应Thread启动了, web container无法加载对应的类, 然后在接下来的日志中 而Dubbo消费端未启动的原因, 是Spring初始化失败 从最后几行的日志中可以看到, 在Dubbo注册后, 初始化Sprin 阅读全文

posted @ 2016-06-02 12:00 Milton 阅读(17902) 评论(0) 推荐(0) 编辑

time.c 的Java实现(从timestamp计算年月日时分秒等数值)
摘要:time.c的Java实现 可以作为Snowflake ID generator的前缀生成器, 好处是易于业务手工识别, 缺点是速度较慢, 与直接使用二进制的机制差一个数量级(sf默认实现是20k/ms, 这个只有2k/ms). 在带I/O的情况下, 能达到150/ms的生成速度, 比使用Simpl 阅读全文

posted @ 2016-06-01 00:53 Milton 阅读(3727) 评论(0) 推荐(0) 编辑

Intellij Idea中定制getter setter的模板
摘要:如果不想用lombok, 但是又希望代码尽量简洁, 可以用定制getter和setter方法的方式, 让代码尽量紧凑显示 目标格式 public class DemoClass { private String columnName; private String varName; private 阅读全文

posted @ 2016-05-17 17:18 Milton 阅读(10324) 评论(0) 推荐(0) 编辑

JVM监测&工具[转]
摘要:通过工具及Java api来监测JVM的运行状态, 需要监测的数据:(内存使用情况 谁使用了内存 GC的状况) 内存使用情况--heap&PermGen @ 表示通过jmap –heap pid 可以获取的值 # 表示通过jstat –gcutil pid 可以获取的值 参数的查看可以通过多种方法 阅读全文

posted @ 2016-04-04 02:42 Milton 阅读(358) 评论(0) 推荐(0) 编辑

Java运行环境JVM GC和线程堆栈查询
摘要:JVM相关查询 jps 查看运行中的java进程及其启动类名和参数, JVM参数 jps -lmv 输出 24929 sun.tools.jps.Jps -lmv -Dapplication.home=/home/es/software/jdk1.8.0_181 -Xms8m 19092 ager. 阅读全文

posted @ 2016-04-04 02:29 Milton 阅读(287) 评论(0) 推荐(0) 编辑

Java命令行的执行参数
摘要:Java 程序命令行参数说明启动Java程序的方式有两种: Java 的标准参数 关于-d32和-d64参数, 参考 http://www.oracle.com/technetwork/java/hotspotfaq-138619.html The options -d32 and -d64 hav 阅读全文

posted @ 2016-03-25 00:23 Milton 阅读(2286) 评论(0) 推荐(0) 编辑

Java 读取xlsx
摘要:读取特别大的xlsx文件时, 需要使用StreamingReader, 可以控制JVM内存峰值在200M以内 https://github.com/monitorjbl/excel-streaming-reader 相比较官方的方案 官方的方案内存占用明显较高. 阅读全文

posted @ 2016-03-21 16:27 Milton 阅读(2783) 评论(1) 推荐(0) 编辑

Java 日志性能优化
摘要:1. 选择合理的日志级别、合理控制日志内容 2. 控制日志的输出内容和格式 上面两条语句在日志输出上的效果是一样的,但是开销不一样,主要的影响在于字符串转换和字符串拼接上,无论是否生效,前者都会将变量转换为字符串并进行拼接,而后者则只会在需要时执行这些操作。Log4J官方的测试结论是两者在性能上能相 阅读全文

posted @ 2016-03-20 01:01 Milton 阅读(3016) 评论(0) 推荐(0) 编辑

JDK7中的新特性 The try-with-resources Statement
摘要:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html 类似于这样的代码 简而言之就是不用自己费事写finally啦, 可以避免finally里面再出exception导致try里的exce 阅读全文

posted @ 2016-03-14 12:17 Milton 阅读(444) 评论(0) 推荐(0) 编辑

redis-cache中的callback
摘要:这个是mybatis/redis-cache中关键类 RedisCache 的源码 可以看到其中大量使用了callback方法来操作redis, 但是调用本身是同步的, 其中能想到的唯一好处, 就是省下了每次调用之后的close() - 不知道是否还有别的优点. MyBatis使用Redis作为Ca 阅读全文

posted @ 2016-03-14 11:51 Milton 阅读(2356) 评论(0) 推荐(0) 编辑

导航