什么是NanoId nanoid库和uuid库一样都可以生成唯一识别码,但是nanoid相比uuid要更轻量级。 用法 可以引用下方的jar包,或者项目中直接自己创建工具类。 引用jar包的POM依赖如下: <dependency> <groupId>com.aventrix.jnanoid</groupId> <artifactId>jnanoid</artifactId> <version>2.0.0</version> <…
什么是NanoId nanoid库和uuid库一样都可以生成唯一识别码,但是nanoid相比uuid要更轻量级。 用法 可以引用下方的jar包,或者项目中直接自己创建工具类。 引用jar包的POM依赖如下: <dependency> <groupId>com.aventrix.jnanoid</groupId> <artifactId>jnanoid</artifactId> <version>2.0.0</version> <…
依赖 GraphQL相关依赖如下(SpringBoot2.X): <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>5.0.2</version> </dependency> <dependency> <groupId>com.…
背景 目前常用的实现动态配置日志级别的应该非SpringBoot的spring-boot-starter-actuator莫属了。 不过通过spring-boot-starter-actuator配置的日志级别,服务一旦重启就会恢复原状。且只能通过访问指定的接口来修改单个实例的日志级别(SpringBootAdmin也是一样,只能修改单个实例的)。如果是想修改某个服务所有实例的日志级别,只能修改配置文件,然后重启服务,可以说局限性稍微大点儿。 由于重启服务太费劲儿,所以想到了利用Apollo配置中心来动态修改日志级…
背景 本文仅是为了帮助入门新人了解什么是内存屏障、内存屏障都做了什么等基础问题,并无深入说明。 内存屏障的实现涉及大量硬件架构层面的知识,又需要操作系统或JVM的配合才能发挥威力,单纯从任何一个层面都无法理解。 如有疏漏,还望指正! 什么是内存屏障 内存屏障(Memory Barrier)是一个CPU指令。是硬件之上、操作系统或JVM之下,对并发作出的最后一层支持。再向下是是硬件提供的支持;向上是操作系统或JVM对内存屏障作出的各种封装。内存屏障是一种标准,各厂商可能采用不同的实现。 接下来大概说一下CPU缓存,作…
Spring Boot 2.5.0 发布:支持Java16、Gradle 7、Datasource初始化机制调整。 这次就简单说下重新设计的spring.sql.init 配置有啥用。 先来看看这次被弃用部分的内容(位于org.springframework.boot.autoconfigure.jdbc.DataSourceProperties),如果你有用过这些配置内容,那么新配置就很容易理解了。 /** * Mode to apply when determining if DataSource initia…
我们都知道top命令可以查看linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。 top对CPU时间片的分类如下: us:用户进程空间中未改变过优先级的进程占用CPU百分比 sy:内核空间占用CPU百分比 ni:用户进程空间内改变过优先级的进程占用CPU百分比 id:空闲时间百分比 wa:空闲&等待I/O的时间百分比 hi:硬中断时间百分比 si:软中断时间百分比 st:虚拟化时被其余VM窃取时间百分比 这8类分片中,除wa和id外,其余分片CPU都处于工作态。 因此判断用…
SQL规范性检查 select检查 UDF用户自定义函数 SQL语句的select后面使用了自定义函数UDF,SQL返回多少行,那么UDF函数就会被调用多少次,这是非常影响性能的。 #getOrderNo是用户自定义一个函数用户来根据order_sn来获取订单编号 select id, payment_id, order_sn, getOrderNo(order_sn) from payment_transaction where status = 1 and create_time between '2020-1…
前提 Python3 代码实现 #!/usr/bin/env python3 # -*- coding: UTF-8 -*- import pymysql db = pymysql.connect(**db_conf) cursor = db.cursor() cursor.execute(sql) # 最后插入行的主键id print(cursor.lastrowid) # 最新插入行的主键id print(conn.insert_id()) conn.commit() 注意 使用 cursor.lastrowi…
游标查询(scroll)简介 scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 游标查询会取某个时间点的快照数据。 查询初始化之后索引上的任何变化会被它忽略。 它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引 视图 一样。 启用游标查询可以通过在查询的时候设置参数 scroll 的值为我们期望的游标查询的过期时间。 游标查询的过期时间会在每次做查询的时候刷新,所以这个时间只需要足够处理当前批的结果就可以了,而不是处理查询结果的所有…
命令格式 jmap [ options ] pid jmap [ options ] executable core jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP 参数说明 pid:目标进程的PID,进程编号,可以采用ps -ef | grep java 查看java进程的PID; executable:产生core dump的java可执行程序; core:将被打印信息的core dump文件; remote-hostname-or-IP:…
山有木兮木有枝,心悦君兮君不知。
COPYRIGHT © 2025 lifengdi.com. ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang