- 博客(31)
- 收藏
- 关注
原创 对比ArrayList和linkedlist底层 结合金融中业务流水记录的查询 会如何选择合适的数据结构?
ArrayList 查询效果好 索引查询是O(1) 而linkedlist查询效果不好 索引查询是O(n)总结也就是 读多、写少、只追加、频繁遍历、排序、分页查询 分页的本质就是。插入 / 删除 并且会 按时间。金融业务流水 只会往。ArrayList更好。
2026-04-12 01:12:31
24
原创 一个面试中的场景题 问:10只小白鼠 1000瓶药水 其中只有一个药水有毒 怎么找到?
如果0 1 3 号白鼠死了 那么就是2的0次方+2的1次方+2的3次方=11号药水有毒。答:10个小白鼠 首先要想 怎么去使用10去表示1000 从而对应1000个药水。所以采用二进制 2的10次方 1024 完美覆盖1000个药水。最终导致 每个药水 只会有唯一组合的小白鼠去喝。比如:第i个小白鼠喝的是第i个位置为1的药水。每个小白鼠都进行编号 0-9 共10只。
2026-04-10 22:00:28
60
原创 java后端框架之spring
其中 table中的每一个节点 里面的key是bean的id ,val中就是bean对象的信息包括 :类路径 是否是。获取该对象(bean)的方法 就是创建一个容器 可以通过getBean的方法(不止这一种) 来获得bean。我们可以在Java中随便写一个类 通过bean.xml文件的配置,包括该类的路径以及 指明其id等。可以存放很多bean 的信息 (都是从bean.xml文件中来的)其中里面保存的是bean.xml文件中 配置的单例对象。其里面有保存该bean的信息,(存放在。
2026-01-23 02:55:41
103
原创 关于bean的id
此时的bean的id 已经设置出来 name没有设置 (是bean的name)此时没有#序号 这是spring和springboot不同的地方。如果没有设置id 同时也没有设置name时 那么默认id就是。在容器中获取ioc.getbean时候 我们通常会输入bean的。service中的值 就是该bean的id/name。2、@Bean(xxx) 此时就是括号中的xxx。通过配置类+@bean 的方法配置bean‘这是的bean的name 就可以看为id。这里强调一下bean的id。
2025-12-19 13:22:14
335
原创 SpringMvc中的拦截器
若其中 拦截器2的preHandle 返回return false 到此为止 不会执行handler方法 跳过 直接继续执行拦截器1的afterCompletion。拦截器1的 postHandle -> 拦截器2的afterCompletion-> 拦截器1的afterCompletion。拦截器1的preHandle -> 拦截器2的preHandle -> 执行方法 拦截器2的 postHandle->其中 在拦截器中 第一个方法 如果是return true;
2025-12-13 12:53:49
298
原创 idea在Servlet中 输出中文乱码?
最近 在idea中 进行配置tomcat以后 运行servlet 不报错 但是在idea中的控制台 一旦输出中文总乱码?再去tomcat文件中 添加utf-8格式(网上有)再修改 IDEA 启动参数(强制控制台 UTF-8)前提说一下 网上有很多教程 大家可以去试试(i。如果有具体的 可以评论 我看到了回及时回复。首先去idea中设置全局编码格式 (网上有)这是我遇到问题的第三天 很苦恼。如果到了这一步 还不能解决问题。是这样的 我们一步一步来。之前在网上看了好多方法。-基本上都是这三个 )
2025-11-26 12:03:57
330
原创 java面试易错题目
如果没有这一步 GenericSevlet中的config属性为空 从而Servlet程序中 涉及到的config方法就会报错。在创建一个Servlet时 如果需要我们重写其中的init方法 一定要有super.init(config)这一步。这是因为 这一步的本质 是一个初始化 使得config 被赋予了GenericServlet中config属性。
2025-11-26 08:51:13
124
原创 关于servlet中的一个疑惑
之前在学习servlet时 每当在配置html文件的时候 在form action中 都会遇到下面的网址。而最后的login 就是在该项目下面的web.xml文件中的url 如下图所示。从8080以后 我就很不清楚 为什么是”http"?该tomcat名称 也就是上图中 下方的”/http“所有在localhost:8080后 才是”http"其实 是在我们在配置tomcat的时候。
2025-11-25 21:10:19
254
1
原创 数据库连接池
相关参数 在程序中指定user url password等首先创建数据源对象 这也是其他方式必须要做的一步(这里的mysql.properties文件是自己创建好的 直接加载即可)其次 就是要进行连接管理 初始化连接数很简单使用配置文件模板来完成将c3p0提供的xml 文件 拷贝到src目录下便捷高效 灵活性高。
2025-11-16 21:54:19
162
原创 一个Try—catch的一个小技巧
因此,在 try 内部声明的 preparedStatement,在 finally 中是 “不可见” 的 —— 编译器会认为这个变量在 finally 中根本不存在,自然无法访问。如果一个变量在 try 代码块内部声明(比如 try { PreparedStatement pstmt = ...;}),那么这个变量的作用域仅限于 try 块内部。finally 代码块虽然和 try 关联,但它是一个独立的代码块,并不属于 try 块的作用域范围。
2025-11-15 18:29:35
136
原创 MYsql的小知识
也就是说实际上能用的字节为65535-3 = 65532 个字节。在mysql的数据类型中 CHAR最大为255个字符。并且 65535 实际上 1-3个字节还有用于记录大小。而VARCHAR 最大为65535个字节。在utf-8的编码中 一个字符为3个字节。65532/3 为字符数(utf-8)在gbk的编码中 一个字符为2个字节。65532/2 为字符数(gbk)字节和字符是两个概念。
2025-10-23 22:07:07
137
原创 java集合 set
此时的table是空的 使用resize 方法 这时候要去扩容table的空间 第一次扩容 扩容到16个。当加入重复元素时候 如果当前索引位置对应的链表的第一个元素 和 准备添加的key的hash值一样。set 接口的实现类的对象(Set 接口对象), 不能存放重复的元素, 可以添加一个 null。注意:取出的顺序的顺序虽然不是添加的顺序,但是他的固定.运行多次 结果相同。(1)准备加入的key 和 p指向的Node结点的 key 是同一个。
2025-10-04 12:12:21
490
原创 java 集合
linkedList 是list的实现接口 所以 前面我们讲述的list的方法 都可以用到linkedList 上。其中 collection的实现类 有些可以放重复元素 有些不可以 有些可以是有序的 有些不是。添加多个元素 通过使用其他的集合 只要实现collectio接口的对象 都可以传进去。以上 是集合的list的内容 接下来会涉及到到set的内容。数组保存的元素 为同一类型 对数组进行增/删比较麻烦。多个元素的操作 都涉需要借助到 新的集合来操作。接口的实现子类 是双列集合,存放的。
2025-10-01 11:56:11
553
原创 java第二阶段
也就是说 匿名内部类 有三种 :基于接口 基于类 基于抽象类 其中 基于接口是没有分号的 剩下的都有分号 注意书写上的差距。4 外部类和局部内部类的成员重名时 默认遵守就近原则 如果 想访问外部类的成员的时候 可以使用外部类名.this。接口的多态 :接口类型的变量 可以指向 实现了IF接口的类的对象实例。继承体现的多态 :父类 类型的变量a 可以指向 继承AAA的子类的对象。内部类 :一个类的内部 又完整的嵌套了另一个类 被嵌套的类称为内部类。就是匿名内部类 Outer04$1。
2025-09-20 11:20:01
1072
原创 java第二阶段03
(将接口中的方法 写好 去用类实现一个接口 这个类肯定要重写方法 这个类重写的时候 修饰符只是public)2、接口中的所有方法都是public且抽象的 但是可以不写abstract 因为接口中的方法 没有方法体。2、 抽象类可以没有抽象方法 但是可以有实现的方法 但是 如果有抽象方法 必须。5、类不是final类 但是有final方法 虽然方法不可以重写 但可以被继承。但是 接口中的抽象方法可以省略abstract关键字 并且没有方法体。接口中 可以写属性 写方法 方法为三种 抽象 默认 静态。
2025-09-11 11:10:17
667
原创 一个小练习
当 指定不明确时 比如:在接口中的属性 为final 接口为静态 普通类中的属性 都为x时候 指向不明确 这时 可以采用 静态引用 和 super引用。这是因为 接口中的属性 为 final 不可修改。所有 就要使用一种巧妙的方法 明确指定。访问父类的x 使用 super.x。class中的 属性 与其发生冲突。即为用opp.x 静态的。
2025-09-09 22:49:11
169
原创 java第二阶段 02
先走BBB类的构造器 无参构造器 然后进入隐藏的super中 去AAA AAA没有super 和 普通方法 直接执行AAA构造器 然后出来 调用BBB的普通代码块 最后 走BBB的构造器。分为父类和子类 先父类后子类 先父类的时候 进入其中,走静态属性或代码块 再走子类 走子类的静态属性或代码块。先执行子类的构造器中的 super 到父类的super 和 父类的普通代码块/属性 以及父类的构造器。执行完毕后 回到子类构造器中的super下面的普通代码块和属性 最后是子类的构造器。
2025-09-06 00:45:20
309
原创 java第二阶段
类变量 也就是静态变量 static修饰 它可以创建对象访问 可以直接使用类名访问。(静态方法)没有this参数 也就是不允许使用和对象有关的关键字。static是在类加载的时候 就生成 类销毁就他就消亡 ->count就是静态变量 可以被child类的所有对象共享。静态变量访问修饰符的访问权限和范围 和 普通属性是一样的。也就是静态方法 使用static修饰。使用了静态方法 就可以访问静态变量。this和super不可以使用。通过使用static修饰。2 静态方法 只能访问。
2025-09-05 01:51:58
198
原创 自学java
向上转型 在编译时 也就是写在你的编译器上 时 这个对象 只能调用编译类型的方法 也就是左侧的方法 但是他运行起来的时候 看的是运行类型 也就是右侧。当对象调用这个方法的时候 调用的是编译类型的方法 当这个方法运行的时候 是看他的运行类型的方法。这个时候 就引出来动态绑定机制 :调用该对象的方法时 该方法会和该对象的内存地址/运行类型绑定。输出的是 全类名 (包名+类名)和 将对象的hashcode的值转化为16进制的字符串。向下转型 不仅可以调用自己的方法 还可以调用父类的方法 但是先找子类。
2025-08-27 17:20:29
485
原创 自学java第十二天
方法重写 发生在父子类 方法名必须一样 形参列表相同 返回类型 :子类的返回类型 和父类的返回类型一致 或者使其子类 修饰符不可以缩小父类的访问权限。子类的某个方法 和 父类的某个方法名称 返回类型 参数一样 那么我们就说子类的方法 覆盖了父类的方法。父类的引用 必须是指向当前目标类型的对象 Animal1 animal1= new cat();就不对 因为父类之前没有指向dog。2 但是不能调用子类的特有的成员 比如cat中的catchmouse方法。或者此子类的返回类型 是父类的返回类型的子类。
2025-08-21 22:14:12
553
原创 自学java第十一天
nums是一个有序的数组 但是 他每个元素会重复出现 我们要最多保留重复的元素 两次 出现两次以上的多余元素删除 并且返回新的 也就是经过处理后数组的长度 不允许使用新的数组。子类继承所有的属性和方法 非私有的属性和方法 可以直接访问 但是 私有属性和方法不能在子类直接访问。当多个类 存在相同的属性和方法时 可以从中抽象出父类 在父类中定义这些相同的属性和方法。也就是说 两个子类 都有的属性和方法 都放在父类中 子类中只保留不同的属性和方法。
2025-08-19 21:30:24
685
原创 自学java第十天
创建一个t1对象 形参为4 运行时 test先接收4 4比2大 那么4-1=3 将3传给test (此时创建了一个新的栈 专门处理test(3)),当test接收3以后 进行判断 大于2 ,3-1=2 将2传送给test (此时创建了一个新的栈 专门处理test(2))此时test接收2 判断不符合 直接输出2 此时 该栈销毁 执行test(3)的栈 输出为3 该栈销毁 执行test(4) 输出为4。斐波那契数列是指这样一个数列:0,1,1,2,3,5,8,13,21,34,55,89……
2025-08-14 14:03:18
972
原创 自学java第九天
也就是说 在调用方法的过程中 依然会创建一个新的栈 新的栈 在做改变的时候 由于是数组 数组指向的是地址 在修改元素的时候 是针对地址修改的 即使新的栈最后销毁了 存在堆区的数组元素已经是被修改过的了 在主函数输出的时候 那么也会为修改后的结果 200 2 3。最后的结果 会发现 最初的数组为1 2 3 调用方法后为 200 2 3 最后在main中输出为 200 2 3。总结:对于基本数据类型 传递的是值(值拷贝) 形参的任何改变 不影响实参(主方法中的a和b为实参)
2025-08-13 01:50:09
500
原创 自学java第八天
分析执行流程 :main栈 (栈空间) 此时在堆区有一个对象 再执行形参 先执行形参赋值 此时又开一个独立的栈空间(可以理解为产生一个新栈)在这个栈空间中 进行类赋值 且类的计算执行语句 也在这个栈空间里面 这个结果返回到原来的栈空间中调用的语句 返回时 栈空间被释放。其实就是一个金字塔型 然后我们去发现规律:第几行 就有几个元素 且 第一个元素和最后一个元素均为1 其他的元素 我们经过观察发现 第n行第i个元素 等于第n-1行的第i个和i-1个元素之和。
2025-08-09 00:48:44
687
1
原创 自学java第七天
大家可以这么理解:数组的赋值 也就是说 我们把数组 赋给另一个数组的时候 ,其实是先在jvm内存的栈上 赋予地址 然后在堆上开辟空间 一旦我们把数组赋予给另一个数组时,其实就是把这个数组的地址 赋给另一个。既然扩容 那就要每次输入一个新的数的时候之前 就要创建一个新的数组 创建新的数组 要比原数组多一个元素 最后在进行数组拷贝 新创建的数组被销毁。数组的值拷贝是在栈上直接赋值,创建一个新的数组 开辟一个新的数据空间,数据空间独立 且 值不会影响其他数组元素的变化。
2025-08-08 01:43:09
906
原创 自学java第六天
比较繁琐 但是还是比较容易想到 就是 每一步计算的时候 都要把前一步的结果加上 导致需要其他的变量来接收保存 但是只用到了一个for。是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1*1*1 + 5*5*5+ 3*3*3 = 153。4、练习 1+(1+2)+(1+2+3)……3、计算1-1/2+1/3...............-1/100。再对这个三位数除以10 得到的商就是十位 得到的余数就是个位。分别保存1 1+2 1+2+3......最终将其相加。
2025-08-04 20:22:04
407
原创 自学java第五天
有趣的地方在于: 如果再for的循环体内定义的i 那么他是不可以直接打印出来的 因为i的作用域只在for循环内 如果想直接打印 要在初始条件设置i。一个练习题即可表示:(三个班级 每个班级五名同学 分别求班级的学生的平均分 以及三个班级的平均分)2、标签的使用:标签名字由我们确定 标签在循环之前 顶格 (尽量不要使用标签)然后可以将梯形修改为金字塔型:(这里要注意空格的使用 也嵌套了一个循环 )也是要注意Scanner的构建和使用 此外 还有字符串的比较:equals。
2025-08-02 18:01:46
249
原创 自学java第四天
这个例子:首先判断月份 一年12个月 4=10为旺季 其余为淡季 旺季和淡季的价格不同(第一个分支) 每个季节又以年龄划分为不同的人(第二个分支) :儿童 老人和成人 价格对应不同。不知道大家有没有和我一样的 在没接触这种练习的时候 我一直以为能被4整除的就是闰年 其实闰年的定义有两个:一:被4整除 但是不被100整除。又或者是短路与、或,结果是一样的,或许是可以加快速率(后续遇到问题 我们可以再回头看 我们的理解是否正确)(2)如果有else 所有的条件表达式都不成立 则默认执行else。
2025-08-01 18:02:08
498
原创 自学java第三天
十进制转二进制 两种方法(1)除以2 直到商0 余数倒过来(从下至上,从左至右)(2)看2的几次方(很快 但是不建议 可能会和其他方法弄混)十进制转十六进制 除以16 直到商为0 余数倒过来(从下至上,从左至右)最基本的运算 但是要注意细节 比如:注意精度、注意接受类型(这会使结果不一样)2、负数的反码 等于 它的原码 (符号位不变) 其他位取反。将十六进制的每一位 转成对应的一个4位的二级制数即可。短路与:前面的a<1已经为假了 后面的代码不再执行 所以b仍然为9。
2025-07-27 21:59:34
567
原创 二本9硕自学java第二天
1、数值 分为整数和小数,整数又分为byte(1字节) short(2字节) int(4字节) long(8字节);1、自动类型转化 :当java程序在进行赋值或运算时,精度小的类型自动转化为精度大的数据类型,第二个输出的是‘a'对应的数字 ,因为 char的本质是整数 所以char是可以进行运算的。变量:顾名思义是变化的量 我将其理解为变(变化)量(值) ,是程序的基本组成单位。可以理解为:等号左右均为数值时,为运算功能;计算结果 a对应的为97(先转化为'a'对应的数字97) 最终结果为107。
2025-07-24 21:37:23
364
原创 Java自学第一天(新手小白)
与我之前所学过的c不同的是,Java (我目前接触的)比较高级,又或许是比较复杂,他的运行是在cmd中,并且Java很注重大小写,以及文件命名,还有保存。比较简单的安装(在官网搜索即可),安装过程中,目录一点要选用英文并且不要带特殊符号或者空格等,还有一个重要的一点,就是一定要配置环境变量。接下来再说一下Sublime,在使用的过程中,需要自己下载一个包,这样在保存程序的时候编码才可以选择GBK(方便中文),目前我对于GBK的理解就是一个简单的编码格式,可以让中文不乱吗。
2025-07-23 10:50:28
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