自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(242)
  • 收藏
  • 关注

原创 九.Spring之依赖注入、循环依赖原理

一.依赖注入诸如 @Autowired、@Inject、@Resource 是如何将实例注入到属性的。1.演示代码BookService,给其中用不同注解,注入不同的dao实例@Servicepublic class BookService { @Autowired(required=true) private BookDao bookDao; @Inject p...

2020-05-07 16:41:04 1040

原创 四.Sping之AOP源码

本文解读AOP是如何增强方法功能的。需要提前了解@Import 注解的功能:https://blog.csdn.net/u014203449/article/details/86559350BeanPostProcessor 后置处理器的功能:https://blog.csdn.net/u014203449/article/details/86665963Aware接口:https:/...

2020-04-24 11:06:47 309

原创 Cloudflare cdn 基本使用

个人版免费试用,一个邮箱账号只能缓存一个网站cdn。地址:cloudflare.com。

2024-01-17 10:33:20 847

原创 ceph、gluster、longhorn选型对比

高可用gluster-server部署两个以上的节点,gluster-server没有主从之分、是对等的。通过复制卷可以实现数据高可用,一个文件分别存在两个节点上,有一个节点宕机,文件依然能正常读写。为文件计算一个值,根据值放在某个pg上(pg属于某个osd),文件的其他副本放到其他osd上。文件实际是使用对象存储存到osd上,因为脱离了linux文件系统,所以无法在磁盘直观的看到文件,只能通过ceph挂载查看。Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储。

2024-01-11 13:33:43 1417

原创 CloudCone | 最便宜国外VPS | 2核1G一年只需17$ | 国外性价比高VPS | CloudCone 怎么样 | CloudCone 使用体验

海外VPS | 市面上找不到比这更便宜的vps | 2核1G内存55G硬盘SSD 一年只需要 17.12$

2024-01-11 10:06:40 1425 1

原创 Gluster ubuntu安装

除了安装包外,其他操作与centos一致。

2023-12-06 16:07:05 555

原创 Minio安装

新建目录 /data/miniodisk1 和 /data/miniodisk2 准备做磁盘挂载。编辑配置文件 /etc/default/minio ,设置端口、数据存储路径、登录账号密码。我准备四台机器,每台机器两个硬盘。根据官网说的纠删码,损失一半盘,依然能恢复数据。将User和Group改为当前登录用户,或者按要求创建用户。将User和Group改为当前登录用户,或者按要求创建用户。修改配置文件,vim /etc/default/minio。两个盘名字 /dev/sde /dev/sdf。

2023-11-15 14:55:35 671

原创 Gluster安装

此时26的/mnt/gluster目录 就挂载到了 创建的卷gv0上,在26目录里创建的文件在22,23的 /data/brick1 目录下会出现。编辑源 vim /etc/yum.repos.d/glusterfs.repo, gpgcheck=就是不校验。/data/brick1 目录挂载到 /dev/sdc磁盘, fstab文件是开机启动挂载。卷类型有多种,这里设置 “复制卷”,这样就有高可用性。在22 23节点上准备一个新磁盘 /sdc,操作系统:centos8。使用 XFS 文件系统。

2023-11-02 16:04:07 272

原创 ceph高可用、手动安装

fsid, public netword ,mon_initial_members ,mon_host 默认端口6789,osd pool default min size = 2 这些配置都需要改。创建配置文件 vim /etc/ceph/ceph.conf。安装过程中会自动安装python3.6以及相关。ceph -s,此时应该有三个监控启动。uuidgen 生成id。

2023-10-27 15:38:53 371

原创 Redisson锁功能、使用场景、注意事项

举例:方法a加锁用的是trylock,即可能加锁失败,方法b的业务也就可能失败,但如果方法c的业务一定要成功,那方法c就可以提前加锁用 lock方法,再调用方法a时加锁肯定成功,这样保证了方法c和a一定能成功。3.谨慎使用leaseTime参数,设置后watchdog不生效,到了leaseTime后、即使业务没执行结束,锁也会释放,如果此时其他线程加锁,可能造成线程不安全。举例场景:封装了方法a,其中加锁了,方法b通过调用a完成业务,方法c也调用a,但方法c在调用a前已经加锁。如果为0,则是不等待。

2023-06-09 16:26:44 2515

原创 k3s基本操作

参数会导致安装程序将 K3s 配置为 Agent 而不是 Server。K3s Agent 将注册到在 URL 上监听的 K3s Server。重启,启动,停止,systemctl restart\start\stop。修改/etc/hostname 和 /etc/hosts,让主机名不一样。配置主节点 kubeconfig,配置到 .kube目录,默认寻找这个目录。192.168.255.130安装server。192.168.255.131安装agent。查看k3s agent状态。

2023-05-31 16:34:27 2681

原创 Redisson报错:Unable to write command into connection! Increase connection pool size,集群出错

本身redis-server也是默认只在主节点读写,如果用redis-cli连接就能发现,读写任何key都会自动跳转到主节点,而不会在从节点。看153的redis-server日志,错误日志,157是报错从节点对应的主节点:说明从节点连不上主节点。但redisson配置的是从节点读、主节点写,所以导致加锁执行exists命令时 到问题节点读取失败。解决方式,把redisson配置为主节点读写,不在从节点读,去除从节点不稳定的影响。场景:使用redisson锁,redis-server是集群方式,三主三从。

2023-05-30 17:34:09 8964

原创 ss5服务器搭建

1、首先,编译安装SS5需要先安装一些依赖组件2、去官网下载SS5最新版本的源代码https不行就http。

2022-10-25 18:46:36 3089 1

原创 java线程转储分析、jstack

java线程转储日志

2022-08-29 19:00:41 817

原创 剑指offer进阶版刷题记录

补充,图广度优先遍历邻接矩阵表示图。顶点出队后要用visited判断是否访问过,即使在入队前判断未访问才入队,也得在出队后判断,因为同一层可能有两个顶点关联的点是重复的,导致一个顶点重复入队。 /** * @description 广度优先,访问一个节点A后,依次访问与其相连的节点BC,再访问B C的相连节点 * @author PangTiemin * @date 2022/2/20 21:03 */ public void bfs(int[

2022-03-07 15:45:07 398 1

原创 nginx设置缓存proxy_cache

参考nginx proxy_cache 缓存配置_dengjiexian123的专栏-CSDN博客_nginx proxy_cache将一些服务端的一些静态资源缓存在nginx,客户端请求直接获取nginx中的静态资源,不用去服务端获取。在http模块设置,path是缓存文件路径,keys_zone=tmp-test:10m ,tmo-test相当于缓存名字,在哪个路由规则中要使用缓存就配置上,10m应该是内存缓存大小,inactive对应有效期7天,max_size应该是缓存在磁盘上的最大占用空间

2022-01-19 16:27:40 3688

原创 nginx配置不生效

一般来说,nginx平滑重启之后,配置就会生效。nginx -t nginx -s reload如果没生效,尝试关闭nginx,或者杀死进程,再重启。如果是windows就在任务管理器里关闭进程再重启。nginx -s stop这些操作后nginx.conf的配置肯定会生效,如果还有问题,应该考虑其他方面、而不是nginx的问题,笔者曾遇到在nginx前还有其他代理缓存,导致误以为nginx没生效。...

2022-01-19 16:07:29 12180

原创 在centos安装nginx、purge

下载tar,在官网nginx: download、解压tar xzf nginx-1.20.2.tar.gz编译./configure --prefix=/usr/local/nginx1.20/ && make && make install && echo Ok.编译后生成/usr/local/nginx1.20/文件夹,sbin文件夹下是nginx,conf文件夹是配置文件。启动/usr/local/nginx1.

2022-01-19 16:02:08 2002

原创 jvisualvm连接tomcat

tomcat catalina.sh 添加启动参数,ip和端口一定要填,authenticate是否要认证,如果写true,要额外配置账号角色,这里写false。JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremo

2022-01-17 17:16:18 501

原创 mysql5.7 主从复制安装

mysql5.7,异步复制、半同步复制搭建

2022-01-09 17:56:35 833

原创 TDD和单元测试

Test Driven Development。测试驱动开发,提倡在开发足够多的代码之前优先写单元测试,然后重构开发者编写的源代码。源代码都没有怎么写单元测试?请注意是开发足够多的代码之前,也就是会有少量源代码工作在单元测试之前,如功能模块骨架,方法定义、类依赖。

2022-01-02 12:34:55 620

原创 java函数式编程

lamda、双冒号、stream

2021-12-28 19:12:23 421

原创 http请求设置不被浏览器缓存

在响应头中加,浏览器就不会缓存,下次请求会访问服务器。responseHeaderMap.put("Cache-Control", "no-cache");responseHeaderMap.put("Expires", "0");

2021-12-23 17:28:15 1996

原创 rabbitmq试用总结

zz​​​​​​​RabbitMQ Tutorials — RabbitMQhttps://www.rabbitmq.com/getstarted.html在mq向导中,把1-6个引导案例看完了,其实就是简单教你怎么用,第一个传送一条消息,第二个发布给两个队列,第三个给订阅这个exchange的queue广播,第四个把queue和exhcange绑定 用routekey ,发消息也有key,两个key对上 就能消费,相当于订阅。第五个模糊订阅,上一个是完全匹配。第六个,之前都只消费消息,没有返回数据,如果返

2021-11-22 17:44:22 1100

原创 Gateway Webflux过滤器修改响应

import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.hhwy.fweb.gateway.constant.GatewayConstant;import org.apache.commons.codec.Charsets;import org.reactivestreams.Publisher;import org.springframework.core.io.buffer.Data.

2021-11-10 16:57:41 1167

转载 UML类图

类之间的关系是类图中比较复杂的内容。有关联、聚合、组合、泛化、依赖。依赖:如方法局部变量、方法参数。有两个元素如果修改X的定义可能会导致对Y的定义,则认为Y依赖X。依赖关系可能由各种原因引起,如一个类向另一个类发送消息,或者一个类是另一个类的数据成员类型,或者一个类是另一个类的操作的参数类型等。有时依赖关系和关联关系比较难区分。如果类A和类B有关联关系,它们之间必然有依赖关系。如果两个类之间有关联关系时不用再表示出这两个类之间的依赖关系。 关联:如成员变量。是类之间的一种很弱的联系。关联可以有方向,可

2021-10-19 09:50:27 153

原创 服务器大量tcp close_wait

线上碰到服务器 大量tcp连接处于close_wait状态,tomcat处于假死状态,即tomca在运行,但不能访问。因为tcp连接耗尽了。查询tcp连接数和状态:netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}' 查询端口监听的tcp连接 netstat -anp |grep 8080按tcp协议来说,客户端发送关闭连接消息,服务端会进入close_wait状态,服务端处理完后会自动进入last_ack状态,...

2021-10-11 16:49:23 1352

原创 linux 磁盘占满查找大文件、挂载磁盘

查看各文件夹大小:du -h --max-depth=1挂载Linux磁盘分区、挂载 - 菜菜菜鸡 - 博客园

2021-09-28 10:34:17 869

原创 微服务常见认证、鉴权方案

参考网上一些优秀开源项目和框架,谈谈常见的微服务认证、鉴权方案。内容有SecurityOauth2、单点登录cas、自定义拦截器开发、微服务间鉴权、令牌的存储方式、shiro由单体改动为微服务微服务认证、鉴权的目标:一次登录后,各微服务都能访问 可对各微服务进行角色、接口等粒度的鉴权SecurityOauth2可能是seurity框架提供了一个微服务鉴权的直接解决方式,导致网上资料大部分都是此类方案。这个方案理解起来并不难。首先,在登录时,利用oauth2协议的四种方式及自定义.

2021-09-26 14:26:05 9079 6

原创 关于SaaS多租户系统设计的思考

多租户

2021-09-26 13:29:25 997

原创 操作系统接口

概念操作系统接口就是操作系统对外提供的函数,上层应用调用 这些函数可以达到控制硬件的目的。如c printf函数其实封装了操作系统的write接口,调用可以输出内容到显示器;再比如fork,控制cpu创建进程。怎么调用操作系统接口?用c使用计算机的三种方式命令行:c文件用gcc编译为sh文件,用sh命令执行。 shell本身也是一段程序,里面就是无限循环等待 输入命令(while(1){scanf),如果有命令,就fork创建进程执行命令图形界面:鼠标等...

2021-08-21 18:02:12 155

转载 tomcat中reloadable

1、在tomcat的配置文件server.xml中: <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localho

2021-08-18 10:27:47 1796

原创 ftp docker jenkins

搭ftp 服务https://blog.csdn.net/iw1210/article/details/86549599ftp 命令https://blog.csdn.net/qq_46084104/article/details/106244141

2021-08-09 09:44:52 166

原创 linux0.11启动 setup.s head.s

bootsect.s执行后,开始执行setup.s操作系统要获取内存、显卡、光标等硬件信息,然后用对应数据结构去管理硬件,这就是setup的作用。int 0x15 中断对应的程序作用:读取扩展内存大小(x86默认内存只有1M,剩下的4G 8G都是扩展内存),把内存大小放到[2] ,即ds:[2],实际上是 0x9000:[2],(在bootsect.s中已经知道ds的值是0x9000)。参考https://blog.csdn.net/yuanfen5200/article/details

2021-08-08 12:16:33 274

原创 jenkins发邮件

用jenkins自带的邮件功能全局管理先设置管理员邮箱在jenkins全局设置,用qq stmp服务为例,选择使用SMTP认证。这的用户名必须和上面的管理员地址一样qq邮箱可以开启smtp功能,参考https://blog.csdn.net/cccccout/article/details/105764940.测试光设置邮件通知还不行,必须设置下面。里面有些默认主题、默认内容、样式等等流水线设置内容设置,有默认格式,也能选择html,这里面的项目名称、构.

2021-08-05 15:44:55 247

原创 linux0.11 bootsect.s

引导扇区代码在ds:si,把引导扇区的代码复制到0x9000:0x0000(为什么往这复制,我也不清楚), rep movw就是在复制512个字节(cx的值 *2)。jmpi go,INITSEC就是程序跳转到INITSECL:go 执行,这是一个段地址+偏移地址。INITSECL:go 正好和es相等,那go是多少?紧接着在下面jmpi go,INITSEC 结果是正好跳到 go处代码执行。go的代码是把ds es这些改变一下,因为现在的段地址变到了0x9000,所以把栈这些都改...

2021-08-05 10:14:13 137

原创 jenkins安装插件

一在应用市场自己安装,需联网二点击插件跳到插件主页,提示用Jenkins CLI命令安装三直接下载 插件.hpi文件,如上图点jacoco-3.3.0就下载,在管理插件高级选项中,上传文件

2021-08-04 17:09:34 180

原创 Jenkins构建后执行脚本将jar包发送

流水线前后给了pre post step环节,可以执行shell脚本,也有其他选项大多跟安装的插件有关。选择执行条件,我选只有构建成功后才执行构建后得到jar 或war包,我要将jar包调用接口发送出去。首先每个项目在jenkins都有工作空间,我用docker安装的jenkisn对应项目里是拉取git的代码,和打包结果target调用接口发送文件,用curl -F, -b是使用的cookie文件,cookie可以由某个curl响应生成一个curl -X POST.

2021-08-04 16:07:28 1233

原创 Sonar、checkstyle、jenkins安装,代码检查

sonar是个平台,可以集成checkstyle,findbugs等插件。安装sonarsonar8以上的版本不支持mysql,先安装postgres数据库。启动sonar 指定数据库配置,挂载了一个文件夹(用来下载插件)docker run --name sonarqube -d -p 9000:9000 -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc

2021-08-04 11:16:34 714

原创 约瑟夫杀人法

把人围成一个圈,隔固定间隔杀人,最后剩一个人。package com.data.structur.josephus;/** * @author :PangTiemin * @date :Created in 2021/7/14 18:04 * @description: 约瑟夫 * @modified By: */public class Josephus { int num = 20;//多少人 int m = 5;//数到多少就杀人 class Node

2021-07-14 18:34:41 212

空空如也

空空如也

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

TA关注的人

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