07 2024 档案

摘要:总结自:10 分钟彻底搞懂“动态规划”算法 下面用实例讲解什么是动态规划算法(Dynamic Programming,DP)。 首先我们来看一个经典的动态规划问题。 输入一个无序的数组,要求找出其中最长的递增的子序列。 如:对于[1, 5, 2, 4, 3],其最长递增子序列为1,2,4、1,2,3 阅读全文
posted @ 2024-07-21 17:02 Higurashi-kagome 阅读(76) 评论(0) 推荐(0) 编辑
摘要:摘自:《Java 编程的逻辑》 Java 并发包中的提供了显式锁,它可以解决 synchronized 的一些限制。 Java 并发包中的显式锁接口和类位于包 java.util.concurrent.locks 下,主要接口和类有: ❑ 锁接口 Lock,主要实现类是 ReentrantLock; 阅读全文
posted @ 2024-07-13 18:53 Higurashi-kagome 阅读(84) 评论(0) 推荐(0) 编辑
摘要:基于最浅显易懂的 KMP 算法讲解总结 KMP 算法是一个经典的字符串匹配算法。字符串匹配是一个非常基本的操作,也就是在一个字符串中寻找另一个子串。 暴力解法 最容易想到的解法是一种暴力匹配的算法,比如一个字一个字地与子串进行比对,一旦匹配失败,就跳回主串中的下一个字符,重新开始匹配。 这个算法的原 阅读全文
posted @ 2024-07-11 14:54 Higurashi-kagome 阅读(1511) 评论(0) 推荐(0) 编辑
摘要:基于:Java 线程池七个参数详解 参考:为什么使用线程池,参数解释、《Java 编程的逻辑》- 马俊昌 为什么用线程池 1、降低资源消耗:提高线程利用率,降低创建和销毁线程的消耗; 2、提高响应速度:任务来了,直接有线程可用可执行,而不用先创建线程,再执行; 3、提高线程的可管理性:线程是稀缺资源 阅读全文
posted @ 2024-07-09 15:52 Higurashi-kagome 阅读(56) 评论(0) 推荐(0) 编辑
摘要:原文:使用线程池 简介 Java 语言虽然内置了多线程支持,启动一个新线程非常方便,但是,创建线程需要操作系统资源(线程资源,栈空间等),频繁创建和销毁大量线程需要消耗大量时间。 如果可以复用一组线程: ┌─────┐ execute ┌──────────────────┐ │Task1│──── 阅读全文
posted @ 2024-07-09 15:50 Higurashi-kagome 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文:Java 字符串拼接原理 我们知道 Java 可以直接使用加号+来拼接字符串。 字符串+拼接的本质是使用StringBuilder.append()(已在Java8测试通过),最终如果要赋值给字符串变量时,会调用toString()。 /** * 字符串追加 */ @Test public v 阅读全文
posted @ 2024-07-08 00:34 Higurashi-kagome 阅读(62) 评论(0) 推荐(0) 编辑
摘要:原文:Java 锁消除和锁粗化 锁粗化 通常情况下,为了保证多线程间的有效并发,会要求每个线程持有锁的时间尽可能短,但是某些情况下,一个程序对同一个锁不间断、高频地请求、同步与释放,会消耗掉一定的系统资源,因为锁的请求、同步与释放本身会带来性能损耗,这样高频的锁请求就反而不利于系统性能的优化了,即使 阅读全文
posted @ 2024-07-01 15:27 Higurashi-kagome 阅读(46) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示