自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(478)
  • 资源 (10)
  • 问答 (2)
  • 收藏
  • 关注

原创 Redis集群脑裂导致数据丢失问题处理

Redis的集群脑裂指在主从集群中,同时有两个master主节点,它们都能接收写请求。而脑裂最直接的影响,就是客户端不知道应该往哪个master主节点写入数据,结果就是不同的客户端会往不同的主节点上写入数据。此时Redis的集群脑裂就有可能会导致数据丢失。

2023-03-14 11:45:14 1990 1

原创 Spring cache + Redis实现缓存

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。

2023-02-14 14:29:04 2895 1

转载 nginx配置location总结及rewrite规则写法

file=test.png,于是匹配到location /data,先看/data/images/test.png文件存不存在,如果存在则正常响应,如果不存在则重写tryfiles到新的image404 location,直接返回404状态码。你可以看到 任何以/images/开头的都会匹配到D并停止,FG写在这里是没有任何意义的,H是永远轮不到的,这里只是为了说明匹配顺序。last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后的匹配。

2023-02-09 18:16:15 2397

原创 /bin/bash 和 /bin/sh的区别

/bin/bash 和 /bin/sh的区别

2023-01-28 11:00:23 1684

转载 十大经典排序算法

0.1 算法分类十种常见排序算法比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:对排序数据的总的操作次数。

2022-11-09 20:31:31 161

转载 rpc和http的区别

HTTP:如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。RPC:使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率。rpc的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。

2022-11-01 11:06:10 234

转载 dependencies与dependencyManagement的区别

dependencies>中的jar直接加到项目中,管理的是依赖关系(如果有父pom,子pom,则子pom中只能被动接受父类的版本);主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。

2022-10-31 20:30:23 98

原创 LVS + Keepalived 实现Nginx集群部署

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。

2022-10-20 11:29:35 298

原创 定位java应用最耗cpu的线程和代码

1)top 命令,找到耗cpu的进程ID。3)根据线程ID查询问题代码。1、消耗CPU的代码。

2022-10-19 20:41:29 1732

原创 Nginx 报错 Too many open files 问题处理

Nginx无法打开那么多的文件句柄,一方面是因为没有配置Nginx能够打开的最大文件数;另一方面是因为操作系统本身对打开的最大文件句柄数有限制,同样没有配置操作系统的最大文件句柄数。此时,当Nginx的连接数超过1024时,Nginx的错误日志中就会输出如上的错误信息。若要令修改ulimits的数值永久生效,则必须修改配置文件,修改/etc/security/limits.conf配置文件,在文件最后添加如下配置项。根据错误日志的输出信息,我们可以看出:是打开的文件句柄数太多了,导致Nginx报错了!

2022-10-10 11:02:36 1681

转载 雪花算法ID重复的分析与在项目中的解决

集群部署的微服务,当随机的机器ID相同,刚好在同一毫秒生成ID,时间戳相同,并且序列号也相同时,那么雪花算法的ID就会出现重复的问题。每次生成workerId时,从redis中获取到当前workerId最大值,并+1作为当前workerId,并存入redis。工作机器id:10bit,表示工作机器id,用于处理分布式部署id不重复问题,可支持2^10 = 1024个节点。如果workerId为1023,自增为1024,则重置0,作为当前workerId,并存入redis。

2022-09-22 16:26:33 2920

原创 SpringBoot+ MDC实现全链路调用日志跟踪

MDC(Mapped Diagnostic Context,映射调试上下文)是log4j、logback及log4j2提供的一种方便在多线程条件下记录日志的功能,基于ThreadLocal实现的一种工具类。

2022-09-15 11:55:42 725

原创 Spring boot发布到k8s并加载Configmap配置文件,实现配置热更新

在应用k8s之后, 配置文件可以在通过ConfigMap资源剥离出来单独部署, 本次记录spring boot框架的java应用结合k8s的ConfigMap的实现外部配置文件挂载及配置热更新的一次实践。

2022-09-02 14:14:15 6842 1

原创 批量ping、telnet脚本

1、批量ping脚本,并输出结果到文件。2、批量telnet,不同颜色区分。

2022-09-02 11:49:51 4348

原创 RocketMQ延时消息

常见的延时处理解决方案:定时任务扫描事先记录事件的触发时间点,定时任务不停查数据库对比触发时间。这种方式不实时,随着定时任务的执行频率变高,触发实时性会有所提升,但是频繁地扫描增加了数据库的压力,也是最简单的做法。JDK的解决方案jdk为我们提供的定时器Timer,延时队列DelayQueue。这种方式在单机,对可靠性要求不高的环境下是可以使用的,任务和队列都存在于jvm内存中,所以不支持分布式的环境,系统突然宕机后也无法恢复。消息中间件的延时消息生产者投递延时消息,消费者在规定时间后才能

