- 博客(390)
- 资源 (3)
- 收藏
- 关注
原创 dfs递归回溯的两种体型
个人思路:不像前面的全排列,按排列的位置应该放什么元素这种思路,而是直接看看nums中的每个元素是选还是不选,往下dfs的话就看看下一个nums的元素是选还是不选。个人思路:可以枚举排列中每一个位置pos应该放什么元素,往下dfs就看看下一个位置pos放什么元素。
2025-04-03 15:04:43
52
原创 Drools 议程组(AgendaGroup)执行顺序实验
我们定义两个规则,分别属于report议程组 和议程组,每个规则触发时都会打印日志并记录执行顺序。
2025-02-22 19:48:40
264
原创 接口开发完后,个人对于接下来接口优化的一些思考
连接池的原理是通过预先创建一定数量的连接对象,并将其保存在池中。当需要使用连接时,从池中获取一个可用的连接对象,使用完毕后归还给池,而不是每次都创建和销毁连接对象。使用缓存虽然可以提升用户体验,但是也会带来其他问题,如数据一致性问题。还有缓存穿透、缓存击穿、缓存雪崩、缓存淘汰等问题。批量查询只产生2条SQL,不限于读取(批量读取),写入(批量写入)也是一样的。并行思想:把大任务拆分多个子任务,让多个子任务同时执行(人多力量大)数据量大的时候,使用压缩算法减少传输数据的时间。因为没有入参,所以不需要考虑。
2025-01-03 10:32:09
708
原创 个人对于“索引下推”的理解
索引下推?MySQL的架构层次答:MySQL架构可以简单分为Server层和存储引擎这两层。Server层上接和客户端的交互,下接与存储引擎的数据交互,存储引擎则负责数据的存储和读取。举例:useridusernamezipcodebirthdateid),KEYzipcodebirthdate然后执行查询注意这里用了日期函数,索引会失效。
2024-11-24 14:53:38
930
原创 Feign:服务挂了也不会走fallback
Feign 本质上是一个 HTTP 客户端,用于简化微服务之间的 HTTP 通信。它允许开发者通过定义接口和注解来声明式地编写 HTTP 客户端,而无需手动编写 HTTP 请求和响应处理的代码。今天在模拟微服务A feign调用微服务B的时候,把微服务B关了,可是调用的时候不会走fallback降级方法。配置文件已经开启了Feign与Sentinel的集成,启用熔断降级。服务A使用Feign去调用另一个服务B。后面发现是没加sentinel依赖。
2024-09-28 19:37:08
589
1
原创 webContextUnify的作用
为了更好理解spring.cloud.sentinel.webContextUnify的作用,我直接提供一个详细的场景,包括完整的目录结构和URL路径。
2024-08-28 14:08:10
683
原创 排查Maven问题的步骤
2.使用清楚工具将所有的lastupdate清除,4.有了私服地址,但是还是下载不到。—>拷贝同事仓库,覆盖自己的仓库。1.检查IDEA中配置是否正确。0.检查pom文件完整性。3.有些依赖是公司的依赖。—>查看地址是否能访问。
2024-08-24 18:39:18
438
原创 Bean对象生命周期流程图
Bean生命周期流程图:https://www.processon.com/view/link/5f8588c87d9c0806f27358c1
2024-08-19 11:18:15
360
原创 maven配置 + IDEA集成自己配置的maven
我把JAVA_HOME换成1.8的,因为Java版本从17换成1.8我觉得可能好一些。4. 把bin目录加入到系统变量的 Path 环境变量当中。字节码版本换成8(JDK8,java1.8,java 8)6. IDEA就该项目更换maven。JRE版本也要是1.8。
2024-08-09 21:20:12
619
2
原创 MySQL事务隔离级别、InnoDB使用MVCC+各种锁实现了RC和RR事务隔离级别、具体案例
对于 一致性非锁定读(Consistent Nonlocking Reads)open in new window的实现,通常做法是加一个版本号或者时间戳字段,在更新数据的同时版本号 + 1 或者更新时间戳。查询时,将当前可见的版本号与对应记录的版本号进行比对,如果记录的版本小于可见版本,则表示该记录可见。相反地,InnoDB 存储引擎会去读取行的一个快照数据,对于这种读取历史数据的方式,我们叫它快照读 (snapshot read)。在锁定读下,读取的是数据的最新版本,这种读也被称为。
2024-08-07 11:45:30
908
原创 jmap的使用
jmap 是 Java Memory Map 的缩写。它是 Java Development Kit (JDK) 提供的一个命令行工具,用于生成有关 Java 虚拟机 (JVM) 内存使用情况的详细信息,包括堆内存快照和垃圾收集的统计数据。这些信息对于内存诊断和调优非常有用。
2024-08-02 13:24:22
1189
原创 System.identityHashCode(Object obj) 和 obj.hashCode() 的区别
【代码】System.identityHashCode(Object obj) 和 obj.hashCode() 的区别。
2024-07-26 15:43:31
430
原创 Java内存分析
方法是类初始化方法(class initializer),它由编译器生成,用于执行类的静态初始化块和静态变量的赋值。类构造器()方法是由编译期自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的。(类构造器是构造类信息的,不是构造该类对象的构造器)类构造器()方法是由编译期自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的。当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化。A 类的实例对象,创建时调用了 A 类的构造方法,输出 A类的无参构造初始化。
2024-07-23 21:25:17
770
原创 Java 8引入的Lambda表达式
Java 8的一大亮点就是引入了Lambda表达式,使用它可以替代我们以前经常写的匿名内部类来实现接口。Lambda表达式本质是一个匿名函数。
2024-07-21 16:54:26
937
原创 在Java中,内部类分为两种主要类型:非静态内部类和静态内部类
非静态内部类 B 持有对它的外部类 A 实例的隐式引用,也就是可以访问外部类的所有成员变量和方法,包括私有成员。非静态内部类 B 的字节码文件命名为 A$B.class。只能访问外部类的静态成员,不能直接访问外部类的实例成员。静态内部类 C 的字节码文件命名为 A$C.class。静态内部类 C 没有对外部类 A 实例的隐式引用。
2024-07-18 16:49:41
273
原创 用ThreadLocal解决线程隔离问题
结果:使用ThreadLocal解决上面线程隔离问题。结果:如果使用也可以完成一样的效果,但是却牺牲了程序的并发性。另一个需求场景:弊端使用ThreadLocal相比常规的解决方案的优势。
2024-07-07 21:46:28
1020
原创 Java引用的4种类型:强、软、弱、虚
在Java中,引用的概念不仅限于强引用,还包括软引用、弱引用和虚引用(也称为幻影引用)。这些引用类型主要用于不同的内存管理策略,尤其是在垃圾收集过程中。
2024-07-07 21:01:47
610
原创 ThreadPoolExecutor - 管理线程池的核心类
行为:支持定时任务和周期性任务的线程池,核心线程数由 corePoolSize 决定,超出线程池和等待队列容量的任务会被拒绝并抛出异常。线程池可根据需求动态创建新的非核心线程,闲置超过 10 毫秒的线程会被终止并移出缓存,虽然话是这么说,但是由于 DelayedWorkQueue 是一个无界队列,通常情况下不会出现任务队列满的情况,因此非核心线程在 ScheduledThreadPoolExecutor 中被使用的机会较少,就主要还是依赖。换句话说,生产者线程和消费者线程必须直接在队列上进行任务的交接。
2024-07-07 14:00:45
1045
原创 匿名内部类
下面代码中,Person24 是一个抽象类,这意味着它不能被直接实例化,只能通过继承它的子类来实现其抽象方法。代码片段中展示了如何使用匿名内部类来实现一个抽象类的实例。下面代码片段中展示了如何使用匿名内部类来实现一个接口的实例。
2024-07-05 19:38:52
183
原创 Java final关键字
Java提供了一种语法,可以在数据初始化后不被修改,使用关键字final,一般将final修饰的变量称之为常量,或者叫不可变变量。
2024-07-05 15:06:19
243
原创 四种封装 ThreadPoolExecutor 的线程池的使用以及直接使用 ThreadPoolExecutor ,优缺点分析
下面是手动创建线程和执行任务过程,可见挺麻烦的,而且线程利用率不高。池化思想:线程池、字符串常量池、数据库连接池。
2024-07-05 13:07:15
443
原创 Java线程
但是Thread的下面三行run方法被重写了,也就不用管Runnable类的target了,虽然Runnable类的target的run方法被重写了,所以没机会执行Runnable类的target的run方法了。创建了一个实现了 Runnable 接口的匿名内部类的对象,然后这个Runnable类的匿名内部类的对象被传给Thread的target。在 Java 中,创建并启动一个新的线程通常有两种主要的方式:继承 Thread 类和实现 Runnable 接口。ps:若两个同时使用呢?
2024-07-04 19:47:58
468
原创 x.java => 字节码文件x.class => 运行
javac.exe.java.class字节码java.exe.class字节码.class字节码。
2024-07-04 09:45:44
239
原创 Unicode 和 UTF-8 以及它们之间的关系
Unicode就像是一个图书馆的目录系统,给每个字符一个唯一编号。UTF-8是把这些字符打包成字节的小盒子的规则,用不同大小的盒子装不同的字符。通过这种方式,我们可以把世界上所有的字符(Unicode 和 UTF-8 使得我们能够处理几乎所有语言的字符)都打包并传输到任何地方(无论你在世界的哪个地方,使用什么设备或应用程序,只要它们支持 Unicode 和 UTF-8,就能够正确地识别和显示这些字符),而不会弄混淆。
2024-07-03 16:40:23
517
原创 for循环中list触发fast-fail或不触发的原理和方法
想要在循环时进行增删操作,也就是进行这类对集合结构性有影响的操作,就要保证数据隔离性,下面是三种数据隔离性的处理方式,本质都是复制东西,只是复制的东西有所不同。首先两者拿的是同一个迭代器,并且两者不同步,一个都遍历结束了,另一个都还没开始就无法遍历集合了,但是他本来循环从头开始遍历集合的所有数据的。for-each循环对集合进行增删也可能抛出异常,因为for-each在反编译下可以发现就是迭代器的语法糖,所以涉及到对迭代器的使用。比如有两个线程都需要使用迭代器进行遍历集合的操作,如果通过直接实现。
2024-07-03 13:05:44
1501
原创 TreeMap 和 TreeSet 的基本情况、特性以及使用场景,并对比它们与 HashMap 和 HashSet
选择TreeSetTreeMapHashSet或HashMap需要有序集合/映射,范围查询:选择TreeSet或TreeMap。需要快速查找、插入和删除,无序要求:选择HashSet或HashMap。理解各自的特性和使用场景,能够更高效地解决问题。
2024-06-30 18:51:19
551
数据集UCF101 + CRNN模型 + 模型预测结果
2023-05-06
数据集UCF101 + Conv3D模型 + 模型预测结果
2023-05-05
复杂网络的任意子节点间的网络最短距离的求解 最小斯坦纳树---python代码(含输入数据、绘图代码、解题代码、csv生成文件)
2022-06-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人