- 博客(11)
- 资源 (4)
- 收藏
- 关注
原创 RandomAccessFile类使用详解(转)
1.RandomAccessFile特点RandomAccessFile是java Io体系中功能最丰富的文件内容访问类。即可以读取文件内容,也可以向文件中写入内容。但是和其他输入/输入流不同的是,程序可以直接跳到文件的任意位置来读写数据。 因为RandomAccessFile可以自由访问文件的任意位置,所以如果我们希望只访问文件的部分内容,那就可以使用RandomAccessFile类。 与OutputStearm,Writer等输出流不同的是,RandomAccessFile类允许自由定位文件
2021-04-28 15:16:54 1529
原创 Arthas (Java内存、线程、CPU性能诊断工具)快速入门
发现自己的服务运行缓慢,或CPU/内存占用率过高,你是否都需要用java自带的jmap、jinfo、jstack等敲一堆命令,当然你也可以用jprofile分析,但使用总是不够便捷。你肯定希望有一款更方便更直观的工具可以进行这些性能分析。由阿里开发开源的Arthas正是这么一款非常好用的Java诊断工具。一. Arthas(阿尔萨斯)能干什么?Arthas 是Alibaba开源的Java诊断工具,它能帮你解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的
2021-01-27 20:46:01 739 1
原创 二叉搜索树-把二叉搜索树转换为累加树
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。注意:该题目与 538: https://leetcode-cn.com/problems/convert-bst-to-greater-tree/ 相同示例 1
2021-01-26 21:16:07 200
原创 JAVA8流式编程总结(持续更新)
1.分组List<TaskHeaderPO> tasks = List<TaskVO> subTasks = tasks.stream().map(task -> { TaskVO taskVo = new TaskVO(); taskVo.setItemNumber(task.getItemNumberList()); taskVo.setRegionCode(task.get
2021-01-20 19:39:48 597 1
原创 二分算法-种树
题目描述云服务平台新上线一个绿化规划服务 , 园林部门用其帮助规划种树任务 : 在某个笔直的路段栽种 num 棵树假定该路段规划设计图上的坐标自 0 开始 , 二维数组 areas 按照坐标升序以 [起点坐标,终点坐标] 记录了规划绿化区间 , 且区间互不相交 。树木只能栽种在绿化区间内 , 且在不同的整数坐标位置上。尽量稀疏种植 , 每种种植方案中相邻两棵树的间距最小的记 为 minDistance , 其中 minDistance最大的则为最佳种植方案 , 请返回minDistance最大可能是
2021-01-19 21:12:51 923 1
原创 股票最大收益-贪心算法+动态规划
给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出: 8解释: 能够达到的最大利润:在此处买入 pri
2021-01-14 10:21:26 1514 1
原创 单调栈算法实战
请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。解法一:暴力解法(双层循环):public i
2021-01-12 21:19:41 155
原创 史上最全的性能优化
监控指标CPU过高根因定位方法JPS –l 找到进程IDps -mp pid -o THREAD,tid,time3.找到TID,转换成16进制,4.jstack 进程id > ps.txt 导出的文件中搜索内存占用过高的JVM调优常驻内存数据较多,经常触发GC,导致接口变慢。监控发现3分钟的压测,出现了大约70+次FGC,占用时间30秒,约1/6的运行时间。平均每次GC占用时间500毫秒(FGCT/FGC)1.追踪FGC jstat—gc pid 10002.检查jvm内
2021-01-12 18:30:22 192
原创 JVM堆栈分析及其它常用命令(持续更新)
查看实例数量: jmap -histo 144统计线程数,死锁: jstack 144查看占用cpu高的线程:top -H打印堆栈信息:jmap -dump:live,format=b,file=xxx.hprof [pid]windows 命令:杀进程:taskkill /F /PID 17956查找java进程:tasklist | findstr “java”...
2021-01-10 14:49:17 201
原创 Oracle切换Mysql常用改动点
1、序列 自增主键改法: SELECT LAST_INSERT_ID()</selectKey>自定义主键雪花算法 SELECT ${@com.huawei.it.cisc.com.dfs.config.UniqueIdWorker@nextSeqId()}JAVA代码获取单个或多个序列号 业务实现类注入雪花算法单例@Autowiredprivate UniqueIdWorker uniqueIdWorker;2.调用uniqueId
2021-01-10 14:41:31 327
原创 MySQL的死锁分析
一,关于MySQL的死锁MySQL的死锁指的是两个事务互相等待的场景,这种循环等待理论上不会有尽头。比如事务A持有行1的锁,事务B持有行2的锁,然后事务A试图获取行2的锁,事务B试图获取行1的锁,这样事务A要等待事务B释放行2的锁,事务B要等待事务A释放行1的锁,两个事务互相等待,谁也提交不了。这种情况下MySQL会选择中断并回滚其中一个事务,使得另一个事务可以提交。MySQL会记录死锁的日志。二,人造一个死锁的场景新建一个表,添加两条数据:创建两个事务,事务执行的sql分别是:事务A
2021-01-10 14:26:08 1045
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人