2022-04-11 19:20:56 1995

原创 添加网络路由

route -p add 192.168.1.22 MASK 255.255.255.255 192.168.2.1route -p add 192.168.1.23 MASK 255.255.255.255 192.168.2.1命令解析如下route -p add 对端IP mask 子网掩码(我这里是因为要单独IP所以用4个255) 网关地址route print (查看路由表)route print >> c:\route.txt (将路由输出到文件)...

2022-03-23 14:44:01 14559

原创 Java校验框架使用@Valid、@Validated、OVAL+Groovy

@Valid 与 @ValidatedSpring Validation验证框架对参数的验证机制提供了@Validated;javax提供了@Valid,配合BindingResult可以直接提供参数验证结果;检验Controller入参规范时,@Validated和@Valid在基本验证功能上没有太多区别。但在分组、注解地方、嵌套验证等功能上有所不同:1. 分组@Validated:提供分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。@Valid:没有分组功能。2.

2022-02-24 18:44:51 2069

原创 使用HeidiSQL将mysql数据库表结构导出到CSV

select column_name as 字段, column_type as 数据类型, data_type as 字段类型, character_maximum_length as 长度, is_nullable as 是否为空, column_default as 默认值, column_comment as 备注from information_schema.columnswhere table_schema =...

2022-02-15 16:01:13 2874

原创 HTTP与RPC的区别

