自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 收藏
  • 关注

原创 看完这一篇后我同事说我写代码像写诗

把自己平时写代码的习惯跟大家分享一下1.定义配置文件信息有时候我们为了统一管理会把一些变量放到yml配置文件中例如用 @ConfigurationProperties 代替@Value使用方法定义对应字段的实体@Data// 指定前缀@ConfigurationProperties(prefix = "developer")@Componentpublic class DeveloperProperty { private String name;.

2021-10-20 16:35:49 28479 26

原创 Vue结合Jquery 实现网页端数字键盘

input placeholder="登录账号 / 员工编号"

2023-09-21 16:04:26 520

原创 解决项目加载时空白页面

背景:当前端项目加载时,遇到网络不稳定或更新项目时,出险长时间白屏情况,对用户访问非常不友好。index.html页面 (public文件夹下)效果图 loading动画覆盖白屏。App.vue 添加钩子函数。

2023-08-02 10:14:29 393

原创 vue按需引入Echarts

推荐按需引入加载方式, 需要什么样的组件引入什么样的组件, 大大的减少了项目的大小以及加载时间。首先引入echarts。

2023-07-16 15:55:28 1145

原创 netty bytebuf 中release方法和clear方法的区别

因此,如果需要完全释放ByteBuf的资源,应该调用release方法。如果只是需要重用ByteBuf,并且不需要保留之前的数据,可以调用clear方法。clear方法:将ByteBuf的读写索引重置为0,但并不会释放ByteBuf的内存和其他资源。调用该方法后,ByteBuf可以继续被使用。release方法:释放ByteBuf的所有资源,包括内存和其他资源。调用该方法后,ByteBuf不能再被使用。项目中使用netty开发时遇到的坑。

2023-03-29 10:50:19 874 2

原创 springboot中 @Imput与@EnableConfigurationProperties区别

注解的作用是将指定的类或配置类导入到当前类中,以便在当前类中使用被导入的类或配置类。通常用于将第三方库或其他模块的配置类导入到当前模块中使用。注解的作用是启用指定的配置类,使其可以被注入到其他类中使用。注解将一个类或配置类导入到当前模块中,然后在当前模块中使用该类或配置类提供的功能。注解将该配置类注入到当前类中,以便在当前类中使用该配置类提供的配置项。注解主要用于将配置文件中的配置项注入到Java类中使用。注解主要用于导入其他模块或第三方库的类或配置类,而。注解启用一个配置类,然后在其他类中使用。

2023-03-28 17:20:02 371

原创 springboot整合logback

logback-spring.xml配置文件如下。

2023-03-27 12:59:28 122

原创 Java创建临时文件 系统关闭时删除

【代码】Java创建临时文件 系统关闭时删除。

2023-03-27 10:04:34 1118

原创 EasyExcel 实现导入导出

EasyExcel实现导入导出

2023-03-23 09:26:10 395

原创 [Vue动态路由] vue实现动态路由 (专为后端同学而生)

动态路由 根据每个人不同的权限 显示不同的菜单

2023-03-21 15:21:55 2291 2

原创 mysql 不同库之间的表结构对比

五步轻松搞定再也不用担心正式库缺失字段了。

2022-09-15 10:04:46 516

原创 DeferredResult 提高系统吞吐量的一把利器

当一个接口处理耗时时,为了接口做出快速相应,释放tomcat资源,提高系统的吞吐量,sping3.0 以后引入DeferredResult。代码演示。

2022-08-18 14:18:45 362

原创 shell脚本启动jar包

#!/bin/sh# 当前服务端口port=`ps -elf | grep '/home/nid/api/nid.jar' | grep -v 'grep' | awk '{print $4}'`# jar包存放路径path=/home/nid/api# 停止当前端口kill -9 $portecho "Starting please wait"\# 情况启动前的out文件cat /dev/null > nohup.outsleep 3s# 启动jar包java -Xms.

2022-05-12 10:42:38 1785 1

原创 「Java」CopyOnWriteArrayList与Vector

我们都知道ArrayList是线程非安全的。如果我们想要得到一个线程安全的集合。有如下方式new Vector<String>(); Collections.synchronizedList(new ArrayList<>()); newCopyOnWriteArrayList();他们实现线程安全的方式Vector :简单粗暴 // addpublic synchronized boolean add(E e) { ...

2022-04-22 16:12:07 677

原创 「分布式专题」一致性Hash算法的实现Java

上文主要介绍了一致性hash算法的由来以及概念知识。本文主要对其进行实现及演示。「分布式专题」分布式系统中一致性hash算法_国涛i的博客-CSDN博客_分布式一致性hash算法近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等我们以负载均衡为例,常见的负载均衡方法有很多,但是它们...

2022-04-22 09:28:03 847

原创 「Spring」开发项目中常用的接口

