自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

转载 Java 垃圾回收机制与几种垃圾回收算法

一、如何确定某个对象是“垃圾”?这一小节先了解一个最基本的问题:如果确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃圾收集器如何确定某个对象是“垃圾”?通过什么方法判断一个对象可以被回收了。在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失...

2019-12-25 00:39:26 583

转载 10个实用的但偏执的Java编程技术

在沉浸于编码一段时间以后(比如说我已经投入近20年左右的时间在程序上了),你会渐渐对这些东西习以为常。因为,你知道的……任何事情有可能出错,没错,的确如此。这就是为什么我们要采用“防御性编程”,即一些偏执习惯的原因。下面是我个人认为的10个最有用但偏执的Java编程技术。一起来看一看吧:1.将String字符串放在最前面为了防止偶发性的NullPointerException异常...

2019-12-18 21:58:58 268

转载 Java Spring中同时访问多种不同数据库

开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了。本文以在Spring框架下开发一个SpringMVC程序为例,示范了一种同时访问多种数据库的方法,而且尽量地简化配置改动。搭建数据库建议你也同时搭好两...

2019-12-18 21:49:46 610

转载 JavaScript 汉字与拼音互转终极方案 附JS拼音输入法

前言网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字典文件,无法根据实际需要满足需求。综上,我精心整理并修改了网上几种常见的字典文件并简单封装了一下可以直接拿来用的工具库。代码和DEMO演示github项目地址:https://githu...

2019-12-18 21:33:55 2543

转载 单机数据库优化的一些实践

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题。本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正。1、表结构优化在开始做一个应用的时候,数据...

2019-12-18 21:00:21 355

转载 分布式队列编程:模型、实战

介绍作为一种基础的抽象数据结构,队列被广泛应用在各类编程中。大数据时代对跨进程、跨机器的通讯提出了更高的要求,和以往相比,分布式队列编程的运用几乎已无处不在。但是,这种常见的基础性的事物往往容易被忽视,使用者往往会忽视两点:使用分布式队列的时候,没有意识到它是队列。 有具体需求的时候,忘记了分布式队列的存在。文章首先从最基础的需求出发,详细剖析分布式队列编程模型的需求来源、定义、结构以...

2019-12-18 20:57:40 277

原创 每个优秀程序员必须具备的技术技能

我特别支持软件开发者在他们掌握技术技能的同时去学习“软技能”——事实上,我写了一本关于这方面的书——但是不可否认的是:技术技能很重要。我的意思是,如果你不能编写代码和开发软件,那么你学习众多软技能有个卵用。也许你可以成为一名优秀的管理人员或指导人员,但不会是软件开发人员。如果你正在阅读这篇文章,那么我假设你有兴趣成为一个软件开发人员——或者是更优秀的软件开发人员——下面就让我们来聊一聊你需...

2019-12-18 20:50:32 489

原创 算法分析的正确姿势解读

在进一步学习数据结构与算法前,我们应该先掌握算法分析的一般方法。算法分析主要包括对算法的时空复杂度进行分析,但有些时候我们更关心算法的实际运行性 能如何,此外,算法可视化是一项帮助我们理解算法实际执行过程的实用技能,在分析一些比较抽象的算法时,这项技能尤为实用。在在本篇博文中,我们首先会介 绍如何通过设计实验来量化算法的实际运行性能,然后会介绍算法的时间复杂度的分析方法,我们还会介绍能够非常便捷的...

2019-12-18 20:35:07 468

原创 详解Java集合框架

List结构的集合类ArrayList类,LinkedList类,Vector类,Stack类ArrayList集合类的使用方法(无同步性,线程不安全)//ArrayList:实现了List接口,ArrayList是容量大小可变的数组的实现 ArrayList al = new ArrayList(); //将元素添加到al集合中的尾部 String str1 = "...

2019-12-18 20:22:46 311

原创 项目延期原因及应对之道

