自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kafka2.8抛弃zookeeper?

这几天被一个消息刷屏了,就是:kafka2.8移除了zookeeper。听到这个消息,我还是很高兴的,以后本地启动kafka终于不用额外启动zk了。于是我去官网下载了2.8版本的kafka。解压,在bin目录下看到了zk的bat文件,有一丝疑惑,但还是直接启动kafka。笑死,根本就启动不了。报错如下:我怀疑我的打开方式不对,于是我找了kafka2.8的官方文档,选择了quick start,文档是下面这样的:那我基本上可以确定了,网传的kafka2.8移除zookeeper是谣言。也不知道这个谣

2021-04-22 19:43:52 1811 2

原创 @EnableRedisHttpSession设置maxInactiveIntervalInSeconds

在网上找了很多文章但是没有一个能用的,故此记录一下,希望能帮助遇到这个问题的人。在启用了@EnableRedisHttpSession这个注解之后,使用spring官网文档的spring.session.timeout来配置过期时间是没有用的。如果把@EnableRedisHttpSession这个注解去掉,可以通过spring.session.timeout来配置查看...

2021-04-15 15:18:58 3911

原创 idea导入tomcat9源码

马上要换工作了,ld让先看看tomcat的源码。话不多说,开搞。先去tomcat官网下载tomcat源码,国内镜像地址:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/ (国内的镜像一般只有最新的几个版本)。解压后的目录结构如下:然后在当前目录新增一个 /home 目录,把conf和webapps放到 /home 目录下面,如图:然后在根目录下面新增pom.xml文件(是因为这是我使用maven编译),文件内容如下:<?xml ve

2021-02-06 17:52:07 402

原创 jvm的线程、栈与栈帧

在java语言里面,java线程与操作系统的线程一对一绑定,jvm的参数-Xss设置的就是操作系统线程栈的大小。在java中创建Thread对象并调用其start方法,jvm会创建一个java线程,并创建一个操作系统线程,然后将操作系统的线程绑定到java线程上。在hotspot虚拟机中的实现如下:native_thread = new JavaThread(&thread_entry,sz);os::create_thread(this,thr_type,stack_sz)OSThrea

2021-01-24 15:42:58 791

原创 java的内存分配原则

上篇文章说了,对象有可能会分配栈上,这篇文章就来详细说一下java的内存分配原则。先来说说栈上分配栈上分配有两个技术基础:逃逸分析定义:在计算机语言编译器优化原理中,逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。当变量(或者对象)在方法中分配后,其指针有可能被返回或者被全局引用,这样就会被其他过程或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。标量替换允许将对象打散分配在栈上,比如若一个对象拥有两个字段,会将这两个字段视作局部变量

2021-01-23 16:17:34 223 1

原创 jvm之运行时内存结构

