
源码
文章平均质量分 64
帆影匆匆
快乐的程序小白
展开
-
spring 事务源码(三)如何保证被@Transactional标记方法中的所有sql都在一个事务内
核心问题spring 如何保证被事务注解标记方法中的所有sql都在一个事务内测试代码还是之前的代码,但是这次得改下,想办法让sql抛出异常<select id="getNum" resultType="java.lang.Integer"> select count(*) from ss where 1 = 1; </select> @Transactional public void test(){原创 2021-09-08 16:44:41 · 1052 阅读 · 0 评论 -
spring 事务源码(一)事务切面注入、解析
前言最近在研究事务的相关源码准备为项目中业务场景进行改造,写个博客记录,顺便分享如何查找调试源码的方法准备调试代码@Componentpublic class WebHelper { @Transactional public void test(){ System.out.println("test"); throw new RuntimeException(""); }}源码分析首先看事务注解什么时候解析,并且注入切面这里分享原创 2021-08-22 10:43:56 · 1005 阅读 · 0 评论 -
spring 多租户数据源实现事务一致性
前言之前我写了一篇spring boot 集成 mybatis-plus实现多租户数据源本来用的很爽,但是最近需要实现不同租户之间的事务一致性,所以讲解决方案记录如下大致思路先假设有两个租户 A,B,分别需要执行方法 ma(),mb()伪代码如下try{ ma(); mb();}catch(..){ .....}首先我第一时间想到用编程式事务操作,编程式事务能可控制的让所有事务一起提交、一起回滚,如果用平常使用的@Transactional 注解是不行的,因为执行的sql对应的数据原创 2021-08-19 18:05:39 · 487 阅读 · 0 评论 -
银行家算法及其c++代码实现
最近小编在学习自考操作系统的过程中,了解到了一种可以避免进程死锁的算法-----银行家算法如果您已经知道什么是银行家算法,只想看代码,直接到 源码部分什么是银行家算法银行家算法是操作系统中避免死锁的一种算法什么是死锁和我们线程死锁类似,不同线程持有对方的锁,多个线程又不能释放锁,即产生死锁类似上图,P1 申请 输出设备,但是输出设备被P2占有,P2又申请输入设备输入设备又被P1占有形成回路如何避免呢?和简单只要在资源分配前检测当前系统是否处于安全状态,是否能被分配,分配之后系统是否还是安原创 2021-08-05 14:45:18 · 3032 阅读 · 0 评论 -
基于frp实现将安卓手机变成代理服务器
公司有一个业务场景,需要利用分布在全国各地的一些手机作为代理服务器拿到这任务的我是一脸懵逼的,这tm都行。。。不过这让我让我想到之前用的内网穿透 frp内网穿透大致原理可看我之前文章https://blog.youkuaiyun.com/weixin_39660224/article/details/119185186?spm=1001.2014.3001.5501搭建环境条件公网服务器安卓手机frp 服务端包和客户端的包公网服务器配置下载frp 和linux amd64位的包 https:/原创 2021-07-28 17:56:02 · 7704 阅读 · 0 评论 -
大白话告诉你内网穿透原理和验证
内网穿透到底干啥的这里不做详述,这篇文章主要是讲这玩意怎么做的分析网上有很多原理图,但是说实话鄙人天资愚钝没咋看懂,在网上疯狂百度和个人的验证之后,得出如下简图其实很简单想让我们内网的服务能被外网访问到,只需要一个能被公网访问的服务器就行内网服务器和外网的服务器建立tcp通讯用户想访问内网服务器时候,需要先请求外网服务器,外网服务器再将请求的数据原样推送给内网的服务器同理当内网服务器要将数据推送给用户,也是原路返回,先给外网服务器,然后外网服务器在将数据给用户验证验证过程其实也非常简原创 2021-07-28 17:34:00 · 1919 阅读 · 0 评论 -
Spring Aop 源码笔记和源码阅读个人技巧分享
概述用过spring 框架的小伙伴都知道,aop对spring 的重要性,学习源码必不可少,文本记录一些源码跟踪源码技巧学习心得,需要纠错和改正的请在下方留言aop 原理大致分析这个网上一搜一大堆,重复阐述没有意义,说下我个人理解,关键两个字 代理什么叫代理,和银行一样,你干啥都要经过人家的手,这样只要你钱有变动银行都知道了spring 也是一样,假设有个类public class A{ void test(){ system.out.println("test run"); }}原创 2020-07-10 18:43:14 · 358 阅读 · 2 评论