sinat_27143551的博客

私信 关注
诡异的笑容
码龄6年

6 年软件开发经验,其中 2 年的项目开发负责人经验,擅长 java web 平台的开发,多年云计 算、大数据领域面向教育、公安类 SaaS 应用开发背景;具有较强的业务分析能力,能够快速理解 和分析复杂的业务逻辑;有较强的沟通协作能力,有异地开发经历;有较强的学习能力,且愿意 尝试新技术。

  • 224,573
    被访问量
  • 112
    原创文章
  • 31,847
    作者排名
  • 85
    粉丝数量
  • 毕业院校 哈尔滨工程大学
  • 目前就职 神秘公司
  • 于 2015-04-04 加入CSDN
获得成就
  • 获得123次点赞
  • 内容获得51次评论
  • 获得376次收藏
荣誉勋章
TA的专栏
  • 存储
    1篇
  • mysql数据库
    13篇
  • 项目
    2篇
  • 秒杀
    5篇
  • oracle数据库
    2篇
  • Java
    24篇
  • linux
    4篇
  • 设计模式
    11篇
  • 微服务
    9篇
  • JVM
    2篇
  • 计算机网络
    7篇
  • maven
    2篇
  • 多线程
    12篇
  • MySQL数据库
    14篇
  • tomcat
    1篇
  • Spring
    12篇
  • Python
    4篇
  • Redis
    12篇
  • MongoDB
    2篇
  • 计算机组成原理
    1篇
  • 数据结构和算法
    15篇
  • 面试
    6篇
  • 分布式
    9篇
  • Nginx
    3篇
  • mybatis
    2篇
  • RPC
    1篇
  • GIT
  • 消息中间件
    9篇
  • posrgresql数据库
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

rabbitmq高可用

rabbitmq高可用2020年12月13日19:30rabbit集群+ 级联 + 镜像队列1、多机多节点集群搭建RabbitMQ集群中的所有节点都会备份所有的元数据信息,包括以下内容:(1)队列元数据:队列的名称及属性(2)交换器:交换器的名称及属性(3)绑定关系元数据:交换器与队列或者交换器与交换器之间的绑定关系(4)vhost元数据:为vhost内的队列、交换器和绑定提供命名空间以及安全属性但是不会备份消息(镜像队列可以解决此问题)!集群中节点...
原创
45阅读
4评论
0点赞
发布博客于 2 月前

mysql主从搭建

mysql主从搭建2020年12月13日17:06搭建:1、mysqld.cnf 配置文件区分master和slavemysql服务器唯一标识设置:server-id=1 作用:server-id用于标识数据库实例,防止在链式主从、多主多从拓扑中导致SQL语句的无限循环: (1)标记binlog event的源实例 (2)过滤主库binlog,当发现server-id相同时,跳过该event执行,避免无限循环执行。 (3)如果设置了repli...
原创
35阅读
2评论
0点赞
发布博客于 2 月前

mysql主从复制原理

mysql主从复制原理2020年12月20日11:24MySQL 是以容易学习和方便的高可用架构,被开发人员青睐的。而它的几乎所有的高可用架构,都直接依赖于 binlog参考 <https://time.geekbang.org/column/article/76446> 1、主从复制原理:一条更新语句的执行过程:主库接收到客户端的更新请求后,执行内部事务的更新逻辑,同时写 binlog备库 B 跟主库 A 之间维持了一个长连接。主库 A 内...
原创
39阅读
2评论
0点赞
发布博客于 2 月前

rabbitMQ级联消费方案验证

参考资料:https://www.rabbitmq.com/federation.html1、开启federation2、配置federation,添加上游mq节点(1)页面方式:(2)命令行方式:rabbitmqctl set_parameter federation-upstream my-upstream \'{"uri":"amqp://server-name","expires":3600000}'(3)Http方式:PUT /api/par..
原创
43阅读
0评论
0点赞
发布博客于 3 月前

RAID学习笔记

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。[1]磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。[1]磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。[1]优点提...
转载
25阅读
0评论
0点赞
发布博客于 4 月前

java项目运维手册

1、生成dump文件jmap -dump:live,format=b,file=heap-dump-1829.bin 321712、查看子文件夹磁盘空间占用情况Du -sh *3、实时监控gc情况:jstat -gcutil pid interval(ms)4、开启jmx远程监控:执行foo.jar启动命令java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=f.
原创
172阅读
0评论
0点赞
发布博客于 5 月前

http客户端超时重试机制总结

