- 博客(68)
- 收藏
- 关注
原创 压力测试Demo
from concurrent.futures import ThreadPoolExecutorimport threadingimport time#全局变量var = 1#线程私有变量local = threading.local();def func(): #计数器 count = 0 #每个线程跑100次用例 for i in range(100): local.x = var if testa() and test
2020-08-18 19:28:09
630
转载 SpringBoot 从配置文件读取值到对象中
一、实现方式1、@ConfigurationProperties(prefix = “person”),prefix标明从哪个前缀开头的属性开始,默认从application.properties/yml主配置文件中读取,也可以用过@PropertySource(value={“classpath:person.properties”})注解指定读取的配置文件。作用在类上,从配置文件中读取属性回填到对象,支持复杂的结构如:list、map、对象等,推荐使用。支持@Validated数据校验2、@
2020-08-01 11:06:50
1650
原创 Map与Bean的互相转换
实例类:package wsy.bean2map;import lombok.Getter;import lombok.Setter;import lombok.ToString;@Setter@Getter@ToStringpublic class Person { private String name; private int age; public Person() {} public Person(String name, int age)
2020-07-31 11:38:01
365
原创 maven依赖jar包时版本冲突解决方案
jar包版本是以groupId+artifactId为坐标的,在groupId+artifactId相同的情况下version不同代码不同的版本,一般都是version的不同导致的jar冲突。同一个产品除非是大版本的升级,否则groupId+artifactId一般不会变。1、第一声明优先原则:在自己的pom文件中,如果有两个名称相同但版本不同的依赖声明,那么先写的会生效。—开发在自己定义的pom文件中,一般不会发生此种情况。2、路径优先原则:直接以来(自己在pom中添加的依赖)优于间接依赖;比如
2020-06-30 16:26:51
2797
原创 统计redis中某类key的数量
redis使用过程中会存在查询某类key的数量问题,较简单的办法为通过redis-cli结合keys进行操作,由于keys的工作机制导致线上一般禁用该指令,而dbsize查看的是某个节点所有key的个数,我们可以使用scan命令来完成统计。keys key*带来的问题:我们线上的登录用户有几百万,数据量比较多;keys算法是遍历算法,复杂度是O(n),也就是数据越多,时间复杂度越高。数据量达到几百万,keys这个指令就会导致 Redis 服务卡顿,因为 Redis 是单线程程序,顺序执行所有指令,其它
2020-06-02 18:00:41
30681
1
转载 一线大厂的分布式唯一ID生成方案
一、前言分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题。永不迁移数据和避免热点要求唯一ID的特点:1、整个系统ID唯一2、ID是数字类型,而且是趋势递增的3、ID简短,查询效率快什么是递增?如:第一次生成的ID为12,下一次生成的ID是13,再下一次生成的ID是14。这个就是生成ID递增。什么是趋势递增?如:在一段时间内,生成的ID是递增的趋势。如:再一
2020-05-14 11:24:50
454
原创 1038. 从二叉搜索树到更大和树
package wsy.letcode.bstToGst;import java.util.Stack;/** * 给出二叉搜索树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 * * 提醒一下,二叉搜索树满足下列约束条件: * * 节点的左子树仅包含键小于节点键的节点。 * 节点的右子树仅包含键大...
2020-01-12 16:53:37
177
原创 判断线程池中是否有任务正在执行
在使用线程池提交异步任务时,当需要做多用户互斥操作时,用户A在操作关键数据时,用户B也在操作,系统检测到A下发的数据任务还在执行则禁止用户B的下发的任务,可以通过判断线程池中是否存在正在执行的任务来操作,线程池提交任务后需要执行executor.shutdown(),然后在用户执行任务时调用executor.isTerminated()方法,存在任务则返回false,任务执行完毕返回true但是...
2019-11-26 23:28:38
2494
原创 堆排序工具类
最近需求用到堆排序,写了个堆排工具类,排序对象需要实现Comparable类,重写compareTo方法即可。public class HeapSort<T extends Comparable<T>> { private static final int index = 2; /*** * 堆排序 * @param heap he...
2019-11-26 23:27:49
234
原创 CompletionService: 获取异步任务执行结果
**1、ExecutorService **使用Future和Callable可以获取线程池中任务执行的结果,但其获取方式是阻塞的,根据添加到线程池中的线程顺序依次获取,获取不到就阻塞住主线程。public class AsyncTask { public static void main(String[] args) { ExecutorService executor = Execu...
2019-11-26 23:27:21
384
转载 接口幂等性解决方案
幂等的概念:在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数。举几个例子:比如前端对同一表单数据的重复提交,后台应该只会产生一个结果比如我们发...
2019-09-30 17:38:27
538
原创 Netty入门
1.1 ChannelNetty 网络通信的组件,能够用于执行网络 I/O 操作。Channel 为用户提供:当前网络连接的通道的状态(例如是否打开?是否已连接?)网络连接的配置参数 (例如接收缓冲区大小)提供异步的网络 I/O 操作(如建立连接,读写,绑定端口),异步调用意味着任何 I/O 调用都将立即返回,并且不保证在调用结束时所请求的 I/O 操作已完成。 调用立即返回一个 Cha...
2019-08-02 10:47:31
318
原创 Netty架构原理
传统阻塞型 I/O(BIO)可以用下图表示:特点如下:每个请求都需要独立的线程完成数据 Read,业务处理,数据 Write 的完整操作问题。当并发数较大时,需要创建大量线程来处理连接,系统资源占用较大。连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在 Read 操作上,造成线程资源浪费。Selector 的非阻塞I/O:一个 I/O 线程可以并发处理 N 个客户端连接...
2019-08-01 20:20:08
123
原创 字符串的排列
package com.wsy.sword;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Set;public class Permutation{ /* * 字符串的排列 * 输入一个字符串,按字典序打印...
2019-07-24 14:51:09
139
原创 二叉搜索树与双向链表
package com.wsy.converttree;import java.util.Stack;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...
2019-07-24 10:59:02
95
原创 InnoDB一棵B+树可以存放多少行数据?
答案是:大约2千万条数据。下面将解释为什么是2千万条:最小存储单元在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节;文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,文件系统中一个文件大小只有1个字节,但不得不占磁盘上4KB的空间;InnoDB存储引擎也有自己的最小储存单元——页(Page),一个页的大小是16K,Innodb的所有数据文件(后缀为ib...
2019-07-23 22:44:42
650
原创 数值的整数次方
/* * 给定一个double类型的浮点数base和int类型的整数exponent。 * 求base的exponent次方。 * * 思路:快速幂法 * 将幂exponent转换为二进制幂表示法,如13:1*2^3 + 1*2^2 + 0*2^1 + 1*2^0; * 快速幂法将expoent >>1 ,如果exponent不为0则乘上本身,否则将base继...
2019-07-20 23:57:52
105
原创 对称的二叉树
package com.study.binarytree;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class IsS...
2019-07-20 11:45:14
111
原创 二叉树的下一个结点
package com.wsy.sword;import java.util.Stack;class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val)...
2019-07-20 11:15:48
95
原创 删除链表中重复的结点
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class DeleteDuplication{ /* * 删除链表中重复的结点 * 在一个排序的链表中,存在重复的结点,请删除...
2019-07-19 15:29:08
116
原创 链表中环的入口结点
package com.wsy.sword;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class EntryNodeOfLoop{ /* * 链表中环的入口结点 * ...
2019-07-19 14:37:54
183
原创 构建乘积数组
package com.wsy.sword;public class Multiply{ /* * 构建乘积数组 * 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1], * 其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 * ...
2019-07-18 19:24:29
102
原创 数组中重复的数字
package com.wsy.sword;import java.util.HashMap;import java.util.Map;public class Duplicate{ // Parameters: // numbers: an array of integers // length: the length o...
2019-07-18 17:29:00
99
原创 不用加减乘除做加法
package com.wsy.sword;public class Add{ /* * 不用加减乘除做加法 * * 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 * * 思路: * 加减乘除的运算可以用位运算替代 */ public int add(int num1,...
2019-07-18 16:41:38
95
原创 求1+2+3+...+n
package com.wsy.sword;public class Sum_Solution{ /* * 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 * * 思路: * 1.不能用循环则使用递归 * 2.不能用判断则用与的短路原理(...
2019-07-18 15:28:32
126
原创 扑克牌顺子
package com.wsy.sword;import java.util.Arrays;public class IsContinuous{ /* * LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)... * 他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育...
2019-07-18 11:22:36
103
原创 左旋转字符串
package com.wsy.sword;public class LeftRotateString { /* * *汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务, *就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S, *请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”, *要求输出循环左移3位后的结果,即“...
2019-07-17 23:59:07
131
原创 和为S的两个数字
package com.wsy.sword;import java.util.ArrayList;public class FindNumbersWithSum { /* * 题目描述 *输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 *输出描述: *对应每个测试案例,输出两个数,小的先输出...
2019-07-17 23:46:51
94
原创 聚簇索引与非聚簇索引(也叫二级索引)原理
聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据;非聚簇索引:将数据存储与索引分开结构,索引结构的叶子节点指向了数据的对应行(地址),myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因;概念澄清:innodb中,在聚簇...
2019-07-17 23:05:08
292
原创 和为S的连续正数序列
package com.wsy.sword;import java.util.ArrayList;public class FindContinuousSequence{ /* * 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。 ...
2019-07-17 17:55:33
86
原创 redis实现分布式锁
redis实现分布式锁:public boolean tryLock(Jedis jedis, String keyLock, String requestId, String nx, String px, long expireTime){ try{ // set方法的nx和px参数保证加锁和设置超时时间的原子性 String result = jedis.s...
2019-07-17 17:20:50
113
原创 第一个只出现一次的字符
package com.wsy.sword;import java.util.LinkedHashMap;public class FirstNotRepeatingChar{ /* * 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). * ...
2019-07-12 08:40:46
104
原创 丑数
package com.wsy.sword;import java.util.ArrayList;import java.util.List;public class GetUglyNumber_Solution{ /* * 丑数 * 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 ...
2019-07-11 20:06:32
110
原创 把数组排成最小的数
package com.wsy.sword;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class PrintMinNumber{ public static void main(String[...
2019-07-11 19:22:57
85
原创 连续子数组的最大和
package com.wsy.sword;public class FindGreatestSumOfSubArray{ public static void main(String[] args) { int[] array = {1,-2,3,6,-10,7,2,-5}; FindGreatestSumOfSubArray f = new...
2019-07-11 17:07:39
106
原创 数组中的逆序对
package com.wsy.sword;public class InversePairs { public static void main(String[] args) { InversePairs inversePairs = new InversePairs(); int[] arr = {364,637,341,406,747,995,234,971,571,219,...
2019-07-10 23:39:37
96
原创 两个链表的第一个公共结点
package com.wsy.sword;import org.w3c.dom.Node;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class FindFirstCommonNode { ...
2019-07-10 00:48:44
102
原创 数组中只出现一次的数字
package com.wsy.sword;public class FindNumsAppearOnce { /* * 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 * 请写程序找出这两个只出现一次的数字 * * 思路: * 1. 可以用位运算实现,如果将所有所有数字相异或,则最后的结果肯定是那两个只出现一次的数字异或 * 2. 根据异或的结果1所在的...
2019-07-09 00:06:29
98
原创 最小的K个数(JAVA)
package com.wsy.sword;import java.util.ArrayList;public class GetLeastNumbers{ public static void main(String[] args) { GetLeastNumbers getLeastNumbers = new GetLeastNumbers(); ...
2019-07-05 17:16:24
245
原创 排序算法之快速排序
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列,快速排序平均时间复杂度也为O(nlogn)级。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序,简单点选择第一个数作为参考值。方法其实很...
2019-07-05 16:37:17
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人