自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【手写RPC框架】手写一个RPC框架 Netty + 虚拟线程 附源代码

如何使用Java的虚拟线程和Netty手写一个基于自定义协议的RPC(远程过程调用)框架。文章首先解释了RPC框架的概念和Netty的优势,接着介绍了Java虚拟线程的特点和适用场景。然后,文章详细描述了实现RPC框架的各个步骤,包括服务发现和注册、请求和响应的处理、连接的管理等。同时,文章展示了如何将虚拟线程与Netty结合,通过修改Netty的线程模型来提高性能。最后,作者提供了项目的源码链接,并鼓励读者关注和反馈。

2025-01-09 16:26:28 4102

原创 【算法笔记】力扣热题100(LeetCode hot-100)53. 最大子数组和 1.前缀和 2.动态规划

力扣热题100题 leetcode 53.最大子数组和。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组,返回其最大和。1:使用前缀和的方法。2:使用动态规划

2025-01-22 17:25:15 705

原创 【算法笔记】力扣热题100(LeetCode hot-100)560. 和为 K 的子数组

力扣 hot-100 560. 和为 K 的子数组。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。使用 前缀和 和 哈希表 的方法。

2025-01-21 22:02:40 580

原创 【算法笔记】力扣热题100(LeetCode hot-100)438. 找到字符串中所有字母异位词 滑动窗口

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串。使用滑动窗口解决问题。滑动窗口就是指定一个大小作为窗口,然后在字符串上滑动这个窗口,找到符合条件的子串。异位词换句话说就是:两个字符串的字符相同,但排列顺序不一定相同的字符串。

2025-01-21 16:55:13 503

原创 【算法笔记】力扣热题100(LeetCode hot-100)3. 无重复字符的最长子串

其实从题目字面意思就不难理解,就是求一个字符串中不含有重复字符的最长子串的长度。这里我们可以使用滑动窗口(SlidingWindow)的方法来解决这个问题。

2025-01-20 15:15:40 340

原创 【RocketMQ 消息中间件】RocketMQ篇之-消息存储 为什么快 CommitLog ConsumeQueue IndexFile 刷盘机制 同步 异步

为什么快?顺序写、零拷贝CommitLog:RocketMQ中存储所有消息的核心文件,保存消息的完整内容。ConsumeQueue:消费者队列文件,用于加速消息消费,存储消息的索引信息。IndexFile:索引文件,用于快速检索消息,存储消息的Key和物理偏移量。这三种文件共同协作,确保了RocketMQ的高性能和高可靠性。CommitLog负责消息的存储,ConsumeQueue提高了消息的消费效率,而IndexFile则提供了消息的快速检索能力。

2025-01-20 11:36:00 2285

原创 【算法笔记】力扣热题100(LeetCode hot-100)42. 接雨水 2d

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。我们需要计算每个位置左右两边的最大值,然后取两边最大值中的最小值,这个就是木桶的高度。但是要知道木桶的拖底也是有高度的,所以当木桶的高度大于拖底的高度时,才能存水。其实我们可以看成是一个木桶,木桶的高度由最短的那块木板决定。我们需要计算在每个柱子之间可以接多少雨水,然后求和。

2025-01-13 16:49:24 364

原创 【算法笔记】力扣热题100(LeetCode hot-100) 15: 三数之和

力扣热题100 15: 三数之和 判断是否存在三元组 通俗的说,就是找出数组中所有的三个数,使得这三个数的和为0,找出所有的组合。遍历数组,对于每个元素,双指针求剩余元素中寻找两个数,使得三数之和为 0;3.1 外层循环遍历时,如果当前元素与上一个元素相同。(向前对比重复元素)3.2 内层获得结果后,往后移动指针,跳过重复元素。(向后对比重复元素)。使用排序和双指针法来解决这个问题。注意跳过重复元素,避免重复结果。

2025-01-13 16:06:54 473

原创 【算法笔记】力扣热题100(LeetCode hot-100) 11: 盛最多水的容器