超时设置:Feign_Ribbon超时机制结论一,默认情况下Feign的读取超时是1秒,如此短的读取超时算是坑点一。结论二,也是坑点二,如果要配置Feign的读取超时,就必须同时配置连接超时,才能生效。结论三,单独的超时可以覆盖全局超时,这符合预期,不算坑除了可以配置Feign,也可以配置Ribbon组件的参数来修改两个超时时间。这里的坑点三是,参数首字母要大写,和Feign的配置不同。结论五,同时配置Feign和Ribbon的超时,以Feign为准...
原创
356阅读
0评论
0点赞
发布博客于 6 月前

Spring Security配置(单体springboot项目,前后端不分离)

spring boot集成jwt+spring security的大致流程为:1、使用jwt类库生成token、刷新token、验证token2、创建filter拦截请求,拿到token进行校验3、创建spring security配置类,配置请求拦截(1)拦截动态请求配置如下,以及配置当token验证不通过时返回的状态码和json结构的配置(默认返回302重定向到登陆页面)(2)配置静态文件过滤...
原创
293阅读
0评论
0点赞
发布博客于 7 月前

ThreadLocalRandom的正确用法

java里有伪随机型和安全型两种随机数生成器,伪随机生成器根据特定公式将seed转换成新的伪随机数据的一部分,安全随机生成器在底层依赖到操作系统提供的随机事件来生成数据。安全随机生成器需要生成加密性强的随机数据的时候才用它 生成速度慢 如果需要生成大量的随机数据,可能会产生阻塞需要等待外部中断事件而伪随机生成器,只依赖于“seed”的初始值,如果给生成算法提供相同的seed,可以得到一样的伪随机序列。一般情况下,由于它是计算密集型的(不依赖于任何IO设备),因此生成速度更快。以下是伪随机生成器
原创
799阅读
1评论
1点赞
发布博客于 8 月前

java后端工程师高频面试考点之消息中间件

如何保证消息不重复 1、消费端处理消息的业务逻辑保持幂等性或者借助redis等其他产品进行去重处理。更加通用的方法是,给你的数据增加一个版本号属性,每次更数据前,比较当前数据的版本号是否和消息中的版本号一致,如果不一致就拒绝更新数据,更新数据的同时 将版本号+1,一样可以实现幂等更新 2、保证每条消息都有唯一编号且保证消息处理成功与去重表的日志同时出现。 https://blog.csdn.net/sinat_27143551/article/de...
原创
87阅读
0评论
0点赞
发布博客于 8 月前

Dubbo学习笔记

注册中心宕机情况下,dubbo高可用:1、dubbo客户端可以缓存服务提供者的信息,进行调用2、dubbo配置url进行直连调用
原创
101阅读
2评论
0点赞
发布博客于 11 月前

我的知识树

通过工作中以及业余时间自学,目前接触到了如下这么多知识点。
原创
163阅读
0评论
1点赞
发布博客于 1 年前

大货车燃油盗窃案件管控应用详述

1、项目业务介绍盗窃大货车燃油基本是深夜凌晨在高速服务区、出入口和路边等地作案。 由于夜间监控模糊,监控被大货车遮挡,同时嫌疑人故意绕开有监控的路 段,导致作案车辆监控抓拍线索非常少。因此,在侦查大货车燃油盗窃案 件时,常常会遇到作案车辆发现难,行车轨迹研判难这到两个难题。为此我们开发了几种找车的方法:1、 首先是案件找盗油车,我们利用几个案件发生的时空区域的数据碰撞,加 上 AI ...
原创
219阅读
4评论
0点赞
发布博客于 1 年前

mysql主从复制原理

主从复制复制功能数据分布 负载均衡(读) 备份 高可用和故障切换 MySQL 升级测试复制原理Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的 SQL 语句(insert,update,delete,ALTER TABLE,grant 等等)。主从复制的原理其实就是把主服务器上的 BIN 日志复制到从服务器上执行一遍,这样从服务...
转载
81阅读
0评论
0点赞
发布博客于 1 年前

mysql数据库设计与优化与架构 模拟场景(京东商城)

mysql数据库设计与优化与架构 模拟场景(京东商城)任何优化多需要场景,本次所有的场景为京东商城的数据库设计模拟!有问题或者宝贵意见联系我的QQ,非常希望你的加入!##简介: 设计: 1.数据库开发规范的制定 2.数据库结构与设计 3.mysql执行计划的分析 4.mysql数据库的备份和恢复 5.mysql高性能高可用架构变迁场景说明 用户登录->选购商品...
转载
203阅读
0评论
0点赞
发布博客于 1 年前

秒杀tomcat优化

秒杀tomcat优化有问题或者宝贵意见联系我的QQ,非常希望你的加入!要求:本文以tomcat8.5.20为准目标1.内存优化2.并发优化3.APR优化APR优化相关包1.内存优化内存优化catalinaJAVA_OPTS="-server -Xms2048M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDum...
转载
132阅读
0评论
0点赞
发布博客于 1 年前

