- 博客(92)
- 资源 (2)
- 收藏
- 关注
原创 “富在术数,不在力耕“
“富在术数,不在力耕” 是在提醒人们,要想实现富裕,不仅要勤奋努力,更要注重学习和运用各种方法、策略,培养敏锐的洞察力和创新思维,善于把握机遇,这样才能在追求财富的道路上取得更大的成功。
2025-02-18 14:12:52
315
原创 “莫向外求”
它鼓励我们在纷繁世界中锚定内心,通过自我认知与修炼实现生命的自在与通达。如同禅语所说:“明珠一颗,久被尘劳关锁;今朝尘尽光生,照破山河万朵。”——答案本在己心,何须外觅?“莫向外求”并非消极避世,而是一种。
2025-02-12 15:05:11
143
原创 如何手动控制nacos注册
在使用nacos作为服务注册与发现时,我们可能需要手动控制服务注册到nacos中的时机,如系统启动好之后,需要预热一段时间,加载一些缓存数据之后才允许被其它微服务访问。
2023-10-18 11:53:59
1597
原创 使用js实现任意元素均可全屏显示的插件,提供vue自定义指令,开箱即用
给界面上任意元素提供全屏能力的组件;1.支持多层级逐级打开全屏和取消全屏。2.提供完善的生命周期监听函数。3.默认提供vue自定义指令,开箱即用
2023-04-03 20:19:18
1084
原创 openEuler中安装vmware for linux 找不到gcc的解决方案
openEuler中安装vmware for linux 找不到gcc的解决方案
2023-01-30 18:53:20
1212
原创 Ts ES2022,ESNext 环境下属性修饰器失效
当tsconfig.json中的target 设置为ESNext 或者ES2022时,属性修饰器会失效。
2023-01-29 11:26:37
723
原创 当@FeignClient遇到@RequestMapping,spring容器启动报错
FeignClient接口上加上RequestMapping注解后服务启动报错
2022-06-06 09:34:41
6331
2
原创 js-妙用代理模式解决对api接口进行防抖节流
背景:项目中因为开发的时候没有使用防抖节流进行接口访问控制,导致正式上线运行的时候同一个请求调用多次。因为项目体量较大,逐个接口去改风险太大,成本较高,所以最终决定在真正调用axios的地方进行方法代理。// 对axios的封装const http = { get(url,params){ return axios.get(`${url}`, { params: params }) }}/** * 请求过滤器,减少重复的请求 */const reque.
2022-05-31 18:21:39
354
原创 在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
118
原创 在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
2007
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
1902
原创 记一次线上排查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
176
原创 在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
4481
12
原创 实现一个简单的加密解密工具类: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
313
原创 swagger2自定义注解 --为什么总有一个自定义model不能被识别!
首先我们回顾一下swagger2自定义注解 —你还在为每一个api创建一个ApiModel类而烦恼吗?通过swagger的插件机制 我们可以对同一个类型在不同接口进行属性的显示和隐藏,但是当我们真正使用的时候,会发现一个奇怪的现象,总会有一个Model不能正常生成…如下图是什么导致了这个现象通过不断测试我们会发现 丢失的永远是最后一个被SwaggerModelReader 扫描到的model一切问题的根源在于下面这2行代码springfox.documentation.spring.web.sc
2021-05-31 19:48:55
1951
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
329
原创 通过反射执行被动态代理的类中的方法-面向接口编程的必要性
首先准备1个接口和1个实现类 用来模拟场景public interface TestService { // 空方法 什么都不做 子类也不重写 default void nothingTodo(){} // 子类需要重写的方法 void todoSomething();}@Servicepublic class TestServiceImpl implements TestService { public void todoSomething() {
2021-05-02 14:39:52
448
2
原创 ts报错指南-TS2339: Property ‘xxx‘ does not exist on type ‘{}‘
在js里面我们习惯性的声明对象方式如下:const obj = {}obj.code = '编号'当我们使用ts 这么写的时候会报错编译器提醒我们需要创建一个属性,当我们面向对象做的时候肯定是选择创建属性的方式,但是当我们是需要使用动态属性,如下正确的使用方式应该是其实遇到这个问题的根本原因使用ts的类型校验,又不想丢失js的灵活 所以这个时候需要根据需求去灵活应用了...
2021-04-11 20:27:15
27520
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
1378
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
487
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
321
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
756
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
1214
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
1942
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
216
1
原创 springcloud-alibaba学习笔记(四)seata使用(基于oracle数据库)
软件安装下载安装包启动软件当前测试环境搭建使用最简单的模式 所以直接解压压缩包,然后进入bin目录中执行启动脚本,注意当使用file作为配置中心和注册中心的时候 什么配置文件都不用改项目搭建项目结构maven坐标<dependencies> <dependency> <groupId>org.example</groupId> <artifactId>seata-oracle
2021-02-24 11:52:02
598
原创 数据结构学习5-使用递归解决迷宫问题
迷宫问题给定一张迷宫地图和一个迷宫入口,和出口 找到一条可以通过的道路迷宫地图我们使用一个二维数组代表迷宫,其中0 代表没有走过1 代表障碍物2表示路可以走3 标识已走过,但是不通9 代表终点关键代码go方法 根据执行的选择方向模式,探测下一步应该往哪走,当4个方向都不满足的时候,就需要对回滚到上一个操作点,这个地方使用到了栈,goWithDynamic方法 根据当前点和终点的位置进行动态判定4个方向的优先级,但是针对于很多障碍物的地图,它表现的并没有想象中那么好,甚至有
2021-02-18 17:10:55
513
1
原创 数据结构学习4-栈的使用、中缀表达式求值、中缀表达式转后缀表达式
栈栈是数据结构中非常重要的一个知识点,java底层虚拟机运行就是通过栈的形式,编译器会将代码打包编译成为一个一个的栈帧 然后逐个执行。特征FILO 先进后出,最新进入的元素最后一个被弹出有序 栈是上一个有序列表插入和移除只能在同一端进行图解代码实现使用数组实现public class ArrayStack { /** * 最大容量 */ private int maxSize; /** * 栈顶位置 */ pr
2021-02-18 11:40:05
264
2
原创 数据结构学习3-单向链表、双向链表以及使用链表解决约瑟夫环
链表学习笔记链表是一种使用十分频繁的数据结构,它的优点在于可以将大量的数据存储在分散的空间内,当需要插入或修改节点的时候,只需要修改节点之间的指针即可。与之相反,数组的存储则需要连续的空间,当需要向数组中插入数据或者修改顺序的时候,需要对整个空间进行处理。所以:我们常说 如果查找的比较频繁就使用数组,如果修改比较频繁那么建议使用链表链表是以节点的方式来进行数据存储的,它分为带头节点的链表和不带头节点的链表单向链表每一个节点中都分为data域和next域 ,data域存放数据 ,next域指向
2021-02-13 14:53:05
274
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
276
原创 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
165
原创 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
186
原创 数据结构学习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
178
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
177
原创 基于命令模式写一个代码生成器
需求:生成的代码可能是java代码 可能是配置文件,也可能是空目录(初始化工程)支持自定义拓展,能够有很好的拓展性外部调用起来很简单,不需要关注里面的生成逻辑,外部传入的参数要尽量简单组件调用由于生成器需要有很好的拓展性,所以我们采用命令模式实现,#mermaid-svg-aMVf43W2HVud0c1s .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:
2021-01-31 13:43:57
178
1
hibernate-分表插件实现思路
2020-10-05
tomcat组件启动时序图.vsdx
2020-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人