- 博客(61)
- 收藏
- 关注
原创 1秒将本地SpringBoot项目jar包部署到Linux环境(看这一篇就够了)
一键将本地已经打包好的SpringBoot项目部署到linux环境,实现秒级部署迭代步骤:1. 在windows环境使用命令启动SpringBoot项目2. 在Linux环境使用命令启动项目3. 在Linux环境使用脚本启动项目4. 优化脚本,每次启动时先关闭旧项目5. 分离依赖,每次上传Linux环境只上传几百k的代码包6. 搭配IDEA插件,实现在IDEA中一键部署启动
2023-01-30 23:15:39 10189 8
原创 Linux学习笔记 - 尚硅谷2w+字(超全,基本能掌握全部常用命令,可用来随时搜索)
RPM(RedHat Package Manager),RedHat软件包管理工具,类似于windows里面的setup.exe,是Linux这系列操作系统的打包安装工具,它虽然是RedHat的标志,但理念是通用的。 RPM包的名称格式 “apache” 软件名称 “1.3.23-11”软件的版本号,主版本和此版本 “i386”是软件所运行的硬件平台,Intel 32位处理器的统称 “rpm”文件扩展名,代表RPM包。
2021-09-13 22:58:17 7856 9
原创 内网Debian\Ubuntu服务器安装dep包,基于apt-rdepends下载相关依赖
的方式下载后,拷贝进内网直接安装,可能会安装不上,因为有些包存在依赖关系,例如A依赖B,我们只下了A,在内网安装的时候就会因为没有安装B而报错,而且有些软件包的依赖比较多,一个一个的报错再解决也不太现实。的输出会包含包名和依赖关系的层级结构。你需要过滤掉重复的包名和无关信息,只保留唯一的包名列表。所以,需要现在联网的环境中将所需的软件包下载完之后,拷贝到内网环境。安装脚本时,在安装A的时候,必须有B,但是B对应的deb我们也已经下载完了。的方式,初步试了一下,也是可以下载到对应的依赖包。
2024-10-07 00:36:15 1100
原创 apt-rdepends -d基于graphviz生成有向图
在中,使用-d或--dotty选项生成的 dotty 图表,可以让你清晰地查看软件包及其依赖的结构。通过该选项,会生成一个描述依赖关系的.dot文件(一个文本文件),然后你可以使用 Graphviz 将其转换为实际的图形,像 PNG 或 PDF。
2024-10-07 00:27:56 215
原创 Debian&Ubentu系统apt依赖分析工具apt-rdepends使用
是一个强大的工具,能够帮助用户了解 Debian 和 Ubuntu 系统中的软件包依赖结构。通过递归显示依赖关系树,它让用户对包管理有了更清晰的认识,从而避免依赖问题导致的系统崩溃或功能丢失。无论你是系统管理员、开发者,还是普通用户,掌握都能够帮助你更好地管理系统包,并有效处理依赖冲突问题。
2024-10-07 00:24:02 1307
原创 基于Docker部署最新版本SkyWalking【10.1.0版本】
由于本地的 JDK 版本与 SkyWalking 对应的 JDK 版本不一致,为了避免兼容性问题并简化环境配置,我们使用 Docker 来部署 Apache SkyWalking。这种方法可以确保在隔离的容器中运行 SkyWalking,从而避免对本地环境的影响。
2024-10-04 23:22:58 758
原创 CentsOS 7 “Could not resolve host: mirrorlist.centos.org; 未知的错误”问题解决
在VMware安装完CentOS 7镜像后,发现yum无法使用,报错信息如下:已加载插件:fastestmirrorDetermining fastest mirrorsCould not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was14: curl#6 - "Could not resolve host: mirrorlist.centos
2024-08-18 21:43:21 1713 8
原创 基于Docker部署最新版本Jenkins
输入密码等待一会后,会跳转到插件安装界面(我这里选择安装它推荐的插件,大家可以根据自己的需求自己选择)这里如果使用的是旧版本的jenkins在国内会一直下载失败,应该是镜像源问题,需要参考其他文章。创不创建用户都行,不创建的话,后面使用admin登录,密码是上面的默认密码。点保存并完成,后面Jenkins URL的地址还能修改。
2024-08-18 21:36:00 417
原创 Linux配置Maven环境
官网地址:https://maven.apache.org/download.cgi。获取其对应的下载链接(也可以使用下载到本地后,手动上传到服务器的方式)切到自己想要存放的路径后,使用wget下载。使用pwd查看文件路径,ll查看文件名称。这里以当前最新版本3.9.8为例。
2024-08-18 21:29:33 929
原创 Linux配置JDK8环境变量
官网下载地址:https://www.oracle.com/java/technologies/downloads/?将其下载到本地(我这里下载的是x64 Compressed Archive版本)tar -zxvf 显示以下内容即为成功。需要注册后,登录下载。另:启动jar包命令。
2024-08-18 21:28:11 592
原创 Windows设置Redis为开机自启动
Redis作为当前最常用的当前缓存技术,基本上Web应用中都有使用。所以,每次我们在本地启动项目前,都必须将Redis服务端启动。但是,每次都要去启动Redis就很麻烦,有没有办法做到开机自动启动Redis呢?这当然是可以的,本文主要就是介绍Windows系统如何配置开机启动Redis。
2024-05-03 19:53:56 2596 1
原创 使用DataGrip连接DM达梦数据库
达梦数据库虽然提供了官方的数据库管理工具"DM管理工具",但是该软件经常莫名卡顿,影响开发效率和心情。所以,本人一般使用DataGrip进行数据库操作。DataGrip是JetBrains公司开发的一款强大的数据库IDE,支持多种数据库系统。以下是使用DataGrip连接达梦数据库的方式。
2024-05-03 19:24:06 3895
原创 【链路追踪】xxl-job定时任务日志增加traceId
注入,在生产环境进行日志追溯时比较方便。但是在使用xxl-job进行定时任务管理时,却发现xxl-job线程打印出来的日志没有。注入,同时也增加了统一日志打印,不需要在每个定时任务入口都打印日志(如果不需要也可以去掉)。,查询日志时十分不方便,于是通过使用。通过增加以上类,即可实现。
2023-11-23 23:41:30 1439
原创 【Redisson】基于自定义注解的Redisson分布式锁实现
在项目中,经常需要使用Redisson分布式锁来保证并发操作的安全性。在未引入基于注解的分布式锁之前,我们需要手动编写获取锁、判断锁、释放锁的逻辑,导致代码重复且冗长。为了简化这一过程,我们引入了基于注解的分布式锁,通过一个注解就可以实现获取锁、判断锁、处理完成后释放锁的逻辑。这样可以大大简化代码,提高开发效率。
2023-11-23 23:07:54 1594
原创 【国密SM2】基于Hutool的SM2公私钥生成、签名验签、加密解密(30行代码搞定)
由于在公司项目中需要用到国密SM2秘钥生成、签名、验签功能,找了网上很多的资料,发现其工具类都异常复杂,最终找到了hutool工具包,但其官网的示例也不尽人意。于是,对Hutool提供的SM2类进行封装,封装成了自己使用的Sm2Util工具类,代码量在20行以内,尽可能做到简单易懂。
2023-10-11 00:35:34 14841 4
原创 【SimpleDateFormat】类线程不安全问题分析及解决方案
在日常开发中,我们经常需要去做日期格式转换,可能就会用到类。但是,如果使用不当,就很容易引发生产事故!如果是使用JDK 8+,则直接使用即可。如果使用的是低版本的JDK,则可以使用TheadLocal或解决方案。
2023-10-04 00:01:38 643
原创 MySQL高级篇_16_MVCC多版本并发控制_尚硅谷_宋红康
MVCC(Multiversion concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准,在不同的DBMS中的MVCC的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的DBMS文档)。
2023-09-10 23:40:30 271
原创 MySQL高级篇_13_事务基础知识_尚硅谷_宋红康
事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。
2023-08-30 23:21:20 1171
原创 RocketMQ、Dashboard部署以及安全设置
以当前最新版:5.1.3为例,下载链接为:https://dist.apache.org/repos/dist/release/rocketmq/5.1.3/rocketmq-all-5.1.3-bin-release.zip。当前,已经为RocketMQ设置了密码,但是,还存在问题,操作面板没有设置密码,操作面板没有设置密码,在实际应用中,也是很危险的。但是在实际使用中,还会对RocketMQ的访问增加密码限制,接下来,进行密码设置。至此,RocketMQ的启动、测试是否启动以及关闭已经说明完毕。
2023-08-15 21:35:01 9789 5
原创 JDK工具之jps详解
JDK(Java Development Kit)是 Java 开发人员必备的工具包,其中包含了许多强大的命令行工具,用于开发、调试和监控 Java 应用程序。其中,jps(Java Virtual Machine Process Status Tool)是一个简单但十分有用的命令行工具,用于查看当前运行的 Java 进程以及它们的相关信息。在本文中,我们将详细了解jps命令及其用法。jps命令用于列出当前系统中正在运行的 Java 进程(Java 虚拟机进程)。
2023-07-26 23:38:05 5349
原创 Spring中@Transactional注解事务传播行为propagation参数说明
在SpringBoot项目中,我们通常使用去进行事务控制,而注解中,有个比较关键的属性就是。在一个的环境中,一个事务方法调用另一个事务方法时,就会涉及到事务的传播行为,该属性用来控制一段代码经过多个注解生效(同一个类的不同方法调用是不会生效的)的方法的事务传播机制。由源码可知,他是用来指定的,在不指定的情况下,默认值为。而查看可知,一共有以下7个属性。
2023-06-28 23:53:42 868
原创 rocketmq-spring-boot-starter支持SpringBoot 1.x(spring-context 4.x)版本
由于历史原因,项目使用的是版本,而且由于种种原因,不能升级。在项目开发迭代过程中,决定使用RocketMQ作为消息中间件,因为是SpringBoot项目,理所应当的引入了依赖。
2023-06-27 23:15:33 2019
原创 记一次Redisson连接k8s环境Redis报UnknownHostException-域名解析错误问题解决
Factory method 'getRedisson' threw exception; nested exception is org.redisson.client.RedisConnectionException: java.net.UnknownHostException: failed to resolve 'redis-service.middleware.svc' after 3 queries Redisson连接k8s环境报UnknownHostException域名解析错误
2023-05-25 00:42:58 2113
原创 【链路追踪】Java多线程之间日志traceId传递
在生产环境中,由于处在并发环境,所以日志输出的顺序散落在各个不同行,通过traceId就能够快速定位到同一个请求的多个不同的日志输出,可以很方便地跟踪请求并定位问题。但是,如果在代码中使用了多线程,那么就会发现,新开的线程不会携带父线程traceId。于是,通过继承父线程的MDC上下文信息,使得新开的线程与父线程保持一致的traceId。
2023-04-12 23:19:48 2514 4
原创 Linux之top命令详解
top命令是linux操作系统常用的性能分析工具,能够实时的显示系统各个进程的资源-占用情况,常用于CPU、内存问题排查。
2023-04-07 00:05:49 2088
原创 MySQL高级特性_06_索引的数据结构_尚硅谷_宋红康
索引(index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构“,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的技术上实现高级查找算法。索引是在存储引擎中实现的因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引。总索引长度至少为256字节。有些存储引擎支持更多的索引数和更大的索引长度。
2023-03-12 15:24:32 804
原创 组装树形结构数据优化思路_时间复杂度O(n)Java语言例子
项目中经常会遇到前端需要展现树形结构数据,比如菜单树、省市区联动。在公司的项目中老代码用的是递归构建树结构,2万多个数据就需要跑20s,把生产服务器CPU都跑满了。于是对该方法进行重构。
2023-03-04 00:12:23 1760 3
原创 JVM下篇:性能监控与调优篇_05_分析GC日志_尚硅谷
在显示完区域容量GC的情况之后,会接着显示整个堆内存区域的GC情况:GC前堆内存已使用容量->GC后堆内存容量(堆内存总容量),并且堆内存总容量 = 9/10 新生代 + 老年代,然后堆内存总容量肯定小于初始化的内存大小。在显示完区域容量GC的情况之后,会接着显示整个堆内存区域的GC情况:GC前堆内存已使用容量->GC后堆内存容量(堆内存总容量),并且堆内存总容量 = 9/10 新生代 + 老年代,然后堆内存总容量肯定小于初始化的内存大小。发生了一次垃圾回收,这是一次Minior GC。
2022-10-16 15:17:24 449
原创 JVM下篇:性能监控与调优篇_04_JVM运行时参数_尚硅谷
只有显式使用Eden区和Survivor区的比例,才会让比例生效,否则比例都会自动设置,至于其中的原因,请看下面的-XX:+UseAdaptiveSizePolicy中的解释,最后推荐使用默认打开的-XX:+UseAdaptiveSizePolicy设置,并且不显示设置-XX:SurvivorRatio。没有显示使用Eden区和Survivor区的比例,无论打开或者关闭-XX:+UseAdaptiveSizePolicy,都会自动设置Eden区和Survivor区的比例。设置年轻代并行收集器的线程数。
2022-10-16 15:16:23 1237
原创 JVM下篇:性能监控与调优篇_03_JVM监控及诊断工具-GUI篇_尚硅谷
无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。要求用户登录到目标Java应用所在的宿主机上,使用起来不是很方便。分析数据通过终端数据,结果展示不够直观。为此,JDK提供了一些内存泄漏的分析工具,如jconsole,jvisualvm等,用于辅助开发人员定位问题,但是这些工具很多时候并不满足快速定位的需求。所以这里我们介绍的工具相对多一些、丰富一些。图形化综合诊断工具JDK自带工具jconsole:JDK自带的可视化监控工具。
2022-10-16 00:28:29 2280
原创 JVM下篇:性能监控与调优篇_02_JVM监控及诊断工具-命令行篇_尚硅谷
性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。 Java作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成Java应用出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络I/O、垃圾收集等。想要定位这些问题,一款优秀的性能诊断工具必不可少。体会1:使用数据说明,使用知识分析问题,使用工具处理问题。体会2:无监控、不调优!
2022-10-03 14:19:31 1265
原创 JVM下篇:性能监控与调优篇_01_概述篇_尚硅谷
- 生产环境发生了内存溢出该如何处理?- 生产环境应该给服务器分配多少内存合适?- 如何对垃圾回收器的性能进行调优?- 生产环境CPU负载飚高该如何处理?- 生产环境应该给应用分配多少线程合适?- 不加log,如何确定请求是否执行了某一行代码?- 不加log,如何实时查看某个方法的入参与返回值?
2022-09-28 00:09:12 331
原创 JVM上篇_17_垃圾回收器_尚硅谷
垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。Java不同版本新特性语法层面:Lambda表达式、switch、自动拆箱装箱、enum、泛型API层面:Stream API、新的日期时间、Optional、String、集合框架底层优化:JVM优化、GC的变化、元空间、静态域、字符串常量池等。
2022-09-18 17:47:03 1619
原创 Shell学习笔记_尚硅谷
常用系统变量HOMEHOME、HOMEPWD、SHELLSHELL、SHELLUSER(1)查看系统变量的值echo $HOMEenv set # 包含所有系统自定义和用户自定义的变量 printenv $USER printenv USER(1)基本语法定义变量:变量名=变量,注意,= 前后不能有空格撤销变量:usset变量名声明静态变量:readonly变量,注意:不能unset(2)变量定义规则。
2022-09-12 22:27:41 3861 10
原创 JVM上篇_16_垃圾回收相关概念_尚硅谷
对于老版本的Oracle JDK,因为永久代的大小是有限的,并且JVMU对永久代垃圾回收(如,常量池回收、写在不再需要的类型)非常不积极,所以当我们不断添加新类型的时候,永久代出现OutOfMemoryError也非常多见,尤其是运行时存在大量动态类型生成的场合;弱引用和软引用一样,在构造弱引用时,也可以指定一个引用队列,当弱引用对象被回收时,就会加入指定的引用队列,通过这个队列可以追踪对象的回收情况。如果一个对象仅持有虚引用,那么它和没有引用几乎是一样的,随时都可能被垃圾回收器回收。
2022-09-12 22:20:02 196
原创 JVM上篇_15-垃圾回收相关算法_尚硅谷
注意,这些只是最基本的算法思路,实际GC实现过程要复杂的多,目前还在发展中的前沿GC都是复合算法,并且并行和并发兼备。
2022-09-12 22:19:28 239
原创 JVM上篇_14_垃圾回收概述_尚硅谷
蚂蚁金服你知道哪几种垃圾回收期,各自的优缺点,重点将一下cms和g1一面:JVM GC算法有哪些,目前的JDK版本采用什么回收这算法一面:G1回收器讲下回收过程GC是什么?为什么要有GC?一面:GC的两种判定方法?CMS收集器与GC收集器的特点。百度说一下GC算法,分代回收说下垃圾收集策略和算法天猫一面:jvm GC原理,JVM怎么回收内存一面:CMS特点,垃圾回收算法有哪些?各自的优缺点,他们共同的缺点是什么?滴滴一面:java的垃圾回收期都有哪些,说下g1的应用场景,平时你是如何搭配使用垃圾回收期的京东
2022-06-25 17:50:38 177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人