自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 netty源码之Channel:注重NioServerSockerChannel和NioSocketChannel

netty源码之Channel:注重NioServerSockerChannel和NioSocketChannel

2022-06-09 17:45:56 381 1

原创 【netty源码之ChannelHandlerContext】

netty源码之ChannelHandlerContext

2022-06-07 18:18:16 2024

原创 Netty源码分析之ChannelPipline

Netty源码分析之ChannelPipline

2022-06-07 10:37:45 174

原创 【mysql在索引字段字符集不同时索引是否生效】

深入探究零拷贝欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入https://blog.csdn.net/u010711495/article/details/119075935https:

2022-06-07 10:29:50 275

原创 原生JDK网络编程之NIO篇

原生JDK网络编程之NIO篇一、NIO是什么    NIO库是在JDK1.4中引入的。NIO弥补了原来的I/O的不足,它在标准Java代码中提供了高速的、面向块的I/O。    NIO可以称为 no-blocking io 或者 new io都可以。二、NIO和BIO的主要区别1、面向流和面向缓冲    BIO是面向流的,NIO是面向缓冲区的。  &nbs

2022-05-09 15:43:35 521

原创 Netty组件之ChannelOption

Netty组件之ChannelOption一、常用属性1、ChannelOption.SO_BACKLOG2、ChannelOption.SO_REUSEADDR3、ChannelOption.SO_KEEPALIVE4、ChannelOption.SO_SNDBUF和ChannelOption.SO_RCVBUF5、ChannelOption.SO_LINGER6、ChannelOption.TCP_NODELAY7、ChannelOption.CONNECT_TIMEOUT_MILLIS二、了解即可属性

2022-05-09 15:09:51 5034

原创 RPC简介

RPC简介一、为什么要有RPC    随着项目业务越来越复杂,业务量越来越大,单个应用或者一台机器的资源肯定是背负不起的。那现在应该怎么做?将核心业务抽取出来,作为独立的服务,放到其他服务器上或者形成集群。这个时候就会请出RPC,系统演变为分布式的架构。二、什么是RPC    RPC,Remote Procedure Call,远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术。三、

2022-05-06 12:31:51 8648 1

原创 一次完整的http请求过程

一次完整的http请求过程1、DNS域名解析    解析地址顺序:        (1)浏览器自身的DNS缓存(缓存时间比较短,大概只有一分钟,且只能容纳1000条缓存);        (2)如果浏览器自身缓存里找不到,那么浏览器会搜索系统自身的DNS缓存;   &nb

2022-05-05 14:41:46 3593

原创 一个完整的URL

一个完整的URL一个完整的URL举例一个完整的URL组成部分及解释一个完整的URL举例    http://www.wgdhome.com:8080/file/index.asp?username=wgd&password=123#login一个完整的URL组成部分及解释1、协议部分    该URL的协议部分就是“http:”,这代表网页使用的是http协议。在Internet中可以使用多种协议,如HTTP,F

2022-05-05 14:22:10 4018

原创 SpringAop获取代理对象的真实实例、代理类及所有切面

