自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何部署一个K8s集群(离线部署)

k8s离线部署

2025-02-26 20:55:54 412

原创 oauth2 单点登录的四种方案

实际如何实现鉴权:通过自定义注解+用户token去判断。

2025-02-26 20:27:10 148

原创 Linux IO机制

该技术省略掉缓存 I/O 技术中操作系统内核缓冲区的使用,数据直接在应用程序地址空间和磁盘之间进行传输,从而使得自缓存应用程序可以省略掉复杂的系统级别的缓存结构,而执行程序自己定义的数据读写管理,从而降低系统级别的管理对应用程序访问数据的影响。在 Linux 的缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓存( page cache )中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。() 来实现这种文件访问方式。

2025-02-26 20:24:53 546

原创 netty基础知识

ServerBootstrap需要配置两个线程组— EventLoopGroup ,一个用于接收连接,一个用于具体的处理。Bootstrap 通常使用 connect() 方法连接到远程的主机和端口,作为一个 TCP通信的客户端。ServerBootstrap通常使用 bind() 方法绑定本地的端口上,然后等待客户端的连接。Bootstrap 也可以通过 bind() 方法绑定本地的一个端口,作为UDP协议的一端。loopGroup包含多个loop,每个loop包括一个线程,监听一个端口。

2025-02-26 20:22:40 332

原创 java-GC基础知识

垃圾回收引用回收类型:强引用:不会被GC回收软引用:JVM充足不回收,JVM不足会被回收弱引用: 会被GC回收虚引用: 任何时候都能被回收采用标记-清除算法1. 初始标记:STW,记录能被GCROOT直接引用的对象2. 并发标记:从上一结果开始遍历整个对象图3. 重新标记:修正上一阶段的遗漏4. 并发清除采用标记-整理算法1. 初始标记:标记GCROOT(STW)2. 并发标记:以GCROOT做可达性分析3. 最终标记:修正遗漏的标记(STW)

2025-02-26 20:21:15 326

原创 思考:如何设计一个高可用、高并发系统

高可用、高并发

2025-02-26 20:20:28 136

原创 flink基础概念

本质上来说,DataStream的各元素随机分布在各Task Slot,执行keyby操作后,各个元素按照指定规则被分配到各Task Slot。如:source: [1,2,3] f = (i=> list(i,i) )窗口处理函数会对每个窗口的数据进行处理,主要分为2类:增量计算,全量计算。接受两个输入,生成一个输出,即两两合一地进行汇总操作,生成一个。接收两个相同类型的输入,生成一个相同类型的输出。过滤元素,一个元素根据某个规则变成0个、1个。是所有source的顶层接口。

2025-02-26 20:18:53 419

原创 跨nacos集群的远程调用

实现方式:切面类:

2025-02-26 17:04:36 146

原创 如何保障消息的顺序消费

自定义MessageQueue选择器,实现MessageQueueSelector接口,通过业务key的hash值,可以将消息发送到固定的queue。生产者按照顺序发送消息,但发送消息时只能指定topic,无法指定queue,导致消息分布在不同的topic队列中,消费者可能乱序消费。同时,也对processQueue加锁,以防止多线程重复消费。的形式来实现,保证同一个queue只有一个消费者来消费。每条消息有一个业务key,如订单id,或者tag。由于不同的消息处理时间不同,多线程消费会导致乱序。

2025-02-26 16:25:24 722

原创 mysql日志机制redo/undo

如果在写入redo log prepare阶段后立马崩溃,之后会在崩恢复时,由于redo log没有被标记为commit。总的来说,在崩溃恢复后,只要redo log不是处于commit阶段,那么就拿着redo log中的XID去binlog中寻找,找得到就提交,否则就回滚。如果在写入binlog后立马崩溃,在恢复时,由redo log中的XID可以找到对应的binlog,这个时候直接提交即可。如果在写入redo log之前崩溃,那么此时redo log与binlog中都没有,是一致的情况,崩溃也无所谓。

2025-02-26 16:15:27 115

原创 explain查询相应字段的解释和优化方法

explain 字段。

2025-02-26 16:11:28 757

原创 Mysql事务的常见知识点

事务隔离和MVCC

2025-02-26 16:08:57 127

原创 docker的网络模式种类

印象笔记:https://app.yinxiang.com/shard/s56/nl/20985705/b2737c0d-e44d-41ae-9159-dfb39c0e249f?title=docker%20%E7%BD%91%E7%BB%9C%E6%A8%A1%E5%BC%8F

2020-10-16 15:32:13 184 1

原创 k8s网络包在集群内部的转发

印象笔记:https://app.yinxiang.com/shard/s56/nl/20985705/4e827970-fee4-4505-9448-d045616c1a87?title=K8s%E7%BB%84%E4%BB%B6%E4%BB%8B%E7%BB%8D%EF%BC%9A

2020-10-16 15:30:14 238 1

