Java
【网络基础知识】判断证书私钥格式
原创 小何运维笔记 要判断证书私钥的格式,可以采取以下步骤: 查看文件扩展名: 文件扩展名可以提供一些线索: .pem:PEM格式,通常是Base64编码的,可以包含多种类型的密钥或证书。 .key:通常是私钥文件,可能是PEM或其他格式。 .der:DER格式,通常是二进制编码,不易用文本编辑器直接查看。 .pfx 或 .p12:PKCS#12格式,通常包含私钥和证书链,需使用特定工具查看。
常见IO流的使用与实践
IO流 概念梳理 字节流:是让计算机读写的,让计算机理解的内容,JAVA中的Byte等同于计算机中的字节 字符流:是让人读懂的,需要指定的编码格式将字节转为字符 编码:将字符通过指定的编码格式转为字节 解码:将字节通过指定的编码格式转为字符 Java中字节流、字符流的超类 InputStream、OutputStream、Reader、Writer 使用案例 将外部文件读取并输出到另外一个文件
如何实现一个通用的接口限流、防重、防抖机制
介绍 最近上了一个新项目,考虑到一个问题,在高并发场景下,我们无法控制前端的请求频率和次数,这就可能导致服务器压力过大,响应速度变慢,甚至引发系统崩溃等严重问题。为了解决这些问题,我们需要在后端实现一些机制,如接口限流、防重复提交和接口防抖,而这些是保证接口安全、稳定提供服务,以及防止错误数据 和 脏数据产生的重要手段。 而AOP适合在在不改变业务代码的情况下,灵活地添加各种横切关注点,实现一些通
ReentrantLock源码剖析
ReentrantLock源码剖析 测试案例: 非公平锁运行结果: 公平锁运行结果: 源码剖析: ReentrantLock底层基于AQS 公平锁和非公平锁的底层实现逻辑: 主要在获取锁: java.util.concurrent.locks.ReentrantLock.FairSync#lock java.util.concurrent.locks.ReentrantLock.Nonf
一种优雅的方式整合限流、幂等、防盗刷
大家在工作中肯定遇到过接口被人狂刷的经历,就算没有经历过,在接口开发的过程中,我们也需要对那些容易被刷的接口或者和会消耗公司金钱相关的接口增加防盗刷功能。例如,发送短信接口以及发送邮件等接口,我看了国内很多产品的短信登录接口,基本上都是做了防盗刷,如果不做的话,一夜之间,也许公司都赔完了┭┮﹏┭┮。 假设我们正在开发一个发送短信(仅国内)的接口,过程如下 接口定义为/sendSms 请求参数只有
ReentrantReadWriteLock源码剖析
ReentrantReadWriteLock源码剖析 测试案例: 运行结果: 架构图: 源码剖析: 加锁: 释放锁 总的来说:ReentrantReadWriteLock底层实现了公平锁、非公平锁、读锁和写锁。
tomcat 源码概念及解析
server.xml是Tomcat服务器的核心配置文件,它定义了Tomcat服务器的运行参数和容器的配置。下面是对server.xml中一些关键标签的解读: Server: 这是server.xml文件的根元素,它代表了整个Tomcat服务器的实例。 port属性定义了Tomcat的shutdown端口,用于接收关闭服务器的命令。 shutdown属性定义了关闭服务器的命令字符串。 Listene
spring 自定义属性解析器
自定义属性解析器 org.springframework.context.support.AbstractApplicationContext#prepareBeanFactory PropertyEditorSupport属性编辑器 ConversionService属性编辑器 conversionSer
[图文直播]基于ZFile和MinIO搭建私有网盘
前言 ZFile 以下是ZFile的官网,上面也涉及到了搭建方法 https://docs.zfile.vip/install/os-windows 此次仅记录本人按照官方的部署方法进行实操验证。 下载 ibm-semeru-open-jdk_x64_windows_8u372b07_openj9-0.38.0.msi zfile-release.jar 具体下载地址见上面的官网 安装
合集 - JUC基础(13)
合集 - JUC基础(13) 1. JUC前置知识 2023-10-23 2. Synchronized和Lock接口 2023-10-25 3. 线程间通信 2023-10-28 4. Lock实现线程间定制化通信 2023-10-30 5. 常用集合线程安全分析 2023-11-02 6. 多线程锁 2023-11-12 7. Callable接口和Future接口 2023-11-20 8.
关于synchronized的理解,共有两种类型的锁:
关于synchronized的理解,共有两种类型的锁: (1)类锁:只有synchronized修饰静态方法或者修饰一个类的class对象时,才是类锁。 (2)对象锁:除了类锁,所有其他的上锁方式都认为是对象锁。比如synchronized修饰普通方法或者synchronized(this)给代码块上锁等。 应该注意的是,因为一个类只有一个class对象,因此所有的访问者在访问被加了类锁的代码时,
.类加载器及双亲委派机制
类加载器 加载类 备注 启动类加载器(Bootstrap ClassLoader) JAVA_HOME/jre/lib 无上级,无法直接访问 由jvm加载 拓展类加载器(Extension ClassLoader) JAVA_HOME/jre/lib/ext 父加载器为 Bootstrap,显示为 null 。该类由Bootstrap加载 应用类加载器(Application ClassLoade
Acunetix v24.8 发布,新增功能概览
Acunetix v24.8 发布,新增功能概览 Acunetix v24.8 (Linux, Windows) - Web 应用程序安全测试 Acunetix | Web Application Security Scanner 请访问原文链接:https://sysin.org/blog/acunetix/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 重要提示 Ac
Burp Suite Professional 2024.8 发布下载,新增功能概览
Burp Suite Professional 2024.8 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接:https://sysin.org/blog/burp-suite-pro/,查看最新版。原创作品,转载请保
Java服务.问题排查.问题复现
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了 问题排查 问题复现 为了复现该问题,写了个springboot的demo部署在测试环境,其中demo里只做了hello world功能,应用类型为web_tomcat (war包部署),基础镜像是base_tomcat/java-centos6-j
Java替换RequstBody和RequestParam参数的属性
Java替换RequstBody和RequestParam参数的属性 本文主要讲解在Java环境中如何替换RequestBody和RequestParam参数中的属性 背景 近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果(项目历史原因,不方便上Jwt授权这套),所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter去实现 替换Reques
Pulsar 入门实战(3)--安装
本文主要介绍 Pulsar 的安装,相关的环境及软件信息如下:CentOS 7.9.2009、Pulsar 3.3.0、Java 17.0.10。 1、单机版安装 为了本地开发和测试,可以以单机模式运行 Pulsar。单机模式将所有组件运行在单个 Java 虚拟机(JVM)进程内。 官网(https://pulsar.apache.org/download/)下载安装包并解压: 启
创建实体类Employee
8.1.1、创建实体类Employee image package org.rain.pojo; import java.io.Serializable; /** @author liaojy @date 2023/10/19 - 21:31 */ public class Employee implements Serializable { private Integer id; pri
通过阅读本篇文章你将了解到:CompletableFuture的使用
通过阅读本篇文章你将了解到: CompletableFuture的使用 CompletableFure异步和同步的性能测试 已经有了Future为什么仍需要在JDK1.8中引入CompletableFuture CompletableFuture的应用场景 对CompletableFuture的使用优化 场景说明 查询所有商店某个商品的价格并返回,并且查询商店某个商品的价格的API为同步 一个Sh
推荐一个开源免费的 Spring Boot 实战项目
最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件(大都数是4GB以上)的http上传,并且要求支持http断点续传。笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本概念,其实非常简单,这里在简要归纳一下,方便记忆: 服务器端由C语言实现,而不是用java、PHP这种解释型语言来实现;服务器端即时写入硬盘,因此无需再次调用move_uplo
SpringBoot+Vue3项目实战——SpringBoot篇
项目准备与配置 数据库以及其他项目配置 遇到问题:找不到"url"....可能原因:没有扫描到配置文件(yml),在pom.xml中的build标签中添加以下内容 启动类相关 @SpringBootApplication:包扫描时,自动扫描启动类所在包及其子包,若需要扫描其他包,需要使用@ComponentScan进行包名指定 Lombok工具: 自动生成getter/setter/t
ConditionObject源码剖析
ConditionObject源码剖析 这玩意是AQS的一个内部类。 案例演示: 运行结果: Thread-0 task1 加锁成功 Thread-0 task1 执行await被挂起 Thread-1 task2 加锁成功 Thread-1 task2 唤醒 task1 Thread-1 task2 释放锁成功 Thread-0 task1 被唤醒成功 Thread-0 task1 释放锁成
reCAPTCHA是Google使用方式如下如所示
reCAPTCHA是Google公司推出的一项验证服务,使用十分方便快捷,在国外许多网站上均有使用。它与许多其他的人机验证方式不同,它极少需要用户进行各种识图验证。 它的使用方式如下如所示,只需勾选复选框即可通过人机验证。 虽然简单但效果很好,因为Google会收集一些浏览器信息,网络信息,鼠标轨迹等信息,最后通过神经网络判断是否为机器人。而且reCAPTCHA还可以记录并分析使用该人机验证的请求
vite创建vue3项目
概述 Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。 官网:https://cn.vitejs.dev/guide/ 安装vite 最新版本的vite,要求nodejs版本,必须是18.x以上,所以需要确保你的node版本足够高。 本文使用nodejs最新版本v22.7.0 yarn add