SpringAop获取代理对象的真实实例、代理类及所有切面获取一个代理实例的真实对象 /** * 获取一个代理实例的真实对象 * @param proxy * @return * @throws Exception */ public static Object getTarget(Object proxy) throws Exception { if (!AopUtils.isAopProxy(proxy)) {

2022-01-13 14:21:41 4569

原创 Spring AOP入口类的实例化

Spring AOP入口类的实例化入口类注册1.两注解只有其中一个1.1 @EnableTransactionManagement1.2 @EnableAspectJAutoProxy2. 两注解共存入口类注册@EnableTransactionManagementInfrastructureAdvisorAutoProxyCreator@EnableAspectJAutoProxyAnnotationAwareAspectJAutoProxyCreator1.两注解只有其中一个1.1 @E

2022-01-13 11:45:15 170

原创 mysql在同一个表中统计复杂条件的数量

示例表及需求需求,在一个表中根据条件统计数量,且这些条件之间有交叉。如下图所示。如果只是针对不同的type进行数量统计的话,我们使用group by就可以达到目的。但是我们看下面的条件,不仅对type有一个区分,而且在type中还要统计其他的条件sex。原始想法Union统计量多不怕,只要我们分开统计,多搞几个临时表就解决了,如下图所示:select sum(女剑修数量) as '女剑修数量',sum(女剑修宗门数)as '女剑修宗门数',sum(剑修数量)as '剑修数量', sum(

2021-03-30 15:00:52 503

原创 以代码流程方式探索Spring源码(十一)--Bean的循环依赖与三级缓存

以代码流程方式探索Spring源码--Bean的循环依赖与三级缓存初始化Bean在什么时候添加三级缓存什么时候从缓存中取呢什么时候会存放到一级缓存呢瞧瞧那个匿名函数整理一下一个问题:为什么非要用三级缓存初始化Bean在什么时候添加三级缓存1、在createBeanInstance()创建Bean实例和applyMergedBeanDefinitionPostProcessors()注解收集之后2、在populateBean()属性赋值和initializeBean()实例化方法之前前置条件:earl

2021-03-18 17:30:14 164

原创 以代码流程方式探索Spring源码(十)--Bean实例化4--initializeBean--实例化及依赖注入后的初始化方法

以代码流程方式探索Spring源码--Bean实例化4--initializeBean--实例化及依赖注入后的初始化方法入口对普通Aware的调用Bean初始化前对BeanPostProcessor的一些调用正儿八经的初始化方法初始化后的BeanPostProcessor的一些调用入口在该方法中只要有三部分:1、各种Aware的调用2、各种初始化方法的调用3、各种BeanPostProcessor的调用对普通Aware的调用在这个地方主要对三种Aware接口进行对应的set方法调用。1、

2021-03-17 14:00:13 191

原创 从JDK看看Java中String使用replace()方法和replaceAll()方法进行子串替换

Java中String使用replace方法和replaceAll方法进行子串的替换

2021-03-16 10:15:31 441

原创 从spring源码角度理解@PostConstruct和@PreDestroy注解是怎么工作的

从spring源码角度理解@PostConstruct和@PreDestroy注解是怎么工作的

2021-03-13 17:45:14 148

原创 以代码流程方式探索Spring源码(九)--Bean实例化3--populateBean--IOC和DI执行的地方

以代码流程方式探索Spring源码--Bean实例化3--populateBean--IOC和DI执行的地方入口:populateBean()对InstantiationAwareBeanPostProcessor的使用入口:populateBean()收集注解后,会对条件合适的bean进行三级缓存操作,这一步先跳过,与循环依赖一起研究。目前我们已经通过实例化方法创建了我们的bean实例,但是是一个裸实例,存在于堆内存,但是没有属性值,在populateBean方法中进行属性的填充,这个时候回发生DI

2021-03-06 16:05:37 151 1

原创 Mysql查询时的多表连接查询,默认连接,等值连接,JOIN,LEFT JOIN,RIGHT JOIN,INNER JOIN

Mysql查询时的多表连接查询举个栗子等值连接自然连接:NATUEAL JOIN内连接:INNER JOIN或JOIN左外连接:LEFT OUTER JOIN或者LEFT JOIN右外连接:RIGHT OUTER JOIN或者RIGHT JOIN交叉连接(笛卡尔连接)举个栗子我们创建两张表来进行实验:Table1:wgd_testTable2:wgd_test1后面为了展示RIGHT JOIN在Table2中新增了一条等值连接从上图中可以看出,该连接是在where子句中使用=号将两个表

2021-02-22 15:42:07 4086 1

原创 以代码流程方式探索Spring源码(八)--Bean实例化2--createBeanInstance与注解收集

以代码流程方式探索Spring源码--Bean实例化2入口:createBeanInstance()入口:createBeanInstance()instanceWrapper = createBeanInstance(beanName, mbd, args);在其中有四类:1、实例化factoryMethod方法对应的实例。2、实例化带有@Autowired注解的有参构造函数。3、实例化没有@Autowired注解的有参构造函数。4、实例化无参构造函数。...

2021-02-21 15:40:03 172

原创 以代码流程方式探索Spring源码(七)--Bean实例化1--getBean--createBean

以代码流程方式探索Spring源码--Bean实例化1入口:refresh()中的finishBeanFactoryInitialization(beanFactory);getBean():bean实例化的真正入口单例Bean的实例化createBean()准备进入内核了预知后事如何,且听下回分解入口:refresh()中的finishBeanFactoryInitialization(beanFactory);在此方法中,Spring完成了其初始化过程中的核心:Bean的实例化,在Bean实例化的过

2021-02-19 15:29:42 222

原创 Java中的public static final来修饰数组与接口变量

Java中的public static final来修饰数组与接口变量public static final来修饰数组final对数组的作用怎样实现对数组的public static final作用public static final来修饰数组举个栗子:public class A{ public static final String[] head = new String[]{"hello",“java”};}上述的代码片段在使用的时候是不会有什么问题的,但是如果你使用SonarLint

2021-02-19 10:53:01 5251 3

原创 以代码流程方式探索Spring源码(六)--初始化事件管理类及注册事件类

以代码流程方式探索Spring源码--初始化事件管理类及注册事件类初始化事件管理器initApplicationEventMulticaster()onRefresh()方法往事件管理类中注册事件类registerListeners()举个栗子Spring提供的五种标准事件补充一点入口还是在refresh()方法中初始化事件管理器initApplicationEventMulticaster()首先获取beanFactory实例,这里返回的就是DefaultListableBeanFactory实例

2021-02-13 23:09:55 143

原创 以代码流程方式探索Spring源码(五)--BeanPostProcessor接口类的实例化

以代码流程方式探索Spring源码--BeanPostProcessor接口类的实例化入口:refresh()方法中的registerBeanProcessors(beanFactory)根据类的类型获取实现了BeanPostProcessor接口的类遍历得到的这些类的名字,根据优先级进行分类存入不同的List先把实现了PriorityOrdered接口的类进行实例化注册把实现了Ordered接口的类进行实例化注册最后处理没有优先级别的BeanPostProcessor重复注册内部的BeanPostProc

2021-02-13 21:56:14 211

原创 以代码流程方式探索Spring源码(四)--BeadDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的调用

以代码流程方式探索Spring源码--BeadDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的调用BeanDefinitionRegistryPostProcessor是做啥的Spring在初始化的过程中是怎么做的?1、把beanFactoryPostProcessors里面的处理类进行分类2、获取实现了BeanDefinitionRegistryPostProcessor接口的所有类的BeanDefinition对象的beanName3、先

2021-02-12 21:50:16 193

原创 Spring源码解析默认BeanDefinition标签时的lookup-method标签和replaced-method标签的使用

Spring源码解析默认BeanDefinition标签时的lookup-method标签和replaced-method标签的使用lookup-method标签的使用replaced-method标签的使用lookup-method标签的使用首先有一个接口People类,它有一个展示性别的方法:它有一个子类Women类实现了此接口,并对showsex()方法进行了重写:额外的有一个service类来做业务方法:可以看到在此类中有一个展示性别的showsex()方法,但是它其中真正的实现是使

2021-02-09 21:33:57 165

原创 以代码流程方式探索Spring源码(三)--自定义BeanDefiniton的解析

以代码流程方式探索Spring源码--默认BeanDefinition的解析自定义标签是什么样儿的根据当前解析标签element找到该标签对应的namespaceUri加载spring中所有的jar包中的spring.handlers文件,并建立映射关系。根据namespaceUri从映射关系中找到对应的实现了NamespaceHandler接口的类![在这里插入图片描述](https://img-blog.csdnimg.cn/2021020410373448.png#pic_center)调用对应类的i

2021-02-04 11:48:18 272

原创 以代码流程方式探索Spring源码(二)--默认BeanDefiniton的解析

以代码流程方式探索Spring源码--默认BeanDefinition的解析

2021-02-01 18:26:35 159

原创 以代码流程方式探索Spring源码(一)--BeanDefiniton解析的准备工作

以代码流程方式探索Spring源码--BeanDefinition的生成梦开始的地方传统手艺Spring容器的初始化一切从一个构造函数说起refresh()、refresh()、refresh()重要的方法说三遍1、obtainFreshBeanFactory()在这个方法中完成了beanFactory的新建和beanDefinition的生成。下面就对这个方法中的具体细节进行探索。2、loadBeanDefinitions(beanFactory);梦开始的地方这段时间在跟随Jack老师学习Sprin

2021-01-31 15:23:23 118 3

原创 Java下载压缩文件

Java下载压缩文件List<File> files = new ArrayList<>();String fileName = URLEncoder.encode("文件名" + dateToDayString + ".zip", "UTF-8");response.setContentType("multipart/form-data");response.setHeader("Content-Disposition", "attachment;fileName=" +

2020-12-18 18:14:51 462 1

原创 COS的配置及使用

COS的配置及使用COS(Cloud Object Service) 对象存储服务。高可用、高稳定、强安全的云端存储服务,可以将任意数量和形式的非结构化数据放入COS,并在其中实现数据管理和处理。Maven依赖<dependency> <groupId>com.qcloud</groupId> <artifactId>cos_api</artifactId> <version>5.6.24</version&g

2020-12-18 16:42:22 2493 1

原创 @Transient注解理解

@Transient注解理解java 的@transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字@transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。用法@Transient 就是在给某个javabean上需要添加个属性,但是这个属性你又不希望给存到数据库中去,仅仅是做个临时变量,用一下。不修改已经存在数据库的数据的数据结构。只要在你准备添加的临时属性上添加这个注解,然后getter和setter自动完成一下,就可以啦。作用我

2020-11-20 10:39:56 224

原创 @PostConstruct注解的原理使用与注意事项

@PostConstruct注解的原理使用与注意事项基本概念@PostConstruct是java5的时候引入的注解,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。@PostConstruct被用来修饰一个非静态的void()方法。@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。执行时机开始====>Web容器加载servlet====>Serv

2020-11-20 10:30:46 1169

原创 链接保存

详细解析Mysql底层索引原理:https://blog.csdn.net/weixin_38405253/article/details/106678416

2020-11-20 09:36:07 160

转载 Cron表达式详解

Cron表达式Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:(1) Seconds Minutes Hours DayofMonth Month DayofWeek Year(2)Seconds Minutes Hours DayofMonth Month DayofWeek一、结构corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份二、各字段含义字段允许值允许的特殊符号

2020-11-16 11:26:06 541

原创 SpringBoot与Redis的整合

POM文件中加入依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>如果执行不成功,加入下面两个其中的一个依赖即可:<dependency> <groupId>org.a

2020-09-25 13:57:10 120

空空如也

空空如也

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

TA关注的人

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