- 博客(49)
- 收藏
- 关注
原创 30天学Java第九天——线程
调用 start 方法会启动一个新线程,内存会分配一个新的栈空间给新线程(分配完成start方法就结束了,main 方法中的代码继续向下执行),新线程的代码在新的栈空间执行,main 方法的代码在 main 方法的栈空间执行,两个线程抢夺 CPU 时间片交替执行。调用 run 方法并没有启动新线程,代码都是在 main 方法中执行的,内存只有一个主线程的栈,因此必须 run 方法中的代码执行玩,才能执行后续的代码。在 Java 中,线程被分为两大类,一类是用户线程,一类是守护线程。
2025-04-11 17:20:28
367
原创 30天学Java第八天——设计模式
装饰器模式是一种结构型设计模式,它通过将额外的行为动态地附加到对象上,增强了对象的功能。装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许通过动态地添加功能来扩展对象的行为,而不需要修改原有的类。这种模式通常用于增强对象的功能,与继承相比,使用装饰器可以避免类的爆炸增长,因为它允许在运行时动态添加功能,而不必创建多个子类。实现具体的装饰器,给咖啡添加额外的功能:例如加奶,加糖等额外功能。创建一个装饰器抽象类,它实现了咖啡接口,并持有一个咖啡的引用。这就是装饰器模型,它的优点如下。
2025-04-10 16:54:28
648
原创 30天学Java第7天——IO流
Java 中所有 IO 流中凡是以 Stream 结尾的都是字节流。凡是 Read 和 Writer 结尾的都是字符流。
2025-04-07 21:50:32
746
原创 力扣算法Hot100——438. 找到字符串中所有字母异位词
异位词:字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。
2025-03-20 14:57:11
119
原创 力扣算法Hot100——75. 颜色分类
使用一次循环,过程中使用两个指针,将所有的 0 放前面,所有的 2 放后面。或者将所有的 0 放前面,所有的 1 放 0 后面。循环两次,第一次循环将所有的 0 交换到前面;第二次循环将所有的 1 交换到 0 的后面。
2025-03-19 19:59:09
429
原创 力扣算法Hot100——70. 爬楼梯(动态规划)
遇到没思路的就先手写几种情况,看看规律,就像做数学题一样。写到 5 的时候能看到规律了,后一个数是前两个数的和,正好是斐波那契数列。并且我们知道f(1) = 1,f(2) = 2,所以用减的方式写递推公式,,然后使用递归就能解决问题了当然这样的递归不做任何记忆化操作,遇到大一些的数,时间复杂度很高 O(2n),下面是使用循环的解法.
2025-03-19 17:45:57
258
原创 技术派项目—— IOC & AOP
IOC 是骨架:提供对象的管理、生命周期控制。我们不用管怎么 new,Spring 来管对象;AOP 是装饰器:在方法执行前后“偷偷加代码”。AOP 也是依赖 IOC 实现的 —— Spring 动态代理就是由 IOC 容器帮你装配的。
2025-03-19 12:01:59
702
原创 技术派项目——分层架构中的数据对象的分类
在具有分层结构的项目中,数据对象在不同的层中根据职责有不同的名字,下面是一些常用的 do、dto、bo、vo、po、entity、rsp、req。
2025-03-19 11:44:38
805
原创 力扣Hot100——169. 多数元素
当遍历选票时,第一次我们将第一张票作为 candidate 的值,然后遍历,遇到相同的票 count +1,否则 -1,当 count == 0,就将下一张票作为候选人 candidate,如此遍历至最后,candidate 的 count!= 0的 candidate一定是票数最多的 candidate,也就是所有票中的众数。(原因就是上面的众数 + 非众数 count 结果一定大于零)首先明白一点:将众数标记为 +1,非众数标记为 -1,遍历所有数值后,众数的和一定是大于零的,因为众数有过半的票数。
2025-03-17 21:12:19
889
原创 30天学习Java第六天——抽象类、接口
关于抽象类的命名,《阿里的 Java 开发手册》上有强调,“抽象类命名要使用 Abstract 或 Base 开头”,这条规约还是值得遵守的,真正做到名如其意。
2025-03-16 13:05:47
676
原创 30天学习Java第六天——Object类
对于equals方法也是一样,如果业务需要,而equals的比较方法不满足,也可以对其重写,以满足需求。如果你不满意toString的实现不满意,可以对其进行重写,使其更具有可读性,符合自己的需求。java.lang.Object时所有类的超类。Java中所有类都实现了这个类中的方法。匿名内部类可以不显示定义一个类,直接在new对象的时候进行实现即可,适用于只使用一次的类。在类中定义的类称为内部类,分为静态内部类、实例内部类、局部内部类、匿名内部类。默认实现是:完整类名+ @ + 十六进制的数字。
2025-03-15 00:00:03
487
原创 30天学习Java第五天——数组 & 字符串
随着字符串的拼接,value 数组的长度会不断增加,因此在 StringBuilder 对象的实现中,value 数组的长度是可以动态扩展的,就像ArrayList那样。由于字符串是不可变的,因此我们对于字符串的操作,都需要创建很多新的字符串,这样一来造成了过多的空间浪费,尤其是字符串拼接时,因此StringBuffer和StringBuilder应运而生。,这样的方法创建的字符串,JVM会先去字符串常量池里找,如果找到了就不创建对象了,如果没找到就在字符串常量池中创建一个对象,这样一来就能节省堆内存。
2025-03-14 16:45:53
813
原创 30天学习Java第五天——继承、多态
父类型引用指向子类型对象Java程序包括两个重要阶段:编译阶段上文代码在编译时,编译器只知道a1的类型是Animal,在编译时会去Animal类中找move()方法,如果找到了就进行静态绑定,编译通过;如果没找到,编译不通过。运行阶段上文代码在运行时,堆内存中的真实对象还是Cat类型,因此执行的时候还是Cat类中的move方法。这种绑定称为运行期绑定/动态绑定由于编译阶段是一种形态,运行阶段又是一种形态,故而谓之多态。
2025-03-13 17:12:05
581
原创 30天学习Java第四天——设计模式
设计模式是一套被广泛接受的、经过试验的、可反复使用的基于面向对象的软件设计经验总结,它是开发人员在软件设计时,对常见问题的解决方案的总结和抽象。一句话就是,设计模式是针对软件开发中常见问题和模式的通用解决方案。
2025-03-13 10:09:22
431
原创 30天学习Java第四天——JVM规范
JVM是一个规范,我们常用的是Oracle实现的一个JVM规范HotSpot,在Oracle官网可以查看其规范。Specification就是规范,其中的 Language and VM 就包含了Java虚拟机的规范。的java教程视频后的笔记整理,方便自己复习的同时,也希望能给csdn的朋友们提供一点帮助。,这个就是JVM的运行时数据区,包含六块内容。进入Java虚拟机规范中,可以看到。、运行时常量池、本地方法栈。
2025-03-12 21:28:43
395
原创 30天学习Java第四天——面向对象
面向过程与面向对象面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候一个个依次调用就行了。面向过程关注于首先功能的步骤上,适合简单的流程,速度快面向对象就是分析出解决这个问题都需要哪些对象的参加,然后让对象与对象之间协作起来形成一个系统。面向对象关注于实现功能需要哪些对象的参与,耦合度低,扩展力强面向对象三大特征。
2025-03-12 15:45:30
960
原创 30天学习Java第四天——package、import以及idea快捷键
上面的代码如果直接执行javac PackageTest.java,然后java PackageTest就会报错,可以编译不能运行。参数,javac -d 编译后的存放目录 PackageTest.java即可,编译后会自动生成package定义的包目录。有了包之后,完整的类名是带包名的,运行的时候要带包名,例如java com.PackageTest。包命名规范要求全部小写,一般是:公司域名倒序 + 项目名 + 模块名 + 功能名。“hello” 然后ctrl + alt + v。
2025-03-12 13:19:50
430
原创 30天学习Java第四天——方法
方法如果只定义不调用,不会分配内存空间方法调用瞬间,会在JVM的栈内存中分配空间,发生入栈操作方法一旦结束,空间就会释放。
2025-03-12 12:21:05
254
原创 30天学习Java第二天——数据类型
当一个整数型字面量没有超过byte或short的取值范围时,也可以直接赋值给byte和short类型变量,不会报错(char也支持)byte与short在进行运算时(不管是混合还是自己与自己运算),各自先转换为int再运算。Java中允许将一个整数赋值给char类型变量,这个整数会被当作ASCII码值处理。局部变量需要先赋值在使用,而成员变量没有赋值的话,系统会为其赋默认值。大容量转换为小容量,不能自动类型转换,需要强制转换,但是可能会损失精度。Java中任何一个整数型字面量会被当做int类型处理。
2025-03-10 14:38:10
1072
原创 《从零备战蓝桥杯》——分数约分问题
Fraction(分子,分母)类的构造函数中,第一个参数为分子,第二个参数为分母,这样就得到了一个分数,这个分数将自动被约分。在py中如果想获得约分后的分数,使用py内置fractions模块中的Fraction类即可。
2023-12-25 16:58:20
591
原创 《从零备战蓝桥杯》——洛谷P1424《小鱼游泳》周末双休问题
(i+x)%7的范围为【0—6】,因此只要不是6,0,那么这一天就是工作日。解:在循环中累加工作日的里程(判断这一天不是周末)
2023-12-25 16:43:20
444
原创 《从零备战蓝桥杯》——zip函数
如果有两个迭代器A,B,你想要(A1,B1),(A2,B2)…这种形式的匹配成对输出,可以使用zip函数。使用zip将若干个可迭代对象打包到一起。zip(迭代器1,迭代器2····)
2023-12-25 14:26:24
424
原创 《从零备战蓝桥杯》——enumerate内置函数
上面的代码中,运用了上篇文章中的连续赋值的技巧,在for循环中,直接使用两个变量接收参数,使得代码更为简洁。py中我们想要同时获得一个迭代器的值与其对应的序号,可以使用enumerate函数。使用enumerate函数可以很方便的获取迭代器的值及其序号。两个参数,第一个为可迭代对象,第二个为你希望的起始序号。enumerate(可迭代对象,起始序号)
2023-12-25 14:17:42
359
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人