fldjsaldkfjoeiaf
码龄13年
关注
提问 私信
  • 博客:23,919
    23,919
    总访问量
  • 79
    原创
  • 759,037
    排名
  • 0
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2011-08-10
博客简介:

cwg1992的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得1次评论
  • 获得14次收藏
创作历程
  • 1篇
    2023年
  • 2篇
    2022年
  • 76篇
    2021年
  • 1篇
    2018年
成就勋章
TA的专栏
  • mysql
    13篇
  • spring
    12篇
  • java基础
    28篇
  • RabbitMQ
    4篇
  • 并发
    2篇
  • redis
    7篇
  • 微服务
    5篇
  • mybatis
    4篇
  • mq
  • 网络
    1篇
  • jvm
  • 安全
  • ES
    2篇
  • kafka
    2篇
  • spring boot
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

347人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

快照读和当前读

当前读读取的是记录的最新版本(最新数据,而不是历史版本的数据),读取时需要保证其他并发事务不能修改当前记录,所以会对读取的记录进行加锁。快照读 即:snapshot read,官方叫法是:Consistent Nonlocking Reads,即:一致性非锁定读,官方的解释是 :InnoDB 通过 MVCC(多版本控制)将数据库在过去某个时刻的快照应用在查询上,使得:这次查询 只能看到 别的事务在生成快照前提交的数据,而不能看到 别的事务在生成快照后提交的数据或者未提交的数据。update(排他锁)
原创
发布博客 2023.08.23 ·
423 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

spring aop代理

而在这个方法中,遍历了所有的BeanPostProcessor,并且调用了BeanPostProcessor的后置处理方法postProcessAfterInitialization。initializeBean——————>doCreateBean——>createBean——>doGetBean——>getBean——>preInstantiateSingletons——>finishBeanFactoryInitialization——>refresh——>构造方法。
原创
发布博客 2022.12.08 ·
157 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

MySQL日志(redo log、binlog)刷盘策略

write(刷盘)指的是MySQL从buffer pool中将内容写到系统的page cache中,并没有持久化到系统磁盘上。取值0:每次提交都将binlog 从binlog cache中 write到磁盘上,而不fsync到磁盘。取值N:每次提交事务都将binlog write到磁盘上,累计N个事务之后,执行fsync。取值1:每次提交事务都将redo log 持久化到磁盘上,也就是write+fsync。取值1:每次提交事务都将binlog fsync到磁盘上。fsync:持久化到磁盘。
原创
发布博客 2022.10.27 ·
1009 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

秒杀系统设计

秒杀系统设计1系统初始化,把商品库存数量加载到Redis2收到请求,Redis预减库存,库存不足,直接返回(lua脚本判断库存扣减库存),否则进入3。这一步还可以有一个优化,就是内存标记,使用一个Map,将商品ID设置为false,当买空时,设为true;然后每次不是直接访问Redis进行库存查询,而是对商品ID进行条件判断3请求入队,立即返回排队中(异步下单)4请求出队,生成订单,减少库存,把订单写入Redis中5客户端轮询,判断是否秒杀成功...
原创
发布博客 2021.11.15 ·
562 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java反射