InitializingBean当我们阅读一些优秀的开源代码时,会经常见到InitializingBean的身影,Spring启动后,初始化Bean时,若该Bean实现InitialzingBean接口,会自动调用afterPropertiesSet()方法,完成一些用户自定义的初始化操作ApplicationContext是spring继BeanFactory之外的另一个核心接口或容器,允许容器通过应用程序上下文环境创建、获取、管理bean。为应用程序提供...

2022-04-20 11:28:28 902

原创 「RocketMQ」如何保证消息不丢失

当我们实际项目开发中,引入一个中间件都要考虑为什么要引进他,引进它会遇到哪些问题。首先为什么要引入消息队列解耦:分布式系统中涉及到的数据交互 削峰:高并发场景下,为了更快的作出相应,会考虑引入消息队列 异步:减少响应时间会遇到哪些问题呢系统的可用性降低:如果消息队列挂掉了,服务之间通讯就会受限 复杂性提高 数据丢失本文主要对「数据丢失」做一些分享 ...

2022-04-13 09:26:03 3623

原创 「某大厂二面」聊聊Java中的SPI机制

SPI service provider interface的简写SPI是什么SPI主要解决的还是耦合问题。我们知道面向接口编程是很好的编程方式。举一个简单的例子假设有一天你一不小心成为了你们组的组长,这时候经理要求你开发一个对象存储服务,统一一下公司内部的云存储服务,首先市面上的云存储有好多家,例如阿里的OSS,t...

2022-03-22 10:24:19 722

原创 「淘宝二面」什么是守护线程 应用场景有哪些

什么是守护线程jdk官方介绍The Java Virtual Machine exits when the only threads running are all daemon threads.当 JVM 中不存在任何一个正在运行的非守护线程时,则 JVM 进程即会退出先看一下这段代码public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -&

2022-03-16 13:35:19 748

原创 「淘宝一面」HashMap 在使用时需要注意什么地方 至少说出四点

前言彻底弄懂HashMap__Louie的博客-CSDN博客_hashmap我们在面试中, 也会经常被问到HashMap相关的底层实现, 阿巴阿巴....HashMap的底层实现首先它是基于数组(存储对象的引用)加链表(存储对象)实现的当我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对...

2022-03-16 09:38:44 644

原创 「网易一面」线程池参数以及提交任务后怎么执行的

