08 2024 档案

摘要:JEXL(Java Expression Language,Java 表达式语言)是 Apache Commons 项目中的一个子项目,主要用于在 Java 应用程序中动态执行表达式。JEXL 使得将表达式动态嵌入到代码中变得更加容易和灵活,适用于规则引擎、模板引擎等场景。 https://blog 阅读全文
posted @ 2024-08-28 15:39 zhegeMaw 阅读(45) 评论(0) 推荐(0) 编辑
摘要:一、Base64编码 一种基于64个可打印字符来表示二进制数据的方法。目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。 说明:因为在参数传输的过程中经常遇到的一种情况是涉及到中文会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base6 阅读全文
posted @ 2024-08-28 11:35 zhegeMaw 阅读(16) 评论(0) 推荐(0) 编辑
摘要:ETL(Extract, Transform, Load)是数据处理工作的重要组成部分,即提取、转换、加载(从一个地方提取数据,通过转换,加载到另一个地方)。 通常可以使用SQL语句实现 阅读全文
posted @ 2024-08-27 20:07 zhegeMaw 阅读(15) 评论(0) 推荐(0) 编辑
摘要:人们常说,计算密集型程序的CPU密集程度更高。 那么,JAVA应用程序中的哪些操作更加CPU密集?以下列出了常见的CPU密集型操作: 1、频繁的GC; 如果访问量很高,可能会导致频繁的GC甚至FGC。当调用量很大时,内存分配将如此之快以至于GC线程将连续执行,这将导致CPU飙升。 2、序列化和反序列 阅读全文
posted @ 2024-08-27 20:03 zhegeMaw 阅读(12) 评论(0) 推荐(0) 编辑
摘要:\t是制表符,如果前面输出的内容是8的倍数,则\t将输出8个空格;如果不是,则补齐为8的倍数。 阅读全文
posted @ 2024-08-27 20:02 zhegeMaw 阅读(53) 评论(0) 推荐(0) 编辑
摘要:只将内容由源地址传输到目的地址,而不对业务数据内容做任何改变(不去关心buf中具体是什么样的数据,不用去解析buf中的具体内容) 例如:A的数据经过B传输给C,B“原封不动”传给C(不用管数据是什么,也不需要处理),就好像B是“透明”的一样。 https://www.jianshu.com/p/f5 阅读全文
posted @ 2024-08-27 20:01 zhegeMaw 阅读(37) 评论(0) 推荐(0) 编辑
摘要:#{ }:预编译 可以避免sql注入。 sql注入原理:在输入的参数中插入恶意代码,sql在编译时会直接将恶意代码和语句拼接到一起。 避免的原因:预编译会在编译时使用?占位,固定sql语句的结构,然后用传入参数替换掉?,此时会在传入的参数值两端加引号' ',这样传入的参数就视为字符串。 ${ }:占 阅读全文
posted @ 2024-08-27 20:00 zhegeMaw 阅读(18) 评论(0) 推荐(0) 编辑
摘要:一、基础知识 全双工、半双工和单工是通信系统中的三种数据传输模式,它们描述了数据在通信链路上的传输方式和方向。 全双工:数据可以同时在两个方向传输,双方可以同时发送和接收数据。这是双向通信最先进的模式,允许同时进行的双向交流。 半双工:数据可以在两个方向上传输,但不能同时进行。这意味着通信双方可以轮 阅读全文
posted @ 2024-08-27 16:54 zhegeMaw 阅读(30) 评论(0) 推荐(0) 编辑
摘要:一、状态码 2开头 (请求成功)表示成功处理了请求的状态代码。 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 201 (已创建) 请求成功并且服务器创建了新的资源。 202 (已接受) 服务器已接受请求,但尚未处理。 203 (非授权信息) 服务器已成功处理了请求 阅读全文
posted @ 2024-08-27 16:45 zhegeMaw 阅读(44) 评论(0) 推荐(0) 编辑
摘要:前端通过HTTP GET 请求向后端传递List类型参数。 方法一、直接以数组形式传递 id=[2,4,6] 后端:以数组类型接收,再转换为List类型。 // 请求URL http://127.0.0.1:8080/getTeachers?name=王五,刘麻子 // 后台接口代码 @RestCo 阅读全文
posted @ 2024-08-27 15:51 zhegeMaw 阅读(1329) 评论(0) 推荐(0) 编辑
摘要:/home 主目录 /Usr /opt 用户用来安装程序的目录,可以理解为 D:/Software /bin目录 二进制文件 bin为binary的缩写 /sbin目录 (系统管理用的)二进制文件 /tmp 临时文件夹;共享的目录,大家都能看见 /bin目录:主要放置一些 系统的必备执行文件 例如: 阅读全文
posted @ 2024-08-26 17:23 zhegeMaw 阅读(38) 评论(0) 推荐(0) 编辑
摘要:Caffeine 是java中的高性能本地缓存,提供了丰富的缓存功能。Caffeine 的目标是提供一个高吞吐量、低延迟、并发友好的缓存实现。 特点 高性能:Caffeine 是基于内存的本地缓存,访问速度非常快,并且在高并发环境下表现优秀。 低延迟:由于数据直接存储在应用程序的本地内存中,访问延迟 阅读全文
posted @ 2024-08-21 00:27 zhegeMaw 阅读(61) 评论(0) 推荐(0) 编辑
摘要:redis是基于内存的高速缓存,NoSQL数据库。 缓存,是处理数据库性能问题的最常见策略之一。将数据库查询的结果保存在更快,更容易访问的位置(如内存)。将减少查询响应时间,减少数据库负载并降低成本。 概念 category:存储类别,用于指定某一类存储数据,可以类比的理解为数据库中的一张表,具有统 阅读全文
posted @ 2024-08-21 00:03 zhegeMaw 阅读(20) 评论(0) 推荐(0) 编辑
摘要:一、Join 联合查询 用来从两个或多个表中查询数据,分为: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配的记录。 LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录, 阅读全文
posted @ 2024-08-20 20:00 zhegeMaw 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、数据库性能影响因素 数据量 MySQL单库数据量在5000万以内性能比较好,超过阈值后性能会随着数据量的增大而变弱。MySQL单表的数据量是500w-1000w之间性能比较好,超过1000w性能也会下降(因为表数据为1000万时建立的索引如果是B+Tree类型的话一般树高在3~5之间,所以查询的 阅读全文
posted @ 2024-08-20 19:50 zhegeMaw 阅读(19) 评论(0) 推荐(0) 编辑
摘要:分析SQL查询语句的执行情况,只能解释select操作。 常用字段 select_type——查询中每个select子句的类型 SIMPLE:表示简单查询(不使用联合查询或子查询) PRIMARY:如果包含关联查询或自查询,则表示最外层的查询语句; UNION:表示联合查询的第2个或后面的查询语句; 阅读全文
posted @ 2024-08-20 00:33 zhegeMaw 阅读(11) 评论(0) 推荐(0) 编辑
摘要:相当于目录,用于提高查询速度。 绝大多数情况下,数据库表都应该创建索引,避免去遍历整张表,也就是通常说的,避免全表扫描。 每次新增数据库属性时,评估一下是否需要新建索引 一、索引介绍 INDEX和KEY 介绍索引之前,先说下index和key的区别: index:索引,负责维护表的查找和操作速度。有 阅读全文
posted @ 2024-08-19 20:09 zhegeMaw 阅读(15) 评论(0) 推荐(0) 编辑
摘要:部分场景需要动态创建表,例如根据用户输入的表名动态创建。动态创建表可以使用xml方式来实现,具体步骤如下: 1、service层:中调用mapper里的createTable方法 itemMapper.createItemTable(tableName, VARCHAR_256); 2、DAO层:m 阅读全文
posted @ 2024-08-18 23:14 zhegeMaw 阅读(56) 评论(0) 推荐(0) 编辑
摘要:本文给出mysql中常用的数据类型说明。 数值 类型 说明 表示范围 占用字节 备注 tinyint(n) 非常小的整数,n最大取值4(n表示显示宽度) -128到127 1字节 1字节=8bit,存储范围0-255(2的8次方) int(n) 整数,n最大取值11(显示宽度) -214748364 阅读全文
posted @ 2024-08-16 15:10 zhegeMaw 阅读(18) 评论(0) 推荐(0) 编辑
摘要:MySQL是关系型数据库,是单进程多线程模型,一个SQL语句无法利用多个cpu core去执行,这也就决定了MySQL比较适合OLTP(特点:大量用户访问、逻辑读,索引扫描,返回少量数据,SQL简单)业务系统 数据库设计 项目开发过程中进行数据库表设计,可以按照以下思路: 1、数据库选型 关系型数据 阅读全文
posted @ 2024-08-16 14:19 zhegeMaw 阅读(32) 评论(0) 推荐(0) 编辑
摘要:分布式搜索引擎,用于全文搜索、日志分析等。 概念 集群(数据库):一个ES集群可以由一个或者多个节点(nodes)组成。所有这些节点用来存储所有的数据以及提供联合索引,提供跨节点查询的能力。 索引(表):一个索引是一组具有相似特性的文档的集合。在存储结构上由 _index,_type 和 _id 唯 阅读全文
posted @ 2024-08-16 12:01 zhegeMaw 阅读(14) 评论(0) 推荐(0) 编辑
摘要:@Valid —— Bean Validation定义 @Validated —— Spring Validation定义 分组 无分组功能 提供分组功能,可在入参验证时,根据不同的分组采用不同的验证机制。 嵌套验证 用在方法入参上无法单独提供嵌套验证功能。 能够用在成员属性上,提示验证框架进行嵌套 阅读全文
posted @ 2024-08-16 01:20 zhegeMaw 阅读(139) 评论(0) 推荐(0) 编辑
摘要:正则表达式说明 ^string : 匹配以 string 开头的字符串 string$ :匹配以 string 结尾的字符串 ^string$ :精确匹配 string 字符串 (^Man$|^Woman$|^UGM$) : 值只能在 Man,Woman,UGM 这三个值中选择 + 号代表前面的字符 阅读全文
posted @ 2024-08-16 00:36 zhegeMaw 阅读(11) 评论(0) 推荐(0) 编辑
摘要:实体类 @Data:注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法 @AllArgsConstructor 添加一个全参构造函数 @NoArgsConstructor 创建一个无参构造函数 构造函数:初始化对象,为对象成员变量赋初始值。 Us 阅读全文
posted @ 2024-08-16 00:31 zhegeMaw 阅读(17) 评论(0) 推荐(0) 编辑
摘要:项目搭建 IDEA搭建Springboot项目 Spring Boot的基础结构 src/main/java :项目的Java源代码存放目录 HelloSpringbootApplication :项目的主文件 resources:用于存放项目的资源文件 resources/static:用于存放项 阅读全文
posted @ 2024-08-15 23:51 zhegeMaw 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、实体层 别名: model层 ,domain层,entity层用途: 用于存放实体类,与数据库中的属性值基本保持一致,实现set和get的方法。 二、mapper层 别名: dao层用途: 对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis 阅读全文
posted @ 2024-08-15 23:49 zhegeMaw 阅读(546) 评论(0) 推荐(0) 编辑
摘要:lambda表达式就是用来替换函数,简化代码的。 1、什么时候可以用? 有函数式接口时,才可以替换。 2、怎么用? 直接用lambda表达式替换相应函数。Lambda表达式就是函数的简写,允许把函数作为参数传递进方法中。 // lambda表达式和stream一起使用 List<String> li 阅读全文
posted @ 2024-08-15 01:24 zhegeMaw 阅读(7) 评论(0) 推荐(0) 编辑
摘要:事务是一组原子操作单元,要么全部执行成功,要么撤销不执行。 一、事务概念 1.1 数据库中的事物 数据库事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。 事 阅读全文
posted @ 2024-08-15 01:07 zhegeMaw 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一、获取文件大小 1、通过file的length()方法获取; 二、文件大小转换 bytes--> KB,MB,GB,TB /** * 转换文件大小 */ public static String formatFileSize(long fileSize) { DecimalFormat df = 阅读全文
posted @ 2024-08-15 00:52 zhegeMaw 阅读(5) 评论(0) 推荐(0) 编辑
摘要:概念 IO:我们把输入和输出的动作成为IO操作,以内存为中心。 把外部数据读入到内存,称为输入(读)Input操作。 例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。 把数据从内存输出到外部,称为输出(写)Output操作。例如,把数据从内存写入到文件,把数据从内存输出到网络等等。 电脑上的 阅读全文
posted @ 2024-08-15 00:28 zhegeMaw 阅读(7) 评论(0) 推荐(0) 编辑
摘要:工具类 IOUtils.copy() IOUtils.toString(): 可以将输入流转为String Files.readAllBytes(Paths.get(fileUri)) 从本地读取文件到内存。 / FileUtils.readFileToByteArray(new File(path 阅读全文
posted @ 2024-08-13 10:36 zhegeMaw 阅读(5) 评论(0) 推荐(0) 编辑
摘要:互联网的应用场景中,为了支持高并发的请求,服务都是执行的分布式部署(相同的任务可以在集群中不同的服务器上执行)并且现在的服务容器都是支持多线程,相同的任务也可能会被同一个容器多次执行,都要求执行结果都满足幂等性的设计原则。 分布式锁,就是为了确保在分布式的环境下,相同任务只会执行成功的执行一次,后续 阅读全文
posted @ 2024-08-13 01:26 zhegeMaw 阅读(9) 评论(0) 推荐(0) 编辑
摘要:select …… for update 是一种分布式锁,为了在查询时,避免其他用户以该表进行增、删、改等操作,造成表的不一致性。一般不加数据库锁,比较重(太底层,影响广泛),可以使用分布式锁 / sychorized / Lock。 一、例子 select status from t_goods 阅读全文
posted @ 2024-08-13 01:22 zhegeMaw 阅读(85) 评论(0) 推荐(0) 编辑
摘要:https://tech.meituan.com/2018/11/15/java-lock.html 阅读全文
posted @ 2024-08-13 01:19 zhegeMaw 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1、redis自增 2、同步代码块 3、原子类 AtomicInteger LongAdder :是JDK8添加到JUC中的。它是一个线程安全的、比Atomic*系工具性能更好的"计数器"。 3.1 AtomicInteger 线程安全地并发增加数值。 3.2 LongAdder 是AtomicLo 阅读全文
posted @ 2024-08-13 01:16 zhegeMaw 阅读(9) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/manzhizhen/article/details/81413014 1、信号量Semaphore 2、线程池 3、计数器AtomicInteger 4、阻塞队列 阅读全文
posted @ 2024-08-13 01:14 zhegeMaw 阅读(5) 评论(0) 推荐(0) 编辑
摘要:一、什么时候会出现线程安全问题? 无线程安全问题: 1、在单线程中不会出现线程安全问题 2、java领域的线程安全问题,通常是全局变量或静态变量引起的,若每个线程对共享变量只有读操作,一般来说该变量是线程安全的,若有写操作,则需要考虑线程安全问题。 3、当多个线程执行一个方法,方法内部的局部变量并不 阅读全文
posted @ 2024-08-13 01:00 zhegeMaw 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1、Object类 在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐 阅读全文
posted @ 2024-08-12 14:21 zhegeMaw 阅读(11) 评论(0) 推荐(0) 编辑
摘要:static可以用来修饰 类 /方法/ 类变量/ static代码块 。 从JVM的类加载机制的角度讲,静态资源是类初始化的时候加载的,而非静态资源是类new的时候加载的。 一、static类/方法/变量 static修饰类 static修饰方法 静态方法,方法是属于类的,可以通过类名.方法名访问。 阅读全文
posted @ 2024-08-12 00:40 zhegeMaw 阅读(157) 评论(0) 推荐(0) 编辑
摘要:synchronized关键字来保证线程安全的,被sychronized锁住的代码部分,同一时刻只能有一个线程可以访问,其他线程会block(同一个对象内,不同对象间不会影响)。由于synchronized的机制是在同一时刻只能有一个线程操作,其他的线程阻塞或者轮询等待,在线程竞争激烈的情况下,这种 阅读全文
posted @ 2024-08-09 17:35 zhegeMaw 阅读(6) 评论(0) 推荐(0) 编辑
摘要:用于指代当前对象的实例。 使用方式 1、指代成员变量 同一类中,成员变量和方法内的局部变量重名时,用来在方法中指代成员变量 public class Demo{ public String name; public int age; //成员变量 public Demo(String name, i 阅读全文
posted @ 2024-08-09 16:58 zhegeMaw 阅读(10) 评论(0) 推荐(0) 编辑
摘要:volatile关键字可以用于修饰变量。它的作用是保证并发操作时数据的可见性和顺序性。 使用场景 多线程时的可见性:如果多个线程并发地访问同一个变量,那么在一个线程中修改了变量值后,其他线程能够立刻看到变量的变化。但是使用volatile关键字不能保证线程安全,还需要使用synchronized关键 阅读全文
posted @ 2024-08-09 16:39 zhegeMaw 阅读(14) 评论(0) 推荐(0) 编辑
摘要:判断对象是否为给定类型的实例(即对象是否为给定类型),返回 boolean 的数据类型。 public static void displayObjectClass(Object o) { if (o instanceof Vector) System.out.println("对象是 java.u 阅读全文
posted @ 2024-08-09 16:36 zhegeMaw 阅读(7) 评论(0) 推荐(0) 编辑
摘要:final关键字可以用来修饰 类、方法、变量(包括成员变量和局部变量) 修饰类 表明这个类不能被继承。 final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。 修饰方法 表明该方法在子类中不能被重写。 使用final方法的原因有两 阅读全文
posted @ 2024-08-09 16:09 zhegeMaw 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一、基本类型 1.1 基本类型-->String 1、.toString() 最快;存在NPE 2、String.valueOf() 次之;无NPE(底层实现中会先判断是否为null,再.toString()) 1.2 String-->基本类型 Integer.parseInt()? 二、byte 阅读全文
posted @ 2024-08-09 01:40 zhegeMaw 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一、字符串判空 字符串为null 或' '时返回true。 1.1 常用方法 str == null || str.length() < 1 String提供的 str == null || str.isEmpty() String提供的 StringUtils.isEmpty(str) Strin 阅读全文
posted @ 2024-08-09 01:30 zhegeMaw 阅读(60) 评论(0) 推荐(0) 编辑
摘要:一、String类 String类是不可变类,即String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。 二、StringBuffer 和 StringBuilder 类 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类 阅读全文
posted @ 2024-08-09 01:11 zhegeMaw 阅读(4) 评论(0) 推荐(0) 编辑
摘要:一、字符数组 char[] 也可以创建字符串 二、格式化字符串 // 1、format方法 String.format("Hello, %s! You have %d new messages.", "Alice", 5); %s - 字符串 %d - 十进制整数 %f - 浮点数 %x - 十六进 阅读全文
posted @ 2024-08-09 01:00 zhegeMaw 阅读(72) 评论(0) 推荐(0) 编辑
摘要:一、获取key和value 获取key:map.keySet(),获取map中所有的key,返回一个Set集合存储所有的键; 获取value:Map.values()或者map.entrySet() Map.values(),方法用来获取 Map 集合中的所有value,将值存放在一个Set集合中 阅读全文
posted @ 2024-08-09 00:32 zhegeMaw 阅读(26) 评论(0) 推荐(0) 编辑
摘要:一、实现类 ArrayList:数组,查询快 LinkedList:链表,增删快 二、常用方法 List常用方法 三、声明、初始化、赋值 List<String> strList; 此时list为声明状态,不可以使用System.out.println();直接输出,不能使用isEmpty()等方法 阅读全文
posted @ 2024-08-09 00:26 zhegeMaw 阅读(39) 评论(0) 推荐(0) 编辑
摘要:必须 统一类名后缀 01 接口和实现类: 通常接口:名词。 CacheServiceImpl实现CacheService接口 / CacheServie实现ICache接口 形容能力的接口:形容词,通常是able。 AbstractTranslator实现Translatable接口 02 POJO 阅读全文
posted @ 2024-08-06 23:59 zhegeMaw 阅读(17) 评论(0) 推荐(0) 编辑
摘要:日志在开发中必不可少,方便记录代码执行过程、排查问题。下面是两种日志的使用 1、日志切面:通过切面记录请求参数和响应结果 2、log日志:记录正常信息(log.info),错误信息(log.error、log.warn) 1、日志切面 package com.xxx.datamanager.aop; 阅读全文
posted @ 2024-08-02 15:22 zhegeMaw 阅读(14) 评论(0) 推荐(0) 编辑
摘要:复杂值配置,可以使用配置文件,即@ConfigurationProperties;简单值推荐使用@Value。 1、配置文件编写 在配置文件admin.properties中配置参数 admin.mis[0]=zhangsan admin.mis[1]=lisi 2、配置文件读取 在config.p 阅读全文
posted @ 2024-08-02 00:09 zhegeMaw 阅读(13) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示