自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 网络编程:BIO,NIO,AIO和netty的发展和示例demo

博主最近去了解了下网络编程的知识,这里做一个笔记进行记录。BIO(同步阻塞IO)在jdk1.4之前,对于网络编程,java只有BIO(Blocking -IO)可用,但由于BIO是同步阻塞的,在服务器需要去接收客户端连接,及对客户端的I/O操作都会被阻塞,造成的结果就是当一个线程在等待客户端写入数据时,就无法去进行其他操作,相当于瘫痪在这,性能十分低下;这种情况的服务器代码示例如下:pub...

2019-11-14 18:30:37 391

转载 很实用的内网穿透工具,将本地项目发布到外网供人访问

...

2019-11-01 14:09:51 861 1

原创 记录一次对于锁表异常java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction的分析和排查

今天突然测试妹纸说测试环境的支付功能无法使用了,于是我去看了测试环境的报错日志,上面就报了java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction异常,也就是锁表了。这让我十分不解,一直好好的怎么会突然锁表呢?然后去查找了被锁住的表,然后在项目代码里方向看了一下所有对这个表进行操作的代码,并没有发现...

2019-10-25 16:14:42 875 1

原创 java 手写数据结构之栈,队列和链表的基本实现

以前看到有人说程序员的三大基本功:程序逻辑,数据结构和sql语句。闲暇之余,突然想起栈,队列和链表的数据结构,对于他们的底层实现已经很久没接触了,就准备手写一下感受感受。栈结构就是实现了先进后出,浏览器的退回,函数栈都是这样的结构,如下就是栈的简单实现:/** * 栈 * 基于数组 * * @author zeng wenbin * @date Created in 2019/...

2019-10-08 16:17:21 319

原创 springboot 手写一个请求记录日志的功能

博主由于工作需要,写了一个http请求记录日志的功能,就是简单记录一下请求时间,请求路径,请求方法,携带的参数信息等等,下面是效果图:目录结构:内容信息:2019-09-30 10:49:02:086 method:POST path:/jmt/cgi-bin/lottery/init/10201/205927 pathParam:(userId:13095) bodyParam:{"sh...

2019-09-30 11:48:40 524

原创 一次对于synchronized和Lock两种锁的性能测试和比较

对于这两种锁,在jdk1.6之前synchronized的性能是远不如Lock的,因为synchronized需要调用操作系统的函数,操作内核来完成,比较费时,在JDK1.6以后Oracle公司对synchronized进行了大量优化,而synchronized也从重量级的锁采用了CAS的方式编程了JVM级别的锁,性能得到了大大的跃升,才普遍使用JDK1.8的现在,出于好奇,我简单测试了下sync...

2019-09-23 18:59:29 1051 1

原创 JDK hashMap源码解读,看完明白如何实现一个map

看这个贴的盆友我认为是有一定工作经验,对于map肯定是较为熟悉的,这里博主就不介绍map的api了;首先对于map的一个基本概念就是map是通过数组+链表的形式存储数据的;第一步:我们看一下hashMap的核心属性:/** * The default initial capacity - MUST be a power of two. */ static fina...

2019-09-20 12:03:00 142

原创 JAVA设计模式之发布订阅模式Demo,支持同步和异步处理消息

发布订阅模式就是发布者发送消息,订阅者接收到消息后进行处理,降低了耦合度,很多业务场景都应用到了这样的场景,比如说下单完成后,可能要还有消息提醒,给予抽奖资格等后续功能,此时就可以使用发布订阅模式处理;目前对越发布订阅模式大多已经使用mq进行处理了,至于java应用内部的发布订阅模式使用的并不多,博主这最近因为工作需要,需要写一个发布订阅模式,现在完成了最基础的部分,支持同步异步推送消息。架构...

2019-08-21 11:43:26 2606

原创 JDBC结果集转实体对象 支持实体属性(驼峰命名法)到数据库列名转换

