生成随机字符串
生成随机字符串随机数生成工具123456import java.util.Random;/** * 伪随机数生成类 */private static final Random RANDOM = new Random();
获取随机数12345678/** * 获取指定范围内的随机数 * @param value 随机数最大值+1 * @return [0,value)中的整数 */private static int getRandomNumber(int value){ return RANDOM.nextInt(value);}
获取随机字符串123456789101112131415161718/** * 从str中获取随机字符串 * @param size 字符串长度 * @param str 字符来源集合 * @return 随机字符集合 */private static String getRandomString(int size,String str){ if (size <= 0 || str == null || ...
重构字符串,使得两相邻的字符不同
重构字符串,使得两相邻的字符不同题目链接:767. 重构字符串 - 力扣(LeetCode) (leetcode-cn.com)
参考文章:(17条消息) JAVA程序设计:重构字符串(LeetCode:767)_信仰.的博客-CSDN博客
思路一:排序我们按照字符出现的频率进行排序,这样相同的字符此时是连续出现的,我们可以每隔一个字符空位插入一个字符,但是有一种特殊情况是出现次数最多的字符可能出现了(n+1)/2次,此时有可能前两个字符会出现相同的情况,为了避免这种情况,我们要使出现次数最多的字母排在最后,因此我们选择从小到大排序,问题解决了
12345678910111213141516171819202122232425262728293031323334public String reorganizeString(String S) { int len=S.length(); int[] nums=new int[26]; // 例如S="aabbccc",则nums={200,200,300} for( ...
类对象的生命周期
类对象的生命周期参考文章:类加载过程详解 | JavaGuide
http://www.iigrowing.cn/java_dui_xiang_tou_xiang_jie.html
类的生命周期
类的加载过程
编写相应的.java文件
通过javac编译为.class文件
为编译期间可确定的常量赋值
加载(双亲委派机制)
通过全类名在字节码文件中获取定义此类的二进制字节流
通过二进制字节流加载到方法区中
在内存中生成相应的class对象
验证
验证文件格式
验证元数据
验证字节码
验证符号引用
准备
为类静态变量分配内存并赋初值(如public static int a)
解析
将符号引用转变为直接引用(比如在代码中调用了静态方法A(),此时将其替换成A()方法的实际内存地址)
初始化
为静态变量赋正确的值
使用
卸载
该类所有的实例都已经被回收
该类的类加载器的实例被回收(在 JVM 生命周期内,由 jvm 自带的类加载器加载的类是不会被卸载的。但是由我们自定义的类加载器加载的类是可能被卸载的(jdk 自带的 BootstrapClassLoader, Ext ...
单调队列解决滑动窗口问题
单调队列解决滑动窗口问题力扣链接:剑指 Offer 59 - I. 滑动窗口的最大值 - 力扣(LeetCode) (leetcode-cn.com)
剑指 Offer 59 - II. 队列的最大值 - 力扣(LeetCode) (leetcode-cn.com)
单调队列队列中的元素呈现一定的单调性,单调递增或单调递减
滑动窗口问题指求解在指定范围内的最值问题,并且这个范围还会移动或改变
滑动窗口的最大值滑动窗口的最大值:剑指 Offer 59 - I. 滑动窗口的最大值 - 力扣(LeetCode) (leetcode-cn.com)
思路
构造一个单调递减的队列
获取当前队列的首元素即可获取当前窗口的最大值
当单调队列中的最大值在滑动窗口范围外,就弹出队首元素
当新增元素大于等于队尾元素时,就不断弹出队尾元素,直到队尾元素大于新增元素,再新增元素
代码123456789101112131415161718192021222324252627282930class Solution { public int[] maxSlidingWindow(int[] nu ...
给你一个树的后序遍历集,判断其是否为二叉搜索树
给你一个树的后序遍历集,判断其是否为二叉搜索树力扣链接:剑指 Offer 33. 二叉搜索树的后序遍历序列 - 力扣(LeetCode) (leetcode-cn.com)
思路已知后序遍历为:左子树->右子树->根结点,将其后序遍历结果数组反转后变为:根结点->右子树->左子树
如果其符合二叉搜索树的定义,那么它的右子树必然比根结点大,左子树必然比根结点小
我们使用一个单调栈(单调递增),对于根结点和右子树来说其满足单调栈的条件,对于左子树来说则不满足单调栈的条件,
当遇到数组元素小于单调栈顶部元素时,我们可知现在已经遍历到树的左子树部分,则弹出树的根结点和右子树,直到数组元素大于等于单调栈顶部元素
为什么要直到数组元素大于等于单调栈顶部元素,而不是直接清空单调栈,因为右子树的左子树也要比根结点大
对左子树进行同样的操作。
代码123456789101112131415161718192021222324class Solution { public boolean verifyPostorder(int[] postorder) { ...
根据前序遍历和中序遍历结果重构二叉树
根据前序遍历和中序遍历结果重构二叉树力扣原题链接:剑指 Offer 07. 重建二叉树 - 力扣(LeetCode) (leetcode-cn.com)
思路中序遍历结果为左子树->根结点->右子树
由此我们可以确定树的范围,左子树范围为[0,根结点),根结点,(根结点,中序遍历结果数组长度-1]
再根据前序遍历结果确定根结点位置,前序遍历结果为根结点->左子树->右子树
然后递归就行了
递归出口为:当树范围的左边界大于右边界时,说明该结点为null结点
代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; ...
2021年全年理财小结
2021年全年理财小结去年今年收益与创业板相当,下半年几乎全白玩
未来将仓位逐渐过渡到中概互联、科创50和传媒
节假日前闲钱购买国债逆回购
节假日前闲钱购买国债逆回购定义史上最全的国债逆回购讲解(附操作) - 知乎 (zhihu.com)
国债逆回购是什么,怎么操作,收益如何? - 知乎 (zhihu.com)
如果还不懂的请自行百度
种类分为深市和沪市,沪市门槛较高,相对的利率也较高
深市:
沪市:
预期收益其预期收益是动态变化的,例如:
在2021.12.30上午8点58
在2021.12.30上午10点40
当购买了具体某一期逆回购之后,其收益就可以确定了
推荐购买时间国债逆回购一般在放假前两天利率波动大,在越重大的节假日前其波动越大
是否值得长期持有不是很推荐长期持有。因为逆回购短期波动较大,长期波动较小。
如果想要获得超额收益,不推荐长期持有;
如果首先考虑的是保障资金安全,那么推荐长期持有,因为逆回购的安全性很高
推荐购买金额只推荐使用券商账户中的闲钱进行购买
逆回购短期波动大,才会有相对较高的收益
其次根据你购买的品种不同,其可用和可取的时间也不一定相同
例如我在2021.12.30购买了1天期的逆回购,我的可用时间是2021.12.31,但我的可取时间是2022.01.04 ...
力扣LFU缓存题解
力扣LFU缓存题解题目链接:460. LFU 缓存 - 力扣(LeetCode) (leetcode-cn.com)
参考:Java 13ms 双100% 双向链表 多解法超全😂 - LFU 缓存 - 力扣(LeetCode) (leetcode-cn.com),超详细图解+动图演示 460. LFU缓存 - LFU 缓存 - 力扣(LeetCode) (leetcode-cn.com)
思路:与LRU思路类似,Node结点中增加一个属性freq用于表示该项的使用次数,双向链表与LRU中的一致,LRUCache是Map+双向链表,而LFUCache是Map+Map<freq,双向链表>,因为LRU只需找出最久未使用的Node,而LFU需要找出使用次数最少(如果有多个使用次数最少的,则找出其中最久未使用的)
LRU对照学习详情请参考另一篇力扣LRU缓存题解
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 ...
docker常用命令
docker常用命令参考于:首页-KuangStudy
帮助命令1234567891011#查看docker版本docker versiondocker -v#查看docker系统信息docker info#帮助docker --help
镜像命令1234567891011121314151617181920212223242526272829303132#查看镜像列表docker images 等价于 docker image ls#可选参数-a #列出本地所有镜像 -q #只显示镜像id --digests #显示镜像的摘要信息#示例docker images -aq#搜索镜像docker search IMAGE_NAME:TAG#可选参数--filter=stars=50 : 列出收藏数不小于指定值的镜像。#示例docker search mysql --filter=stars=5000#拉取镜像docker pull IMAGE_NAME:TAG#示例docker pull mysql:8.0 #如不指定版本,默认指定latest#删除镜像docker rmi ...