- 博客(41)
- 资源 (64)
- 收藏
- 关注
原创 论思维惯性和看源码的重要性
写了很多业务代码,发现一个现象,就是我们人总是用自己已知的知识来解决问题的。很多代码写多了习以为常了,就形成了惯性。例一写多线程的时候,参数经常有如下写法Runnable runnable = ()->{};Callable callable = ()->{return xxx;}其实如果类比较复杂,或者为了实现更好的复用,应该写一个具体的类,定义属性重写ru...
2019-04-30 22:11:33 396
原创 如何通过Jar快速大致了解其核心原理?
最近在搜jar包时发现了一个有意思的事情,其实很多jar包通过看其依赖的类库就可以大致了解其核心原理。往往显而易见的东西容易被人们忽略!!举个栗子:我们想猜测或者大致了解cglib和orika对象属性转换或者类库的核心原理是啥。从maven仓库里分别搜一下cglib和orika:https://mvnrepository.com/artifact/cglib/cglib/...
2019-04-30 21:24:39 973
原创 DO、DTO、BO、AO、VO、POJO定义和转换的正确姿势
一、引言DO、DTO、BO、AO、VO、POJO的概念看似简单,但是想区分好或者理解好也不容易,本文简单梳理一下。通过各层POJO的使用,有助于提高代码的可读性和可维护性。------------------------------------------------------------------------------------------------------------...
2019-04-30 20:52:27 40963 10
原创 Slf4j的优势与原理
业务中经常用到slf4j来写日志,但是没有深入研究过为啥通过这个就可以调用log4j或者logback的函数来写日志呢?一、优势《阿里巴巴Java开发手册》关于日志章节专门提到:【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。impo...
2019-04-29 22:48:35 1472
原创 获取Spring资源文件的新姿势
以前有一篇文章专门讲了怎么加载classpath路径的资源文件:https://blog.csdn.net/w605283073/article/details/89410507最近接触到另外一种比较新奇的方式。资源:加载方式:package com.chujianyun.web;import com.alibaba.fastjson.JSON;i...
2019-04-28 23:21:55 444
原创 IDEA查看类关系图的正确姿势
有时候学习某个类库需要了解类之间的关系,用来理解或者写文章,有些人会手动画UML图,比较浪费时间。其实可以通过IDEA提供的功能来实现。可以菜单或者快捷键直接显示继承关系图:效果如下:另外还可以添加其他想梳理的类,来查看他们之间的关系。比如我们可以到List源码中,点击scroll from source到源码包中然后添加ArrayList/LinkedL...
2019-04-28 22:22:56 12635 2
原创 Spring的Environment类的使用
业务开发中可能需要当前环境的判断,比如某些接口严禁生产环境下调用,有些接口只能再预发环境下才可用等。这个时候在Spring中可以使用Environment类。通常有两种方式, 一种是基于接口,一种是直接注入。一、实现EnvironmentAware接口代码如下:package com.chujianyun.web.util;import org.springf...
2019-04-26 22:39:02 13229
原创 使用curl 命令模拟POST/GET请求的正确姿势
开发中常见的调用http的工具除了PostMan外,最常用的就数Curl命令了。官方文档有非常非常详尽的介绍:https://curl.haxx.se/docs/httpscripting.html如http协议的相关用法:https://curl.haxx.se/docs/httpscripting.html#The_HTTP_Protocol最简练的手册:https://curl....
2019-04-25 23:47:21 10052
原创 Java8使用StringJoiner看这一篇就够了
在开发过程中,有时候需要打印集合中的对象的某个属性,为了格式化以前常用StrinigBuffer。比如下面这种代码:Set<Cat> catSet = new HashSet<>(2); @Before public void init() { Cat cat = new Cat(); cat.setName("老...
2019-04-25 22:27:04 29436
原创 Java链式对象构造的正确姿势
开发业务代码过程中,如果能过类似JQuey那种链式编程或者Java中的Builder模式一样可以一直点下去,是一种非常爽的体验。如果内部有一些类似Map、JSONObject的属性,怎样更表意呢?怎样隐藏内部数据结构呢?普通的Builder模式应该外部创建Map或者JSONObject对象并赋值,能否有更好的解决方案呢?当然也可以通过uilder中写一个put方法可以避免多出现一个对象...
2019-04-24 22:54:26 3464
原创 Java中的大量if else语句的替代方案
开发过程中可能会出现大量If else的场景,非常不优雅。之前写过转载过一篇类似的不错的文章《除代码中的 if-else/switch-case的正确姿势》https://blog.csdn.net/w605283073/article/details/89117561,这里翻译一篇进行补充。-----------------------------------------------...
2019-04-20 14:10:53 24659 2
原创 Java 8 Stream使用If-else逻辑
在stream找那个传统的if else用法List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ints.stream() .forEach(i -> { if (i.intValue() % 2 == 0) { Assert.assertT...
2019-04-20 12:51:21 14901 2
原创 Java 8 Predicate花样用法
1. 简介本文介绍Java 8 Predicate链.2. 基本用法怎么使用简单的Predicate来过滤list中的name@Testpublic void whenFilterList_thenSuccess(){ List<String> names = Arrays.asList("Adam", "Alexander", "John", "Tom...
2019-04-20 01:45:55 40032 11
翻译 Java加载classpath文件的正确姿势
Java中有多种加载资源的方式:this.getClass().getResource(resourceName)除非以”/“开头,否则找this类同包的文件。Thread.currentThread().getContextClassLoader().getResource(resourceName)ClassLoader可以共享,创建的线程使用Thread.setContext...
2019-04-20 01:09:26 8172
原创 Java中将Iterable转成Stream的正确姿势
Iterable接口本省并没提供转换到stream方法。我们可以用StreamSupport.stream()来实现。Iterable<String> iterable = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");转换方式StreamSupport.stream(...
2019-04-19 23:43:58 3847
翻译 Java写CSV文件的正确姿势
一、简介本文讲述如何用java来写csv文件。 CSV的意思是逗号分隔符(Comma-Separated-Values),是不同系统之间传输数据的一种常见方式。要想写csv文件需要用到java.io包。本文将讲述如何处理特殊字符。我们的目标是写出Microsoft Excel和google sheets可以读取的csv文件。给出java例子后,我们还将给出一些好用的第三方库。...
2019-04-19 23:27:34 9193 2
原创 Java8 Stream的peek()方法和Java Stream Debugger插件
Java8提供了Stream,可以方便的进行一些数据操作,比如提供了过滤,分组甚至并行等特性。但是我们常常需要查看中间操作的结果,肿么办??大救星Stream的peek()方法来了。我们先看下它的源码:可以看到参数为Consumer<? super T> action,而且注释还贴心的给出了例子 Stream.of("one", "two", "three"...
2019-04-19 22:44:16 11479 2
翻译 利用Java枚举实现简单的状态机
利用Java枚举实现状态机的想法比较新颖,在某些场景下用处也很大,看了一篇文章不错翻译在此。-------------------------------------------------------------------------------------------------------------------------------------------1. 概述本文讲述...
2019-04-19 21:13:55 2171
原创 Java高效构造对象的神器:easy-random 简介
一、背景Java项目写单元测试时,需要构造复杂对象,非常耗时,而且无用的代码很长非常不优雅。这个工具主要是为了Mock对象,省时省力,结合Mockito(可以mock方法)堪称完美。本文简单介绍一下Java高效构造对象的神奇:easy-random .二、介绍github地址:https://github.com/j-easy/easy-randommaven依赖h...
2019-04-18 23:20:23 5521
翻译 Java的jar包和war包的异同
最近思考了一下jar包和war包的异同,发现一篇文章写的非常不错,翻译在此。一、概述本文主要讨论Java中war包和jar包的不同。首先,我们先看不同包的结构,然后对比他们的不同。二、JAR包jar包的文件拓展名为:.jar,包含库,资源和元数据文件。本质上,jar包是一个包含多个.class文件,Java库的和应用的资源文件的压缩包。这是一个简单的jar...
2019-04-18 23:02:09 3136
原创 MyBatis Order By注入错误
在开发过程中,安全问题非常重要,一定要注意sql注入问题。常见的写法如下:order by ${orderBy} ${orderType}这里orderBy, orderType是前端传过来的话很容易产生sql注入问题。《Mysql Order By注入总结》专门讲了如何利用这点进行常见的和猜测的sql注入。为什么这样呢,因为mybatis里 $部分是原样输出的,拼...
2019-04-17 20:42:20 5142
转载 MyBatis类型处理器注册器TypeHandlerReister
一、引言我们知道 mysql的类型和java类型有对应关系,参考此文:https://www.cnblogs.com/jerrylz/p/5814460.html。那么mybatis是怎么找到这种对应关系帮我们转换的呢?------------------下面一篇文章讲得很不错,直接摘录在这里-----------------原创作品,可以转载,但是请标注出处地址:ht...
2019-04-16 23:15:14 2070
原创 mac上为sublime text安装plantuml插件的正确姿势
一、引用plantuml是画uml图的利器,用其语法短短几行就可以画出非常规范的UML图形。对学习uml,梳理业务,规划项目等有极大的帮助。二、安装步骤2.1首先安装sublime text这个没啥好说的,找个软件装上就好了2.2 安装javabrew cask install java2.3 安装Graphviz如果没安装Homebr...
2019-04-16 22:12:17 1330
原创 RSA host key for xxx has changed and you have requested strict checking.
今天遇到了一个错误内容:RSA host key for x.x.x.x has changed and you have requested strict checking.Host key verification failed.具体类似下面:[root@kvm_salt_zabbix gitlab]# ssh-copy-id -i /root/.ssh/id_rsa.pu...
2019-04-15 22:23:06 9395
原创 Intellij IDEA用快捷键自动生成序列化id
最终效果:类继承了Serializable接口之后,使用alt+enter快捷键自动创建序列化ididea默认设置没有开启:alt+enter (不同系统和自定义的配置可能会快捷键可能略有不同)发现并没有提供进入setting→inspections→serialization issues→选择图中的选项。输入:serializable class without ...
2019-04-15 22:18:08 5856
原创 编写自己的SpringBoot-starter
关于原理和基本用法的介绍一篇文章讲得非常清楚《编写自己的SpringBoot-starter》原文地址:https://www.cnblogs.com/yuansc/p/9088212.html后半段根据遇到的一实际案例,对照讲解。--------------分割线转载部分----开始-----------一、前言我们都知道可以使用SpringBoot快速的开发基于...
2019-04-14 23:11:26 1286
原创 如何高效学习和阅读源码?
一、背景作为Java开发工程师,想进阶,阅读别人项目的源码,尤其是开源的优秀核心技术栈的源码必不可少的步骤。那么有什么高效的阅读源码的方法呢?常见的比如买一些 《xxx源码解析》图书,但是存在一个问题,刚开始看的时候非常吃力,跟不上,显得很枯燥,而且很可能看完可能还是毫无头绪。又不如直接拉源码下来,又不知道如何入手。今天和好友探讨过这个问题,把我们认为比较好的阅读和学习源码的技......
2019-04-14 13:36:35 26035 3
原创 如何搜索maven或者gradle的依赖配置或手动下载jar包
本文主要针对一些新手,maven和gradle的用法这里就不展开了,自己去学。通过maven和gradle下载jar包很容易,可以自动的,只需要复制配置就可以。但是从哪里复制这种依赖配置?或者就想把jar包下载下来去哪里下载?周末看到群里有问这种问题,有些新手可能不知道在哪里可以获取jar包,授人以鱼不如授人以渔,希望一篇文章解决新手的困惑。另外大家遇到问题尽量思考未来...
2019-04-13 09:52:47 4199
原创 记lombok@Data和@Builder一起用无法添加无参构造方法的坑
今天和小伙伴讨论一个mybatis-plus的一个诡异问题,最后定位到原因竟然是lombok@Data和@Builder一起用无法添加无参构造方法引起的,非常隐蔽。很多框架都是同反射等调用无参数构造方法来创建实例的,需要注意。单独使用@Data注解,会生成无参数构造方法。 // IntelliJ API Decompiler stub source generated...
2019-04-11 23:14:44 35510 19
原创 @Component 和 @Bean 的区别
1、两者的联系和区别@Component 和 @Bean 是两种使用注解来定义bean的方式。@Component(和@Service和@Repository)用于自动检测和使用类路径扫描自动配置bean。注释类和bean之间存在隐式的一对一映射(即每个类一个bean)。这种方法对需要进行逻辑处理的控制非常有限,因为它纯粹是声明性的。@Bean用于显式声明单个bean,而不是...
2019-04-11 22:27:25 49590 9
原创 Spring生命周期以及如何在Spring启动时加入逻辑
先上两张图,了解一下springbean的生命周期,对理解后面的正文有很大帮助。生命周期在面试和平时开发中也很重要。提供三张图,大同小异,可以对比参考。spring为在bean生命周期的不同阶段提供了丰富的可以加入逻辑的“入口”。下面是一篇非常不错的英文文章,翻译在此,供大家参考。---------------------------------...
2019-04-11 22:13:38 1599
翻译 ClassNotFoundException和NoClassDefFoundError的区别
最近看到一个面试题,问ClassNotFoundException和NoClassDefFoundError的区别。平时没有专门思考过这个问题,藉此机会分析一下。一个直观的区别是一个是异常,一个是错误,异常和错误的区别就可以先讲一波。然后其他的相同点和不同点在看到的一篇非常好的英文文章中有详细的讲述,翻译在此。1.介绍ClassNotFoundException和No...
2019-04-10 23:53:15 3728
原创 代码排错和避免错误的正确姿势
本文总结一下学习和工作以来思考了一些排错的思路和避免错误的思路积累在这里,希望对大家有帮助,也欢迎大家补充。1、代码排错和中医理论很相似发现写代码排查错误可以学学传统中医的诊断方法,1.1传统中医诊断讲究:“望闻问切”。望望指对病人的神色形态等进行有目的的观察,以测知病变。中医大量实践认识到,病人的外在变现和内部病变有相关性。其实排除也是一样,既然有bug,那么...
2019-04-10 23:24:01 6522 7
翻译 用Mockito来mock返回值类型为void的方法
开发中有些依赖的接口还没有开发完成、有些接口还调不通等情况,可以使用Mockito对接口进行mock,然后去测试逻辑,非常好用。最近开发中用到对void返回值类型的方法Mock,看到一篇不错的文章,翻译出来,希望对大家有帮助。-------------------------------------------------------华丽的分割线----------------------...
2019-04-10 22:43:33 40193 1
原创 一篇文章吃透:为什么加载数据库驱动要用Class.forName()
1、Class.forName()和ClassLoader.loadClass()和new XX的区别Class.forName():将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static代码块。ClassLoader.loadClass():只会将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块...
2019-04-10 00:21:07 4406 1
原创 超实用的IDEA插件推荐
下面是学习和工作中用到的认为非常不错的idea插件,好的插件可以赏心悦目,好的插件可以提高生产力。 阿里巴巴Java代码风格检查插件 名称 :Alibaba Java Coding Guidelines 插件地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guide...
2019-04-09 22:11:26 33301 9
转载 消除代码中的 if-else/switch-case的正确姿势
在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去实现。做的不好的会直接把实现的代码放在 if-else/switch-case 的分支之下:switch ( type ) { case case1: ... ... break; case...
2019-04-09 00:22:22 3849 1
原创 一篇文章彻底弄懂Base64编码原理
前半部分为转载,后半部分为自己补充----------------------------转载部分start-----------------------------Base64的由来目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)...
2019-04-08 23:28:12 6794
原创 Java函数调用重试的正确姿势
1、引言业务开发中很可能与回到重试的场景。重试主要在调用失败时重试,尤其是发生dubbo相关异常,网络相关异常的时候。下面对该功能简单作封装,然后给出一些相对用的多一些的开源代码地址。核心功能提供重试工具类,支持传入操作、重试次数和延时时间。支持定义不再重试的异常和条件。主要应用场景只要适用于对任务丢失要求不高的场景。此工具类只适合单机版,因此任务的丢失要求高的...
2019-04-05 02:45:36 2408
原创 抽象类和接口选择以及Lambda表达式场景下的区别简单探讨
抽象类和接口是面试中常问的基础题。主要有以下区别:参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法...
2019-04-05 01:04:11 857
2013双十二万能淘宝做任务领红包辅助3.0.
2013-11-29
2013聚划算砸冰砖抢红包辅助v3.5
2013-11-23
天猫双十一抢红包助手v5.0(红包后自动开新页面+全自动抢红包)
2013-11-07
2013天猫双十一抢红包助手v4.0(红包后自动开新页面+全自动抢红包
2013-11-07
3013天猫双十一抢红包助v1.5
2013-11-05
Word&Pdf2txt1.5
2013-05-18
Word&Pdf2txt1.0.exe
2013-05-17
磁盘文件隐藏和美化助手5.0(Win7版).rar
2013-03-12
vbsedit Failed to load pdm.dll解决办法.
2013-02-21
what to look for in a code review.pdf
2020-10-09
Java核心技术,第二卷,第10版(英文高清文字版)
2018-09-19
明明如月Md5查看修改工具3.0
2016-04-27
明明如月Md5查看修改工具
2016-04-27
2015年双11淘宝密令抢红包神器 4.0
2015-11-08
2015双11密令抢红包工具3.3
2015-11-06
明明如月短网址2.0
2015-10-11
把文件隐藏到图片里 (javafx精美软件)
2015-06-22
明明如月access2003密码找回助手v2.0
2014-06-19
C#精美记事本.rar
2014-04-27
JRegistry-1.8java操作注册表最新资料(推荐).rar
2014-04-22
美女时钟V2.2.zip
2014-03-30
2013双十二万能淘宝做任务领红包辅助4.0
2013-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人