反射:其实就是动态的从内存加载一个指定的类,并获取该类中的所有的内容。反射的好处:大大的增强了程序的扩展性。反射的基本步骤:  1. 获得Class对象,就是获取到指定的名称的字节码文件对象。  2. 实例化对象,获得类的属性、方法或构造函数。  3. 访问属性、调用方法、调用构造函数创建对象。一: 获取Class对象,有三种方式 :  1:通过每个对象都具备的方法getClass来获取。弊端:必须要创建该类对象,才可以调用getClass方法。  2:每一个数据类型(基本数据类型和引用数
原创
发布博客 2021.11.14 ·
100 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RPC相关

RPC 涉及序列化、压缩算法、协议、动态代理、服务注册、加密、网络编程、连接管理、健康检测、负载均衡、优雅启停机、异常重试、业务分组以及熔断限流等方方面面
原创
发布博客 2021.11.14 ·
1274 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

接口性能调优

耗时操作考虑异步处理恰当使用缓存sql优化优化程序逻辑、代码,有些数据查询了多次,改成一次查出把接口循环操作数据库的 改成批量的
原创
发布博客 2021.11.13 ·
360 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring Cloud Zuul

Spring Cloud Zuul 是 Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的 API 网关使用,支持动态路由与过滤功能API 网关为微服务架构中的服务提供了统一的访问入口,客户端通过 API 网关访问相关服务。API 网关的定义类似于设计模式中的门面模式,它相当于整个微服务架构中的门面,所有客户端的访问都通过它来进行路由及过滤。它实现了请求路由、负载均衡、校验过滤、服务容错、服务聚合等功能。路由与过滤是Zuul的两大核心功能,路由功能负责将外部请求
原创
发布博客 2021.11.13 ·
222 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Eureka

Eureka Server:注册中心服务端注册中心服务端主要对外提供了三个功能:服务注册服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表提供注册表服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表同步状态Eureka Client 通过注册、心跳机制和 Eure
原创
发布博客 2021.11.13 ·
105 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Feign负载均衡 Hystrix熔断器

feign负载均衡--------------feign 是基于Ribbon负载均衡的实现,Feign对Ribbon进行了封装。使用了JDK动态代理请求时长和请求机制 -yml因为是封装了ribbon所以他有负载均衡的能力 他的依赖里面也有ribbonFegin内置的ribbon默认设置了请求超时时长,默认是1000ms,我们可以通过手动配置来修改这个超时时长ribbon:ReadTimeout: 2000 # 读取超时时长ConnectTimeout: 1000 # 建立链接的超时时长1
原创
发布博客 2021.11.13 ·
992 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

CAP理论,BASE理论

CAP理论,BASE理论Consistency (一致性):即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致。对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。Availability (可用性):即服务一直可用,而且是正常响应时间。系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。Partition Tolerance (分区容错性):即分布式系统在遇到某节点或网络
原创
发布博客 2021.11.11 ·
132 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux常用命令

tailf name.log 查看日志less [filename] 显示文件内容vim xxx.file 然后按 “i” 字母进入编辑模式 按 ESC,左下角就可以进行输入:w 保存但不退出:wq 保存并退出:q 退出:q! 强制退出,不保存pwd 显示当前工作目录ls 列出指定目录内容cp 拷贝mv 移动文件/目录, 文件/目录改名mkdir 建立目录rm 删除文件/目录chmod 更改文件/目录权限ps 显示瞬间进程执行状况ifconfig 查询、配置网络设备, 可设置网
原创
发布博客 2021.11.10 ·
966 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java动态代理

代理模式代理模式是23种设计模式的一种,他是指一个对象A通过持有另一个对象B,可以具有B同样的行为的模式。为了对外开放协议,B往往实现了一个接口,A也会去实现接口。但是B是“真正”实现类,A则比较“虚”,他借用了B的方法去实现接口的方法。A虽然是“伪军”,但它可以增强B,在调用B的方法前后都做些其他的事情。Spring AOP就是使用了动态代理完成了代码的动态“织入”。使用代理好处还不止这些,一个工程如果依赖另一个工程给的接口,但是另一个工程的接口不稳定,经常变更协议,就可以使用一个代理,接口变更时,只
原创
发布博客 2021.11.09 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java设计模式

设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结设计模式分为 23 种经典的模式,根据用途我们又可以分为三大类。分别是创建型模式、结构型模式和行为型模式列举几种设计原则,这几种设计原则将贯通全文:面向接口编程,而不是面向实现。这个尤为重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧职责单一原则。每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来对修改关闭,对扩展开放。对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和该修复的 bug 都完成了,别人可不
原创
发布博客 2021.11.09 ·
230 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ES核心概念

原创
发布博客 2021.11.07 ·
81 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ES倒排索引

原创
发布博客 2021.11.07 ·
98 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ死信队列、延时队列

RabbitMQ死信队列、延时队列消息被消费方否定确认,使用 channel.basicNack 或 channel.basicReject ,并且此时requeue 属性被设置为 false 。消息在队列的存活时间超过设置的TTL时间。消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”。“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃为每个需要使用死信的业务队列配置一个死信交换机,这里同一个项
原创
发布博客 2021.11.07 ·
145 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ事务消息

RabbitMQ事务消息通过对信道的设置实现channel.txSelect();通知服务器开启事务模式;服务端会返回Tx.Select-Okchannel.basicPublish;发送消息,可以是多条,可以是消费消息提交ackchannel.txCommit()提交事务;channel.txRollback()回滚事务;消费者使用事务:autoAck=false,手动提交ack,以事务提交或回滚为准;2.autoAck=true,不支持事务的,也就是说你即使在收到消息之后在回滚事务也是
原创
发布博客 2021.11.07 ·
1847 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ如何确保消息发送 ? 消息接收?

RabbitMQ如何确保消息发送 ? 消息接收?发送方确认机制:信道需要设置为 confirm 模式,则所有在信道上发布的消息都会分配一个唯一 ID。一旦消息被投递到queue(可持久化的消息需要写入磁盘),信道会发送一个确认给生产者(包含消息唯一ID)。如果 RabbitMQ发生内部错误从而导致消息丢失,会发送一条nack(未确认)消息给生产者。所有被发送的消息都将被 confirm(即ack)或者被nack一次。但是没有对消息被confirm 的快慢做任何保证,并且同一条消息不会既被 conf
原创
发布博客 2021.11.07 ·
1446 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

简述RabbitMQ的架构设计

先我们肯定知道RabbitMQ就是消息队列的一种实现,那么围绕这个,我们就可以思考一个消息队列到底需要什么,当然是需要队列,那么这个队列就是Queue,那么其他的所有名词都是围绕这个Queue来拓展的。首先,想要让队列不在本地运行,而在网络中运行,肯定会有连接这个概念,所以就会有Connection,我们发一条消息连接一次,这样很显然是浪费资源的,建立连接的过程也很耗时,所以我们就会做一个东西让他来管理连接,当我用的时候,直接从里边拿出来已经建立好的连接发信息,那么ConnectionFactory应运.
原创
发布博客 2021.11.06 ·
1276 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多