<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u010800970的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010800970</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010800970]]></copyright><item><title><![CDATA[项目添加Swagger-步骤]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/140468249</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/140468249</guid><author>u010800970</author><pubDate>Tue, 16 Jul 2024 15:45:01 +0800</pubDate><description><![CDATA[3.3.0需要加个配置类，否则启动会报异常。4.yml配置文件需要加2个配置。]]></description><category></category></item><item><title><![CDATA[mysql事务隔离级别及测试]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/119774636</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/119774636</guid><author>u010800970</author><pubDate>Thu, 19 Aug 2021 13:23:15 +0800</pubDate><description><![CDATA[一.数据库事务

何为数据库事务( transaction)？事务是指访问并可能操作各种数据项的一个数据库操作序列，这些操作要么全部执行,要么全部不执行，是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

数据库管理系统（DBMS）在写入或更新资料的过程中，为保证事务（transaction）是正确可靠的，所必须具备的四个特性：原子性（atomicity，或称不可分割性）、一致性（consistency）、隔离性（isolation，又称独...]]></description><category></category></item><item><title><![CDATA[数据权限管理中心 - 基于mybatis拦截器实现]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/97454045</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/97454045</guid><author>u010800970</author><pubDate>Sat, 27 Jul 2019 02:33:52 +0800</pubDate><description><![CDATA[https://my.oschina.net/gmarshal/blog/1797026



https://gitee.com/gmarshal/foruo-sc-permission
]]></description><category></category></item><item><title><![CDATA[JVM学习笔记10:锁优化]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84855707</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84855707</guid><author>u010800970</author><pubDate>Fri, 07 Dec 2018 00:10:34 +0800</pubDate><description><![CDATA[一.自旋锁与自适应自旋

自旋锁：如果线程可以很快获得锁，那么可以不在OS层挂起线程，而是让线程做几个忙循环，这就是自旋。
	自适应自旋：自旋的时间不再固定，而是由前一次在同一个锁上的自旋时间和锁的拥有者状态来决定。
	JDK1.7以上已经是内置实现，默认开启。
	如果锁被占用时间很短，自旋成功，那么能节省线程挂起、以及切换时间，从而提升系统性能
如果锁被占用时间很长，自旋失败，会白白耗费处理器资...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记9:Java内存模型JMM]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84639527</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84639527</guid><author>u010800970</author><pubDate>Wed, 05 Dec 2018 23:51:24 +0800</pubDate><description><![CDATA[一 概述

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

     从抽象的角度来看，JMM定义了线程和主内存之间的抽象关系：线程之间的共享变量存储在主内存（main memory）中，...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记8:垃圾收集（垃圾收集算法及垃圾收集器）]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84320113</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84320113</guid><author>u010800970</author><pubDate>Tue, 27 Nov 2018 20:26:53 +0800</pubDate><description><![CDATA[一 垃圾收集算法


	标记清除法（Mark-Sweep）
	
        算法分成标记和清除两个阶段，先标记出要回收的对象，然后统一回收这些对象。形如：
优点：
     简单
缺点是：
     效率不高，标记和清除的效率都不高
    标记清除后会产生大量不连续的内存碎片，从而导致在分配大对象时触发GC
 

2 复制算法（Copying）

       把内存分成两块完全相同的区域，...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记7:垃圾收集（对象的存活及引用）]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84308685</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84308685</guid><author>u010800970</author><pubDate>Wed, 21 Nov 2018 19:36:38 +0800</pubDate><description><![CDATA[一 概述

    简单的说内存中已经不再被使用到对象(非存活对象)或方法所占用的的空间就是垃圾。将这部分空间释放，即为垃圾回收。

    由于PC寄存器（程序计数器），java栈，本地方法栈 这3个区域都是随线程生线程灭的，因此这几个区域的内存分配和回收都具备确定性，当方法或线程结束时内存自然就回收了。

   java堆和方法区在一个接口中的多个实现类所需要的内存可能不一样，一个方法中多个分...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记6:字节码执行引擎]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84254381</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84254381</guid><author>u010800970</author><pubDate>Tue, 20 Nov 2018 19:41:18 +0800</pubDate><description><![CDATA[一 概述

        JVM的字节码执行引擎，功能基本就是输入字节码文件，然后对字节码进行解析并处
理，最后输出执行的结果。其实现方式可能有通过解释器直接解释执行，或者是通过即时编译器产生本地代
码，也就是编译执行，当然也可能两者皆有。
1：解释运行
       以解释方式运行字节码解释执行的意思是：读一句执行一句
2：编译运行（JIT）
      将字节码编译成机器码直接执行机器码运行...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记5:内存分配]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84106642</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84106642</guid><author>u010800970</author><pubDate>Thu, 15 Nov 2018 18:03:57 +0800</pubDate><description><![CDATA[一：jvm的内存简化架构



 

二：运行时数据区

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

PC（Program C...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记4:类的加载、连接、初始化。]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/84026048</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/84026048</guid><author>u010800970</author><pubDate>Tue, 13 Nov 2018 22:53:39 +0800</pubDate><description><![CDATA[一：加载、连接、初始化

加载：查找并加载类文件的二进制数据
	      类的加载要完成：
	      （1）通过类的全限定名来获取该类的二进制字节流
	      （2）把二进制字节流转化为方法区的运行时数据结构   
	      （3）在堆上创建一个java.lang.Class对象，用来封装类在方法区内的数据结构。
	      类加载的最终产物就是在堆中的class对象；Class对...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记3:字节码操纵框架ASM]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/83994485</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/83994485</guid><author>u010800970</author><pubDate>Mon, 12 Nov 2018 23:38:54 +0800</pubDate><description><![CDATA[一：ASM概述

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


二：AS...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记2:Class文件格式]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/83753905</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/83753905</guid><author>u010800970</author><pubDate>Thu, 08 Nov 2018 20:04:51 +0800</pubDate><description><![CDATA[一：class文件概述

     Class文件是JVM的输入，Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台
无关、技术无关的基础。
      1：Class文件是一组以8字节为单位的字节流，各个数据项目按顺序紧凑排列
      2：对于占用空间大于8字节的数据项，按照高位在前的方式分割成多个8字节进行存储
      3：Class文件格式里面只有两种类型...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记1:字节码指令集]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/83748379</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/83748379</guid><author>u010800970</author><pubDate>Mon, 05 Nov 2018 15:55:25 +0800</pubDate><description><![CDATA[一.字节码指令集简介：

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码（opcode）以及跟随其后的零至多个代表此操作所需参数的操作数（operand）所构成。虚拟机中许多指令并不包含操作数，只有一个操作码。

如果忽略异常处理，那么java虚拟机的解释器通过下面这段伪代码的循环即可有效的工作。


do {
    自动计算pc寄存器以及从pc寄存器的位置取出操作码;
 ...]]></description><category></category></item><item><title><![CDATA[Keepalived学习笔记二:keepalived实现nginx的高可用]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82959165</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82959165</guid><author>u010800970</author><pubDate>Sun, 07 Oct 2018 17:59:34 +0800</pubDate><description><![CDATA[ 

本文所需环境 tomcat  + nginx + keepalived 。关于tomcat和nginx请自行学习。

一.主节点:修改keepalived.conf 的内容（keepalived的配置文件默认放在/etc/keeplived下，安装的时候启动不了，后来手动创建了keeplived和keepalived.conf文件，才启动成功。）内容如下：


global_defs {
 ...]]></description><category></category></item><item><title><![CDATA[Keepalived学习笔记一:Keepalived的安装和启动]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82946394</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82946394</guid><author>u010800970</author><pubDate>Fri, 05 Oct 2018 19:38:32 +0800</pubDate><description><![CDATA[n 下载并安装IPVS
Keepalived需要IPVS，首先要确保安装了IPVS（IP虚拟服务器，IP
Virtual Server，是一种提供负载平衡功能的技术）。
1：检查是否安装了IPVS：在任意路经下执行ipvsadm命令
2：去http://www.linuxvirtualserver.org/software/ipvs.html下载相应的包，注
意要跟你的linux内核版本匹配。察看...]]></description><category></category></item><item><title><![CDATA[idea git回退到某个历史版本]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82791447</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82791447</guid><author>u010800970</author><pubDate>Thu, 20 Sep 2018 18:11:21 +0800</pubDate><description><![CDATA[1.找到要回退的版本号(右击项目--&amp;gt; Git --&amp;gt; Show History --&amp;gt;选中要回退的版本--&amp;gt;Copy Revision Number)

2.打开idea的Terminal 输入命令

git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96  (后面为版本号)

3. 把修改推到远程服务器

gi...]]></description><category></category></item><item><title><![CDATA[redis学习笔记之十七：Redis的Java客户端]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82418907</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82418907</guid><author>u010800970</author><pubDate>Wed, 05 Sep 2018 11:12:18 +0800</pubDate><description><![CDATA[n Redis官方推荐的Java客户端是jedis
网址：https://github.com/xetorthio/jedis
n 构建开发环境，在Maven中添加
&amp;lt;dependency&amp;gt;
&amp;lt;groupId&amp;gt;redis.clients&amp;lt;/groupId&amp;gt;
&amp;lt;artifactId&amp;gt;jedis&amp;lt;/artifactId&amp;gt;
&amp;lt;versio...]]></description><category></category></item><item><title><![CDATA[redis学习笔记之十六：Redis和Spring集成]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82316154</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82316154</guid><author>u010800970</author><pubDate>Sun, 02 Sep 2018 15:51:51 +0800</pubDate><description><![CDATA[n 构建开发环境，在Maven中添加
spring-data-redis支持的jedis版本目前只是到了2.7.0，所以要修改一下前面的配置，然
后添加：


&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.data&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-data-redis&amp;l...]]></description><category></category></item><item><title><![CDATA[redis中的事务、lua脚本和管道的使用场景]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82315237</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82315237</guid><author>u010800970</author><pubDate>Sun, 02 Sep 2018 14:26:29 +0800</pubDate><description><![CDATA[redis中的事务并不像mysql中那么完美，只是简单的保证了原子性。redis中提供了四个命令来实现事务，MULTI：类似于mysql中的BEGIN;EXEC：类似于COMMIT;DISCARD类似于ROLLBACK;WATCH则是用于来实现mysql中类似锁的功能。具体的使用方法非常简单，例如：


127.0.0.1:6379&amp;gt; multi
OK
127.0.0.1:6379&amp;gt; ...]]></description><category></category></item><item><title><![CDATA[redis bitmap 位操作。]]></title><link>https://blog.youkuaiyun.com/u010800970/article/details/82258434</link><guid>https://blog.youkuaiyun.com/u010800970/article/details/82258434</guid><author>u010800970</author><pubDate>Fri, 31 Aug 2018 16:49:03 +0800</pubDate><description><![CDATA[Redis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令，但是并没有新增新的数据类型。redis 通过对bitmap 来实现对二进制bit位的操作，用来记录一些状态信息。其中一个字节占8个bit位。用bit位中的二进制的0 和1 各表示一个状态，以达到记录某些状态信息。因为所有的状态都是记录基于二进制的bit位。所以大大的节省了这些状...]]></description><category></category></item></channel></rss>