随笔分类 -  Java

MyBatis-Plus雪花算法实现源码解析
摘要:1. 雪花算法(Snowflake Algorithm) 雪花算法(Snowflake Algorithm)是一种用于生成唯一标识符(ID)的分布式算法。最初由 Twitter 公司开发,用于生成其内部分布式系统中的唯一ID。雪花算法的设计目标是在分布式系统中生成全局唯一的ID,同时保证ID的有序性
1350
2
5
使用JWT、拦截器与ThreadLocal实现在任意位置获取Token中的信息,并结合自定义注解实现对方法的鉴权
摘要:1. 简介 1.1 JWT JWT,即JSON Web Token,是一种用于在网络上传递声明的开放标准(RFC 7519)。JWT 可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。 声明(Claims): JWT 包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明:
1695
2
3
[已解决]配置Logback.xml文件后打成jar包不生效
摘要:在项目中的resources目录下配置了Logback.xml文件,使用idea的控制台可以打印出指定格式的日志,但是打成jar包后不生效。寻找原因之后发现需要在配置文件加上以下配置 logging: config: classpath:Logback.xml 然后就生效了
423
0
0
[卧龙凤雏]睡眠排序和随机排序
摘要:注意:以下排序不要用于生产环境 1. 睡眠排序 1.1 简介 睡眠排序(Sleep Sort)是一个非常有趣且奇特的排序算法,第一次看到就大吃一惊。睡眠排序并不是一个实际可用于大规模数据排序的算法,而更像是一种编程趣味或者计算机科学的玩笑。原理基于多线程和睡眠的概念,不是传统的比较排序算法。 睡眠排
1359
1
2
使用Spring Integration接收TCP与UDP请求
摘要:1. 简介 Spring Integration 是一个开源的项目,它是 Spring 生态系统的一部分,旨在简化企业集成(Enterprise Integration)的开发。它提供了一种构建消息驱动的、松散耦合的、可扩展的企业应用集成解决方案的方式。Spring Integration 基于 S
1411
0
1
SpringBoot中启用虚拟线程
摘要:1. 什么是虚拟线程 虚拟线程是JDK21版本正式发布的一个新特性。虚拟线程和平台线程主要区别在于,虚拟线程在运行周期内不依赖操作系统线程:它们与硬件脱钩,因此被称为“虚拟”。这种解耦是由JVM提供的抽象层赋予的。 虚拟线程的运行成本远低于平台线程。它们消耗的内存要少得多。这就是为什么我们可以创建数
1321
0
0
SpringBoot返回字符串乱码如何解决
摘要:场景:controller某个接口是直接返回字符串,用于测试的。当返回中文字符串的时候乱码。 解决方法:在controller的映射加上produces = "text/html;charset=utf-8" 示例: @RequestMapping(value = "/ping", produces
811
0
0
Logback日志框架如何限制日志最长打印长度?
摘要:在程序中,我们一般不希望在运行时打印过长的日志,所以我们需要对日志进行长度限制。以下就是对日志进行长度限制的步骤。 1. 编写过滤器 在程序中新建CustomLengthFilter过滤器类,内容如下: public class CustomLengthFilter extends Filter<I
1065
2
2
[完整] SpringBoot开启Http2
摘要:## 1. 什么是Http2.0 HTTP/2.0,通常简称为HTTP/2,是一种用于传输超文本(例如网页和资源文件)的网络协议。它是HTTP/1.1的继任者,旨在提高性能和效率,以适应现代Web应用的需求。HTTP/2的主要特点包括以下几点: 1. **多路复用(Multiplexing)**:H
3419
0
0
GitHub Actions CI/CD 工作流实战
摘要:## 1. 什么是 GitHub Actions 与 workflow ? GitHub Actions 是 GitHub 提供的一种持续集成(CI)和持续部署(CD)的工具,用于自动化软件开发过程中的各种任务和工作流。GitHub Action Workflow 是一组定义在存储库中的自动化任务,
817
0
0
[超详细]SpringBoot整合WebSocket
摘要:## 1. 什么是WebSocket? WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许在浏览器和服务器之间进行实时的、双向的通信。相对于传统的基于请求和响应的 HTTP 协议,WebSocket 提供了一种更有效、更实时的通信方式,适用于需要实时更新、实时通知和实时交互
9660
0
3
安卓中如何使用AsyncTask完成异步定时任务?
摘要:在 Android 中,可以使用 `AsyncTask` 类来实现异步定时任务。下面是一个简单的例子,演示如何使用 `AsyncTask` 实现异步定时任务: ``` javaCopy codeimport android.os.AsyncTask; import android.os.Bundle
75
0
0
Java中怎么进行原子操作?
摘要:在 Java 中进行原子操作,特别是替换某个属性,你可以使用 `AtomicReference` 类来实现。`AtomicReference` 可以保证对对象引用的原子更新操作。以下是一个示例,展示如何使用 `AtomicReference` 来进行原子替换操作: ``` javaCopy code
49
0
0
怎么解决“/usr/bin/ld: cannot find -lz: No such file or directory”
摘要:这个错误是链接器无法找到所需的库文件 -lz(通常是 zlib 库)导致的。-lz 是编译器告诉链接器需要链接 zlib 库的标志。 解决这个问题的方法是确保系统中安装了 zlib 库以及相关的开发包。在大多数 Linux 发行版中,你可以使用包管理工具来安装 zlib 库。例如,在 Ubuntu
2745
0
0
Jni GetMethodID中函数标识sig的详细解释
摘要:在 JNI(Java Native Interface)中,`GetMethodID` 函数用于获取 Java 类的方法的标识符。这个函数的详细解释如下: ``` cCopy code jmethodID GetMethodID(JNIEnv *env, jclass clazz, const ch
1471
0
0
[超详细] GraalVM打包含有JNI的本地镜像
摘要:[超详细] GraalVM打包含有JNI的本地镜像GraalVM 是一种高性能、多语言通用虚拟机和编译器技术。它由 Oracle 开发并开源,旨在为不同的编程语言和应用场景提供统一的运行时环境和编译器平台。以下是 GraalVM 的一些主要特点和功能: 1. **多语言支持:** GraalVM 支持多种编程语言,包括 Java、JavaScrip
1625
5
1
Windows系统下将java程序开机自启
摘要:## 1. 下载 使用winsw将可执行程序注册为windows的系统服务。点击右侧release下载对应版本。 ```https https://github.com/kohsuke/winsw ``` 需要下载对应的exe可执行文件和xml模板 ## 2. 编写配置文件 将下载的exe更名为你的
710
0
0
Linux系统下将java程序开机自启
摘要:Linux系统下将java程序开机自启 在Linux环境下,可以通过将Java程序配置为系统服务(systemd服务)来实现开机自启动。使用systemd可以很方便地管理和控制后台服务,包括Java程序。以下是一个简单的步骤来配置Java程序为systemd服务: 1. 编写启动脚本 创建一个脚本文
2943
0
0
MyBatis-Plus如何自动填充实体类时间
摘要:# MyBatis-Plus如何自动填充实体类时间 1. 创建实体类,相关字段添加`@TableField`注解,并标注自动填充时机 ```java @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public
129
0
0
十大排序 Java实现
摘要:直接上代码 import java.util.ArrayList; import java.util.Collections; public class MySort { public static void main(String[] args) { MySort mySort = new MyS
19
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起