自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 资源 (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 515

原创 InvalidDefinitionException: No serializer found for class java.lang.Object and no properties

Jackson可能没有为java.lang.Object提供默认的序列化器。对于通用的类型,你可能需要提供自定义的序列化器。解决这个问题的方法之一是明确告诉Jackson如何处理Object类型。

2024-01-05 21:31:49 653

原创 mybatis用拦截器实现字段加解密

根据公司业务需要,灵活对客户敏感信息进行加解密,这里采用mybatis拦截器进行简单实现个demo。

2023-10-15 16:55:30 806

原创 枚举(enum)

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。例如定义一个颜色的枚举类。以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。每个枚举都是通过 Class 在内部实现的,且所有的的。

2023-10-12 21:43:05 223

原创 SpringMVC源码-DispatcherServlet

通俗点的解释就是Handler 是用来干活的工具,HandlerMapping用于根据需要干的活找到相应的工具,HandlerAdapter 是使用工具干活的人。处理流程:1、请求进入DispatcherServlet中,通过request 找到对应的handler2、根据handler找到对应的HandlerAdapter3、HandlerAdapter处理handler4、调用processDispatchResult方法处理上面处理结果(包括找到view渲染输出给用户)

2023-07-05 19:15:55 249

原创 Mybatis源码01-Executor

为了方便公司业务排查问题,要求打印执行的sql,以及执行时间。编写了一个Mybatis的拦截器,此前从未看过mybatis的源码,在调试的过程中不断阅读源码,后边想更深刻了解一下,看了鲁班大叔的视频,想做一下记录以及学习过程。

2023-04-26 21:20:45 454 1

原创 SpringBoot 事务

在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。

2023-04-23 21:06:17 1131

原创 mybatis 拦截器使用

第一步:编写拦截器,并实现打印sql日志。

2023-04-21 20:15:09 332

原创 ApplicationContextAware接口

方法都是 IOC 容器启动时最核心的方法。bean初始化时各个扩展点的执行顺序。

2023-04-13 21:26:45 2306

原创 一文理解JVM虚拟机

调优的最终目的都是为了令应用程序使用最小的硬件消耗来承载更大的吞吐。jvm的调优也不例外,jvm调优主要是针对垃圾收集器的收集性能优化,令运行在虚拟机上的应用能够使用更少的内存以及延迟获取更大的吞吐量。[文章转载:https://juejin.cn/post/6844903892774289421]

2023-01-28 20:02:01 627

原创 多线程——synchronized详解

互斥同步是一种最常见也是最主要的并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一条(或者是一些, 当使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量 (Mutex)和信号量(Semaphore)都是常见的互斥实现方式。因此在“互斥同步”这四个字里面,互斥是因,同步是果;互斥是方法,同步是目的。在Java里面,最基本的互斥同步手段就是synchronized关键字。

2022-10-13 16:49:32 3073

转载 深入理解XXL-JOB执行器注册原理

XxlJobConfig配置类向Springbean容器中注册了XxlJobSpringExecutor,XxlJobSpringExecutor这个bean实现了SmartInitializingSingleton接口,会在实例化bean后进行初始化操作。XxlJobSpringExecutor会调用XxlJobExecutor的start方法,进行一些初始化操作。1、调度中心对外暴露一个apiHTTP接口,执行器在注册的时候调用这个接口进行信息的注册。...

2022-07-28 14:29:21 6372 1

原创 XxlJob分布式任务调度平台

官网上介绍这是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。xxl-job环境依赖于mysql。xxl-job是通过一个中心式的调度平台,调度多个执行器执行任务,调度中心通过DB锁保证集群分布式调度的一致性,这样扩展执行器会增大DB的压力,但是如果实际上这里数据库只是负责任务的调度执行。但是如果没有大量的执行器的话和任务的情况,是不会造成数据库压力的。xl-job中心式的调度平台,而且监控界面就集成在调度中心,界面又简洁,对于等等。...

2022-07-21 16:31:40 1360

原创 SpringBoot接口恶意爆刷请求+redis分布式锁

在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻击的情况,通过intercept和redis针对url+ip在一定时间内访问的次数来将ip禁用,可以根据自己的需求进行相应的修改,来打打自己的目的;首先工程为springboot框架搭建,不再详细叙述。直接上核心代码。首先创建一个自定义的拦截器类,也是最核心的代码;1、引入依赖2、配置文件yml编写3、拦截器类:代码中redis的使用的是分布式锁的形式,这样可以最大程度保证线程安全和功能的实现效果。代码

2022-06-23 17:11:18 296

原创 idea maven 依赖忽然失效

问题来源:idea中新建项目,maven环境也配置好了,但是下来的依赖都没用jar包。刷新好几遍,甚至将本地仓库的下的依赖全都删除了还是不行。问题解决:IDEA打开右侧 maven projects 点击顶部的M图标(看下图)不同版本有可能图标不同输入mvn -U idea:idea回车执行...

2022-03-05 11:13:55 1048 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 220

原创 Kubernetes集群YAML文件详解

概述k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML 格式文件中,我们把这种文件叫做资源清单文件,通过kubectl 命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署了。一般在我们开发的时候,都是通过配置YAML文件来部署集群的。YAML文件:就是资源清单文件,用于资源编排YAML文件介绍YAML概述YAML :仍是一种标记语言。为了强调这种语言以数据做为中心,而不是以标记语言为重点。YAML 是一个可

2022-02-18 17:15:00 238

原创 Kubernetes核心技术Service

Kubernetes核心技术Service前言前面我们了解到 Deployment 只是保证了支撑服务的微服务Pod的数量,但是没有解决如何访问这些服务的问题。一个Pod只是一个运行服务的实例,随时可能在一个节点上停止,在另一个节点以一个新的IP启动一个新的Pod,因此不能以确定的IP和端口号提供服务。要稳定地提供服务需要服务发现和负载均衡能力。服务发现完成的工作,是针对客户端访问的服务,找到对应的后端服务实例。在K8S集群中,客户端需要访问的服务就是Service对象。每个Service会对应一个集

2022-02-15 17:25:10 135

原创 Springboot+MyBatis+MySQL实现读写分离

引言读写分离就是对于一条SQL该选择哪一个数据库去执行,至于谁来做选择数据库这件事,主库一般用来执行“写”操作,从库用来执行“读”操作,从库可以有多个,主库从库之间的数据同步则是通过数据库间的异步线程进行通信。一般来说,读写分离有两种实现方式。第一种是依靠中间件MyCat,也就是说应用程序连接到中间件,中间件帮我们做SQL分离,去选择指定的数据源;第二种是应用程序自己去做分离。主要是利用Spring提供的路由数据源,以及AOP。读写分离实现读写分离需要的基础环境的的搭建:Linux下MySQL实现主从

2022-02-11 17:15:49 744

原创 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 851

原创 普罗米修斯监控k8s集群

Kubernetes集群资源监控概述监控指标一个好的系统,主要监控以下内容集群监控节点资源利用率节点数运行PodsPod监控容器指标应用程序【程序占用多少CPU、内存】监控平台使用普罗米修斯【prometheus】 + Grafana 搭建监控平台prometheus【定时搜索被监控服务的状态】开源的监控、报警、数据库以HTTP协议周期性抓取被监控组件状态不需要复杂的集成过程,使用http接口接入即可Grafana开源的数据分析和可视化工具

2022-02-09 14:27:41 4295 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 963

原创 k8s核心技术-Deployment

什么是DeploymentDeployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括:定义Deployment来创建Pod和ReplicaSet滚动升级和回滚应用扩容和缩容暂停和继续DeploymentDeployment表示用户对K8S集群的一次更新操作。Deployment是一个比RS( Replica Set, RS) 应用模型更广的 API 对象,可

2022-02-02 04:30:00 2594

原创 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 3710

原创 Centos7安装普罗米修斯(Prometheus)监控

一、普罗米修斯介绍在古希腊神话中普罗米修斯曾与智慧女神雅典娜共同创造了人类,普罗米修斯负责用泥土雕塑出人的形状,雅典娜则为泥人灌注灵魂,并教会了人类很多知识。普罗米修斯还反抗宙斯,将火种带到人间。在软件开发领域,普罗米修斯是一款开源的监控神器。Prometheus架构:prometheus是一个用Go编写的时序数据库,可以支持多种语言客户端,架构如下:Prometheus安装过程:安装go 语言环境在监控服务器上安装prometheus在被监控环境上安装export安装grafana

2022-01-30 10:06:09 5570 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 884

原创 初识Kubernetes(k8s)

k8s是什么?k8s是一个全新的基于容器技术的分布式架构领先方案。是负责自动化运维管理多个Docker程序的集群。传统的后端部署办法:把jar包(war包、可执行二进制文件、配置文件等)放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。其中最大的一个问题在于:**如果服务的请求量上来,已部署的服务响应不过来怎么办?**传统的做法往往是,如果请求量、内存、CPU超过阈值做了告警,运维马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力。

2022-01-28 08:30:00 205

原创 Docker容器数据卷

一、什么是Docker容器数据卷?Docker的理念:将应用和运行的环境打包形成镜像,然后再由镜像创建容器并运行,这过程随着容器的运行,可能会产生一些数据,但是Docker容器产生的数据,如果不通过docker-commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。所以,为了能保存容器运行过程中产生的数据,我们使用数据卷来实现持久化。 另外,也可以实现容器间继承+共享数据。二、Docker容器数据卷的特点数据卷的设计目的就是数据的持久化,完全独立于容

2022-01-28 08:15:00 657

原创 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 2799

原创 docker看这一篇就够了

一、什么是Dockerdocker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中。二、 了解docker2.1 docker 思想1、集装箱没有docker之前,我们需要把一个项目转移到另一个服务器上部署,可能遇到服务启动不了的问题,比如少一些配置文件什么的或者少了什么数据。 有了docker的集装箱,它会把项目所用的代码和配置文件等,都装在一起,可以保证我们

2022-01-26 14:52:52 1648

原创 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 347

原创 JVM与Java体系结构

JVM与Java体系结构Java vs C++垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。C语言需要自己来分配内存和回收内存,Java全部交给JVM进行分配和回收。推荐书籍Java生态圈Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一

2022-01-14 16:01:03 133

原创 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 6061

原创 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 7458

原创 MySQL索引

MySQL索引索引的优点最典型的例子就是查新华字典,通过查找目录快速定位到查找的字大大减少了服务器需要扫描的数量帮助服务器避免排序和临时表将IO变成顺序IO尽可能的降低磁盘的寻址时间,也就是局部性原理,就是很大一部分数据在未来的一段时间被连续访问在复制1G压缩包 和 1G小文件,前者的速度会大于后者减少IO的量,例如写SQL语句的时候,不要写 select *减少IO的次数,一次IO能搞定的事,不使用3次IO索引的用处快速查找匹配where子句的行从considerati

2021-12-24 11:30:35 101

原创 java——线程池

一、线程池线程池可以看做是线程的集合。它的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后 启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕, 再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。​线程复用:每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run(

2021-12-10 10:37:01 14715

原创 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 700

原创 npm设置和取消代理的方法

npm设置和取消代理的方法设置代理npm config set proxy http://server:portnpm config set https-proxy http://server:port代理用户名和密码npm config set proxy http://username:password@server:portnpm confit set https-proxy http://username:password@server:port取消代理npm config de

2021-11-28 13:34:57 2248

原创 Spring为什么不推荐你使用@Autowired ?

Spring为什么不推荐你使用@Autowired ?我们总能发现当使用IDEA写代码的时候,@Autowired注解会报黄,我们把鼠标悬停在上面,可以看到这个如下图所示的警告信息:当我们按住alt+回车键,idea就会帮我们修改成这样:我向来都是使用@Autowired来完成依赖注入的,但是我在公司的代码中发现大多都是下边的那种写法,这让我开始有些困惑,直接一个注解就可以完成的事,为啥要写构造函数呢?在网上也看了几篇文章,同时也去阅读官方文档(全英看不懂,有道立功),接下来就一起回顾一下spri

2021-11-23 10:29:49 1948

原创 sql加强——练习篇

sql语句练习建表:--学生表CREATE TABLE `Student`(`s_id` VARCHAR(20),`s_name` VARCHAR(20) NOT NULL DEFAULT '',`s_birth` VARCHAR(20) NOT NULL DEFAULT '',`s_sex` VARCHAR(10) NOT NULL DEFAULT '',PRIMARY KEY(`s_id`));--课程表CREATE TABLE `Course`(`c_id` VARCHAR(2

2021-11-16 16:18:03 130

SM2_SM3_SM4Encrypt.zip

国密加密代码

2021-12-23

空空如也

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

TA关注的人

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