每个项目经理都希望能有效地控制项目进度。但这件看似简单的事情,实际操作起来却常常不尽如人意。即使在成熟的大公司里,有着完善的项目管理流程,配备着一流的团队,项目延期事件还是频频发生。这里分析主要的三个原因。常见的原因之计划不清很多项目经理,计划做得很漂亮,却总是计划赶不上变化。原因 在于,有些时候,按工作量预估的发布日期却得不到领导的同意,领导有时会说我们现在就是和时间赛跑,这个项目必须在...

2019-12-18 20:09:18 587

原创 优秀Web开发者必须知道的10件事

“开发工作不仅仅只是写代码”这句话来自3EV网站的Dan Frost,他在一篇文章中阐述了开发过程中应该注意的一些事项。原文内容如下:开发者是创造数字世界的主力军,他们不应该只扮演编程工具的角色,而应该对开发工作有更高的要求。那么,开发者可以从哪些方面提高开发能力呢?下面我就谈一下我的想法。我的建议可能不全面,但希望能够给你带来一些帮助。1. 不要只盯着代码如今人人都会写代码。很多业余爱...

2019-12-18 20:05:31 348

转载 微服务架构之我们应该从Dubbo中学到什么

文章目录一、 模块分包二、 框架扩展之微核和插件三、 框架扩展之平等对待第三方四、 框架扩展之Filter-Chain模型五、 框架扩展之外置生命周期六、 框架扩展之一致性数据模型七、 领域模型划分八、 Dubbo核心领域模型九、 领域模型线程安全性十、 API和SPI分离十一、 API可配置一定可编程十二、管道和派发十三、主过程拦截十四、Dubbo调用过程拦截十五...

2019-12-06 14:30:28 348

转载 我们应该从JAVA集合中学到什么

本文不讲解各种集合间的区别,适用场景是什么,增删改查的时间复杂度和时间复杂度是多少,是否线程安全,是否有序,是否支持随机访问,是否是快速失败的,也不关心底层结构是数组、哈希表、链表、红黑树的哪一个。如果你阅读过我blog(www.liangsonghua.me)大部分文章就会发现基本上是总结性、技巧性、细节性的,送一句话与你共勉:看懂然后模仿再创造,加油!!文章目录一、空接口二、Ar...

2019-12-06 14:22:18 350

转载 JAVA安全编码标准

以下内容摘取自《JAVA安全编码标准》,略做修改和补充解释,这是一个把书读薄和知识串通的过程文章目录一、输入验证和数据净化二、声明和初始化三、表达式四、数值类型与运算五、面向对象六、方法七、异常行为八、可见性和原子性九、锁十、线程API十一、线程池十二、与线程安全相关的其他规则十三、输入输出十四、序列化十五、平台安全性十六、其他一、输入验证和数据净化1...

2019-12-06 14:10:34 2387

转载 码出高效JAVA代码

本文更多关注平时容易忽略的技巧或者细节,不是条条框框的JAVA入门教程。想到什么或者看到什么比较合适就写下来了,不定期更新文章目录一、序列化二、Final不可继承类三、Enum四、双重检查单实例五、InterruptedException异常处理六、StringUtils\CollectionUtils\RestTemplate七、异常处理八、Finally九、Maven管...

2019-12-06 13:59:44 649

转载 对开发人员有用的定律和原则

这篇文章包含对一些定律、原则以及模式的解释,但不提倡其中任何一个。它们的应用始终存在着争论,并且很大程度上取决于你正在做什么。一、定律1、布鲁克斯法则这个定律表明,在许多情况下,试图通过增加人力来加速已延期项目的交付,将会使项目交付得更晚。布鲁克斯也明白,这是一种过度简化。但一般的论据是,新资源的时间增加和通信开销,会在短期内使开发速度减慢。而且,许多任务是密不可分的,换句话说,这...

2019-12-06 13:32:31 436

转载 接口设计技巧和最佳实践

