随笔分类 - 常用
摘要:分布式搜索引擎,用于全文搜索、日志分析等。 概念 集群(数据库):一个ES集群可以由一个或者多个节点(nodes)组成。所有这些节点用来存储所有的数据以及提供联合索引,提供跨节点查询的能力。 索引(表):一个索引是一组具有相似特性的文档的集合。在存储结构上由 _index,_type 和 _id 唯
阅读全文
摘要:@Valid —— Bean Validation定义 @Validated —— Spring Validation定义 分组 无分组功能 提供分组功能,可在入参验证时,根据不同的分组采用不同的验证机制。 嵌套验证 用在方法入参上无法单独提供嵌套验证功能。 能够用在成员属性上,提示验证框架进行嵌套
阅读全文
摘要:正则表达式说明 ^string : 匹配以 string 开头的字符串 string$ :匹配以 string 结尾的字符串 ^string$ :精确匹配 string 字符串 (^Man$|^Woman$|^UGM$) : 值只能在 Man,Woman,UGM 这三个值中选择 + 号代表前面的字符
阅读全文
摘要:实体类 @Data:注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法 @AllArgsConstructor 添加一个全参构造函数 @NoArgsConstructor 创建一个无参构造函数 构造函数:初始化对象,为对象成员变量赋初始值。 Us
阅读全文
摘要:项目搭建 IDEA搭建Springboot项目 Spring Boot的基础结构 src/main/java :项目的Java源代码存放目录 HelloSpringbootApplication :项目的主文件 resources:用于存放项目的资源文件 resources/static:用于存放项
阅读全文
摘要:一、实体层 别名: model层 ,domain层,entity层用途: 用于存放实体类,与数据库中的属性值基本保持一致,实现set和get的方法。 二、mapper层 别名: dao层用途: 对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis
阅读全文
摘要:lambda表达式就是用来替换函数,简化代码的。 1、什么时候可以用? 有函数式接口时,才可以替换。 2、怎么用? 直接用lambda表达式替换相应函数。Lambda表达式就是函数的简写,允许把函数作为参数传递进方法中。 // lambda表达式和stream一起使用 List<String> li
阅读全文
摘要:事务是一组原子操作单元,要么全部执行成功,要么撤销不执行。 一、事务概念 1.1 数据库中的事物 数据库事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。 事
阅读全文
摘要:一、获取文件大小 1、通过file的length()方法获取; 二、文件大小转换 bytes--> KB,MB,GB,TB /** * 转换文件大小 */ public static String formatFileSize(long fileSize) { DecimalFormat df =
阅读全文
摘要:概念 IO:我们把输入和输出的动作成为IO操作,以内存为中心。 把外部数据读入到内存,称为输入(读)Input操作。 例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。 把数据从内存输出到外部,称为输出(写)Output操作。例如,把数据从内存写入到文件,把数据从内存输出到网络等等。 电脑上的
阅读全文
摘要:工具类 IOUtils.copy() IOUtils.toString(): 可以将输入流转为String Files.readAllBytes(Paths.get(fileUri)) 从本地读取文件到内存。 / FileUtils.readFileToByteArray(new File(path
阅读全文
摘要:互联网的应用场景中,为了支持高并发的请求,服务都是执行的分布式部署(相同的任务可以在集群中不同的服务器上执行)并且现在的服务容器都是支持多线程,相同的任务也可能会被同一个容器多次执行,都要求执行结果都满足幂等性的设计原则。 分布式锁,就是为了确保在分布式的环境下,相同任务只会执行成功的执行一次,后续
阅读全文
摘要:select …… for update 是一种分布式锁,为了在查询时,避免其他用户以该表进行增、删、改等操作,造成表的不一致性。一般不加数据库锁,比较重(太底层,影响广泛),可以使用分布式锁 / sychorized / Lock。 一、例子 select status from t_goods
阅读全文
摘要:https://tech.meituan.com/2018/11/15/java-lock.html 1、乐观锁、悲观锁 乐观锁:认为冲突不会发生,因此在访问数据时不加锁,只有在修改时才验证数据是否被修改过。 应用场景:读多写少。不加锁,可以提升性能。 问题:高并发写的场景下,会频繁失败并重试,非常
阅读全文
摘要:1、redis自增 2、同步代码块 3、原子类 AtomicInteger LongAdder :是JDK8添加到JUC中的。它是一个线程安全的、比Atomic*系工具性能更好的"计数器"。 3.1 AtomicInteger 线程安全地并发增加数值。 3.2 LongAdder 是AtomicLo
阅读全文
摘要:本文的数据同步问题指的是mysql与redis之间的数据一致性问题。对于主从机器之间的数据同步问题分别查看mysql/redis。 数据一致性问题 MySQL 和 Redis 通常一起使用构成缓存系统(MySQL 作为持久层,Redis 作为缓存层),这就涉及到两者之间数据同步,当遇到网络延迟、服务
阅读全文
摘要:https://blog.csdn.net/manzhizhen/article/details/81413014 1、信号量Semaphore 2、线程池 3、计数器AtomicInteger 4、阻塞队列
阅读全文
摘要:一、什么时候会出现线程安全问题? 无线程安全问题: 1、在单线程中不会出现线程安全问题 2、java领域的线程安全问题,通常是全局变量或静态变量引起的,若每个线程对共享变量只有读操作,一般来说该变量是线程安全的,若有写操作,则需要考虑线程安全问题。 3、当多个线程执行一个方法,方法内部的局部变量并不
阅读全文
摘要:1、Object类 在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐
阅读全文
摘要:static可以用来修饰 类 /方法/ 类变量/ static代码块 。 从JVM的类加载机制的角度讲,静态资源是类初始化的时候加载的,而非静态资源是类new的时候加载的。 一、static类/方法/变量 static修饰类 static修饰方法 静态方法,方法是属于类的,可以通过类名.方法名访问。
阅读全文

浙公网安备 33010602011771号