- 博客(215)
- 资源 (14)
- 收藏
- 关注
原创 Spring之CGLIB和JDK动态代理底层实现
Spring会自动在JDK动态代理和CGLIB之间转换:1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库本文主要讲解CGLIB和JDK动态代理的使用和底层原理。
2024-04-17 23:50:34 928 2
原创 Spring拓展点ConfigurationClassPostProcessor解析流程
ConfigurationClassPostProcessor是一个bean工厂的后置处理器,它重写了两个方法,最重要的方法是postProcessBeanDefinitionRegistry,主要是解析配置类,生成BeanDefinition注册到bean工厂中。
2024-04-08 23:31:15 26
原创 Spring拓展点之SmartLifecycle如何感知容器启动和关闭
Spring拓展点SmartLifecycle在容器启动阶段实例化所有单例对象后,获取所有实现SmartLifecycle的类,执行start方法;在容器关闭时,先获取所有实现SmartLifecycle的类,执行stop方法,最后清除所有单例对象。
2024-04-03 22:22:16 1173 4
原创 Spring之BeanFactoryPostProcessor详解
BeanFactoryProcessor是spring的一个拓展点,它的作用时机是在加载完所有的beanDefinition,还未实例化前。可以对beanDefinition进行加工,但是不可以加载beanDefinition。BeanDefinitionRegistryPostProcessor是BeanFactoryProcessor的子接口,增强了功能,既可以对beanDefinition加工,还可以加载自定义的beanDefinition。
2024-04-02 23:33:15 865
原创 Spring之ApplicationListener实现监听原理
ApplicationListener实现监听的原理就是使用了ApplicationListenerDetector类,这是一个bean后置处理器,在容器启动中,ApplicationListenerDetector先被实例化,然后实例化其他非懒加载的bean对象时,ApplicationListenerDetector会作用于这些非懒加载的bean对象,判断对象是否实现了ApplicationListener接口,若实现了则注册到容器的监听器列表中。
2024-04-02 13:41:04 997
原创 Spring注解@EventListener实现监听原理
@EventListener实现原理主要通过EventListenerMethodProcessor和DefaultEventListenerFactory这两个类实现。EventListenerMethodProcessor的作用是识别所有使用eventListener注解的方法DefaultEventListenerFactory将EventListenerMethodProcessor识别出的方法封装成为监听器类以代码new AnnotationConfigApplicationContext为入
2024-03-31 18:43:17 1053
原创 Spring依赖注入之循环依赖问题详解
对象A依赖对象B,对象B依赖对象A,这是一种常见的依赖关系。为什么spring会有循环依赖问题?spring是怎么解决循环依赖问题
2023-11-21 15:25:27 150
原创 Spring之Bean生命周期流程详解
BeanDefinition合并之后,就可以去创建Bean对象了,而创建Bean就必须实例化对象,而实例化就必须先加载当前BeanDefinition所对应的class,在AbstractAutowireCapableBeanFactory类的。如果beanClass属性的类型是Class,那么就直接返回,如果不是,则会根据类名进行加载(doResolveBeanClass方法所做的事情)会利用BeanFactory所设置的类加载器来加载类,如果没有设置,则默认使用。主要是推断构造函数去生成一个对象。
2023-11-07 23:55:09 185
原创 仿spring-framework源码实现手写一个IOC容器
第一步根据扫描路径获取类信息即bean定义,第二步实例化容器中单粒bean,实例化过程分为5步1.根据构造函数new对象 2.依赖注入 3.初始化前【介绍了postcontruct和后置处理器两种方式】4.初始化-主要是实现了InitializingBean方法 5.初始化后-主要是进行AOP过程,实例化后加到单例对象集合singletonObjects。
2023-11-06 00:00:36 61
原创 Java中BitSet和Set统计不重复字符数量时间复杂度和空间复杂度分析
看来每个问题都不只有一种解法,每一种解法优缺点分析需要理解底层的逻辑,并借助工具去呈现最终的结果,只要我们想到并且动手实践,也许也没有那么难。
2023-05-30 02:14:19 650
原创 一文了解Hotspot虚拟机下JAVA对象从创建到回收的生命周期
Java虚拟机是Java的核心和基础,他是Java编译器和操作系统平台之间处理器,能实现跨平台运行Java程序。本文主要讲解的是Java对象在JVM虚拟机中被创建到回收的流程
2023-02-18 22:05:30 574
原创 【智能合约实战】——入门级DAPP,没有想象中那么难
Dapp就是去中心化应用程序的简称,是以某种方式连接到区块链的在线应用程序。从理论上讲,dapp是运行在节点服务器上面的,而dapp的整个后端存储是在区块链而不是服务器上完成的,重点是dapp的数据是存储在区块链上的,不是中心数据库;DApp的使用方式与其他任何app都相同。......
2022-07-29 10:57:45 3511 1
原创 【Elastic-Job源码分析】——作业监听器
参考文档:[芋道源码-Elastic Job Lite](http://www.iocoder.cn/categories/Elastic-Job-Lite/) 下载源码地址:[Elastic-Job源码地址](https://github.com/apache/shardingsphere-elasticjob) Elastic-Job官网地址:【[Elastic-Job官网文档地址](https://shardingsphere.apache.org/elasticjob/)】 Ela
2020-11-29 23:03:07 432
原创 【Elastic-Job】分布式调度任务概览篇
前言 本司主要现在业务使用的技术就是当当网的Elastic-Job,刚刚使用的时候只是为了快速满足业务需求而引入的一项技术,符合主要的功能特征就是支持分布式的分片处理机制,非常适用于我司大数量的处理内容 在开始之前先了解一些基础概念什么是调度任务 任务调度是系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力由系统自动去执行任务 什么是分布式调度任务 将一个任务拆分成多个独立的任务项,由分布式的服务器分别执行某一个或几个分片项分布式任务调度需求
2020-11-23 00:07:22 292 2
原创 linux环境下kafka的搭建
一.kafka基本实现配置准备环境:zookeeper的单机环境和kafka的单机环境1.启动zookeeperbin/zookeeper-server-start.sh config/zookeeper.properties2.启动Kafkabin/kafka-server-start.sh config/server.properties3.创建topicbin/kafka-t...
2019-08-11 20:41:30 194 2
原创 Java并发编程——线程通信
1.wait和notify方法(配合synchronize使用,属于Object方法)2.CyclicBarrier使用场景每一个线程代表一个跑步运动员,当运动员都准备好后才一起出发,只要有一个没有准备好,就大家都等待。3.CountDownLatch使用场景经常用于监听某一些舒适化的操作。等初始化执行完毕之后,通知主线程继续工作。
2019-03-03 19:54:45 378
原创 【小白学python】——python内功心法
每学习一门语言之前,掌握其基本的语法,数据类型,数据结构都是及其重要的,这是重要的基石,所以本篇主要是从这三部分了解python
2019-02-23 18:44:49 320 1
原创 使用git命名将项目代码上传到gitlab
1.在gitlab上面创建一个新的项目2.在本地项目的文件目录下创建一个.gitignore文件,将一些本地的配置忽略/target/!.mvn/wrapper/maven-wrapper.jar### STS ###.apt_generated.classpath.factorypath.project.settings.springBeans.sts4-cache#...
2018-12-07 16:38:17 450 1
原创 验证zookeeper安装成功四字命令
telnet localhost 2181输出结果:Trying ::1...Connected to localhost.Escape character is '^]'.直接向下输入srvr然后会显示zookeeper的信息:Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built o...
2018-12-06 20:36:57 4561 1
原创 Kafka命令行详细介绍
小编的kafka的主要命令路径是:cd /usr/local/Cellar/kafka/2.0.0/bin主题的命令1.创建分区kafka-topics --alter --zookeeper localhost:2181 --topic test --partitions 32.创建主题kafka-topics --create --zookeeper localhost:218...
2018-12-06 17:03:20 853 1
原创 mac10.14中安装mysqldb
内容在python2.7中安装mysqldb,随着mysql版本的升高,libmysqlclient.dylib版本也会升高,如果是5.7版本的mysql,对应应该是libmysqlclient.18.dylib 版本,所以大家一定要看清楚!我的mysql版本是8.0.12 ,所以对应的libmysqlclient的版本是21,当我下载了使用命令下载mysqldb,如下:1.安装mysql版本...
2018-10-20 15:04:21 773 1
原创 小白学爬虫——爬虫入门
前言之前对爬虫也只是知道大概是干什么,但是真正如何去做,却真的没有接触过。学习爬虫技术,我面临两大难题,一个就是python语言,一个就是爬虫框架。这些知识将再以后的博文中涉猎,此篇主要是介绍一个网络爬虫的知识。内容1.学习爬虫有哪些意义?学习爬虫,私人定制一个搜索引擎,并且可以根据搜索引擎的数据采集工作原理有更深层次的理解。大数据时代,要进行数据分析,就需要有数据源,学习爬虫,可以获...
2018-10-20 12:39:31 724 2
原创 【SpringCloud】——之注册中心Eureka详解
前言了解Dubbo注册中心的小伙伴们肯定对于SpringCloud的注册中心Eureka充满了好奇,Eureka为什么能够成为内容Eureka是什么? Eureka是Netfilx的一个子模块,也会核心模块之一,基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,服务注册于发现对于微服务架构师非常重要的,有了服务发现,主要使用服务的标识符,就可以访问到服务,而不...
2018-09-02 15:25:16 787
原创 Java并发编程——Executor框架
在公司中处理kafka任务时,我运用了线程池来创建多个线程处理来处理kafka命令。当然创建的线程是固定线程池,当时的考虑是因为资源的有限性,并且当时是对kafka中传过来的视频和图片多编解码,所以占用时间又点长。为了合理利用线程池,专门去学习关于这方面的知识,分享给大家!
2018-08-19 21:46:34 447 2
原创 多线程的三种设计模式的介绍
前言 并发设计模型属于设计优化的一部分,它是对一些常用的多线程结构的总结和抽象。与串行程序相比,并行程序通常更为复杂。因此合理的使用并行模式在多线程开发中具有意义,本篇主要讲解一下Future,Master-Worker和生产者-消费者模型 内容Future模式Master-Worker模式生产者-消费者模式一:Future模式主要的适用场景是异步请求数据。比如我们发送aj...
2018-08-12 21:39:06 3770 2
原创 SpringBoot基于@ControllerAdvice配置全局异常处理
异常处理类:public class GlobalException extends RuntimeException{ private static final long serialVersionUID = 1L; private CodeMessage cm; public GlobalException(CodeMessage cm){ s...
2018-08-05 16:03:03 5719 2
原创 SpringCloud-微服务架构
在讲springCloud之前讲讲为什么要有springCloud,从学习中知道springCloud的兴起是因为Dubbo社区五年没有更新,在计算机这个行业里面五年没有进步真的太恐怖了,所以springCloud火热起来,以绝对的优势横扫分布式领域。虽然现在Dubbo已经开始活跃,但是springCloud绝不会被取代,而是蒸蒸日上,这时候我相信你和一样,肯定想知道原因。springClou...
2018-07-29 21:41:53 562 32
原创 es6高级新特性
1.函数的rest参数和扩展:动态参数es5之前写多个参数函数的方式functionsum(x,y,z){lettotal=0;if(x)total+=x;if(y)total+=y;if(z)total+=z;console.log(`total:${total}`);}sum(5,"",9);es6添加rest参数之后可以写成如下方式,动态添加参数:functi...
2018-07-22 21:54:26 577 7
原创 【mysql优化五】——sql语句优化查询
order by 优化 orderby最好不要使用select *; 尝试提高sort_buffer_size 尝试提高max_length_for_sort_data 【解答】:创建复合索引:create index idx_three on tblA(age,birth,addr);1.索引最左前缀,orderby 使用索引有效 s...
2018-07-13 15:52:46 982 8
原创 【mysql学习三】——索引搜索优化
1.查询表中所含有的索引:show index from tb_item;| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Vi...
2018-07-13 15:38:33 289 7
原创 【mysql学习四】——批量导入sql语句脚本模板
前言工作中总有需要创建一系列的假数据进行系统的功能或者是性能的测试,作为一名专业的开发者,学会批量导入数据脚本是基本功!内容前提: 在创建函数之前需要开启log_bin_trust_function_creators,否则出现如下的错误: 查看log_bin_trust_function_creatorsshow variables like 'log_bin_trus...
2018-07-12 18:04:48 712 4
原创 【mysql学习二】——从架构到基本配置讲解
前言虽然不是DBA,但是了解mysql的一些基本知识对于我们提高自身水平和提高书写sql语句性能有帮助!内容1.配置文件: 文件名称 作用 二进制日志log-bin 用于主从复制 错误日志log-error 默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等 查询日志log 默认是关闭的,记录查询的sql语句,如...
2018-07-10 17:24:46 211 4
dom4j-1.6.1.jar和jaxen-1.1.beta.jar
2017-03-14
plsqldeveloper64位安装包下载
2017-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人