自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java8:静态类使用yml文件的值

添加pom@Component@Autowired@Component@Data最后直接使用。

2024-10-07 20:14:57 218

原创 java8:手动分页工具

在上述代码中,PageTool类的getPage方法接受一个源列表、每页大小和页码作为参数,返回指定页码的分页结果。在Main类中演示了对一个包含 1 到 100 的整数列表进行分页并输出第一页内容的示例。

2024-10-07 17:59:45 160

原创 java 反向生成

/文件输出流用于将数据写入文件。//文件路径(路径+文件名)file.exists()) { //文件不存在则创建文件,先创建目录。* @param filePath 磁盘路径 如 : d:/workspace/System.out.println("生成成功");//实体类所在的package在磁盘上的绝对路径。* @date 2018年4月11日。//获取包下的所有类名称。//生成sql的文件夹。//项目中实体类的路径。

2024-10-06 22:29:20 510

原创 java 多线程查库

在上述代码中,在每个线程的任务中添加了try-catch块来捕获可能出现的异常。如果发生异常,会打印出错误信息。无论是否发生异常,在finally块中都会执行CountDownLatch的减一操作,以确保latch.await()能够正确等待所有任务完成。// 模拟查询数据库的操作,这里只是简单返回 name 的长度。

2024-09-30 09:20:12 299

原创 mp取数据,模糊查询redis

请注意,这里假设你已经配置好了 offeringService,它是一个使用 MyBatis-Plus 的服务类,用于操作数据库表。同时,确保已经正确配置了 Redis 的连接工厂。// 使用 MyBatis-Plus 的 QueryWrapper 构建查询条件。// 假设已经配置好 RedisTemplate。// 假设已经正确配置了连接工厂。// 对匹配到的实体进行处理。// 模拟模糊查询条件。// 假设的数据库实体类。

2024-09-28 17:56:43 578

原创 java:缓存 json格式

在这段代码中,将实体类转换为 JSON 格式字符串进行存储。当需要获取数据时,可以从缓存中取出 JSON 字符串,再转换回实体类对象进行使用。这样可以方便地存储和组装数据。// 如果数据不同或者未缓存,更新缓存并记录日志。// 使用 MyBatis 查询数据库数据并获取列表。// 假设你已经正确配置了连接工厂。// 假设的数据库实体类。

2024-09-28 17:17:04 693

原创 配置项取值给静态类用

需要注意的是,使用静态方式获取配置值可能会带来一些局限性,比如在测试环境中可能不太容易进行模拟和控制。在实际应用中,可以根据具体情况选择合适的方式来获取配置值。然后在静态类中可以通过调用 ConfigValueHolder.getSomeValue() 来获取配置值。1. 首先确保你的项目是一个 Spring 项目,并且配置文件被正确加载。// 触发 Spring 的依赖注入以初始化静态变量。一、使用 Spring 的 Environment 类。二、使用 @Value 注解结合静态变量和静态初始化块。

2024-09-28 15:26:59 396

原创 java8:hutool:httputil.post读取配置项中的url

不过这种方式有潜在的问题,因为在Spring容器初始化Bean的时候构造函数会被调用,但是如果@Value注入还没完成(例如配置文件加载延迟等情况),可能会导致staticUrl的值为null。如果HttpUtil.post是静态方法,无法直接访问非静态的@Value注入的属性。1. 首先将配置项的值通过@Value注入到类的成员变量,然后在构造函数中将这个值传递给一个静态变量。这种方式更符合Spring的依赖注入原则,而且可以确保在需要使用配置值的时候能够正确获取到。通过一个工具类方法获取配置值。

2024-09-28 14:02:21 683

原创 java8 缓存对比并存值

在上述代码中,首先使用 MyBatis 从数据库中查询数据得到一个列表,然后使用 Stream 流遍历列表中的每个元素,对比 Redis 中的缓存值,如果不同则更新缓存并记录日志。可以使用 MyBatis 获取数据库数据为列表,然后使用 Java 8 的 Stream 流来对比 Redis 值。// 如果数据不同或者未缓存,更新缓存并记录日志。请注意,你需要根据实际情况配置 MyBatis 的映射文件和数据库连接信息,并确保 Redis 连接正确。// 使用 MyBatis 查询数据库数据并获取列表。

