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 请求参数只有

[Java手撕]交替打印0-100

两个线程交替打印0-100

ReentrantReadWriteLock源码剖析

ReentrantReadWriteLock源码剖析 测试案例: 运行结果: 架构图: 源码剖析: 加锁: 释放锁 总的来说:ReentrantReadWriteLock底层实现了公平锁、非公平锁、读锁和写锁。

安卓学习

项目结构 build.gradle:项目级的 Gradle 构建文件,用于配置整个项目的构建设置。 settings.gradle:用于包含多个模块的设置。 gradle:存放 Gradle Wrapper 的脚本和配置文件。 简单使用 这里直接通过分析示例代码来讲述如何简单编写一个安卓程序。 onCreate() 函数是此应用的入口点,可以简单理解为C语言的main函数。其中的setCo

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对象,因此所有的访问者在访问被加了类锁的代码时,

第三方登录原理

1、第三方登录原理 第三方登录的原理是借助OAuth授权来实现,首先用户先向客户端提供第三方网站的数据证明自己的身份获取授权码,然后客户端拿着授权码与授权服务器建立连接获得一个Access Token,之后客户端就可以通过Access Token来与资源服务器进行交互。 使用OAuth的好处是提供给用户一个特定的密钥,用户持有这个密钥可以访问应用中的任何信息,而不需要向网站提供用户名&密码

.类加载器及双亲委派机制

类加载器 加载类 备注 启动类加载器(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

JUC前置知识

JUC前置知识 JUC概述 在开发语言中,线程部分是重点,JUC是关于线程的。JUC是java.util.concurrent工具包的简称。这是一个处理线程的工具包,JDK1.5开始出现的。 线程和进程 线程和进程的概念 进程(process): 是计算机的程序关于某数据集合上的一次允许活动,是操作系统进行资源分配和任务调度的最小单位,是操作系统的基础。在当代面向线程设计的计算机结构中,进程是线程

通过阅读本篇文章你将了解到: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还可以记录并分析使用该人机验证的请求

数组更加深入的学习

1.浅了解java数组原理 可以形象的认为java中有“栈”和“堆”这两个东西,栈用于存放声明的数组,而堆则用于存放数组的赋值 刚声明完的数组没有任何作用,必须要对其赋值才有意义 2.数组的三种初始化 静态初始化:将数组的值在声明时提前写好并且值固定不变 动态初始化:声明并创建完数组后再有序写入数组的值 默认初始化:不给数组赋值,输出数组默认的值

对称二叉树-101

题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 解题思路 这里我们相当于是比较根节点左右两颗子树,我们依次向左右子树的左右两个方向进行遍历,我们比较左子树的左孩子和右子树的右孩子,左子树的右孩子和右子树的左孩子,这里如果不好理解可以看下面这个图片,如果两个子节点不为空且值相等我们就继续想下一层遍历,直至节点为空返回true,整个结果也就为true了。 代码实例

vite创建vue3项目

概述 Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。   官网:https://cn.vitejs.dev/guide/   安装vite 最新版本的vite,要求nodejs版本,必须是18.x以上,所以需要确保你的node版本足够高。 本文使用nodejs最新版本v22.7.0 yarn add

<<  <  196  197  198  199  200  201  202  203  204  205  206  >  >>