自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 slf4j,log4j,logback的区别和相关用法

slf4j,log4j,logback的区别和相关用法0.背景最近出现了log4j2.x低版本漏洞导致JNDI注入问题,于是趁此机会,研究了下目前市面上主要的一些日志框架。其中一些优秀的代码设计思想及在日志系统中的实践值得深入学习,下面是我的一些浅见。1.JAVA日志体系System.out,System.err: JAVA自身类库log4j1.x,JUL: 在Apache的时候,Ceki参与设计的日志实现框架。Java Util Logging 借鉴log4j1.x JDK1.4推出的JAVA

2021-12-30 20:45:00 1342 1

原创 【java细节】for循环,for-each(增强for循环),forEach以及Iterator迭代器对比

【java细节】for循环,for-each(增强for循环),forEach以及Iterator迭代器对比

2021-12-03 21:00:00 2445

原创 Java中多层嵌套if-else代码重构

Java中多层嵌套if-else代码重构1.背景相信大伙儿都见过这样的代码: if (true) { // do something if (true) { // do something if (true) { // do something if (true) { // do something

2021-11-28 14:21:54 2615

原创 SpringBoot处理CORS问题

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-11-10 21:00:00 2366

原创 MyBatis+MySQL8.0存取Json字段之TypeHandler

MyBatis+MySQL8.0存取Json字段之TypeHandler一丶背景二丶解决方案1.自定义转换2.继承BaseTypeHandler实现对JSON类型的转换三丶反思,继续扩张认知边界一丶背景在业务开发过程中,为了实现一个在线编辑器功能,存取了一些CSS样式在MySQL里面,就像这样:"css": { "id": "3", "width": 11, "height": 12,

2021-10-18 23:31:06 3345 1

原创 Spring Boot JPA-Repository方法名查询推导

Spring Boot JPA-Repository方法名查询推导Repository的默认实现初始化Repository核心的PartTreeJpaQueryRepository的默认实现1.Repository接口的默认实现是 SimpleJpaRepository ,以及他的扩展实现 QueryDslJpaRepository 其中,QueryDslJpaRepository不在我们这篇文章讨论范围内。重点关注SimpleJpaRepository,它实现了 JpaRepo

2021-05-08 18:31:30 720

原创 JPA原理分析

零.背景和题外话工作中经常用到JPA去做CURD。出于对某事物全部或部分属性空白时,本能的想添加此事物的属性的内在心理,正好手上有在搭一个新的练手项目,于是开启了Debug分析之旅。读完这篇文章,你将从源码层面明白JPA是如何工作的。值得注意的是:**JPA是一个规范,而非像Hibernate一样是一个解决方案。**这一点在后文也将有所体现。目录零.背景和题外话一.Dao的接口分析二.调用过程分析三.完整过程总结一.Dao的接口分析这是一个基本的Dao接口。如图:重点就在JpaRep

2021-03-02 07:56:57 1891 1

原创 一次坏代码优化引起的对数据库关键字in和‘=’的思考

对数据库关键字in和where的思考一·背景是这样测试同学讲有个界面反应太慢了,什么程度呢,大概是100多条数据得花接近一秒的时间,确实影响用户体验,于是我就来动手改造了。二·排查过程1.先看了日志。好家伙,就查104条数据,执行了416条SQL,刚好是4n倍,原因也很明显,因为表中的考试成绩字段和身份证号字段都是通过联表查询获得,然后拼接回去的。2.原因找到了,开始追代码。因为系统比较小巧,通过代码review很快找到了出问题的代码段,本来想接着这个机会学习下javaagent的使用方法,这下

2020-10-02 08:22:22 197

原创 BlockingQueue Interface In Java学习

一.从“生产者”和”消费者“模型谈起生产者消费者问题,也称有限缓冲问题(Bounded-buffer problem),是一个多进程同步问题的经典案例。通过队列能够容易的实现多线程环境下的数据共享.生产者线程把准备好的数据从队尾插入,消费者线程从队头消费数据,以此解决其数据共享.但这是「柏拉图的理想国」,现实不尽是如此.有个前提是,队列长度是有限的.对于若干个生产者和消费者线程,其数据处理速率是不一致的,当生产者生产数据的速率大于消费者消费数据的速率,且经过一段时间,数据积累到快要挤满队列长度时,生产者线

2020-07-22 23:06:12 171

原创 琢磨琢磨java序列化与反序列化

琢磨琢磨java序列化与反序列化1.遇到一个问题最近做了一个文件导出的业务,在对导出前需要对导出对象做些数据处理,处理过程中遇到了一个复制对象报错的情况,直接上错误截图:可以看到是NotSerializableException,就是和序列化有关了.于是定位到是复制的哪个对象,查看它没有是否实现了Serialable接口,显然没有.最后,我实现了Serialable接口,解决了这个问题.2.问题涉及到的知识点序列化是一种将对象的状态转换为字节流的机制。而反序列化顾名思义,则是其相反的过程,其中字

2020-05-30 14:47:34 224

原创 机器学习(一)---梯度下降算法

写在前面:经过期末考试和紧锣密鼓的实验室项目之后,终于找到了间歇,能够回归看书写博客的学习状态,真是十分幸福的啊。 这篇博客的正题: 在采用机器学习算法时,其模型参数需要不断训练才能够达到完全拟合样本数据集。梯度下降算法即是一种用于,训练机器学习算法模型参数所用的算法,即是优化算法。这篇博客主要讨论最原始的,也是最常用的梯度下架算法—批量梯度下降算法(Batch Gradient Descen

2018-02-04 20:59:03 587

原创 TCP/IP协议中的三次握手和四次分手

哲学上的认知事物阐述。相信大家会去搜这方面内容,说明大家已经知道了这个协议的重要性。因此直接进入正题,哲学中的认识论里面对人类认知事物过程的阐述是这样的。含义:客观事物在人脑中的反映特点:认识是不断变化发展的根本任务:经过感性认识上升到理性认识,透过现象抓住事物的本质和规律 实现前提:占有丰富的感性材料,运用科学的思维方式。感性上认知三次握手和四次分手。那么我先从感性上对三次握手和四次分手作分

2017-11-27 17:26:56 536

原创 C#中wpf引用TeeChart绘制图表

写在前面 在自己通过搜索引擎找这方面资料的时候,发现大多都是MFC项目中引用这个绘图控件的操作居多,在wpf项目中TeeChart的应用资料很少。因为自己在C#方面完全是新手,所以连wpf工程和mfc的区别都不知道,还照着mfc的方式去引用TeeChart最后才发现本身项目的类型就不一样,下面开始介绍如何在wpf工程中引入TeeChart并绘制一幅折线图。需要新建一个wpf应用程序项目。目录如下:

2017-10-27 21:40:00 5480

原创 spring boot security默认配置启动导致的权限错误

spring boot security未配置导致的权限错误 在写验证码登录环节的接口时,遇到一个401错误,以前没有遇到过,错误如图: { “timestamp”: 1507689421067, “status”: 401, “error”: “Unauthorized”, “message”: “Full authentication is requi

2017-10-11 10:47:07 5054

原创 关于spring boot的一些注解

这里列举一些我刚完成不久的用spring boot实现的一个增删改查网站所用到的注解。注解这个东西,用的时候难以理解,抑或大家的好奇心想明白他的原理,却又碍于目前实力有限无法明白,所以注解在前期学习中是需要一定记忆的。@Value 注入配置信息,实现配置类。 @Component 与@ConfigurationPropertion一起使用,对配置分组信息注入。 @Controller 处理

2017-08-18 09:32:28 587

原创 对RESTful架构风格理解

一丶来历 REST这个词是在Roy Thomas Fielding大牛(这个人是HTTP协议1.0版本和1.1版本的主要编写者,也是Apache服务器软件的作者之一)在他的博士论文中提出的,是Representational State Transfer的缩写,即是“表现层状态转换”,需要加一个主语的话,他的主语就是资源(Resources),什么意思呢,就是说描述在web上,资源的表现形式的转换

2017-07-12 20:40:30 1118

原创 python+opencv实现人头检测

前段时间琢磨了下人头检测这个功能,现在有了初步的认知和体会,下面开始讲下我在实现人头检测过程中遇到的坑和解决方法。环境搭建:pycharm,python2.7,opencv2.7,numpy。 这些个环境都是前期准备的,安装和配置都挺方便的,不得不说这里就是python的各种功能的库是真的多,前辈们真是值得膜拜。这里给出一个我下载那些库的网站,python库下载 下载了需要的库用pip安装就行。

2017-07-02 11:05:13 17283 67

原创 结对编程和TDD(测试驱动开发)

这两天来参加了个结对编程比赛,完成之后觉得有些体会需要书写出来沉淀下。 结对编程大家应该有听过,两个人同用一台电脑,一人敲代码,一人旁边观看,至于观看的人做些什么就有很多的选择了,这个方式还是对效率有一定提升,但是需要勤加练习,因为很多人习惯了个人完成编程,突然旁边多个人看还是挺不适应的。总结下来,这种方式可以: 1.增加两个人的专注力; 2.完成知识的传递; 3.毕竟每个人找bug的视角不

2017-06-05 00:23:32 1502

原创 java实现细胞自动机

细胞自动机的java实现一丶 先说说这个题目吧,还是第一次接触这种类型的题目:生命游戏中,对于任意细胞,规则如下: 每个细胞有两种状态-存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动。 当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态。(模拟生命数量稀少) 当前细胞为存活状态时,当周围有2个或3个存活细胞时, 该细胞保持原样。 当前细胞为存活状态

2017-06-04 23:47:18 4328

原创 cookie和session的区别

Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道。本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题。因为HTTP协议是无状态的,即每次用户请求到达服务器时,HTTP服务器并不知道这个用户是谁、是否登录过等。现在的服务器之所以知道我们是否已经登录,是因为服务器在登录时设置了浏览器的Cookie。Sessio

2017-05-09 11:53:38 455

转载 深入理解ServletRequest与ServletResponse

请求和相应是Web交互最基本的模式,在Servlet中,分别用HttpServletRequest与HttpServletResponse来表示Http请求和响应。这两个类均来自javax.servlet.http包,是J2EE Servlet与JSP规范的一部分,因此,谈及 HttpServletRequest与HttpServletResponse的时候,其实都是和Servlet(包括JSP)

2017-05-07 17:10:18 470

原创 Cookie的setPath(),和setDomain()方法

“Cookies是一个很少的信息片段,可以自动地在浏览器与Web服务器间进行交互,因此Cookie可存储在多个页面间传递的信息”正常的Cookie只能在一个应用中访问,即cookie只能由创建他的应用访问要实现跨应用访问cookie或者跨域访问cookie就得使用到cookie的setPath()和setDomain()方法。1.同一服务器内的cookie共享方法:setPath() eg:本机的

2017-04-22 15:20:46 14389 5

原创 ubuntu16.04安装及配置tomcat,IDEA集成tomcat及部署web项目,IDEA通过阿里云镜像加速maven项目创建

一.tomcat安装及配置1) 先从官网下载tomcat,文件名apache-tomcat-9.0.0.M17.tar.gz 官网:[http://tomcat.apache.org/download-90.cgi)]2)下载好的文件挪到/opt/tomcat目录下,(如果/opt目录下没有/tomcat目录创建一个就是了),再在移动完成后到目录下/opt/tomcat/apache-tomcat-

2017-04-08 11:31:50 3942

原创 ubuntu 16.04 google chrome的Adobe插件更新

问题来源:ubuntu16.04安装的google chrome的Adobe插件不更新了,所以就需要自己安个新的插件来看视频。1.先给出新版的Adobe flash 插件下载地址:[(https://fpdownload.adobe.com/pub/flashplayer/pdc/25.0.0.127/flash_player_ppapi_linux.x86_64.tar.gz)]下载好的文件名叫:

2017-03-23 09:19:09 575

原创 ubuntu 16.04下的jdk1.8.0安装以及配置。

ubuntu 16.04下的jdk1.8.0安装以及配置。## 标题 ##jdk的安装及配置1.下载jdk1.8 根据自己电脑位数下载jdk。这里我下载的是jdk-8u111-linux-x64.tar.gz。(我的在/home/lzy/下载 目录下)Oracle jdk1.8下载地址 2.解压后移动已解压jdk的位置(根据需要选择移动与否,之后的配置按照自己的安装路径来)

2017-02-13 21:08:20 772 1

空空如也

空空如也

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

TA关注的人

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