- 博客(44)
- 收藏
- 关注
原创 Git-2-:Cherry-Pick 的使用场景及使用流程
git cherry-pick 是用来从一个分支中选择一个或多个特定的提交,并将这些提交应用到当前分支。这样可以只选择需要的更改,而不是合并整个分支。
2025-01-10 14:06:23
677
原创 使用specification校验入参对象,优化代码质量
通过specification 校验入参对象的封装,可以大大拆解接口代码的复杂性,提高接口的可读性,便于提高后期接口维护工作的效率
2025-01-10 10:21:21
129
原创 Jar包上传线上仓库流程
1 上使本地做載jar到线上仓摩、通过 cmd 命令 执行以下命令行 (执行时命令行不能有换行, -Dpomfile 到 -Dfile 用空格隔开即可)// 上fjar对应的 sources 源码文件、 绝度路径上传 (源码不影响依赖包的使用)// 上传jar对应的pom 文件。// 上使jar耐应的jar 文件、艳度路径上传。1、准备好本地已经下载好的jar相关文件。2、编写上传执行命令。// 有效的上传地址。
2024-01-23 16:21:21
578
原创 分布式TCC事务
分布式事务\n随着互联网技术的发展与数据体量的扩增,软件系统逐渐由单体应用演变为分布式系统/微服务应用。分布式系统把一个单体应用系统拆分成可独立部署的多个微服务,很多场景下需要服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务。分布式系统中实现事务,其实是由多个本地事务组合而成。对于分布式事务而言几乎满足不了 ACID。\n\n场景介绍\n跨JVM进程产生分布式事务\n典型的场景就是微服务架构:微服务之间通过远程调用完成事务操作。比如:订单微服务和
2023-07-28 17:11:28
15
原创 《Java基础篇》JavaBean的生命周期·作用域·通俗易懂
首先是实例化、属性赋值、初始化、销毁这 4 个大阶段再是初始化的具体操作,有 Aware 接口的依赖注入、BeanPostProcessor 在初始化前后的处理以及 InitializingBean 和 init-method 的初始化操作;(或**@PostConstruct注解**)销毁的具体操作,有注册相关销毁回调接口,最后通过DisposableBean 和 destory-method 进行销毁。(@PreDestory注解也可实现)
2023-06-22 15:33:13
893
原创 SnowFlake 雪花算法实现以及详解
SnowFlake 中文意思为雪花,故称为雪花算法。在2014年开源 scala 语言版本。对于每一个雪花算法服务,需要先指定 10 位的机器码,这个根据自身业务进行设定即可。例如机房号+机器号,机器号+服务号,或者是其他可区别标识的 10 位比特位的整数值都行。可以将雪花算法作为一个单独的服务进行部署,然后需要全局唯一 id 的系统,请求雪花算法服务获取 id 即可。雪花算法的原理就是生成一个的 64 位比特位的 long 类型的唯一 id。
2023-06-20 21:16:25
475
原创 PostgreSQL和mysql语法区别详解通俗易懂
设置自增序列:nextval('xiang_base.cloud_new_id_seq'::regclass)如果想对拼接的值做排序,可以在拼接符号后面加。在3000W数据的时候,建议使用第一种。
2023-06-20 18:05:08
3967
1
原创 ZooKeeper 总结最全面的面试题·没有之一
watcher event 异步发送 watcher 的通知事件从 server 发送到 client 是异步的,这就存在一个问题,不同的客户端和服务器之间通过 socket 进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于 Zookeeper 本身提供了 ordering guarantee,即客户端监听事件后,才会感知它所监视 znode发生了变化。这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zk,也可以用别的,只是大家都用zk。
2023-06-11 22:41:53
412
原创 《Java 基础篇》之函数式接口
有且仅有一个抽象方法的接口。Java中的函数式编程体现就是Lambda表达式。所以函数式接口即可以适用于Lambda使用的接口。如何检测一个接口是不是函数式接口?放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败。");i.show();注意:自定义函数式接口时,@FunctionalInterface是可选的,就算不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。
2023-06-11 18:50:03
6285
2
原创 Mybatis 主流经典面试题·吊打面试官
延迟加载的基本原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。有了namespace,自然id就可以重复,namespace不同,namespace+id自然也就不同。有联合查询和嵌套查询。
2023-06-11 11:20:05
166
原创 SpringCloud与Dubbo的区别(全面详解)深入浅出
Eureka集群中各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。当我们通过一个服务器修改数据后,该服务器会向另一个服务器发送请求,将数据进行同步,但此时,该数据应处于锁定状态,不可再次修改,这样,如果此时我们想服务器发送请求,则得不到相应,这样就不能A,高可用。
2023-06-10 18:31:34
14311
3
原创 gerrit push 的哪些坑
(1)是通过 merge 拉取合并代码,这个时候如果你没有 push merge 的权限的话,通过这种方式提交不了,(2)通过 rebase 拉取合并代码,这时候没有merge 记录,不会受 push merge 权限的影响。// src/main/java/messagelog/ --add这个目录下的Java文件。勾选了Amend 就不会重新生成change-id,只是在上一次的提交版本上修复提交。git commit -m "提交备注信息"二、拉取代码,然后提交代码流程。输入 :wq 回车。
2023-02-06 09:26:20
310
原创 极光推送零基础极速上手开发指南,快速搭建后台推送服务
极光推送零基础极速上手开发指南,配置、工具类封装、业务调用、应用创建等环节的操作。一目了然,
2023-01-13 11:28:27
905
原创 Git 通过change push代码时,失败 提示没有找到change-id
首先通过git reset --mixed 71d4******************************(版本号),回退commit 操作。地址:D:\HaierWork\jsh-msg\.git\hooks下的 丢失了这个文件。从之前下载的工程中复制commit-msg文件到.git/hooks目录下即可解决该问题。src/main/java/messagelog/ --add这个目录下的Java文件。以上两个文件同时存在在可以在 执行 commit 命令时正常生成 change-id。
2022-12-28 10:33:59
1854
原创 MySQL 存储过程详解
目录1.存储过程简介2.存储过程的优点3.MySQL的存储过程3.1.MySQL存储过程的创建3.1.1创建语句格式3.1.2.声明分割符3.1.3.参数3.2.通过存储过程批量插入数据 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据
2022-12-04 14:40:30
750
原创 MySql事务隔离级别与实现原理
目录一、隔离级别二、隔离级别的底层实现2.1.读未提交隔离级别的实现2.2.读已提交隔离级别的实现 2.3.可重复读隔离级别的实现 2.4.串行化隔离级别的实现2.5.读的分类 众所周知,事务的隔离级别有四个等级,分别是读未提交(RU),读已提交(RC),可重复读(RR)与串行化(Serial),通过设置隔离级别,可以解决事务并发过程中导致的脏读,不可重复读与幻读。那么隔离级别解决这些问题的原理或逻辑是什么呢二级 读已提交快照读:读MVCC,写加排他锁当前读:读加行锁,写加排他锁读MVCC,写
2022-12-03 15:03:53
821
原创 数据库引擎 Innodb
目录一、Innodb的行锁和表锁1.1.什么是Innodb?什么是行锁和表锁?1.2.行锁和表锁的特点1.3.分类1.4.注意事项1.5.深入理解锁行锁:表锁1.如果对某几行上行锁,但是没有索引,会变成表锁.行锁是针对索引来实现的其实这里不太恰当的,并不是对变成表锁,而是对整个所有的数据行加行锁,因为在不使用索引的情况下,mysql并不知道哪些符合条件。会全部加锁返回。 举例: 在一个事务中执行. SELECT * FROM account WHERE NAME IN(‘张三’,‘嗨
2022-12-03 12:02:14
185
原创 @Transactional注解
一、使用范围@Transactional注解 可以作用于接口、接口方法、类以及类方法上。当用作类上时,该类上的所有 public 方法将都具有该类型的属性。 当用作方法上是,该方法所在类上的注解将失效,该注解只能应用在 public 方法上。 不建议用在接口或接口方法上,因为这只有在使用基于接口的动态代理是才会生效!注意:只有来自外部的方法调用才会引起事务行为,类内部方法调用本类内部的其他方法并不会引起事务行为。二、注解属性value属性:当配置多个事务管理器时,可以使用该属性指定选择
2022-11-17 21:57:45
319
原创 Springboot工作原理详解
5、在解析@Import注解的时候,会有一个getImport()方法,从主类开始递归解析注解,把所有包含@Import的注解都解析到,然后在processImport()方法中对import的类进行分类,例如AutoConfigurationImportSelect归属于ImportSelect的子类,在后续的过程中会调用DeferredImportSelectorHandler类里面的process方法,来完成整个EnableAutoConfiguration的加载。
2022-11-15 16:30:00
15777
1
原创 Dubbo 与 SpringCloud 的关系
Dubbo:是基于java接口及Hession2序列化的来实现传输的,Provider对外暴露接口,Consumer根据接口的规则调用。也就是Provider向Zookeeper注册的是接口信息,Consumer从Zookeeper发现的是接口的信息,通过接口的name,group,version来匹配调用。Consumer只关注接口是否匹配,而对此接口属于什么应用不关心。当然接口的注册信息里会包含应用的ip,hostname等Spring Cloud:是一个微服务框架,相比Dubbo等RPC框架,。
2022-11-12 05:30:00
169
原创 CS架构和BS架构的区别(通俗易懂)
●安全性能能够非常容易确保,C/S通常面向相比固定的用户群,程序越发注重过程,它能够对权限实行多层次校验,提供了更安全的存取形式,对信息安全的控制才能非常强。●须要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不可以完成迅速部署安装与配置。●开发、维护费用较高,须要拥有肯定专业水准的技术人员才可以结束,发生一次升级,就全部客户端的程序全部须要更改。●可以足够表现客户端的处理能力,很多工作能够在客户端处置以后再提交给服务器,于是CS客户端响应速度快。●分布性强,客户端零维护。
2022-11-11 09:20:07
5739
原创 深入理解 JVM
1、年轻代是对象的诞生、成长、消亡的区域,一个对象在这里产生、应用,最后被垃圾回收器收集、结束生命。2、老年代放置长生命周期的对象,通常都是从Survivor区域筛选拷贝过来的Java对象。当然,也有特殊情况,我们知道普通的对象会被分配在TLAB上;如果对象较大,JVM会 试图直接分配在Eden其他位置上;如果对象太大,完全无法在新生代找到足够长的连续空闲空间,JVM就会直接分配到老年代。3、当GC只发生在年轻代中,回收年轻代对象的行为被称为MinorGC。
2022-11-07 16:48:43
613
原创 Java 集合、HashMap 底层实现原理
Java 集合可分为Collection和Map两种体系Collection接口:单列数据,定义了存取一组对象的方法的集合List:元素有序(指的是存储时,与存放顺序保持一致)、可重复的集合Set:元素无序、不可重复的集合HashMap是基于哈希表的Map接口的非同步实现。元素以键值对的形式存放,并且允许null键和null值,因为key值唯一(不能重复),因此,null键只有一个。
2022-11-07 15:07:12
835
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人