自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hashMap的构造方法源码的详细解读

【代码】hashMap的构造方法源码的详细解读。

2024-04-24 06:43:26 75

原创 hashMap的put方法源码的详细解读

【代码】hashMap的put方法源码的详细解读。

2024-04-24 06:21:06 207

原创 hashSet添加相同元素是否会被覆盖

HashMap保证key的不重复性,value可以重复,对于重复的key,HashMap会根据参数onlyIfAbsent的设置和原value是否为空两个条件来判断是否替换新value,但要注意的是,对于HashSet,这个value只是个空的Object类的对象,没有任何实际作用,HashSet中的元素实际上是存储在key上的。针对重复的key,HashMap只有对于value的处理,并不会替换key,因此在HashSet中加入相同元素不会覆盖。HashSet底层使用HashMap实现。

2024-04-09 16:18:49 197

原创 泛型擦除的有趣事

此时,你会看到编译器会帮我们创建一个返回值类型位Object类型的getT()方法,可能是为了与父类保持继承关系吧。

2024-04-06 23:28:49 170

原创 泛型数组的赋值

这是因为泛型信息在运行时会被擦除,而数组需要在运行时知道它们的具体类型,换位思考,如果被允许,运行的时候是object类型,那我可以往arrayList集合里面添加Integer类型的对象,但是我的泛型是String类型的,二者冲突(你会好奇,泛型编译期就检查了,怎么可能让你在运行的时候添加Integer类型的对象,其实通过桥接的方式,就可以实现,我将代码写在下面了)。因为创建了一个未指定泛型类型的ArrayList数组,然后将它赋值给指定了泛型类型为String的ArrayList数组引用。

2024-04-06 23:12:39 257

原创 java中next()和nextline()用法区别(详细说明)

():当遇到空格/Tab键/回车截止读取,不包含空格/Tab键/回车,开头如果有空格/Tab/回车,直接无视,读取后面的字符,直到遇到空格/Tab键/回车截止读取;():读取字符前后的空格/Tab键,有回车键时截止读取,包含回车键。

2024-03-13 10:48:36 160

原创 关于java的类型转换

【代码】关于java的类型转换。

2024-03-12 22:51:45 148

原创 Servlet的映射路径主要有三种方式