秒杀nginx优化

秒杀nginx优化要求:目标1.并发优化2.KeepALive长连接优化3.压缩优化4.配置缓存/docs/tools/nginx nginx优化相关包安装:cdyum install -y gcc gcc-c++./configure --prefix=/usr/local/nginx --with-pcre=/home/qiurunze/下载/pcre-8.38 --...
转载
296阅读
0评论
0点赞
发布博客于 1 年前

简单秒杀功能实现思路

秒杀步骤* 1、发送获取验证码请求,后台生成验证码并写入redis* 2、用户填写验证码,发送检验验证码请求,后台校验成功后创建并返回秒杀专属路径* 3、发送秒杀请求,发送商品id和path,后台验证path,验证是否已经秒杀成功(防止重复下单),并预减库存(内存操作)* 4、发送mq消息* 5、监听mq秒杀消息,校验库存,判断是否已经秒杀成功* 6、减库存,创建订单,将秒杀成功信息...
原创
1204阅读
0评论
0点赞
发布博客于 1 年前

原子类为何能支持高并发(CAS介绍)

无锁方案相对互斥锁方案,最大的好处就是性能。互斥锁方案为了保证互斥性,需要执行加锁、解锁操作,而加锁、解锁操作本身就消耗性能;同时拿不到锁的线程还会进入阻塞状态,进而触发线程切换,线程切换对性能的消耗也很大。 相比之下,无锁方案则完全没有加锁、解锁的性能消耗,同时还能保证互斥性,既解决了问题,又没有带来新的问题,可谓绝佳方案。其实原子类性能高的秘密很简单,硬件支持而已。CPU 为了解决并发问题...
原创
95阅读
0评论
0点赞
发布博客于 1 年前

控制反转和依赖注入

1. 控制反转实际上,控制反转是一个比较笼统的设计思想,并不是一种具体的实现方法,一般用来指导框架层面的设计。这里所说的“控制”指的是对程序执行流程的控制,而“反转”指的是在没有使用框架之前,程序员自己控制整个程序的执行。在使用框架之后,整个程序的执行流程通过框架来控制。流程的控制权从程序员“反转”给了框架。2. 依赖注入依赖注入和控制反转恰恰相反,它是一种具体的编码技巧。我们不通过 ...
原创
55阅读
0评论
0点赞
发布博客于 1 年前

Redis的SortedSet为什么使用跳表而不使用红黑树?

为什么 Redis 要用跳表来实现有序集合,而不是红黑树?Redis 中的有序集合是通过跳表来实现的,严格点讲,其实还用到了散列表。如果你去查看 Redis 的开发手册,就会发现,Redis 中的有序集合支持的核心操作主要有下面这几个:插入一个数据;删除一个数据;查找一个数据;按照区间查找数据(比如查找值在 [100, 356] 之间的数据);迭代输出有序序列。其中...
原创
841阅读
0评论
1点赞
发布博客于 1 年前

求数组中第二大的数字