2024-09-27 12:52:30 504

原创 java8:处理数据stream并传值

以下是可以将百分比的值直接塞入实体类的方法:int pid;long time;= null) {})

2024-09-24 15:54:34 391

原创 java8处理数据stream

这个方法使用了 Java 8 的 Stream API,更加简洁优雅。它遍历beforeList,对于每个元素,在afterList中查找具有相同pid的元素,如果找到则计算时间差并创建一个新的包含lastTime的Entity对象,否则直接返回原对象。最后将处理后的结果收集到一个新的列表中并返回。

2024-09-24 15:44:16 350

原创 java8 处理数据

/ 这里模拟生成随机的实体类列表,实际应用中应从数据源获取。

2024-09-24 15:12:53 417

原创 Java 8 和 MyBatis 框架实现每天凌晨 2 点进行增量缓存

System.out.println("增量数据 ID: " + entry.getKey());1. 上述代码中的数据库连接信息、Redis 连接信息以及 MyBatis 配置文件路径需要根据实际情况进行修改。// 设置定时任务每天凌晨 2 点执行增量缓存。2. 确保在项目中正确配置了 MyBatis 和 Jedis 的依赖。// 加载 MyBatis 配置文件。// 构造方法、getter 和 setter。// 连接 Redis。// 第一次全量缓存。

2024-09-21 12:49:16 1017

原创 java:通过sigar获取系统信息,不用who5

System.out.println("进程名称: " + processInfo.processName + ", PID: " + processInfo.pid + ", CPU 使用率: " + processInfo.cpuUsage + "%, 内存使用率: " + processInfo.memoryUsagePercent + "%");你可以在 Spring Boot 的服务类或控制器中调用这个工具类来获取进程信息并进行处理。// 处理获取单个进程信息时的异常。

2024-09-19 16:10:25 427

原创 java:使用sigar的使用

System.out.println("进程名称: " + processInfo.processName + ", PID: " + processInfo.pid + ", CPU 使用率: " + processInfo.cpuUsage + "%, 内存使用率: " + processInfo.memoryUsagePercent + "%");请注意,上述代码中的总物理内存假设为 8GB,在实际应用中你需要根据系统实际情况获取总内存量,以更准确地计算内存使用率。// 获取 CPU 使用率。

2024-09-19 16:02:57 259

原创 java8获取windows进程cpu和内存使用情况

System.out.println("进程名称: " + processName + ", PID: " + pid + ", CPU 使用率: " + cpuUsage + "%, 内存使用率: " + memoryUsagePercent + "%");请注意,上述代码中的总物理内存假设为 8GB,在实际应用中你需要根据系统实际情况获取总内存量,以更准确地计算内存使用率。// 假设总物理内存为 8GB(8589934592 字节),计算内存使用率。

2024-09-19 15:02:10 399

原创 java8:修改obsclient下载方式

