- 博客(349)
- 资源 (7)
- 问答 (2)
- 收藏
- 关注
原创 线上CPU打满100%问题处理思路。
想起我以前的总结,线上的服务频繁full GC,大概率是短时间频繁并发大流量访问,打满了新生代,新生代打满之后,就分配到老年代,老年代打满了就会进行full GC.。其中full GC的优先级最高,当一次FULL GC完成,再来检查老年代,发现继续打满,又重新进行full GC,垃圾回收线程不断一直抢占CPU,导致CPU使用率达到100%,full GC不断回收,但是效果有限,每次只能回收一部分,又马上打满,导致cpu持续达到100%,以及线程han住,导致大量线程请求无法进行处理,CPU持续100%。
2023-04-03 23:26:18 484
原创 关于架构的思考
总感觉抛开业务,光谈架构很虚。因为架构是为业务服务的,一切抛开业务的架构都是耍流氓。任何高大上的架构,如果不符合业务需求,都是不行的。
2022-08-01 09:05:45 215
原创 Java和大数据的关系
最近我突然意识到,Java的终点就是大数据。数据量越来越大,分布式实时计算可以生成用户画像,进行实时分析。Java程序员完全可以向上提升和突破,而且不用担心35岁的问题,那就是完全可以转大数据开发,大数据天然支持Java语言,而且大数据是越看越吃香。我打算利用周末时间,在本地搭建一套hadoop环境,开始学习大数据,加油吧。...
2022-07-12 09:06:29 394 1
原创 MYSQL百万级数据查询优化
一、两种查询引擎查询速度innoDB不保存表的具体行数,所以执行select count(*) from table; innoDB要扫描一遍整个表来计算行数,而MyISAM只需要简单的独处保存好的行数即可。需要注意的是当 count(*)语句包含where条件时,两种表的操作有些不同,条件字段如果是主键之外其他具有唯一约束的列时,查询速度会快很多,可以避免全表扫描。二、百万数据下mysql分页问题– 在开发过程中我们进场使用分页,核心技术是使用limit进行数据的读取,在mysql数据量
2022-06-09 20:51:47 10011 1
原创 API接口优化
哪些问题会引起接口性能问题?这个问题的答案非常多,需要根据自己的业务场景具体分析。这里做一个不完全的总结:数据库慢查询深度分页问题未加索引索引失效join过多子查询过多in中的值太多单纯的数据量过大业务逻辑复杂循环调用顺序调用线程池设计不合理锁设计不合理机器问题(fullGC,机器重启,线程打满)1、慢查询(基于mysql)1.1 深度分页所谓的深度分页问题,涉及到mysql分页的原理。通常情况下,mysql的分页是这样写的:select name,code f
2022-06-09 08:57:26 170
原创 TIDB和MYSQL的区别
世界级的开源分布式数据库 TiDB 自 2016 年 12 月正式发布第一个版本以来,业内诸多公司逐步引入使用,并取得广泛认可。对于互联网公司,数据存储的重要性不言而喻。在 NewSQL 数据库出现之前,一般采用单机数据库(比如 MySQL)作为存储,随着数据量的增加,“分库分表”是早晚面临的问题,即使有诸如 MyCat、ShardingJDBC 等优秀的中间件,“分库分表”还是给 RD 和 DBA 带来较高的成本;NewSQL 数据库出现后,由于它不仅有 NoSQL 对海量数据的管理存储能力、还支持.
2022-06-08 09:08:02 5118
原创 百万流量接口如何提供并发能力
百万流量听起来很吓人,其实每一秒也就几百个请求。具体分析如下,百万流量接口:100万每天1个小时12万1s钟363个集群:域名通过ngnix,分配到4台服务器,每台服务器只有90.75个。同时保证接口不能超时,那性能瓶颈就是数据库和业务,业务流程梳理,数据库读写分离。完美解决。...
2022-06-02 11:43:45 409
原创 Kafka分配策略和再平衡策略
Kafka自身提供了三种分区分配策略,通过消费者端配置参数partition.assignment.strategy来控制。1.RangeAssignor分配策略(kafka默认的分区策略)通过配置partition.assignment.strategy=org.apache.kafka.clients.consumer.RangeAssignor来让此消费者使用RangeAssignor分配策略。按照消费者总数和分区总数进行整除运算来获得一个跨度,然后将分区按照跨度进行平均分配,以保证分区尽可
2022-05-22 14:57:20 635
原创 如何对数据库进行优化
数据库优化在进行数据库优化之前,我们要弄清楚一些问题,是不是每个项目中的数据库都要进行优化呢?优化的思路是什么?怎么进行优化?优化能给我们带来什么.......接下来请大家带着这些问题,听壹哥给你剖析MySQL数据库的优化。1. 概念&作用我们这里所谓的数据库优化,是指根据服务器目前的状况,通过一系列的改进措施,使得可以合理地利用服务器现有资源,最大程度地提高MySQL性能。通过数据库优化,可以降低数据请求的响应时间,提高数据吞吐量,提升数据库的性能指标。2. 优化必要性不管怎样,数
2022-05-18 17:58:08 521 1
原创 限流之漏桶算法
一 算法描述漏桶算法比较形象,设想有一个桶,桶的底部有一个洞,当装上水的时候,水会一滴一滴地从底部漏掉。当装的水太满,水会溢出,但底部漏水的速度还是不变的。底部漏水的速度就是系统处理的速度,桶里存储的水就是上游过来的请求。当请求太多,超过桶的容量,就会被拒绝。系统只在另一端按照固有的速度处理请求。如下图所示,外部的请求随机而来,把“桶”填满后,装不进“桶”的请求被丢弃。每秒从“桶”中匀速“漏出”一定量的“水”(请求),服务进程处理漏出的请求包。当请求突增的时候,漏桶算法能够保证处理速度总是恒定
2022-05-16 22:16:51 182
原创 限流之滑动窗口算法实战
一 算法滑动窗口算法弥补了计数器算法的不足。滑动窗口算法把间隔时间划分成更小的粒度,当更小粒度的时间间隔过去后,把过去的间隔请求数减掉,再补充一个空的时间间隔。如下图所示,把1分钟划分为10个更小的时间间隔,每6s为一个间隔。1 一个时间窗口为1分钟,滑动窗口分成10个格子,每个格子6秒。2 每过6秒,滑动窗口向右移动1个格子。3 每个格子都有独立的计数器。4 如果时间窗口内所有的计数器之和超过了限流阀值,则触发限流操作。如下图所示,滑动窗口算法比计数器算法控制得更精细。用户在
2022-05-16 22:15:53 404
原创 限流之计数器算法
一 点睛发生过载的原因主要是缓冲区满,导致处理的请求超时。所以限制流量,尽早拒绝过载状态的请求,能够保证服务尽量处理负载过程中的请求。限流的主要方法有下面四种:计数器算法滑动窗口算法漏桶算法令牌桶算法本篇介绍计数器算法。二 算法计数器算法是在一定的时间间隔里,记录请求次数,当请求次数超过该时间限制时,就把计数器清零,然后重新计算。当请求次数超过间隔内的最大次数时,拒绝访问。例如:一个接口每分钟允许访问100次。实现方式如下:1 设置一个计数器 count ,接收一个请
2022-05-16 22:08:19 272
原创 一文明白CDN加速是个啥
一、CDN简介CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络,这个概念始于1996年,是美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。为了能在传统IP网上发布丰富的宽带媒体内容,他们提出在现有互联网基础上建立一个内容分发平台专门为网站提供服务,并于1999年成立了专门的CDN服务公司,为Yahoo提供专业服务。由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。CDN的基本原理是广泛采用各
2022-05-15 11:38:55 250
原创 String字符串反转 力扣
classSolution{publicvoidreverseString(char[]s){intfirstIndex=0;intlastIndex=s.length-1;while(firstIndex<lastIndex){//替换chartemp=s[firstIndex];s[firstIndex...
2022-05-13 22:59:26 124
原创 批量计算和流式计算
刚刚说的:收集数据 - 放到DB中 - 取出来分析 的传统的流程,叫做批量计算,顾名思义,将数据存起来,批量进行计算。而流式计算,也跟名字一样,是对数据流进行实时计算,它不是更快的批计算,可以说,是完全不同的处理思路。通过与批量计算进行对比的方式,介绍下其原理:(1) 与批量计算那样慢慢积累数据不同,流式计算将大量数据平摊到每个时间点上,连续地进行小批量的进行传输,数据持续流动,计算完之后就丢弃。(2) 批量计算是维护一张表,对表进行实施各种计算逻辑。流式计算相反,是必须先定义好计算逻辑,提交到流
2022-05-08 11:05:14 890
原创 一致性哈希算法之Ketama算法
相对来说,一致性哈希算法的原理还是比较容易理解的,但在日常开发过程中发现虽然大部分同事对一致性哈希算法的原理有个大概的认识,然而能知道该算法具体实现的人却寥寥无几。当然一致性哈希算法的实现不同语言有不同的实现方式,其中较为有名的一种实现叫Ketama算法,该算法最初是由Last.fm的程序员实现的并得到了广泛的应用,一些开源框架譬如spymemcached,twemproxy等都内置了该算法的实现。本文主要从spymemcached的源码出发,分析Ketama算法的具体实现。在类KetamaNode
2022-05-05 20:30:16 728
原创 一致性哈希算法及其在分布式系统中的应用
分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我们想引入Memcached作为缓存机制。现在我们一共有三台机器可以作为Memcached服务器,如下图所示。很显然,最简单的策略是将每一次Memcached请求随机发送到一台Memcached服务器,但是这种策略可能会带来两个问题:一是同一份数据可能被存在不同的机器上而造成数据冗余,二是有可能某数据已经被缓存但是访问却没有命中,因为无法保证对相同key的所有访问都被发送到相同的服务器
2022-05-05 20:29:21 160
原创 MySQL的隔离级别
1、未提交读就是读到了一个事务没有提交的数据。错误现象:有脏读(脏读就是读到是无效数据,只有在未提交读中会出现)、不可重复读、幻读现象2、提交读(RC)读到其他事务已提交的数据(最新已提交的版本)错误现象:有不可重复读(一次事务内,读到的结果不一致)、幻读现象使用场景:希望看到最新的有效值3、可重复读(RR)在事务范围内,多次读能够保证一致性(快照建立时最新已提交版本)错误现象:有幻读现象,可以用加锁避免使用场景:事务内要求更强的一致性,但看到的未必是最新的有效值解决
2022-04-29 20:47:16 625
原创 消息队列比较
前言在分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。概念MQ简介MQ,Message queue,消息队列,就是指保存消息的一个容器。具体的定义这里就不类似于数据库、缓存等,用来保存数据的。当然,与数据库、缓存等产品比较,也有自己一些特点,具体的特点后文会做详细的介绍。现在常用的MQ组件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Meta
2021-10-19 08:57:00 113
原创 AQS
前言:今天无意中看到了"中华石衫"大佬的公众号的文章,觉得很不错,就摘录下来了。1.写在前面:这篇文章,我们来聊聊面试时一个比较有杀伤力的问题:聊聊你对AQS的理解?之前有同学反馈,去互联网公司面试,面试官聊到并发时就问到了这个问题。当时那位同学内心估计受到了一万点伤害。。。因为首先,很多人可能连AQS是什么都不知道。或者仅仅是听说过AQS这个名词,但是可能连全称怎么拼写都不知道。更有甚者,可能会说:AQS?是不是一种思想?我们平时开发怎么来用AQS?总结起来,很多同学都对AQS有一种云里雾里的感觉,
2021-07-19 21:30:49 87
原创 Dubbo过滤器
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《dubbo过滤器》, 一起来围观吧 https://blog.csdn.net/m0_37556444/article/details/84623578?utm_source=app&app_version=4.7.1
2021-07-12 09:25:14 75
原创 配置中午
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《【配置中心----Apollo】Apollo的介绍及使用方式》, 一起来围观吧 https://blog.csdn.net/ningjiebing/article/details/90638974?utm_source=app&app_version=4.7.1...
2021-07-10 20:39:25 83
原创 ZAB协议
Zookeeper Automic Broadcast(ZAB),是paxos经典实现。ZAB(zookeeper)中节点分四个状态:1.looking:选举leader的状态(崩溃下恢复)2.follwing:跟随者(follower)的状态,服从leader的命令3.leading:当前节点是Leader,负责协调工作4.observing:observer(观察者),不参与选举,只读节点;ZBA中的两种模式:崩溃恢复,消息广播;崩溃恢复阶段,在恢复阶段没个server,既是提交者,又是批
2021-06-15 09:17:17 135
原创 zookeeper的ZAB协议
崩溃恢复和原子广播。服务可以读取任意一台节点,写入只有先同步到leader,由leader下发到follower,达到半数的节点ACK,就可以进行同步。选举算法可以选举最大的zid为leader,再同步到所有的follower。参考我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Zookeeper——一致性协议:Zab协议》, 一起来围观吧 https://blog.csdn.net/u014401141/article/details/104869118?utm_source=app&a
2021-06-08 09:20:49 67
原创 Java的锁
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《java中的各种锁详细介绍》, 一起来围观吧 https://blog.csdn.net/zhizhengguan/article/details/107321106?utm_source=app&app_version=4.7.1
2021-06-05 00:12:33 55
原创 Java反射的getType方法
Java Field.getGenericType()/getType()返回对象的区别getType(): 获取属性声明时类型对象(返回class对象)getGenericType() : 返回属性声的Type类型getType() 和 getGenericType()的区别 :1.首先是返回的类型不一样,一个是Class对象一个是Type接口。2.如果属性是一个泛型,从getType()只能得到这个属性的接口类型。但从getGenericType()还能得到这个泛型的参数类型。3.getGe
2021-06-01 12:20:57 3957
PHP二级联动问题,当选择自定义的时候,项目名称变为文本框
2015-05-14
javamail发送邮件问题
2015-01-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人