- 博客(134)
- 资源 (1)
- 收藏
- 关注

原创 linux常用命令
一、目录操作命令1.1 目录切换 cd命令:cd 目录cd / 切换到根目录cd /usr 切换到根目录下的usr目录cd …/ 切换到上一级目录 或者 cd …cd ~ 切换到home目录cd - 切换到上次访问的目录1.2 目录查看 ls [-al]命令:ls [-al]ls 查看当前目录下的所有目录和文件ls -a 查看当前目录下的所有目录和文件
2021-12-20 15:28:02
572
原创 Spring MVC文件请求处理-MultipartResolver
Spring Boot中的MultipartResolver是一个用于解析multipart/form-data类型请求的策略接口,通常用于文件上传。对应后端使用MultipartFile对象接收。
2024-10-19 18:28:28
1195
1
原创 EasyExcel之动态表头导出不生效
后来debug发现由于使用的是class对象,只要这个jvm不重启或者这个对象不被回收修改的index就一直存在,所以我们每次应该把index恢复成默认值。后来想他把缓存放在map里,key是Class,我直接每次都给他remove不就可以了。@ExcelProperty有两个属性可以帮我们排序:index和order,所以我就想每次在去写excel的时候,对映射类字段的index去动态排序。今天接到一个优化需求,表格导出后的表头顺序和页面不一致,要优化成一致的。根据传入的字段,动态导出数据,并保证顺序。
2024-05-30 20:32:45
1121
1
原创 Arthas-快速使用
开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了,如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启,无需代码更改。Arthas 作为观察者永远不会暂停正在运行的线程。
2024-05-26 13:18:07
613
原创 InvalidDefinitionException: No serializer found for class java.lang.Object and no properties
Jackson可能没有为java.lang.Object提供默认的序列化器。对于通用的类型,你可能需要提供自定义的序列化器。解决这个问题的方法之一是明确告诉Jackson如何处理Object类型。
2024-01-05 21:31:49
1394
原创 枚举(enum)
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。例如定义一个颜色的枚举类。以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。每个枚举都是通过 Class 在内部实现的,且所有的的。
2023-10-12 21:43:05
329
原创 SpringMVC源码-DispatcherServlet
通俗点的解释就是Handler 是用来干活的工具,HandlerMapping用于根据需要干的活找到相应的工具,HandlerAdapter 是使用工具干活的人。处理流程:1、请求进入DispatcherServlet中,通过request 找到对应的handler2、根据handler找到对应的HandlerAdapter3、HandlerAdapter处理handler4、调用processDispatchResult方法处理上面处理结果(包括找到view渲染输出给用户)
2023-07-05 19:15:55
317
原创 Mybatis源码01-Executor
为了方便公司业务排查问题,要求打印执行的sql,以及执行时间。编写了一个Mybatis的拦截器,此前从未看过mybatis的源码,在调试的过程中不断阅读源码,后边想更深刻了解一下,看了鲁班大叔的视频,想做一下记录以及学习过程。
2023-04-26 21:20:45
523
原创 一文理解JVM虚拟机
调优的最终目的都是为了令应用程序使用最小的硬件消耗来承载更大的吞吐。jvm的调优也不例外,jvm调优主要是针对垃圾收集器的收集性能优化,令运行在虚拟机上的应用能够使用更少的内存以及延迟获取更大的吞吐量。[文章转载:https://juejin.cn/post/6844903892774289421]
2023-01-28 20:02:01
735
原创 多线程——synchronized详解
互斥同步是一种最常见也是最主要的并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一条(或者是一些, 当使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量 (Mutex)和信号量(Semaphore)都是常见的互斥实现方式。因此在“互斥同步”这四个字里面,互斥是因,同步是果;互斥是方法,同步是目的。在Java里面,最基本的互斥同步手段就是synchronized关键字。
2022-10-13 16:49:32
3519
转载 深入理解XXL-JOB执行器注册原理
XxlJobConfig配置类向Springbean容器中注册了XxlJobSpringExecutor,XxlJobSpringExecutor这个bean实现了SmartInitializingSingleton接口,会在实例化bean后进行初始化操作。XxlJobSpringExecutor会调用XxlJobExecutor的start方法,进行一些初始化操作。1、调度中心对外暴露一个apiHTTP接口,执行器在注册的时候调用这个接口进行信息的注册。...
2022-07-28 14:29:21
7591
1
原创 XxlJob分布式任务调度平台
官网上介绍这是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。xxl-job环境依赖于mysql。xxl-job是通过一个中心式的调度平台,调度多个执行器执行任务,调度中心通过DB锁保证集群分布式调度的一致性,这样扩展执行器会增大DB的压力,但是如果实际上这里数据库只是负责任务的调度执行。但是如果没有大量的执行器的话和任务的情况,是不会造成数据库压力的。xl-job中心式的调度平台,而且监控界面就集成在调度中心,界面又简洁,对于等等。...
2022-07-21 16:31:40
1554
原创 SpringBoot接口恶意爆刷请求+redis分布式锁
在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻击的情况,通过intercept和redis针对url+ip在一定时间内访问的次数来将ip禁用,可以根据自己的需求进行相应的修改,来打打自己的目的;首先工程为springboot框架搭建,不再详细叙述。直接上核心代码。首先创建一个自定义的拦截器类,也是最核心的代码;1、引入依赖2、配置文件yml编写3、拦截器类:代码中redis的使用的是分布式锁的形式,这样可以最大程度保证线程安全和功能的实现效果。代码
2022-06-23 17:11:18
372
原创 idea maven 依赖忽然失效
问题来源:idea中新建项目,maven环境也配置好了,但是下来的依赖都没用jar包。刷新好几遍,甚至将本地仓库的下的依赖全都删除了还是不行。问题解决:IDEA打开右侧 maven projects 点击顶部的M图标(看下图)不同版本有可能图标不同输入mvn -U idea:idea回车执行...
2022-03-05 11:13:55
1250
1
原创 Kubernetes核心技术Pod
Kubernetes核心技术PodPod概述Pod是K8S系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在K8S上运行容器化应用的资源对象,其它的资源对象都是用来支撑或者扩展Pod对象功能的,比如控制器对象是用来管控Pod对象的,Service或者Ingress资源对象是用来暴露Pod引用对象的,PersistentVolume资源对象是用来为Pod提供存储等等,K8S不会直接处理容器,而是Pod,Pod是由一个或多个container组成。Pod是Kuber
2022-02-20 16:30:00
272
原创 Kubernetes集群YAML文件详解
概述k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML 格式文件中,我们把这种文件叫做资源清单文件,通过kubectl 命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署了。一般在我们开发的时候,都是通过配置YAML文件来部署集群的。YAML文件:就是资源清单文件,用于资源编排YAML文件介绍YAML概述YAML :仍是一种标记语言。为了强调这种语言以数据做为中心,而不是以标记语言为重点。YAML 是一个可
2022-02-18 17:15:00
291
原创 Kubernetes核心技术Service
Kubernetes核心技术Service前言前面我们了解到 Deployment 只是保证了支撑服务的微服务Pod的数量,但是没有解决如何访问这些服务的问题。一个Pod只是一个运行服务的实例,随时可能在一个节点上停止,在另一个节点以一个新的IP启动一个新的Pod,因此不能以确定的IP和端口号提供服务。要稳定地提供服务需要服务发现和负载均衡能力。服务发现完成的工作,是针对客户端访问的服务,找到对应的后端服务实例。在K8S集群中,客户端需要访问的服务就是Service对象。每个Service会对应一个集
2022-02-15 17:25:10
200
原创 Springboot+MyBatis+MySQL实现读写分离
引言读写分离就是对于一条SQL该选择哪一个数据库去执行,至于谁来做选择数据库这件事,主库一般用来执行“写”操作,从库用来执行“读”操作,从库可以有多个,主库从库之间的数据同步则是通过数据库间的异步线程进行通信。一般来说,读写分离有两种实现方式。第一种是依靠中间件MyCat,也就是说应用程序连接到中间件,中间件帮我们做SQL分离,去选择指定的数据源;第二种是应用程序自己去做分离。主要是利用Spring提供的路由数据源,以及AOP。读写分离实现读写分离需要的基础环境的的搭建:Linux下MySQL实现主从
2022-02-11 17:15:49
833
原创 Linux下Mysql主从复制搭建
Mysql主从复制搭建随着互联中业务访问量的发展,如果是单机部署数据库,就会导致I/O访问频率过高,为了让数据库高可用,采用数据库读写分离架构。主从复制原理当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。salve从库连接master主库,Master有多少个slave就会创建多少个binlog dump线程。当Master节点的binlog发生变化时,binlog dump 线程会通知所有的salve节点,并将相应的binlog内容推送给sl
2022-02-11 10:21:59
932
原创 普罗米修斯监控k8s集群
Kubernetes集群资源监控概述监控指标一个好的系统,主要监控以下内容集群监控节点资源利用率节点数运行PodsPod监控容器指标应用程序【程序占用多少CPU、内存】监控平台使用普罗米修斯【prometheus】 + Grafana 搭建监控平台prometheus【定时搜索被监控服务的状态】开源的监控、报警、数据库以HTTP协议周期性抓取被监控组件状态不需要复杂的集成过程,使用http接口接入即可Grafana开源的数据分析和可视化工具
2022-02-09 14:27:41
4818
2
原创 Kubernetes集群管理工具kubectl
概述kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署命令格式命令格式如下kubectl [command] [type] [name] [flags]参数command:指定要对资源执行的操作,例如create、get、describe、deletetype:指定资源类型,资源类型是大小写敏感的,开发者能够以单数 、复数 和 缩略的形式常见命令kubectl help 获取更多信息通过 help
2022-02-07 08:34:55
1198
原创 k8s核心技术-Deployment
什么是DeploymentDeployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括:定义Deployment来创建Pod和ReplicaSet滚动升级和回滚应用扩容和缩容暂停和继续DeploymentDeployment表示用户对K8S集群的一次更新操作。Deployment是一个比RS( Replica Set, RS) 应用模型更广的 API 对象,可
2022-02-02 04:30:00
2721
原创 kubernetes安装与配置
一、系统要求软硬件最低配置推荐配置cpu和内存Master: 至少2核和4GB内存Node:至少4核和16GB内存Master: 4核和16GB内存Node: 应根据需要运行的容器数量进行配置Docker1.9版本以上1.12版本etcd2.0版本以上3.0版本单master集群单个master节点,然后管理多个node节点多master集群多个master节点,管理多个node节点,同时中间多了一个负载均衡的过程二、e
2022-01-31 23:45:00
3956
原创 Centos7安装普罗米修斯(Prometheus)监控
一、普罗米修斯介绍在古希腊神话中普罗米修斯曾与智慧女神雅典娜共同创造了人类,普罗米修斯负责用泥土雕塑出人的形状,雅典娜则为泥人灌注灵魂,并教会了人类很多知识。普罗米修斯还反抗宙斯,将火种带到人间。在软件开发领域,普罗米修斯是一款开源的监控神器。Prometheus架构:prometheus是一个用Go编写的时序数据库,可以支持多种语言客户端,架构如下:Prometheus安装过程:安装go 语言环境在监控服务器上安装prometheus在被监控环境上安装export安装grafana
2022-01-30 10:06:09
5974
12
原创 克隆虚拟机(centos7)时启动网卡报错(Failed to start LSB: Bring up/down networking)
当我克隆出一台新的centos7的虚拟机的时候,修改了网卡配置文件启动时,报错。[root@centos7 ~]# systemctl restart networkJob for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.[root@centos7 ~
2022-01-28 15:16:51
1120
原创 初识Kubernetes(k8s)
k8s是什么?k8s是一个全新的基于容器技术的分布式架构领先方案。是负责自动化运维管理多个Docker程序的集群。传统的后端部署办法:把jar包(war包、可执行二进制文件、配置文件等)放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。其中最大的一个问题在于:**如果服务的请求量上来,已部署的服务响应不过来怎么办?**传统的做法往往是,如果请求量、内存、CPU超过阈值做了告警,运维马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力。
2022-01-28 08:30:00
270
原创 Docker容器数据卷
一、什么是Docker容器数据卷?Docker的理念:将应用和运行的环境打包形成镜像,然后再由镜像创建容器并运行,这过程随着容器的运行,可能会产生一些数据,但是Docker容器产生的数据,如果不通过docker-commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。所以,为了能保存容器运行过程中产生的数据,我们使用数据卷来实现持久化。 另外,也可以实现容器间继承+共享数据。二、Docker容器数据卷的特点数据卷的设计目的就是数据的持久化,完全独立于容
2022-01-28 08:15:00
709
原创 Windows访问不了Jenkins
1、查看Jenkins端口号在Jenkins安装路径下同时也可以修改端口号。2、关闭Jenkins当我们Jenkins登录不进去去,可以尝试关闭服务,重新启动只需要在访问jenkins服务器的网址url地址后加上exit,关闭Jenkins服务。例如:http://localhost:8081/exit然后去手动启动2、重启Jenkies,只有在Jenkins服务启动状态下可进行。http://localhost:8081/restart3、重新加载配置信息,只有在Jenkins服
2022-01-27 14:38:38
2930
原创 docker看这一篇就够了
一、什么是Dockerdocker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中。二、 了解docker2.1 docker 思想1、集装箱没有docker之前,我们需要把一个项目转移到另一个服务器上部署,可能遇到服务启动不了的问题,比如少一些配置文件什么的或者少了什么数据。 有了docker的集装箱,它会把项目所用的代码和配置文件等,都装在一起,可以保证我们
2022-01-26 14:52:52
1828
原创 shell基本使用
一、Shell介绍Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言,Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。Shell 环境Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了
2022-01-24 10:48:01
418
原创 JVM与Java体系结构
JVM与Java体系结构Java vs C++垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。C语言需要自己来分配内存和回收内存,Java全部交给JVM进行分配和回收。推荐书籍Java生态圈Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一
2022-01-14 16:01:03
182
原创 JVM常用命令
官方文档地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html常用 JVM 参数:-Xms:初始堆大小,默认为物理内存的1/64(<1GB);默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制-Xmn:新生代
2022-01-13 17:33:47
6399
原创 JVM参数介绍
一、JVM参数分类根据jvm参数开头可以区分参数类型,共三类:“-”、“-X”、“-XX”,标准参数(-):所有的JVM实现都必须实现这些参数的功能,而且向后兼容;例子:-verbose:class,-verbose:gc,-verbose:jni……非标准参数(-X):默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;例子:Xms20m,-Xmx20m,-Xmn20m,-Xss128k……非Stable参数(-XX):此类参数各个jvm实现会有所不同(用的最多:
2021-12-28 12:00:00
7843
原创 MySQL索引
MySQL索引索引的优点最典型的例子就是查新华字典,通过查找目录快速定位到查找的字大大减少了服务器需要扫描的数量帮助服务器避免排序和临时表将IO变成顺序IO尽可能的降低磁盘的寻址时间,也就是局部性原理,就是很大一部分数据在未来的一段时间被连续访问在复制1G压缩包 和 1G小文件,前者的速度会大于后者减少IO的量,例如写SQL语句的时候,不要写 select *减少IO的次数,一次IO能搞定的事,不使用3次IO索引的用处快速查找匹配where子句的行从considerati
2021-12-24 11:30:35
148
原创 java——线程池
一、线程池线程池可以看做是线程的集合。它的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后 启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕, 再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。线程复用:每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run(
2021-12-10 10:37:01
14998
原创 SpringBoot——统一接口返回值和全局异常处理
统一接口返回值1、定义通用的数据返回对象@Data@Accessors(chain = true)public class GlobalResponse<T> implements Serializable { private Integer code; private String message; private T data; private final String timeStamp = DateUtils.localDateTimeToStri
2021-12-02 11:07:03
928
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人