自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

很想推倒马银霜

第一次见到的马银霜时候,就想睡了她

  • 博客(249)
  • 资源 (4)
  • 论坛 (8)
  • 问答 (17)
  • 收藏
  • 关注

原创 Spring-jdbc-ConnectionHolder

该类是对JDBC中Connection对象的封装在spring中需要通过TransactionSynchronizationManager.getResourceMap静态方法获取// key是DataSource实例,value是ConnectionHolder// 调用这个静态方法获取ConnectionHolderMap<Object, Object> resourceMap = TransactionSynchronizationManager.getResourceMap()

2021-01-18 14:41:39 6

原创 Spring-tx-TransactionDefinition/TransactionAttribute

TransactionAttribute继承了TransactionDefinition接口,所以将这两个接口放到一片文章里这两个接口顾名思义,是对@Transaction注解的封装DefaultTransactionAttribute类是这两个接口最重要的实现类,可以通过TransactionAnnotationParser获取...

2021-01-18 11:35:14 7

原创 Spring-tx-TransactionInfo

该类是TransactionAspectSupport类的内部类,有下面几个属性@Nullableprivate final PlatformTransactionManager transactionManager;@Nullableprivate final TransactionAttribute transactionAttribute;private final String joinpointIdentification;@Nullableprivate TransactionS

2021-01-16 14:08:35 29 1

原创 Spring-tx-TransactionStatus接口(savepoint)

11

2021-01-15 09:48:48 16

原创 Spring-tx-Propagation枚举类

该枚举类定义了spring的事务传播行为,在TransactionDefinition接口中也有定义,其实引用的就是该接口的属性为了方便测试,需要创建三个类,由于我使用的是hikari数据源,恰好spring boot中有,所以直接使用spring boot的,引入pom文件,即可使用HikarCP,当然也可以去maven仓库搜索HikarCP<dependency> <groupId>org.springframework.boot</groupId>

2021-01-15 09:18:33 9

原创 Spring-tx-@EnableTransactionManagement注解

