自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 AOP总结

AOP是面向切面编程,其目的是将横切关注点从核心业务代码中分离出来,通过动态代理等方式,实现代码的增强和解耦,使得其具有更好的可维护性和可扩展性。其中横切关注点是多个类或对象的公共行为,如事务管理、日志记录、接口限流、权限控制等。

2024-05-26 21:16:07 168

原创 Mysql总结2

Mysql慢优化在mysql中,long_query_time的值为10,当sql语句执行的时间超过这个数值时,则会被记录到慢查询日志中。Mysql语句查询流程1、客户端发送sql语句到服务端;2、服务端查看是否打开了缓存,若缓存打开,则查询缓存,若缓存命中,则直接返回从缓存中查询到的数据(在Msyql8.0中,已没有缓存的概念);3、使用分析器对sql语句进行语法分析,判断其是否有语法错误;4、通过优化器生成后续执行计划;5、通过执行器调用存储引擎的接口,执行sql语句。定

2024-05-24 15:17:50 492

原创 动态代理总结

动态代理是指在代码运行过程中,使用反射机制创建代理对象,并动态指定代理对象的目标类。动态代理分为jdk和cglib动态代理两种,在不改变原来目标方法功能的前提下,可以在代理中增强自己功能代码。

2024-05-19 12:23:20 131

原创 Mysql总结1

(1)错误日志:记录数据库服务器启动、停止、运行时存在的问题;(2)慢查询日志:记录查询时间超过long_query_time的sql语句,其中long_query_time可配置,且慢查询日志默认关闭;(3)一般查询日志:记录数据库的连接信息以及所有的sql语句;

2024-05-17 16:18:12 504

原创 JVM总结3

如果一个或多个对象没有其他引用指向它,则此时这个对象就是垃圾,并可能会被垃圾回收器回收。回收的方式主要有两种:(1)引用计数法一个对象被引用一次,则在其对象引用头上增加一次引用次数,当引用次数为0时,该对象可被回收。该方法主要有以下优点:1)运行时引用计数器为0时,直接可以回收,无需等到内存不够的时候;2)垃圾回收过程中,应用不需要被挂起,当申请内存时出现内存不够的情况,直接报OOM错误;3)更新引用计数器时,只会影响该对象,不会影响别的对象。

2024-05-15 17:07:24 724

原创 JVM总结2

类加载器主要作用是将二进制字节码文件加载到JVM中,因为JVM只会运行二进制文件。目前类加载器一般都是java.lang.ClassLoader的子类,该类的主要职责是找到对应的类或生成对应的二进制字节码文件,同时加载程序所需的资源。

2024-05-14 11:06:36 904 1

原创 JVM总结1

方法区是线程共享的区域,其并不真实存在,属于 Java 虚拟机规范中的一个逻辑概念。方法区用于存放已被 JVM 加载的类信息、常量、静态变量、即时编译器编译后的代码缓存等;其在虚拟机启动时创建,关闭时释放。如果方法区域中的内存无法满足分配请求,则会抛OutOfMemoryError:Metaspace在JDK1.8后,使用元空间实现方法区。

2024-05-13 12:17:35 733 2

原创 SpringIoc总结

对于使用注解的方式,通过@Autowired实现,例如service服务层的实现接口的方法,加入了@Service注解,Spring容器会自动扫描标有@Service注解的类,并将其实例化为Spring Bean,然后纳入Spring容器的管理,这样,开发者就可以在其他组件中通过@Autowired引用这些服务。其实现机制是反射+工厂模式,Ioc容器可理解为一个对象工厂,需要定义对象时,通过对工厂类传入标识(如全类名、id),通过反射的方式返回并强制转换,即得到了所需的类。

2024-05-10 18:00:55 163

原创 Java基础知识12

如果操作A happens-before 操作B,那么操作A的执行结果将对操作B可见,且操作A的执行顺序排在操作B,但并不意味着 Java 平台的具体实现必须要按照happens-before关系指定的顺序来执行。

2024-04-09 15:57:26 820

原创 Java基础知识11

ThreadLocal是Java中提供的实现线程局部变量的工具类,允许每个线程都拥有自己的独立副本,从而实现线程隔离,用于解决多线程中共享对象的线程安全问题,其图示如下。

2024-04-08 17:53:12 557

原创 Java基础知识10

线程间通信有两种方式:消息传递、共享内存,在Java中,线程采用共享内存的并发模式进行通信,这种模式被称为JMM,使用这种模式,一个线程对共享变量写入时,另一个线程是可见的。线程间的共享变量存放在主内存中,每一个线程有一个私有的变量本地内存,存储了共享变量的副本。线程A、B通信的流程:1、线程 A 把本地内存 A 中的共享变量副本刷新到主内存中。2、线程 B 到主内存中读取线程 A 刷新过的共享变量,再同步到自己的共享变量副本中。

2024-04-08 12:16:29 719

原创 Java基础知识9

HashMap插入元素时,通过i = (n - 1) & hash计算键位在数组中的位置,且具有一定的随机性,这导致遍历时的顺序与插入时的顺序不一样。而LinkedHashMap则可以保证遍历顺序与插入时一致,其集成了HashMap,并实现了Map接口,同时其内部追加了双向链表,来维护元素的插入顺序,通过before和after,分别来维护当前元素的前一个元素和后一个元素的顺序的。

