自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不想睡觉的橘子君的博客

行有不得,反求诸己。

  • 博客(220)
  • 收藏
  • 关注

原创 【分布式】简述CAP理论

以上三个特点就是CAP原则(又称CAP定理),但是三个特性不可能同时满足,所以分布式系统设计要考虑的是在满足P(分区容错性)的前提下选择C(一致性)还是A(可用性),即:CP或AP。

2024-08-19 21:38:40 461

原创 【设计模式】漫谈设计模式

不过,大人,时代变了。如今已经不是硅谷黄金时代,仅靠个人就可以实现一个火遍全球的商用软件那样英雄主义的事,不复存在,大多数开发者,只是一个开发工作中的小小的分子。我们不得不依靠大量成熟的商用中间件和框架及更易使用的高级语言,这大大加速了我们开发的速度,减轻了我们设计和开发的难度,同时意味着,我们对于设计模式的依赖,变得更小了。设计模式最早是在上个世纪就被人提出来了,如今被奉为圣经,也就是GOF等人写的《设计模式》,其中的设计模式,是指导开发者如何进行开发出高内聚、低耦合、易扩展的好代码的。

2024-08-14 20:41:55 448

原创 【多线程】线程状态与并发三大特性的细节剖析

这篇文章主要用于对于多线程的一些查缺补漏。

2024-08-03 11:19:30 645

原创 【架构】应用保护

这篇文章总结一下应用保护的手段。如今说到应用保护,更多的会想到阿里的sentinel,手段丰富,应用简单。sentinel的限流、降级、熔断,可以自己去试一下,sentinel主要通过配置实现功能,不难。sentinel的简介放在最后。但其实还是有一些别的方式进行应用保护的,这里简单总结下。应用保护的原因,是系统压力太大,负载过高,导致数据库慢查询,应用保护的核心思想是,优先保证核心业务,优先保证大部分用户。

2024-08-01 11:52:40 984

原创 【架构】网络分发

这篇文章总结一下整个架构中涉及网络分发的部分,如DNS、CDN和代理服务器。

2024-07-31 21:06:41 673

原创 【Win10】记一次蓝屏修复

这个问题出现了很多次,也历经了很长时间。具体的错误进程经常改变,于是笔者怀疑是不是硬件故障,怀疑主板or内存条,不太可能是驱动问题,因为我查了下一直没有升级驱动,重置系统后也没有更改驱动,依然报错。直接搜这个错误代码不太好找原因,于是按照这篇文章[1]来打开错误日志文件。需要先在windows的应用商店中下载WinDbg。去售后检测出是主板问题,换了块主板,ok了。打开桌面上的错误文件后,看到这个。可以看到错误原因[3]

2024-07-31 17:03:36 345

原创 【架构】客户端优化

静态数据不仅包括 传统意义上的页面/图片等,也包括和访问者无关的非个性化数据。如一篇新闻,假设其和用户推荐无关,那么这篇新闻就可以放入CDN中作为静态数据。再比如,有时电商网站访问高峰期,猜你喜欢会关闭动态推荐,改为所有用户推荐一样的数据,那么这些数据也可以作为静态数据,放入CDN或代理服务器缓存中。

2024-07-31 16:38:58 1009

原创 【架构】缓存与数据库:双写一致性、缓存问题

这里我讲的是缓存和数据库,以redis和mysql举例,实际上缓存包括不限于浏览器缓存、redis、memcache、本地缓存guava等等,数据库也有很多种,这里我们仅仅以较常见的redis和mysql举例。

2024-07-26 21:21:58 607

原创 【Zookeeper】两种基于原生zk客户端的分布式锁的实现

基于zk的分布式锁的实现主要依赖zk节点的原子性,可以基于原生zk来自己实现分布式锁,更多的是基于Curator这个框架来直接使用基于zk的分布式锁[1]。这里我们仅仅讨论基于原生zk客户端依赖自己实现的zk分布式锁。原生zk客户端中的一些调用如getChildren方法,可以是同步返回,也可以通过实现AsyncCallback的内部接口来重写异步回调处理逻辑。同步实现[1],这篇文章中缺少了关于"Watcher关注的前面节点状态改变后CountDown"的逻辑,即缺少了Watcher的回调。

2024-06-26 18:30:00 509

原创 【Docker】docker-compose常用的构建docker容器的yml文件

将下方的要使用的内容粘贴进去,根据自己需要添加/删除/修改一下。最后在当前文件夹直接后台启动即可,docker-compose的简单使用方法,在准备好的文件夹中,好要挂载的如data或者conf文件夹,及。的挂载有一些区别[2]

