自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

smile2coder的博客

https://smile2coder.github.io

  • 博客(24)
  • 收藏
  • 关注

原创 MySQL数据库MVCC原理浅析

MVCC概念阿里数据库内核’2017/12’月报中对MVCC的解释是:指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。在内部实现中,与Postgres在数据行上实现多版本不同,InnoDB是在undolog中实现的,通过undolog可以找回数据的历史版本。找回的数据历史版本可以提供给用户读(按照隔离级别的定义,有些读请求只能看到比较老的数据版本),也可以在回滚

2021-01-05 14:47:17 188

原创 java.lang.NoClassDefFoundError: redis/clients/jedis/JedisPoolConfig

springboot版本:2.3.0.RELEASEspring-boot-starter-data-redis连接redis,启动项目后报错pom.xml<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE

2020-06-08 11:00:05 8148

原创 生产者消费者的两种实现

synchronized实现/** * @author ZxT * @date 2020-03-10 * @desc */public class Costumer implements Runnable { @Override public void run() { while (true) { synchronized (G...

2020-04-03 18:17:12 124

原创 SpringBoot-Redis实现分布式锁的两种方式,支持续约

Redis事务实现package com.example.redis.command;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereo...

2020-04-03 17:52:42 903

原创 SpringBoot应用中利用AOP实现操作日志记录

引出问题在web应用开发中,记录用户的操作日志是必不可少的,下面介绍一下利用AOP实现操作日志记录。本文使用了Lombok,不懂的同学建议了解一下引入依赖首先构建一个SpringBoot项目,引入依赖<dependencies> <dependency> <groupId>org.springframework....

2020-01-20 17:44:53 1358 1

原创 Lombok-你的开发利器

个人博客在这里本文的代码在这里希望收到一个star,感谢支持前提Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添彩。 永远不要再写另一个getter或equals方法,带有一个注释的您的类有一个功能全面的生成器,自动化您的日志记录变量等等。但是Lombok在使用过程中也有许多值得注意的点,如果不清楚的话,可能会给代码调试带来意想不到的后果!!!...

2020-01-16 01:02:30 177

转载 代码技巧之道

原文链接: https://www.zhihu.com/question/37760140/answer/830574208zhihu.com/question/37760…zhihu.com/question/37760…前言:感谢大家观看本文,希望大家都能有所收获开发工具不知道有多少”老”程序员还在使用 Eclipse,这些程序员们要不就是因循守旧,要不就是根本就不知道其他好...

2019-10-23 16:39:18 197

原创 Java虚拟机加载总结

个人站点,请多关注https://kooper.top/2019/05/16/java虚拟机加载总结/知识点总结,持续更新当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类类的生命周期包括:加载->验证->准备->解析->初始化->使用->卸载类的加载阶段(双亲委派机制)通过一个类的全...

2019-05-17 18:51:19 84

原创 vim常用指令

移动光标[+] : 光标移动到非空格符的下一列[-] : 光标移动到非空格符的上一列[0或者Home键] : 移动到这一行的最前面字符处[$或者End键] : 移动到这一行的最后面字符处[G] : 移动到这个档案的最后一行[gg] : 移动到这个档案的第一行搜索[/word] : 向光标之下寻找一个名称为 word 的字符串[?word] : 向光标之上寻找一个字符串名称...

2019-02-01 17:35:36 119

原创 Linux文件权限

文件权限首先看一下Linux文件的属性,以root身份登录Linux服务器,执行“ls -al”命令。一个Linux文件主要包括7个属性- 类型和权限dr-xr-x---第一个字符代表这个文件的类型-:文件 d:目录 l:连结档 ...接下来的字符中,以三个为一组,且均为[rwx]的三个参数的组合。其中...

2019-02-01 16:26:56 264

原创 你们要的《一曲相思》附下载

2019-02-01 14:19:39 9406

原创 内存分配与回收策略

读《深入理解Java虚拟机》对象的内存分配,往大方向上讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下也可能会直接分配在老年代,分配的规则不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中的内存相关的参数的设置。本文是使用Serial/Serial Old收集器的内存分配和回收的策略。Min...

2019-01-22 01:13:19 104

原创 垃圾收集算法

读《深入理解Java虚拟机》1. 标记-清除算法算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。优点:实现简单缺点:效率低,标记和清除的效率都不高;产生大量内存碎片。2. 复制算法为了解决效率问题,复制算法出现了。它将可用内存容量划分为大小相等的两块,每次只使用其中的一块。当这一块内存用完了,就将还存活的对象复制到另外一块上面,然后将垃圾...

2019-01-18 19:04:57 103

原创 对象已死吗

读《深入理解Java虚拟机》当虚拟机中需要发生GC时,垃圾收集器怎样判断对象是否已死?1. 引用计数法给对象添加一个引用计数器,当有一个地方引用它时,引用计数器就加1。当引用失效时,计数器就减1。引用计数法实现简单,但是主流的java虚拟机里面没有选用引用计数法来管理内存,主要原因是它无法解决对象之间相互引用的问题。2. 可达性分析法通过一系列的“GC Roots”的对象作为起始点,从...

2019-01-18 16:44:56 207

原创 springboot-cache-mybatis

当程序中数据库访问压力特别大时,我们会考虑使用缓存来减少对数据库的访问次数。在我们的项目中,springboot+Mybatis是一个比较常见的组合。Mybatis有一级缓存和二级缓存。一级缓存:1. 创建一个springboot项目2. entity层和mapper层代码略3. 在yml配置日志打印级别,打印出数据库查询语句```logging: level: top:...

2019-01-18 00:28:49 329

转载 springboot-Jackson

在json的解析等处理方面,我更喜欢用阿里巴巴的Fastjson。Jackson也有许多实用的功能。今天整理几个比较常用的jackson实用功能:示例代码@RequestMapping("getuser")@ResponseBodypublic User getUser() { User user = new User(); user.setUserName("mrbird...

2019-01-17 15:38:52 1720

原创 对象的访问定位

读《深入理解Java虚拟机》栈中的引用类型如何定位到堆中的具体对象呢?这边有两种方式:1. 直接指针引用类型中存储的就是对象,对象中存放了类型数据的地址优点:只需要一次定位,速度快2. 句柄访问堆中划分出来一块内存作为句柄池,引用类型中存储的就是对象的句柄地址。句柄中包含了对象的实例数据和类型数据各自的具体地址信息优点:引用类型中存放的是稳定的句柄地址,在对象被移动,只会改变句柄中的...

2019-01-17 01:10:49 146

原创 对象的内存布局

读《深入理解Java虚拟机》对象在内存中分为3块区域:对象头,实例数据,对齐填充。1.对象头对象头包括两部分,第一部分用于存储对象自身的运行时数据,如哈希值,GC分代年龄,锁状态标志等;第二部分是指针类型,对象通过这个指针来确定这个对象是哪个类的实例。如果对象是一个Java数组,那在对象头中还必须有一块记录数组长度的数据。2. 实例数据实例数据是存放对象真正的有效数据。无论是从父类继承,...

2019-01-17 01:00:10 129

原创 对象的创建

读《深入理解Java虚拟机》Java是一门面向对象的编程语言,在Java程序运行过程中每时每刻都有对象被创建出来。在语言层面上,创建对象只是一个new关键字,在虚拟机中,对象(普通的java对象,不包括数组和Class对象)的创建是怎样的?这里简单的概述一下。1. 加载当虚拟机遇到一条new指令时,首先去建仓这个指令的参数是否能在常量池中定位到一个类的引用,并检查这个符合的引用的类是否已被加...

2019-01-17 00:47:30 146

原创 Java内存区域

最近在读《深入理解java虚拟机》第二版,在这边记录一下所见所感本书以JDK1.7为例Java与C++之间有一堵有内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。对于Java来说,在虚拟机自动内存管理机制的帮助下,不需要再关心内存的分配和释放,也不容易出现内存泄漏和内存溢出。那我们为什么还要学习虚拟机呢?首先我们要了解,不容易出现,并不是不可能出现。一旦...

2019-01-15 01:09:12 84

原创 springboot-aop实现日志记录

首先创建一个springboot项目,引入必要的依赖 &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-a...

2019-01-14 01:00:11 230

原创 Mybatis的注解开发

Mybatis的注解开发

2019-01-12 14:35:13 174

原创 org.apache.ibatis.binding.BindingException

记录Mybatis的xml中无法直接用对象参数的属性今天使用mybatis的过程中,在dao有一个查询方法List&amp;amp;lt;User&amp;amp;gt; selectByNickname(@Param(&amp;quot;user&amp;quot;) User user);xml中的配置文件&amp;amp;lt;select id=&amp;quot;selectByNickname&amp;quot; resultMa

2019-01-12 14:00:56 144

原创 Mybatis-动态SQL

动态SQL是mybatis的强大特性之一,主要包括以下几点ifchoose(when,otherwise)trim(where,set)foreachbind前置条件项目是springboot搭建开启mybatis的驼峰等配置mybatis: mapper-locations: classpath:mapper/*Mapper.xml type-aliases-...

2019-01-12 12:20:51 103

空空如也

空空如也

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

TA关注的人

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