文章目录1.问题场景描述1.1场景模拟2.解决方案2.1利用`gitreset--hard`命令2.2利用`gitrevert`命令2.3使用页面进行回滚(效果与Revert一致)1.问题场景描述我的项目包含两个重要git分支:master(生产环境),develop(测试环境)。正常的开发流程为:从master剪分支,然后进行开发,开发后合并到develop分支,当测试通过后合并到master分支进行上线。所以,master分支和develop分支代码差别很大,包括:未上线的代码,针对develop做的特殊处理等等。但某人错误操作,不小心从develop剪分支,最终合并到了master分支,
大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。上一篇文章中,我们继GuavaCache之后,又认识了青出于蓝的Caffeine。作为一种对外提供黑盒缓存能力的专门组件,Caffeine基于穿透型缓存模式进行构建。也即对外提供数据查询接口,会优先在缓存中进行查询,若命中缓存则返回结果,未命中则尝试去真正的源端(如:数据库)去获取数据并回填到缓存中,返回给调用方。与GuavaCache相似,Caffeine的回源填充主要有两种手段:Callable方式CacheLoader方式根据执行调
大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。上一篇文章中,我们继GuavaCache之后,又认识了青出于蓝的Caffeine。作为一种对外提供黑盒缓存能力的专门组件,Caffeine基于穿透型缓存模式进行构建。也即对外提供数据查询接口,会优先在缓存中进行查询,若命中缓存则返回结果,未命中则尝试去真正的源端(如:数据库)去获取数据并回填到缓存中,返回给调用方。与GuavaCache相似,Caffeine的回源填充主要有两种手段:Callable方式CacheLoader方式根据执行调
文章目录前言一、求职经历二、前端面经1.投简历的正确打开方式2.面经及面试题复盘外企面经、面试题大厂面经、面试题面试中的笔试有三种笔试题给同行的温馨提示我的其他热门文章前言 2023年的春节之前,几乎没有公司招人,直到2023年2月10日左右,春节后的两周,招聘软件上开始涌现出一些公司,搜索结果列表明显增多:一些年前未曾看到的公司名字冒出来了。是有真正在招人的,也有的只是为了打公司知名度,挂着招聘不理人的(这种不要花时间在它上面)。这是好的现象,但是,目前市面上竞争者仍然很多,换句话说,就是:一个岗位,简历很多。我们要做的就是:充分准备,出类拔萃! 现在入坑一阵了,来总结
文章目录前言一、求职经历二、前端面经1.投简历的正确打开方式2.面经及面试题复盘外企面经、面试题大厂面经、面试题面试中的笔试有三种笔试题给同行的温馨提示我的其他热门文章前言 2023年的春节之前,几乎没有公司招人,直到2023年2月10日左右,春节后的两周,招聘软件上开始涌现出一些公司,搜索结果列表明显增多:一些年前未曾看到的公司名字冒出来了。是有真正在招人的,也有的只是为了打公司知名度,挂着招聘不理人的(这种不要花时间在它上面)。这是好的现象,但是,目前市面上竞争者仍然很多,换句话说,就是:一个岗位,简历很多。我们要做的就是:充分准备,出类拔萃! 现在入坑一阵了,来总结
1. 简介Spring 和Mybaits整合2. 创建项目 负责将代理类记性扫描,扫描的是Mapper接口所在的包,这个是mybatis提供的,所以会去找SqlSessionFactory 2.1mybaits和Spring整合的jar包mybaits和Spring整合的官网:http://mybatis.org/spring/zh/index.html 2.1.1思路: 2.1.2MyBatis-Spring这个jar包是mybaits提供的。 2.2mybatis和spring整合所需要的jar包要和Spring一起使用MyBatis,需要在Spring应用上下文中
1. 简介Spring 和Mybaits整合2. 创建项目 负责将代理类记性扫描,扫描的是Mapper接口所在的包,这个是mybatis提供的,所以会去找SqlSessionFactory 2.1mybaits和Spring整合的jar包mybaits和Spring整合的官网:http://mybatis.org/spring/zh/index.html 2.1.1思路: 2.1.2MyBatis-Spring这个jar包是mybaits提供的。 2.2mybatis和spring整合所需要的jar包要和Spring一起使用MyBatis,需要在Spring应用上下文中
2023-01-19Spring声明式事务管理属性一、隔离级别1、概念:一个事务与其他事务之间的隔离等级(1,2,4,8)。2、隔离级别:(1)读未提交(1):READUNCOMMTTED存在问题:脏读(读取到了未提交数据)(2)读已提交(2):READCOMMTTED存在问题:可能出现不可重复读(3)可重复读(4):REPEATABLEREAD存在问题:可能出现幻读(4)串行化(8):SERIALIZABLE二、事务超时1、设置事务超时时间,到达指定时间后会强制事务回滚2、类型:int,单位:秒3、默认值:-1(未设置强制回滚)三、事务只读(readonly)1、一般事务方法中只有查询操作时
2023-01-19Spring声明式事务管理属性一、隔离级别1、概念:一个事务与其他事务之间的隔离等级(1,2,4,8)。2、隔离级别:(1)读未提交(1):READUNCOMMTTED存在问题:脏读(读取到了未提交数据)(2)读已提交(2):READCOMMTTED存在问题:可能出现不可重复读(3)可重复读(4):REPEATABLEREAD存在问题:可能出现幻读(4)串行化(8):SERIALIZABLE二、事务超时1、设置事务超时时间,到达指定时间后会强制事务回滚2、类型:int,单位:秒3、默认值:-1(未设置强制回滚)三、事务只读(readonly)1、一般事务方法中只有查询操作时
@Transactional属于是Spring的常用事务处理注解了,最近在开发时偶然发现这个东西竟然不是100%生效的。问题重现:测试一个批处理方法,方法上加了@Transactional后执行,因为加了事务处理注解,没怎么关注SQL执行顺序(反正对事务来说都是原子性的),debug过程发现MongoDB连接有问题,有关Mongo的操作抛出了异常,因为数据库的某个字段是批处理的触发条件,并且在批处理过程中会更新这个字段。重新执行发现数据库(Postgresql)的数据被update了,没有触发。嗯,确实之前没关注这个注解会有不生效的问题,开始处理:首先为了方便测试批处理任务(定时调度的),我在