- 博客(39)
- 收藏
- 关注
原创 hashchode ,equals相关
根据Java的规范,如果两个对象通过equals()方法比较是相等的,那么它们的hashCode()方法必须返回相同的整数结果。这是确保对象的一致性表现,即相等的对象必须有相同的哈希码。:在使用基于哈希的集合类,如HashMapHashSet或HashTable时,集合内部会依赖对象的hashCode()来确定对象在集合中的存储位置。如果两个对象通过equals()判断相等但hashCode()返回不同的值,这将导致集合无法正确管理这些对象,可能会丢失元素或者造成其他逻辑错误。相反,如果。
2024-05-15 23:55:25
430
原创 缓存雪崩,穿透,击穿
有海量并发的业务场景需要,大量的请求涌入关系型数据库,基于磁盘的IO读取效率低下,常用的mysql数据库不易进行扩展维护,容易造成数据库崩溃,从而相关业务崩溃,系统崩溃。因此我们需要去减少IO的读取次数,增强数据库的可拓展性和可维护性,Nosql数据库就可以更好的完成集群的拓展。通过多级缓存的设计,减少直接访问数据库的次数,减少IO操作,提升系统的健壮性。在此,将讨论常用于数据缓存的redis的业务场景,面临的问题,及解决方案。
2024-03-10 14:03:54
831
原创 IOC中Bean的生命周期
Spring容器在进行初始化时,会将xml配置的的信息封装成一个对象,所有的存储到一个名为的Map集合中去,Spring框架在对该Map进行遍 历,使用反射创建Bean实例对象,创建好的Bean对象存储在一个名为的Map集合 中,当调用getBean方法时则最终从该Map集合中取出Bean实例对象返回。
2024-03-03 12:49:02
1908
1
原创 JDK 安装笔记
官网下载合适的jdk:这里选择稳定维护,且使用比例最大的java8为例下载 ,登录到官网后,选择与自身电脑操作系统与操作位数相符合的,常见为windows64位的java8版本下载下载后无脑傻瓜式安装。
2024-02-19 22:48:12
28
原创 Spring Aop原理
但即使是封装好的代码,在重复调用的情况下,代码冗余度又会提高。如此就有了AOP的使用场景,通过构造切面的方式,将这些使用场景作为切点,代理执行重复的代码,即减少了代码冗余,也有效避免的封装好的代码的重复调用,将除了。AOP:将那些与业务无关,却与业务模块所共同调用的逻辑(例如事务处理,日志管理,权限管理等) 封装成一个可重用的模块,这个模块被称为"切面",便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。这就是aop与封装代码的不同之处,方法增强且并非重复调用。
2024-01-14 20:22:33
535
1
原创 Unknown return value type: java.lang.Integer 错误的解决方案
controller注解换成restcontroller同样可以解决这个问题,应该是序列化上出问题了。2 在不更换@controller给每个方法都加上@responsBody。1 @controller换成@restcontroller。
2024-01-12 10:12:47
523
原创 IOC中Bean的生命周期
Spring是一个轻量级开发框架,其核心思想是Ioc(控制反转)以及AOP(面向切面编程),为java应用开发提供组件管理服务,用于组件之间的解耦,以及简化第三方Javaee中间件技术的使用,是是一个基础架构型的开发框架。
2024-01-08 00:35:42
1394
原创 linux _docker 的操作
docker run -d -p 宿主机端口号:容器端口号 --name 容器名称 镜像标识。-q 所有容器 (包括没有运行的容器)可以通过 repsitory 或者 image id进行删除。镜像标识通过docker images。下图用的是查出来的nginxID 做删除操作。docker images 查找出所有镜像。docker rmi id号/镜像名。docker pull 镜像名。第一步:安装依赖工具。
2023-12-20 11:54:01
367
原创 【无标题】
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。请求转发(forward)是服务器请求资源,服务器直接访问目标地址的url,把响应的内容读取过来,再发送给浏览器,这个跳转时由服务器实现的,而不是在客户端实现的,所以客户端实际上并不知道这个跳转,地址栏显示的还是之前的URL。请求转发的两个Servlet实例共用请求响应对象,重定向需要创建两次请求和响应对象,重定向是不共享数据的。
2023-11-27 08:12:24
408
原创 Servlet -02
1Servlet是在服务器端运行的Java程序(官方定义) 运行在服务器端的小程序2可以接收客户端请求并做出响应3 servlet就是一个接口,它定义了Java类被浏览器访问到(被Tomcat识别)的规则(使得Java程序能够运行在服务器段的规则(接口),需要遵守这个规则,才能被tomcat所识别)接收用户端发来的请求调用其他java程序来处理请求将处理结果,返回到服务器中ServletContext接口获取Web应用上下文,与Servlet容器进行通信。
2023-11-24 07:53:17
1635
原创 serverlet Day1
动态页面,是指跟静态网页相对的一种网页编程技术。因为静态页面在写好后基本是不会改变了,而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的,内容有一个动态的效果。
2023-11-23 08:15:28
71
原创 mybatis - 注解
常用注解@Select(“查询的 SQL 语句”):执行查询操作注解@Insert(“查询的 SQL 语句”):执行新增操作注解@Update(“查询的 SQL 语句”):执行修改操作注解@Delete(“查询的 SQL 语句”):执行删除操作注解版权声明:本文为CSDN博主「魏帅坤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
2023-11-22 08:50:07
43
原创 mybatis3
级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率一对一级联步骤:1验证:编写测试类验证级联关系;2级联映射:利用 <association> 元素完成一对一级联;3创建映射器4创建关联pojo一对一级联时,以对象方式存储关联关系;级联注意事项:1 要根据实际情况选择级联(尽量不用)2 多层关联式,超过三层关联时尽量少用级联。
2023-11-21 08:05:08
39
原创 Mybatis笔记
3.创建四个包,分别为 com.ape.bean (存放实体) com.ape.mapper(存放副的xml文件,内填写sql语句,并指定实bean目录下的类型(resultType),需要修改 namespace ,以及每个sql语句单独的id地址)2在src下创建一个名为 mybatis-config.xml的主映射文件,用来连接数据库,里面需要修改的参数是 数据库地址,用户名,密码,以及指定一个副的xml文件的映射地址。Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。
2023-11-16 07:45:51
39
1
原创 mysql day4 函数,慢查询,索引笔记
MySQL函数,是一种控制流程函数,属于数据库用语言。函数分为日期和时间函数,字符串函数,数学函数,聚合函数,自定义函数。聚合函数作用于一组数据,并对一组数据返回一个值。方介绍索引是帮助MySQL高效获取数据的数据结构。简单来讲,数据库索引就像是书前面的目录,能加快数据库的查询速度。事实上,索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。
2023-11-13 02:04:57
44
原创 mysql 星期总结 week-1
DCL 数据控制语言 用于管理数据库的语言,包括管理权限 grant ,commit,rollback。为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。DDL 数据库定义语言 定义和管理数据对象,如数据库,数据表等 create , drop,长期存放在计算机内,一个有组织,可共享的大量数据集合,是一个数据'仓库'。数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结。
2023-11-10 12:39:31
78
1
原创 mysql 笔记记录- day3 高级数据查询语句
union合并的是结果集,不区分来自于哪一张表,所以可以合并多张表查询出来的数据。LEFT JOIN ON -- join 左边的表为主表,右边的表为从表。是求两个查询的并集,但是不会把重复的过滤掉,而是全部显示出来。等值连接指的是,多表查询语句中的连接条件使用的是等号。其中第3行代码,它就是连接条件,它使用了等号,称为等值连接。对应地,多表查询语句中的连接条件不是使用等号的称为非等值连接。列名不一致时,会以第一张表的表头为准,并对其栏目。如果查询的表的列数量不相等时,会报错。在进行合并的时候会忽略掉。
2023-11-10 09:09:31
63
1
原创 mysql 数据库记录 -day2
inesert into 表名 [字段名1,字段名2,........,字段名] value (值,值,....值,值)select count(字段名) from 表名 where 条件(ssex ='男')select sum(字段名) from 表名 where 条件;用法 :select sum(字段名) from 表名;用法 :select avg(字段名) from 表名;用法 :select max(字段名) from 表名;-or 写的条件和In写的条件在结果集上是等价的。
2023-11-08 17:32:35
40
1
原创 MySql 数据库本质解析——Day2 笔记补充
终端连接数据库,(终端的指令)外界的指令通过网络想3306接口(3306监听mysqld,而mysqld是DBMS的主要部分)发送指令,指令传到DBMS进行翻译,DBMS识别后对数据库和表进行相应的操作。Mysql数据库包含三部分:数据库管理系统 DBMS 数据库 DB 表table。终端举例:命令终端(DOS) SQlyog java。PS:终端指的就是客户端,客户端(终端)连接数据库。
2023-11-07 23:24:58
87
原创 Sql基础语法 -1
ALTER table lanlifusheet CHANGE p_tel person_tel CHAR(11) COMMENT '修改属性后的电话';ALTER TABLE lanlifusheet MODIFY p_tel CHAR(3) comment '修改后的电话';ALTER TABLE 表名 CHANGE 旧字段名 新字段名 要修改的类型 要修改的属性;ALTER TABLE 表名 MODIFY 字段名 要修改的类型 要修改的属性;-- 默认式的,不写就会有默认值进行替换。
2023-11-06 16:41:34
46
1
原创 Linux day 2
name "l*"查找以 l开头的所有文件 -iname "l*" 不区分大小写查找l开头的文件。find 查找格式 find 路径 -指令。type 命令 查找命令是什么类型。退出操作 q Esc Ctrl+c。
2023-11-06 08:04:23
39
1
原创 LINUX -day1 简介及基本语法
③ls查看目录内容 -l 每列仅显示一个文件或目录名称 -a或-all显示所有目录和文件 -i显示文件和目录的。-i 再拷贝过程中询问是否要拷贝 -f 在拷贝过程中不询问直接拷贝 -r拷贝目录中所有的文件和目录。⑩rm -i 删除时询问是否要删除 -f 删除时不询问直接删除 -r递归删除目录下所有文件和目录。-tf tar -tf xxx.tar 在不解包的情况下查看里面的文件或目录。-xf tar -xf xxx.tar 将xxx.tar中的文件解包。
2023-11-03 08:02:34
73
原创 Java中Comparable和Comparator 比较笔记
的类,需要使用comparator接口,可以根据每一个需求去重写comparator方法,需要重写 compara但不需要重写equals()方法。{eg:如果复杂的类选择实现comparable接口,在根据不同需求时,要频繁修改源代码,而如果实现comparator方法,只需要根据不同的需求,重写匿名内部类即可。=,<,> 这些操作,在对多对象进行操作时,必须有定制的排序。.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。
2023-10-31 01:31:38
45
1
原创 hashset去重原理笔记
情况二:如果算出该元素的存储位置目前已经存在有其他元素了,那么会调用该元素的equals方法与该位置的元素再比较一次,如果equals返回的值是true,那么该元素与这个位置上的元素就视为重复元素,不允许添加,如果equals方法返回的是false,那么该元素允许添加.2.去重原理:当hashset add一个元素A的时候,首先获取这个元素的散列码(hashcode的方法),即获取元素的哈希值。情况一:如果计算出的元素的存储位置目前没有任何元素存储,那么该元素可以直接存储在该位置上。
2023-10-30 13:49:30
65
原创 String、StringBuffer与StringBuilder 区别记录
2Buffer出现的版本早于Builder,两者内容大致相同,但是buffer比Buider多了一个锁(synchronized),使得Buffer的安全性大于Builder,在有安全性的同时,每次用锁也使得Buffer效率低于Builder。1普通的string对象创建,对其进行操作,会开辟新的存储空间,而不是在原地址上进行修改,但是Stringbuilder和String Buffer方法是可以在原地址上进行修改的。你早上上班,正要打卡的时候,手机响了。你如果先接了电话,等接完了,在打卡,就是单线程。
2023-10-18 13:17:00
43
1
原创 HashMap 扩容机制
HashMap的底层有数组 + 链表(红黑树)组成,数组的大小可以在构造方法时设置,默认大小为16,数组中每一个元素就是一个链表,jdk7之前链表中的元素采用头插法插入元素,jdk8之后采用尾插法插入元素,由于插入的元素越来越多,查找效率就变低了,所以满足某种条件时,链表会转换成红黑树。为了解决JDK1.7中的死循环问题, 在jDK1.8中新增加了红黑树,即在数组长度大于64,同时链表长度大于8的情况下,链表将转化为红黑树。5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点;
2023-10-16 07:23:51
60
1
原创 JavaList的扩容机制及部分方法调用 ---笔记
在Java中,List的扩容机制是为了在元素数量变多时,能够保持List的性能稳定。当List需要扩容时,会创建一个更大的容量,并将旧的元素复制到新的容器中。当ArrayList需要扩容时,会创建一个新的数组来存储元素,并将旧数组中的元素复制到新数组中。扩容时,ArrayList会创建一个新的容量更大的数组,通常是原数组容量的1.5倍(可以通过修改源码进行调整)。首先,当ArrayList的元素数量超过了其数组的长度时,就会触发扩容操作。然后,ArrayList会将旧数组中的元素按顺序复制到新的数组中。
2023-10-16 07:07:35
99
1
原创 笔记记录2补充。buffer以及builder的扩容机制
buffer和builder 的构造方法的无参数及由参数,其中无参构造方法直接分配的容量为16,而有参构造分配的则是字符串长度加上16(str.length+16)。这些都是初始的容量,在传入一个大于这些初始容量大小的字符串时,会生成一个先将现有大小扩大2倍再加上2的容量大小的容量,然后再与传入的字符串进行比较,若还小于该字符串所需长度,则将字符串所需要的容量直接等于新扩容的容量。扩容的逻辑就是创建一个新的 char 数组,将现有容量扩大一倍再加上2,如果还是不够大则直接等于需要的容量大小。
2023-10-10 00:22:35
96
1
原创 string builder和Stringbuffer
2Buffer出现的版本早于Builder,两者内容大致相同,但是buffer比Buider多了一个锁(synchronized),使得Buffer的安全性大于Builder,在有安全性的同时,每次用锁也使得Buffer效率低于Builder。1普通的string对象创建,对其进行操作,会开辟新的存储空间,而不是在原地址上进行修改,但是Stringbuilder和String Buffer方法是可以在原地址上进行修改的。相同点:底层都是通过char数组实现的。
2023-10-09 07:53:08
88
1
原创 初入Java 笔记 浮点型 细节内容笔记Day08
tips: float型可转为double型,但是double型不能转为float型,因为double[8]存储空间大于float[4]型,第二种转换系统会报内容丢失风险。1.计算机对浮点型计算存在误差,例如计算 double num1=8.1/3;,计算结果不会等于2.7,这是因为计算机数值存储而产生的误差。2.java默认浮点型常量为double型,而声明float型,需要在后加'F'或'f'。4.通常情况下,应该使用double型。3.浮点型有固定的字节长度,不会随着OS的改变而产生变化。
2023-09-20 23:26:09
42
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人