只要是远程调用都可以叫RPC,和是不是通过http没什么关系。http好比普通话,rpc好比团伙内部黑话。讲普通话,好处就是谁都听得懂,谁都会讲。讲黑话,好处是可以更精简、更加保密、更加可定制,坏处就是要求“说”黑话的那一方(client端)也要懂,而且一旦大家都说一种黑话了,换黑话就困难了。 RPC:Remote Produce Call远程过程调用,类似的还有RMI(Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。自定义数据格式..

2022-01-28 10:29:15 2013

转载 打造基于云原生的桌面云平台

桌面云平台相关管理面将云原生化,分布化,运行在Kubernetes中,直接提供统一的Kubernetes集群管理控制API以及集群信息的同步机制,实现跨集群Kubernetes的统一管控,如集群的账号、权限、配置的同步和统一;数据面打通跨云Kubernetes的内网,实现跨云通信。桌面云平台能力1、对异构IT基础设施资源的管理能力云桌面平台不仅需要对接现有资源池的VMware ESXi虚拟化技术、x86体系外,还需要支持对KVM虚拟化体系以及ARM,GPU等计算资源的接入。2、对资源业务的自

2021-11-15 11:03:51 228

转载 云手机产品介绍

云手机一、产品概述移动云云手机基于 ARM 服务器虚拟化技术,通过 APP、H5 为用户提供安全便捷的安卓手机服务,提 供和真机一样的云端资源(包括 CPU、内存、存储空间)以及安卓 ROM。打破了传统手机存储、性能、 续航的限制,可用于移动办公、仿真测试、家庭娱乐等场景。二、产品优势1、安全可靠应用在云端运行、数据在云端存储,为用户提供安全可 靠的数据迁移能力。2、方便快捷支持App客户端、H5等形式使用虚拟云手机,即开即 用、接入便捷、操作灵活,通过App进入后尽享与

2021-10-29 09:34:15 454

转载 vSphere Web Service SDK编程学习(二)

ws超时设置vmware vcenter sdk提供的接口都是通过ws的形式,默认设置的超时时间是60秒,实际操作底层资源的时候很容易就会返回类似read time out这样的错误,需要手动设置下ws的超时时间。 Map var1 = ((BindingProvider)basicConnection.getVimPort()).getRequestContext(); var1.put("com.sun.xml.internal.ws.connection.t..

2021-10-29 09:32:16 360

转载 有关Horizon View 使用AVI做负载均衡的POC试验

一、有关Horizon View 使用AVI做负载均衡的POC试验移动云云桌面Horizon架构:1.前期网络规划地址类型 地址规划 AVI Controller01 管理地址 172.20.254.235 Service Engine 管理地址 172.20.254.116-172.20.254.119 Horizon CS01 业务地址 192.168.253.200 Horizon CS02 业务地址 192.168.253.199 H

2021-10-29 09:28:38 422

原创 使用kubectl、docker命令(非root用户)

一、创建非root用户useradd dev #创建用户passwd dev #修改密码<br>二、赋予sudo权限root ALL=(ALL) ALLdev ALL=(ALL) ALL #新增用户信息三、配置dev用户使用kubectl使用权限1、切换到普通用户操作:su - devmkdir -p /home/dev/.kubesudo cp -i /etc/kubernetes/admin.kubeconfig /home/dev/.kube/conf

2021-10-25 10:17:47 902

转载 JVM内存区域——堆,栈,方法区等

运行时数据区域jdk1.7中, Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。程序计数器1. 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。2. 字节码指令、分支、循环、跳转、异常处理、线程恢复等基础功能都要依赖这个计数器来完成。3. 每条线程都有一个独立的程序计数器,各条线程之间计

2021-10-08 18:19:45 675

转载 移动云电脑基于K8S的mariadb云原生实践

一、K8S 有状态与无状态服务 随着Kubernetes平台在容器云计算领域的火热,云原生 一词也被提的越来越频繁。各类应用纷纷走上了容器化、云原生化的道路,无状态服务应用在Kubernetes平台上的运行,已经得到了大规模生产级别的实践认可。Kubernetes对基础设施关注更少、自动化程度更高,我们都知道 Kubernetes 在无状态应用部署管理,尤其是微服务领域,已经大放异彩。例如管理一个无状态的 Web 服务,我们可以使用 Kubernetes 的 Deployment 部署多副...

2021-09-29 09:04:48 644

转载 Windows沙盒技术调研

一、Windows沙盒技术介绍Windows沙盒提供了轻型桌面环境,可安全地隔离运行应用程序。 沙盒环境中Windows软件保持"沙盒"状态,并独立于主机运行。沙盒是临时的,关闭后,将删除所有软件和文件以及状态。每次打开应用程序时,都会获得沙盒的全新的实例。安装在主机上的软件和应用程序不会直接在沙盒中提供。如果需要沙盒环境中可用的特定Windows,则必须在环境中显式安装它们。(一)Windows沙盒具有以下属性:·部分Windows系统支持:此功能所需的一切内容都包含在Windows ...

2021-09-28 16:02:49 1091 1

转载 Git基本操作总结

Git基本操作:工作区:工作区就是我们经过git init的本地工作工作目录文件夹 暂存区:git add命令将工作区内容添加到暂存区 版本库:在工作区中被隐藏的.git目录 远程仓库:用于远程协作,通过push可实现本地与远程的交互1、首先创建一个版本库mkdir <file>:创建文件夹 cd<file>:进入目录 pwd:显示当前目录2、将上述创建的版本库变成git可以管理的仓库 git init:初始化一个git仓库3、将文件添加到版本库...

2021-09-22 15:22:06 257

转载 虚拟化系列-VMware篇-Horizon介绍

VMware 桌面虚拟化介绍 VMware是云计算和软件定义数据中心(SDDC)的领导者,在 VMware的 SDDC解决方案中,有很多基础架构,如 vSphere(计算虚拟化)、VSAN(存储虚拟化)、NSX(网络虚拟化)、vRA(自动化运维)等方面的能力,后续文章中会逐个进行介绍;本文主要介绍Horizon产品,它可以理解是虚拟桌面和应用的交付平台。VMware Horizon产品简介 VMware Horizon是一款桌面云(VDI)产品,向最终用户交付虚拟桌面和...

2021-09-22 15:12:15 21886 1

原创 局域网下windows从linux拷贝文件

文件在linux下,拷贝到windows中:在Linux执行命令 python -m SimpleHTTPServer, 然后在windows浏览器中,即可访问linux文件。

2021-08-10 17:54:42 293

原创 k8s 拉取镜像失败

利用k8s部署服务时,kubectl get all -o wide 查看到的pod运行状态异常kubectl describe pod pod-hhja889hkjshaf87yh 看到最后存在异常信息Error response from daemon: pull access denied for istio/citadel, repository does not exist or may require ‘docker login’,判断是没有登录或者登录没有生效导致的docker lo.

2021-07-28 14:28:33 1059

原创 Docker拉取私有镜像仓库问题解决

很多时候,我们在部署应用时需要从私有的镜像仓库中拉取镜像,Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,这样就会导致登录私有镜像仓库或拉取私有镜像时报如下的错误:docker login -u myUsername -p myPassword http://myIP:8080WARNING! Using --password via the CLI is insecure. Use --password-stdin

2021-07-28 12:48:40 2631

原创 windows下如何制作和应用数字签名证书 全流程

需要准备的工具:makecert.exe、cert2spc.exe、pvk2pfx.exe、signtool.exe。1、生成一个自签名的根证书(issuer,签发者)。makecert.exe -sv c:\mykey.pvk -n "CN=Comapy Name" c:\myCert.cer会弹出提示框,首先给RootIssuer.pvk文件设置私钥保护口令password ;2、再次输入这个口令用私钥(在RootIssuer.pvk文件中)来给公钥(在RootIssuer.cer文件中

2021-07-22 14:56:05 2256

原创 【K8S】Docker登录私有镜像仓库报错(http: server gave HTTP response to HTTPS client)

出现这问题的原因是:Docker自从1.3.X之后dockerregistry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。在”/etc/docker/“目录下,创建”daemon.json“文件(如果有的话在里面添加)。在文件中写入{ "insecure-registries":["私有镜像仓库"] }修改好后,重启docker即可systemctl daemon-reload systemctl restart doc..

2021-07-16 14:21:00 1732

原创 Nginx日志格式配置

各个时间的描述$request_time – 完整请求时间,从NGINX从客户端读取第一个字节开始,到NGINX发送响应正文的最后一个字节结束$upstream_connect_time – Nginx向后端建立连接开始到接受完数据然后关闭连接为止的时间$upstream_header_time – 建立到后端服务器的连接和接收响应头的第一个字节之间的时间$upstream_response_time – 从建立到后端服务器的连接到接收响应主体的最后一个字节之间的时间request_ti

2021-06-24 20:54:01 867

原创 Docker容器启动时获取启动参数

本文以Spring Boot为,ru'ti

2021-06-09 10:42:45 1702

原创 后端部署到docker后查看日志

docker logs [OPTIONS] CONTAINEROPTIONS说明:-f :跟踪日志输出-t :显示时间戳--tail :仅列出最新N条容器日志--since:显示某个日期后的所有日志CONTAINER 代表容器ID或容器名称1.查看指定时间后的日志,只显示最后100行:docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID2.查看最近30分钟的日志:docker...

2021-05-21 14:34:10 724

原创 springboot允许https和http同时访问

1. 申请ssl证书(可在阿里云申请)2. 执行命令,生成 jks 文件keytool -importkeystore -srckeystore 1314xxx.pfx -destkeystore 1314.jks -srcstoretype PKCS12 -deststoretype JKS说明:1314xxx.pfx:是你从阿里云上下载解压得到的文件1314.jks:这是你要生成的文件,也是终极文件(放到application.yml或者application.properties同等级

2021-04-28 17:49:31 437

原创 @Autowired自动注入Map(适用一个接口有多个实现类,需要根据参数灵活调用具体的实现方法)

@Autowired自动注入Map(适用一个接口有多个实现类,需要根据参数灵活调用具体的实现方法)Spring 会在启动时,自动查找实现了该接口的 bean,放到这个Map中去。Key为bean的名字,value为 实现了该接口的所有的 bean。接口 IAnimalpublic interface IAnimal { String eat ();}实现1 Cat@Servicepublic class Cat implements IAnimal { @Overrid

2021-03-02 10:40:38 4899 2

原创 ApplicationEventPublisher的使用学习

一、介绍1.ApplicationEventPublisherAware  ApplicationEventPublisherAware 是由 Spring 提供的用于为 Service 注入 ApplicationEventPublisher 事件发布器的接口,使用这个接口,我们自己的 Service 就拥有了发布事件的能力。  用户注册后,不再是显示地调用其他的业务 Service,而是发布一个用户注册事件。2.ApplicationListener  ApplicationListener接

2021-01-29 09:59:10 23719 7

软考中级-软件设计师真题含答案(2016-2020)

软考中级-软件设计师真题含答案(2016-2020)

2022-09-08

windows应用数字签名工具.zip

windows应用数字签名工具:makecert.exe、cert2spc.exe、pvk2pfx.exe、signtool.exe。

2021-07-22

k8s 部署 - 研发.docx

本文通过kudeadm方式在Linux上安装kubernetes v1.18.5集群,并实现服务的灰度发布

2021-07-09

实用的装修施工费用及采购清单

新房装修预算控制表格,实用的装修用品预算清单, 有部分选品提醒; 施工费用清单。表格比较好用,推荐。

2020-11-16

webuploader + springboot实现大文件的上传下载

前端webupload +后端 springboot 实现大文件的上传下载,可实现断点续传,秒传,亲测可用

2020-10-21

province_city_area.properties

全国省市县信息,数据是从高德地图获取,想知道如何获取的可以参考博客文章。

2020-04-30

Eclipse离线配置PMD插件

PMD是一种分析Java代码错误的工具。与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题,例如没有用到的变量、多余的变量创建操作、空的catch块,等等。此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范

2019-04-16

自动生成xsd所需的jar包

执行java -jar trang.jar a.xml a.xsd即可生成需要发的xsd校验文件

2019-01-04

Java代码管理Docker镜像仓库,百分百可用

Java代码管理Docker镜像仓库,项目中使用,百分百可用

2018-11-27

java将数据导入多个excel并压缩,亲测可用

目前项目有一个需求“数据的离线导入导出”,需要将数据分模块导入到不同的excel,然后压缩成数据包下载

2018-07-03

Windows环境下,安装MySQL多实例,并实现Mysql的主从同步

Windows环境下,安装MySQL多实例,并实现Mysql的主从同步

2017-10-18

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

TA关注的人

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