- 博客(27)
- 收藏
- 关注
原创 【JVM源码】- java.lang.Thread的start()方法是如何被执行的
start0对应的native方法为主要做了两件事创建线程调用不同系统的底层实现创建线程,在linux操作系统下为传递给的执行函数,最终会执行对象的run()方法调用函数成功后,操作系统创建的线程会被阻塞住启动线程唤醒在函数创建成功的线程最终操作系统线程执行对象的run()方法。
2024-11-09 20:31:35
850
1
原创 扇贝单词-批量添加到生词本
的单词,一键添加到扇贝的生词本上。,200个单词起码得添加10分钟。),从请求cookie中截取。填入你需要添加到生词本的单词。一个个单词手动添加过于。
2024-11-05 15:08:39
508
原创 【JVM源码】-UseSerialGC-DefNewGeneration-对象内存分配
在JVM初始化时就已经创建了若干个对象,此时 Eden / To / From区的内存使用情况。大部分情况下是不会在From区分配对象的,在Eden区可用空间不足后将执行YoungGC。如果对这块不熟悉也没有关系,毕竟这篇文章的主题是堆的内存分配,而不是字节码的执行。个Zzzj对象后:此时 Eden / To / From区的内存使用情况。字节码的执行也是非常复杂的一部分,感兴趣可以参考。已经超出了eden区的大小,所以会分配在老年区。同上,size的单位是8字节,物理大小为。
2024-10-31 17:55:37
1042
原创 油猴脚本-检测力扣[数学][脑筋急转弯]题型
相关题型,可以通过该油猴脚本检查并且显示在页面上。数学和脑筋急转弯 讨厌死了😠😠😠。刷题但是又不想看题目。
2024-10-31 17:08:45
199
原创 Spring-Repackage:Spring-Boot项目打包原理
是指SpringBoot应用打包时,会生成一个Spring-Boot应用的jar包,可以直接通过执行其原因是因为在接管了maven生命周期中的package改变了打包的行为,不再生成默认作为类库形式的jar包,而是生成一个可执行jar包。
2023-09-10 21:38:41
1396
1
原创 Mybatis的Mapper扫描机制:@MapperScan源码
通过@Import注解导入了MapperScannerRegistrarMapperScannerRegistrar向容器中注入是一个BeanDefinitionRegistryPostProcessor,将会被Spring容器回调方法在方法中创建了,并且调用ClassPathMapperScanner的scan方法重写了父类ClassPathBeanDefinitionScanner的doScan方法,在扫描完Bean获取到BeanDefinition后,在方法对其进行了额外的处理。
2023-09-03 22:08:13
8238
原创 Spring的Bean扫描机制:ClassPathBeanDefinitionScanner源码
ClassPathBeanDefinitionScanner是如何扫描包下的类的
2023-09-03 14:58:56
816
原创 使用Java实现Replication协议(1):请求dump mysql binlog
具体来说,就是通过Java代码与MySQL服务端进行交互,使用 “dump” 命令获取MySQL数据库的二进制日志(binlog),并将其中的事件(event)进行解析。本次开发都是基于Mysql官方文档的描述 ( 我在写这篇博客时,文档对应的版本为:8.1.0 )说真的,一点也不难,整体代码量很少,只要大家多看文档,跟着文章一步步操作,一定可以实现。是一个非常厉害的抓包软件,内嵌了市面上绝大部分协议的解析, 其中就包括。文档上也有一些错误的描述,可能是更新不及时导致的。我使用的是php study。
2023-07-25 23:36:34
474
原创 使用Java实现Replication协议(2):与Mysql进行握手
根据Mysql协议的定义,无论是我们发送的数据包,还是服务端响应的数据包都该满足以下格式字段类型字段名称字段含义int数据负载包长度int序列号stringpayload数据负载包,注意,这里的var指就是数据包文档链接那么int又是什么呢根据Mysql数据类型规定,int就是长度为3的整形,属于类型类型还有以下候选值int: 1 字节整形int: 2 字节整形int: 3 字节整形int: 4 字节整形。
2023-07-25 23:35:54
309
原创 Spring-Cloud源码:加载Nacos远程配置到Spring容器中
在spring-cloud-starter-alibaba-nacos-config.jar包中的。接下来,将继续分析,从Nacos获取到的配置,是如何放入Spring的Environment中的。至此:如何从Nacos读取配置放入到Spring的Environment的源码分析就结束了。这一块属于Spring-Cloud的源码知识,就不深究了。这块属于Nacos的源码,在本章中就不继续深究了。用于加载额外的配置,应用场景比较少,且。的方法细节就不去深究了,其目的就是将将。方法,接着往下看未分析的代码。
2023-06-04 20:41:17
785
原创 Spring-Cloud源码:@RefreshScope
注解标注的class,会生成两个BeanDefinition一个是LockedScopedProxyFactoryBean :用于生成代理对象一个是class对应的BeanDefinition,我们暂成为原始BeanDefinition :用于生成原始Bean原始Bean是不可被注入的,实际上注入的都是代理Bean代理Bean执行方法时,都是通过获取原始Bean来执行的原始Bean是一个Scope类型的Bean,通过对象来获取原型Bean具有缓存机制。
2023-06-03 19:52:12
496
2
原创 Spring-Cache源码:基于注解的缓存
首先,通过注解引入注入到容器中将注入到容器中基于Spring-AOP创建代理对象代理对象执行方法时被拦截将@Cacheable@CachePut转换为对应的在execute()方法中基于介入方法的执行流程,处理各种缓存逻辑。
2023-05-29 17:48:40
307
1
原创 Spring-AOP源码
有 Doug Lea 写代码那味了, 如果没有花括号就更像了(手动狗头)介入对象创建生命周期并且创建代理的流程就已经结束了。注解定义的切面,就是在这里被找到并且被包装为。为空,那么表示没有为当前bean找到合适的。这样写的好处就是一行代码做了两件事,代理对象的,不应该也不需要被代理。核心方法,找到可以为当前类使用的。,也就不需要为其创建代理,直接把。什么条件下这个判断才能成功呢?子类重写了该方法,具体会调用到。中最最核心的类,由该类介入。—> 进入5.3跟踪源码。—> 进入5.4跟踪源码。
2023-05-28 18:11:39
241
原创 Spring-AOP源码-ProxyFactory
可以看到,这里还没有组装拦截器链条,只是有一层缓存的逻辑。用于作为方法结果返回的,也就是真正的执行器链对象。那么执行代理对象的任何方法都会执行到当前对象的。在ProxyFactory使用篇章中有提到过,是Spring-AOP中非常核心的类,如果不懂。99%的情况下都是这个分支,例如我们直接使用。一个优化点,如果提前检查过了,那么就不再通过。方法了,代理对象的任何方法执行前都会执行。可以基于类和方法判断是否进行切入,类创建了代理对象,且第三个参数。,还有一些其他的属性,例如。接口下的实现类转换为。
2023-05-13 16:42:46
629
原创 Spring番外篇-ProxyFactory
如果希望在当前方法中拿到被增强后的对象,可以借助。注解,在注解内指定表达式,最终该类就会被封装成。注:Spring创建代理时,最常用的。注:Spring创建代理时,最常用的。注解,最终该增强类就会被封装成。在代理对象执行方法时,通过。创建静态代理有什么好处?创建代理时:给增强类标注。根据输出结果可以发现,创建代理时:给类标注。指向的未被代理的对象。
2023-05-03 23:17:03
328
原创 Spring番外篇-ResolvableType
再进行注入,其实就是使用了ResolvableType。在Spring的依赖注入中,如果给依赖类声明了。,Spring甚至可以。
2023-05-02 21:36:39
404
原创 Spring番外篇-AliasFor注解
假设定义了这样一个组合注解,可以同时指定Dubbo和Spring的包扫描路径。(为什么要定义两个意义一样的属性呢?方便调用者使用,例如。都是一个意思,标识了groovy脚本的路径。那么声明这一个注解,就相当于同时声明了。@AliasFor声明的两个属性,必须。属性可以省略key,而使用。注解,注解内部定义的。注解标注后,无论获取。
2023-04-09 21:47:32
371
原创 Spring番外篇-PropertyAccessor
BeanWrapper所有的属性操作都是调用getter/setter方法完成的。如果类定义了字段,但是没有getter和setter,那么无法为这个字段赋值。DirectFieldAccessor通过直接访问字段为属性赋值。PropertyAccessor又分为两种。使用BeanWrapper为对象赋值。key:通常为字符串类型,支持嵌套。执行完后,对象的json形式如下。执行完后,对象的json形式如下。有一个Student类定义如下。value: 任意类型。
2023-04-08 18:11:49
344
原创 Spring番外篇-ListenableFuture
其实更好的方式是给future添加一个listener,成功或者异常后回调listener。,因为功能非常强大,性能也很优秀,Doug Lea大神对其的优化无所不用其极。这个线程池定义了两个方法返回ListenableFuture。什么情况下该使用ListenableFuture。就对原生的Future做了增强,提供了。(redis客户端)就大量地使用了。诞生于Spring4.0,晚于。在Spring团队后面创造的。,当时Netty4也晚于。所以Spring创造了。其他情况下都更推荐使用。
2023-04-08 17:29:10
1067
原创 使用Spring获取方法参数名
结合maven的源码,可以看到,上面pom的配置对应的就是源码中的这个属性。可以看到,在编译后,就已经把方法的名称存储到了常量池中,直接就可以通过。获取TestClass的方法参数名以及构造方法参数名。假设我们有一个TestClass, 定义如下。可以看到这次的class文件中已经不包含。但是任然可以通过局部变量表获取参数名称。属性为true时,就会在编译时添加。使用maven编译时开启。根据源码的注释得知,当。属性默认为true,日志级别可以看到执行。
2023-04-02 21:50:01
1059
原创 Spring番外篇-SearchStrategy.INHERITED_ANNOTATIONS
其实jdk是可以获取父类上的注解的,但是有一个。,那就是作用于父类上的注解必须使用。
2023-03-25 19:37:54
377
原创 Spring番外篇-MergedAnnotations
所以Spring提供了MergedAnnotations,使获取注解上更加的容易和"人性化"以下为创建MergedAnnotations最常用的两个方法 ( static )因为在JDK中提供获取注解的api过于简易,稍微复杂一点的场景就无法胜任。MergedAnnotations:合并了。方法1实际上是方法2的重载。
2023-03-25 19:37:51
1973
原创 VUE-ElementUI,DatePicker组件在移动端阻止键盘弹出
由于公司的项目需要运行平板上。但是DateTimePicker的时间输入框在平板上弹出的键盘会挡住时间的选择,最近公司的前端小伙伴一直在头疼这件事。我就看了一下DateTimePicker组件的源码,结合自己对Vue的浅显认知,添加了下面的代码// 由于DatePicker本身是可以输入的,将该props置为false,点击时也不会弹出输入框// 需要在Vue.use前覆盖属性Element.DatePicker.props.editable = falseVue.use(Element,
2020-12-11 14:40:30
4712
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人