![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 71
赱乂
士不可以不弘毅,任重而道远
展开
-
建造者模式-笔记
建造者模式一@Data@NoArgsConstructor@AllArgsConstructorpublic class ComplexClass { private String variableA; private String variableB; private String variableC; public static class Build...原创 2020-04-11 20:01:39 · 403 阅读 · 0 评论 -
MyBatisGenerator修改源码实现model类增加Lombok注解及实现数据库注释
MyBatisGenerator修改源码实现model类增加Lombok注解及实现数据库注释1. 增加自定义Lombok插件类/** * Copyright 2006-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License")...原创 2020-04-07 15:31:30 · 702 阅读 · 0 评论 -
抽象工厂模式-笔记
public interface Product {}public class ProductA extends Product {}public class ProductB extends Product {}public interface Channel {}public class ChannelA extends Channel {}public cla...原创 2020-04-06 09:34:33 · 299 阅读 · 0 评论 -
简单工厂模式-笔记
简单工厂模式-一public class SuperClass {}public class A extends SuperClass {}public class B extends SuperClass {}public class SimpleFactory { public static final String TYPE_A = "A"; public...原创 2020-04-05 15:57:40 · 198 阅读 · 0 评论 -
工厂模式-笔记
工厂模式public class SuperClass {}public class A extends SuperClass {}public class B extends SuperClass {}public interface AbstractFactory { SuperClass getObject();}public class AFactory ...原创 2020-04-03 21:26:49 · 185 阅读 · 0 评论 -
json与xml的对象转换
json与xml的对象转换笔记json字符串转换为实体,建议使用IDEA插件“GsonFormat”xml转换为实体,建议使用:<dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> ...原创 2020-04-01 09:42:43 · 289 阅读 · 0 评论 -
Command line is too long. Shorten command line for XXXClass.xxx or also for JUnit default configurat
解决方案在项目/.idea/workspace.xml文件中添加一行代码如下<component name="PropertiesComponent"> ... <property name="dynamic.classpath" value="true" /></component>...原创 2020-03-26 11:18:21 · 3252 阅读 · 0 评论 -
IDEA中Gradle更新同一版本Jar包问题
Gradle中jar包文件目录C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.alibaba\druid\1.1.10\5edd3db1f7ef54083e4c56e4743fa8bfbc517de\druid-1.1.10.jarGradle中jar相关元数据信息C:\Users\Administrator\.g...原创 2020-03-25 10:35:07 · 2246 阅读 · 0 评论 -
代码中特殊的注释技术—TODO、FIXME和XXX
TODO: + 说明:如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。XXX: + 说明:如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望转载 2018-01-06 10:01:21 · 344 阅读 · 0 评论 -
Java面试资源:百度“Java面试题”前200页
来源:github.com/tangyouhua/program-resource/blob/master/program-interview/java-baidu-200.md 基本概念 操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 A转载 2018-05-11 10:33:07 · 198 阅读 · 0 评论 -
maven项目中model子模块编译source的jdk配置
maven项目中新建model之后,需要设置jdk的编译版本才能支持相应的版本语言新特性,如jdk8中的lambda语法,设置方法如下:1、在idea中设置位置如下图:2、在pom文件中增加编译配置:<build> <plugins> <plugin> <groupId>org.apache.maven...原创 2018-05-11 10:25:47 · 924 阅读 · 0 评论 -
Java异常导图
原创 2018-05-13 10:29:28 · 196 阅读 · 0 评论 -
程序员你为什么这么累?导读
大家一提到程序员,首先想到的是以下标签:苦逼,加班,熬夜通宵。但是,但凡工作了的同学都知道,其实大部分程序员做的事情都很简单,代码CRUD可以说毫无技术含量,就算什么不懂依葫芦画瓢很多功能也能勉强做出来,做个多线程并发就算高科技了,程序员这行的门槛其实还是比较低的。(这里说的是大部分,有些牛逼的,写算法、jvm等的请自动跳过)是不是觉得很矛盾,一方面工作不复杂,一方面却累成狗。有没有想过问题出在哪...转载 2018-05-22 13:05:09 · 536 阅读 · 0 评论 -
程序员你为什么这么累?接口定义常见问题
工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口。接口定义一定程度上能反应程序员的编程功底。列举一下工作中我发现大家容易出现的问题:#返回格式不统一同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。这个对应代码上,返回的类型是map,json,object,都是不应该的。实际工作...转载 2018-05-22 13:09:50 · 600 阅读 · 0 评论 -
程序员你为什么这么累?Controller规范
第一篇文章中,我贴了2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终交付的代码,从15行到1行,自己感受一下。今天来说说大家关注的AOP如何实现。先说说Controller规范,主要的内容是就是接口定义里面的内容,你只要遵循里面的规范,controller就问题不大,除了这些,还有另外的几点:#统一返回ResultBean对象所有函数返回统一的ResultBean/...转载 2018-05-22 13:11:38 · 929 阅读 · 1 评论 -
程序员你为什么这么累?AOP实现
我们需要在AOP里面统一处理异常,包装成相同的对象ResultBean给前台。#ResultBean定义ResultBean定义带泛型,使用了lombok。@Datapublic class ResultBean<T> implements Serializable { private static final long serialVersionUID = 1L; pu...转载 2018-05-22 13:12:42 · 715 阅读 · 0 评论 -
程序员你为什么这么累?日志打印
开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和考核,没有日志功能一样跑啊。但编程活久见,开发久了,总会遇到“这个问题生产环境上能重现,但是没有日志,业务很复杂,不知道哪一步出错了?” 这个时候,怎么办? 还能怎么办,发个版本,就是把所有地方加上日志,没有任何新功能,然后在让用户重现一遍,拿下日志来看,哦,原来是这个问题。有没有很熟...转载 2018-05-22 13:13:51 · 699 阅读 · 0 评论 -
程序员你为什么这么累?异常处理
对于大型IT系统,最怕的事情第一是系统出现了异常我不知道,等问题闹大了用户投诉了才知道出问题了。第二就是出了问题之后无法找到出错原因。针对这2个问题,说说我们项目组是怎么样规定异常处理的。再次声明我的观点,我这系列贴里面,没有什么技术点,都是一些编程的经验之谈,而且是建立在项目背景是大部分代码都是简单的CRUD、开发人员流动大水平一般的情况下。希望读者的重点不要再关注技术点。大部分工作中不需要什么...转载 2018-05-22 13:15:10 · 344 阅读 · 0 评论 -
程序员你为什么这么累?参数校验和国际化
今天我们说说参数校验和国际化,这些代码没有什么技术含量,却大量充斥在业务代码上,很可能业务代码只有几行,参数校验代码却有十几行,非常影响代码阅读,所以很有必要把这块的代码量减下去。今天的目的主要是把之前例子里面的和业务无关的国际化参数隐藏掉,以及如何封装好校验函数。#修改前代码controller代码/** * !!!错误范例 * * 根据id删除对象 * * @param id ...转载 2018-05-23 06:51:37 · 276 阅读 · 0 评论 -
程序员你为什么这么累?工具类编写
一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有些项目工具类有几十个,看的眼花缭乱,还有不少重复。如何编写出好的工具类,我有几点建议:#隐藏实现就是要定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。这也是解耦的一种体现。如果我们不定义自己的工具类而是直接使用第三方的工具类有2个不好的地方:不同的人会使用不同的第三方工具库,会比较乱。将来万一要修...转载 2018-05-23 06:51:51 · 3480 阅读 · 4 评论 -
程序员你为什么这么累?函数编写建议
TIP傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码!在我看来,编写简单的函数是一件简单又困难的事情。简单是因为这没有什么技术难点,困难是因为这是一种思维习惯,很难养成,不写个几年代码,很难写出像样的代码。大部分的程序员写的都是CRUD、一些业务逻辑的代码,谁实现不了?对于我来说,如果业务逻辑的代码评审,需要人来讲每一个代码做了什么,这样的代码就是不合格的,合格的代码写出...转载 2018-05-23 06:52:03 · 588 阅读 · 0 评论 -
程序员你为什么这么累?配置规范
工作中少不了要制定各种各样的配置文件,这里和大家分享一下工作中我是如何制定配置文件的,这是个人习惯,结合强大的spring,效果很不错。#需求如我们现在有一个这样的配置需求,顶层是Server,有port和shutdown2个属性,包含一个service集合,service对象有name一个属性,并包含一个connector集合,connector对象有port和protocol2个属性。我一上来...转载 2018-05-23 06:52:13 · 518 阅读 · 0 评论 -
程序员你为什么这么累?如何应对需求变更
我之前的文章 程序员你为什么这么累? 中,我个人观点是加班原因是编码质量占了大部分因素,但是不少同学都不认为是代码质量导致的加班,都认为是不断的需求改动导致的加班。这位同学,说的好像别人的需求就不会变动似的!谁的需求不改动啊?不改动的能叫需求吗?哈哈。先看个程序员的段子娱乐一下客户被绑,蒙眼,惊问:“想干什么?”对方不语,鞭笞之,客户求饶:“别打,要钱?”又一鞭,“十万够不?”又一鞭,“一百...转载 2018-05-23 06:52:27 · 1416 阅读 · 0 评论 -
程序员你为什么这么累?工程使用说明
jdkjdk6+。#idea使用了lombok,需要在IDE里面先安装插件。idea中在 plugins里面安装 lombok 插件重启即可。在 Idea 里面选择 source目录导入Maven工程,然后在Tomcat里面运行工程即可。idea 中需要先安装tomcat插件。启动项目,访问地址 http://localhost:8080/+[应用名(可为空)] 即可。#eclipse / sts...转载 2018-05-23 06:52:33 · 459 阅读 · 0 评论 -
jdk 1.8 FutureTask
import java.util.concurrent.*;import java.util.concurrent.locks.LockSupport;/** * @author Administrator * @date 2018/5/26 12:23 */public class FutureTask<V> implements RunnableFuture<V...原创 2018-05-27 12:18:21 · 400 阅读 · 0 评论 -
程序员你为什么这么累?目录
1、程序员你为什么这么累?导读2、程序员你为什么这么累?接口定义常见问题3、程序员你为什么这么累?Controller规范4、程序员你为什么这么累?AOP实现5、程序员你为什么这么累?日志打印6、程序员你为什么这么累?异常处理7、程序员你为什么这么累?参数校验和国际化8、程序员你为什么这么累?工具类编写9、程序员你为什么这么累?函数编写建议10、程序员你为什么这么累?配置规范11、程序员你为什么这...原创 2018-05-23 06:59:10 · 1615 阅读 · 1 评论 -
idea使用lombok简化实体类代码
1、在idea中安装lombok插件2、在pom文件中增加两个依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> &原创 2018-06-04 15:47:23 · 442 阅读 · 0 评论 -
使用vim查看Linux服务器下war包中配置文件内容
1、在linux服务器上使用yum安装vim;2、使用vim 文件路径访问,如:vim /srv/temp/a.war3、使用/搜索,如:/a.properties4、查看a.properties中的内容5、使用:q返回上一级...原创 2018-06-04 15:50:29 · 8570 阅读 · 0 评论 -
@Override is not allowed when implementing interface method
1、问题现象:在实现接口方法时,@Override标签报错,提示错误信息:@Override is not allowed when implementing interface method2、问题原因:项目java编译版本不对3、解决方案:在pom中增加如下配置:<build> <plugins> <plugin> ...原创 2018-06-11 16:18:00 · 517 阅读 · 1 评论 -
关于ReentrantLock中的锁获取与释放简图
原创 2018-05-23 22:49:35 · 181 阅读 · 0 评论 -
推荐使用ScheduledThreadPoolExecutor替代Timer
Timer存在的问题1、发生异常时整个timer线程任务都会取消。2、任务执行时间超出设置间隔时timer执行异常。3、系统时间调整或错误时影响timer执行建议使用ScheduledThreadPoolExecutor替代Timer主要方法说明:1、scheduleAtFixedRate,提交固定时间间隔的任务,前一个任务开始的时间和下一个任务开始的时间间隔2、scheduleWithFixed...原创 2018-05-23 23:09:39 · 470 阅读 · 0 评论 -
Spring事务属性的种类: 传播行为、隔离级别、只读和事务超时
1、 传播行为定义了被调用方法的事务边界。传播行为意义PROPERGATION_MANDATORY表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常PROPAGATION_NESTED表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它看起来和PROPAGATION_REQUIRED 看起来没什么俩样PROPAGATION_NEVER表示方法不能运行在一个事务中,否则抛出异常P...原创 2018-05-24 09:13:36 · 422 阅读 · 0 评论 -
Servlet中的service与doPost,doGet
Servlet中相关的类图如下:service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet 中实现了这个接口。 javax.servlet.http.HttpServlet 是 javax.servlet.GenericServlet 的子类。而 doGet/doPost 则是在 javax.servlet.http...原创 2018-05-24 09:28:33 · 501 阅读 · 0 评论 -
死锁之锁顺序
1、由于不同线程对两个锁获取的顺序不一致造成的死锁,叫做锁顺序死锁。2、代码示例如下:/** * LeftRightDeadlock * * Simple lock-ordering deadlock * * @author Brian Goetz and Tim Peierls */public class LeftRightDeadlock { private final...原创 2018-06-11 22:44:06 · 1046 阅读 · 0 评论 -
死锁之动态锁顺序
1、由于方法入参由外部传递而来,方法内部虽然对两个参数按照固定顺序进行加锁,但是由于外部传递时顺序的不可控,而产生锁顺序造成的死锁,即动态锁顺序死锁。2、示例代码如下:// Warning: deadlock-prone!public static void transferMoney(Account fromAccount, A...原创 2018-06-11 23:12:28 · 791 阅读 · 0 评论 -
2016,Java成神初年
转自:https://blog.csdn.net/chenssy/article/details/54017826非常有借鉴和学习意义的成神之路,对于工作几年之后,逐渐快要迷失的程序猿来说,更可以为我们指引方向!2016,Java成神初年2017年01月04日 12:40:03时间2016.12.31 01:51 地点K9004 5号车厢 1号下铺 此刻 深夜 不眠 回想 反思 规划! 工作快四年...原创 2018-06-05 09:09:42 · 230 阅读 · 0 评论 -
jdk8自定义Compare排序
jdk1.8:Collections.sort(list, (o1, o2) -> { return o1.getAge() - o2.getAge();});jdk1.7及以前:Collections.sort(list, new Comparator<Object>() { @Override public int compare(Object o1, O...原创 2018-05-24 13:00:52 · 2259 阅读 · 0 评论 -
死锁之协作对象、锁粒度、开放调用
1、在两个协作对象之间,A对象中的a方法加锁,在a方法内部去调用B对象中加锁的b方法;B对象中的加锁方法c去调用A对象中的加锁方法d,协作对象之间产生死锁。加锁的粒度应该适当,合理缩小锁粒度,降低死锁的产生,只对共享变量进行必要的同步。有原子性要求的方法例外。2、示例代码:/** * CooperatingDeadlock * <p/> * Lock-ordering deadl...原创 2018-06-12 08:37:00 · 676 阅读 · 1 评论 -
java泛型
https://blog.csdn.net/s10461/article/details/53941091原创 2018-05-29 21:24:27 · 115 阅读 · 0 评论 -
成为java高级程序员需要掌握哪些
转自:https://blog.csdn.net/zhibuguonicuo/article/details/60345715section 11.Core Java,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要知道它们的实现,...原创 2018-06-06 10:15:13 · 552 阅读 · 0 评论