这篇文章是从人们在设计和实现接口时常见的和常被无视的错误,总结出来的一些技巧和最佳实践文章目录1、严格的数据模型层2、无歧义的服务名3、数据类型强一致4、始终返回所有的字段5、不要滥用JSON对象6、不要滥用JSON数组7、不要依赖普通的硬编码错误信息8、不要使用数字枚举9、不要返回非封装的响应10、使用JSON布尔值11、尽量让你的接口满足HATEOAS 约束12、...

2019-12-06 13:20:14 528

原创 springboot——使用@Constraint注解自定义验证注解

最近项目在使用如@NotNull @Max 等配合@vaild 注解进行验证传过来的参数校验,然后通过统一异常处理,直接返回给前端,不用在业务代码中对这些参数进行校验。但是官方提供的并不能全部满足项目的需求,我经过查找发现了@Constraint这个注解。Constraint 详细信息@Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 ...

2019-12-06 13:02:19 902

转载 这样规范写代码,同事直呼“666”

一、迭代entrySet() 获取Map 的key 和value当循环中只需要获取Map 的主键key时,迭代keySet() 是正确的;但是,当需要主键key 和取值value 时,迭代entrySet() 才是更高效的做法,其比先迭代keySet() 后再去通过get 取值性能更佳。反例:正例:二、使用Collection.isEmpty() 检测空...

2019-12-06 12:53:57 262

转载 ConcurrentHashMap的数据不一致问题

ConcurrentHashMap被认为是支持高并发、高吞吐量的线程安全一个HashMap实现,因此多线程开发中经常使用到,但是最近在开发中却遇到了数据不一致问题,给自己埋了个大坑,下面描述下问题:首先是工作场景描述:有一个订单列表,每个订单又包含多种类型的任务,每个线程一次只能处理一种类型的任务(取所有订单的该类型的任务,进行批量处理,任务没有先后关系),某订单处理完毕后,修改订单状态。...

2019-12-04 17:17:13 2265 1

转载 ConcurrentHashMap的特殊之处 (遍历的同时修改)

