- 博客(53)
- 收藏
- 关注
原创 技术派项目——注册登录(用户名密码的方式)
registryAfterCommitOrImmediatelyRun 方法中对注册事件发布时机进行判断,如果正处于事务中,那么就通过 registerSynchronization 注册一个事务同步器 registerSynchronization ,等待当前事务提交后在进行注册事件的发布,也就是执行 runnable.run() 的代码。“绑定”在这里指的是把当前这次提交的用户名/密码(以及可选的星球号、邀请码等信息)和已有的用户账号做关联,而不是再新建一个用户。
2025-05-20 18:08:25
551
原创 30天学Java第11天——注解
使用 @interface 自定义注解注解亦可以定义属性,但是属性名后必须加()如果注解中有属性,使用时必须给属性赋值,除非定义的时候赋了默认值属性只能是以下类型:byte、short、int、long、float、double、boolean、char,String、Class、枚举、注解,以及以上所有类型的一维数组Stirng field2() default "field2默认值";如果属性只有一个,且属性名是 value 时,使用注解时 value 可以省略不写。
2025-04-15 11:16:31
573
原创 30学Java第十天——类加载的过程
加载(Loading)类加载的第一步是加载。JVM通过类加载器将类的字节码从文件系统(如JAR文件或.class文件)中读取到JVM中。在这一阶段,JVM会创建一个代表这个类的 Class 对象。链接(Linking)链接是将加载的类数据合并到JVM中的过程,主要包括以下三个子步骤:验证(Verification):确保加载的类的字节码符合Java语言的语法和结构规则。检查字节码文件的正确性,确保安全性。准备(Preparation):为类的静态变量分配内存并设置默认值。
2025-04-14 21:56:20
377
原创 30天学Java第十天——反射机制
反射机制可以理解为“运行时类型信息”,它提供了一种访问和操作对象属性与方法的能力,而无需在编译时知道对象的具体类型。检查类的构造方法、方法和属性。创建对象实例。获取或设置属性的值。动态调用方法。
2025-04-14 21:48:55
588
原创 30天学Java第九天——线程
调用 start 方法会启动一个新线程,内存会分配一个新的栈空间给新线程(分配完成start方法就结束了,main 方法中的代码继续向下执行),新线程的代码在新的栈空间执行,main 方法的代码在 main 方法的栈空间执行,两个线程抢夺 CPU 时间片交替执行。调用 run 方法并没有启动新线程,代码都是在 main 方法中执行的,内存只有一个主线程的栈,因此必须 run 方法中的代码执行玩,才能执行后续的代码。在 Java 中,线程被分为两大类,一类是用户线程,一类是守护线程。
2025-04-11 17:20:28
2464
1
原创 30天学Java第八天——设计模式
装饰器模式是一种结构型设计模式,它通过将额外的行为动态地附加到对象上,增强了对象的功能。装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许通过动态地添加功能来扩展对象的行为,而不需要修改原有的类。这种模式通常用于增强对象的功能,与继承相比,使用装饰器可以避免类的爆炸增长,因为它允许在运行时动态添加功能,而不必创建多个子类。实现具体的装饰器,给咖啡添加额外的功能:例如加奶,加糖等额外功能。创建一个装饰器抽象类,它实现了咖啡接口,并持有一个咖啡的引用。这就是装饰器模型,它的优点如下。
2025-04-10 16:54:28
1016
原创 30天学Java第7天——IO流
Java 中所有 IO 流中凡是以 Stream 结尾的都是字节流。凡是 Read 和 Writer 结尾的都是字符流。
2025-04-07 21:50:32
779
原创 力扣算法Hot100——438. 找到字符串中所有字母异位词
异位词:字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。
2025-03-20 14:57:11
131
原创 力扣算法Hot100——75. 颜色分类
使用一次循环,过程中使用两个指针,将所有的 0 放前面,所有的 2 放后面。或者将所有的 0 放前面,所有的 1 放 0 后面。循环两次,第一次循环将所有的 0 交换到前面;第二次循环将所有的 1 交换到 0 的后面。
2025-03-19 19:59:09
440
原创 力扣算法Hot100——70. 爬楼梯(动态规划)
遇到没思路的就先手写几种情况,看看规律,就像做数学题一样。写到 5 的时候能看到规律了,后一个数是前两个数的和,正好是斐波那契数列。并且我们知道f(1) = 1,f(2) = 2,所以用减的方式写递推公式,,然后使用递归就能解决问题了当然这样的递归不做任何记忆化操作,遇到大一些的数,时间复杂度很高 O(2n),下面是使用循环的解法.
2025-03-19 17:45:57
270
原创 技术派项目—— IOC & AOP
IOC 是骨架:提供对象的管理、生命周期控制。我们不用管怎么 new,Spring 来管对象;AOP 是装饰器:在方法执行前后“偷偷加代码”。AOP 也是依赖 IOC 实现的 —— Spring 动态代理就是由 IOC 容器帮你装配的。
2025-03-19 12:01:59
734
原创 技术派项目——分层架构中的数据对象的分类
在具有分层结构的项目中,数据对象在不同的层中根据职责有不同的名字,下面是一些常用的 do、dto、bo、vo、po、entity、rsp、req。
2025-03-19 11:44:38
824
原创 力扣Hot100——169. 多数元素
当遍历选票时,第一次我们将第一张票作为 candidate 的值,然后遍历,遇到相同的票 count +1,否则 -1,当 count == 0,就将下一张票作为候选人 candidate,如此遍历至最后,candidate 的 count!= 0的 candidate一定是票数最多的 candidate,也就是所有票中的众数。(原因就是上面的众数 + 非众数 count 结果一定大于零)首先明白一点:将众数标记为 +1,非众数标记为 -1,遍历所有数值后,众数的和一定是大于零的,因为众数有过半的票数。
2025-03-17 21:12:19
912
原创 30天学习Java第六天——抽象类、接口
关于抽象类的命名,《阿里的 Java 开发手册》上有强调,“抽象类命名要使用 Abstract 或 Base 开头”,这条规约还是值得遵守的,真正做到名如其意。
2025-03-16 13:05:47
685
原创 30天学习Java第六天——Object类
对于equals方法也是一样,如果业务需要,而equals的比较方法不满足,也可以对其重写,以满足需求。如果你不满意toString的实现不满意,可以对其进行重写,使其更具有可读性,符合自己的需求。java.lang.Object时所有类的超类。Java中所有类都实现了这个类中的方法。匿名内部类可以不显示定义一个类,直接在new对象的时候进行实现即可,适用于只使用一次的类。在类中定义的类称为内部类,分为静态内部类、实例内部类、局部内部类、匿名内部类。默认实现是:完整类名+ @ + 十六进制的数字。
2025-03-15 00:00:03
497
原创 30天学习Java第五天——数组 & 字符串
随着字符串的拼接,value 数组的长度会不断增加,因此在 StringBuilder 对象的实现中,value 数组的长度是可以动态扩展的,就像ArrayList那样。由于字符串是不可变的,因此我们对于字符串的操作,都需要创建很多新的字符串,这样一来造成了过多的空间浪费,尤其是字符串拼接时,因此StringBuffer和StringBuilder应运而生。,这样的方法创建的字符串,JVM会先去字符串常量池里找,如果找到了就不创建对象了,如果没找到就在字符串常量池中创建一个对象,这样一来就能节省堆内存。
2025-03-14 16:45:53
819
原创 30天学习Java第五天——继承、多态
父类型引用指向子类型对象Java程序包括两个重要阶段:编译阶段上文代码在编译时,编译器只知道a1的类型是Animal,在编译时会去Animal类中找move()方法,如果找到了就进行静态绑定,编译通过;如果没找到,编译不通过。运行阶段上文代码在运行时,堆内存中的真实对象还是Cat类型,因此执行的时候还是Cat类中的move方法。这种绑定称为运行期绑定/动态绑定由于编译阶段是一种形态,运行阶段又是一种形态,故而谓之多态。
2025-03-13 17:12:05
590
原创 30天学习Java第四天——设计模式
设计模式是一套被广泛接受的、经过试验的、可反复使用的基于面向对象的软件设计经验总结,它是开发人员在软件设计时,对常见问题的解决方案的总结和抽象。一句话就是,设计模式是针对软件开发中常见问题和模式的通用解决方案。
2025-03-13 10:09:22
438
原创 30天学习Java第四天——JVM规范
JVM是一个规范,我们常用的是Oracle实现的一个JVM规范HotSpot,在Oracle官网可以查看其规范。Specification就是规范,其中的 Language and VM 就包含了Java虚拟机的规范。的java教程视频后的笔记整理,方便自己复习的同时,也希望能给csdn的朋友们提供一点帮助。,这个就是JVM的运行时数据区,包含六块内容。进入Java虚拟机规范中,可以看到。、运行时常量池、本地方法栈。
2025-03-12 21:28:43
403
原创 30天学习Java第四天——面向对象
面向过程与面向对象面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候一个个依次调用就行了。面向过程关注于首先功能的步骤上,适合简单的流程,速度快面向对象就是分析出解决这个问题都需要哪些对象的参加,然后让对象与对象之间协作起来形成一个系统。面向对象关注于实现功能需要哪些对象的参与,耦合度低,扩展力强面向对象三大特征。
2025-03-12 15:45:30
975
原创 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
462
原创 30天学习Java第四天——方法
方法如果只定义不调用,不会分配内存空间方法调用瞬间,会在JVM的栈内存中分配空间,发生入栈操作方法一旦结束,空间就会释放。
2025-03-12 12:21:05
265
原创 30天学习Java第二天——数据类型
当一个整数型字面量没有超过byte或short的取值范围时,也可以直接赋值给byte和short类型变量,不会报错(char也支持)byte与short在进行运算时(不管是混合还是自己与自己运算),各自先转换为int再运算。Java中允许将一个整数赋值给char类型变量,这个整数会被当作ASCII码值处理。局部变量需要先赋值在使用,而成员变量没有赋值的话,系统会为其赋默认值。大容量转换为小容量,不能自动类型转换,需要强制转换,但是可能会损失精度。Java中任何一个整数型字面量会被当做int类型处理。
2025-03-10 14:38:10
1098
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人