Darren i
码龄3年
  • 97,360
    被访问
  • 125
    原创
  • 26,643
    排名
  • 4
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2018-12-05
博客简介:

weixin_43966635的博客

查看详细资料
  • 3
    领奖
    总分 296 当月 28
个人成就
  • 获得41次点赞
  • 内容获得21次评论
  • 获得110次收藏
创作历程
  • 4篇
    2022年
  • 38篇
    2021年
  • 43篇
    2020年
  • 46篇
    2019年
  • 12篇
    2018年
成就勋章
TA的专栏
  • go
    1篇
  • 消息队列
    2篇
  • 分布式知识
    6篇
  • 计算机网络
    3篇
  • 算法
    14篇
  • docker
    1篇
  • 操作系统
    1篇
  • redis
    5篇
  • spring
    10篇
  • JVM
    4篇
  • MySQL
    8篇
  • 设计模式
    1篇
  • JavaSE
    13篇
  • 系统设计
    1篇
  • 并发编程
    3篇
  • springcloud
    3篇
  • 前端知识
    5篇
  • springboot
    10篇
  • mybatis
    2篇
  • Vue
    7篇
  • python
  • 小程序
    5篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring
  • 小程序
    小程序
  • 搜索
    elasticsearch
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

go 语言 error 处理的最佳实践

今天分享 go 语言 error 处理的最佳实践,了解当前 error 的缺点、妥协以及使用时注意事项。文章内容较长,干货也多,建议收藏什么是 error大家都知道 error[1] 是源代码内嵌的接口类型。根据导出原则,只有大写的才能被其它源码包引用,但是 error 属于 predeclared identifiers 预定义的,并不是关键字,细节参考int make 居然不是关键字?// The error built-in interface type is the conventional
转载
发布博客 2022.04.17 ·
194 阅读 ·
0 点赞 ·
0 评论

简单分析KafKa工作原理

架构图Producer:Producer即生产者,消息的产生者,是消息的入口。kafka cluster:Broker:Broker是kafka实例,每个服务器上有一个或多个kafka的实例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号,如图中的broker-0、broker-1等……Topic:消息的主题,可以理解为消息的分类,kafka的数据就保存在topic。在每个broker上都可以创建多个topic。Partition:Topic的
原创
发布博客 2022.04.04 ·
2000 阅读 ·
0 点赞 ·
0 评论

Raft共识算法

前提条件Raft不考虑拜庭将军问题,即消息会延迟、丢失但不会错误。Raft的特性Strong leader:在 Raft 中,日志条目(log entries)只从 leader 流向其他服务器。 这简化了复制日志的管理,使得 raft 更容易理解。Leader 选举:Raft 使用随机计时器进行 leader 选举。 这只需在任何一致性算法都需要的心跳(heartbeats)上增加少量机制,同时能够简单快速地解决冲突。成员变更:Raft 使用了一种新的联合一致性方法,其中两个不同配置的大多数在
原创
发布博客 2022.04.02 ·
143 阅读 ·
0 点赞 ·
0 评论

一文理清Cookie、Session、Token

发展史1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求
转载
发布博客 2022.03.28 ·
27 阅读 ·
0 点赞 ·
0 评论

Mac 环境变量配置

环境变量配置cd ~ (回到主目录home)如果你是第一次配置环境变量,可以使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件vim .bash_profile,写入相应的环境变量,如下:# golang配置export GOROOT=/usr/local/Cellar/go/1.10.2/libexecexport GOBIN=$GOPATH/binexport GOPATH=$HOME/goexport PATH=$PATH:$GOBIN
原创
发布博客 2021.11.26 ·
34 阅读 ·
0 点赞 ·
0 评论

GET与POST传递数据的最大长度能够达到多少