原创 docker 容器的抓包

1.工具:可以使用linux自带的nsenter来切换namespace,并且用宿主机的tcpdump来抓包2.步骤获取容器进程id,即PIDdocker ps | grep xxx获取容器id/namedocker inspect --format "{{.State.Pid}}" container_id/name获取PID使用nsenter切换网络命名空间nsenter -n -t pid...

2020-10-16 15:28:43 1056

原创 NettyRPC之先写一个Demo(一)

想要写个Rpc框架,先把demo跑起来吧思考一下我们的demo需要实现哪些功能远程(两台虚拟机之间的方法调用)制定统一的消息POJO使用Netty实现通信利用反射来获取执行结果,并回传POJO对象序列化的实现废话不多说,先上已经写完的demo目录结构关于Netty的用法此处不再赘述,下面贴上编码解码器及消息POJO代码(demo中使用JAVA自带的序列化)解码器:pack...

2019-01-25 23:06:07 224

原创 实现一个基于Netty、Zookeeper的分布式RPC框架(架构)

待完善

2019-01-25 22:42:04 416

原创 BeanDefinition的注册

在完成了BeanDefinition的载入和解析后,就要对它进行注册,即,把这些BeanDefinition放到IOC的HashMap中/** Map of bean definition objects, keyed by bean name. */ private final Map<String, BeanDefinition> beanDefinitionMap = new...

2019-01-13 20:31:34 1149

原创 BeanDefinition的载入和解析

定位并获取Resource文件后,就要对它进行载入和解析的工作了。这些BeanDefinition是通过一个HashMap来保存的。载入的入口就是refresh()方法以下是AbstractApplicationContext 中 refresh()的代码:@Override public void refresh() throws BeansException, IllegalStat...

2019-01-13 20:08:52 269

原创 Spring IOC容器--基本概念

IOC容器接口: BeanFactorypackage org.springframework.beans.factory;import org.springframework.beans.BeansException;import org.springframework.core.ResolvableType;import org.springframework.lang.Null...

2019-01-08 21:09:08 273

原创 tomcat Bootstrap启动

代码:synchronized (daemonLock) { if (daemon == null) { // Don't set daemon until init() has completed Bootstrap bootstrap = new Bootstrap(); ...

2019-01-08 15:02:07 1840

原创 ClassLoader以及ContextClassLoader的理解

明确定义:1.双亲委派机制(类加载器在加载新类时,会委托父加载器进行加载。加载的条件是此类存在于加载器所绑定的资源目录下,直到父加载器无法加载时由子加载器加载)BootstrapClassloader->ExtensionClassLoader->ApplicationLoader。如果直到System Loader还无法加载(不考虑自定义加载器),则会报ClassNotFound...

2019-01-08 15:01:58 726

原创 在docker中创建mysql

我的MySQL镜像版本是8.0记录一下出现的意外情况:我是以下面的命令来进行安装:  sudo docker run --name mysql_2 -d --restart always -p 5002:3306 -e MYSQL_ROOT_PASSWORD=yourpasswd -v $PWD/db2/data:/var/lib/mysql -v $PWD/db2/logs:l...

2019-01-02 23:22:58 380

原创 Linux 创建新用户注意事项

1.注意创建/home下的新用户的文件夹并且更改权限。2.把新创建的用户添加到root组。3.如果在shell中发现上下左右按键变为ABCD,可以检查TERM环境变量和SHELL变量是否正确(/bin/bash)...

2018-07-23 17:41:30 475

原创 Java Proxy动态代理浅析

首先我们需要举栗说明动态代理类的实际用途: 例如:现在有一位火车乘客,一位黄牛,一座火车站,乘客想要完成买票的动作,他可以到火车站去买,也可以在黄牛手中完成购买火车票的操作,他从黄牛手中买到的票,与火车站买到的票效果相同,这个时候就可以说黄牛是火车站的代理类,黄牛能够间接的调用火车站的功能,同时也能够在卖黄牛票前后插入其他逻辑(比如打广告)来完成切面编程。 动态代理的流程图如下:

2017-12-18 23:36:58 260 1

原创 基于JSONP的跨域请求实现

最近在做一个云音乐播放器的项目,需要用到Ajax跨域请求,多次尝试,选择使用JQuery jsonp来实现这个请求。先简单介绍一些json:1、基于纯文本,支持跨平台;2、Javascript原生支持,后台语言几乎全部支持;3、轻量级数据格式,适合互联网传递;4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;下面讲一下我对于跨域的理解:什么是跨域? 跨域,指的是

2017-12-14 19:15:31 204

原创 字符串编码解码的一点理解

我正在用Netty实现基于TCP协议的TimeEcho服务:@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { //这里已经在pipeline中定义了StringDecoder,所以msg已被解码为String String co

2017-12-08 00:08:30 582

空空如也

空空如也

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

TA关注的人

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