自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

原创 【无标题】

B接口只有简单逻辑,当超过10个请求访问A时,10个线程池都在A中,并且要请求B,这时由于没有空闲线程,因此对于B的请求进入了排队队列里,这时就形成了死锁。2.对文件名进行取模,如果文件名含有中文,可以进行base64编码或者其他,然后再进行运算,然后每个机器处理一部分: 两个机器,则对2取模,A机器处理0,B机器处理1的。可以是加一个时间戳后缀;当多线程处理时,就要考虑锁的问题,这里用一个简单的方案:就是对文件以重命名的方式进行锁。2.对于同个线程池的服务,以函数调用的形式,而不是以接口的形式。

2024-03-29 16:20:41 336

原创 【无标题】

SM2加密; 依赖包为 bcprov-jdk15on-1.58.jar

2024-03-29 16:16:42 122

原创 多线程demo

*** 自定义线程池/*** 任务队列-使用阻塞队列throw new RuntimeException("线程池大小至少为1");i < size;i ++) {throw new RuntimeException("线程池大小至少为1");i < size;i ++) {try {//获取排队队列的任务,如果没有则阻塞,直到有任务进来 run = queue . take();i < 10;

2023-04-11 17:42:16 120 1

原创 自定义非公平锁-demo

先竞争资源看看能否获得锁,如果不能则进入队尾进行排队,并且该线程阻塞,以免一直在while循环中运行占用cpu资源。因为当竞争锁时如果直接获得锁,不会进入排队队列,因此释放锁时需要判断。进行释放锁操作,先把当前线程的资源释放,然后再唤醒队列的头部。当调用unlock时。

2023-04-04 14:15:36 129

原创 大文件切割

场景:在window上编辑器查看过大的日志看不了,也懒得找其他编辑器或者工具,写了个代码,把日志文件切分成n个小文件。

2023-03-24 15:06:05 132 1

原创 java rmi使用

远程服务调用,可以在client端运行server端的java代码。

2023-02-10 10:33:58 112

原创 centos-sftp

之后就可以使用sftp 用户@ip 进行登录了,并且只能在/sftp/sftpuser目录下操作,但是无法使用ssh进行登录,只能使用su命令(暂时没找到资料)#注释Subsystem sftp /usr/libexec/openssh/sftp-server。2.创建sftpuser用户,-g指定用户组 -M 不新建家目录,-s /bin/false 不能登录ssh。ssh 版本在4.8之后可以通过配置令sftp只能在特定目录下操作,ssh -V 检查ssh版本。5.建立文件存放目录。

2023-01-05 11:13:06 1066

原创 tomcat探究四默认连接器(tomcat4)

由于代码量过多,因此只放简单的图解。

2022-10-17 16:18:55 203

原创 tomcat探究三使用连接器(参考tomcat4)

写好测试类后,可以发请求进行测试 http://localhost:8080/servlet/TestControllerServlet。连接器就是管理连接的,可以理解为连接池–现在都是使用这个;HttpRequestFacade – 提供外部操作请求对象。HttpHeader–存储请求头部分的信息,暂时没用到。HttpConnector–连接器,管理请求的。HttpRequestLine–存储请求行信息。HttpProcessor–请求处理。HttpRequest–请求对象。

2022-10-08 15:38:29 427

原创 tomcat探究二搭建简单的servlet容器

TestControllerServlet:模拟测试类,实现servlet接口。Request:对请求报文做处理,获取http请求报文第一行的资源路径。ServletProcessor:请求servlet资源的处理。HttpServer:容器服务入口,监听一个端口。Response:延续 探究一 的内容。Servlet:自定义servlet。在同一个包还可以创建其他类似的类。

2022-09-29 17:23:09 316

原创 tomcat探究一搭建简单的web容器

Request对请求进行处理,拿到http请求报文,获取第一行,拿到请求资源路径。HttpServer作为web入口,监听一个端口,作为web的入口。Response对响应进行处理,返回静态资源或者错误信息。这里的web程序只是一个静态资源的web程序。

2022-09-29 17:09:46 108

原创 简单记录使用org.slf4j.MDC进行日志追踪

d{yyyy-MM-dd HH:mm:ss.SSS} : 是时间格式。%logger{15}:%line : 在哪个类,并且显示行号。%X{TraceId}:自定义的一个唯一线程请求id。%m%n :输出信息并换行。这里使用的是log4j2。%thread:线程名称。[%p] : 日志级别。

2022-09-26 17:27:08 1217

原创 静态负载均衡常见算法demo实现

【代码】静态负载均衡常见算法demo实现。

2022-08-29 17:47:19 112

原创 字符串的编码格式转换

主要的思路就是先将字符串正常化,然后就可以按照指定编码进行编码解码。开发工具是STS,默认的编码格式是UTF-8。本次主要是UTF-8和GBK之间的相互转换。

2022-08-18 17:11:22 4721

原创 docker模拟mysql 主从

Mysql 主从简单配置demo

2022-06-28 12:57:38 223

原创 SpringBoot 使用SQL Server

springboot 使用sql server

2022-06-28 11:09:28 1662

原创 基础排序算法

排序算法快速排序选择排序归并排序插入排序基本概念:代码:快速排序选择排序归并排序插入排序基本概念:通过一趟排序将记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的代码:/**** * 快速排序 * @throws Exception */ @Test public void testQuickSort() throws Exception{ int[] arr = {3, 44, 38,

2022-06-28 11:07:12 77

原创 socket流的关闭

在使用socket进行全双工通信时,原本以为输入流和输出流是分开关闭的,然而不管关闭哪个都会直接关闭socket;可以使用socket.shutdownInput()和socket.shutdownOutput()客户端使用InputStream进入bebug模式,在执行到 inputStream.close()后进入SocketInputStream的close()方法,而这个方法是关闭socket流执行reader.close()后,最后也是执行SocketInputStream的close(

2022-06-15 11:17:56 2645

原创 简单心跳检测

简单的心跳检测

2022-06-14 23:08:11 204

原创 java socket

单向通信就是一方发,一方收例如下面的代码就是客户端发,服务端收服务端处理类客户端半双工简介可双向通信就是,但是一次只能有一方发送服务端处理客户端全双工简介服务端和客户端可以同时发送数据...

2022-06-14 22:56:54 455

原创 Redis分布式锁的初实现

Redis分布式锁的初实现思路测试代码思路使用setnx 命令setnx命令当key不存在时,会set进去,当已存在则返回falseset完之后使用 exprie命令对key设置过期时间释放锁的时候主动调用del释放锁测试代码public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(10); Random random = new Ran

2022-03-17 18:18:27 1237 2

原创 redis插入大量key

redis插入大量key工具代码顺序插入多线程&资源池插入使用pip测试结果工具代码import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;import redis.clients.jedis.Jedis;i

2022-03-17 16:18:47 2787

原创 RabbitMQ初使用

RabbitMQ地址使用Docker安装个人简单总结java代码使用hello word流程生产者消费者Work queues流程生产者消费者消费者1消费者2Publish/Subscribe流程生产者消费者Routing流程生产者消费者Topics流程生产者消费者地址官方地址:https://www.rabbitmq.com官方代码demo地址:https://www.rabbitmq.com/getstarted.html使用Docker安装docker安装RabbitMQdocker pu

2022-03-14 17:38:34 3310

转载 字符串专项练习1

字符串专项练习1字符串反转字符串整数反转字符串中的第一个唯一字符有效的字母异位词验证回文串字符串反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。class Solution { public void reverseString(char[] s) { if(s.length == 1){ return ;

2022-03-14 17:00:47 85

转载 数组专题练习2

数组专题两数之和加一移动零两数之和 /*** * 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 * 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 * 逻辑: * 遍历一遍数组,使用哈希表记录数组元素的值 * 遍历元素时,使用目标值减去该值,并判断哈希表中是否存在需要的值 * @param nums * @param target

2022-03-14 16:47:23 101

原创 构造二叉搜索树

节点public class TreeNode { int val; TreeNode right; TreeNode left; public TreeNode() {}; public TreeNode(int val) { this.val = val; } public int getVal() { return val; } public void setVal(int val) { this.val = val; } public TreeNo

2022-03-08 15:43:49 287

原创 redis 消息队列

redis stream基本使用redis操作listpub/substreamjava Jedismaven依赖list生产者消费者pub/sub生产者消费者监听消费stream生产者消费者redis操作list基本使用从左边入队lpus从左边出队lpop从右边入队rpush从右边出队rpop查询长度llen keypub/subPUBLISH channel message //将信息 message 发送到指定的频道 channelPUBLISH channel

2022-03-08 11:46:39 487

原创 简单链表操作-java实现

链表操作节点结构链表队列节点结构class Node{ int val; Node next; public int getVal() { return val; } public void setVal(int val) { this.val = val; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public No

2022-03-05 22:24:10 378

原创 bitmap练习

/*** * 自定义工具类 * */public class BitMapUtil { /*** * 存储数组 */ private int[] bitArray; private static final StringBuffer STRING_BUFFER = new StringBuffer(); public BitMapUtil(long size) { bitArray = new int[(int)(size/32+1)]; } /** * 将数

2022-03-04 13:49:13 75

原创 顺序存储结构-java实现

顺序存储结构列表--整型列表--泛型队列测试用例列表–整型/*** * 列表 */class MyList{ Integer[] vals = null; int size = 0; public MyList() { vals = new Integer[10]; } public MyList(int size) { this.vals = new Integer[size]; } /*** * 获取长度 */ public int length() {

2022-03-03 11:19:45 178

原创 使用redis简单模拟抢购

使用redis简单模拟抢购使用inc自增使用队列使用inc自增/*** * 测试redis inc并发 * */public class RedisThreadInc { private static AtomicInteger SUCCESS = new AtomicInteger(1); //原子操作类 private static Random random = new Random();//生成随机结果 public static void main(String[] ar

2022-02-24 16:35:28 624

原创 Comparator基础使用

class SortTest{ int index; int count; public SortTest(int index,int count) { this.index = index; this.count = count; } }Arrays.sort(st, new Comparator<SortTest>() { /**** * o1 后一个数 * o2 前一个数 * * 0 不排序 * -1

2022-02-22 17:02:29 158

原创 mysql事务

MySQL事务的一个基础理解,包含一些简单的样例

2021-12-12 00:09:08 427

原创 在4G文件中查询出出现频率最多的数

生成测试文件import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.Random;public class WriteBigFile { public static void main(String[] args) throws Exception { long star

2021-11-17 15:49:12 242

原创 BufferedOutputStream 自动刷新缓冲区

BufferedOutputStream需求背景代码结果源码探究需求背景使用BufferedOutputStream 写文件,考虑到这个有缓冲区,因此想要试一下,当缓冲区满了之后会怎么样?1.自动刷新2.报错代码public static void main(String[] args) throws Exception { File file = new File("D:\\test.txt"); OutputStream out = new FileOutputStream(file

2021-11-11 11:44:29 675 1

原创 linux 标准输入输出、标准错误

标准输入(STDIN) - 缺省为键盘 —0标准输出(STDOUT) - 默认为终端窗口 ----1 --一般默认标准错误(STDERR) - 默认为终端窗口 ----2例子:ls > test.txt //将ls命令的 输出 重定向到 test.txt (标准输出重定向)ls >> test.txt 2>&1将ls命令的输出重定向到 test.txt 如果出现错误则重定向到标准输出,而标准输出是重定向到test.txt的因此这里标准输出&am

2021-11-11 11:33:12 1141

转载 数组专题练习

数组删除排序数组中的重复项买卖股票的最佳时机旋转数组存在重复元素只出现一次的数字删除排序数组中的重复项 /*** * 1、给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 * 逻辑: * 由于是有序数组,因此使用可以直接使用指针 * 定义一个指针,指向的是真实的数组长度 * 遍历数组时,当遇到相同的元素,则进行跳过,当遇到不同的元素时,将指针往后移动一位,并将新的元素填入 * 最后需要将指针+1--数组长度的数组下标

2021-10-30 22:21:29 88

原创 简单会话追踪实现

会话追踪1.需求简单的做法说明1.需求当后端生成一个请求时,需要清楚该请求调用了哪些服务端接口,而服务端接口再调用了哪些接口简单的做法当有请求过来时,在后端生成一个id;并将该id作为参数传递下去; 每次调用接口都会默认将该参数带上服务端同理,当没有检测到改id时可以自己创建一个;防止有些请求不是在后端进行调用*每次调用接口前或者调用后都应该有日志记录*请求id的规则可以自己设定;可以是一个id一直传递下去也可以是其他的规则;说明该方法可以简单的实现,追踪请求的调用接口情况;但是不能够清楚

2021-10-24 17:01:42 79

原创 使用位运算计算和

public static void main(String[] args) { int sum = getBitSum(100,200); System.out.println(sum); } //a^b 不进位相加 //(a&b) <<1 进位 //(a^b) ^ ((a&b) <<1) 进位相加 //为什么需要循环呢, //因为当把进位相加后,有可能产生新的进位,因此只有当进位为0的时候才是加完了; public static int .

2021-10-24 16:49:05 57

原创 可怜的小猪--进制数的妙用

可怜的小猪--进制数的妙用题目代码解题逻辑题目有1000个桶,有且仅有一个桶里面装了毒药,其他的都装了水。这些桶从外面看上去完全相同。如果一只猪喝了毒药,它将在15分钟内死去。在一个小时内,至少需要多少只猪才能判断出哪一个桶里装的是毒药呢?代码 /*** * @param buckets 桶的数量 * @param minutesToDie 毒药发作时间 * @param minutesToTest 最短测试时间 * @return */ public static in

2021-05-26 17:02:08 129

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除