- 博客(47)
- 资源 (1)
- 收藏
- 关注
原创 最常见的树结构,遍历&筛选
一下所有都是基于没有维护节点路径的,如果你维护了treePath,所有的操作都会非常节点存储:我们以最简单的表设定id # 节点id name # 节点名 parentId # 父id节点对象:如果有其他的属性,集成这个基础的节点对象就好了。@Datapublic class BaseTreeNode { private Long id; private Long parentId; private Stri...
2022-05-07 22:17:09
683
原创 find 命令
使用linux 自带的文档是最全的,查看文档 man findFIND(1) General Commands Manual FIND(1)NAME find - search for fi
2022-01-26 22:46:00
271
原创 树行结构数据如何优雅的复制整个树
t场景:在开发中经常使用树形结构来组织数据,而在业务中长长出现复制的操作。通常我们复制只修改了用户id,而其他字段都不变变。那么将一棵较大的树复制呢?表结构如下:-- 用例库表CREATE TABLE `venus_case_library` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` varchar(100) DEFAULT NULL COMMENT '用例库名', `type` tinyint(4)...
2022-01-12 22:30:22
1798
2
原创 spring cloud stream
概念:spring cloud stream 是一个集成消息中间件的框架,用于构建与共享消息传递系统连接的高度可扩展的时间驱动微服务。支持消息发布,消息订阅,消息分区处理;解决了开发人员无感知的使用消息中间件三个核心模块:目标绑定器:复制提供与外部消息中间件的集成 目标绑定:外部消息中间件与应用代码之间的桥梁 消息:生产者和消费者与目标绑定器进行通讯的数据结构已经实现的目标绑定器如下:RabbitMQ Apache Kafka Kafka Streams Amazon Kines
2021-12-22 14:05:37
1104
原创 分库分表的场景
读写分离:当数据库访问达到一定规模,单机变慢,开始考虑读写分离数据拆分:当库中数据达到物理上线,或因数据量过大,导致访问变慢时,开始考虑横向拆分sql审计:对sql进行审计,非法sql单独处理备注:参考DELE文档:DBLE 分布式中间件...
2021-12-12 15:22:42
858
原创 java 定时任务报警器
import lombok.SneakyThrows;import java.util.Map;import java.util.concurrent.*;/** * @author seven * @version 1.0 * @description TODO * @date 2021/11/14 23:24 */public class AlarmTimeOut { private final CountTimeTask countTimeTask; pri.
2021-11-15 01:30:13
826
原创 使用二进制计算标志位
需求:ABC三个按钮,分别有两种状态,计算任意按钮打开的所有状态分析:很明显,这是个状态判断,用二进制为表示再合适不多;那么三位二进制,最大是7,我们只要遍历所有的数字是否包含这个开关就好了二进制举例:A 是001,B是010,C是100 ,那么A打开的所有数字就是 001,011,101,111OK,上代码public class BinaryUtil { /** * 使用3bit表示3种房源端 */ private static final int
2021-08-06 15:03:39
723
2
原创 http 返回 301问题处理
+ curl --header 'Authorization: Basic xx' --data project=ship_87894_6333-tx-fund-data_0 -i http://sonar.xx.com/api/projects/delete10:00:58 % Total % Received % Xferd Average Speed Time Time Time Current10:00:58 .
2021-07-13 16:00:11
2210
原创 记录产线cpu过高的异常处理
20210713 日下午3点,jenkins master 访问失败,页面出现 504,登录服务器,发现tomcat正常,服务并没有挂掉,但cpu打满,导致请求超时!问题处理过程如下:top 查看cpu使用情况,发现是 18454 这个进程,cpu占用达到 787%(服务器8c16g) top -p 18454 -H 查看改进程下,线程占用cpu的情况,发现有8个线程,每个线程的cpu占用情况达到 90% 以上 选择其中一个线程 ,15792 printf "%x \n" 157
2021-07-13 15:46:11
650
原创 Files.list 不会自动关流
记录一次产线事故环境 :Linux,Springboot 项目反馈:服务处理请求大规模失败,报警!日志显示:too many open files!因为是新申请的服务器,先查看下设置的句柄大小 ulimit -n 发现是 65535,句柄数设置是合理的; 因为服务并没有被kill掉,查看当前服务持有的句柄数 ls /proc/${pid}/fd | wc -l ,发现当前进程持有了大量的句柄未被释放;先重启服务,释放掉句柄再说 查看日志,发现异常的代码如下demo List&...
2021-05-21 18:55:19
763
原创 springboot rabbitmq 自定义连接工厂
springboot 使用 rabbitmq1:使用默认的连接工厂,只需要在配置文件中配置全局参数即可如 yml 文件的配置spring: profiles: active: dev ########################## rabbitMq 配置 ################ rabbitmq: host: 127.0.0.1 post: 5672 username: guest password: guest .
2021-04-29 17:49:27
3372
原创 java 读取 自定义 yml文件
需要的依赖<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.23</version></dependency>代码如下import org.yaml.snakeyaml.Yaml;import java.io.InputStream;import j
2021-03-14 22:31:52
874
2
原创 解耦,获取jar包中的数据
需求:获取自定义jar包中某个方法的执行日志信息需要打包的jar中:定义接口,日志记录/** * @author * @version 1.0 * @description 日志记录 * @date 2021/2/28 16:12 */public interface LogRecord { /** * 发送日志 * @param msg */ void sendInfoLog(String msg); /** *
2021-03-01 21:37:00
151
原创 springboot 全局异常统一处理及流程引擎
流程引擎定义流程引擎,解耦业务,统一入口 引擎应与协议层解耦 所以异常直接抛出,统一处理package xx.biz;import xx.biz.action.BaseAction;import xx.model.AbstractRequest;import xx.model.CommonResponse;import xx.model.Content.BizCodeEnum;import xx.util.enumutil.ProcessEnum;import xx.util.ex
2021-02-27 09:47:53
313
1
原创 RabbitMq springboot版本与原生引用
springboot版本一般使用MQ分成两种模式workqueues 模式,Q消息只会发送到一个队列,该队列连接着多个消费者,单同一个Q消息只能被消费一次 exchange 模式,Q消息可以按照一定规则分发到多个队列,每个监听改队列的消费者都可以收到Q消息,类似与广播--springboot首先,启动MQ服务,默认的账号和密码是 guest guest 在你的项目中引入依赖 <dependency> <groupId>org.springfram
2021-02-19 11:15:10
1376
原创 2021-01-30
docker 常用命令启动 docker 服务:serivice docker startdocker pull 从仓库拉取镜像 如:docker pull tomcat 默认拉取最新的镜像 如:docker pull tomcat:tag 拉取指定版本的镜像 docker images 查看本地已经有的镜像 docker images -a 列出本地所有的镜像,包含中间镜像 docker images tomcat 列出 tomcat的所有镜像 dock...
2021-01-30 10:43:02
107
原创 CompletableFuture 异步任务管理类
* @description CompletableFuture 是各种任务的管理类 ,CompletableFuture.allOf 所有执行的任务都有结果才可以返回* CompletableFuture.anyOf 所有执行的任务有一个有结果就可以返回public class T_CompletableFuture { @SneakyThrows public static void main(String[] args) { long start = Sy.
2020-09-20 16:58:16
250
原创 ThreadLocal 的好习惯 remove
在多线程下,我们是经常使用ThreadLocal的,手动remove是一个好习惯,否则可能导致内存泄露为了便于观察,我们使用堆栈溢出的方式查看内存泄露(因内存泄露导致oom)idea中运行参数-Xms20M -Xmx20M -XX:+PrintGCDetails在t1中如果没有remove,gc是无法清理掉对象的public class M { public static void main(String[] args) { ThreadLocal<..
2020-09-15 20:11:43
793
原创 Phaser 分阶段栅栏
JDK 1.7 添加了 Phaser 分阶段栅栏 有点像多个 CyclicBarrier 组合起来一起使用话不多收,上代码;学习自马士兵老师的课public class Phaser02 { static Random r=new Random(); static Phaser phaser=new MarryPhaser(); public static void millSleep(int num){ try { Thr..
2020-09-12 22:59:47
140
原创 synchronized,AtomicLong 和 LongAddr
测试 synchronized(升级,申请总线锁) 对Long 做++操作 和 AtomicLong(CAS实现) LongAddr(分段+CAS实现)先说结论高并发情况下,LongAddr 优于 Atomic 优于 Synchronizedpublic class AtomicLearn { private static long count; private static AtomicLong count1=new AtomicLong(0); private s.
2020-09-11 22:30:51
368
原创 树形结构的构建
两种常用的构建树形结构的方式1:维护路径,通过路径一次将所有的节点查询出来,并制定key为节点的id,然后将所有的节点构建为一颗树 优点:与数据库只交互一次,构建节点的时间为O(N) 缺点:维护复杂,需要维护额外的路径 2:递归查询,直接构建为一棵树 优点:无脑递归插叙 缺点:如果在数据库中递归,关系联查询N次,如果是在代码中递归,与数据库交互查询N减最后一层节点次 表结构如下CREATE TABLE `t_lq_tree` ( `id` int(11) NOT NULL .
2020-08-08 17:02:53
1671
原创 nginx 管理脚本
#!/usr/bin/bash#Copyright (C) 2020 Sangfor Ltd. All rights reserved.#Date:2020年06月29日#Description:nginx 的启动管理脚本 srcipt#variablesnginx_install_doc=/usr/local/nginxnginxd=$nginx_install_doc/sbin/nginxpid_file=$nginx_install_doc/logs/nginx.pid# Sou
2020-07-01 00:05:20
245
原创 netty5.0 群聊demo
服务端 启动及配置package com.lq.designpatterns.netty.groupchat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channe...
2020-04-14 23:45:37
232
原创 递归删除文件夹及下所有文件
代码如下:/** * 删除文件夹下所有子孙文件 * 优点:不产生新对象,对内存友好 * 缺点:不能删除子孙文件夹 * @param path */ public static void delDirAndFile(Path path){ boolean directory = Files.isDirectory(pat...
2019-08-01 22:31:52
341
原创 oracle 使用 union all 批量插入报错 ORA-01745: 无效的主机/绑定变量名
oracle 执行批量插入不像mysql,因为oracle的主键不能自动生成;因此我们在使用oracle执行批量插入的时候,经常使用union all的方式执行批量插入;用法经常是这样的<insert id="batchInsert" paramterType="java.util.List"> insert into t_virgo_table(ID,BIZ_TYP...
2019-07-30 22:27:39
1446
2
原创 简单的Springboot获取Proverties中定义的属性
首先Spring会自动加载默认的配置文件,这个文件里定义的属性不需要单独的处理,可以直接加载;获取的方式有很多可以使用注解@Value直接获取 Environment这个类的getProperty方法直接获取 当然也可以定义一个配置类,在类上加@PropertySource("classpath:xx.properties")但是如果是自定义的Properties,又不想每次在上面加...
2019-07-06 10:57:50
204
原创 产线jar包如何实现静默升级
场景:A开发小组开发了3个架包,分别是A1,A2,A3。这部分架包分别被系统B,C,D 三个系统引用。随着系统的发展,A开发小组对jar进行了升级,目前产线上有A1.1 A1.2 A1.3;B1.1 B1.2 B1.3;C1.2 C1.1 C1.3 C1.4 这几个版本。而B,C,D系统引用的 jar 各个版本都有,且A系统升级jar包后想让B,C,D都更新为最新的jar包比较困难,因为需要各种测...
2019-07-05 00:05:54
1385
原创 本地测试通过,mvn打包报错
2019/3/20日:本地测试通过,mvn打包报错异常原因:打包报错,异常是bigDecimal 转 long 报错 解决过程: mvn 打包报错,从错误日志中定位到代码?代码如下 ClassA a=new ClassA();// 引用的外部包a.setTotalNum(new bigDecimal("1111")); // mvn 打包出错,日志中定位的行数...
2019-03-20 23:01:22
486
原创 优先级队列---PriorityDueque
优先级队列可以按照任意顺序插入,但总是按照排序的顺序检索 自定云对象实现comparble接口,放入优先级队列就可以实现比较了;但如果使用for循环直接获取元素,无法实现比较;需要使用队列的remove,poll,peek这些方法才能获取按优先级排序的元素 无论何时调用remove方法,总会删除优先级最高的元素(习惯1为优先级最高) 测试代码如下,按Stu 的 age 排序 publ...
2019-03-17 12:07:56
370
1
rockemq-console-1.0.0
2021-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人