Java
JVM-常用工具(jps、jstat、jinfo、jmap、jhat、jstack、jconsole、jvisualvm)使用
场景 记录JVM中常用工具。 jps:虚拟机进程状态工具 jps(JVM Process Status Tool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程, 并显示虚拟机执行主类(Main Class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。 命令格式: jps [options] [hostid] 示例: jps -l 选项: -q&nbs
【Lombok】lombok已知的坑,记录
关于lombok lombok 这个插件现在的使用率应该是很高的了,虽然偶尔也听说到有公司禁止使用lombok,说会存在什么样的问题,但耐不住它是真的香。 (主要是因为也不知道具体它存在什么样的坑,如果是明确的坑,绕得过就绕过就好了,绕不过就没办法了) 影响中说引入 lombok后,如果作为组件对外提供,就要强制使用方也引入lombok,太过霸道,如此一种说法来禁止使用lombok,在我们大多数项
【面试题】int(1) 和 int(10) 有什么区别?
int(1) 和 int(10) 有什么区别? 先说结论: 正常来说,没有区别。后面带的数字,并不是长度的概念。Int 类型就是占用4个字节(32位), Int(1), int(10) 都一样是4个字节/32位,数据范围也还是 -2^31 ~ 2^31-1。 所以,int 后面带个数字,干嘛使呢? 如果只是用来数据存储,别带数字了,混淆视听。 如果是为了做编号什么的,保持一致长度,不够位数就前面补
Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947)
问题描述: 使用 Spring Cloud Gateway 的应用如果对外暴露了 Gateway Actuator 端点时,则可能存在被 CVE-2022-22947 漏洞利用的风险。攻击者可通过利用此漏洞执行 SpEL 表达式,允许在远程主机上进行任意远程执行。获取系统权限。 影响范围: 1、除了 Spring Cloud Gateway 外,程序还用到了 Spring Boot Actuato
Quartz任务调度框架
Quartz任务调度框架 Quartz是一个任务调度框架,用于定时执行任务。 任务调度:系统中有N的任务,分别需要在不同的时刻执行这些任务,这种多任务的执行策略就是任务调度 0 定时任务实现的方法 spring schedule 优点:无需整合spring,作业类中就可以调用业务service 缺点:默认单线程执行任务,当前一个任务执行时间过长时,会使后面的任务延期执行,如果前一个任务的执行时
spring ApplicationEvent 和 Listener
ApplicationEvent ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。 通过 ApplicationEvent 类和 ApplicationListener 接口来提供在 ApplicationContext 中处理事件。如果一个 b
SoapUI、Jmeter、Postman三种接口测试工具的比较
1. 用例组织方式 首先是用例组织方式的不同,不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式。 SoapUI的组织方式如下图,最上层是WorkSpace,每个窗口只可以打开一个WorkSpace(这是一个xml文件),每个Project也是一个单独的xml文件(为了协同工作,也可以通过设置将其转化为一堆文件集合),所以每个WorkSpace中可以
React Native+小程序容器=更高的开发效率
React Native是由Facebook开发并于2015年首次发布的一个框架,用于构建原始的移动应用程序。 它具有许多技术上的优势: 跨平台开发:使用React Native,您可以使用相同的代码库构建同时运行在iOS和Android平台上的应用程序。这种跨平台的开发方式可以大大减少开发工作量和时间成本,因为您不需要为每个平台编写完全不同的代码。 原生性能:React Native提供
《面试1v1》synchronized
源码都背下来了,你给我看这 我是 javapub,一名 Markdown 程序员从👨💻,八股文种子选手。 面试官: 你好,我看到你的简历上写着你熟悉 Java 中的 "synchronized" 关键字。你能给我讲讲它的作用吗? 候选人: 当然,"synchronized" 是 Java 中的一个关键字,用于实现同步机制。它可以用来修饰方法或代码块,以确保在同一时间只有一个线程可以访问被修饰
Mybatis Plus
MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率 1. MyBatisPlus简介 入门案例 MyBatisPlus概述 2. 标准数据层开发 标准数据层CRUD功能 分页功能 3. DQL控制 条件查询方式 查询投影 查询条件设定 字段映射与表名映射 4. DML控制 id自增策略控制(Insert) 多记录操作(Delete
ThreadLocal 详解【并发容器】
ThreadLocal 是什么?有哪些使用场景? ThreadLocal 是一个本地线程副本变量工具类,在每个线程中都创建了一个ThreadLocalMap 对象,简单说 ThreadLocal 就是一种以空间换时间的做法,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。通过这种方式,避免资源在多线程间共享。 原理:线程局部变量是局限于线程内部的变量,属于线程自身所有
【随手记录】关于Java字符串长度
在java当中,在运行期间,字符串的长度是有最大限制的:21亿,也就是4GB; 在编译期间,字符串的长度最大为:65534。 字符串的内容是由一个字符数组 char[] 来存储的,由于数组的长度及索引是整数,Integer的最大范围是2^31 -1,所以数组的最大长度可以使【0~2^31-1】通过计算是大概4GB = (2* 2^31 - 1) / (1024^3) 。 但是通过翻阅java虚拟机
金融用户敏感数据如何优雅地实现脱敏?
项目介绍 日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强,编写起来又特别麻烦。 sensitive 提供了基于注解的方式,并且内置了常见的脱敏方式,便于开发。 日志脱敏 为了金融交易的安全性,国家强制规定对于以下信息是要日志脱敏的: 用户名 手机号 邮箱 银行卡号 密码 身份证号 持久化加密 存储的时候上面的信息都需要加密,密码为不可逆加密,
Java并发之原子性、可见性和有序性
1.原子性 1.1 原子性的定义 原子性:原子性即是一个或者多个操作,要么全程执行,并且执行的过程中不被任何因素打断,要么全部不执行。 举个例子会更好理解:就像是我们去银行转账的时候,A给B转1000元,如果A的账户减少了1000之后,那么B的账户一定要增加1000。A的账户减钱,B的账户加钱,这两个操作就是原子操作,不会出现A的账户减钱,但B的账户没有加钱,A的账户没有减钱,B的账户加钱了这样的
【博学谷学习记录】超强总结,用心分享 | spark知识点总结2
【博学谷IT技术支持】 Action动作算子 reduce: 通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的 collect: 在驱动程序中,以数组的形式返回数据集的所有元素 count: 返回RDD的元素个数 first: 返回RDD的第一个元素(类似于take(1)) take: 返回一个由数据集的前n个元素组成的数据 takeSample:返回一个数组,该数组由从数
有JSDoc还需要TypeScript吗
这听起来是不是很耳熟:你想写一个小型脚本,不管是为页面、命令行工具,还是其他什么类型。你从JavaScript开始,直到你想起写代码时没有类型是多么痛苦。所以你把文件从.js重命名为.ts。然后意识到你已经打开了一个麻烦的玩意儿。 如果你在为一个网站或一个库写代码,你就需要引入编译的步骤。如果你在编写CLI脚本,你可以求助于Deno(它支持TypeScript,开箱即用),但是你需要设置你的IDE
Redis常用数据类型
一、Redis键(key) keys * 查看当前库所有key(匹配keys *1) exists key 判断某个key是否存在 type key 查看key类型 del key 删除key unlink key 根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除操作会在后续异步操作 expire