- 博客(59)
- 收藏
- 关注
原创 【动态规划】343. 整数拆分
递推公式:拆成两个数是 j*(i-j),拆成三个及以上是 j*dp[i-j],所以递推公式取两者大值。dp数组的含义:dp[i]表示对i拆分,得到最大的积为dp[i]
2024-09-03 23:18:10
347
原创 Kafka大厂面试14问(附答案)
通过心跳机制监控消费者组中consumer的存活,返回通知消费者进行balance,选举出新的ld consumer ,ldconsumer从协调者获取所有的consumer,将分配信息发给协调者,协调者再通过心跳机制下发给consumer。生产者发送消息过快,消费者消费慢 -> 如果需要紧急处理,可以把修改消费端程序,让它将收到的消息快速转发到其他topic,然后启动多个消费者同时消费新主题的不同分区。设置的自动提交offset,消息拉取了,但是没消费完,就提交了offset,但是消费者宕机了;
2024-09-03 21:22:17
1665
原创 【实践举例】一文搞懂Mysql常见锁!!
共享锁(读锁):会阻塞写锁排他锁(写锁):会阻塞读锁,写锁全库导出,全库备份,需要保证整个数据库一致性flush tables with read lock 添加读锁Unlock tables 释放全局锁另外:-single-transaction 可以通过将导出操作封装到一个事务中,使得导出的数据是一个一致性快照(需要在支持MVCC的场景)
2024-08-29 00:10:36
427
原创 单例模式的几种写法及破坏
在这三步中,第2、3步有可能会发生指令重排现象,创建对象的顺序变为1-3-2,会导致多个线程获取对象时,有可能线程A创建对象的过程中,执行了1、3步骤,线程B判断singleton已经不为空,获取到未初始化的singleton对象,就会报NPE异常。为了防止这种行为破坏单例模式,你需要重写 `readResolve()` 方法,在 `readResolve()` 方法中返回单例实例的引用,这样即使经过序列化和反序列化,你仍然只会有一个单例实例。输出到文件中,在读入文件反序列化成对象时,
2024-08-15 15:29:26
701
原创 【动态规划】516. 最长回文子序列
当s[i] != s[j] 时,dp[i][j] 取 dp[i][j-1] 和 dp[i+1][j] 中的较大值。注意这里不是dp[i+1][j-1],比如当a,aab时,最长的回文子序列应该是aa,如果按dp[i+1][j-1]就只能取到a
2024-08-09 14:42:06
288
原创 循环依赖问题和Spring三级缓存
一二级缓存能解决不是代理对象的循环依赖,如果是代理对象,就需要用到三级缓存一三级缓存能解决依赖注入往后的循环依赖问题,如果是构造方法出现了循环依赖,则可以通过@Lazy解决
2024-08-08 16:46:05
320
原创 【面试】讲讲对IOC及其工作流程的理解
根据程序里定义的bean的声明方式,通过解析和加载后生成BeanDefinition,其中包括bean的定义和基本属性,然后把BeanDefinition注册到IOC容器的Map集合里;对于设置了Lazy-init属性和非单例的Bean,是在每次获取Bean对象时,调用Bean的初始化方法来完成实例化的。Spring中提供了很多声明bean的方式,比如使用xml配置文件,@Service注解,在@Configuration修饰的配置类中用@Bean注解来声明Bean等。
2024-08-08 16:10:28
438
原创 611. 有效三角形的个数
注意1:这里必须小于等于j,因为可能存在1,1,2这种凑不成三角形的,如果大于j的话就会被记入到ans里;注意2: 第二个条件必须是nums[k+1]而不是nums[k],否则k会停留到恰好不满足条件的位置,ans会记多
2024-08-07 16:30:06
240
原创 【归并排序/快排/堆排序】912. 排序数组
维护大顶堆:从下往上,第一个有孩子节点的节点开始,取根节点、左孩子、右孩子之间的最大值 换到根节点处
2024-08-07 14:49:53
432
原创 【回溯/三指针】15. 三数之和
三指针,时间复杂度也是O(n^2),相比回溯,多了一个剪枝操作,重点在 if(j==k) break 而不是 continue,否则还是会超时,ac代码如下
2024-08-05 20:10:02
277
原创 synchronized加锁原理
jdk 1.6以后,引入了偏向锁,只有第一次使用CAS,将线程ID设置到锁对象的Mark Word头中(之前是用锁记录替换markword),这样就可以根据线程id判断是否是自己线程持有锁,不用CAS了。进入synchronized后,会首先在线程栈中创建一个锁记录,它的object字段指向锁对象,并用CAS将锁记录的地址存储在对象头的mark word中。如果CAS修改失败,说明发生了竞争,会再去申请monitor,升级为重量级锁,原来持有锁的线程也会走重量级锁的解锁流程。
2024-07-25 20:34:11
206
原创 416. 分割等和子集
首先明确如果需要返回为true,需要背包正好放满,但是经典01背包的 dp[i][j] 表示的是“前i个物品,放入容量为j的背包,所得的最大价值”,此时背包并不一定是满的用什么表示背包中装了多少呢?其实这里的value可以理解为此时背包中物品的重量
2024-07-03 22:43:26
242
1
原创 Mysql隔离级别及原理
幻读可以看作不可重复读的一种特殊情况,在解决方式上,由于记录锁只能锁住已存在的记录,为了避免插入新纪录,需要依赖间隙锁。
2024-07-03 22:07:54
212
原创 Java值传递
1. 对于基本数据类型,在方法体内重新赋值或者进行swap,不会改变实参的值2. 对于引用类型 a. 对形参重新赋予引用,不会改变实参持有的引用 b. 对形参所指向的属性进行变更,将改变实参的属性值(就像第一个例子)
2024-07-03 21:53:31
240
原创 Spring中setter注入和构造器注入使用场景区别详解
Setter注入和构造器注入各自适用于不同的使用场景,下面通过具体的示例来说明它们的使用场景区别。
2023-10-11 11:02:08
373
原创 静态工厂用法及优势
通过使用有意义的方法名、控制对象的创建、返回子类类型和减少对象创建的重复性,静态工厂方法能够提供更好的灵活性、可读性和性能。相比于简单的构造函数,静态工厂方法可以通过方法名表达对象创建的目的或含义。静态工厂方法可以包含逻辑来决定是否返回新的对象实例,还是从缓存中返回现有的实例。静态工厂方法可以返回类的任何子类的对象。这种灵活性可以用于隐藏实际实现,并且在不改变客户端代码的情况下替换具体的实现。静态工厂方法在创建对象时可以进行缓存或池化,避免了重复地创建相同的对象,从而提高了性能和效率。
2023-10-10 21:01:40
137
原创 王道操作系统笔记万字自用
组成(类似与面向对象中的“类”)局部于管程的共享数据结构说明对该数据结构进行操作的一组过程对局部于管程的共享数据设置初始值的语句管程有一个名字注意:每次仅允许一个进程或线程在管程内执行某个内部过程(大概就是把PV操作的进程都交给管程内部处理,由编译器负责实现各进程互斥的进入管程中的过程,程序员只需要调用管程中提供的方法)
2023-10-10 09:51:54
521
原创 JavaWeb前端速通(黑马23年课)
原始类型:number、string、boolean、null、undefined。stringify():JS对象转化为JSON字符串。识色器插件:live color picker。函数名称: function(形参列表){};parse():将JSON字符串转化为JS对象。:通过JavaScript对象标记法书写的。text-indent:首行缩进。text-align:文本对齐。line-hight:行高。var 对象名 = {属性名1: 属性值1;属性名2: 属性值2;
2023-08-28 20:56:40
172
原创 @GetMapping和@PostMapping的使用场景
通常,RESTful API 设计中,GET 请求用于获取资源,POST 请求用于创建资源。根据 HTTP 规范,GET 请求应该是幂等的,而 POST 请求可以有副作用,如创建数据、更新数据等。是 Spring Framework 中的注解,用于处理 HTTP 请求映射到特定的处理方法(Controller 方法)。请注意,除了这两个,Spring Framework 还提供了其他的注解如。(处理 HTTP DELETE 请求)等,用于映射不同的HTTP请求方法。(处理 HTTP PUT 请求)、
2023-08-15 23:39:17
1563
原创 反射动态性的体现(来自ai解释)
反射的动态性体现在它允许程序在运行时动态地获取、检查和操作类的信息、成员和方法,而不需要在编译时提前知道这些信息。这使得代码能够更加灵活地适应不同的情况和需求,以及在运行时根据条件来进行动态的操作。现在,我们可以通过反射在运行时根据用户的选择动态地实例化不同的计算器实现类,并调用它们的方法。总之,反射的动态性使得我们能够在运行时根据条件动态地操作类和对象,适用于一些需要动态行为的情况,例如插件化系统、配置文件解析等。这个示例展示了反射在运行时动态选择类、创建对象和调用方法的能力,从而实现了动态性。
2023-08-14 22:34:23
81
原创 Week 17
想要得到数a,就只需要pow(2, m-1)和pow(2, m-1-a)进行异或运算,题目要求最多能选多少数,就可以把前面都选上(最后异或会变0);思路:先找出数量最多的糖果maxx,它们需要被分隔开,就要每个空之间都插入一个其他类型的糖果,所以其他糖果的总数sum应该至少为maxx-1。赋值,记录每个数字变成了哪个值,再将b[N]的值变成对应的,这样就将该题变成了在b[N]中查找最长升序子序列的问题!,每使用一次操作2就用add记录一次,最后输出的时候直接加add,这样就不用全部遍历了。
2023-04-17 18:18:51
71
原创 第五次双周赛
时间复杂度:应该先存照片信息,如果照片中有a或b,再遍历照片。如果输入时就全部存进去后面会超时。注意:不需要查找时尽量用unordered_map,不然可能会运行超时。性别区分:0 和-0是不一样的,要用string接收不能用int。stoll():string转为long long。思路:输入时用并查集合并,并统计现在有多少块。每删一个城市都要重新合并一次,再统计当前块数。stol():string转为long int。stoi()函数:把string转为int型。
2023-04-14 11:47:56
70
原创 week16
概念:在mod p的意义下, 有(a*b) mod p = 1,则称b为a的乘法逆元,为方便我们记作inv(b);A*B大于1的整数的平方的整数倍可以转换成 A和B有公因子 或 A或B中有因子是某个大于1的整数的平方的整数倍。当存了q个时,结束。99,100~999,每个位数一样的为一档,同一档中,f(n)-f(n-1)=1。所以**pow(b, p-2)**即为在mod p意义下,b的乘法逆元。删掉每两个1之间的k个0,该01串还剩n-(i-1)*k个,从0到n枚举1的数量,0的数量为(i-1)*k。
2023-04-09 23:14:14
70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人