例如,如果映射路径是/example/,那么/example、/example/abc、/example/xyz等URL都会被映射到这个Servlet。例如,如果映射路径是/dir/,那么任何以/dir/开始的URL都会被对应的servlet处理,如/dir/a、/dir/b等。简而言之,/不包含JSP文件的处理是因为JSP文件有专门的处理机制和Servlet,而/*包含JSP文件的处理是因为它表示拦截所有请求,不区分请求的类型。在Servlet映射中,/和/*有着不同的含义,尤其是在处理JSP文件时。

2024-03-04 12:03:00 363

原创 MySql的四种事务隔离级别

幻读:在同一事务中,两次查询的结果集数量不一致,通常是因为其他事务插入或删除了数据造成的。(以为存在,其实不存在,以为不存在,其实存在,产生了幻觉)数据库事务隔离级别主要用于解决并发事务中的一些问题,如脏读、不可重复读和幻读。不可重复读:在同一事务中,多次读取同一数据集合时,由于其他事务的修改操作,导致后续读取的数据和前面的不一致。脏读:一个事务读取到另一个事务未提交的数据。

2024-03-03 11:42:56 356

原创 Spring声明式事务的传播行为

1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。7. NESTED:如果当前存在事务,则在嵌套事务内执行。2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。5. NOT_SUPPORTED:总是以非事务方式执行,如果当前存在事务,则挂起当前事务。4. REQUIRES_NEW:总是创建一个新的事务,如果当前存在事务,则挂起当前事务。6. NEVER:总是以非事务方式执行,如果当前存在事务,则抛出异常。

2024-03-03 10:11:05 418

原创 <aop:aspectj-autoproxy expose-proxy=“true“ />解释

默认情况下,当你在Spring管理的bean中调用本地方法时(即一个方法调用同一个类中的另一个方法),这个调用不会通过代理对象,也就是说,不会应用任何与该调用相关的AOP增强(如事务管理、安全检查等)。这是因为代理是基于拦截外部对bean的调用来工作的,而不是拦截bean内部的方法调用。大白话:当你对一个类的某一个方法进行了AOP增加,默认情况下,同类的其他方法无法调用增强后的方法,除非你在spring配置文件中设置了expose-proxy="true" ,让这个代理对象暴露在外面。

2024-03-02 22:40:49 223

原创 Spring的AOP配置文件中pointcut的execution表达式

1. 权限修饰符和返回类型:2. 包和类的匹配:3. 方法的匹配:

2024-02-27 00:08:39 340

原创 MyBatis三种主要的开发方式

2. 纯XML:在这种方式中,你只需要在 XML 文件中定义 SQL 语句,不需要创建接口。当你调用这个代理对象的方法时,代理对象会将调用转发给 MyBatis 的 SqlSession,SqlSession 再根据方法的全限定名(包括命名空间)来查找对应的 SQL 语句,然后执行这个 SQL 语句。当你调用接口方法时,代理对象会将调用转发给 MyBatis 的 SqlSession,SqlSession 再根据方法的全限定名(包括命名空间)来查找对应的 SQL 语句,然后执行这个 SQL 语句。

2024-01-27 11:37:13 101 1

原创 SpringAOP中名词解释

6. 代理(Proxy):这是AOP框架创建的对象,它包装了目标对象,并在调用目标对象的方法时提供了通知的执行。7. 切面(Aspect):如果说织入是过程(动词),那么切面就是计划(名词),如何将动作放到切入点,是放到切入点的前面,还是切入点的后面,还是切入点发生异常等等。7. 切面(Aspect):这是通知和切入点的组合,它可以直接应用于程序代码,并定义了何时(切入点)以及如何(通知)在目标对象上进行跨越关注点的操作。4. 目标对象(Target Object):这是被代理的对象,即包含连接点的对象。

2024-01-21 00:05:39 377 1

原创 synchronized 和 volatile的有序性比较

但synchronized和volatile的有序性并不是一回事,很多地方也都没有说清楚。synchronized的三大特征:原子性、有序性、可见性。volatile的两大特征:有序性、可见性。

2024-01-04 22:24:34 392

原创 Spring框架中的简单类型的依赖注入

2. 确定构造函数: Spring会查找bean类中的构造函数,该构造函数的参数类型和数量必须与元素指定的参数类型和数量相匹配。当Spring容器创建这个bean的实例时,它会使用这些元素指定的参数来调用bean的构造函数。2. 确定setter方法: Spring会查找bean类中的setter方法,该方法的名称必须与元素的name属性相匹配(例如,对于name="id",Spring会查找setId()方法)。

2024-01-03 16:01:32 364

原创 Spring中ClassPathXmlApplicationContext.getBean()常用用法

如果你尝试获取MySuperClass类型的bean,Spring将返回MyClass的实例(假设它是唯一匹配的bean)。如果你尝试获取MyInterface类型的bean,Spring将返回MyClass的实例(假设它是唯一匹配的bean)。在这个例子中,"myClass"是你想要获取的bean的ID,MyClass.class是你想要获取的bean的类型。如果你在getBean()方法中指定的类型是一个接口或者父类,Spring会在容器中查找匹配的子类或者实现类的bean。

2024-01-03 14:55:21 385

原创 java中释放锁的情况

需要注意的是,Java 中的锁是自动管理的,程序员通常不需要手动释放锁。2. 如果在 synchronized 块或方法中,线程因为调用了 wait() 方法而进入等待状态,那么这个线程会释放锁。3. 如果在 synchronized 块或方法中,线程因为发生了未捕获的异常而终止,那么这个线程也会释放锁。1. 当进入 synchronized 块或方法的线程执行完这些代码后,它会自动释放锁。

2024-01-02 23:07:38 501

原创 java序列化和反序列化(serialize)

需要注意的是,反序列化不会调用对象的构造函数,因此,如果在构造函数中有特殊的逻辑(例如初始化某些字段),那么这些逻辑在反序列化时不会被执行。需要注意的是,如果字段是对象,那么这个对象也会被序列化,如果这个对象引用了其他对象,那么这些对象也会被序列化,以此类推。当序列化一个对象时,Java 会将对象的类名、类的 serialVersionUID,以及非瞬态(non-transient)和非静态(non-static)字段的值写入到输出流中。但是,方法、构造函数以及任何其他非字段的类级别的信息都不会被序列化。

2024-01-02 23:04:05 304

原创 mybatis自定义映射的省略情况

分布连表查询的情况下,我通过取别名的方式让字段名和属性名完全一致,并没有指明字段名和属性名之间的映射关系,通过日志的输出结果可以看出,mybatis帮我们进行创建了对象(这个的wid因为关联的是wife的id,所以可能是被看作重复的字段名,所以无法进行映射)直接连表查询的情况下,我通过取别名的方式让字段名和属性名完全一致,并没有指明字段名和属性名之间的映射关系,通过日志的输出结果可以看出,mybatis没有帮我们进行创建对象。原因:应该是单表的情况下,字段名不可能重复,所以通过字段名就能找到对应的属性。

2023-12-30 10:36:22 351 1

原创 Mybatis <trim>标签的基本使用

suffixOverrides=",":这意味着如果<trim>标签内部的任何条件成立,生成的SQL语句的末尾的逗号(如果存在)都会被删除。也就是说,只会删除一次。- prefix="SET":这意味着如果<trim>标签内部的任何条件成立(即,有任何内容被添加到SQL语句中),那么"SET"这个前缀就会被添加到生成的SQL语句的开始部分。- suffix:这意味着如果<trim>标签内部的任何条件成立(即,有任何内容被添加到SQL语句中),那么指定的后缀就会被添加到生成的SQL语句的末尾。

2023-12-22 11:10:44 402

原创 关于java拆装箱的一些自动转换规则

java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比。②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。①无论如何,Integer与new Integer不会相等。③两个都是new出来的,都为false。

2023-10-24 11:08:18 42

原创 不会初始化子类的几种情况

1. 调用的是父类的static方法或者字段。2.调用的是父类的final方法或者字段。3. 通过数组来引用。

2023-10-22 00:28:44 51

原创 java对象初始化顺序

注意点:作者:万叶飞花链接:来源:牛客网。

2023-10-19 22:58:49 31

原创 查找指定盘符下的文件路径

【代码】查找指定盘符下的文件路径。

2023-10-19 09:29:14 27

原创 基于TCP网络编程实现用户注册登录功能(技术点:集合、IO流、多线程、网络编程)

【代码】基于TCP网络编程实现用户注册登录功能(技术点:集合、IO流、多线程、网络编程)

2023-10-18 09:46:15 210

原创 ip地址、域名、服务器之间的关系

域名:我们平时逛商场的时候,不会去找门牌号,只会去看商店的名字,店名就类似于域名,让我们更容易记住。一个域名可以有多个ip地址,就好像蜜雪冰城太火了,要在万达广场里面开多个分店,它们的店名用的都是蜜雪冰城。服务器:可以被视作一个万达广场,它可以管理里面的房间。一个服务器可以有一个或多个ip地址,就像一个万达广场可能有多个门牌号码。每个设备都有一个特点的ip地址,就像万达广场里面的房间都有一个门牌号。---今天学到网络编程的时候才去了解这三者的区别,上述理解仅代表个人观点,如果错误,请指正!

2023-10-14 22:28:49 52

原创 volatile关键字

一个操作是不可中断的,要么全部执行成功要么全部执行失败,比如银行转账当多个线程访问同一变量时,一个线程修改了这个变量的值,其他线程就能够立即看到修改的值程序执行的顺序按照代码的先后顺序执行int a = 0;//2。

2023-10-13 23:00:33 32 1

原创 继承后的对象构建过程

在一个构造函数里,this和super只能出现一个且只能出现一次(因为this会调用该对象的其它构造函数,其它构造函数必然也会有super语句的存在,所以同一个构造函数里会出现相同的super语句,这就失去了语句的意义,编译器也不会通过)

2023-09-11 21:26:15 26

原创 java-switch-case语句中声明变量

java-switch-case语句中关于变量问题很容易出现的两种错误1.同一个定义域内定义重名变量2.使用未被初始化的变量switch-case里面定义的变量只能在switch选择语句内有效,同一作用域下不能出现同名的变量。刚开始我没搞明白,既然a的作用域是在switch-case内,为什么在case2里面无法调用a的值呢?其实问题不在于能不能调用a,而是a没有初始化,所以报错。本文章参考:Java – 在switch case语句中声明变量

2022-10-24 22:07:16 1619 1

原创 北理工嵩天Python面向对象程序设计笔记

@[T提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、任务分析二、第一周2.1.面向对象编程模式总结前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可

2021-06-20 00:14:45 854 9

原创 python小白爬取新浪li标签的超链接和内容

新浪页面分析: 新浪的主页大部分新闻内容都是通过li标签列出来,然后再在li标签里面加个a标签,用来存超链接和内容通过上面的分析,可以通过正则找到所有<li>><a></a></li>格式的标签,代码如下:import reimport requestsdef getHTMLText(url): #得到HTML的网页 try: kv = { "user-agent": "Mozilla/5.0 (

2021-05-26 18:31:43 2433

空空如也

空空如也

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

TA关注的人

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