thumbnail
软件设计第一步——需求分析之用例图
用例图 一、介绍 用例图是需求分析的重要部分,细化用例图就能得到类图,后续根据类图开发程序。用例图由参与者、用例、边界以及他们之间的关系构成。 二、参与者 可理解为不同的角色,指一类用户,而不针对某一个用户。就像Java里的类一样。用小人表示。 三、用例 某个功能,参与者的某个操作。Java里的方法。用椭圆表示。 四、边界 系统之间的界限。用矩形表…
博客又搬家了
迁移博客 ​ 刚开始时,我的博客和及应用都是直接部署服务器的。在去年,由于服务器中了挖矿病毒( 老李 帮我解决的),就将博客和应用迁移到了 老李 的NAS服务器上,通过内网穿透来访问。 ​ 今年新购了2h4g的云服务器,以前租的服务器是1h2g的,当时在那台服务器上部署了博客和一个应用,但应用经常停止,排查发现是wdcp面板占内存,导致系统内存不足…
thumbnail
LeetCode509. 斐波那契数
一、介绍 斐波那契数应该是动态规划的入门题,看到过很多次了。解法一般分为两种,自下而上和自上而下+备忘录(优化重复子问题) 使用leetcode的idea插件 二、题目 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,   F(1) = 1…
thumbnail
Java:ThreadLocal
ThreadLocal结构图 结构变化后带来的好处 早期ThreadLocalMap里的Entry较多,每个线程都有一个,占用空间大 线程销毁时,后期的ThreadLocalMap将会销毁,释放资源 设置默认值,也就是当前线程和ThreadLocal对象还未往ThreadLocalMap里存数据时 ThreadLocal<String>…
thumbnail
Java引用:强、软、弱、虚
Java引用分为强引用、软引用、弱引用、虚引用 一、强引用 public class M { @Override protected void finalize() throws Throwable { System.out.println("m.finalize"); super.finalize(); } } public …
thumbnail
利用脚本定时提交笔记
使用Markdown来做笔记,但每次在家里要使用时,都要远程公司,提交笔记到git,再在家里电脑上拉取,这是个重复的过程。重复==可以用程序解决 于是写了个脚本,电脑启动时拉取,每天晚上9点提交 之前在工作中遇到切换代码分支后,每次都要构建很多组件,也是写了个脚本一键执行 Windows步骤如下 1. 提交脚本 set codePath=D:\wo…
剑指 Offer 16. 数值的整数次方
1. 要点 这道题一看就是考优化,尝试了很多次才过了,要点的话,就是用数组存结果时(打表),创建的数组太大,空间要求过不了,并且没有充分利用这个数组,很多元素都是空的.想了想这个数组的使用场景,用下标获取结果,那不就是Map嘛,要多大,就用多大,这下就不会浪费空间了 2. 题目 实现函数double Power(double base, int e…
thumbnail
LeetCode99. 恢复二叉搜索树
1. 要点 二叉搜索树的特点:中序遍历结果递增,可用来做验证 复习下中序遍历(太久没写,写成前后序遍历的先push去了) 2. 题目 给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗? 3. 示例 1: …
thumbnail
动态代理+读写锁实现线程安全的HashMap缓存工具类
背景 jdk1.8之前是没有线程安全的集合工具类,例如currentHashMap,那怎样实现高效、线程安全的集合工具类呢? 可以利用读写锁实现线程安全,动态代理帮助集合作为工具类,产生更多的使用场景,例如缓存 代码 1. 创建缓存基类和子类 基类里的读写锁 private ReadWriteLock readWriteLock = new Ree…