java
文章平均质量分 69
Star--Zhang
https://github.com/cyuanxin
展开
-
Java 8 Default Methods
如果翻看jdk源码的interface,会发现多了default关键词。 简单介绍下。 原文default使我们能够在不中断实现该接口的类的情况下向接口添加新的功能。 让我们来看看下面的例子。public class MyClass implements InterfaceA { /** * @param args the command line arguments翻译 2017-01-04 00:04:45 · 295 阅读 · 0 评论 -
Fail Fast Vs Fail Safe
原文Fail Fast And Fail Safe Iterators In Java :java中的迭代器使我们能够遍历Collection对象。 集合返回的迭代器本质上是Fail Fast的或 Fail Safe的。 如果在迭代集合时修改集合,则Fail-Fast迭代器立即抛出ConcurrentModificationException。 当 Fail Safe迭代器不会抛出任何异常,如果一个翻译 2017-02-19 14:18:13 · 672 阅读 · 0 评论 -
用2的幂表示可多项选择的状态
我们在学习linux权限指令时,想必大多数人都会疑惑为啥用1,2,4来表x,w,r的权限,而不是1,2,3就行了。 实际工作中,我们也经常需要用到各种组合的状态,类似权限,每个权限并不唯一只有x,w,r,而是x,w,r任意组合。所以我们就需要任意组合的数字不重复。用2的幂就可以达成这样的效果。用1,2,3的话,比如x和w(1+2=3),就与r重复了。除了以上任意组合的唯一性外,还有个好处,就是代码原创 2017-02-03 23:00:28 · 338 阅读 · 0 评论 -
classfile.ClassFormatException
项目加了十几行代码后,tomcat启动时候抛出一个异常 org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'filename': Invalid byte tag in constant pool: 18at org.aspectj.apache.bcel.classfile.ClassParser.readConstant原创 2017-10-09 20:57:30 · 2737 阅读 · 0 评论 -
java9新特性-Process 进程 API
前言java process API 开始于1.5 ,但是功能不够,没有被大众熟知。如今很多语言,都能很好的对进程做控制,所以java9 这次的更新算是做出了一些更新,以下是总结的几点,并非全部,而是认为比较关键的几个方面。创建进程并且终止new ProcessBuilderder 创建了一个命令,让系统休息5s, 第一个参数是cmd,第二个参数是cmd的参数。onExit()返回一个futur原创 2017-10-29 15:37:42 · 789 阅读 · 0 评论 -
com.intellij.util.indexing.StorageException: java.lang.AssertionError 解决
启动idea突然报这个错误com.intellij.util.indexing.StorageException: java.lang.AssertionError谷歌搜了很多方法。 1. file/invalidate caches restart 2. rebuild还是不行后来想着是intellij的错误,而且是storageexception,会不会是cach...原创 2018-04-26 20:02:48 · 1666 阅读 · 0 评论 -
java ReplaceAll 以及 分组
java ReplaceAll 以及 分组java 的replaceAll方法是对整个字符串满足条件的进行替换,可以用正则表达式。比如 String s1="My name is Khan. My name is Bob. My name is Sonoo."; String replaceString=s1.replaceAll("\\s",""); System.out.p...原创 2018-08-05 01:17:01 · 3647 阅读 · 2 评论 -
BeanUtils.copyProperties() 在 spring 和 apache.commons 区别
BeanUtils.copyProperties() 在 spring 和 apache.commons 区别BeanUtils.copyProperties() 方法在java中被广泛使用,用于复制两个bean里面相同的field。最近有个同事代码遇到一个bug,有个bean类是这样书写class Test { private Integer t;//声明是包装类 public i...原创 2018-09-23 00:12:59 · 2109 阅读 · 0 评论 -
Java 8 Concurrency Tutorial: Threads and Executors
原文并发API首先随Java 5的发布引入,然后逐渐增强每个新的Java版本。 本文中显示的大多数概念也适用于较旧版本的Java。 但是我的代码示例集中在Java 8,并大量使用lambda表达式和其他新功能。 如果你还不熟悉lambdas,我建议先阅读我的Java 8教程。Threads and Runnables所有现代操作系统都通过进程和线程支持并发。 过程是通常彼此独立地运行的程序的实例,例翻译 2016-11-02 22:58:17 · 681 阅读 · 0 评论 -
LOGBACK 配置: 用 XML
现如今,java 开发中 都用logback来配置日志了。之前看到一篇好文章,翻译分享给大家。 原文前言当底层的日志记录框架成为一个技术瓶颈时,将无法很好记录日志。日志记录框架需要是快速的,有一个小的内存占用空间,并且可以很容易地配置。Logback是日志框架具有这些优点。如果你是新的Logback,我建议去通过我的介绍后对logback:logback简介:一个企业级日志框架。生成Logger我翻译 2016-07-31 23:58:20 · 13993 阅读 · 0 评论 -
Java 8 Stream
Java 8 Stream Tutorial原文链接java8提供了lambada表达式,函数接口,极大方便开发者。本文是简要翻译他人文章。介绍了最常使用的StreamAPI。如果有兴趣,可以通过链接阅读原文。streamstream代表了一系列元素,并且提供了各种各样的操作。List<String> myList = Arrays.asList("a1", "a2", "b1", "c2"翻译 2016-04-20 20:37:10 · 952 阅读 · 0 评论 -
mybatis 传入int=0 小坑
用mybatis 时,我们喜欢传入一个值后,写 之所以加上xx != '' 是有时候搜索时候,我们需有这个空有意义, 前面的 null 容易理解,判断是否有该字段传入。string 类型 没问题。但是当 是int 类型的时候, 如果int a = 0 ,会被认为 xx == ‘’ ,我用的mybatis3, 这个小坑注意。。。。原创 2016-03-20 02:13:19 · 1313 阅读 · 0 评论 -
升级到spring4.0 注意事项 才支持jdk8
https://github.com/spring-projects/spring-framework/wiki/Migrating-from-earlier-versions-of-the-spring-framework项目升级到jdk8。spring版本太旧。老是启动失败。查找了原因,原来是需要spring4才能支持。上面是英文链接。同时系统的quartz最好升到2.原创 2016-03-24 23:51:43 · 767 阅读 · 0 评论 -
防止XSS攻击过滤工具类
public static String XSSHtmlFilt(String msg) { StringBuffer buffer = new StringBuffer(msg.length()); for (int i = 0; i < msg.length(); i++) { char c = msg.charAt(i); switch (c)原创 2016-04-26 19:58:59 · 1799 阅读 · 0 评论 -
TTP access control (CORS) 以及 spring 解决方法
HTTP access control (CORS) 以及 spring 解决方法HTTP access control (CORS)cors介绍该链接介绍的很具体,有兴趣的同学可以打开研究下,我简要翻译下。cross-origin HTTP(http跨域访问)发生在当连接到不同域地址。比如 http://domain-a.com 去向 http://domain-b.com/image.jpg翻译 2016-04-15 18:18:40 · 732 阅读 · 0 评论 -
spring boot .idea/ 下的文件要注意保存
平常我们用inteli idea 时候,.idea/下文件会被我们都省略掉。正常也没什么。但是当用spring boot 的时候,如果把.idea/下文件都删了。比如传到git上,然后别人down下来时候运行时候就会出错报not found misc.xml错误。。其实理论上来说。.idea/要放到版本控制里。当然里面的workspace.xml和task.xml文件就可以忽略掉。这样原创 2016-03-27 00:38:44 · 561 阅读 · 0 评论 -
强烈建议使用guava
guava是google写的java第三方库。好多常用类以及数据处理方法。我用了一年多了。 有些到了jdk8,jdk也仿照guava写了,比如option(可用来代替讨厌鬼null) 里面Stirngs,Maps一些方法很推荐。今天又发现了一个小玩意。static final ImmutableMap<String, Integer> WORD_TO_INT = new Immut原创 2016-06-09 18:50:43 · 603 阅读 · 0 评论 -
Logger 日志输出请使用占位符 {}
review代码时,发现太多人习惯log日志直接用“+”号连接。这是很不好的习惯。 In Logger, the logging methods are overloaded with forms that accept one, two or more values.[9] Occurrences of the simple pattern {} in the log message are原创 2016-06-05 22:05:35 · 34574 阅读 · 10 评论 -
学会使用eclipse Memory Analyzer --MAT
原文mat是一个分析java内存的神器。经常用于线上出现bug后的分析,尤其oom这种错误。自己写肯定没大神牛逼,所以google了篇文章介绍给大家。译文: (前言省略一万字) 在这个例子中,我们使用的是一个非常简单的程序,分配100000的listener,并将它们存储在4个不同的list。应用程序然后sleep并没有清除这些list。获取内存快照(heap dump)以下几种方法: 1.翻译 2016-07-23 13:38:59 · 10875 阅读 · 2 评论 -
CAS 和 Fetch And Add 区别
这里写自定义目录标题CAD 和 Fetch And Add 实例译文CAD 和 Fetch And Add 实例我们以AtomicInteger里面的incrementAndGet方法为例子,该方法是给变量值加1.在jdk1.7中源码如下:public final long incrementAndGet() { for (;;) { long current = ...翻译 2019-01-05 15:36:58 · 2561 阅读 · 0 评论