自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天涯何处无芳草,相逢何必曾相识。

我不道啊,我要学习了。

  • 博客(42)
  • 收藏
  • 关注

原创 【源码分析】Spring MVC类型转换器匹配

之前一直以为类型转换器是通过遍历的方式挨个匹配,直到匹配到合适的类型。但是一想到有这么多类型,如果挨个匹配不仅效率慢,而且还容易出错,翻翻源码,看到了类型转换的转换规则如下。这里便是最终转换的地方,这个方法很庞大,我这里只保留我代码经过的地方。os: 构建springmvc源码失败,,真难受。到这里才算真正找到了处理类型转换的地方。

2023-06-09 17:04:41 238

原创 【源码分析】Spring中getBean方法简单解析

所以当我们获取bean时,会根据Scope属性,分为几种情况。下面来观察一下源码。首先还是和上面一样看能比能在单例池中获取到这个对象,获取不到直接进入后面的方法。这个方法便是获取的bean是属于哪种scope,进而继续判断,下面分段解析。如果在单例池获取到了当前获取的bean,就直接返回了。在容器加载完的时候,单例的bean都已经被解析为。这里又调用了doGetBean方法,没什么好说的。先看看要创建的bean,是否依赖了别的bean。并且,单例bean被初始化并且存储在。

2023-06-01 15:21:40 369

原创 【源码分析】Spring如何解析xml文件生成BeanDefinition

Spring将Xml文件转换为Document对象,再对Document对象中的元素进行遍历、解析、分类、存储等。

2023-05-31 20:27:12 568

原创 我的创作纪念日

这一年来学到的技术越来越多,代码量也在增长,一行行代码在指尖流出,让自己不禁生出一种自豪感。那是我的起点,也会见证我成长的过程。当然出现了自己也不知道的问题,还是尽可能的去搜索引擎搜索。这段时间在新的项目中忙碌,也好久没更新过了,但是一直在不断的更新着自己本地的笔记。还是很喜欢写博客的,总结自己学习或者工作上的问题。我感觉最有趣的时候就是找Bug的时候,在满篇都认识的代码中,找到哪里出了问题。如果此时并未找到问题,也可以确定代码没有问题,这时候就可以去怀疑是否依赖的包是否有冲突、运行环境是否有问题等。

2023-04-21 11:57:45 119

原创 SpringMVC基础源码分析(一)

如果我们在容器里添加了HandlerAdapter,那么就不会通过读取本地的文件添加默认的四个HandlerAdapter。如果没在容器中添加HandlerAdapter,机会读取本地的。

2023-03-02 20:58:23 363 2

原创 【Spring基础补充】 注解补充(二)

这个接口可以处理表达式,估计前面用的这个原理差不多】的方法的。这个注解在springboot中的使用还是很多的。没有被触发,猜测为反射注入,直接进行在无参构造进行debug。:表明当前bean是原型的,每次获取到的对象都不是同一个。:表明当前bean是单例的,每次获取到的对象都是同一个。一旦添加当前注解就默认延迟加载。只有在用的时候会初始化。打断点,继续进行debug。这些东西不看源码也可以的,但是就是想练练手。里面就一个返回值为Boolean的方法。1332行的处理表达式的方法。注解一起使用的时候,

2023-03-01 11:36:45 95

原创 【Spring基础补充】 注解补充(一)

自定义扫描需要实现TypeFilter接口// 获取Bean的名字 String className = metadataReader . getClassMetadata() . getClassName();// 包含Dao的允许加载 if(className . toUpperCase() . contains("DAO")) {//允许加载 } return false;// 不允许加载 } }type选择为。

2023-02-25 17:33:57 159

原创 Spring注解补充(一)

注解补充挑一些常用,但是深入不多的总结一下。Bean的生命周期在@Bean注解中,添加init属性和destroy属性@Bean(initMethod = "initMethod", destroyMethod = "destroyMethod")public User user() { return new User();}使用@PostContructor和@Pre...

2023-02-25 17:25:00 32

原创 利用反射和代理简单模拟mybatis实现简单的CRUD

今天突发奇想,好像一些基本的CRUD操作路数都是一样的,又想到mybatis中的操作,便想着简单的模拟一下。随便写写,就当练习反射了。之前一直在犹豫,是否可以对接口创建代理类,后来查阅了一些资料,发现mybatis好像就是对接口的一些代理的处理。这里使用泛型,是为了更好的对数据进行处理。把这些先声明出来,方便后续的管理和使用。既然是反射,那就得把数据写活,如果直接用。类的字段和属性,那不是写死了?

