Files
logseq-1/journals/2024_07_01.md

168 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
- finally #card #java
id:: 6681f589-6a14-444d-a531-757106bbf639
- java关键字之一用于构建try-catch-finally语句块
- 用于释放资源,关闭连接等
- finally中的内容会在try和catch结束前执行
- final #card #java
id:: 6682075e-9092-45f4-84e3-f72b327cc464
- java修饰符关键字
- 可以修饰变量,类,方法,修饰后的变量不可以被修改,方法无法重写,类无法继承
- finalize() #card #java
id:: 668207bd-e4ba-4c6a-a834-9cfd0578a36d
- Object中的一个方法
- 当对象要被回收时会被调用,执行一些资源清理的操作
- 调用的时间是不确定的
- 手写单例模式 #card #java
id:: 66820808-c5d5-4c44-a5f3-f6273725469d
- 饿汉式
- ```java
public class Singleton {
private static Singleton instance = new Singleton()
private Singleton() {}
public static Singlton getSingleton() {
return instance;
}
}
```
- 懒汉式
- ```java
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public synchronized static Singlton getSingleton() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
public class Singleton {
private volatile static Singleton singleton;
private Singleton() {}
public static Singlton getSingleton() {
if (singleton == null) {
synchronized (Singlton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
```
- 用了redis哪些数据结构 #card #java
id:: 66820850-48cc-4bde-8ec6-8ca8ce5d42e0
- string存验证码缓存常用的一些数据
- hash存储一些购物车内容
- redis持久化机制 #card #java
id:: 668208e5-41ef-4991-afd2-d5df1d2756c3
- redis持久化分为RDB和AOF
- RDB
- 存储的是某一时刻内存的镜像副本
- 对内存占用要求高,创建副本的时候需要有一半的内存
- 创建的速度较慢,但恢复的速度快
- AOF
- 日志追加的方式可以设置不同的频率no操作系统决定一般30s1SAlways
- 存储的不是数据,而是操作命令
- 存在重写的过程,实时性较好,恢复的速度较慢
- redis事务 #card #java
id:: 668208f6-0350-45ac-bb04-85535ee0896c
- 原子性,可以让一组命令同时按照顺序执行
- 没有回滚以及隔离,出错后出错的命令不会执行,其他命令都会执行
- 需要配合lua脚本来保证执行的时候没有其他命令或lua脚本插入执行
- redis单线程问题哪个版本开始有多线程 #card #java
id:: 668208f9-c6bd-40fb-a7a0-be5ce340ae11
- 使用单线程可以避免线程间上下文切换带来的额外开销
- 6.0引入来IO多线程但是主线程还是单线程
- java8跟7有什么变化 #card #java
id:: 66820c02-dee3-452d-b1b5-aaab582973ba
- completeablefuture
- locadatetime
- stream流
- optional类
- concurrentHashMap
- 红黑树 #card #java
id:: 66820c48-c30b-464c-8495-87b6b1d6a796
- 一种自平衡的二叉树
- 可以加快查找元素的速度,但是插入的速度由于需要自平衡会变慢
- 如何让线程进入等待,有哪些方法 #card #java
id:: 66820ddc-9987-47fb-a46a-59d5a65849ea
- 使用wait和sleep方法
- wait和sleep的区别 #card #java
id:: 66820eb0-ea1d-47bd-96d5-a9684c00d5da
- wait会释放锁放入wait等待池中等待notify和notifyAll唤醒唤醒后再重新竞争锁
- sleep不会释放锁睡眠期间不会占用CPU资源等待时间到达后继续执行
- 常用的线程池 #card #java
id:: 66820f2e-58df-4ba4-b3a2-39d34ddb3e9d
- SingleThreadPool
- FixedThreadPool
- ScheduleThreadPool
- CachedThreadPool
- ForkJoinPool
- JVM组成 #card #java
id:: 66820f8d-4a88-4fe1-bb77-fb264f076bea
- 程序计数器
- 虚拟机栈
- 本地方法栈
-
- 元空间
- 直接内存
- 栈溢出 #card #java
id:: 66820c5d-2657-4a7a-a5c6-57195aafd0f8
- 递归
- 方法深度超过栈容量
- 对象过多,栈空间不足
- mysql 常用数据库引擎及区别 #card #java
id:: 66821082-95b1-4235-b0e1-af72a37bbd91
- InnoDB
- 支持事务,可靠性较好
- 性能较好,可以提供表锁和行锁
- 支持聚簇索引
- MyISAM
- 不支持聚簇索引
- 只有表锁
- 不支持事务
- 索引原理实现 #card #java
id:: 668210e1-3980-42b5-ab90-e6c60a7933ba
- 用于快速查找需要的数据
- 使用B+树索引是一种多叉树非叶子结点不存储数据因此比B树的高度要更低同时叶子节点之间使用双向链表连接支持范围查询
- 非聚簇索引存储的是主键ID查询的时候可能需要回表如果索引覆盖就不需要回表
- 复合索引需要符合最左匹配的原则,否则会导致索引失效
- SQL执行顺序 #card #java
id:: 66821224-5909-4718-b0f5-9a0b64fa481c
- select ab from A B left join where group by having order by limit
- union和union all的区别 #card #java
id:: 66821254-3fb9-4a9e-80eb-1990331f3cfd
- union不会去重复union all会去重union性能要更好
- spring 解决循环依赖问题 #card #java
id:: 66821307-e75e-4283-9fa6-a6b431c4c83d
- 使用三级缓存架构,解决循环依赖
- 第一层存放EarlySingletonFactoryObject
- 第二层存放EarlySingletonObject
- Spring Bean的原理 #card #java
id:: 66821391-077f-4f2b-bb65-e5e35ff03f7c
- Spring Boot的注解 #card #java
id:: 668213a0-1a80-4678-8619-9cf5e57e1d98
- Bean
- ControllerRestController
- Service
- Compoment
- Repository
- Spring Boot自动装配原理 #card #java
id:: 668213d3-a4d1-451a-98b6-6fbb9972f2bb
- Spring Cloud组成 #card #java
id:: 668213ea-48fa-4892-9db5-a6bb3bd3d84d
- 负载均衡如何配置 #card #java
id:: 668213f7-38a9-4690-b10d-8e8a2a67162f
- 网关如何转发请求 #card #java
id:: 668213fe-e07d-4e5e-9f57-3c863eda3d40
- 意想不到的方面 #写作 {{renderer :wordcount_, 1000}}
- 今天,学习到了一个非常重要的观点,就是自学的过程当中什么最重要,很多人可能回去考虑兴趣,但是其实兴趣根本不是最重要的东西,最重要的是逼迫自己去学习,其实并不是因为有兴趣所以才学得好,而是因为学得好才有兴趣,这个观点在以前看过的[[把时间当作朋友]]这本书里面就已经有了,但是当时却并没有发现这是个多么重要的东西,导致了我自从看过了书后的学习过程都没有去考虑这件事情,这就是导致我这些年来学习东西结果最终都是一无所成,并放弃之前的所有努力的原因,因为我没有去逼迫自己学习,这就是我没有做到的事情,假如我可以做到这件事情,那么自己也许早就掌握了英语,掌握了编程这些对我的发展至关重要的技能,也就不会像现在这样过得生活艰辛了。
- 这就是没有掌握思考能力所导致的后果,没有思考能力也就没有了判断能力,进而在作出一些重要的选择的时候就容易被他人影响,进而选择了那个并不利于自己发展的方向,渐渐的,生活的质量也随着这些没有思考的行为而受到改变,丧失思考能力,就会错过许多东西,错过了时间和注意力这些是最为可怕的,因为时间和注意力没有投入到有意义的生产学习活动中来,导致花费了时间可是最后的结果却是一无所成,渐渐的,自己也变得麻木了,变得失去信息,不再笃信自己可以变得更好。
- 综合这些年的经历来看,没有改变自己也就是在这些意想不到的方面没有做到,而这也就是自己这些年来命中注定的结果, {{embed ((6657dbf7-5e35-46ba-8ecb-22be182d81a2))}},想要和别人不一样,那就要有与别人不一样的改变,这些改变才是最终可以导致我们变得更好的关键,但是这些不同之处往往其实都是我们意想不到的地方,毕竟,如果人人都可以想到这些东西,那么久没有什么独特的地方了,那这些就还是和其他一样都是任何普通人都在做的事情了。
- 我们总是被我们自己的思维所困住,并且在日常的学习工作中,我们渐渐的培养成了一个放弃思考的人,学习可以找资料,但就是不动自己的脑子,工作可以按照流程,因此也可以不用动用自己的大脑,仅仅按照机器那样的流水线操作即可,很多时候我们都在厌倦工作这种重复的无意义的劳动,但是我们又不愿意去思考,毕竟没有思考怎么会有其他的改变呢,要改变自己实在是一件太难的事情了,难到超出了我们的想象,毕竟现在社会阶层固化,想要跨越阶层实在是一件不可能的事情。很多时候,我们的思维就这样被这些思考所限制住了,慢慢的,我们开始认命,开始放弃挣扎,并最终变成了一个不愿意改变自己,只愿安于现状的普通人。
- 重视生活中所找到的所有意想不到的东西,正是这些东西给我们的思考和做事方式带来了改变,进而让我们变得和他人不一样,并最终过上不一样的生活。
-
-