2024-06-12 23:14:19 586

原创 【Nacos】【踩坑专栏】nacos启动失败:libstdc++.so.6: 无法打开共享对象文件: 没有那个文件或目录

我一开始是怀疑自己没有配置好环境,也确实如此,新装的虚拟机没有官网要求[1]的Java和maven环境(虽然之前安装启动nacos好像也没有maven)。nacos是装在虚拟机上的,这个虚拟机最近重装过,之前装nacos解压缩后直接启动没有问题的,但是重装后在解压缩启动就失败了。再次启动nacos,访问nacos管理页面http://localhost:8848/nacos没有问题。一堆的嵌套异常,最后的那个就是我们要找的最初的异常。即,问题的根源是缺少类库 libstdc++.so.6。

2024-06-12 17:28:43 352

原创 【Linux】另一种基于rpm安装yum的方式

另外,就是还有一种,也是下载压缩包,但是不用apt,而是基于python安装yum[2]。以上两种没有试过,可能会有问题,如第二种方法,python可能会报异常,没有指定的module。此外,也有通过下载压缩包[3],通过解压后基于apt安装yum的方式[1],更加方便快捷(但是我的虚拟机没有自带apt和apt-get)。之前的163的镜像源504网关异常了,网上找到的方法基本都是基于apt,或是基于apt-get。最后,等弄好的时候,我发现之前网关异常的163镜像网站,好了…内心多多少少有点崩溃…

2024-06-07 22:55:28 314

原创 【JVM】调优工具

这里简单介绍一下各种调优用到的工具。

2024-05-14 17:44:37 920 1

原创 【JVM】从可达性分析,到JVM垃圾回收算法,再到垃圾收集器

深入理解Java虚拟机》[1]中,有下面这么一段话:在JVM的各个区域中,如虚拟机栈中,栈帧随着方法的进入和退出而有条不紊的执行者出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由即时编译器进行一些优化,但在基于概念模型的讨论里,大体上可以认为是编译器可知的),因此这几个区域的内存分配和回收都具有确定性,在这几个区域内就不需要考虑如何回收的问题,当方法结束或者线程结束时,内存自然就跟随着回收了。

2024-05-13 22:45:24 930

原创 【JVM】从硬件层面和应用层面的有序性和可见性,到Java的volatile和synchronized

Java的关键字volatile保证了有序性和可见性,这里我试着从底层开始讲一下有序性和可见性。

2024-05-03 17:41:21 938

原创 【JVM】class文件格式,JVM加载class文件流程,JVM运行时内存区域,对象分配内存流程

这篇文章本来只是想讲一下class文件格式,讲着讲着越讲越多。JVM这一块吧,知识比较散比较多,如果深研究下去如死扣《深入理解Java虚拟机》,这本书很深很细,全记住是不可能的,其实也没必要。趁这个机会直接把标题中的这些的主要知识点都总结一下,不会过深,也不会是太浮于表面的八股文,总结一下比较好记,也省的后面自己再忘了。

2024-05-02 16:05:18 1104 1

原创 【JVM】简述类加载器及双亲委派机制

双亲委派模型,是加载class文件的一种机制。在介绍双亲委派模型之前,我需要先介绍几种类加载器(Class Loader)。

2024-04-30 15:29:34 1105

原创 【RabbitMQ】RabbitTemplate类无法自动注入

在一个spring项目中,添加了spring整合的spring-boot-starter-amqp依赖,以及测试用的spring-boot-starter-test依赖。我发现我在运行时空指针异常,debug发现是因为RabbitTemplate 没有注入成功。这是因为spring的版本比较低,高版本的spring应该是不需要加这个注解的。解决办法是在类上添加注解,

2024-04-10 10:03:32 854 2

原创 【Maven】个人可用的maven settings文件

这里通过博客备份一个个人用的maven settings文件。如果使用默认的maven settings文件,经常出现plugin加载不出来等问题。而重置系统的时候,maven setting经常忘记备份,因此特地在blog上备份一次。这个xml是结合[1]改动来的,注释掉了其中一些不需要的以及错误的标签。个人改动一下最上方的maven repo地址即可,要和idea中的maven repo地址保持一致。

2024-03-21 15:08:27 493 1

原创 【Linux】安装yum