找出两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。大白话就是,找出两条线,以矮的那条线为高,两条线之间的距离为底,求出最大的面积。我们可以使用双指针法来解决这个问题。初始化两个指针,分别指向数组的两端。计算当前容器的容量,并记录最大值。然后移动较短的那条线的指针,直到两个指针相遇。

2025-01-12 21:49:21 400

原创 【算法笔记】力扣热题100(LeetCode hot-100) 283: 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾。使用双指针法来解决这个问题。一个指针 fast 用于遍历数组,另一个指针 slow 于记录非零元素的位置。当 fast 指针遇到非零元素时,将其与 slow 指针位置的元素交换,并将 slow 指针向前移动。根据题目描述,我们需要将数组中的所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。输入:我有一个数组 [0,1,0,3,12]。

2025-01-12 21:41:30 291

原创 【算法笔记】力扣热题100(LeetCode hot-100) 128: 最长连续序列

给定一个未排序的整数数组 nums,找出数字连续的最长序列。首先将所有数字存入哈希表中,然后遍历哈希表中的每个数字,检查其是否为一个序列的起点(即该数字减一不在哈希表中)。如果是序列的起点,则继续检查该数字加一是否在哈希表中,直到不在为止。记录下最长的序列长度。输入:我有一个数组 [100, 4, 200, 1, 3, 2]。根据题目描述,我们需要找出数字连续的最长序列的长度。

2025-01-12 21:31:23 471

原创 【算法笔记】力扣热题100(LeetCode hot-100) 49: 字母异位词分组

字母组合问题,一般可以通过对字符串排序来解决。排序后的字符串作为哈希表的key,原始字符串作为value。遍历数组,将每个字符串排序后作为key存入哈希表,原始字符串作为value存入对应的列表中。输入:我有一个数组[“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]。根据题目描述,我们需要将字母异位词组合在一起。换句话说,就是将由相同字母组成的字符串分到同一个组里。

2025-01-10 16:17:42 229

原创 【算法笔记】力扣热题100(LeetCode hot-100) 1:两数之和

根据题目描述,求两个数的和等于目标值的下标。再转换成大白话就是,一堆数中找出两个数A和B,使得A+B=target。哈希表的key是数值,value是下标。遍历数组,如果 (target-当前数值) 在哈希表中,那么找到了答案。输入:我有一个数组[2,7,11,15],目标值是9。

2025-01-10 16:16:49 373

原创 【Java多线程】如何使用Java多线程下载网络文件 断点续传

多线程下载网络文件是一种高效且实用的技术,它可以显著提高下载速度并提供更好的用户体验。本篇文章将详细介绍如何使用Java实现多线程下载文件,并结合实际项目中的代码示例,展示如何在指定位置写入文件以及实现断点续传功能。我们将从下载器类的创建、文件大小的获取、下载线程的实现到断点续传的实现步骤进行详细讲解。通过这篇文章,你将学会如何高效地下载大文件,并能够处理下载过程中可能遇到的中断情况

2025-01-09 17:34:15 956

原创 【Java虚拟线程】Java虚拟线程 VirtualThread 是什么黑科技 原理 来揭开它的神秘面纱 ForkJoinPool 线程模型 协程

Java 虚拟线程原理 forkjoinpool 虚拟线程是轻量级的,创建和销毁的开销很小;适合IO密集型的任务,因为虚拟线程不会出现系统内核级别的线程上下文切换,这样就避免了线程上下文切换的开销;适合任务量大的场景,因为虚拟线程是轻量级的,可以更好的利用系统资源,避免了线程过多导致的系统资源的浪费,也避免了线程过少导致的线程过于繁忙。

2024-12-31 20:33:27 2856 2

原创 【Java并发编程线程池】 ForkJoinPool 线程池是什么 怎么工作的 和传统的ThreadPoolExecutor比较

ForkJoinPool线程池原理 与 传统线程池区别 虚拟线程基于ForkJoinPool线程池实现。ForkJoinPool 线程池更适合处理大量的计算密集型任务,它的核心思想是将一个大任务拆分成多个小任务,然后将这些小任务分配给多个线程去执行,最后将这些小任务的结果合并起来,得到最终的结果。值得注意的,ForkJoinPool中的每个线程都有自己的任务队列,当线程任务队列空了或者当前线程空闲,则会去别的线程的任务队列获取待执行任务,这个过程是工作窃取。