2023-02-13 20:33:11 152 2

原创 MySQL视图、存储过程、函数、触发器、定时任务、流程控制总结

​ 3.搭配存储过程或者函数使用,结尾必须为end case,中间的比较语句也必须加分号,then 后面必须跟着语句使用。​ 2.搭配select语句,里面每个语句结束后不能添加分号,结尾语句必须为end,不能为end case;​ 1.case语句不能直接使用,需要搭配存储过程或者函数使用,或者搭配select语句使用。因为这样会循环的触发触发器,所以不能直接这样进行数据的插入。的时候,new表格中是修改后的数据,old表格中是被修改行的数据。,不会直接进行增删改,会执行触发器里面的代码。

2023-02-10 14:48:22 277

原创 MySQL基础练习题

MySQL基础查询练习前提准备使用ddl语句创建数据库student表格:create table student( id int PRIMARY KEY COMMENT 'id主键', `name` varchar(20) COMMENT '名称', gender TINYINT(2) COMMENT '性别 1男 2女 3保密', age TINYINT UNSIGNED C...

2023-02-09 16:53:00 24

原创 MySQL查询基础练习

MySQL查询基础练习。

2023-02-09 16:52:38 576

原创 MySQL索引的基本理解

之前一致以为索引就是简单的在原表的数据上加了一些编号,让查询更加快捷。后来发现里面还有更深的知识。索引用于快速查找具有特定列值的行。如果没有索引,MySQL 必须从第一行开始,然后通读整个表以找到相关行。表数据越多,成本就越高。如果表有相关列的索引,MySQL 可以快速确定要在数据文件中间查找的位置,而无需查看所有数据。这比顺序读取每一行要快得多。自从MySQL5.5版本之后,MySQL...

2023-02-08 21:50:00 15

原创 group by 、concat_ws()、 group_caoncat()的使用

之前觉得这里简单不需要再进行总结了。后来发现还是需要总结巩固一下,还是有一些方法之类的之前未使用过。如果我们按照classname分组,那么分组后当前组的数据,就是group_concat()的主要拼接对象。根据group by的特性,这也是为什么通过group by进行分组后,我们对数据操作需要借助一些函数。在group by中使用过该函数,它可以把通过group by分组后后面的数据拼接起来。分组后数据变成了一行中包含多条数据,没办法在mysql中通过表格表现出来。将表中的数据根据某个条件进行分组。

2023-02-08 14:38:09 717

原创 MySQL插入数据的多种方式

这里如果提示不允许也需要修改配置文件【注意:不太建议开启 ,记得及时关闭,有安全风险!使用命令行方式导入数据,这种方式比较简单,百度搜一下即可。这种方式首先得准备好要插入的数据文档,然后进行插入。

2023-02-06 19:58:43 10084

原创 MySQL执行流程

整理的笔记忘了保存了,同志们typora一定要记得开自动保存啊! 只能从老师笔记上粘贴一些了。update语句的整体执行流程和select语句是一样的。只是少了缓存的那一步骤。mysql想完成数据的修改,会先从存储引擎层读取数据,把数据读取到服务层进行数据的修改,再通过存储引擎层把数据更新到数据库中。mysql每次读取数据都会读取16384B的数据,默认是16KB的数据。一页的数据。在innodb引擎中设计了 buffer pool 缓冲区。Mysql从磁盘中通过IO读取数据到buffer pool中,引擎

2023-02-06 14:33:50 307

原创 MySQL错误锦集【持续更新】

[42000][1075] Incorrect table definition; there can be only one auto column and it must be defined as a key出现情景:在当前表格,有添加了主键的auto_increment但是当删除主键约束的时候提示错误:[42000][1075] Incorrect table definition...

2023-02-06 14:15:00 26

原创 MySQL修改表的各种操作

如果添加某列没加默认值的话,默认值为null,即使后面修改为有默认值,修改过后原添加的数据不会发生更改,再添加数据时默认值才会生效。这里不可以不把默认值加上,会把字段的默认值丢掉。名字修改后,原表的名字就失效了。

2023-02-03 20:30:12 458

原创 MySQL创建表的三种方式

通过这种方式创建的表格会把查询到的数据以及对查询表格字段的定义都会复制复制过来。

2023-02-03 20:29:09 4348

原创 MySQL数据类型补充

M的取值范围是(0, 255)**。int(M)这个M在字段的属性中指定了unsigned(无符号)和zerofill(零填充)的情况下才有意义。**表示当整数值不够M位时,用0填充。如果整数值超过M位但是没有超过当前数据类型的范围时,就按照实际位数存储。当M宽度超过当前数据类型可存储数值范围的最大宽度时,也是以实际存储范围为准。​ MySQL8之前,int没有指定(M),默认显示(11)。​ 对于整数类型,MySQL还支持在类型名称后面加小括号(M),而小括号中的M表示显示。

2023-02-03 20:28:36 104

原创 修改表的各种操作

修改表的各种操作官网:https://dev.mysql.com/doc/refman/8.0/en/alter-table.html这里挑几个常用的演示一下:原表格sql语句:create table if not exists test1( id int auto_increment primary key comment '主键id', `name` va...

2023-02-03 20:26:00 27

原创 【基础补充】类的初始化

调用某个类的静态成员(类变量和类方法 ----> 被static修饰的变量或者方法),如果此时类没有初始化则先做类的初始化再进行实例的初始化。通过子类调用父类的静态变量,静态方法,只会倒置父类的初始化,不会导致子类的初始化。第一次使用某个类的时候会进行初始化,第二次再进行new的时候就不会进行初始化。通过反射操作某个类时,如果这个类没有初始化,也会倒置该类先初始化。运行主方法所在的类,需要先完成类的初始化,再执行main方法。子类初始化的时候,发现父类没初始化的时候先初始化父类。

2023-02-01 21:13:47 68

原创 【基础补充】类加载器以及双亲委派机制

拓展类加载器(Extension ClassLoader JDK9之前)应用程序类加载器(Application ClassLoader)不是继承关系,是组合的方式实现的。

2023-02-01 20:58:58 62

原创 MySQL80简单安装

下载地址:https://dev.mysql.com/downloads/mysql/这里用的什么名字 后面服务里面就是什么名字 默认为MySQL。,一定要记下来初始密码,后来登录要用到。(我用的名字是MySQL80)配置MySQL80的环境变量。

2023-02-01 11:32:27 530 2

原创 MySQL8.0安装

MySql8.0安装下载MySql8.0解压版下载地址:https://dev.mysql.com/downloads/mysql/解压mysql配置MySQL80的环境变量在解压的根目录下添加my.ini文件[mysqld]#设置时区为东八区,此项设置后,在连接MySQL的时候可以不用每次都手动设置时区default-time-zone = '+8:00'# 设置33...

2023-02-01 11:24:00 16

原创 类加载器和双亲委派机制

类加载器类加载器可以分为三种:引导类加载器(根加载器 Bootstrap ClassLoader):负责加载jre/rt.jar核心类库 它本身不是java代码实现的,也不是ClassLoader的子类,获取该对象往往返回null拓展类加载器(Extension ClassLoader JDK9之前)它负责加载jre/lib/ext拓展库 它是根加载器的子类 Java...

2023-02-01 09:08:00 16

原创 类的初始化

1.导致类初始化的原因:运行主方法所在的类,需要先完成类的初始化,再执行main方法。public class Main { static { System.out.println("Main.static initializer"); } public static void main(String[] args) { ...

2023-01-31 20:59:00 24

原创 类加载过程

类加载过程当程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载、连接、初始化三个步骤来对该类进行初始化,如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载。(1)加载​ 指的是将类型的class字节码数据读入内存。(2)连接​ ① 验证:校验合法性等​ ② 准备: 准备对应的内存(方法区)、创建Class对象,为类变量(类中的stat...

2023-01-31 20:58:00 14

原创 博客园主题美化

一般情况下,我是不太喜欢花里胡哨的界面的,但是博客园自带的主题实在是难看。。。我是用的是SimpleMemory主题,个人感觉部署起来很简单,而且界面也比较好看。一些代码的高亮之类的也很方便。部署教程直接放原作者写的文档了,简洁明了,一步到位。https://bndong.github.io/Cnblogs-Theme-SimpleMemory/v2/#/...

2023-01-31 14:30:00 27

原创 情韵杂七杂八的学习笔记

北方情韵学习笔记idea快捷配置类的创建时信息效果图:添加步骤:创建File Header 和File Topctrl + alt + s 打开设置 搜索 File and code Template分别创建两个文件:File Header:/** * * <p>Project: ${PROJECT_NAME} - ${NAME} * <p&gt...

2023-01-31 14:13:00 91

原创 【软件推荐】nodepad--

鉴于Notepad++作者的错误言论,Notepad–的意义在于:减少一点错误言论,减少一点自以为是。

2023-01-29 19:26:38 387

原创 【杂七杂八的小玩具】利用多线程实现文件的分片下载

为什么这里要创建子线程呢?因为每个子线程要下载的任务的字节数据不一样,所以需要我们去指定不同的参数。在主线程获取要下载文件的字节大小,然后平分给每个子线程,让他们去分片下载。在子线程里通过RandomAccessFile进行字节的设置。下载大文件速度还是很快的,就是多线程测速还真是有一些麻烦。通过URL实例对象获取HttpUrlConnection。为了方便线程的管理和创建,所以采用了线程池的方法。这样在子线程调用的时候,就可以通过线程池进行调用。这样就完成了分片的数据下载。

2023-01-15 10:15:42 438

原创 【细察分毫】Maven切换编译语言版本

优先级从大到小排序:settings.xml里profile配置 > pom.xml配置 > maven默认配置。

2023-01-11 10:03:17 592 3

原创 【简单面试题】二分查找算法

有一个有序表为1,5,8,11,19,22,31,35,40,45,48,49,50。index+1`,因为此时index所对应的值是小于所求值num,所以可以直接排除index.,因为此时index所对应的值是大于所求值num,所以可以直接排除index.在拥有512个元素的数组中二分查找一个数,需要比较的次数最多不超过多少次。​ 如果是小鼠,则舍弃小数部分,整数再加1,为最终结果。在一组排好序的数组中,找到所求值的索引。2^n = 512 ,求解n的值即可。,以及左右边界的中间值。

2023-01-09 21:48:55 299

原创 【杂七杂八的小玩具】简单图床自适应轮播图

收集了一些网络照片,为了更好的管理和存储以及展示,所以打算做成网页,想看的时候点开就能直接看,感觉方便一些。核心: 将文件夹下的图片信息组合成json文件存储起来,然后通过异步请求获取到。// 可以自己修改这里 json数据里是一个包含图片地址的数组。(该图片来源于网略,若有侵权联系删除,抱歉抱歉~)直接在需要展示的文件夹下面使用cmd执行就行。里面,可以自己修改下面的json数据地址。可以直接拿去做单页,但是没有数据。下面是自己遇到的问题以及写的一些。//让图片按照原来的比例展示。

2023-01-07 15:19:29 75

原创 【看看源码】尝试读ArrayList源码

【看看源码】尝试读ArrayList源码

2023-01-02 10:23:46 118

原创 【简单面试题】计算123456789等于100

【简单面试题】计算123456789等于100

2022-12-30 10:14:36 364

原创 【简单面试题】查看字符串的组成是否相同

【简单面试题】查看字符串的组成是否相同

2022-12-30 10:08:53 53

原创 【看一些源码】String的equals方法源码

【看一些源码】String的equals方法源码

2022-12-30 10:06:57 196

原创 idea添加类创建信息以及注释快捷键的配置

idea添加类创建信息以及注释快捷键的配置

2022-12-17 14:29:13 1143 2

Java 利用多线程实现文件的分片下载

特别说明: Main方法是运行开始的方法,里面StopWatch是测速工具类,如果要想使用请导入相关maven坐标,不想使用直接删除即可。 内容概要: 这是随手写的一个利用线程池下载文件的小玩具,如果刚学完线程池不知道怎么使用的,可以拿来借鉴一下,互相学习。里面或许有些代码不太合理,但是作为练手项目还是可以的。 适用人群: 刚学完多线程和线程池,以及线程爱好者。 使用场景及目标: 大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而自己网络又非常好的情况下,不建议使用线程池进行下载,因为线程任务的创建也会浪费一些时间和性能!因为写这个程序是为了更快的下载一些4K壁纸,所以传入的url只能是直链,当然 可以根据自己的能力进行改动。里面很多地方我都有注释说明,阅读起来不会很难。当然,希望道友可以指出代码的不足之处,让我们共同进步。毕竟分享是一个过程,能力的锻炼才是我们真正追求的结果!

2023-01-15

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

TA关注的人

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