System.out.println("文件下载成功并发送给前端!// 从 objectKey 中提取文件名。// 设置响应头,指定文件名和内容类型等。// 关闭 ObsClient 和资源。// 将文件内容写入响应流。// 初始化 ObsClient。

2024-09-12 16:25:07 288

原创 java8:obsclient下载文件,restful风格

在这个示例中,通过/download/{bucketName}/{objectKey}路径可以触发下载操作,传入桶名和对象键。代码会从对象存储中获取文件,并设置合适的响应头将文件返回给前端。请记得将代码中的your_access_key、your_secret_key和your_endpoint替换为你的实际值。同时,如果对象键的格式不固定,可能需要调整正则表达式来提取文件名。// 从 objectKey 中提取文件名。// 你的访问密钥、秘密密钥和终端节点。

2024-09-12 16:07:51 440

原创 java8:obsclient下载文件

请将代码中的your_access_key、your_secret_key、your_endpoint、your_bucket_name、your_object_key和local_file_path替换为你实际的访问密钥、秘密密钥、终端节点、桶名、对象名和本地文件路径。// 初始化 ObsClient,这里需要替换为你的实际访问密钥、秘密密钥和终端节点。// 指定要下载的文件的桶名和对象名。// 关闭 ObsClient。// 将文件内容写入本地文件。

2024-09-12 15:55:28 416

原创 java:mybatisplus查询功能演示,包括模糊查询

在上述代码中,使用queryWrapper.like()方法进行模糊查询。如果要进行更加复杂的模糊查询,可以使用queryWrapper.likeRight()(后缀模糊查询)或queryWrapper.likeLeft()(前缀模糊查询)等方法。

2024-09-10 22:15:40 503

原创 java:ftpclient修改文件名

在上述代码中,你需要将your_server_address、your_username、your_password、old_file_name和new_file_name替换为实际的 FTP 服务器地址、用户名、密码、旧文件名和新文件名。这段代码首先连接到 FTP 服务器,然后尝试使用rename方法对文件进行重命名。如果重命名成功,会输出相应的消息,否则输出重命名失败的消息。System.out.println("文件重命名成功!System.out.println("文件重命名失败!

2024-09-10 14:50:31 403

原创 obsclient上传图片

return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("图片上传失败");return ResponseEntity.ok("图片上传成功,对象名称:" + objectKey);// 创建 OBS 客户端。// 生成唯一的对象名称。// 上传文件到 OBS。// OBS 配置信息。

2024-09-06 14:29:54 254

原创 java:ftpclient unzipfile

/ 读取 ZIP 文件内容到字节数组。// 获取要解压的 ZIP 文件。

2024-08-23 14:15:11 259

原创 ftpclient获取到的文件信息,包装用的实体类

import java.util.Date;public class FtpFile { private String name; private boolean isDirectory; private long size; private Date lastModified; public FtpFile(String name, boolean isDirectory, long size, Date lastModified) { this.na

2024-08-22 16:28:47 144

原创 java:ftp限制登录:redistemplate的hash去操作,hash的key为固定方法的key,field为ip,value为username和时间等信息

/ 已有其他用户通过此 IP 连接,登录失败。System.out.println("user1 登录失败,已有用户连接");System.out.println("user2 登录失败,已有用户连接");System.out.println("user1 登录成功");System.out.println("user2 登录成功");// 如果没有已有记录或用户名相同,进行登录操作。// 模拟用户 1 活动。// 用户 1 尝试登录。// 用户 2 尝试登录。// 一段时间没有活动。

2024-08-14 17:20:19 851

原创 java:标识位限制登录数功能:加入ip和username来判断

System.out.println("user1 登录失败,已有用户连接");System.out.println("user2 登录失败,已有用户连接");// 记录连接的用户。System.out.println("user1 登录成功");

2024-08-14 16:30:14 409

原创 java:使用标识位限制ftp登录数

/ 更新用户的最后活动时间。System.out.println("user1 登录失败,已有用户连接");System.out.println("user2 登录失败,已有用户连接");System.out.println("user1 登录成功");System.out.println("user2 登录成功");if (isConnected) { // 如果有用户连接。

2024-08-14 16:13:18 403

原创 java:redisTemplate借助hash实现限制同时登陆个数

System.out.println("登录失败,已有设备登录");System.out.println("登录成功");

2024-08-14 15:13:11 376

原创 java:限制ftp登录为1,

/ 这里需要确保相关的配置使得 @Resource 能够正确注入 RedisTemplate。System.out.println("登录失败,已有设备登录");System.out.println("登录成功");

2024-08-14 14:58:58 361

原创 java:RedisTemplate实现限制同时登录 FTP 用户数目,并加入看门狗(Watchdog)监视连接是否释放

在上述代码中,使用@Scheduled注解定义了一个定时任务checkReleasedConnections,每隔 5 秒检查一次 Redis 中的登录计数,删除计数为 0 或负数的键,模拟了看门狗对连接释放的监视。请注意,这只是一个简单的示例,实际应用中的连接释放判断逻辑可能会更加复杂。System.out.println("登录失败,已达到最大登录用户数");// 这里模拟检查连接是否释放,实际应用中需要根据具体的逻辑来判断。System.out.println("登录成功");

2024-08-14 14:45:04 361

原创 Java 用于限制同时登录 FTP 客户端的用户数目,并使用看门狗监控是否释放

if (System.currentTimeMillis() - loginTime > 30000) { // 假设 30 秒未释放。// 假设限制同时登录 5 个用户。System.out.println(ftpId + " 超时未释放,已强制注销");System.out.println(ftpId1 + " 登录成功");System.out.println(ftpId1 + " 注销成功");System.out.println("登录失败,达到用户数限制");// 模拟登录和注销。

2024-08-14 14:21:00 217

原创 java: 限制使用FTPclient连接ip的用户一次只能有一个

在上述代码中,创建了一个 Semaphore 对象,其许可数量为 1 ,表示同时只允许一个线程获取许可进行连接操作。在 connectToFTP 方法中,通过 semaphore.acquire 尝试获取许可,如果获取成功则进行连接操作,完成后通过 semaphore.release 释放许可。System.out.println("成功连接到 " + ip);在这个示例中,使用一个对象 lock 来实现同步,只有获取到这个对象的锁才能进行连接操作。// 在此处编写连接 FTP 的代码。

2024-08-10 11:34:48 254

原创 java:将从 FTP 服务器下载的文件直接传递给前端,而不保存到本地路径

try {

2024-08-07 15:10:14 420

原创 java:使用redisTemplate锁实现限制ftp功能最大连接数

System.out.println("IP: " + ip + " 成功获取连接,进行 FTP 操作...");System.out.println("IP: " + ip + " 达到最大连接数,无法获取连接。// 示例 IP 地址。// 假设已经配置好了 RedisTemplate。// 执行 FTP 相关操作。// 操作完成后释放锁。

2024-08-07 14:15:57 371

原创 Redis:redisTemplate简单操作以及分布式锁简单实现

其中,key 是锁的键,value 可以是一个随机值或唯一标识,用于释放锁时验证持有者身份。• 获取列表数据:opsForList().range(key, start, end) 获取指定范围内的列表元素。当锁超时后,其他线程可以尝试获取锁。1. 定义锁的键:首先确定一个唯一的键来表示锁,例如:"lock:resourceName"。4. 处理锁获取失败:如果获取锁失败,需要根据具体的业务场景进行处理,例如等待一段时间后重试。在释放锁时,需要先验证获取锁时设置的值,以确保只有锁的持有者能够释放锁。

2024-08-06 09:51:17 365

原创 java:ftp文件处理相关功能,独立ftplient的创建

LOGGER.error("用户 {} 下载文件 {} 时出现错误: {}", operator, remotePath, e.getMessage());LOGGER.error("用户 {} 创建文件夹 {} 时出现错误: {}", operator, folderPath, e.getMessage());LOGGER.error("用户 {} 下载文件操作时出现错误: {}", operator, e.getMessage());

2024-08-05 19:38:43 547

原创 java:ftp加入修改文件夹名称功能

response.append("名称: ").append(name).append(", 修改时间: ").append(formattedDate).append("\n");LOGGER.error("用户 {} 下载文件 {} 时出现错误: {}", operator, remotePath, e.getMessage());LOGGER.error("用户 {} 创建文件夹 {} 时出现错误: {}", operator, folderPath, e.getMessage());

2024-08-05 17:40:43 492

原创 java:ftp文件目录上传下载,加入文件删除功能

response.append("名称: ").append(name).append(", 修改时间: ").append(formattedDate).append("\n");LOGGER.error("用户 {} 下载文件 {} 时出现错误: {}", operator, remotePath, e.getMessage());LOGGER.error("用户 {} 上传文件 {} 时出现错误: {}", operator, localPath, e.getMessage());

2024-08-05 10:02:40 527

原创 java:ftp文件目录上传下载加入log

response.append("名称: ").append(name).append(", 修改时间: ").append(formattedDate).append("\n");LOGGER.error("用户 {} 下载文件 {} 时出现错误: {}", operator, remotePath, e.getMessage());LOGGER.error("用户 {} 上传文件 {} 时出现错误: {}", operator, localPath, e.getMessage());

2024-08-05 09:54:55 287

原创 java:ftp上传下载.展示文件.新建文件夹,加入log日志

response.append("名称: ").append(name).append(", 修改时间: ").append(formattedDate).append("\n");LOGGER.error("用户 {} 下载文件 {} 时出现错误: {}", operator, remotePath, e.getMessage());LOGGER.error("用户 {} 上传文件 {} 时出现错误: {}", operator, localPath, e.getMessage());

2024-08-03 10:08:48 384

空空如也

空空如也

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

TA关注的人

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