自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 项目添加Swagger-步骤

3.3.0需要加个配置类,否则启动会报异常。4.yml配置文件需要加2个配置。

2024-07-16 15:45:01 147

原创 mysql事务隔离级别及测试

一.数据库事务何为数据库事务( transaction)?事务是指访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独...

2021-08-19 13:23:15 432 1

转载 数据权限管理中心 - 基于mybatis拦截器实现

https://my.oschina.net/gmarshal/blog/1797026https://gitee.com/gmarshal/foruo-sc-permission

2019-07-27 02:33:52 392

原创 JVM学习笔记10:锁优化

一.自旋锁与自适应自旋自旋锁:如果线程可以很快获得锁,那么可以不在OS层挂起线程,而是让线程做几个忙循环,这就是自旋。 自适应自旋:自旋的时间不再固定,而是由前一次在同一个锁上的自旋时间和锁的拥有者状态来决定。 JDK1.7以上已经是内置实现,默认开启。 如果锁被占用时间很短,自旋成功,那么能节省线程挂起、以及切换时间,从而提升系统性能如果锁被占用时间很长,自旋失败,会白白耗费处理器资...

2018-12-07 00:10:34 233

原创 JVM学习笔记9:Java内存模型JMM

一 概述    Java内存模型定义了程序中各个实例变量的访问规则,即在虚拟机中将变了存储到内存和从内存中取出变量这样的底层细节。它主要是来操作实例变量、静态字段及构成数组对象的元素。因为局部变量及方法参数是线程私有的不会被共享,所以JMM不会影响局部变量及方法。     从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,...

2018-12-05 23:51:24 300

原创 JVM学习笔记8:垃圾收集(垃圾收集算法及垃圾收集器)

一 垃圾收集算法 标记清除法(Mark-Sweep)         算法分成标记和清除两个阶段,先标记出要回收的对象,然后统一回收这些对象。形如:优点:     简单缺点是:     效率不高,标记和清除的效率都不高    标记清除后会产生大量不连续的内存碎片,从而导致在分配大对象时触发GC 2 复制算法(Copying)       把内存分成两块完全相同的区域,...

2018-11-27 20:26:53 369

原创 JVM学习笔记7:垃圾收集(对象的存活及引用)

一 概述    简单的说内存中已经不再被使用到对象(非存活对象)或方法所占用的的空间就是垃圾。将这部分空间释放,即为垃圾回收。    由于PC寄存器(程序计数器),java栈,本地方法栈 这3个区域都是随线程生线程灭的,因此这几个区域的内存分配和回收都具备确定性,当方法或线程结束时内存自然就回收了。   java堆和方法区在一个接口中的多个实现类所需要的内存可能不一样,一个方法中多个分...

2018-11-21 19:36:38 186

原创 JVM学习笔记6:字节码执行引擎

一 概述        JVM的字节码执行引擎,功能基本就是输入字节码文件,然后对字节码进行解析并处理,最后输出执行的结果。其实现方式可能有通过解释器直接解释执行,或者是通过即时编译器产生本地代码,也就是编译执行,当然也可能两者皆有。1:解释运行       以解释方式运行字节码解释执行的意思是:读一句执行一句2:编译运行(JIT)      将字节码编译成机器码直接执行机器码运行...

2018-11-20 19:41:18 188

原创 JVM学习笔记5:内存分配