各种web开发语言中,各个页面之间基本都会进行数据的传递,web开发里面比较常用的数据传递方式有get post,一直以来我都只知道get传递的数据量要比post传递的数据量要少,所以传递大数据量还是要用post,但是 get post 这两种方式最大能传递多少数据呢?一直没搞清楚。今天由于工作的需要,还必须得把这个问题搞明白一下了,下面就说说GET与POST传递数据的最大长度能够达到多少吧。get 是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。很多文章都说GE
转载
发布博客 2021.07.22 ·
792 阅读 ·
0 点赞 ·
0 评论

MySQL 对于千万级的大表要怎么优化?

很多人第一反应是各种切分;我给的顺序是:第一 优化你的sql和索引;第二 加缓存,memcached,redis;第三 以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;第四 如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,
转载
发布博客 2021.07.10 ·
58 阅读 ·
0 点赞 ·
0 评论

Spring IOC 如何解决循环依赖?

前言假设对象A、B 之间相互依赖,Spring IOC是如何解决A、B两个对象的实例化的?答案是三级缓存。三级缓存SpringIOC 通过三级缓存来解决循环依赖问题,三级缓存指的是三个Map:singletonObjects:一级缓存,key为BeanName,value为Bean,日常获取Bean的地方earlySingletonObjects:二级缓存,key为BeanName,value为Bean,已经实例化但还没有进行属性注入的Bean,由三级缓存放入singletonFactorie
原创
发布博客 2021.07.09 ·
725 阅读 ·
0 点赞 ·
0 评论

Spring IOC 容器启动、Bean生命周期详解

前言在Spring IOC 和 AOP 概览中,简要介绍了IOC容器和AOP,没有深入IOC容器Bean的实例化,此文承接上文深入分析Bean的实例化过程、生命周期。Spring IOC的过程Spring的IoC容器在实现控制反转和依赖注入的过程中,可以划分为两个阶段:容器启动Bean实例化容器启动的流程容器启动阶段需要扫描 XML/注解/JavaConfig 中需要被Spring管理的Bean信息将Bean信息封装成 BeanDefinition 并放入beanDefinitionM
原创
发布博客 2021.07.09 ·
75 阅读 ·
0 点赞 ·
0 评论

Innodb中的事务隔离级别和锁的关系

前言我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。一次封锁or两段锁?因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,
转载
发布博客 2021.07.01 ·
61 阅读 ·
0 点赞 ·
0 评论

缓存与数据库的一致性:先操作缓存还是先操作数据库?

旁路缓存模式的流程写操作:先更新 DB然后直接删除 cache读操作:从 cache 中读取数据,读取到就直接返回cache中读取不到的话,就从 DB 中读取数据返回数据放到 cache 中。
原创
发布博客 2021.07.01 ·
164 阅读 ·
0 点赞 ·
0 评论

常用限流算法分析

一、计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。计数器算法对于秒级以上的时间周期来说,会存在一个非常严重的问题,那就是临界问题,如下图:假设1min内服务器的负载能力为100,因此一个周期的访问量限制在100,然而在第一个周期的最后5秒和下一个周期的开始5秒时间段内,分别涌入100的访问量,虽然没有超
原创
发布博客 2021.06.28 ·
83 阅读 ·
0 点赞 ·
1 评论

Spring IOC 和 AOP 概览

IOC(控制反转)IoC(Inversion of Control,控制倒转)。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。在没有IOC时,我们通过new 等关键字等方式,自己实例化对象。而使用IOC只需要通过IOC容器去获取对象,所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。IOC容器Spring中提供了两种IoC容器:BeanFactoryApplicationContext
原创
发布博客 2021.06.25 ·
36 阅读 ·
0 点赞 ·
1 评论

Java版大顶堆的实现

堆的概念堆是一棵完全二叉树,一般使用数组来存储。通俗来讲堆其实就是利用数组来维护一个完全二叉树。按照堆的特点可以把堆分为大顶堆和小顶堆大顶堆:堆的每个结点的值都大于或等于其左右孩子结点的值小顶堆:堆的每个结点的值都小于或等于其左右孩子结点的值根据堆的概念(利用数组维护的完全二叉树),可以推导出:假设 节点A 在数组 tree 的索引为 i 则(1)A节点的左节点索引:leftIdx = (i+1)/2 -1(2)A节点的右节点索引:rightIdx = (i+1)/2(3)A的
原创
发布博客 2021.06.24 ·
470 阅读 ·
0 点赞 ·
0 评论

