自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IDEA修改java版本号

总共有4处需要修改,直接上图(在后面),如果懒得每次改版本号,也可以利用maven插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version&g...

2019-10-06 23:24:29 614

原创 如何使用Unsafe类方法

首先Unsafe类是不建议被使用的,因为他面向底层,可能在每一代jdk版本中发生变化,除非你有把握在在每一次升级jdk时维护你的项目Unsafe是作为单例而存在的,当我们尝试调用getUnsafe方法时,会报安全错误,这是由于双亲加载机制导致的。通常我们可以通过反射来绕过这些检测在如下代码中,我们通过反射获取到了Unsafe类的实例,Unsafe类中的方法往往都是通过偏移量来操作对象的,我们...

2019-10-06 23:23:03 1034

原创 FutureTask源码分析

FutureTask直接继承了RunnableFuture,间接继承了Future,Runnable。当我们使用Runnable时,是无法获得返回值的,而RunnableFuture则是为了解决这一个问题而存在首先,这段代码不熟悉的可以去看这篇文章 {% post_link 如何使用Unsafe类方法 如何使用Unsafe类方法 %}// Unsafe mechanics priva...

2019-10-06 23:22:29 171

原创 ThreadPoolExecutor源码分析

看到网上讲线程池源码的文章一堆大坑,只能自己扒源码扒篇文章出来了,坐标jdk8最重要的一个坑放在前面假如你设置的核心线程数=2,最大线程数=4。很多人都讲向线程池添加任务时会先扩充到最大线程数,多出来的再向队列添加,我只想说,这是非常致命的错误看如下代码,在添加任务时,从源码或从注释中明确表示分了三步1.如果现存线程数小于核心线程数,则创建线程,添加的任务直接在该线程运行2.如果核心线...

2019-10-06 23:21:37 156

原创 mysql启动(无需添加到服务)

已经安装配置好mysql,无需将mysql添加到服务项中即可启动1.打开cmd,通过cd到mysql安装/解压文件夹下2.调用bin下的mysqld.exe文件(如果是linux则可能是.sh)3.参数为my.ini/my.cnf4.具体命令为 bin/mysqld --defaults-file=./my.ini5.输入该命令后cmd应该会挂起,此时mysql已经启动成功。如果关闭...

2019-09-17 00:12:52 549

原创 mysql大小写问题