2024-04-06 12:18:51 312 1

原创 Java基础知识8

1、通过key获取hashCode值(调用hashCode函数)2、将其高位与地位进行异或运算,得到新的hash值hashCode的值高位与低位分布均匀,进行异或运算可有效地解决冲突。3、取模,得到实际存储位置,这里的代码是:int i = (n - 1) & hash。

2024-04-02 22:23:08 272 1

原创 好友关注功能

2、查询收件箱(得到键值对,其中值包含了时间戳,用于记录先后顺序),这里使用ZREVRANGEBYSCORE进行查询,根据分数(值)的排名进行查询,查询语句的模板如下:ZREVRANGEBYSCORE key Max Min LIMIT offset count,其中分数的范围为Min到Max之间,key为查询的键,offset为偏移量(同3),count为查询的条数,所查询的结果按照分数降序排列的。3、对于查询到的数据,解析出id、最小时间戳、偏移量(与上次查询最小值一样的个数)。

2024-03-27 22:41:39 91

原创 Java基础知识7

ArrayList相当于动态数组,其底层是数组队列,能实现动态增加长度,在大量添加元素时,使用ensureCapacity操作来增加其容量。其实现了List接口,表明其是列表,支持增删改查操作和使用下标进行读取;实现了RandomAccess接口,可实现随机访问;实现了Cloneable接口,表明其具有拷贝功能;

2024-03-27 16:55:24 520

原创 java基础知识6

装饰器模式可在不改变原有对象的情况下,拓展其功能,用于继承关系复杂的场景,装饰器类需要跟原始类继承相同的抽象类或者实现相同的接口,且可对原始类多次嵌套。

2024-03-26 22:50:20 273

原创 Java基础知识5

字节缓冲流分为输入、输出缓冲流。其中输入缓冲流为BufferedInputStream,从源头到内存读取数据的过程中,不会逐个读取,先将读取到的字节放在缓冲区,通过缓冲区将字节读入到内存,这样可以减少I/O次数,提高读写效率。在定义时,方法如下:BufferedInputStream buffer = new BufferedInputStream(inputStream),其中inputStream为InputStream输入流。

2024-03-24 22:32:16 209

原创 Java基础知识4

对于finally块,无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。当 try 语句和 finally 语句中都有 return 语句时,try 语句块中的 return 语句会被忽略。原因是try语句中的return返回值会先被暂存在一个本地变量中,当执行到finally语句中的return之后,这个本地变量的值就变为了finally语句中的 return 返回值。

2024-03-22 16:44:59 161 1

原创 Java基础知识3

1、若两对象hashcode值相等,两个对象不一定相等,因为可能存在哈希碰撞,多个对象可能传出相同的哈希值。2、若两对象hashcode相等,且equal方法比较后也相等,则这两个对象相等。3、若两对象的hashcode值不相等,则这两个对象一定不相等。4、若equal判断两对象相等,则他们的hashcode值一定相等。

2024-03-21 18:13:19 403 1

原创 java基础知识2

new创建对象实例,对象实例存放在堆内存中;对象引用指向对象实例,其存放在栈内存中。一个对象应用可指向0或1个对象实例,一个对象实例可被多个对象引用指向它。其中"=="比较的是对象引用是否相等,即指向的内存地址是否相等;"equal"比较的是值是否相等。特点:1、方法名与类名一致;2、无返回值;3、生成类的对象时自动执行,无需调用,且其可被重载,但不能被重写。

2024-03-19 23:15:44 382

原创 968. 监控二叉树

本题的主要思路为贪心算法,叶子节点不应该放摄像头,因为此时只能监控到上一层节点,若在该层放摄像头,则会导致大量浪费,因此应从下到上考虑,从叶子结点的父节点开始放摄像头,这样所放的摄像头能监控其下一层或上一层。2、若左右节点的状态均为2,说明左右节点均已被监控到,此处不用安装摄像头,但在变量到此处节点的父节点前,未被监控到,因此状态设为0,这与1对应,相当于初始时把所有叶节点的状态设为0未被监控状态;4、其余情况为左右节点至少有一个状态为1,此时该节点一定被监控到了,因此不用放置摄像头,状态设为2;

2024-03-19 11:41:54 451

原创 Java基础知识1

静态变量可被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量,多个对象被创建时只会被分配一次内存,其使用"类名.变量名"的方法访问(private修饰时无法访问),通常情况下,静态变量会被final关键字修饰成为常量。发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写,若父类的方法由private/final/static修饰,则这些方法不能被重写,同时构造方法不能被重写,所传入的参数列表要和父类一致。若方法的返回值是引用类型,重写时是可以返回该引用类型的子类的。

2024-03-17 22:59:23 364 1

原创 背包问题1

2、其次根据下标为0的物品质量m,价值为v,当j < m时,该物品无法放入,因此此时dp[0][j] = 0;(1)不选下标为i的物品,此时和只放入下标为0到i-1物品且质量为j的背包能放入的最大价值相同,即dp[i][j] = dp[i - 1][j],注意:当。的背包的最大价值状态转化过来,因为下标为0到i-1物品不涉及物品i,此时得到的价值为。1、首先dp[i][0]=0,因为容量为0时无法放入任意物品,因此价值只能为0。,此时无法放入该物品,因此dp[i][j]只能为dp[i - 1][j];

2024-03-17 20:54:01 297

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除