Integer和Int的比较,谈谈拆卸和装箱

示例代码public static void main(String[] args) { Integer a = new Integer(10111); int b = 10111; boolean equal1 = a == b;//自动拆箱,xxxValue() boolean equal2 = a.equals(b);//自动装箱, valueOf() System.out.println(equal1);
原创
发布博客 2021.06.24 ·
66 阅读 ·
0 点赞 ·
0 评论

MySQL优化(四):count()

count()不同写法的区别COUNT(字段名):返回SELECT语句检索的行中值不为NULL的行数COUNT(1):表示的是直接查询符合条件的数据库表的行数(会包含值为NULL的行数)。其中1指的是表中的第一个字段,如有表 table(id, column1),则1指 id。COUNT(*):表示的是直接查询符合条件的数据库表的行数(会包含值为NULL的行数),其中* 指所有所有字段,并且是SQL92定义的标准统计行数的语法,因为是标准语法,所以MySQL数据库进行过很多优化,推荐使用。COUNT
原创
发布博客 2021.06.23 ·
271 阅读 ·
0 点赞 ·
1 评论

一文理类加载相关知识:类加载器、双亲委派、SPI

思维导图类加载的时机类加载的流程类从被加载到内存中开始,直到被从内存中卸载为止,它的整个生命周期包括:验证、准备、解析、初始化、使用和卸载7 个阶段。其中验证、准备、解析 3 个部分统称为连接(Linking)1.加载(重点)类加载过程的第一步,主要完成下面 3 件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口加载阶段(准确地说,是加载阶段中获取类的二进
原创
发布博客 2021.06.22 ·
89 阅读 ·
0 点赞 ·
0 评论

happen-before原则的理解

前言在程序执行时,为了提高性能,编译器和处理器会对指令进行重排序。为了明确定义多线程场景下重排序的问题(可见性、有序性、原子性),Java引入了JMM(Java Memory Model),也就是Java内存模型。JMM为JAVA程序员提供了8条规则,即happen-before原则。根据happen-before原则,就可以在不理解复杂的重排序规则情况下,解决因重排序而导致的多线程间可见性、有序性等问题。happen-before原则两个操作具有happen-before关系,并不意味着前一个操
原创
发布博客 2021.06.20 ·
131 阅读 ·
0 点赞 ·
0 评论

MySQL日志:binlog、事务日志(redo、undo)

事务的隔离性是通过锁实现,而事务的原子性、一致性和持久性则是通过日志实现。Mysql的日志可以分为:binlog:server层实现事务日志:包括redo log、undo log,引擎层(innodb)实现redo logredo log是用于备份事务中操作得到的最新数据的地方redo log通常是物理日志,记录的是数据页的物理修改,而不是记录某一行或某几行的修改,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。在innoDB的存储引擎中,事务日志通过重做日志(
原创
发布博客 2021.06.17 ·
187 阅读 ·
0 点赞 ·
0 评论

一文理清Http2.0

前言HTTP2.0主要有三大特性:头部压缩、服务端推送(Server Push)、多路复用。本文从分析http1.x存在的问题入手,逐一介绍http2.0的优势。Http1.x存在的问题在HTTP1.0下,HTTP1.1非Keep-Alive模式下,每个请求都要新建一个TCP连接,完成之后立即断开连接,如果有新的请求,则要重新创建请求TCP连接。多次请求建立多次TCP会耗费大量时间,同时没有必要。为了解决这个问题, HTTP 1.1 中提供了 Keep-Alive,允许一定时间(此时间在Nginx或
原创
发布博客 2021.06.13 ·
61 阅读 ·
0 点赞 ·
0 评论
加载更多