自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 @RefreshScope注意事项

我们都知道@RefreshScope是SpringCloud用于动态刷新我们配置文件内的配置项数据,可以在不重启服务的情况下就能动态更新配置项。使用方式一般是将其修饰在类上,再用@Value注解修饰需要刷新的字段上,或运用@ConfigurationProperties注解,只要在 Bean 上添加上了这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到 Bean 中。通常,我们会认为@RefreshScope可以修饰在任何被Spring管理的Bean上,其实不然。

2023-12-28 09:47:33 669

原创 实现ThreadLocal在异步线程(包括线程池)中传递

JDK提供了本地线程共享的ThreadLocal和在创建线程时可继承的InheritableThreadLocal,但是由于大多数情况都推荐使用线程池来进行异步处理,InheritableThreadLocal就达不到我们的预期。但是可以参考它的实现思路,在进行线程间的传递时(如创建线程或创建Runnable实现类),将与父线程绑定的ThreadLocal值传递给子线程,就可实现父子线程ThreadLocal的传递。

2023-12-27 15:24:08 1901

原创 经典垃圾收集器

经典垃圾收集器,下图:1.Serial收集器一款单线程工作的收集器,“单线程”意义不仅仅说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在垃圾收集时必须暂停其他所有工作线程直到它收集结束。即使其作为一款古老的收集器相对其他收集器来说显得有点鸡肋,但与其他垃圾收集器的单线程比就显得简单高效,对于资源受限的环境,它是所有收集器里额外内存消耗最少的;对于核心处理器较少的环境,它没有线程交互开销,可以获得最高的单线程收集效率。Serial收集器依然是HotSpot虚拟机运行在客户端模

2021-07-18 00:01:09 137

原创 垃圾收集算法

1.分代收集理论①弱分代假说:绝大多数对象都是朝生夕灭的(划分为新生代)。②强分代假说:熬过越多次垃圾收集过程的对象就越难消亡(划分为老年代)。③跨代引用假说:跨代引用相对于同代引用来说相对较少(例:某个新生代存在跨代引用,由于老年代对象难以消亡,新生代对象对象在多次垃圾回收过程中得以存活,继而也晋升到老年代,此时跨代引用也就消除了)。2.标记-清除算法首先需要标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象。该算

2021-05-08 00:10:24 80

原创 java对象是否还存活?

1.引用计数算法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。但是在java领域中并没有选用引用计数算法来管理内存,主要原因是这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处理才能保证正确的工作,譬如单纯的引用计数就很难解决对象之间的相互循环引用的问题。2.可达性分析算法比较主流的成语语言都采用可达性分析算法,该算法的基本思路是通过一系列的“GC Roots”的根对象作为起始节点集,从节

2021-04-26 22:31:24 122

原创 java堆对象分配、布局、访问全过程

1.对象的创建java虚拟机收到一条字节码new指令时,会先检查该指令参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用的类是否已经被加载、解析和初始化,没有则必先执行类加载过程。类加载完成后就是内存分配,内存分配实际上就是从堆中把一块确定大小的内存划分出来。若堆中内存是规整的,一边是已分配内存,一边是未分配内存,中间则放着一个指针作为分界点的指示器,那内存分配就是将指针挪动对象大小相等的距离,该分配方式称为“指针碰撞”。若堆总内存不是规整的,虚拟机则会维护一个列表记录哪些内存是可用的,

2021-04-23 23:32:43 181

原创 jvm运行时内存区域

java虚拟机在java程序执行过程中会把内存区域划分成若干个数据区域,有的随虚拟机启动就存在,有的则随线程的启动和结束而建立和销毁。总的说来包含以下几个运行时内存区域:1.程序计数器程序计数器可以看做是当前线程所执行的字节码的行号指示器。字节码指示器的工作就是通过改变计数器的值选取下一条要执行的字节码指令,如分支、循环、跳转、异常处理、线程恢复等。每个线程都有一个独立的程序计数器,各线程之间的计数互不影响,因此该区域也称为“线程私有”内存。2.java虚拟机栈虚拟机栈也是线程私有的,描述的

2021-04-22 22:38:01 137

原创 dubbo接口异步调用进行服务降级后类型转换异常

起因最近想了解下dubbo一些基本功能,于是就翻阅dubbo官方文档,并写写demo练习练习。在练习到:用法示例->本地伪装 ,发现了一个小问题在这里就写了mock的service接口,然后对相应的几个接口进行了测试,本以为测试结果很完美,没想到在调用到asyncSayHello方法时就出问题了DemoController.java@GetMapping("/asnycHello")public Object asnycHello(@RequestParam("name")S.

2021-02-26 23:10:02 554

空空如也

空空如也

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

TA关注的人

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