随笔分类 -  Java

Java笔记
摘要:文章地址 ServerBootstrap 主要介绍服务端的启动流程以及如何绑定端口号、开启服务端 Socket 并让其进入接收连接状态的 启动模板如下; try { ChannelFuture future = new ServerBootstrap().group(bossGroup, worke 阅读全文
posted @ 2023-11-27 13:32 hligy 阅读(64) 评论(0) 推荐(0) 编辑
摘要:文章地址 全部的组件实现以 Spring Cloud Tencent 举例说明 actuator 监控 提供了查看组件具体实现的功能,依赖 spring boot actuator。 <dependency> <groupId>org.springframework.boot</groupId> < 阅读全文
posted @ 2023-11-27 12:04 hligy 阅读(184) 评论(0) 推荐(0) 编辑
摘要:文章地址 问题 WebSocket 的网络链路是 浏览器 <-> Nginx <-> 后端服务,空闲检测时间是 60 s,浏览器心跳发送时间间隔 10 s,出现了有心跳发送但长连接中断的问题。 过程 查看后端服务日志,发现是被动断开,不是空闲检测主动断开的,再抓服务器的网络包,确认后端服务是被断开的 阅读全文
posted @ 2023-04-28 11:33 hligy 阅读(791) 评论(1) 推荐(2) 编辑
摘要:原文地址 代码地址 问题 长链接场景下通常有一个类似 Map<String, Set<Long>> 的结构,用来查找一个逻辑组内的哪些用户,String 类型的 Entry.key 是逻辑组 key,Set<Long> 类型的 Entry.value 存放逻辑组内的用户 Id,那么这个 Map 显然 阅读全文
posted @ 2022-11-18 15:57 hligy 阅读(281) 评论(0) 推荐(1) 编辑
摘要:最近需要对用户进行限流,经过一番查找,发现 Bucket4j 官网推荐的第三方文章有一篇详细的分布式限流讲解 如何在 Java 中通过 Bucket4j 提供速率限制 - DZone Java,分布式暂时还用不上,因此参考着写了一个单机的。 依赖 <dependency> <groupId>com. 阅读全文
posted @ 2022-09-01 17:12 hligy 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:介绍 SFTP 是一种通过 SSH 实现的安全文件传输协议,不需要安装任何的软件就能传输文件。 依赖 haibaracp-spring-boot-starter 支持密码、密钥连接以及多主机连接,本文只介绍一些基础 API(上传、下载),更多 API 详见 GitHub - hligaty/haib 阅读全文
posted @ 2022-01-27 16:44 hligy 阅读(1303) 评论(0) 推荐(0) 编辑
摘要:前言 写了一个 Sftp 的 Starter,开始写的时候比较混乱,于是看了看 Spring 官方的 Starter,所以本文是我根据官方 Starter 得出的标准 Starter 的理解,下面出现的 Xxx 你可以用 Redis、Hibernate、Sftp 等等名词替换。 文中只是自己的理解, 阅读全文
posted @ 2022-01-19 13:28 hligy 阅读(71) 评论(0) 推荐(0) 编辑
摘要:前言 多数据源的核心就是向 IOC 容器注入 AbstractRoutingDataSource 和如何切换数据源。注入的方式可以是注册 BeanDefinition 或者是构建好的 Bean,切换数据源的方式可以是方法参数或者是注解切换(其他的没想象出来),具体由需求决定。 我的需求是统计多个库的 阅读全文
posted @ 2021-11-04 11:08 hligy 阅读(3930) 评论(1) 推荐(2) 编辑
摘要:前言 垃圾回收器的并行并发是和操作系统并行并发不同的两个概,另外只要标记时用户线程没运行未被标记的对象就可以回收。 并行:指多个 GC 进程同时运行,此时用户线程停止运行(STW,Stop The World)。 并发:指用户线程与 GC 线程同时运行。 性能指标 垃圾回收器的性能有三个指标:内存占 阅读全文
posted @ 2021-09-27 10:10 hligy 阅读(236) 评论(0) 推荐(0) 编辑
摘要:前言 介绍 JVM。基于 JDK8、64 位 HotSpot,所有“接口”都用实现的“类”描述,比如方法区之于元空间和堆、记忆集之于卡表。 JVM 内存结构 JVM 虚拟机数据区:程序计数器、本地方法栈、虚拟机栈、堆(线程共享)。 本地内存:元空间(线程共享)、直接内存(线程共享)。 未说明的是线程 阅读全文
posted @ 2021-09-22 16:46 hligy 阅读(82) 评论(0) 推荐(0) 编辑
摘要:数据结构 HashMap 是一个存储键值对的数据结构,主体是由一个数组构成,数组的大小有限,因此当 key 的 hash 相等时通过拉链法解决冲突,也就是在之前的 key 后面连接一个节点组成链表,当链表长度过长时该链表可能会变为红黑树提高查询效率。 构造函数 第一个构造函数包含两个参数, init 阅读全文
posted @ 2021-08-16 14:06 hligy 阅读(40) 评论(0) 推荐(0) 编辑
摘要:前言 SQL 的执行是通过 Statement 执行的,有的驱动 Statement 实现类有打印执行 SQL 的方法,而有的驱动没有,有打印 SQL 的方法直接执行就可以了,没有就只能手动拼接了。 有打印 SQL 方法 Mysql 的 Statement 有打印 SQL 的方法只需要获取 Stat 阅读全文
posted @ 2021-08-05 17:43 hligy 阅读(1492) 评论(0) 推荐(1) 编辑
摘要:简介 ssh 默认的连接数量有限,当大量请求连接 ssh 时会概率性连接失败甚至直接失败,因此需要对连接池化,当然如果不要求实时的话可以用生产者消费者。 SpringBoot 程序也可以直接使用 Github hligaty/haibaracp-spring-boot-starter 或 Gitee 阅读全文
posted @ 2021-07-26 22:46 hligy 阅读(2470) 评论(0) 推荐(1) 编辑
摘要:简介 线程池循环执行一些任务,某个线程执行超时,需要将超时的线程任务抛弃。 示例 修改前 当遇到超时的任务就凉凉,得重启程序。 Task.java: public class Task implements Runnable { private final int sleepTime; privat 阅读全文
posted @ 2020-11-16 15:47 hligy 阅读(2335) 评论(0) 推荐(0) 编辑
摘要:线程池关系 Executors创建线程池 Executors 实现了几种常用的线程池。 newFixedThreadPool 固定线程数的线程池。 例子: ExecutorService executorService = Executors.newFixedThreadPool(2); for ( 阅读全文
posted @ 2020-07-16 17:59 hligy 阅读(120) 评论(0) 推荐(0) 编辑
摘要:问题 JAVA8 String 转 LocalDateTime 报转换异常。 解决 写一个实现 JsonSerializer 和 JsonDeserializer 接口的类。 public class LocalDateTimeAdapter implements JsonSerializer<Lo 阅读全文
posted @ 2020-06-10 14:10 hligy 阅读(808) 评论(0) 推荐(0) 编辑
摘要:简介 Stream 是一个 Collection 的增强工具,可以对集合进行各种操作,而且可以很方便的写出并发程序,学习之前需要了解一些函数,可以看 JAVA8 Lambda表达式。常见的获取方式就是 Collection.stream()。 操作类型 操作类型分为两种 Intermediate(中 阅读全文
posted @ 2020-06-02 21:04 hligy 阅读(237) 评论(0) 推荐(0) 编辑
摘要:简介 在函数式编程中函数可以在程序中传来传去,甚至数字也可以用函数表示,而在面向对象中必须将这些函数封装成方法,通过调用方法实现。所以 Java 从邻居那拿来了 Lambda。 Java8 引入了 Lambda 表达式,它使代码变得更简洁和高效,更方便的让我们在计算机上说话,长得就像下面那样。 s 阅读全文
posted @ 2020-05-31 11:40 hligy 阅读(188) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示