一:jvm的内存简化架构 二:运行时数据区    Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程的开始和结束而创建和销毁。其分为pc寄存器(程序计数器)、java虚拟机栈、Java堆、方法区、运行常量池、本地方法栈 PC(Program C...

2018-11-15 18:03:57 152

原创 JVM学习笔记4:类的加载、连接、初始化。

一:加载、连接、初始化加载:查找并加载类文件的二进制数据       类的加载要完成:       (1)通过类的全限定名来获取该类的二进制字节流       (2)把二进制字节流转化为方法区的运行时数据结构          (3)在堆上创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。       类加载的最终产物就是在堆中的class对象;Class对...

2018-11-13 22:53:39 254

原创 JVM学习笔记3:字节码操纵框架ASM

一:ASM概述         ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为,ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。目前许多框架如cglib、Hibernate、Spring都直接或间接地使用ASM操作字节码。二:AS...

2018-11-12 23:38:54 1235

原创 JVM学习笔记2:Class文件格式

一:class文件概述     Class文件是JVM的输入,Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台无关、技术无关的基础。      1:Class文件是一组以8字节为单位的字节流,各个数据项目按顺序紧凑排列      2:对于占用空间大于8字节的数据项,按照高位在前的方式分割成多个8字节进行存储      3:Class文件格式里面只有两种类型...

2018-11-08 20:04:51 196

原创 JVM学习笔记1:字节码指令集

一.字节码指令集简介:Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(operand)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。如果忽略异常处理,那么java虚拟机的解释器通过下面这段伪代码的循环即可有效的工作。do { 自动计算pc寄存器以及从pc寄存器的位置取出操作码; ...

2018-11-05 15:55:25 298

原创 Keepalived学习笔记二:keepalived实现nginx的高可用

 本文所需环境 tomcat  + nginx + keepalived 。关于tomcat和nginx请自行学习。一.主节点:修改keepalived.conf 的内容(keepalived的配置文件默认放在/etc/keeplived下,安装的时候启动不了,后来手动创建了keeplived和keepalived.conf文件,才启动成功。)内容如下:global_defs { ...

2018-10-07 17:59:34 2840 2

原创 Keepalived学习笔记一:Keepalived的安装和启动

n 下载并安装IPVSKeepalived需要IPVS,首先要确保安装了IPVS(IP虚拟服务器,IPVirtual Server,是一种提供负载平衡功能的技术)。1:检查是否安装了IPVS:在任意路经下执行ipvsadm命令2:去http://www.linuxvirtualserver.org/software/ipvs.html下载相应的包,注意要跟你的linux内核版本匹配。察看...

2018-10-05 19:38:32 14211

原创 idea git回退到某个历史版本

1.找到要回退的版本号(右击项目--> Git --> Show History -->选中要回退的版本-->Copy Revision Number)2.打开idea的Terminal 输入命令git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96  (后面为版本号)3. 把修改推到远程服务器gi...

2018-09-20 18:11:21 34626 3

原创 redis学习笔记之十七:Redis的Java客户端

n Redis官方推荐的Java客户端是jedis网址:https://github.com/xetorthio/jedisn 构建开发环境,在Maven中添加<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><versio...

2018-09-05 11:12:18 151

原创 redis学习笔记之十六:Redis和Spring集成

n 构建开发环境,在Maven中添加spring-data-redis支持的jedis版本目前只是到了2.7.0,所以要修改一下前面的配置,然后添加:<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis&l...

2018-09-02 15:51:51 185

转载 redis中的事务、lua脚本和管道的使用场景

redis中的事务并不像mysql中那么完美,只是简单的保证了原子性。redis中提供了四个命令来实现事务,MULTI:类似于mysql中的BEGIN;EXEC:类似于COMMIT;DISCARD类似于ROLLBACK;WATCH则是用于来实现mysql中类似锁的功能。具体的使用方法非常简单,例如:127.0.0.1:6379> multiOK127.0.0.1:6379> ...

2018-09-02 14:26:29 243

原创 redis bitmap 位操作。

Redis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型。redis 通过对bitmap 来实现对二进制bit位的操作,用来记录一些状态信息。其中一个字节占8个bit位。用bit位中的二进制的0 和1 各表示一个状态,以达到记录某些状态信息。因为所有的状态都是记录基于二进制的bit位。所以大大的节省了这些状...

2018-08-31 16:49:03 3519 3

转载 redis setnx 实现分布式锁

import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import org.slf4j.Logger;import org.slf4j.LoggerFactory; /** * @ClassName: DistributedLockHandler.java * @Description: 分布式...

2018-08-30 12:32:20 902

原创 redis学习笔记之十五:Redis的优化

n 使用管道(Pipeline)Redis的底层通讯协议对管道提供了支持,通过管道,可以一次性发送多条命令给Redis,在执行完后一次性将结果取回。使用管道,可以减少客户端和Redis的通信次数,降低网络延时,从而提供性能。Redis的管道功能在命令行中没有,但Redis是支持管道的,而且在各个语言版的client中都有相应的实现。n 精简键名和键值n 合理设计存储的数据结构和数据关...

2018-08-23 22:53:44 367

原创 redis学习笔记之十四:Redis的管理

n 常用的管理命令运行期间修改redis配置(config set)1:slowlog get:获取慢日志,可以通过配置文件的slowlog-log-slower-than来设置时间限制,默认是10000微秒,slowlog-max-len来限制记录条数。返回的记录包含四个部分:(1)日志的id(2)该命令执行的unix时间(3)该命令消耗的时间,单位微秒(4)命令和参数2...

2018-08-23 22:22:18 115

原创 redis学习笔记之十三:Lua脚本开发

n Lua介绍Lua是一个高效、简洁、轻量级、可扩展的脚本语言,可以很方便的嵌入到其它语言中使用,Redis从2.6版支持Lua。n 使用脚本的好处1:减少网络开销2:原子操作:Redis会把脚本当作一个整体来执行,中间不会插入其它命令3:复用功能n Lua的使用步骤1:创建一个.lua结尾的文本文件 例如(test.lua)2:redis-cli --eval test.l...

2018-08-19 08:44:15 4051 1

原创 JMeter压测步骤记录

1.创建线程组。2.给线程组创建请求(这里是http请求)。3.创建.dat文件内容如图; 4.配置CSV Data Set Config5.配置CSV Date Set Config6.修改请求中的参数。(需要特别注意接口参数类型。不然调不通)7.添加查看结果树查看结果8添加响应断言 和聚合报告。 10.完成的流程。...

2018-08-17 18:11:39 1410

原创 redis学习笔记之十二:使用redis-trib.rb来操作集群

n 使用redis-trib.rb来操作集群redis-trib.rb是Redis源码中提供的一个辅助工具,可以非常方便的来操作集群,它是用ruby写的,因此需要在服务器上安装相应环境1:安装Ruby(1)下载ruby安装包,地址https://www.ruby-lang.org/en/downloads/(2)解压ruby(3)进入解压的的目录,然后分别configure、make...

2018-08-09 19:28:53 1185

原创 redis学习笔记之十一:集群的故障判断及故障恢复

n 故障判定1:集群中每个节点都会定期向其他节点发出ping命令,如果没有收到回复,就认为该节点为疑似下线,然后在集群中传播该信息2:当集群中的某个节点,收到半数以上认为某节点已下线的信息,就会真的标记该节点为已下线,并在集群中传播该信息3:如果已下线的节点是master节点,那就意味着一部分插槽无法写入了4:如果集群任意master挂掉,且当前master没有slave,集群进入fa...

2018-08-08 17:29:47 2070

原创 redis学习笔记之十:插槽及分片

n 什么是插槽插槽是Redis对Key进行分片的单元。在Redis的集群实现中,内置了数据自动分片机制,集群内部会将所有的key映射到16384个插槽中,集群中的每个数据库实例负责其中部分的插槽的读写。n 键与插槽的关系Redis会将key的有效部分,使用CRC16算法计算出散列值,然后对16384取余数,从而把key分配到插槽中。键名的有效部分规则是:1:如果键名包含{},那么有效部...

2018-08-08 17:28:05 2754

原创 redis学习笔记之九:Redis的集群

n 复制的问题由于复制中,每个数据库都是拥有完整的数据,因此复制的总数据存储量,受限于内存最小的数据库节点,如果数据量过大,复制就无能为力了。n 分片分片(Partitioning)就是将你的数据拆分到多个Redis实例的过程,这样每个Redis实例将只包含完整数据的一部分。常见的分片方式:1:按照范围分片2:哈希分片,比如一致性哈希n 常见的分片实现:1:在客户端进行分...

2018-08-02 23:24:38 205

原创 redis学习笔记之八:Redis数据复制(主从)

n 复制Redis支持复制的功能,以实现当一台服务器的数据更新后,自动将新的数据同步到其它数据库。Redis复制实现中,把数据库分为主数据库master和从数据库slave,主数据库可以进行读写操作,从数据库一般是只读的,当主数据库数据变化的时候,会自动同步给从数据库。n 复制带来的好处1:可以实现读写分离2:利于在主数据库崩溃时的数据恢复n 复制的配置主数据库不做配置;从...

2018-08-02 18:14:13 252

原创 redis学习笔记之七:Redis发布订阅

n 发布订阅模式的操作命令1:publish:发布消息,格式是publish channel 消息2:subscribe:订阅频道,格式是subscribe channel,可以是多个channel3:psubscribe:订阅频道,格式是psubscribe channel,支持glob风格的通配符3:unsubscribe:取消订阅,格式是unsubscribe channel,不指定...

2018-08-02 16:53:35 189

原创 redis学习笔记之六:Redis的事务

n 概述Redis中的事务就是一组命令的集合,被依次顺序的执行,当然你可以放弃事务的执行,那么所有事务里面的命令都不会执行。关于Redis的事务有几点说明:1:Redis的事务仅仅是保证事务里的操作会被连续独占的执行,因为是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的2:Redis的事务没有隔离级别的概念,因为事务提交前任何指令都不会被实际执行,也就不存...

2018-08-01 22:12:55 132

原创 redis学习笔记之五:Redis的持久化

n Redis持久化概述Redis持久化分成两种方式:RDB(Redis DataBase)和AOF(Append Only File)1:RDB是在不同的时间点,将Redis某一时刻的数据生成快照并存储到磁盘上2:AOF是只允许追加不允许改写的文件,是将Redis执行过的所有写指令记录下来,在下次Redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了3:RD...

2018-08-01 22:10:39 159

原创 redis学习笔记之四:Redis的配置详解

n Config命令可以在redis-cli里面使用config命令来获取或者设置Redis配置,可以不用重新启动Redis。命令是config get/set 配置名。注意并不是所有的配置参数都可以通过Config来在运行期修改,比如:daemonize、pidfile、port、database、dir、slaveof、rename-command等n redis.conf的配置介绍1...

2018-08-01 22:00:57 243

原创 redis学习笔记之三:Redis的基本操作

n 对Keys的操作命令1:Keys:获得符合规则的键名列表格式是keys pattern,pattern支持glob风格通配符格式:(1)? 匹配一个字符(2)* 匹配任意个字符(3)[] 匹配中括号内的任一字符,可以用-来表示一个范围(4)\x 匹配字符x,用于转义符号2:exists:判断键值是否存在,格式是exists key3:del:删除key,格式是del key。...

2018-08-01 21:48:56 213

原创 redis学习笔记之二:Redis的数据类型

n Redis的keyRedis的key是字符串类型,如果中间有空格或者转义字符等,要用“”。1:命名建议:对象类型:对象ID:对象属性2:多个单词之间以“.”来分隔3:Key的命名,应该在可读的情况下,尽量简短n Redis的Value支持五种类型1:String:字符串,可以存储String、Integer、Float型的数据,甚至是二进制数据,一个字符串最大容量是512M2:...

2018-08-01 21:39:55 159

原创 redis学习笔记之一:安装redis

1:去官网下载最新的版本:http://redis.io/download ,这里用的是3.0.22:解压后,进入解压好的文件夹3:redis的安装非常简单,因为已经有现成的Makefile文件,所以直接先make,然后make install就可以了4:安装的位置在/usr/local/bin ,有:(1)redis-benchmark:性能测试工具,测试Redis在你的系统及配置下的...

2018-08-01 21:35:59 151

原创 Mybatis mysql保存之后返回自增长的id

  <insert id="insertSubtitleLinks" useGeneratedKeys="true" parameterType="java.util.List">      <selectKey resultType="long" keyProperty="id" order="AFTER">          SE

2018-04-30 11:41:04 1077

原创 IDEA Git Cherry-pick(摘樱桃) 实现分支的部分提交合并到Master

   git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。             最近同时开发了很多个功能并提交到了dev分支,但是上线的时候有些功能依赖其他的团队的服务,其他团队上不了线,导致自己的提交到dev分支的某些功能没法上线。现在分支上有四五个功能,但是现在只要合并dev中的中的一两个功能到master。如果直接使用Merge-Changes...

2018-04-19 10:32:01 46909 6

原创 HttpClient重试机制 --- 自定义HttpRequestRetryHandler(自定义 重试次数以及重试的时候业务处理)

            通过http做接口调用请求的时候,常常会因为网络抖动或者其他未知原因,造成接口在某个瞬间访问不了。此时需要增加重试机制。刚出来的时候掉接口需要三次重试,由于对httpclient不是很了解。只能在for循环里面对异常经常处理并重新调接口。后来做http服务端的时候,有次debug偶然发现客户端调一次请求,服务端会跳多次debug,后来查阅资料发现httpclient有重试机...

2018-04-18 21:12:39 16299 4

空空如也

空空如也

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

TA关注的人

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