java虚拟机运行时数据区分为:虚拟机栈,本地方法栈,堆,方法区和程序计数器(在hotspot虚拟机实现中:虚拟机栈、本地方法栈合二为一),如下图所示:java虚拟机栈是线程私有的,它的生命周期与线程的生命周期相同。java堆是线程共享的,用于存放对象实例,但并不是所有的对象都会放在堆中。比如说,开启了逃逸分析,JIT会将对此执行的字节码编译为机器码以提高运行速度,具体的实现和操作系统、虚拟机的运行模式有关(虚拟机的运行模式有三种:客户端模式,服务器模式,混合模式,只有在服务器模式才能开启逃逸分析,

2021-01-23 15:20:45 100

原创 JDK8源码之String

今天来看一看JDK8中String的源码

2021-01-15 13:14:26 249

原创 Spring调用本类方法代理失效解决办法

在使用spring框架的时候,我们经常会使用@transactional,@Cachable等注解,这些注解的功能在spring底层是使用Aop生成动态代理类去帮我们做的。也就是说只有走了代理类这些注解才会生效,通俗点来讲从Bean的外部去调用就会走代理类,那么这个时候这些注解都是有用的,但是如果在Bean的内部去调用带有这些注解的方法,就不会走代理类,所以这些注解就会失效。解决方案之一就是在Bean的内部强制使用代理类,如下:((Bean)AopContext.currentProxy()).{Bea

2021-01-13 09:42:19 1416

原创 JDK8源码之Object(一)

先来看一下oracle官方对Object的解释:* Class {@code Object} is the root of the class hierarchy.* Every class has {@code Object} as a superclass. All objects,* including arrays, implement the methods of this class.翻译过来就是说:Object类是(java里)类层次结构的跟。任何一个类都有一个Object超类,所有

2020-08-10 08:23:11 149

原创 skywalking教程之apm的选型(一)

先来说一说apm(application performance Management ),是用来监控系统的,他可以帮助我们分析当前系统 的状态,可以帮助我们快速排查问题,找出系统的性能瓶颈。所以说项目中引入apm是非常有必要的。 再来看一下市面上开源的apm,主要有pinpoint(韩国人开发),zipkin,cat(美团开源),skywalking(国人开源,目前已经加入apache)。...

2020-08-02 11:44:26 1134

原创 spring stomp+rabbitmq实现点对点消息推送

当前的项目需要用到消息推送这个功能,领导拍板说用stomp+rabbitmq。但是我百度了一下,没找到特别好的博客,特此写篇博客。 先来说说stomp

2020-07-11 14:42:12 1568 3

原创 idea2020导入spring5.1的源码

1、先来说下导入环境和工具: java版本:1.8 idea: idea2020 gradle:gradle5.32、gradle的安装 idea导入spring的源码时,每次构建的时候都会去下载gradle,所以如果我们能提前下好gradle可以提高构建速度。 gradle下载地址:https://services.gradle.org/distributions/ 上面放的地址可以找到gradle的所有版本。(注意:构建spring源码是有版本要求的,.

2020-06-20 12:42:44 1286

原创 volatile和synchronized的理解

在java多线程中用的比较多的就是volatile和synchronized了,先来看看volatile。volatile是用来修饰变量的,volatile的作用:1、可见性 2、禁止指令重排可见性是指当一个线程修改了变量时,其他的线程也能够看到...

2019-12-24 14:36:00 125

原创 进程和线程的区别

来说说进程和线程。进程:1、具有一定独立功能的程序关于某个数据集合上的一次运行活动、 2、进程是操作系统进行资源分配和调度的基本单位。 3、进程间的通信可以通过共享虚拟内存,ipc。 4、多进程并发时,操作系统保证多进程并发是安全的。线程:1、线程是进程的一个实体,每个进程最少有一个线程 2、线...

2019-11-13 17:36:03 78

原创 mysql的索引

Mysql的索引什么是索引一、Innodb支持的索引b+树索引局部性原理聚集索引和辅助索引二、Hash索引三、全文索引新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章...

2019-11-09 10:24:18 136

原创 spring data jpa和数据库之间的类型转换

在真实的生产环境中,我们可能会把某些对象转换成json数据存到数据库,等到需要的时候再把这些数据取出来。1、我们可以在数据库中添加一个class字段,存放该类的全路径,取出来的时候把json数据和class字段取出来,然后可以使用 fastjson等三方工具转成对象。2、上面这种方式是通用的,不过在jpa中可以简化这个操作 。使用到的对象就是AttributeConve...

2019-10-18 11:17:19 1966

原创 spring data jpa的自定义查询,修改以及分页

接着上篇博客。上篇博客简单介绍了jpa的基本使用,以及如何根据定义方法名让jpa自动生成sql语句,这次来看看如何自定义sql语句。 jpa自定义sql语句是在方法上加上@Query注解,这和mybatis使用注解很像,不过mybatis有@Select,@Delete,@Update,@Insert 四种注解,而jpa只需要@Query。先来看一个简单的例子: ...

2019-10-17 16:41:24 1245

原创 spring data jpa的基本使用

先来介绍一下jpa,spring data jpa是对Hibernate的一种封装,方便我们去使用Hibernate,spring全家桶中类似的有spring-data-redis,spring-data-mongodb,mybaits-spring.从这些产品可以看出,spring基本上对市场上的每一种数据库有进行了封装。 在使用持久化操作的时候,我们一般会使用工厂方法来新建对象操作数...

2019-10-17 11:50:05 348

原创 Java8中流的题目

本文列举了一些Java8的基本题目,比较简单,并给出了我个人的解法,给大家做个借鉴。1.Java8的方法引用有哪几种2. 流操作如何实现聚合?给出2种方法3. 流操作如何求最大值?给出2种方法4.最小值?2种方法5.流转换成map6.list根据字段分组7.说说你对Optional的理解8.流操作计算集合的数量9.流操作取集合第一个对象10.流操作根据对象的字段排序。写...

2019-10-17 11:14:22 176

原创 Java8的流

今天学习了Java8的流,做个总结。 在我的理解中,Java8引入了函数式编程,所以Java8里有多了许多关于函数式编程的内容。流就类似于一个迭代器,用于高效操作集合的迭代器。在流中,Java8以函数式编程的方式内置了许多强大的api,让我们在处理集合时更加的方便,但是这些操作基于函数式编程的思想,所以对于我们Java程序员来讲需要一个思想的转换。 首先,对于那些集合类...

2019-10-16 14:29:10 118

原创 git的基本使用

git是一款强大的版本控制工具,本文主要记录git的基本使用。1、在Windows上安装git 进入git官网https://git-scm.com/downloads,选择最新版本下载即可。下载完成后是一个exe可执行文件,点击运行,之后就一直下一步即可。安装完成后,会自动的把git的安装目录添加到环境变量。2、git的基本命令 这里我把git的命令做一个总结: ...

2019-10-15 13:43:06 77

空空如也

空空如也

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

TA关注的人

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