自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (2)
  • 收藏
  • 关注

原创 如何手动控制nacos注册

在使用nacos作为服务注册与发现时,我们可能需要手动控制服务注册到nacos中的时机,如系统启动好之后,需要预热一段时间,加载一些缓存数据之后才允许被其它微服务访问。

2023-10-18 11:53:59 1264

原创 使用js实现任意元素均可全屏显示的插件,提供vue自定义指令,开箱即用

给界面上任意元素提供全屏能力的组件;1.支持多层级逐级打开全屏和取消全屏。2.提供完善的生命周期监听函数。3.默认提供vue自定义指令,开箱即用

2023-04-03 20:19:18 991

原创 js实现自定义合并单元格,el-table开箱即用

分享一个简单易用的计算表格内单元格合并的工具,支持行合并、列合并等常见场景

2023-04-02 21:18:42 2815

原创 vue源码学习之单向数据流检测

vue是如何检测到我们在子组件中修改了父组件通过props传递过来的值

2023-03-07 17:01:44 154

原创 openEuler中安装vmware for linux 找不到gcc的解决方案

openEuler中安装vmware for linux 找不到gcc的解决方案

2023-01-30 18:53:20 1012

原创 Ts ES2022,ESNext 环境下属性修饰器失效

当tsconfig.json中的target 设置为ESNext 或者ES2022时,属性修饰器会失效。

2023-01-29 11:26:37 608

原创 springboot jackson 同时兼容日期格式带T与不带T

springboot jackson 同时兼容日期格式带T与不带T

2022-10-15 22:29:34 1619 1

原创 vue-router通过路由守卫实现参数加密

vue-router通过路由守卫实现参数加密

2022-06-07 19:47:53 1008

原创 当@FeignClient遇到@RequestMapping,spring容器启动报错

FeignClient接口上加上RequestMapping注解后服务启动报错

2022-06-06 09:34:41 5721 2

原创 js-妙用代理模式解决对api接口进行防抖节流

背景:项目中因为开发的时候没有使用防抖节流进行接口访问控制,导致正式上线运行的时候同一个请求调用多次。因为项目体量较大,逐个接口去改风险太大,成本较高,所以最终决定在真正调用axios的地方进行方法代理。// 对axios的封装const http = { get(url,params){ return axios.get(`${url}`, { params: params }) }}/** * 请求过滤器,减少重复的请求 */const reque.

2022-05-31 18:21:39 330

原创 在linux上发布负载tomcat

# 配置项app_name="demo"# 本地机器的ipapp_host_ip="192.168.75.129"# 端口信息 当前jar 启动几个端口app_port_str="8881,8882"# tomcat的位置tomcat_homes="/home/tomcat/tomcat-8881,/home/tomcat/tomcat-8882"# java optionsapp_options=""# 测试程序启动成功的urlapp_test_url="/demo/helloWo.

2021-10-31 18:12:49 105

原创 在linux上热发布java.jar

# 当前需要发布的应用名称,jar包应该放在当前脚本的同级目录,并且命名为 $app_name.jarapp_name="demo"# 本地机器的ipapp_host_ip="192.169.75.129"# 端口信息 当前jar 启动几个端口app_port_str="8081,8082"# 调试端口app_debug_port_str="7081,7082"# java optionsapp_options=""# 测试程序启动成功的url 运行的时候会自动拼上 http://ap.

2021-10-28 21:02:38 1966 1

原创 jackson 通用泛型解决方案

maven 坐标<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.1</version></dependency>在我们做业务开发的时候经常对于http请求封装一个公用的类,如下:public class

2021-07-23 11:25:47 1814

原创 记一次线上排查cpu飙升原因

使用top 查看程序占用情况定位到是哪个服务占用cpu过高根据第一步的pid定位到是哪个线程cpu使用异常top -H -p 67849使用sudo jstack 67849> jstack.log 将当前服务的堆栈信息输出到一个文件中将第二步找到的异常线程的pid转换成为16进制printf ‘%x\n’ 68020在第三步输出文件中查找 nid=0x<16进制pids>的线程,查看具体是哪个线程占用cpu异常备注: 以上截图均为事故解决后为记..

2021-07-02 19:25:57 157

原创 在vue3中使用vue-lgrid-layout

