自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Gson源码分析

楔子目前项目中使用的json序列号依赖都是fastjson,但是由于fastjson漏洞频发,决定一律切换为Google的Gson。本以为不过是序列化反序列化而已,两个接口搞定,但是却出现了含有泛型的对象在反序列化时,int被转为double的情况(详情和解决方案可以参考博客Gson格式转换Integer变为Double类型问题解决),为了防止再发生类似的情况,对Gson的源码进行了一点简单的分析。序列化介绍在分析源码之前,先总结一些序列化的知识。serialization是将一个对象转为byte s

2021-03-17 18:52:35 306

原创 读《人类简史》

最近花了两周的时间读了《人类简史》,读过之后才发觉人类70万年的历史,看似无比漫长,但是与地球46亿年的年龄比起来,简直不值一提,如同沧海一粟。不提地球的历史,人类与那些曾经制霸地球的大型动物,例如恐龙比起来,时间也是短的可怜。然而,就是这么短短的历史,人类在地球上创造出了无数叹为观止的奇迹,却也对地球造成了一次又一次毁灭性的打击。作者以人类发展的时间顺序行文,逻辑严密,角度奇特,让我一次又一次为作者的观点惊叹。我第一次知道了,原来我一直眼中的人类其实是智人,与之并列的是在八万年前灭绝的尼安德特人和匠人,

2021-03-12 22:37:09 143

原创 童年的继续——闪烁在你的枝头

小学的时候,订阅了一本杂志,杂志每个月都会有一个专栏来推荐新书,有一期推荐的是《闪烁在你的枝头》,内容简介深深吸引了我。然而让人无奈的是,那个时候读书的资源非常稀缺,完全不是现在百度上随意search就可以。所以,这本书竟然一直记忆到了现在。这周末有空,找到了资源,就坐下来看个不停。很薄的一本书,很快就看完了。看完之后是一些落差和淡淡的怅然。整体而言,是一部还不错的儿童文学作品,但是我已经是个冷漠的成年人,比较难以引发共鸣。故事非常简单,是以第一人称进行叙述的。女主小芬因为妈妈被送到五七干校接受再教

2021-02-28 11:23:41 129

原创 平凡世界中每一个平凡人

小学的时候似乎读过路遥全集,时间太久了我已经忘记了其中的内容情节。只记得年幼的自己看到《平凡的世界》里的计划经济,文革,改革开放,当时是多么的新鲜和惊奇。等我到了现在这个中年阶段,在我已经对那段特定的历史有了解的前提下,再去重新看了一遍《平凡的世界》,有了一些不一样的思考和体会。这本书是一部群像剧,三部曲从前到后出场的人物非常多,但是奇怪的是,似乎每个人,小到田二这样的超级配角,我都没记起一二。每个人的形象都非常鲜明,读下来并不费力,只是从头到尾,自己仿佛带着偏黄的滤镜看着过往,有点像小时候看着黑白电视

2021-02-21 21:00:35 116

原创 众生皆苦——读《活着》

很久之前看过《活着》的电影,葛大爷的表现我当然是挑不出任何问题的。但是当时还很小,看完就看完了。最近胖虎在看《活着》的纸质书,我就跟着一同白嫖了一波。小说很短,作者的文笔功力非常厉害,读起来给人的感觉就是,熨帖,就该这么写。很快就读完了,读完之后印象最深刻的是结尾的一句话:少年去游荡,中年想掘藏,老年做和尚。这句话大概是对整本书故事发展的一个完整概括了。富少富贵年轻的时候放荡不羁,并不把家人和家业放在心上,流连妓院,痴迷赌博。直到最后一无所有,才意识到家人的重要,开始了和家人的凄苦生活。然而这只是生

2021-02-21 20:31:51 151 1

原创 那柳林间的风是否仍在吹拂

《风语河柳岸》是我很小的时候偶然得知的一本书,但是翻遍身边的所有资源,都没有地方能够借到。直到前几天我在扇贝阅读上,发现居然有这本书的原版资源,于是津津有味地开始续梦了。这是一本动物拟人的童话故事。主角四个性格各异,鼹鼠Mole是一个富有冒险精神的家伙,水鼠Ratty个性谨慎,獾Badger为人刚正,乐于助人,而蛤蟆Toad则是一个行为冒失的富二代。他们一起生活在柳林附近,本来过着十分平静的生活。直到Toad在公路上看到有人骑着机车,风驰电掣,一切开始悄悄改变。Toad不仅任意挥霍父亲的遗产用于买机车,同

2021-02-10 22:28:52 102

原创 高效能人士的七个习惯

