- 博客(60)
- 收藏
- 关注
原创 Docker安装Neo4j
v /home/neo4j/import:/var/lib/neo4j/import //挂载数据导入目录。-v /home/neo4j/data:/data //把容器内的数据目录挂载到宿主机的对应目录下。-v /home/neo4j/conf:/var/lib/neo4j/conf //挂载配置目录。/usr/local/docker/neo4j/data等映射目录与自己的相匹配!-v /home/neo4j/logs:/logs //挂载日志目录。neo4j //指定使用的镜像。
2024-12-23 17:01:20
466
原创 Nacos源码搭建
仓库地址找到config 模块中找到 \resources\META-INF\mysql-schema.sql,在本地mysql中创建数据库nacos-config,将该脚本导入执行创建表。找到console模块下的配置文件application.properties,修改相关配置配置数据连接ip及名称。
2024-12-23 15:07:33
328
原创 Docker 安装Mysql
v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器。-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器。-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器。3.打开mysql文件夹。
2024-12-23 14:11:01
469
原创 Linux 安装Docker
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。本文介绍 Docker CE 的安装使用。测试运行 hello-world。启动 Docker 后台服务。
2024-12-23 13:42:12
286
原创 VMware下Net网络的配置
Win11配置 : 设置 > 网络和Internet > 高级网络设置 > 查看其他属性。安装VMware后对Linux网络配置记录,在linux虚拟机使用net访问主机及外网。Linux中网络的DNS配置一个指向网关 : DNS1=192.168.111.2。VMware > 虚拟机 > 设置;指定为NAT模式,再重启虚拟机。IP地址物理机应与虚拟机中Linux保持一致,例当前设置的地址为。主要配置子网IP及网关,与上述保持一致;配置完成需重启虚拟机;
2024-12-23 11:50:12
407
原创 共识算法基础
Raft 算法和兰伯特的 Multi-Paxos 不同之处,主要有 2 点。首先,在 Raft 中,不是所有节点都能当选领导者,只有日志较完整的节点(也就是日志完整度不比半数节点低的节点),才能当选领导者;其次,在 Raft 中,日志必须是连续的。Raft 算法通过任期、领导者心跳消息、随机选举超时时间、先来先服务的投票原则、大多数选票原则等,保证了一个任期只有一位领导,也极大地减少了选举失败的情况。
2024-05-10 09:37:07
735
原创 DDD架构学习
按DDD的定义,领域模型应该捕捉“业务规则”或者“领域逻辑"(business rules/domain logic),而应用模型则捕捉“应用逻辑”(application logic)。如果是一个实体(entity)和针对实体的增删改查,就属于领域层;如果是一个场景,比如出现在UI菜单上的选项,就属于应用层。比如:账单,用户,编辑商品,编辑库存,这些是领域层;“购买商品”,则是应用层。前者是针对实体的操作。每一个实体都只有增删改查这样的操作。
2024-05-08 13:48:46
1415
原创 JVM垃圾回收器整理
串行回收器:Serial、Serial Old并行回收器:ParNew、Parallel Scavenge、Parallel Old并发回收器:CMS、G1新生代收集器:Serial、ParNew、Paralle Scavenge;老年代收集器:Serial old、CMS、Parallel old;整堆收集器:G1;
2024-05-07 16:41:40
648
原创 CPU传统存取数据方式&DMA
由 CPU 直接处理数据的传送,数据拷贝时会一直占用 CPU 的资源。由 CPU 向DMA磁盘控制器下达指令,让 DMA 控制器来处理数据的传送,数据传送完毕再把信息反馈给 CPU,从而减轻了 CPU 资源的占有率。当用户程序向内核发起系统调用时,CPU 将用户进程从用户态切换到内核态;当系统调用返回时,CPU 将用户进程从内核态切换回用户态。网络 I/O磁盘 I/O读操作当应用程序执行 read 系统调用读取一块数据的时候,如果这块数据已经存在于用户进程的页内存中,就直接从内存中读取数据。
2024-04-10 11:28:55
1612
1
原创 零拷贝记录
当涉及到网络编程和IO操作时,数据拷贝是一个常见的性能瓶颈。传统的数据拷贝过程中,数据需要从内核缓冲区复制到用户空间缓冲区,然后再从用户空间缓冲区复制到内核缓冲区,这个过程会耗费大量的CPU时间和内存带宽,降低系统的性能和吞吐量。为了解决这个问题,零拷贝技术应运而生。零拷贝技术是指在数据传输过程中,避免将数据从一块内存拷贝到另一块内存,从而减少了CPU的开销和内存带宽的消耗,提高了系统的性能。
2024-04-10 10:30:37
992
原创 HTTP/UDP/TCP/IP网络协议
同时呢,4位值的是4个bit位,四个比特位的取值范围0-15.因此,这里的首部长度的单位也是4字节,比如:4个bit位 1111 == 15,实际表示的首部长就是60(4*15)字节。发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。
2024-04-03 15:49:31
1622
1
原创 JVM 相关知识点记录
JDK1.8中,Parallel Scavenge 被设置为年轻代(Young Generation)的默认垃圾回收器,而 Parallel Old 是用于老年代(Tenured Generation)的垃圾回收器。
2024-03-14 19:56:33
1155
1
原创 Mysql 索引、锁与MVCC等相关知识点
当事务对某一行数据进行改动时,会产生一条Undo日志,多个事务同时操作一条记录时,就会产生多个版本的Undo日志,这些日志通过回滚指针(DB_ROLL_PTR)连成一个链表,称为版本链。是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。排它锁(Exclusive Lock):也称为写锁,事务持有排它锁时,其他事务无法同时持有共享锁或排它锁,用于保护数据的写操作。也叫普通读,读取的是记录数据的可见版本,不加锁,不加锁的普通select语句都是快照读,即不加锁的非阻塞读。
2024-03-13 18:45:17
1335
原创 MQ高可用相关设置
消息丢失的三种情况消息在传入服务过程中丢失MQ收到消息,暂存内存中,还没消费,自己挂掉了,内存中的数据搞丢消费者消费到了这个消息,但还没来得及处理,就挂了,MQ以为消息已经被处理也就是生产者丢失消息、消息列表丢失消息、消费者丢失消息;
2024-03-10 16:52:03
1358
原创 Spring 源码解析
文章目录前言相关Spring的定义接口整体代码StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh")prepareRefresh()obtainFreshBeanFactory()registerBeanPostProcessors(beanFactory)SpringAOP原码流程@EnableAspectJAutoProxyAnnotationAwareAspectJAutoProxyCre
2024-02-29 09:54:50
1111
原创 Netty入门案例
Netty抽象出两组线程池: BossGroup 专门负责接收客户端的连接, WorkerGroup 专门负责网络的读写。BossGroup 和 WorkerGroup 类型都是 NioEventLoopGroupNioEventLoopGroup 相当于一个事件循环组, 这个组中含有多个事件循环 ,每一个事件循环是 NioEventLoopNioEventLoop 表示一个不断循环的执行处理任务的线程, 每个NioEventLoop 都有一个selector。
2024-02-26 15:44:55
430
原创 Nginx缓存相关配置解析
客户端需要访问服务器的数据时,如果都直接向服务器发送请求,服务器接收过多的请求,压力会比较大,也比较耗时;而如果在nginx缓存一定的数据,使客户端向基于nginx的代理服务器发送请求,可以有效节省时间。Nginx缓存机制的作用缓存能够提升性能,学会Nginx中如何使用缓存很重要。Nginx作为静态资源服务器,静态资源变动频率小,缓存能够加速访问。Nginx离用户最近,启用缓存能更好的提高性能,结合Redis可以组成类似二级缓存。完整的官方配置文档。
2024-02-20 17:40:05
2275
原创 Redis主从复制&哨兵&集群搭建解析
bind:指定主节点的IP地址,从节点会连接到该IP地址上。port:指定主节点的端口号。requirepass:指定主节点的认证密码,从节点需要提供正确的密码才能连接到主节点。slaveof:指定从节点连接的主节点的IP地址和端口号。masterauth:指定从节点连接主节点的认证密码。Redis复制过程主节点将写操作写入内存缓冲区,并将写操作发送给从节点。从节点接收到写操作后,将其写入自己的内存中。
2024-02-19 17:14:54
1087
原创 SpringMVC 源码学习博客记录
在请求到达服务器时,RequestMappingHandlerMapping将匹配请求路径和请求方法,并将请求映射到适当的处理器方法。SpringMVC 应用启动时会搜集并分析每个 Web 控制器方法,从中提取对应的 "<请求匹配条件,控制器方法>“ 映射关系,形成一个映射关系表保存在一个RequestMappingHandlerMapping的bean 中(详见HandlerMapping)。但客户端只需要一种,这就要求客户端和服务端之间有一种机制,能确保服务端响应的是客户端想要的,这就是内容协商。
2024-01-10 17:23:45
596
原创 Java原生启动Tomcat
这是这样的场景:您正在开发一个 Java Web 应用程序,现在您想要嵌入 Tomcat 以进行单元测试或将 Web 应用程序作为独立的 Java 程序交付。默认情况下,Tomcat 尝试按以下顺序使用这些系统属性:catalina.base、catalina.home和user.dir。运行此程序,您可以看到 WAR 文件的内容被提取到基本目录,您可以使用指定的上下文路径访问 Web 应用程序。这种方法对于测试打包在 WAR 文件中的现有 Web 应用程序非常方便,并且您不必接触它们的代码。
2024-01-03 17:01:48
1606
原创 SpringBoot源码搭建
从v2.3.x开始,SpringBoot开始强制用Gradle构建项目,如需使用maven搭建,可下载。会下载相关依赖的下载,稍等一会儿。这里下载并搭建windows版本。
2023-12-26 17:38:23
607
原创 Linux安装Java环境
检查系统版本检查系统内核版本清空卸载java环境(如果已经安装了)查询java所在位置删除java移除所有java相关包及软件清空java环境变量在/etc/profile等环境变量文件中,删除java相关环境变量。
2023-11-29 15:45:24
512
原创 Linux设置Nginx开机自启
最底部增加这一行: /usr/local/nginx/sbin/nginx。执行重启linux系统的命令reboot。重启Linux后,查看Nginx启动状态。自此已经完成Nginx开机自启。
2023-11-29 10:27:37
1472
原创 Mybatis 源码搭建
根据自己实际项目地址修改,ctrl+鼠标左键可打开本地‘http://mybatis.org/dtd/mybatis-3-config.dtd’,将路径指定为本地路径即可。或者本地路径的全路径,如果在非mybatis源码包下,需要写全路径,比如自己定义的mybatis-gabriel项目。将mybatis-parent与mybatis导入idea同一个project下。mybatis需要设置父工程为mybatis-parent,需要注意。新建一个测试模块,这里叫mybatis-gabriel。
2023-11-27 10:09:52
1377
原创 Java 常用设计模式学习记录
单一职责在类的级别上,一个类只负责一项职责;在方法的级别上,一个方法只做一件事。如类A负责两个不同职责:职责1、职责2.当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分为A1,A2互不影响。接口隔离客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。这里的接口实际上指的是“超类型”,可以是抽象类abstract class,也可以是接口interface。依赖倒置/控制反转/面向接口编程原则面向接口编程,而不是面向具体的实现类编程。
2023-11-24 11:05:49
908
原创 SpringBean 生命周期各种BeanPostProcessor调用时机整理
【代码】SpringBean 生命周期各种BeanPostProcessor调用时机整理。
2023-11-16 15:15:12
153
原创 Spring源码搭建及相关知识点记录
spring-web:模块提供基本的面向Web的集成功能,例如多部分文件上传功能,以及初始化一个使用了Servlet侦听器和面向Web的应用程序上下文的IoC容器。spring-webmvc:模块(也称为Web-Servlet模块)包含用于Web应用程序的Spring的模型-视图-控制器(MVC)和REST Web Services实现。因为低级切面的功能比较基本。代理创建器来进行解析的,将高级切面转换成低级切面,用来处理被@AspectJ注解标注的切面类和Spring Advisors的。
2023-11-08 17:03:13
287
原创 SpringCloud Alibaba学习记录
华为云博客原文优快云原博客Sentinel 控制台包含如下功能:查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。监控 (单机和集群聚合):通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信 息,最终可以实现秒级的实时监控。规则管理和推送:统一管理推送规则。生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。Sentinel 2.0 将降级规则改名称为熔断规则实时监控:监控接口通过的QPS和拒绝的QPS。
2023-11-06 14:45:04
114
原创 SpringCloud学习记录
需要声明是Springboot的Bean,添加注解@Component,名称必须以RoutePredicateFactory结尾,这个是命名约束。如果不按照命名约束来命名,那么就会找不到该断言工厂。前缀就是配置中配置的断言。可以直接复制Gateway中已经实现的断言工厂,修改对应的内容,避免踩坑。继承父类AbstractRoutePredicateFactory,并重写方法。需要定义一个Config静态内部类,来接收断言配置的数据。
2023-10-23 16:04:45
270
原创 Containerd 入门
默认Containerd管理的容器仅有lo网络,无法访问容器之外的网络,可以为其添加网络插件,使用容器可以连接外网。containerd 默认配置文件在 /etc/containerd 目录下,名称为 config.toml。ctr 命令功能太少,因此 containerd 支持客户端工具扩展,推荐使用 nerdctl。执行脚本文件,基于/etc/cni/net.d/目录中的*.conf配置文件生成容器网络。创建名为mynet的网络,其中包含名为cni0的网桥。解压cni插件工具至上述创建的目录中。
2023-09-05 16:52:29
432
原创 K8s 容器暴露端口
需要容器内部服务与宿主机同一网段特点:当Pod调度到哪个节点就使用哪个节点的IP地址,客户端使用IP地址访问容器里面的服务。一个node只能启动一个pod端口,端口不能冲突。可以直接访问 192.168.54.129。
2023-08-28 16:54:28
1305
原创 Nginx 加‘/‘区别
实际访问代理地址:http://127.0.0.1:8899/v1/pt/apply/page。实际访问代理地址:http://127.0.0.1:8899/v1/pt/apply/page。实际访问代理地址:http://127.0.0.1:8899/v1/pt/apply/page。实际访问代理地址:http://127.0.0.1:8899/v1/pt/apply/page。实际访问代理地址:http://127.0.0.1:8899/v1/pt/apply/page。
2023-08-15 16:23:57
86
原创 Promethus 配置记录
保存后重启Prometheus,http://localhost:9090/rules,查看上述配置的规则,出现则说明配置成功。配置文件中的PromQL(expr)表达式可以在Prometheus的Graph界面运行一下,检验是否符合需要。Prometheus 是可以在运行时自动加载配置的。所有的告警信息都会从配置中的顶级路由(route)进入路由树,根据路由规则将告警信息发送给相应的接收器。Prometheus 会从 http://hadoop202:9090/metrics 上拉取数据。
2023-08-15 10:20:04
269
原创 Jvm 内存调优命令行
如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件,format=b是通过二进制的意思,file指定输出目录文件。Metaspace元空间主要是存储类的元数据信息,各种类描述信息,比如类名、属性、方法、访问限制等,按照一定的结构存储在Metaspace里。:设置每个线程的堆栈大小。
2023-07-31 15:14:53
3219
原创 Haproxy 配置文件
haproxy的配置文件大概可以分两段:第一段配置是global配置段即全局配置段,主要是针对haproxy的进程和安全相关的配置;第二段是proxies代理配置段,主要是配置haproxy前端监听那个地址那个端口以及后端server的名称、地址、端口,以及server相关属性等配置;而proxies配置段里又分defaults配置段,这个部分主要是定义后续的backend,listen这两个段的默认配置;什么意思呢?也就是在后面的配置中如果我们没有写对应参数,它默认会继承defaults里的配置;
2023-07-26 15:26:17
4947
原创 Keepalived 部署及配置
keepalived的主要由vrrp stack、checkers、ipvs wrapper以及控制组件配置文件分析器,IO复用器,内存管理这些组件组成,其中vrrp stack 是用来实现vip的高可用;checkers用于基于不同协议对后端服务做检测,它两都是基于系统调用和SMTP协议来完成对vip的转移,以及故障转移后的邮件通知,以及vip和后端服务的检测;ipvs wrapper主要用于生成ipvs规则;
2023-07-24 10:02:29
2458
原创 openssl证书颁发
表示加密算法(生成的私钥为了安全要进行加密),这里选择des3算法和(根据 口令,盐值,迭代次数 推算出来对称加密密钥)对私钥做对称加密。私钥生成后,您的私钥文件现在将作为 server.key 保存在您的当前目录中,并将用于生成CSR(因为csr这个里面包含公钥,所以这里需要私钥来生成对应的公钥)生成的server.key为加密私钥文件,私钥就保存在这个文件内,一般文件内的私钥已被加密,只有通过口令才能得到原私钥。指生成的私钥文件 1024指生成的私钥长度,还可以选2048,4096,默认是1024。
2023-07-19 15:08:09
153
原创 LVS 负载均衡服务搭建
Linux 标准内核的一部分,Linux 2.4 之前,必须重新编译内核才能支持负载均衡类型核心原理实践案例两层修改请求数据包中的 MAC 地址后转发LVS DR 模式三层将请求数据包重新封装后转发四层修改请求数据包目标地址种的IP或IP+端口后进行转发七层解封请求数据包在HTTP层判断请求头后进行转发DNS域名多个 A 解析、智能解析万网、DNSPodLVS 相关术语DS:Director Server,指的是前端负载均衡器节点。
2023-07-19 14:40:12
403
原创 Nginx 配置Https及ACL
客户端在收到证书后,首先将签名取下,使用CA的公钥(CA的公钥是大家都知道的)对签名进行解密拿到摘要1,客户端再用hash算法对明文信息进行加密得到摘要2,对比两个摘要是否相等,若相等,则证明此明文信息没有进行过篡改则去除其中服务器server的公钥,查看明文信息中的其他信息。在上述配置中,当用户IP地址不在“acl_group”中定义的“admin”或“user”组时,会返回403 HTTP状态码,禁止对“/admin”和“/user”路径的访问。首先,需要定义规则,将用户分组并定义与其相关的属性。
2023-07-17 11:26:07
362
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人