java
文章平均质量分 76
java
harder_cn
这个作者很懒,什么都没留下…
展开
-
@Transactional传播属性
required有则有无则创建(默认)说明: 如果当前已经存在事务,那么加入该事务,如果不存在事务,创建一个事务,这是默认的传播属性值。@Servicepublic class RequireMethodService { @Autowired UserService userService; @Transactional(propagation = Propagation.REQUIRED) public void methodSon1() { User user = new原创 2022-01-25 15:50:14 · 2893 阅读 · 1 评论 -
@Transactional 失效案例
1、同一个类中调用因为它们发生了自身调用,就调该类自己的方法,而没有经过 Spring 的代理类,默认只有在外部调用事务才会生效。错误案例:/** * * 在同一个类中调用 * */@RestControllerpublic class InSameClass { @Autowired UserService userService; @GetMapping("methodA") public void methodA() { methodB();原创 2022-01-25 12:04:25 · 263 阅读 · 0 评论 -
服务消费端与注册中心交互模型是 push 还是 pull
今天看了小富老师发的文章Nacos配置中心交互模型是 push 还是 pull ?,文章中描述Nacos在做配置中心的时候,配置数据的交互模式是服务端推过来还是客户端主动拉的?突然间觉得对注册中心服务是不是都应该记录下呢?Nacos那肯定时客户端主动拉的!而且是长轮询,什么时长轮询,没听过吧,好好看下面。推与拉模型客户端与配置中心的数据交互方式其实无非就两种,要么推push,要么拉pull。推模型客户端与服务端建立TCP长连接,当服务端配置数据有变动,立刻通过建立的长连接将数据推送给客户端。优原创 2021-07-09 11:02:32 · 924 阅读 · 1 评论 -
垃圾回收的执行流程
java的垃圾回收分为三个区域新生代 老年代 永久代Eden区:当一个实例被创建了,首先会被存储在堆内存年轻代的 Eden 区中。Survivor 区(S0 和 S1):作为年轻代 GC(Minor GC)周期的一部分,存活的对象(仍然被引用的)从 Eden 区被移动到 Survivor 区的 S0 中。类似的,垃圾回收器会扫描 S0 然后将存活的实例移动到 S1 中。老年代: 老年代(Old o...转载 2018-03-26 16:49:07 · 3319 阅读 · 0 评论 -
方法引用
方法引用分为4类,常用的是前三种。方法引用也受到访问控制权限的限制,可以通过在引用位置是否能够调用被引用方法来判断。具体分类信息如下: 1、引用静态方法 ContainingClass::staticMethodName 例子: String::valueOf,对应的Lambda:(s) -> String.valueOf(s) 比较容易理解,和静态方法...转载 2018-03-26 15:15:01 · 1376 阅读 · 0 评论 -
函数式接口
函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口(Single Abstract Method)。定义了这种类型的接口,使得以其为参数的方法,可以在调用时,使用一个lambda表达式作为参数。从另一个方面说,一旦我们调用某方法,可以传入lambda表达式作为参数,则这个方法的参数类型,必定是一个函数式的接口,这个类型必定会使用@FunctionalInterface进行修...转载 2018-03-26 15:15:11 · 198 阅读 · 0 评论 -
分布式定时任务
目录1.xxl-job2.elastic-job1.xxl-jobxxl-job 是大众点评(许雪里)开发的一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。xxl-job 框架对 quartz 进行了扩展,使用 mysql 数据库存储数据,并且内置jetty作为 RPC服务调用。主要特点如下:有界面维护定时任务和触发规则,非常容易管理。能动态启动或停止任务支持弹性扩容缩容支持任务失败报警支持动转载 2021-06-10 14:26:11 · 1293 阅读 · 0 评论 -
JAVA常用定时任务
定时任务的选择还是挺多的,在不用的业务场景下要用不同的定时任务。这个还是根据业务来选择,抛开一切业务谈技术还是纸上谈兵。一. linux自带的定时任务crontab为了减小对线上环境的影响,我们一般会选择在凌晨1-2点 ,趁用户量少的时候,执行程序。这种情况用哪种定时任务更合适呢?答案是: linux 系统的 crontab 。0 2 * * * /usr/local/java/jdk1.8/bin/java -jar /data/app/tool.jar > /logs/too转载 2021-06-10 13:41:49 · 406 阅读 · 0 评论 -
实现重试最优雅的姿势
实现重试最优雅的姿势了!使用场景在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。代码示例以下会简单列出 guava-retrying 的使用方式:出现异常则执行重试,每次重试失败,打印日志,记录重试次数和异常原因;import java.util.concurrent.ExecutionException;转载 2021-01-05 10:06:11 · 332 阅读 · 0 评论