工作中有时候不得不使用JDBC进行查询,此时最麻烦的就是手工从结果集中获取数据的过程,这里博主写了一个简单的工具类去做JDBC结果集和对应实体之间的转换,代码如下: /** * 转换数据 JDBC结果集转实体 * * @param resultSet 结果集 * @param clazz 实体字节码文件对象 * @param <T> 实体类型 * @retur...

2019-08-16 17:57:38 1412 1

原创 5分钟入门java Stream流操作

Stream流是jdk1.8后增加的新特性,是一种函数式编程,使用stream流需要有jdk1.8的lambda表达式和方法引用的知识。Stream流基于流式思想,其核心需要一个数据源,数据源可以是数组或者集合,流中的一系列操作就是对数据源中数据的分析处理,但Stream流的使用不会改变数据源。Stream流对于数据的处理分析非常方便,他的链式代码风格使用起来很爽,代码精简度很高Stream...

2019-07-26 18:30:12 480

原创 关于java.lang.NoClassDefFoundError: Could not initialize class xxx错误的原因和处理办法

关于NoClassDefFoundError错误出现的原因有多种,网上其他博主也给出各种答案,但说的都比较广泛。这里博主说一下由于初始化失败而造成的NoClassDefFoundError错误。博主在一个Test这个类中使用了静态代码块,类构造如下所示:public class Test { private static int i = 0; static { //放一个除0操作...

2019-07-20 11:23:36 10112

原创 Mybatis向映射文件传入多个参数

mybatis的使用中由于parameterType或parameterMap的限制,只能传入一个参数,但如果一定要传入多个参数的话可以使用@param注解,如下所示:mapper.javavoid addOne(@Param("zid") Integer id, @Param("name") String name, @Param("count")Long count);mapper.x...

2019-07-18 11:48:16 588

原创 java浮点类型(float,double)运算精度问题原因附解决方案代码

在java中运行如下代码:public static void main(String[] args) { System.out.println("0.01 + 0.05 = " + (0.01+0.05)); System.out.println("0.1 + 0.2 = " + (0.1+0.2)); System.out.println("9948.5 + 1292.12 = ...

2019-07-17 18:16:16 523

原创 微信登陆,报40029,invalid code原因和处理办法(通过内存解决)。

最近要做一个企业微信登陆功能,按照企业微信sdk一步步书写代码,但在登陆后通过code获取微信openId的时候总是报错invalid code,错误码40029,一度让我怀疑自己是不是什么地方配置出错了。但几经检查感觉都是正确的。问题原因:在网上搜寻答案后,说是微信会引导客户机重定向两次到我们服务器上,而带的参数code是相同的,而code的使用过一次就会失效了。通过微信开发者工具测试,却有...

2019-05-21 14:28:23 42459 3

原创 记录一个spring事务传播行为失效的问题和解决办法

首先解释一些事务传播是什么?事务传播是spirng对事务的一个强大支持,采用了动态代理的方法,对事务的一种加强操作,让开启了事务的方法和方法之间的调用更加灵活,例如:A,B两个方法都开启了事务,若A方法调用了B方法,若采用的是spring的事务管理,就产生了事务方法的相互调用问题,默认情况下,B方法的事务会被A方法覆盖,若此时B方法的事务要独立于A方法外的话,就可以采用事务传播来解决。事务传播...

2019-03-30 17:41:29 1298

原创 JAVA比较器:Comparable<T>和Comparator

项目开发中,当我们遇到对象级别的数组或集合的排序或去重往往就会使用到比较器,java的比较器有两种:Comparable和Comparator。1).Comparable的使用使用comparable时在被比较对象所在类上直接去实现Comparable接口就可以了,泛型写类本身,此接口中只定义了一个抽象方法,用户使用此方法只需要返回3种结果:-1,0,1即可,如下图所示。输出结果为升序排列...

2019-02-19 13:33:29 380

原创 使用了@Transaction注解依然报TransactionRequireException异常

使用了@Transaction注解依然报TransactionRequireException异常今天启动项目的时候项目失败,报了@TransactionRequireException异常,而此异常的产生原因在我印象中是由于进行了增删改操作,而未配置事务造成的,于是找到出错行,发现有@Transaction注解,即应该是配置了事务的,最后网上一顿百度,找到了原因,@PostConstruct注...

2019-02-15 19:48:26 1214

空空如也

空空如也

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

TA关注的人

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