HashMap、arralist、linkedlist、vector不允许通过Iterator遍历的同时修改,而ConcurrentHashMap允许该行为,并且该更新对后续的遍历可见public class Qiao { public static class T1 extends Thread { private List<Integer> list;...

2019-12-04 17:02:57 1235

转载 Java中如何优雅地删除List中的元素

在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素的,今天我来教大家三种方式。前提知识准备for循环的执行顺序这里借用百度百科的一张图,简明扼要的介绍一下Iterator介绍迭代器:迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类...

2019-12-04 16:52:16 508

转载 Java 8中map中删除元素的简单方法

传统的,在JAVA中得MAP中删除元素,可以这样,假设有个MAP:Map<Integer, String> map = new HashMap<>();map.put(1, "value 1");map.put(2, "value 2");map.put(3, "value 3"); for(Iterator<Integer> iterato...

2019-12-04 16:48:03 9121

转载 List.subList()方法的坑 以及 如何截短一个List

removeRange(int, int);这个方法AbstractList并没有暴露出来,我们应该如何得到一个截短的list?1 如何得到一个list某个范围的子集sublist首先想到sublist(int, int)方法注意此方法参数左闭右开。测试如下1.1 修改sublist会影响原来的listLinkedList<String> ll = new L...

2019-12-04 15:59:02 2110

转载 List 中subList()方法 使用时注意的问题

查找java原代码我们可以看到:tempList的subList实现代码在AbstractList类里边,然而无论如何,最终 的结果都是返回一个AbstractList的子类:SubList(该类是一个使用默认修饰符修饰的类,其源代码位于 AbstractList.java类文件里边)SubList类的构造方法:SubList(AbstractList list, int fromInd...

2019-12-04 15:22:30 1083

转载 四行python代码实现oracle数据库dmp文件批量导入

写在最前面由于一些特殊的原因,我们可能需要向oracle中导入大量的dmp文件,我本次导入的dmp文件量为115个,总计45.4G。我选择用python编写批量导入脚本进行导入,不想在plsql中点三四百多次。你最好准备一包喝茶瓜子和一杯好茶。导入过程还是很耗资源的,看电脑情况吧,我的电脑在导入的时候我只能喝茶嗑瓜子~友情提示:如果你想直接看代码,可以直接把滚动条拉到最下面。环...

2019-12-04 13:56:03 2192 2

转载 Oracle sql批量插入多条数据

Oracle中一次插入多条的方法在Oracle里面,不支持像mysql那样直接在后面拼多个记录。Oracle中有两个方法达到批量插入的效果方法一:采用union all拼接查询方式insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE) select 8000,0,'Multi 8000',1 from d...

2019-12-04 11:40:36 3282

转载 Oracle 批量插入数据 insert all into 用法

项目需要用到导入excel表,并解析数据批量插入到oracle数据库中。1)直接解析excel,循环行,拼了sql,executeUpdate。执行一波…咦,这效率很低啊,有多少行数据就执行了多少句sql,基本是一万行已经接近一分钟了。2)每次都仅执行一条sql语句,时间是不是都花在建立连接放开连接balabala的过程上了,用executebatch批量执行sql语句试试。没...

2019-12-04 11:33:40 5735

转载 java分批量插入数据(数据量太大)

需求:需求数据量过大,并且要经常进行插入操作:方案:分批插入,每次插入600条数据!public void insertList(List<Student> list) { int insertLength = list.size(); int i = 0; while (insertLength > 600) { dao.inser...

2019-12-04 11:15:12 2639

转载 mybatis generator 修改

修改目标mybatis配置spring使用时, 原生的generator 不能满足需求 , 生成后需要修改代码, 增加和删除字段会比较烦琐, 因此需要对generator进行修改, 达到一键生成的效果.去除烦人的注释, 只显示数据库中的注释 Mapper类增加@Mapper注解 实体类继承基类,并且不覆盖基类中的成员(比如id) 实体类增加序列化字段serialVersionUID...

2019-12-03 19:55:54 408

转载 java使用validator进行校验

不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空、长度、格式等等)。如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程。幸好jdk或hibernate都提供了对object对象的校验,只需加上相应的注解即可。本人喜欢学习时,都建立个maven小项目进行实践学习。1.项目建立pom.xml<proje...

2019-12-03 19:53:39 866

转载 springboot——使用@Constraint注解自定义验证注解

最近项目在使用如@NotNull @Max 等配合@vaild 注解进行验证传过来的参数校验,然后通过统一异常处理,直接返回给前端,不用在业务代码中对这些参数进行校验。但是官方提供的并不能全部满足项目的需求,我经过查找发现了@Constraint这个注解。Constraint 详细信息@Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 ...

2019-12-03 18:06:20 1430

原创 Mybatis+Oracle批量插入数据

项目中会遇到这样的情况,查询出多条记录(一个List对象集合),一次性要插入多条数据到数据库中。一般有两种方式可以解决:方式一:单条数据插入缺点:数据多的时候效率太慢,不建议使用方式二:批量插入Mybatis本身是很灵活的,因为可以自己在XML文件中编写sql进行操作,那就可以一次性将插入到数据库中,这样只用向数据库提交一次,性能也可以提高不少。①带主键自增的批量插入M...

2019-12-03 17:50:51 1273

转载 ApplicationContextAware使用理解

问题背景在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码:ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml"); AbcService abcService ...

2019-12-03 17:33:51 592

转载 Springboot之自定义参数验证

针对表单提交时,我们需要对参数进行校验,然而验证的种类不能符合我们的需求,需要自定义参数验证。自定义参数验证依赖注解实现,所有我们需要自定义一个自己的注解手机号的验证注解import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.Documented;...

2019-12-03 17:32:58 442

Java8 新特性.rar

Java8新特性,包含代码实例与技术文档。

2020-03-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除