private static int secondMax(int[] arr) { int len = arr.length; int max = Integer.MIN_VALUE, secondMax = Integer.MIN_VALUE; if (len < 2) return secondMax; for (int i = 0; i <...
原创
146阅读
0评论
0点赞
发布博客于 1 年前

字符串按照字母表顺序排序

private static String sortString2(String string){ char[] str=string.toCharArray(); int n = string.length(); boolean flag = false; for(int i=0;i< n - 1;i++) { ...
原创
1395阅读
0评论
0点赞
发布博客于 1 年前

JVM相关问题定位

cpu占用过高排查思路2. top 查看占用cpu的进程 pid4. top -Hp pid 查看进程中占用cpu过高的线程id tid6. printf '%x/n' tid 转化为十六进制8. jstack pid |grep tid的十六进制 -A 30 查看堆栈信息定位jvm old区占用过高排查思路2. top查看占用cpu高的进程4. jstat -...
原创
76阅读
0评论
0点赞
发布博客于 1 年前

如何避免死锁

避免死锁主要有 3种方式加锁顺序加锁时限死锁检测加锁顺序一个线程如果要获取多个锁,必须按照一定的顺序去获取,比如要获取A B C 三把锁,我们规定,必须获取到了 AB 两把锁,才能去获取 C锁举个例子 现在有两个线程 都要去获取 ABC 三把锁然后 1号 线程 获取到了 A 和 B 两把锁2号 线程获取了 C锁于是 1号线程在等待 2号线程释放锁C锁2号线程在等待...
原创
78阅读
1评论
1点赞
发布博客于 2 年前

二叉树与散列表的比较

散列表的插入、删除、查找操作的时间复杂度可以做到常量级的 O(1),非常高效。而二叉查找树在比较平衡的情况下,插入、删除、查找操作时间复杂度才是 O(logn),相对散列表,好像并没有什么优势,那我们为什么还要用二叉查找树呢?我认为有下面几个原因:第一,散列表中的数据是无序存储的,如果要输出有序的数据,需要先进行排序。而对于二叉查找树来说,我们只需要中序遍历,就可以在 O(n) 的时间复杂度内...
原创
162阅读
2评论
1点赞
发布博客于 2 年前

SpringBoot Starter介绍以及实例

一.Spring Boot Starter简介Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。例如在Maven的依赖中加入spring-boot-star...
转载
84阅读
0评论
0点赞
发布博客于 2 年前

哈哈哈哈哈哈哈

 
发布Blink于 2 年前

redis字符串的实现

本篇会讲以下内容: Redis字符串的实现 Redis字符串的性能优势 Redis字符串的实现Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能,可以看出Redis为了高性能也是煞费苦心。Redis构建了一个叫做简单动态字符串(Simple Dynamic String),简称SDS1.SDS 代码结...
转载
50阅读
0评论
0点赞
发布博客于 2 年前

了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?

面试题了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?面试官心理分析其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。面试题剖析缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4...
转载
73阅读
0评论
0点赞
发布博客于 2 年前

为什么说HashMap是线程不安全的?

我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。1.jdk1.7中的HashMap在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:publicclassHash...
转载
82阅读
0评论
0点赞
发布博客于 2 年前

Redis的过期策略

在日常开发中,我们使用 Redis 存储 key 时通常会设置一个过期时间,但是 Redis 是怎么删除过期的 key,而且 Redis 是单线程的,删除 key 会不会造成阻塞。要搞清楚这些,就要了解 Redis 的过期策略和内存淘汰机制。Redis采用的是定期删除 + 懒惰删除策略。定期删除策略Redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,默认每 100ms...
转载
126阅读
0评论
0点赞
发布博客于 2 年前

漫谈Redis 实现分布式锁 以及 Redisson 源码解析

# 产生背景Distributed locks are a very useful primitive in many environments where different processes must operate with shared resources in a mutually exclusive way.在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式...
转载
113阅读
0评论
0点赞
发布博客于 2 年前

消息中间件如何保证消息的顺序性

我举个例子,我们以前做过一个 mysqlbinlog同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数据 team,就需要同步一个 mysql 库过来,对公司的业务系统的数据做各种复杂的操作。你在 mysql 里增删改一条数据,对应出来了增删改 3 ...
转载
300阅读
0评论
0点赞
发布博客于 2 年前

分库分表之后,id主键怎么处理

问:分库分表之后,id 主键如何处理?面试官心理分析其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。面试题剖析基于数据库的实现方案数据库自增 id这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没...
转载
57阅读
0评论
0点赞
发布博客于 2 年前

Spring框架中Bean的生命周期

首先简单说一下(以下为一个回答的参考模板)1、实例化一个Bean--也就是我们常说的new;2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入;3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值4、如果这个Bean已经实现了BeanFact...
转载
56阅读
0评论
0点赞
发布博客于 2 年前

redis统计独立用户访问量

众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。废话不多说,今天我们来聊一聊拼多多的一道后台面试真题,是一道简单的架构类的题目:拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢...
转载
738阅读
0评论
0点赞
发布博客于 2 年前

Kafka | 你一定不能错过的Kafka控制器

今天我要和你分享的主题是:Kafka 中的控制器组件。控制器组件(Controller),是 Apache Kafka 的核心组件。它的主要作用是在 Apache Zoo...
转载
102阅读
0评论
0点赞
发布博客于 2 年前

数据库 | MySQL调优之索引:索引的失效与优化

MySQL 索引存储结构索引是优化数据库查询最重要的方式之一,它是在 MySQL 的存储引擎层中实现的,所以每一种存储引擎对应的索引不一定相同。我们可以通过下面这张表格,...
转载
237阅读
0评论
0点赞
发布博客于 2 年前

Kafka | 消费者组重平衡全流程解析

今天我要和你分享的主题是:消费者组重平衡全流程解析。之前我们聊到过消费者组的重平衡流程,它的作用是让组内所有的消费者实例就消费哪些主题分区达成一致。重平衡需要借助 Kaf...
转载
823阅读
0评论
0点赞
发布博客于 2 年前

Java | 如何优化垃圾回收机制?

我们知道,在 Java 开发中,开发人员是无需过度关注对象的回收与释放的,JVM 的垃圾回收机制可以减轻不少工作量。但完全交由 JVM 回收对象,也会增加回收性能的不确定...
转载
210阅读
0评论
0点赞
发布博客于 2 年前

Kafka | 请求是怎么被处理的?

今天我要和你分享的主题是:Kafka 请求是怎么被处理的。无论是 Kafka 客户端还是 Broker 端,它们之间的交互都是通过“请求 / 响应”的方式完成的。比如,客...
转载
145阅读
0评论
0点赞
发布博客于 2 年前

Java | 什么是数据的强、弱一致性?

在讲解并发容器的时候,我提到了“强一致性”和“弱一致性”。很多同学表示对这个概念没有了解或者比较模糊,今天这讲加餐就来详解一下。说到一致性,其实在系统的很多地方都存在数据...
转载
514阅读
0评论
2点赞
发布博客于 2 年前

Kafka | Kafka副本机制详解

今天我要和你分享的主题是:Apache Kafka 的副本机制。所谓的副本机制(Replication),也可以称之为备份机制,通常是指分布式系统在多台网络互联的机器上保...
转载
245阅读
0评论
0点赞
发布博客于 2 年前

Java | 如何设置线程池大小?

还记得我说过“线程池的线程数量设置过多会导致线程竞争激烈”吗?今天再补一句,如果线程数量设置过少的话,还会导致系统无法充分利用计算机资源。那么如何设置才不会影响系统性能呢...
转载
374阅读
2评论
0点赞
发布博客于 2 年前

Kafka | 消费者组消费进度监控都怎么实现?

今天我要跟你分享的主题是:消费者组消费进度监控如何实现。对于 Kafka 消费者来说,最重要的事情就是监控它们的消费进度了,或者说是监控它们消费的滞后程度。这个滞后程度有...
转载
1041阅读
0评论
0点赞
发布博客于 2 年前

Kafka | Java 消费者是如何管理TCP连接的? | 极客时间

今天我要和你分享的主题是:Kafka 的 Java 消费者是如何管理 TCP 连接的。在专栏中,我们专门聊过“Java生产者是如何管理 TCP 连接资源的”这个话题,你应...
转载
350阅读
0评论
0点赞
发布博客于 2 年前

Java | 并发容器的使用:识别不同场景下最优容器

在并发编程中,我们经常会用到容器。今天我要和你分享的话题就是:在不同场景下我们该如何选择最优容器。并发场景下的 Map 容器假设我们现在要给一个电商系统设计一个简单的统计...
转载
81阅读
0评论
0点赞
发布博客于 2 年前

Kafka | CommitFailedException异常怎么处理? | 极客时间

今天我来跟你聊聊 CommitFailedException 异常的处理。说起这个异常,我相信用过 Kafka Java Consumer 客户端 API 的你一定不会感...
转载
206阅读
0评论
0点赞
发布博客于 2 年前

Java | 多线程调优(下):如何优化多线程上下文切换?

通过上一讲的讲解,相信你对上下文切换已经有了一定的了解了。如果是单个线程,在 CPU 调用之后,那么它基本上是不会被调度出去的。如果可运行的线程数远大于 CPU 数量,那...
转载
433阅读
0评论
0点赞
发布博客于 2 年前

消息队列 | 该如何选择消息队列?

这节课我们来聊一下几个比较常见的开源的消息队列中间件。如果你正在做消息队列技术选型,不知道该选择哪款消息队列,你一定要先听一下这节课的内容。作为一个程序员,相信你一定听过...
转载
176阅读
0评论
0点赞
发布博客于 2 年前

Kafka | Kafka中位移提交那些事儿

之前我们说过,Consumer 端有个位移的概念,它和消息在分区中的位移不是一回事儿,虽然它们的英文都是 Offset。今天我们要聊的位移是 Consumer 的消费位移...
转载
177阅读
0评论
0点赞
发布博客于 2 年前

Java | 多线程调优(上):哪些操作导致了上下文切换?

我们常说“实践是检验真理的唯一标准”,这句话不光在社会发展中可行,在技术学习中也同样适用。记得我刚入职上家公司的时候,恰好赶上了一次抢购活动。这是系统重构上线后经历的第一...
转载
1509阅读
1评论
0点赞
发布博客于 2 年前

进程上下文频繁切换导致load average过高

一、问题现象现网有两台虚拟机主机95%的cpu处于idle状态,内存使用率也不是特别高,而主机的load average达到了40多。二、问题分析先在主机上通过top、f...
转载
92阅读
0评论
0点赞
发布博客于 2 年前

原创 | POI导入导出Excel工具类分享

1 PoI中Excel组成Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(...
原创
45阅读
0评论
0点赞
发布博客于 2 年前

Kafka | 消费者组重平衡能避免吗?

今天我要和你分享的内容是:消费者组重平衡能避免吗?我们讲过重平衡,也就是 Rebalance,现在先来回顾一下这个概念的原理和用途。Rebalance 就是让一个 Con...
转载
348阅读
0评论
0点赞
发布博客于 2 年前

计算机组成原理 | 浮点数和定点数(下):深入理解浮点数到底有什么用?

上一讲,我们讲了用“浮点数”这样的数据形式,来表示一个不能确定大小的数据范围。浮点数可以大到 3.40×1038,也可以小到 1.17×10−38 这样的数值。同时,我们...
转载
208阅读
0评论
1点赞
发布博客于 2 年前

Kafka | 揭开神秘的“位移主题”面纱

今天我要和你分享的内容是:Kafka 中神秘的内部主题(Internal Topic)__consumer_offsets。__consumer_offsets 在 Ka...
转载
132阅读
0评论
0点赞
发布博客于 2 年前

Java | 多线程之锁优化(下):使用乐观锁优化并行操作 | 极客时间

前两讲我们讨论了 Synchronized 和 Lock 实现的同步锁机制,这两种同步锁都属于悲观锁,是保护线程安全最直观的方式。我们知道悲观锁在高并发的场景下,激烈的锁...
转载
120阅读
0评论
0点赞
发布博客于 2 年前

计算机组成原理 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?...

在我们日常的程序开发中,不只会用到整数。更多情况下,我们用到的都是实数。比如,我们开发一个电商 App,商品的价格常常会是 9 块 9;再比如,现在流行的深度学习算法,对...
转载
143阅读
0评论
0点赞
发布博客于 2 年前

Synchronized锁升级步骤

Synchronized锁升级步骤1. 偏向锁:JDK6中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能 ,2. 偏向锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁没有被其他的线程获取,则持有偏向锁的线程将永远不需要同步。大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁3. 当锁对...
转载
651阅读
0评论
0点赞
发布博客于 2 年前

kafka | 消费者组到底是什么?

消费者组,即 Consumer Group,应该算是 Kafka 比较有亮点的设计了。那么何谓 Consumer Group 呢?用一句话概括就是:Consumer Gr...
转载
808阅读
0评论
2点赞
发布博客于 2 年前

JVM | 垃圾回收(下)

在读书的时候,我曾经写过一个统计 Java 对象生命周期的动态分析,并且用它来跑了一些基准测试。其中一些程序的结果,恰好验证了许多研究人员的假设,即大部分的 Java 对...
转载
29阅读
0评论
0点赞
发布博客于 2 年前

Java | 多线程之锁优化(中):深入了解Lock同步锁的优化方法

今天这讲我们继续来聊聊锁优化。上一讲我重点介绍了在 JVM 层实现的 Synchronized 同步锁的优化方法,除此之外,在 JDK1.5 之后,Java 还提供了 L...
转载
90阅读
0评论
0点赞
发布博客于 2 年前

kafka | 幂等生产者和事务生产者是一回事吗?

今天我要和你分享的主题是:Kafka 消息交付可靠性保障以及精确处理一次语义的实现。所谓的消息交付可靠性保障,是指 Kafka 对 Producer 和 Consumer...
转载
79阅读
0评论
0点赞
发布博客于 2 年前

Java | 多线程之锁优化(上):深入了解Synchronized同步锁的优化方法

在并发编程中,多个线程访问同一个共享资源时,我们必须考虑如何维护数据的原子性。在 JDK1.5 之前,Java 是依靠 Synchronized 关键字实现锁功能来做到这...
转载
161阅读
0评论
0点赞
发布博客于 2 年前

JVM | 垃圾回收(上)

你应该听说过这么一句话:免费的其实是最贵的。Java 虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收。不过既然是自动机制,肯定没法做到...
转载
33阅读
0评论
0点赞
发布博客于 2 年前

TPS和QPS的区别和理解

TPS(transaction per second)是单位时间内处理事务的数量,QPS(query per second)是单位时间内请求的数量。TPS代表一个事务的处理,可以包含了多次请求。很多公司用QPS作为接口吞吐量的指标,也有很多公司使用TPS作为标准,两者都能表现出系统的吞吐量的大小,TPS的一次事务代表一次用户操作到服务器返回结果,QPS的一次请求代表一个接口的一次请求到服务器返回结...
转载
821阅读
0评论
2点赞
发布博客于 2 年前

13 | Java生产者是如何管理TCP连接的?

今天我要和你分享的主题是:Kafka 的 Java 生产者是如何管理 TCP 连接的。为何采用 TCP?Apache Kafka 的所有通信都是基于 TCP 的,而不是基...
转载
130阅读
0评论
0点赞
发布博客于 2 年前

Java性能优化| 深入浅出HashMap的设计与优化

在上一讲中我提到过 Collection 接口,那么在 Java 容器类中,除了这个接口之外,还定义了一个很重要的 Map 接口,主要用来存储键值对数据。HashMap ...
转载
149阅读
0评论
0点赞
发布博客于 2 年前

Kafka | 无消息丢失配置怎么实现?

今天我要和你分享的主题是:如何配置 Kafka 无消息丢失。一直以来,很多人对于 Kafka 丢失消息这件事情都有着自己的理解,因而也就有着自己的解决之道。在讨论具体的应...
转载
104阅读
0评论
0点赞
发布博客于 2 年前

Java | 字符串性能优化不容小觑,百M内存轻松存储几十G数据

String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的。String 对象作为 Java 语言中重要的数据类型,是内存中占据空间最大的一个对象...
转载
234阅读
0评论
0点赞
发布博客于 2 年前

kafka | 生产者压缩算法面面观

今天我要和你分享的内容是:生产者压缩算法面面观。说起压缩(compression),我相信你一定不会感到陌生。它秉承了用时间去换空间的经典 trade-off 思想,具体...
转载
71阅读
0评论
0点赞
发布博客于 2 年前

mysql数据库学习笔记

1、关于timestamp的坑timestamp是带有时区的时间戳,使用不当容易产生时间与实际相差8或13小时的情况在使用时,需要设置连接参数 serverTimezone=CTT。同时在linux服务器中设置ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime...
原创
29阅读
0评论
0点赞
发布博客于 2 年前

加餐 | 推荐几款常用的性能测试工具

熟练掌握一款性能测试工具,是我们必备的一项技能。他不仅可以帮助我们模拟测试场景(包括并发、复杂的组合场景),还能将测试结果转化成数据或图形,帮助我们更直观地了解系统性能。...
转载
94阅读
0评论
0点赞
发布博客于 2 年前

Java并发编程 | 线程本地存储模式:没有共享,就没有伤害

民国年间某山东省主席参加某大学校庆演讲,在篮球场看到十来个人穿着裤衩抢一个球,观之实在不雅,于是怒斥学校的总务处长贪污,并且发话:“多买几个球,一人发一个,省得你争我抢!...
转载
102阅读
0评论
0点赞
发布博客于 2 年前

Kafka | 生产者消息分区机制原理剖析

我们在使用 Apache Kafka 生产和消费消息的时候,肯定是希望能够将数据均匀地分配到所有服务器上。比如很多公司使用 Kafka 收集应用服务器的日志数据,这种数据...
转载
269阅读
0评论
0点赞
发布博客于 2 年前

postgresql笔记

导出数据库脚本pg_dump -h 127.0.0.1 -p 5432 -U postgres -d 库名 --inserts (-t tbl_village) -f D:\village.sql
原创
91阅读
0评论
1点赞
发布博客于 2 年前

一次性替换字符串中的多个字符

一次性替换字符串中的多个字符 private String replaceEach(final String text, final Map<String, String> definitions ) { final String[] keys = definitions.keySet().toArray(new String[0]); ...
原创
798阅读
0评论
1点赞
发布博客于 2 年前

Kafka | 一篇文章带你快速搞定Kafka术语

在 Kafka 的世界中有很多概念和术语是需要你提前理解并熟练掌握的,这对于后面你深入学习 Kafka 各种功能和特性将大有裨益。下面我来盘点一下 Kafka 的各种术语...
转载
78阅读
0评论
0点赞
发布博客于 2 年前

计算机组成原理 | 函数调用:为什么会发生stack overflow?

在开发软件的过程中我们经常会遇到错误,如果你用 Google 搜过出错信息,那你多少应该都访问过Stack Overflow这个网站。作为全球最大的程序员问答网站,Sta...
转载
61阅读
0评论
0点赞
发布博客于 2 年前

Java并发编程 | 高性能网络应用框架Netty

Netty 是一个高性能网络应用框架,应用非常普遍,目前在 Java 领域里,Netty 基本上成为网络程序的标配了。Netty 框架功能丰富,也非常复杂,今天我们主要分...
转载
75阅读
0评论
0点赞
发布博客于 2 年前

Kafka核心知识点

原文链接:https://www.jianshu.com/p/d3e963ff8b70简介kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。kafka对外使用topic的概念,生产者往topic里写消息,消费者从读消息。为了做到水平扩展,一个topic实际...
转载
643阅读
0评论
2点赞
发布博客于 2 年前

使用kafka传递大文件时的配置

Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试)。但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多有10-100M,这种情况下,Kakfa应该如何处理?针对这个问题,有以下几个建议: 最好的方法是不直接传送这些大的数据。如果有共享存储,如NAS, HDFS, S3等,可以把这些大的文件存放...
转载
3633阅读
0评论
1点赞
发布博客于 2 年前

Kafka学习笔记

代码参照官方提供的demo:https://github.com/spring-projects/spring-kafka来学习。理论知识参考:https://www.orchome.com/303博客1. 发送方法send()方法是异步的,添加消息到缓冲区等待发送,并立即返回。生产者将单个的消息批量在一起发送来提高效率。2. ack机制生产者需要leader确认请求完成...
原创
56阅读
0评论
0点赞
发布博客于 2 年前

Kafka使用场景

关于消息队列的使用一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景...
转载
92阅读
0评论
0点赞
发布博客于 2 年前

计算机组成原理 | 指令跳转:原来if...else就是goto

上一讲,我们讲解了一行代码是怎么变成计算机指令的。你平时写的程序中,肯定不只有 int a = 1 这样最最简单的代码或者指令。我们总是要用到 if…else 这样的条件...
转载
331阅读
0评论
0点赞
发布博客于 2 年前

Java并发编程 | 高性能限流器Guava RateLimiter

今天我们来看看Guava RateLimiter 是如何解决高并发场景下的限流问题的。Guava 是 Google 开源的 Java 类库,提供了一个工具类 RateLi...
转载
314阅读
0评论
0点赞
发布博客于 2 年前

UML之时序图详解

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17...
转载
90阅读
0评论
0点赞
发布博客于 2 年前

MySQL | 到底可不可以使用join? | 极客时间

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类:我们 DBA 不让使用 join,使用 join 有什么问题呢?如果有两个大小不同的表做 join,应...
转载
187阅读
0评论
0点赞
发布博客于 2 年前

计算机组成原理 | 计算机指令:让我们试试用纸带编程

你在学写程序的时候,有没有想过,古老年代的计算机程序是怎么写出来的?上大学的时候,我们系里教 C 语言程序设计的老师说,他们当年学写程序的时候,不像现在这样,都是用一种古...
转载
188阅读
0评论
0点赞
发布博客于 2 年前

Java | try-catch-finally-return执行顺序

1. try中没有抛出异常,try、catch和finally块中都有return语句运行结果:执行顺序:执行try块,执行到return语句时,先执行return的语句...
原创
138阅读
0评论
0点赞
发布博客于 2 年前

on duplicate key update语句和insert ignore into语句

插入更新语句:ON DUPLICATE KEY UPDATE该语句的语法如下:INSERTINTOtablename(field1,field2, field3, ...)VALUES(value1, value2, value3, ...)ONDUPLICATEKEYUPDATEfield1=value1,field2=value2, field3=value3, ...
原创
544阅读
0评论
1点赞
发布博客于 2 年前

计算机组成原理 | 穿越功耗墙,我们该从哪些方面提升“性能”?

上一讲,在讲 CPU 的性能时,我们提到了这样一个公式:程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time这么来看,如果要提升计算机的性能,我...
转载
233阅读
0评论
1点赞
发布博客于 2 年前

MySQL | MySQL是怎么保证数据不丢的?

今天我和你介绍的方法,跟数据的可靠性有关。结论是:只要 redo log 和 binlog 保证持久化到磁盘,就能确保 MySQL 异常重启后,数据可以恢复。有同学问,r...
转载
129阅读
0评论
0点赞
发布博客于 2 年前

Java | JDK和CGLIB动态代理区别

JDK动态代理原理(jdk8):https://blog.csdn.net/yhl_jxy/article/details/80586785CGLIB动态代理实现原理:h...
转载
74阅读
0评论
0点赞
发布博客于 2 年前

计算机组成原理 | 通过你的CPU主频,我们来谈谈“性能”究竟是什么?

“性能”这个词,不管是在日常生活还是写程序的时候,都经常被提到。比方说,买新电脑的时候,我们会说“原来的电脑性能跟不上了”;写程序的时候,我们会说,“这个程序性能需要优化...
转载
129阅读
0评论
0点赞
发布博客于 2 年前

分布式|使用Redis SETNX 命令实现分布式锁

使用分布式锁要满足几个条件 系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各...
原创
106阅读
0评论
0点赞
发布博客于 2 年前

分布式|RabbitMQ要点

0、消息中间件的作用(1)解耦(2)冗余(消息冗余存储)(3)扩展性(4)削峰(4)可恢复性(5)缓冲(6)异步(7)顺序保证(RabbitMQ不支持)1、RabbitM...
原创
73阅读
0评论
0点赞
发布博客于 2 年前

MySQL数据库 | 幻读和间隙锁

幻读:第一个事务对一定范围的数据进行批量修改,第二个事务在这个范围增加一条数据,这时候第一个事务就会丢失对新增数据的修改。例如:系统管理员A将数据库中所有学生的成绩从具体...
转载
206阅读
0评论
0点赞
发布博客于 2 年前