- 博客(137)
- 资源 (16)
- 收藏
- 关注
原创 shardingsphere示例配置
shardingsphere 版本:4.0.1分表配置:spring.shardingsphere.datasource.names=dsspring.shardingsphere.datasource.ds.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.ds.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.dat
2021-08-12 16:42:11
1578
原创 无序数组,找到左侧元素比它小,后侧元素比它大的元素
// 无序数组,找到元素,它左边的元素都比它小,它右边的元素都比它大 @Test public void findEleTest() { int[] arr = new int[]{1,2,3,9,5,6,10,11,13,15,17}; findEle(arr); System.out.println(list); } public void findEle(int[] nums) { // 该数组存储元.
2021-08-02 19:39:01
530
原创 根据字符出现的次数排序
@Test public void sortStringTest() { System.out.println(sortString("2a554442f544asfasssffffasss")); System.out.println(sortStringWithBuket("Aabb")); System.out.println(sortStringWithBuket("2a554442f544asfasssffffasss"));// .
2021-07-09 18:12:38
509
原创 实现一个trie树,添加和搜索字符串
@Test public void searchWordTest() { List<String> words = new ArrayList<>(2); words.add("hello"); words.add("world"); TrieNode root = new TrieNode(); addWord(words, root); System.out.println(.
2021-07-09 10:39:11
109
原创 大数据排序
如一个4G的文件,里面是无重复的数字,要求在2G内存的机器上进行排序?方案1:linux sort 命令排序方案2:分治,归并。对大文件切割,分成4个500M的文件,然后就分别读入内存,进行快排,生成4个有序的新文件;然后变成合并K个有序数组/链表的问题,即对4个有序文件,每个读入100M的数据,然后使用一个500M的输出缓冲区;然后分别读入每个文件的第一个元素,判断取最小值,append到输出缓冲区,然后从取得最小值的文件的输入缓冲区,读下一个数字,再次比较,.
2021-06-24 09:37:27
217
原创 org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer解决
背景:我们是一个文件存储和下载的服务,部署架构如下。域名------>VIP------>[同一台机器]nginx,->实际服务。现象:在浏览器上下载文件时,打开Chrome的下载页面,发现下载到5M的时候,浏览器就会自动再次从新下载,经过几次后就下载失败。查看日志:查看服务的日志,发现报错如下:http-nio-1601-exec-47 ERROR - 2021-05-25 11:14:51.888 com.xxx.FileController::downloa
2021-05-25 14:19:31
2998
原创 不同路径
leecode 66题@Test public void test() { System.out.println(uniquePaths(3,7)); System.out.println(uniquePaths(3,2)); System.out.println(uniquePaths(1,2)); } /* 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:35.3 MB,
2021-05-18 11:34:09
73
原创 使用最小花费爬楼梯
/*数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。示例 2:...
2021-05-13 13:03:16
60
原创 按摩师问题
/*一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,9,3,1]输出: 12解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2.
2021-05-12 17:54:20
125
转载 Linux惊群效应详解(最详细的了吧)
linux惊群效应详细的介绍什么是惊群,惊群在线程和进程中的具体表现,惊群的系统消耗和惊群的处理方法。1、惊群效应是什么?惊群效应也有人叫做雷鸣群体效应,不过叫什么,简言之,惊群现象就是多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只可能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群。...
2021-05-10 19:45:01
365
转载 网络编程:epoll、accept触发模式及阻塞方式的选择
select(),poll()模型都是水平触发模式,信号驱动IO是边缘触发模式,epoll()模型即支持水平触发,也支持边缘触发,默认是水平触发从表象看epoll的性能最好,但是在连接数少,并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多回调函数来完成。epoll工作在两种触发模式下:Level_triggered(水平触发): 这是epoll默认的触发方式,既支持阻塞模式,也支持非阻塞模式,当被监控的文件描述符上有可读写事件发生时,epo
2021-05-08 14:32:00
960
原创 顺时针打印二维数组
/*顺时针打印二维数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 4不走 先向右移动,对应的j++ 在向下移动,对应的i++ 在向左移动,对应的j-- 在向上移动,对应的i-- 下面的print可以去掉,提高执行效率*/public class PrintArray { .
2021-05-07 15:28:41
243
原创 三角形最小路径和
执行效率有待提高。。。。/* 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 示例 1: 输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]].
2021-04-30 14:46:10
120
原创 买卖股票的最佳时机
/** * * * 给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。 * * 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 * * 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 * * * * 示例 1: * * ...
2021-04-29 21:26:21
124
原创 区域和检索 - 数组不可变
/** * 给定一个整数数组 nums,求出数组从索引i到j(i≤j)范围内元素的总和,包含i、j两点。 * * 实现 NumArray 类: * * NumArray(int[] nums) 使用数组 nums 初始化对象 * int sumRange(int i, int j) 返回数组 nums 从索引i到j(i≤j)范围内元素的总和,包含i、j两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j])) * *...
2021-04-29 21:18:03
124
原创 最大子序和
dp练习题:做出来了,但是执行很慢。。。。/** * 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] * 输出:6 * 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 * */ @Test public void test() { int[] nums = new int[]{-2,1,-3,4,-1,2,1,-5,4}; int s = maxSubArray(nu
2021-04-29 20:11:16
64
转载 MySQL执行计划解读
Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息id包含一组数字,表示查询中执行select子句或操作表的顺序id相同,执行顺序由上至下如果是子查询,id的...
2021-04-27 14:40:05
107
原创 找到第一个出现一次的字符,并返回
/** * 找到第一个出现一次的字符,并返回 * 如果没有,则返回空格 */ @Test public void test() { String s = "abaccdeff"; char ch = find(s); System.out.println(ch); } /** * 一个有序map,key是26个字符,value是次数,遍历一次字符串,统计各个字符的数量 ...
2021-04-16 17:27:27
122
原创 计算x的平方根
@Test public void test() { double res = sqrt(2, 0.00001); System.out.println(res); } /** * 求x的平方根 * 因为x的平方,这个函数是单调递增的,可以考虑使用二分法 * @param x * @param precision 精度 * @return */ private double ...
2021-04-13 11:24:54
201
原创 二维数组中查找目标数字
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]5/** * 利用从左到右递增,从上到下递增的特性 * 从左下角节点开始比较判断 * 如果target比它小,则上移一行 * 如果target比它大,则右移一列 * @param matrix * .
2021-04-08 17:08:57
122
原创 计算x的n次方
@Test public void test() { int x = 2, n = -10; boolean nagtive = false; if (n < 0) { n = -n; nagtive = true; } long res = pow(x, n); System.out.println(); if (nagtiv...
2021-04-07 13:53:28
195
原创 扑克牌顺子
/** * 扑克牌顺子 * 输入长度为5的数组,数字范围0-13, 0可以替代任意数字 * 判断数组元素是否连续 * * 思路: * 先排序,然后计算0的个数,同时记录数组上一个元素的值 * 当上一个元素+1不等于当前元素时,消耗0的数量,充当连续的数字 * 同时最外层循环-1,让下一次循环继续比较本次的值 * 如此往复 * @param input * @return */ .
2021-04-06 11:28:25
49
原创 从1累加到N
@Test public void plusN() { int sum = plusN(10); System.out.println(sum); sum = 0; // for循环验证结果 for (int i = 1; i <= 10; i++) { sum += i; } System.out.println(sum); }.
2021-04-02 16:19:49
942
原创 查找环形链表的入口连接点
/** * 查找链表的环的入口 * 即找到2的位置,若无环则返回null * 1-->2-->3 * ^ | * | | * 5<--4 */ @Test public void findRingEntry() { Node node = init(5); Node head = node; Node second = he.
2021-04-01 15:24:08
103
原创 重排单链表
如下单链表:1-->2-->3-->4-->5输出:1-->5-->2-->4-->3class Node{ int val; Node next; public Node(int val) { this.val = val; } } /** * 构造链表 * @param number * @ret.
2021-04-01 14:38:31
144
原创 反转单向链表
class Node{ int val; Node next; public Node(int val) { this.val = val; } } /** * 构造链表 * @param number * @return */ private Node init(int number) { Node node = new Node(1.
2021-04-01 14:12:35
50
原创 服务内存泄漏排查
个人理解算是内存泄漏的问题。缘起:在测试环境,产品说后台服务不能访问了,查看了下,发现进程突然消失了。用户用dmesg查看了下,确实被操作系统给杀了。由于这个服务是把多个微服务又聚合到一个进程里面,所有简单的认为就是消耗内存比较严重。就申请了一台8G机器。申请了8g内存的机器,启动约10小时后,查询系统可用内存,约2-300M。对Java进程进行heap dump,只有300多M大小。因此怀疑发生了内存泄漏。排查:step1:先用pmap -d{pid}命令...
2020-11-09 11:12:24
542
转载 dmesg格式化脚本
#!/bin/sh uptime_ts=`cat /proc/uptime | awk '{ print $1}'` #echo $uptime_ts dmesg | awk -v uptime_ts=$uptime_ts 'BEGIN { now_ts = systime(); start_ts = now_ts - uptime_ts; #print "system start time seconds:", start_ts; #pr.
2020-11-06 14:37:07
181
原创 生成唯一ID方案总结
方案1.snowflake算法,这个算法应该大家都不陌生,使用的也比较广泛。缺点:硬要找个缺点的话,因为这个算法常用的模式就是datacenterID,workerId,时间戳,然后自增序列,是一套跟事件相关的算法,有年限的限制。当然,也许等过个几十年,更高级的算法就出来了,这也不是事。方案2.基于redis的自增ID。缺点:ID会重复。例如:当前线程对ID自增之后,这个新值还没有复制到slave服务器,然后master服务器就挂了,这时候,如果发生主从切换,那么再次对ID自增,就.
2020-07-20 22:05:45
527
原创 给你一个以行程长度编码压缩的整数列表 nums
/** * 给你一个以行程长度编码压缩的整数列表nums。 * * 考虑每对相邻的两个元素 [freq, val] = [nums[2*i], nums[2*i+1]](其中i >= 0),每一对都表示解压后子列表中有 freq个值为val的元素,你需要从左到右连接所有子列表以生成解压后的列表。 * * 请你返回解压后的列表。 * * * * 示例: * * 输入:nums = [1,2,3,4] * 输出:[2,4,4,4] * 解释:第一对 [1,2...
2020-05-11 20:54:03
338
原创 SpringBoot进行参数化单元测试
背景:SpringBoot:2.1.9Jdk:1.8进行单元测试的时候,要测试多组数据,需要对参数数据进行参数化。方案:加载Spring主要靠@Before方法@SpringBootTest@RunWith(Parameterized.class)public class BaseServiceTest { private String data; private String key; public BaseServiceTest(String d.
2020-05-11 20:31:30
808
原创 奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2...
2020-04-30 18:48:28
125
原创 输入一个数组,要求输出一个等长的新数组
当时到了晚上12点,还是没想出来。然后到了答题时间,窗口关闭。错失了一个机会啊。就这么错过了了。。。第二天早上上班路上,花了10分钟,想出了下面这个方案,整体是2次循环,应该也算O(n)把。/** * 输入一个数组,要求输出一个等长的新数组 * 新数组的下标元素的和等于旧数组除当前下标元素外所以元素的乘积 * 例如: * 输入: * [1,2,3,4] * 输出: * [2...
2020-04-30 10:02:19
246
原创 移除链表元素
删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5通过次数73,762提交次数163,138来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-linked-li...
2020-04-28 19:03:49
111
原创 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs著作权归...
2020-04-28 18:07:27
88
原创 rocketmq文件索引之我见
rocketmq:4.3消息写入概要写入流出,先写入CommitLog,然后会有异步线程写入ConsumeQueue和IndexFile文件。这个写入是顺序写。下面来看下各个文件里面的索引/offset都是什么含义。首先,消息的各种配置的类是:org.apache.rocketmq.store.config.MessageStoreConfig里面定义的CommitLog默...
2020-03-28 21:20:35
319
原创 为什么自定义的BeanDefinitionRegistryPostProcessor不能在Spring加载过程中第一阶段初始化
Spring boot:2.2.1jdk:1.8所谓的Spring加载过程的第一阶段是指下面这个地方:AbstractApplicationContext的refrsh方法的registerBeanPostProcessors(beanFactory);会进入到下面到方法里面:PostProcessorRegistrationDelegate.invokeBeanFactoryP...
2020-03-19 11:57:00
445
原创 Spring/Springboot杂记-持续更新
持续更新,遇到的各种小技巧,小难点等等。背景:项目从SpringMvc迁移到SpringBoot,项目里面包括页面资源。目录结构如下,引擎使用beetl。webapp--images--index--resources--static--WEB-INF/view注意到包括和springboot同名到静态资源目录。项目启动的时候访问页面报404.简单分析:找不...
2020-03-04 16:01:59
563
原创 合并区间
/** * 合并区间 * https://leetcode-cn.com/problems/merge-intervals/ * * 给出一个区间的集合,请合并所有重叠的区间。 * * 示例 1: * * 输入: [[1,3],[2,6],[8,10],[15,18]] * 输出: [[1,6],[8,10],[15,18]] * 解释: 区间 [1,3] 和 [2,6] 重...
2020-01-06 14:17:49
176
gemfire开发入门
2011-09-05
flex3注册码flex3注册码flex3注册码flex3注册码flex3注册码
2011-05-02
log4j使用详解log4j使用详解
2011-05-02
java编程规范jsp编程规范
2011-05-02
.net 4.0 ajax
2011-05-02
spring+hiberante+struts配置文件详解
2010-07-21
java EE6 api
2010-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人