核心参数private static int corePoolSize = 20;private static int maxPoolSize = 100;private static int keepAliveTime = 0;private static TimeUnit timeUnit = TimeUnit.MINUTES;private static BlockingQueue blockingQueue = new ArrayBlockingQueue<>(999...

2022-03-16 09:07:34 167

原创 「京东一面」子线程如何获取父线程ThreadLocal的值

开门见山想要子线程获取父线程中ThreadLocal中的值,需要其子类InheritableThreadLocal实现测试代码public static void main(String[] args) throws InterruptedException { Thread parentParent = new Thread(() -> { ThreadLocal<Integer> threadLocal = new ThreadLo

2022-03-14 14:14:27 613

原创 「Java」自定义注解 校验数据库表中的数据不可重复

一个很常见的需求,某表中的数据不能重复,我闲每次都要多加几行代码去查数据库,所以自定义了个注解代码@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = TableDataUnique.TableDataUniqueConstraintValidator.class)public @interface TableDataUnique { // 表明 St.

2022-01-27 16:40:47 3126 6

原创 「Netty」实战 Springboot + netty +websocket 推送消息(附源码)

源码地址:https://gitee.com/dugt/springboot-netty-demohttps://gitee.com/dugt/springboot-netty-demo上篇文章我们认识了NIO与传统BIO的区别之后,展开了对Netty的学习,Netty对NIO进行了很好的封装,简单的API,庞大的交流社区。该篇博客分享一下基础的netty使用。针对一些掌握netty简单API的同学。netty服务器@Componentpublic class NettyS..

2022-01-24 15:21:28 1586 1

原创 「Netty」Netty入门 认识NIO

现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能 Netty 底层实现就是基于我们的NIO,因为网络编程使用NIO非常复杂,容易写出Bub,netty封装了nio,大大的简化了学习成本与提高了编码效率。概述NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流...

2022-01-24 11:33:37 304

原创 「性能优化专题」缓存的那些事儿

利用缓存做性能优化的案例非常多,从基础的操作系统到数据库、分布式缓存、本地缓存等。它们表现形式各异,却有着共同的朴素的本质:弥补CPU的高算力和IO的慢读写之间巨大的鸿沟。和架构选型类似,每引入一个组件,都会导致复杂度的上升。以缓存为例,它带来性能提升的同时,也带来一些问题,需要开发者设计和权衡。本文的思维脉络如下:一 缓存和多级缓存1 缓存的引入在初期业务量小的时候,数据库能承担读写压力,应用可以直接和DB交互,架构简单且强壮。经过一...

2022-01-14 13:31:20 163

原创 「RocketMQ专题」@RocketMQMessageListener selectorExpression属性不支持EL表达式 tag不生效 问题发现及解决方案

@RocketMQMessageListener selectorExpression属性不支持EL表达式 tag不生效 问题发现及解决方案

2022-01-13 12:31:40 9198 3

转载 「数据库专题」一分钟搞懂MySql索引下推

如果你在面试中遇到,听到“MySQL5.6”、“索引优化” 之类的词语,你就要立马get到,这个问的是“索引下推”。什么是索引下推索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。索引下推优化的原理我们先简单了解一下MySQL大概的架构:MySQL大概架构MySQL服务层负责SQL语法解析、生成执行计划等,并调用存储引擎层去执行数据的存储和检索。索引下推的下推其实就是指将部分上层(服务

2022-01-06 10:45:53 302 2

原创 「分布式专题」分布式系统中一致性hash算法

近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等我们以负载均衡为例,常见的负载均衡方法有很多,但是它们的优缺点也都很明显:随机访问策略。系统随机访问,缺点:可能造成服务器负载压力不均衡,俗话讲就是撑的撑死,饿的饿死。 轮询策略。请求均匀分配,如果服务器有性能差异,则无法...

2021-12-31 11:13:16 360 3

原创 「Java」彻底掌握ReentrantLock实现原理

ReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指令实现。 CLH队列:带头结点的双向非循环链表(如下图所示):

2021-12-30 16:20:19 481

原创 「Java」 list转tree工具类(分享代码)

自定义消费者用来设置孩子/** * <p> * * </p> * * @author duguotao * @version 1.0.0 * @since Created in 2021/11/12 */@FunctionalInterfacepublic interface TreeChildConsumer<T> { void accept(T t, List<T> tList);}treeUtil/**

2021-12-27 16:36:13 746 1

原创 「分布式专题」docker+shell脚本 快速部署项目

shell脚本 本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)shell命令解析器:系统提供 shell命令解析器: sh ash bashshell:大体含义就是把多个命令放到一起执行。docker部署项目常用套路pull project last stopcontainer rmcontainer run last images例...

2021-12-17 13:03:05 1817

原创 「分布式专题」本地服务调用测试环境微服务解决方案

部署微服务多数采用docker部署。当我们测试自己的服务时,会经常调用测试环境中(docker)的服务。此时就遇到了问题。会发现调不通 404很显然调不同。解决方案把各个服务都在本地启一份。 如下图2 nacos本地设置跳转域名...

2021-12-15 14:09:22 1585

原创 「Java」spring.factories介绍与使用 自定义自动装配

了解过springboot自动装配原理的同学都知道,项目启动时,会加载所有META-INF下的所有的spring.factories文件,根据EnableAutoConfiguration.class加载所有配置类新建maven项目,如下图Test就是我们要注入到ioc容器里的bean@Componentpublic class Test { public Test() { System.out.println("hello my test bean")...

2021-12-10 11:42:09 2004

原创 「分布式专题」RocketMQ 发送事务消息 事务消息的执行流程(代码演示)

本地方法发送消息至borker borker 执行TransactionListener的方法。执行本地事务executeLocalTransaction 如果返回unkow状态,borker会回调checkLocalTransaction检查事务的结果,返回提交还是回滚 borker设置消息对外可见,等待消费或主动推送事务的流程如下图简述实例代码 /** * 基础事务消息 * 自己实现回调方法 * * @return Transa..

2021-12-09 13:56:23 2675 1

原创 「Java」如何使用 aop 切面对请求进行日志记录 (分享代码)

首先定义一个记录log的注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface IpcLog {}AOP代码/** * <p> * 使用 aop 切面记录请求日志信息 * </p> * * @author duguotao * @version 1.0.0 * @since Created in 2021/11/11 */@Aspe.

2021-12-08 10:51:13 624

原创 「分布式专题」分布式事务 就这?太简单了吧

基础概念本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据 库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的 事务又被称为本地事务。 回顾一下数据库事务的四大特性 ACID: A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失 败的情况。 C(Consistency):一致性,在事务执行前后,数据库的一致...

2021-12-02 16:14:34 722

原创 「分布式专题」一分钟带你了解什么是微服务

微服务

2021-12-01 16:56:35 565

原创 「Java」上传本地jar包至maven私仓 表弟都能看明白

maven 私有仓库

2021-11-17 14:34:34 684

原创 feign自定义配置

前言有时候我们会写一个项目(类似于工具类)供同事使用例如写一些feign接口,供别人调用,我的想法是,抽取出一个模块,打成jar包上传到公司私有maven仓库,别的同时用的时候直接引入我的maven依赖,直接注入我的service,直接使用。方便同事目录展示具体代码/** * <p> * 自定义扫描FeignClient配置 * </p> * * @author duguotao * @version 1.0.0 * @sinc...

2021-11-17 10:35:46 544

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除