xml形式的spring配置使用tx标签来开启事务而注解形式的spring配置,则使用@EnableTransactionManagement注解其实本文要说的内容,在该注解的注释当中都有,例如下面这个代码@Componentpublic class Creater1 { @Autowired JdbcTemplate jdbcTemplate; @Transactional(rollbackFor = Exception.class) public void create() {

2021-01-14 16:06:36 15

原创 Mysql-savepoint

不同的数据库都有savepoint,本文展示mysql的savepoint,使用工具为navicat创建一个表,表名叫t1,里面有两个字段,一个自增的id,一个value使用navicat执行下面代码start transaction;INSERT INTO t1(value) values ('想睡1次马银霜');savepoint p1;INSERT INTO t1(value) values ('想睡2次马银霜');savepoint p2;rollback to p1;commi

2021-01-14 11:44:30 13

原创 Spring-tx-TransactionInterceptor类

关于TransactionInterceptor类的解析,将是对spring-tx模块最重要的解析,该类是spring事务模块核心框架代码,为此我费了很大力气,仅以此篇文章,献给我做梦都想睡到的马银霜(虽然她不知道spring是个什么东西),下面开启真的探索源码,而不是网上其他人那种假装探索(贴源码并且翻译注释)第一步:首先,有一个类,类的全限定名是org.springframework.aop.framework.CglibAopProxy,而该类里面有一个内部类,是CglibMethodInvocat

2021-01-14 01:29:34 22

原创 Spring-tx-TransactionAttributeSource接口

该接口用来获取事务相关的配置其实底层就是通过TransactionAnnotationParser接口来实现的,如果了解TransactionAnnotationParser,此接口特别简单方法:getTransactionAttribute@NullableTransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass);使用该接口非常重要的实现类Annotatio

2021-01-12 18:26:30 14

原创 Spring-tx-TransactionAnnotationParser接口

事务注解转换器说白了就是该接口的实现会将@Transactional注解转换成TransactionAttribute,该接口只有一个抽象方法@NullableTransactionAttribute parseTransactionAnnotation(AnnotatedElement ae);其中SpringTransactionAnnotationParser类是该接口的实现之一,下面以该类作为演示import org.springframework.transaction.annota

2021-01-12 16:51:53 25 1

原创 Spring-ListableBeanFactory

该接口是BeanFactory直接子类,拓展了父类没有的功能:根据条件查询多条数据顾名思义,类名ListableBeanFactory中的Listable是集合的意思,所以该类下的所有方法返回值都是集合,这些集合包括String类型的数组,或者map,而其父类BeanFactory接口中的方法恰恰只能返回指定的,单一的,bean的实例,所以该接口是对其父接口在获取多个bean实例功能上的一种补充源码就不贴了,该接口方法看方法名就知道干什么的了,相对来说较为简单,记录本文唯一目的就是用简单明了的语言阐述该

2021-01-07 15:00:19 17

原创 Spring-AbstractRefreshableApplicationContext

该类属于ApplicationContext子类,所以是一个BeanFactory,下面介绍本类中最重要的三个字段属性// @Nullable注解表示该字段允许为空// 是否允许覆盖相同名称的对象// 比如有一个类A,注册到容器中的名字叫m// 有有一个类B,注册到容器中的名字也叫m// 如果该字段=true,则B将会覆盖掉A@Nullableprivate Boolean allowBeanDefinitionOverriding;// 如果该字段=true,则允许Bean之间循环依赖@

2021-01-05 11:40:43 30 2

原创 Spring-AbstractApplicationContext

此方法最大的作用:当我们自己实现容器的时候,用来校验系统变量是否正确当我们自己实现容器的时候,如果重写了initPropertySources();方法,那么就会体现出prepareRefresh方法的作用源码 /** * Prepare this context for refreshing, setting its startup date and * active flag as well as performing any initialization of property sour

2021-01-05 11:00:11 14

原创 汇编语言06-LEA指令

A

2021-01-04 23:11:24 17

原创 WinAPI-02-OpenProcess/ReadProcessMemory/WriteProcessMemory

OpenProcess函数声明如下,失败则返回NULL(0,也就是false)#include <Windows.h>HANDLE OpenProcess(DWORD desiredAccess,//读取权限BOOL blnheritHandle,//是否继承DWORD processId//想要读取的PID)代码示例,注意下面的代码可能运行失败,请按照如下设置VS右键项目名(例如ConsoleApplication123)->属性->配置属性(注意左上角是活动D

2020-12-31 00:59:28 22

原创 Redis07-对象结构体redisObject

Redis是一个key-value型数据库,key只能是字符串,value可以是字符串、列表、集合、有序集合和散列表,这5种数据类型用结构体robj表示,我们称之为Redis对象。#define LRU_BITS 24typedef struct redisObject { unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; //缓存淘汰使用 int refcount; //引用计

2020-12-30 23:58:12 13

原创 WinAPI-01GetModuleHandle

获取当前程序在内存中的起始位置#include <iostream>#include <Windows.h>int a;int main() { a = 0x32; HMODULE h=GetModuleHandle(NULL); int* pa = &a; std::cout << "程序起始位置:"<<h << std::endl; std::cout << "a的位置:"<<pa <&

2020-12-26 12:13:39 11

原创 C++自学34:源文件与头文件(pragma/ifndef/endif/ifdef)

e

2020-12-23 00:42:40 55

原创 Java-java.util.concurrent.locks.AbstractQueuedSynchronizer

这个类简称AQS,如果我们要实现的功能是有获取和释放这两个操作,并且获取操作总是能够阻塞,那么对于该功能的实现,我们需要继承AbstractQueuedSynchronizer(AQS),AQS中有一个属性叫state以及操作该属性的三个方法,如下private volatile int state;protected final int getState() { return state;}protected final void setState(int newState) {

2020-12-22 20:57:15 42

原创 C++自学33:函数模板

22

2020-12-17 23:59:31 99

原创 Redis-数据结构06-快速链表(quicklist)

22

2020-12-07 15:48:40 20

原创 Redis-数据结构05-字典(dict)

222

2020-12-07 15:47:21 15

原创 汇编语言05-MOV指令(BYTE/WORD/DWORD)

MOV 目标,源目标:内存地址或者寄存器源:立即数,内存地址,或者寄存器MOV指令不会对标志位影响

2020-12-02 23:57:41 39

原创 汇编语言04-EIP/TSC/浮点

aa

2020-12-02 23:40:51 17

原创 汇编语言03-段寄存器

段寄存器1:CS2:DS3:ES4:FS5:GS6:SS

2020-12-02 23:29:42 14 1

原创 汇编语言02-标志寄存器(EFLAGS/PSW)

用来存放各种标志位,在Visual Sudio中打开标志寄存器调试界面,调试->窗口->寄存器,此时打开寄存器窗口,但是该窗口只有通用寄存器,这个时候右键,选择"标志",然后在寄存器窗口中会显示出标志寄存器的值一:奇偶标志位PF(也叫PE):计算结果如果低8位有偶数个1,则PF为1,有奇数个1则为0int main(){ int a = 0x80000000, b = 0x80000000; int c; _asm { mov eax, a; mov ebx, b; ad

2020-12-02 23:28:40 49

原创 汇编语言01-通用寄存器

1.CPU模型2.内存模型3.总线模型4.存储模型5.显示模型6.网络模型

2020-12-02 23:27:55 30

原创 计算机系统-总线

主板上不同硬件之间,或者同一个硬件的内部各个部件之间,用来传输数据的东西,就叫总线一:数据总线二:地址总线三:控制总线下面以一个CPU请求获取内存中的一条数据为例1.CPU先通过控制总线获取内存的控制权限2.CPU通过地址总线告诉内存要获取哪个地址的数据3.内存通过数据总线将数据传送给CPU获取控制总线是根据优先级来分配的,相对来说,键盘,鼠标等,和CPU等其他内部硬件比起来,优先级特别的低,当我们从键盘输入内容的时候,是先把内容存到键盘的缓存当中,键盘向系统获取控制总线的权限,此时如果系统

2020-11-27 01:00:05 27

原创 C++自学32:栈(文章未完成)

1.栈在程序刚启动的时候就已经分配好了2.sub命令??16.6TODO ,文章未完成

2020-11-22 21:22:17 13

原创 C++自学31:函数的指针

16.2-

2020-11-20 23:47:05 14

原创 C++自学30:函数参数返回值

先写一个函数,这个函数用来计算字符串所占用的字节数int get_byte_len(const char* str) { int len = 0; for (int i=0; str[i] != 0;i++) { len++; } return len;}int main(int count,char* arg[]){ const char* aa = "馋马银霜的身子a"; int len = get_byte_len(aa); std::cout << len &l

2020-11-20 01:12:08 15

原创 Redis-数据结构04-整数集合(intset)

qq

2020-11-18 19:48:01 11

原创 Redis-数据结构03-跳跃表(skiplist)

111

2020-11-18 11:31:40 10

原创 Redis-数据结构02-简单动态字符串(sds)

简单动态字符串(Simple Dynamic Strings,SDS)是Redis的基本数据结构之一,用于存储字符串和整型数据。SDS兼容C语言标准字符串处理函数,且在此基础上保证了二进制安全。本章将详细讲解SDS的实现,为读者理解Redis的原理和各种命令的实现打下基础。...

2020-11-17 17:36:22 13

原创 C++自学29:函数参数(cstdarg/.../va_arg/va_end)

struct USER { int a; int b;};// 该方法等同于将USER中的所有参数都传递了过去,示例在文章最末尾void function1(USER user) { user.a=666; user.b=777;}int main(){ USER user; user.a = 1; user.b = 2; function1(user); // 打印出1 std::cout << user.a << std::endl; // 打印

2020-11-17 11:24:29 10

原创 RabbitMQ-JAVA-ClientAPI示例

一:POM文件<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.4.3</version> </dependency>二:创建一个消费者import com.rabbitmq.client.AMQP.BasicProperties;import com.r

2020-11-16 16:50:05 20

原创 Redis-数据结构01-压缩列表(ziplist)

压缩列表ziplist本质上就是一个字节数组,是Redis为了节约内存而设计的一种线性数据结构,可以包含多个元素,每个元素可以是一个字节数组或一个整数。Redis的有序集合、散列和列表都直接或者间接使用了压缩列表。当有序集合或散列表的元素个数比较少,且元素都是短字符串时,Redis便使用压缩列表作为其底层数据存储结构。列表使用快速链表(quicklist)数据结构存储,而快速链表就是双向链表与压...

2020-11-16 01:15:12 20

原创 C++自学28:函数声明

定义一个函数int add(int a,int b) { return a + b;}int main(){ int aaa = 5; int bbb = 6; int c=add(aaa,bbb); std::cout << c << std::endl;}15.1

2020-11-15 15:36:12 38

原创 SpringBoot-Freemarker

111

2020-11-13 10:41:28 15

原创 C++自学27:字符串(string/to_string/append/substr/length/find/rfind/replace/stoi转数字转int)

之前大概的说了一下string这个类,在这篇文章中,本章继续学习string,这个类是c++独有的,在c语言中无法使用#include <string>// 导入string的头文件int main(){ // 定义一个叫name的变量,里面的值是马银霜 std::string name{"马银霜"}; std::cout << name << std::endl;}string类不需要考虑长度等一些问题,而使用char数组则必须考虑std::stri

2020-11-12 23:46:40 31

jquery-validate-demo

jquery-validate-demo

2016-05-24

jquery-validate

平时开发中我们根本用不到 jquery-validate的完整版本,太大了,这个下载中包含了jquery-validate必须用到的7个文件(包含中文汉化)和必要CSS样式,非常的小,这样我们就不用每次开发都要花费时间去筛选哪些文件有用,哪些文件没用了

2016-06-02

bootstrap-datetimepicker

请参考我的博客,这个压缩包里是需要用到的四个文件,非常简单小巧

2016-05-24

spring实战第三版PDF

原版名称spring in action 第三版

2015-11-17

到底什么叫幻读?

发表于 2016-03-07 最后回复 2020-08-16

JDK1.8的foreach循环效率不如for循环,它为什么还要出现???

发表于 2016-05-04 最后回复 2020-08-11

想给CSDN提个建议

发表于 2019-11-15 最后回复 2019-11-15

求JAVA高手为小弟解惑

发表于 2016-05-06 最后回复 2016-08-24

java list当中一个问题,求有经验的哥哥帮帮我

发表于 2016-01-12 最后回复 2016-05-05

关于数据库表结构设计的一个问题

发表于 2015-11-03 最后回复 2016-01-08

Metasploit在Windows7下如何使用msfcli???

发表于 2013-10-25 最后回复 2015-11-03

关于HTTP消息头请求如何发送????

发表于 2013-10-18 最后回复 2013-10-25

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

TA关注的人 TA的粉丝

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