- 博客(69)
- 资源 (6)
- 收藏
- 关注
原创 基于 Redis 的 分布式 ID 生成器
基于 Redis 的 分布式 ID 生成器,通过 Redis 分发 ID 号段实现分布式生成;通过 Hashid 算法实现固定长度的 62 位编码的 ID 字符串,可用于短链 Key 的生成
2023-12-26 08:58:51 559
原创 考虑排序值相同的情况下取前几名数据工具
考虑排序值相同的情况下取前几名数据工具1. 数据:[1,2,3,3,3,4,5] a. 取前 3 名返回:[1,2,3,3,3] b. 取前 4 名返回:[1,2,3,3,3]2. 数据:[1,2,3,4,5] a. 取前 3 名返回:[1,2,3] b. 取前 4 名返回:[1,2,3,4]3. 数据:[5,4,3,2,1] a. 取前 3 名返回:[1,2,3] b. 取前 4 名返回:[1,2,3,4]
2022-09-16 21:23:44 167
原创 MySQL 大表分批次更新存储过程
DROP PROCEDURE IF EXISTS big_table_update;CREATE PROCEDURE big_table_update()BEGIN DECLARE v_primary_key_start, v_primary_key_end BIGINT(20) DEFAULT 0; DECLARE v_update_limit INT(10) DEFAULT 50000; # 异常捕获 DECLARE v_error_code CHAR(5) DEF
2021-08-23 20:52:09 1403
原创 Spring 手动管理事务
import com.neo.model.pojo.product.online.ProductOnline;import com.neo.repository.product.online.ProductOnlineMapper;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.datasourc
2021-08-05 14:24:49 980
原创 MySQL 查询各个班级语文成绩最高的学生信息
需求如下:查询各个班级语文成绩最高的学生成绩如果语文成绩相同则取 id 最大的记录表内数据查询SQLSELECT s1.id, s1.class, s1.name, s1.chinese, s1.mathFROM score s1WHERE EXISTS(SELECT 1FROM (SELECT MAX(temp2.id) 'id'FROM (SELECT s2.class, s2.idFROM score s2INNER JOIN (SELECT s3.class, M.
2021-07-15 16:04:34 5039
原创 基于MySQL8.0 官方的关键字整理
为了保持整洁和实用,此处对官方给出的关键字做了以下处理:ACCESSIBLE ® 去除 (R)ACTIVE; added in 8.0.14 (nonreserved) 去除 ; 号后面的文字参考的官方地址:https://dev.mysql.com/doc/refman/8.0/en/keywords.html另整理了一份关键字的数据库脚本:https://download.csdn.net/download/after95/20097607附上关键字检查SQLSELECT inf.
2021-07-09 11:15:20 1498
原创 Docker常用命令
帮助命令docker version # 显示 docker 的版本信息docker info # 显示 docker 的详细信息docker [命令] --help # 万能帮助命令Docker 官网帮助文档:https://docs.docker.com/reference/镜像命令docker images 查看镜像信息➜ ~ docker imagesREPOSITORY TAG IMAGE ID CREATED
2021-07-04 16:41:36 643 2
原创 IDEA初始化配置
Mavensetting.xml 配置阿里云镜像<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>Encod
2021-06-25 22:49:54 191
原创 IDEA 使用 Maven 下载源码时提示 Cannot download sources
在终端执行如下命令:mvn dependency:resolve -Dclassifier=sourcesmvn dependency:resolve -Dclassifier=documents
2021-06-24 21:45:11 672 2
原创 Windows 系统 Kafka-0.10.0.1 源码阅读环境搭建
依赖的环境和工具确保下载的工具版本与下面列举的一致,已经踩过坑了jdk 1.8 自行下载并配置zookeeper-3.4.9 : https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gzscala-2.10.6 : https://downloads.gradle-dn.com/distributions/gradle-3.1-bin.zipgradle-3.1 : https://dow
2021-06-24 14:12:01 470 3
原创 只展示姓的姓名脱敏,针对复姓做特殊处理
import com.google.common.collect.ImmutableList;import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;import java.util.List;/** * 名字处理工具类 * * @author Neo * @version 1.0 * @since 2021/6/18 16:54 */public class NameUtils { .
2021-06-21 09:29:46 1871 2
原创 Properties 文件差异比较工具
import cn.hutool.core.io.FileUtil;import lombok.Builder;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.apache.commons.collections4.CollectionUtils;import org.apache.commons.lang3.StringUtils;import java.nio.charset.StandardCharsets;
2021-06-17 13:14:01 564
原创 Git 分支管理
Git 分支管理在企业级项目开发中,经常会多版本多分支并行开发,常用的版本管理工具Git 也就成了开发人员必备的工作技能,下面我就来分享一下我们日常工作中是如何进行分支管理的,并且会有几个例子带大家了解一下首先如图所示开发的主分支有三个,分别是:master、gray、daily日常我们需要用到的分支是 daily示例一现有一个小需求,项目负责人将需求分给张三一个人开发,张三接到需求后进行了以下操作:将本地分支切换到 daily ,并从远程pull最新的daily分支从本地的da
2021-06-01 22:35:20 233
原创 Easy Code 模板
这是一套基于MyBatis Plus 的模板,mapper.xml 仅生成 resultMap、columnSql、whereSql、updateSqlentity.java##引入宏定义$!define##使用宏定义设置回调(保存位置与文件后缀)#save("/entity", ".java")##使用宏定义设置包后缀#setPackageSuffix("entity")##使用全局变量实现默认包导入$!autoImportimport java.io.Serializabl.
2021-04-09 16:41:11 654
原创 手机号银行卡格式化
格式化方法/** * 指定位置插入符号 * * insert("1223334444", "-", Boolean.FALSE, 1, 2, 3) ===> "1-22-333-4444" * insert("1223334444", "-", Boolean.TRUE, 1, 2, 3, 5) ===> "1-22-333-4444-" * * @param string 待处理字符串 * @param symbol 待插
2021-02-26 15:02:35 244
原创 Java 万物皆可 Tree 工具类
ITree - 树数据接口import java.util.List;/** * 树数据接口 * * @author: Neo * @date: 2021/1/4 14:24 * @version: 1.0 */public interface ITree<T, K> { /** * 节点ID * * @return */ K id(); /** * 父节点ID * * @r
2021-01-04 17:20:44 4313
原创 自定义序列化配置
以时间格式序列化为例import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.DeserializationContext;import com.fasterxml.jackson.databind.JsonDeserializer;import com.fasterxml.jackson.d.
2021-01-04 14:20:51 194
原创 枚举字典管理器
枚举字典管理器后端通常需要为了不使用魔法值而去定义枚举类,而枚举类又经常需要被当做数据字典传给前端。次套解决方案就是为了解决枚举值的统一管理的问题,枚举类只要实现 EnumService接口,就可以集成这套方案。EnumDictionary - 数据字典对象package com.neo.common.enums;import java.io.Serializable;/** * 数据字典对象 * * @author: Neo * @date: 2021/1/1 20:10 *
2021-01-01 21:45:26 1279
原创 Java 数据脱敏工具类
数据脱敏工具类DesensitizationUtils.javaimport org.apache.commons.lang3.StringUtils;import java.util.Objects;/** * 数据脱敏工具类 * * @Author: Neo * @Date: 2020/8/19 16:21 * @Version: 1.0 */public class DesensitizationUtils { /** * 默认填充字符 */
2020-08-19 17:59:36 2066
原创 Logstash 从mysql批量加载数据
logstash 版本:7.5配置logstash-sample.confinput { jdbc { jdbc_driver_library => "./logstash-7.5.0/logstash-core/lib/jars/mysql-connector-java-5.1.36.jar" jdbc_driver_class => ...
2020-04-02 17:30:08 473
原创 六、Elasticsearch 实战
基于groovy脚本进行partial update造数据PUT /test_index/test_type/11{ "num":0, "tags":[]}内部脚本POST /test_index/test_type/11/_update{ "script": "ctx._source.num+=1"}外部脚本5.x 支持外部脚本,目录:elasticseac...
2020-03-31 13:23:04 156
原创 五、Elasticsearch 分布式文档系统
核心元数据解析数据示例GET /test_index/test_type/1{ "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 1, "_seq_no": 0, "_primary_term": 2, "found": true, "...
2020-03-31 13:20:08 148
原创 四、Elasticsearch 基础分布式架构
Elasticsearch 是一套分布式的系统,分布式是为了应对大数据量Elasticsearch 对复杂分布式机智的透明隐藏特性分片机制cluster discovery(集群发现机制)shard 负载均衡shard 副本Elasticsearch 垂直扩容和水平扩容假设共有6台服务器,每台服务器1T容量。现在数据即将增加到8T,此时有下面量方案:垂直扩容:重新购置...
2020-03-31 13:16:02 136
原创 三、Elasticsearch 简单数据分析
先将文本 field 的 fielddata 属性设置为 true- Elasticsearch 5.x 版本写法PUT /ecommerce/_mapping/product- Elasticsearch 7.x 版本写法PUT /ecommerce/_mapping/product?include_type_name=true{ "properties": { ...
2020-03-31 13:13:00 640
原创 二、Elasticsearch 六种搜索方式
Elasticsearch 六种搜索方式查询结果解释took - 耗费多少毫秒time_out - 是否超时_shards - 数据分片情况hits.total - 查询结果的数量hits.max_score - document 对于一个 search 的相关度匹配分数,越相关分数越高hits.hits - 匹配 document 的详细数据query string se...
2020-03-26 17:35:45 842 2
原创 一、Elasticsearch 7 入门
Elasticsearch 7 入门安装(开箱即用)window 安装下载并解压:elasticsearch官方下载:https://www.elastic.co/cn/downloads/elasticsearch链接:https://pan.baidu.com/s/1zIqXPQr4yAhHSHKZF-mQJg提取码:ecbj启动:/bin/elasticsearc...
2020-03-26 17:34:38 282
原创 Java 监控线程池所有任务是否执行完毕
Java 监控线程池所有任务是否执行完毕场景引入在最近的工作中遇到一个需要批量生产百万数据并写入数据库的需求,先通过单线程的方式去实现,但是感觉效率一般,然后通过多线程的方式去改进,但是遇到下面的问题:生成数据的时候,每生成一条数据,就将数据丢入到集合中进行缓存,当集合中的数据量达到 500 的时候,就进行一次数据库写入操作,并清空集合。那么当我生成的数据量为 1200 的时候,就会出现...
2019-12-19 21:42:55 3468
原创 Java 比较两个对象属性的不同
Java 比较两个对象属性的不同Java 比较两个对象属性的不同定义类型处理接口:`TypeProcessHandle.java`定义三个类型处理实现类,如有其它特殊需求也可实现`TypeProcessHandle`接口进行拓展定义必要的注解类:`Property.java`使用两个其它工具类创建:`BuilderDifferenceInfoHandle.java`测试创建测试Bean:`Test...
2019-12-13 15:49:36 1966
原创 Java 反射动态获取和修改注解值
Java 反射动态获取和修改注解值Java 反射动态获取和修改注解值创建自定义注解:`TargetAnnotation.java`创建自定义注解:`Property.java`创建测试Bean:`Bean.java`测试测试结果Java 反射动态获取和修改注解值目的:通过注解 TargetAnnotation 的配置,动态获取和修改注解 Property 值创建自定义注解:TargetA...
2019-12-13 11:36:11 1403
原创 Guava 布隆过滤器使用
Guava 布隆过滤器使用注意由于布隆过滤器可能存在一定的误判,当调用 mightContain 方法时:如果返回 true ,则此元素可能存在过滤器中,实际生产中可能需要根据具体业务进一步判断;如果返回 false ,则此元素一定不在过滤器中实例import com.google.common.hash.BloomFilter;import com.google.common....
2019-09-24 18:22:00 1112
原创 Java 8 常用 Lambda 表达式汇总
Java 8 常用 Lambda 表达式汇总集合操作List<Person> list = Lists.newArrayList( new Person( "张三", 20, new BigDecimal("15000")), new Person( "李四", 23, new BigDecimal("20000"))...
2019-09-24 16:47:43 900
原创 三、MySQL 索引优化
索引优化一、索引类型1. B-Tree 索引特点a).B-Tree 索引能够加快数的查询速度b).B-Tree 索引以B+树的结构存储数据:每一个叶子节点到根部的距离相同InnoDB引擎指针指向被索引的数据而不是主键,MyISAM引擎指针指向物理地址顺序存储,适合进行范围查找何时命中全值匹配的查询order_no = ‘20190825102500001’匹...
2019-09-23 22:37:59 195
原创 二、MySQL 物理设计
物理设计一、定义数据库、表及字段的命名规范数据库、表及字段的命名要遵守可读性原则、表意性原则、长名原则二、选择合适的存储引擎存储引擎事务锁粒度主要应用忌用InnoDB支持支持MVCC的行级锁事务处理无MyISAM不支持支持并发插入的表级锁select、insert读写操作频繁MRG_MyISAM不支持支持并发插入的表级锁分段...
2019-09-23 22:36:51 360
原创 一、MySQL 存储引擎
MySQL存储引擎一、MyISAM1.概要1.MySQL5.5 之前版本默认存储引擎2.多用于系统表和临时表(在排序、分组等操作中,当数量超过一定的大小后,由查询优化器建立的临时表)3.存储 MYD:保存表的数据 MYI:保存表的索引文件2.特性a).并发性与锁级别:使用表级锁而非行级锁,读取和写入互斥,读写并发性能比较弱b).不支持事物、不具备AICD特性:原子...
2019-09-23 22:35:43 164
原创 MySQL 存储过程执行动态拼接SQL
1.该注意的点都在存储过程代码中已经说明DROP PROCEDURE IF EXISTS init_test_transfer_data;CREATE PROCEDURE init_test_transfer_data()BEGIN DECLARE v_i INT DEFAULT 1; DECLARE v_limit INT DEFAULT 100000; # 对...
2019-08-17 23:51:12 6453
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人