这本书一直是胖虎极力安利的。之前一直断断续续,最近狠下心来,集中读完了。相比于其他的励志书籍,这本书里面有更多作者自己的例子,很日常,也很有趣,读完了并不显得枯燥。作者将成功分为个人领域的成功和公众领域的成功两部分。其中个人领域,建议大家做到积极主动,以终为始和要事第一。而对于公众领域的成功,要求大家做到双赢思维,知彼解己,统合综效。最后是第七个习惯,通过不断更新,来对这些习惯进行不断加强,实现螺旋式的上升。根据作者的理念,我对自己的行为进行了反思。我目前尚未取得个人领域的任何成功,所以我的目光更多

2021-01-23 17:28:50 70

原创 人生的枷锁

前端时间读了毛姆的长篇小说《人生的枷锁》,据说这部小说是作者以自己的经历为原型实现的具有自传性质的作品。这次我选择了去读英文原版,为此还专门买了扇贝的会员。一开始很肉疼,但是整体坚持读下来,还是感觉赚了的。这算是我读的第三部原版小说,(前两部是《动物农场》和《1984》,是我目前为止最爱的两部作品。)当然要特别mark一下。这本书整体读下来比较痛苦,不是因为英语的问题,而是主人公的性格过于纠结。这还是有生以来第一次我无比讨厌一部作品的主角。如果不是想到我的氪金,我可能半路弃文了。而且随着不断读,后面的评

2021-01-23 17:01:05 173 1

原创 spring-session核心源码解析

目录一、什么是session1. session定义2. session的机制二、标准session实现和spring-session的区别三、spring-session与springboot集成1. 引入依赖包2. 创建httpSession配置文件3. 根据实际情况个性化redis配置四、spring-session核心流程解析1. SessionRepositoryFilter的包装2. spring-session对request的包装SessionRepositoryRequestWrapper

2021-01-16 21:08:35 230

原创 Netty中服务端绑定端口和接收连接源码分析