直接上报错,简单来讲就是报错说表没找到2019-07-02 12:26:48.782 WARN 16022 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1146, SQLState: 42S022019-07-02 12:26:48.782 ERROR 16022 --- [nio-...

2019-09-17 00:12:42 139

原创 隧道连接redis集群报错

####问题描述 java springboot程序访问redis,由于redis集群分布于多个目标服务器上,且均有防火墙阻拦,平时调试都是通过tunnel建立隧道来访问。单个redis通过隧道访问成功,但是redis集群通过隧道访问失败。使用的jar包如下<groupId>org.springframework.boot</groupId><artifac...

2019-09-17 00:12:13 1542

原创 线程模型

首先我们来谈一谈java中常见的几种IO线程模型我们知道一般io(socket)都是由accept,read,write,close几种状态组成####同步阻塞(bio)在read时需要无限等待直到消息到达,就是阻塞,同步则指的是每一步都需要等待上一步完成然后被调用####同步非阻塞()同步阻塞和同步非阻塞的区别就在于,在read时无论是否有数据,立刻返回。那么或许有人会问了,这样...

2019-09-17 00:11:30 118

原创 简单利用git完成服务器自动化部署

前言本篇主要讲述在团队合作时,如何利用脚本和git在前后端分离模式下,测试时的服务器自动化部署问题(只是个人想法和实践,仅作参考。下方代码已经经过测试,保证做好适配后可用)适用情况:团队合作,前后端分离,后端需根据前端需求持续变更代码并提供给前端测试需要的环境:linux服务器,git,maven,java2019.6.25更新昨天忘记了说一个重要的问题,如果你是在window环境下写...

2019-09-17 00:10:07 343

原创 分布式锁

####什么是锁? 锁是一个多方可以共同访问的元素,各个访问者通过对该元素的信息的判断,按照一定事先约定的行为进行协调的功能。这个元素可以是任何的东西,根据事先约定的行为的不同也会随之变化。 例如,一个队列,如果来访者发现自己的id在该队列的头部,那么就认为自己拥有了锁,可以执行某些逻辑,这时候这个队列就相当于一个锁。锁也可以是一个boolean类型的对象,当他为true或者false时,其...

2019-09-17 00:09:08 159

原创 Tomcat源码笔记

ps:由于图片过大,所以限制了在博客中显示大小,大家可以右键查看图片看原图本系列均是基于9.0.21版本 本章我们不会涉及代码,而是笼统的分析Tomcat的实现原理,让大家对全局有一定的掌控,后面几章我会带大家分析代码####Tomcat是什么? 在我看来,Tomcat是利用各种模型和设计方式对socket的深度封装,做到适配各种协议同时达到一定性能的代码组,同时给我们写的各种业务代码(...

2019-09-17 00:07:57 187

原创 Servlet源码笔记

主要简单介绍下servlet源码结构介绍首先类的主要结构关系需要提及一下模块一interface ServletRequestinterface HttpServletRequest extends ServletRequestclass ServletRequestWrapper implements ServletRequestclass HttpServletReque...

2019-09-17 00:07:06 177

原创 mysql设置默认值无效

场景:数据库mysql,框架hibernate原因:根据hibernate打印出的sql信息可以发现,如果实体类字段为null,则仍会insert这个字段为null,而mysql设置的默认值生效的前提是,当我们insert一条记录时,我们不指定某字段的值,他才会自动生成默认值,而我们用save的时候指定该字段的值为null,此时如果我们mysql设置的为not null,那么同时也会报错解...

2019-09-17 00:06:22 7109 1

原创 mysql大小写问题

直接上报错,简单来讲就是报错说表没找到2019-07-02 12:26:48.782 WARN 16022 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1146, SQLState: 42S022019-07-02 12:26:48.782 ERROR 16022 --- [nio-...

2019-09-17 00:05:42 137

原创 linux安装jdk(非openjdk)

1.官网下载压缩包,这里我下载的是解压版不是rpm版本,现在可能需要你登陆才可以下载,自己去注册个账户吧,或者用其他方式得到压缩包oracle下载jdk8的网址2.解压压缩包tar -zxvf 你压缩包的名字.tar.gz3.安装vim,这是个文本编辑器,你可以把它理解为记事本这种东西,至少我的ubuntu18.04是不自带vim的你可以使用sudo apt install vim这条...

2019-09-15 19:49:46 499

原创 jpa查询部分字段获取实体类

代码已经放到github,test测试中的demo2对应的是sql方式,demo3对应的是hql方式,demo1是分页查询,我另一篇文章会讲到{% post_link 分页查询 分页查询 %}github地址前言我们平时使用jpa查询时,有两种情况,一种是查询全部字段,另一种是查询部分字段,当我们按通常的sql语句写法查询部分字段时,会出现jpa无法自动解析类型的情况,例如这类报错org....

2019-09-15 19:49:04 3222 1

原创 java中的锁

锁的几种用法####synchronizede.g:1用synchronized对一个代码块加锁,object可以是任意的对象,任何其他synchronized(该对象)的代码块均需要获取到锁以后才可以执行,如果object=this,那么就是锁住的整个对象synchronized(object) { //代码块}e.g:2下方代码锁住的是此方法所在的对象,也就是如果该对...

2019-09-15 19:48:22 112

原创 IDEA运行tomcat源码

这里提供下Tomcat9最简单运行源码的实现1.去官网下载tomcat源码2.新建pom.xml文件,与webapps,conf等文件夹平级存放,增加一些缺少的jar包(这些其实可以自己多运行几次试出来缺哪些jar包),插件的作用是不用每次刷新maven的jar包都需要调整java版本号,不会改版本号的可以看{% post_link IDEA修改java版本号 IDEA修改java版本号 %}...

2019-09-15 19:47:29 500

原创 IDEA修改java版本号

总共有4处需要修改,直接上图(在后面),如果懒得每次改版本号,也可以利用maven插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version&gt...

2019-09-15 19:46:30 1646

原创 git使用笔记

详细介绍git使用和配置(不包括安装)什么是git?首先我用通俗语言解释下,git是一种版本控制工具,你既可以在本地进行版本控制,也可以与搭建好git服务器的远端进行同步如何使用?windows的可以官方下载安装包,linux可以命令行下载(对于window来说可能需配置环境变量,可有可无)配置全局信息随便找个地方右键打开git bashps:这里配置的昵称和...

2019-09-15 19:45:15 113

原创 getParamter为何接收不到postman构造的信息

之前发生了这样一件事,由于是用的postman发送的消息,消息体有几种常用构造方式:none,form-data,x-www-form-urlencoded有一些构造方式通过getParameter方法是获取不到数据的,接下来让我们一起看一下这个问题首先我对两种构造方式进行了抓包,看到他们发出去的请求首先时form-data格式下的Get,Post方式GET http://localho...

2019-09-15 19:42:41 234

原创 CAS机制

正文一.什么是CAS机制CAS机制的全名叫做compare and swap让我们来看一行代码public final native boolean compareAndSwapLong(Object var1, long var2, long var4, long var6);这行代码源于Unsafe类(待补充),参数var1和var2我们先不考虑,var4表示旧值,var6表示新...

2019-09-15 19:41:52 173

原创 Exception thrown when sending a message with key='null'

报错2019-08-20 18:45:09 [nioEventLoopGroup-3-15] ERROR o.s.k.s.LoggingProducerListener - Exception thrown when sending a message with key='null' and payload='xxxxxxxxxxxxxx' to topic abc-event:org.apa...

2019-09-15 19:40:15 2995

原创 AtomicLong

一.AtomicLong是做什么用的首先我们可以先看一下我的另一篇文章{% post_link i++不是原子性操作 i++不是原子性操作 %}此时,我们通常选择会是进行这样的操作public class CasStudy01 { private static int count = 0; private synchronized static void add(){ ...

2019-09-15 19:35:19 663

原创 (BUG系列)org.hibernate.boot.archive.spi.ArchiveException: Could not build ClassFile

解决方法:升级javassist依赖版本报错详情:2018-10-06 16:05:33,120 ERROR [SpringApplication.java:838] : Application startup failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with na...

2018-10-06 16:08:48 2936

原创 (Java学习笔记)i++不是原子性操作

public class CasStudy01 { private static int count = 0; public static void main(String[] args) { Runnable runnable = new Runnable() { @Override public void run...

2018-10-03 20:42:41 2108

空空如也

空空如也

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

TA关注的人

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