本文参考的文章[1],但是文章[1]中存在一些问题,就是文章[1]参考的163 mirror的文档的那部分[2],因此在最后一步vim repo那里多此一举搞了一遍163的repo。不仅163的repo连接速度很慢,而且最后repo中的镜像都换成了中科大的ustc镜像,因此实际上163的镜像是没必要替换的。我这里整理了一下后重新写出来,这样更清晰一些。

2024-03-20 16:47:19 311

原创 【Linux】调整字体大小、颜色和背景颜色

初始的背景和字体颜色,是白底黑字。这里的设置和字体大小一样,都是在edit->preference里,不过颜色是在color里调。下面有Text和BackGround(文本和背景)默认颜色的选项,点进去,选择自己想要的颜色即可。而命令行的字体大小和颜色,应在命令行中,打开edit去调整,勾选custom font后,点击选择栏,里面可以选择大小和字体种类。linux初始的系统字体和命令行的字体太小了,需要我们调大。首先系统字体大小,是在application中,进行设置。

2024-03-20 16:23:00 2050

原创 【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

本文通过docker-compose构建一个单体的rabbtimq容器。

2024-03-13 20:21:44 1939

原创 【Docker】docker-compose安装

搜索引擎上能搜到的,github的那个网址,curl显示要十几个小时(蛮奇怪,win主机直接访问下载就很快,虚拟机Linux去curl就很慢)。这里有个问题,readme上写着将docker-compose-linux-x86_64复制到图中几个路径之一并改名为docker-compose,我复制到。下载下来后,通过如finalshell等工具,将下载下来的docker-compose-linux-x86_64传到Linux上。所以,干脆自己动手,别再想偷懒,直接去github里去看吧。

2024-03-13 17:38:19 548

原创 【踩坑专栏】追根溯源,从Linux磁盘爆满排查故障:mycat2与navicat不兼容导致日志暴增

问题到这里似乎就明晰了,猜测应该是和navicat和mycat2不兼容,导致mycat2的日志一直暴增。这个虚拟机是我个人的一个虚拟机,mycat连接的一主二从中master的redo log(ib_logfile0 1)、undo log、bin log,从几百k到十几M不等,虽然和那寥寥几条测试数据比起来确实不小,但是跟mycat这8个G的日志比起来也是小意思了。昨天遇到了一个比较奇怪的问题,就是在挂起虚拟机的时候,虚拟机提示我XX脚本正在运行,很奇怪,我没有运行脚本,为什么会提示我这个呢。

2024-02-29 20:41:53 533 2

原创 【MySQL】基于Docker搭建MySQL一主二从集群

本文记录了搭建mysql一主二从集群,这样的一个集群master为可读写,slave为只读。过程中使用了docker,便于快速搭建单体mysql。

2024-02-28 22:23:31 1295 1

原创 【踩坑专栏】主机ping虚拟机失败

最开始我是把虚拟机的网络设置改为桥接模式,问题解决了,但是这种模式的问题就是每次开机,ip都会改变,因此非常麻烦,特别是搭伪集群的时候,更是噩梦。这次就找了一下其他解决办法,发现是将虚拟机网络的“属性”的ipv4中,改为自动获得ip和DNS,就可以解决问题[1]我出现的问题finalshell连接超时,再ping一下,ping通了。所以我就将网络模式改回。,于是发现问题所在。

2024-02-21 17:58:44 440

原创 【Docker】Docker设置开机自启动,及docker启动命令

设置Docker开机自启动[1]docker启动命令[2]

2024-02-21 17:30:44 694

原创 【Docker】docker常用命令简介

查看所有容器(查看正在运行的和已经停止运行的)[1],MyCat应用与实战教程。查看最后一次运行的容器。

2024-02-21 16:12:34 457

原创 【Docker】基于yum安装docker

之前的Linux虚拟机不用了,所以需要重新安装一下docker。这次使用基于yum的方式安装docker,docker可以方便我后续快速部署其他中间件实例。但是这里加的镜像源是docker官方的,在国外所以速度慢,我们需要添加一下国内的镜像源。

2024-02-21 16:06:36 730

原创 ipad作为扩展屏的最简单方式(无需数据线)

在win上的toDesk的设备列表的ipad右侧选择扩展屏模式,win+p,选择扩展选项,可以看到ipad成为了一个默认win桌面的扩展屏。连接ipad,在ipad中输入win设备的设备密码和临时密码,连接上后可以看到ipad会是win屏幕的镜像。我这里是把鼠标向右拖,鼠标指针可以进入扩展屏,如果不成功,上下左右都试试[1]。ipad和win都下载安装toDesk,并且都处于同一局域网下。