最近使用vue3开发一个工具项目 发现原本在vue2.x中使用很好的vue-grid-layout 会报一个很奇怪的错误external_commonjs_vue_commonjs2_vue_root_Vue_default.a is not a constructor网上翻了很多博客 最终在vue-grid-layout的issue中找到了解决方案vue-grid-layout issue#439 是否支持vue3解决方案:登录这个github https://github.com/lvjun

2021-07-02 09:21:37 4384 11

原创 实现一个简单的加密解密工具类:java加密数据 js 解密数据

后端加密代码:public class WsdDescUtils{ private final static byte[] ENCRYPT_VAL = { 65, 68, 54, 52, 65, 53, 69, 48, 52, 56, 57, 57, 69, 56, 56, 69 }; public static String simpleEncode(String str) throws UnsupportedEncodingException

2021-06-09 15:37:04 285

原创 swagger2自定义注解 --为什么总有一个自定义model不能被识别!

首先我们回顾一下swagger2自定义注解 —你还在为每一个api创建一个ApiModel类而烦恼吗?通过swagger的插件机制 我们可以对同一个类型在不同接口进行属性的显示和隐藏,但是当我们真正使用的时候,会发现一个奇怪的现象,总会有一个Model不能正常生成…如下图是什么导致了这个现象通过不断测试我们会发现 丢失的永远是最后一个被SwaggerModelReader 扫描到的model一切问题的根源在于下面这2行代码springfox.documentation.spring.web.sc

2021-05-31 19:48:55 1838 5

原创 tomcat通过springmvc方式启动springboot项目,手动设置logback日志级别

首先我们需要准备一个监听器public class WsdLogInfoListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { // 上下文初始化的时候设置一下日志级别 Logger root = LoggerFactory.getLogger("ROOT"); if(r.

2021-05-25 17:47:20 300

原创 通过反射执行被动态代理的类中的方法-面向接口编程的必要性

首先准备1个接口和1个实现类 用来模拟场景public interface TestService { // 空方法 什么都不做 子类也不重写 default void nothingTodo(){} // 子类需要重写的方法 void todoSomething();}@Servicepublic class TestServiceImpl implements TestService { public void todoSomething() {

2021-05-02 14:39:52 411 2

原创 ts报错指南-TS2339: Property ‘xxx‘ does not exist on type ‘{}‘

在js里面我们习惯性的声明对象方式如下:const obj = {}obj.code = '编号'当我们使用ts 这么写的时候会报错编译器提醒我们需要创建一个属性,当我们面向对象做的时候肯定是选择创建属性的方式,但是当我们是需要使用动态属性,如下正确的使用方式应该是其实遇到这个问题的根本原因使用ts的类型校验,又不想丢失js的灵活 所以这个时候需要根据需求去灵活应用了...

2021-04-11 20:27:15 24661 1

原创 VUE3.0 挂载属性到当前实例中

2.0版本是直接挂载再原型链上 Vue.prototype.xxx = xxx从3.0开始要通过app.config.globalProperties.xxx = xxx的方式挂载import {createApp} from 'vue'import App from './App.vue'import echartsContext from './scripts/echarts/index'// 创建根节点const app = createApp(App)// 挂载echarts.

2021-04-11 20:15:56 1334 3

原创 读取jar内指定文件夹中所有文件信息

在我们日常开发过程中会经常遇到通过模板生成文件的业务场景,但是模板可能会经常发生改变,所以我们使用以下代码实现对文件的读取:private static List<String> loadFiles(String basePath, String fileType, List<String> lst) { URL resource = FileUitls.class.getClassLoader().getResource(basePath); if

2021-03-29 11:49:12 459 1

原创 封装一个rtsp转rtmp的插件

RTSP转RTMP服务环境搭建nginxnginx 需要安装rtmp模块配置文件rtmp { server { # rtmp 监听端口 listen 1935; chunk_size 4000; application live { live on; # record first 1K of stream #record all;

2021-03-13 19:09:02 280 1

原创 spring-cloud之利用PropertySourceLocator修改程序启动时默认配置

最近在将seata和我们的老项目框架进行整合,在整合过程中遇到了一个棘手的问题,我们需要通过自定义的一个配置来决定seata是否开启,通过查看seata的api之后发现当我们将seata的数据源代理和全局事务配置关掉之后,就能关闭全局事务,配置如下:seata.enable-auto-data-source-proxy=false #关闭数据源代理seata.service.disable-global-transaction=true #关闭全局事务但是我们不可能既要修改框架自定义的配置,又去修

2021-03-13 17:12:00 712 1

原创 springcloud-alibaba学习笔记(六)docker搭建seata测试环境和(file模式)配置seata-server的地址

由于微服务环境所需要的组件比较多,开发机器的资源相对有限,所以我们一些功能性组件部署再docker中。比如nacos、redis、seata、oracle等等…搭建nacos容器因为搭建测试环境,仅仅用于测试开发,学习微服务,所以就不考虑将数据持久化到mysql中了,docker run --env MODE=standalone --restart=always --name nacos -d -p 8848:8848 nacos/nacos-server:latest搭建seata容器

2021-03-04 21:14:24 1169 1

原创 springcloud-alibaba学习笔记(五)seata使用(当oracle中使用TIMESTAMP类型导致undolog序列化失败)

场景使用seata + oracle 实现分布式事务 ,当表中存在一个字段使用的是TIMESTAMP类型,那么在开启分布式事务的时候jackson会报出一个序列化失败的错误报错信息2021-02-28 20:43:43.358 ERROR 12964 — [nio-8865-exec-2] i.s.r.d.u.parser.JacksonUndoLogParser : json encode exception, No serializer found for class java.io.B

2021-02-28 20:46:28 1854 1

原创 数据结构学习6-使用递归解决8皇后问题

8皇后问题在一个8*8的象棋棋盘上 摆放8个皇后要求: 任意2个皇后不能放在同一行 同一列 同一斜线代码public class Queue8 { private int[] map; /** * 成功次数 */ private int successCount; private int judgeCount; public Queue8() { map = new int[8]; } pub

2021-02-24 12:27:22 183 1

原创 springcloud-alibaba学习笔记(四)seata使用(基于oracle数据库)

软件安装下载安装包启动软件当前测试环境搭建使用最简单的模式 所以直接解压压缩包,然后进入bin目录中执行启动脚本,注意当使用file作为配置中心和注册中心的时候 什么配置文件都不用改项目搭建项目结构maven坐标<dependencies> <dependency> <groupId>org.example</groupId> <artifactId>seata-oracle

2021-02-24 11:52:02 559

原创 数据结构学习5-使用递归解决迷宫问题

迷宫问题给定一张迷宫地图和一个迷宫入口,和出口 找到一条可以通过的道路迷宫地图我们使用一个二维数组代表迷宫,其中0 代表没有走过1 代表障碍物2表示路可以走3 标识已走过,但是不通9 代表终点关键代码go方法 根据执行的选择方向模式,探测下一步应该往哪走,当4个方向都不满足的时候,就需要对回滚到上一个操作点,这个地方使用到了栈,goWithDynamic方法 根据当前点和终点的位置进行动态判定4个方向的优先级,但是针对于很多障碍物的地图,它表现的并没有想象中那么好,甚至有

2021-02-18 17:10:55 496 1

原创 数据结构学习4-栈的使用、中缀表达式求值、中缀表达式转后缀表达式

栈栈是数据结构中非常重要的一个知识点,java底层虚拟机运行就是通过栈的形式,编译器会将代码打包编译成为一个一个的栈帧 然后逐个执行。特征FILO 先进后出,最新进入的元素最后一个被弹出有序 栈是上一个有序列表插入和移除只能在同一端进行图解代码实现使用数组实现public class ArrayStack { /** * 最大容量 */ private int maxSize; /** * 栈顶位置 */ pr

2021-02-18 11:40:05 234 2

原创 数据结构学习3-单向链表、双向链表以及使用链表解决约瑟夫环

链表学习笔记链表是一种使用十分频繁的数据结构,它的优点在于可以将大量的数据存储在分散的空间内,当需要插入或修改节点的时候,只需要修改节点之间的指针即可。与之相反,数组的存储则需要连续的空间,当需要向数组中插入数据或者修改顺序的时候,需要对整个空间进行处理。所以:我们常说 如果查找的比较频繁就使用数组,如果修改比较频繁那么建议使用链表链表是以节点的方式来进行数据存储的,它分为带头节点的链表和不带头节点的链表单向链表每一个节点中都分为data域和next域 ,data域存放数据 ,next域指向

2021-02-13 14:53:05 251 2

原创 springcloud-alibaba学习笔记(三)sentinel熔断、降级、限流

搭建java项目项目结构maven坐标<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>配置信息spring: application: name: sentinel cloud: s

2021-02-04 17:22:36 248

原创 springcloud-alibaba学习笔记(二)nacos配置中心

搭建java项目项目结构在nacos-configcenter的pom.xml中添加依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>编写application.ymlspring:

2021-02-03 21:45:20 134

原创 springcloud-alibaba学习笔记(一)nacos服务注册与发现

安装nacos下载nacos的包启动nacos,需要注意启动的时候一定要加standalone,否则会启动失败Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):sh startup.sh -m standalone如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:bash startup.sh -m standaloneWindows启动命令(standalone代表着单机模式运行,非集群模式):cm

2021-02-03 20:49:51 153

原创 数据结构学习2-使用数组实现队列

队列队列的特征是先进先出,有序,我们常常通过数组、链表来实现队列,因为数组比链表简单,所以我们先从数组开始学习代码public class ArrayQueue { private int[] data; private int maxSize; private int rear; private int front; public ArrayQueue(int maxSize) { this.maxSize = maxSize;

2021-02-01 22:24:30 158 3

原创 数据结构学习1-稀疏数组

稀疏数组目的:压缩数组,使得存储的空间更小例子:/** 原二维数组0 0 0 0 00 1 0 0 00 0 2 0 00 0 3 0 0// 压缩后的稀疏数组4 5 3 原数组有几行几列,有多少个有效值1 1 1 每一个有效值的存放位置2 2 23 2 3 */当原数组中存在大量空值的时候,稀疏数组可以极大的压缩空间例如上面的原本需要存储20个值,但是转换成为稀疏数组之后只需要12个值即可满足要求代码int[][] arr1 = new int[11][11

2021-02-01 22:01:22 156

原创 基于命令模式写一个代码生成器

需求:生成的代码可能是java代码 可能是配置文件,也可能是空目录(初始化工程)支持自定义拓展,能够有很好的拓展性外部调用起来很简单,不需要关注里面的生成逻辑,外部传入的参数要尽量简单组件调用由于生成器需要有很好的拓展性,所以我们采用命令模式实现,#mermaid-svg-aMVf43W2HVud0c1s .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:

2021-01-31 13:43:57 157 1

原创 javassist修炼笔记

什么是javassist看到这篇文章的兄弟们肯定对字节码框架有一定的了解,不然也不会闲的发慌,来搜这种东西,所以这里就从百度上粘贴了一段话:Javassist是一个开源的分析、编辑和创建Java字节码的类库,可以直接编辑和生成Java生成的字节码。相对于bcel, asm等这些工具,开发者不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。javassist简单易用, 快速。为什么要用javassist当我们有大量重复的固定逻辑,这部分逻辑可以通过反射解决,但是我们都知道反射的弊端在于当

2021-01-25 14:37:50 420 2

原创 如何动态拼接mybatisplus查询条件中的and,or

首先定义一个接口 这个接口会被所有的实体类实现public interface DaisyBasicPo extends Serializable {}使用工具类将lambda表达式的参数暴露出来,这个时候我们就可以愉快的随意拼接sql了public class DaisyWrapperUtils { /** * 将2个wrapper 拼接到一起 * a =1 and (b =1 or c = 1) * * @param wrapper .

2021-01-25 11:12:20 2877

原创 spring扫描自定义注解

定义一个注解 用于管理插件是否开启@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(DemoRegistrar.class)public @interface EnableDemo { /** 需要扫描的包 bean存放目录*/ String[] basePackages() default {};}定义一个自定义注解,从而标明哪些类需要被spring管理@..

2021-01-17 11:12:38 1636 1

hibernate-分表插件实现思路

基于spring+hibernate 实现的分表插件,可以定义分表策略,本代码只提供一个思路,具体的实现逻辑还是要基于具体的业务开发,重复造轮子并不可耻,出了问题大不了重造

2020-10-05

tomcat组件启动时序图.vsdx

对于tomcat的启动流程分析,从主流程Bootstrap -> Catalina -> Server -> service -> engine,connector;和分流程1.engine->host->context->wrapper ;2.connector -> ProtocolHandler->Endpoint;之中的方法调用进行分析,由于篇幅过大,无法截图所以以资源的形式上传分享

2020-04-03

空空如也

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

TA关注的人

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