Netty中服务端绑定端口和接收连接源码分析源码说明一个例子server端bind流程channel的初始化和注册channel的bind接收连接过程总结源码说明源码fork至GitHub的repository,版本号是4.1.38。一个例子为了更加形象,我选择了一个源码中一个简单的example进行改造,在example module下的io.netty.example.echo路径下。代码如下:Server代码:public final class EchoServer { sta

2020-12-12 21:07:11 518

原创 spring security oauth2建表语句爬坑

使用spring security实现oauth2的时候,选择了jdbc方式存储,但是百度了好久都找不到建表语句,最后终于在spring security的github一个test里面找到SQL地址这次的坑让我认识到一个道理,想要使用一个框架,最重要的是从官网出发,到github上clone一份源码下来,这样一查.sql后缀的文件两秒钟搞定。除此之外,pom的依赖也同样在代码之中。源码之下无秘密。...

2020-06-07 20:55:30 875

原创 springseurity实现oauth2自动授权

springsecurity实现oauth2换取授权码的过程中,涉及到先登录,然后再授权,再换取授权码的过程。如果不进行设置,security会跳转到一个默认的授权页面,如下图:其中红框标注的scope为请求/oauth/authorize时传入的scope。源码分析跳转到approve页面的源码如下:if (authorizationRequest.isApproved()) { if (responseTypes.contains("token")) { return getImpl

2020-06-07 19:07:10 1804

原创 为什么form表单不出现跨域,但是ajax会出现

为什么form表单不出现跨域,但是ajax会最近在做spring security实现oauth2的过程中,需要对认证页面进行自定义设置,遇到了一个奇怪的问题。当替换为自定义的HTML页面时,发现点击提交botton后不能跳转,F12发现跳转的请求已经发出,但是跨域。仔细对比,发现原本的页面中使用的是表单提交,而我们自定义的页面中是ajax。乖乖改成表单后,果然问题解决了。同样是提交,有什么区别呢?我理解表单提交是发出一次请求后把控制权交给后端,发出请求后就已经结束了。而ajax则是控制权在前端,发

2020-05-23 22:58:44 380

原创 spring security认证过程分析

spring security认证过程分析认证过程换取授权码过程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入最近做的项目要求进行oauth2认证,使用了spring security框架。使用体验,emmmm应该是肥肠不好。这

2020-05-17 19:57:16 511

原创 springboot实现邮件发送

springboot实现邮件发送配置文件POM依赖代码示例废话不多说,直接上代码配置文件springboot本事已经实现了mail的starter,只需要在配置中初始化就可以:spring: mail: host: smtp.163.com username: 邮箱地址 password: 这里不是邮箱密码,是申请到的一个授权码例如163的邮箱,...

2020-04-18 21:55:23 164

原创 springboot实现https

springboot实现https前言使用方法同时支持http和https前言Tomcat本身可以通过配置server.xml来实现对https的支持,而对于使用内嵌Tomcat的springboot工程来说,只要进行对server的配置就可以轻轻松松实现这一点。使用方法首先,在云服务中支持https,要和提供商要到域名对应的jks文件和密码。jks文件中含有域名对应的证书。接着就是在配...

2020-04-18 21:45:19 270 1

原创 Spring Security实现Oauth2

最近的项目中需要实现Oauth2,因为spring security本身已经有了这样的功能,只要集成进来就可以开箱即用,所以选择了已有的框架。由于是第一次使用框架,在使用的过程中,整体的感觉就是比较重,项目启动也有变慢,而且配置复杂,对新手并不是很友好。集成security要进行的主要配置有三个:对authServer的配置以下示例代码是通过redis进行token的存储,通过mysql...

2020-04-14 18:51:18 351

原创 Redis为什么这么快

缓存服务器可能的瓶颈CPU内核的计算能力网络带宽的限制内存的大小,但是内存的大小主要限制存储能力针对以上问题,Redis进行了相关的性能优化,主要从以下两个方面进行解析Redis的传输协议Redis是client-server类型的组件,启动Redis之后,服务默认起在6379端口,可以通过默认的client使用命令行进行set、get操作,各种语言也都有自己实现的客户端,例如ja...

2019-09-27 17:13:50 125

原创 解决HttpServletRequest的流只能读取一次的问题

解决HttpServletRequest的流只能读取一次的问题写文背景解决思路流不能读取多次的原因解决方式借用HttpServletRequestWrapper类来包装最终解决办法总结写文背景在使用公司的springboot框架做开发的过程中,参数校验使用JSR 330标准的实现完成,日志打印通过对controller进行AOP环切来进行。这就存在一个问题,使用@Validated来进行校验,...

2019-08-10 18:27:32 5434

转载 java 动态代理

详细参考https://www.cnblogs.com/gonjan-blog/p/6685611.html

2019-07-18 16:26:41 99

原创 锁的概念和同步关键字

文章目录锁的概念synchronized关键字锁消除锁粗化锁的概念自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据常识进行更新,直至成功,如atomic封装类悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁,如同步关键字乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新的数据,修改后重试修改,如CAS自旋操作独享锁(写锁):给...

2019-07-09 17:23:51 76

转载 [转载]mysql的join解析

转自https://www.cnblogs.com/BeginMan/p/3754322.html#3662228很全面详细的解释

2019-02-24 21:38:54 81

转载 effective java----消除过期的对象引用

参见https://www.cnblogs.com/liuroy/p/6442888.html

2019-02-24 14:36:37 112

原创 java对象和引用以及值传递

 更多请参考博客https://zwmf.iteye.com/blog/1738574java对象和引用java对象是java类的实例,通过两种方式创建,new和反射,对象存在于堆中 java引用可以理解为指向对象的遥控器,存在于栈中,同一个对象可以对应于多个引用java的值传递java的参数传递方式只有一种,那就是值传递,对于基本类型很容易理解,传入的是值的一个copy,对于...

2019-02-24 14:23:10 195

转载 jdk、JRE和jvm的关系

转自https://www.cnblogs.com/zhangzongxing01/p/5559126.html

2019-02-23 21:09:11 148

转载 java generator

java generator不需要通过new就可以创建对象实例,这样的通用性更高,涉及到的设计模式是基于反射的工厂模式,具体源码参见博客转载:https://blog.csdn.net/weixin_39033443/article/details/84249001...

2019-02-04 08:40:37 377 1

原创 通过hibernate进行参数校验遇到的版本冲突问题

参考:https://stackoverflow.com/questions/51776491/bean-validation-fails-for-spring-boot-application在进行参数校验的时候抛出了如下异常:Caused by: java.lang.NullPointerException: null at sun.reflect.annotation.Ty...

2018-09-05 17:28:30 3282

原创 使用APO进行统一的参数校验

通过Hibernate validate对入参进行校验的时候,之前一直在每一个controller里面写判断方法进行校验,这次写一个统一的切面进行参数校验。controller方法如下:public ReturnResult querySign(@Valid @RequestBody QueryRequest queryRequest, BindingResult bindingResu...

2018-09-05 17:22:28 577

原创 ajax处理表单

因为之前一直用表单默认的处理方式,不能返回值,这次的项目需要在页面将表单提交后的结果进行显示,但是本人对前端的其他功能不是特别熟练,所以尝试了ajax提交表单。表单如下<form class="inpform" id="uploadForm" method="post" enctype="multipart/form-data" > <div class="cle

2018-03-27 17:58:57 369

空空如也

空空如也

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

TA关注的人

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