2024-02-20 16:27:31 1166

原创 【MySQL】双写、重做日志对宕机时脏页数据落盘的作用的疑问及浅析

首先,我先介绍或者说概括一下双写机制,和重做日志文件。在《MySQL技术内幕 InnoDB技术引擎》[1]一书中,双写机制部分介绍原文如下:如果说Insert Buffer带给InnoDB存储引擎的是性能上的提升,那么doublewrite(两次写)带给InnoDB存储引擎的是数据页的可靠性。当发生数据库宕机时,可能InnoDB存储引擎正在写入某个页到表中,而这个页只写了一部分,比如16kb的页,只写了前4kb,之后就发生了宕机,这种情况被成为部分写失效(partial page write)。

2024-01-29 23:30:49 1029 1

原创 【MongoDB】mongodb安装及启动踩坑点

mongodb的安装,基本上参考文章[1]。但是在过程中,有一些踩坑点。

2024-01-24 18:11:04 1442

原创 【踩坑专栏】控制台输出中文乱码

再次尝试,问题解决。猜测应该是project encoding中的编码格式管不到控制台,控制台里的编码可以由Vm Option来改变。尝试在Project Encoding中将格式改为utf8,未解决问题。本次问题出现是在main方法在控制台输出时,中文出现乱码。

2024-01-24 11:41:25 489

原创 【Redis】【MySQL】redis与mysql的慢查询

redis和mysql都存在对于慢查询的日志记录,下面将叙述一下两者的慢查询。

2023-12-15 20:15:45 352

原创 【kafka】Java客户端代码demo:自动异步提交、手动同步提交及提交颗粒度、动态负载均衡

*

2023-11-09 16:43:23 1242

原创 【踩坑专栏】禁止kafka自带的日志

如果直接使用log4j.properties修改kafka的日志级别,会没有效果。有文章说是因为jar包冲突[2]。在测试kafka的时候,有很多kafka自带的debug和info日志,需要禁止掉。在resource文件夹下,新增一个logback.xml文件。

2023-11-07 22:08:45 2096

原创 【kafka】记一次kafka基于linux的原生命令的使用

环境是linux,4台机器,版本3.6,kafka安装在node 1 2 3 上,zookeeper安装在node2 3 4上。遇到不熟悉的sh文件,直接输入名字并回车,就会提示你可用的命令参数。安装好kafka,进入bin目录,可以看到有很多sh文件,是我们执行命令的基础。在其中的一台机器上起一个生产者,在其他两台机器上起2个消费者,都在同一个组里。kafka下面有很多metedata信息,包含在这些节点中,如,,启动kafka,下面的命令的后面带的配置文件的相对路径。最后看一下zk中的情况吧。

2023-11-02 21:49:08 1354

原创 【zookeeper】zk的ZAB原子广播协议

paxos要求每台server都持有自己的一个事务id的记录,这个事务id会每通过一个提议就自增加一,并可以通过事务id来判断提议是否应该投票,如果提议的事务id小于当前自己记录的事务id,那么就不投票。如果是在write时没有回复ok,只要超过一半,其实对后面的其他操作也是没什么影响的,只是连接到这台follower的client拿到的数据可能会是旧的数据,如果有需要可以加sync命令拿到最新的数据。总得来说,选举的原则是,1、要选择事务id最大的,事务id最大,表示数据最完整。

2023-10-24 20:25:53 502

原创 【zookeeper】zk选举、使用与三种节点简介,以及基于redis分布式锁的缺点的讨论

这里我准备了4台虚拟机,从node1到node4,其myid也从1到4.

2023-09-22 21:34:24 1094

原创 【zookeeper】zk集群安装与启动踩坑点

2,zk集群最少启动3台集群。曾经我也傻傻的启动2台,懒得启动第3台,结果就是启动没有fail,但是查询zkServer.sh status,会告诉你。1,在zk官网下载包时,注意3.5以后的版本,要下载带-bin的,3.5之后,带-bin的是编译后的包,没有-bin的是未编译的包,解压后启动会报错。这种关闭是只有本次启动虚拟机有效,下次启动虚拟机就无效了。特别是第一点,zk官网好像都没什么说明,导致直接下错了,搞了好几个小时。,找了半天原因,想到可能是zk启动少了。3,要关闭防火墙,不然会报。

2023-09-22 17:35:14 427

空空如也

空空如也

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

TA关注的人

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