2024-12-30 20:48:32 2399

原创 where 条件使用了索引字段,explain 却显示不走索引,换字段值又可以走索引,与order by 有关(记录SQL优化)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、慢SQL?1.记录遇到的问题二、使用步骤1.引入库2.读入数据总结前言本文记录下今日在公司的慢SQL的优化,及遇到的问题一、慢SQL?慢SQL说大白话就是:执行耗时较久的SQL;慢SQL会给程序带来较大的影响,会使线程阻塞在该状态,等待返回结果;如果是提供的dubbo接口,对于异步接口,调用方不会受到太大影响,但在同步接口中,接口处理请求太久,程序还有可能调用接口超时异常,所以在我们的开发生产中我们应该尽量

2021-08-04 20:46:35 1195 2

原创 java 中 double a = 5/2; a = ? (多少),然后 double a = -5/2; a = ? (多少)

java 中 double a = 5/2; a = ? (多少)提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言double a = 5/2; 时 a = ?为什么呢?double a = -5/2; 时 a = ?前言今天早上看到一个问题,说double a = 5/2; 运行后结果a是多少?double a = 5/2; 时 a = ?先说结果:a = 2.0;double a =25/2;System.out.println("a = " +

2021-07-24 11:46:20 4648 1

原创 记刚开始java实习时的学习日报集合(大杂烩)

1. 索引的选择,尽量选择较大的表创建索引;索引的选择:(区分度大,尽量少更新)创建索引的字段一定要选择字段区分度较大的,以为索引本身就要占用空间,所以在数据量大的情况下,索引的空间也越来越大,索引的效果还会较慢,例如在基于性别创建索引;经常用作过滤器的字段上建立索引,也就是经常用在where语句中作为条件的字段,尽量创建索引;避免选择大型数据类型的列作为索引;避免在经常做io操作的字段建立索引,因为io操作字段时,索引也在做io操作,索引正常来说对于读取操作有很大的效果,对于io操作的字

2021-07-16 19:01:49 2132 1

原创 java获取文件名格式 / java获取文件名后缀

在日常的开发中,我们的业务有时候多少会涉及文件相关的操作,今天记录一下子在我开发中获取文件名后缀的方法!赶时间的直接上代码、出结果,后面直接略过吧! String filename = "myFilename.pdf"; String substring = filename.substring(filename.lastIndexOf('.')); System.out.println("substring = " + substring);结果是:

2021-07-16 15:16:56 1201 1

原创 apache时间工具类apache.http.client.utils.Dateutils使用时区问题,java.util.Date和java.sql.Date之间的互换,获取某天的00:00

时间类apache.http.client.utils.Dateutils会有时区问题例如Dateutils的以下方法 public static String formatDate(final Date date, final String pattern) { Args.notNull(date, "Date"); Args.notNull(pattern, "Pattern"); final SimpleDateFormat fo

2021-06-20 03:19:36 1410

原创 java单例模式的五种写法(饿汉、懒汉、内部、双端检索、枚举)

java单例模式的五种写法(饿汉、懒汉、内部、双端检索、枚举)java单例模式几种实现方法饿汉式懒汉式双端检索静态内部类枚举式测试小结java单例模式几种实现方法这篇博客就写一下我最近在学习中突然发现有些忘记的java单例模式的一些实现方法,我们平常见过的就是有饿汉式、懒汉式、双端检索、静态内部类和枚举等的五种方式实现。饿汉式饿汉式,差不多的意思就是很饿,想要立马得到想要的食物,在这里的实现,也是如此,在定义静态变量的时候立即就初始化创建了变量,这样的效率较高,但是可能造成没有用这个对象,就已经创建

2020-07-31 17:40:30 994 1

手写一个RPC框架 Netty + 虚拟线程 代码 0积分下载

使用Java的虚拟线程和Netty手写一个基于自定义协议的RPC(远程过程调用)框架,框架说明请参考文章:https://blog.youkuaiyun.com/weixin_47157828/article/details/145034344

2025-01-16

空空如也

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

TA关注的人

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