自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 微服务--数据一致性

本篇文章讲解微服务数据一致性相关的知识

2023-09-19 23:33:48 244

转载 mysql优化

​最近面试一些小朋友,简历上赫然写着“擅长MySQL数据库优化”。

2023-07-12 00:16:48 310

转载 Wireshark 实用篇:Wireshark 抓包常用过滤命令

Wireshark 抓包常用过滤命令

2023-06-09 11:53:15 19046 1

转载 TCP的分片

TCP的分片先来认识下 MTU 和 MSSMTU:一个网络包的最大长度,以太网中一般为 1500 字节;MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度;既然 IP 层会分片,为什么 TCP 层还需要 MSS呢?如果在 TCP 的整个报文(头部 + 数据)交给 IP 层进行分片,会有什么异常呢?当 IP 层有一个超过 MTU 大小的数据(TCP 头部 + TCP 数据)要发送,那么 IP 层就要进行分片,把数据分片成若干片,保证每一个分片都小于 MTU。把一份

2022-12-05 18:19:49 1198

转载 海量之道系列文章之弱联网优化 (七)

经过前面不懈的努力,初步打造了一个比较好的技术根基,好马配好鞍,好车配风帆,怎么就把领先优势拱手送与特斯拉了。用户欲壑难平,资源供不应求,靠“术”并无法优雅的解决。跳出来从产品角度去观察,还有些什么能够触动我们思考的深度呢。根据不同的需求和使用场景,用有损服务的价值观去权衡取舍,用完美的精神追求不完美,此乃道的层面。所谓大道至简,完美之道,不在无可添加,而在无可删减。通过多异步和各类缓存机制,提供区分网络、区分业务场景下的差异化服务,是我们孜孜以求的大“道”。下面通过一些实践案例的总结,来探索简洁优雅的弱联

2022-12-02 10:11:26 148

转载 海量之道系列文章之弱联网优化 (六)

2) 异步并发请求的能力,HTTP协议最早的设计中,在拉取多个资源时,会对应并发多个HTTP链路(HTTP/1.1的Pipeline类似)时,服务端无法区分客户端请求的优先级,会按照先入先出(FIFO)的模式对外提供服务,这样可能会阻塞客户端一些重要优先资源的加载,而在链路复用的通道上,则提供了异步并发多个资源获取请求指令的能力,并且可以指定资源加载的优先级,比如CSS这样的关键资源可以比站点ICON之类次要资源优先加载,从而提升速度体验;APNS解决了信息找人的问题,在过去,只有运营商的。

2022-12-02 10:10:31 158

转载 海量之道系列文章之弱联网优化 (五)

为了保持链路还需要做心跳机制(从另外一个角度看,这也是针对简单信息一个不错的PULL/PUSH时机,,但需注意数据传输要够轻,比如控制在0.5KB以内),而心跳机制是引入长链接方案复杂度的一个重要方面,移动网络链路环境复杂,国内网关五花八门,链路超时配置各有千秋,心跳时长选择学问比较大,不但要区分网络类型,还得区分不同运营商甚至不同省市,历史上曾经实践了2分钟的心跳间隔,最近比较多的产品实践选择4.5分钟的心跳间隔。在持续运营的过程中,根据观察到的数据,发现并非物理距离最近的就是最快的。

2022-12-02 10:09:40 287

转载 海量之道系列文章之弱联网优化 (四)

被释放的TCP链接的TUPLE信息同时也就就清除了。假设一个服务器作为TCP链接的被动打开方(通常是作为服务器角色)和主动关闭方,则大量主动关闭的链接会进入到TIME_WAIT状态,如果大伙在这个状态都折腾60秒,本地机器TCP/IP协议栈维护的TUPLE数据项会快速堆积并占用大量内核内存资源,最关键的是因为此时TCP四元组碰撞概率极低(因为源IP、源端口大多都是不同的),导致TUPLE的积压几乎不受限制而野蛮生长,这对于一个高负载又要求高性能的服务器而言,感情上是相当痛苦的,肉体上勉强能接受。

2022-12-02 10:06:59 247

转载 海量之道系列文章之弱联网优化 (三)

RTT是TCP超时重传机制的基础,也是拥塞控制的关键参数,准确的估算出RTT具有伟大的现实意义,同时也是一项相当艰巨复杂的任务。对于移动APP,大部分网络交互都是HTTP并发短链接小数据量传输的形式,如果服务器端有10KB +的数据返回,采用过去的慢启动机制时,效率会低一些,大概需要2~3个RTT才能完成数据传输,反应到用户体验层面就是慢,而把拥塞窗口cwnd初始值提升到10后,在大多数情况下都能在1个RTT的周期内完成应用数据的传输,这在移动网络这样的高时延、不稳定、易丢包的场景下,显得尤其意义重大。

2022-12-02 10:05:52 149

转载 海量之道系列文章之弱联网优化 (二)

我们需要有一条(相对)快速、(相对)顺畅、(相对)稳定的网络通道承载业务数据的传输,这条路的最好是传输快、不拥堵、带宽大、收费少。生活中做个类比,我们计划驱车从深圳到广州,如果想当然走广深高速十之八九要杯具,首先这个高速略显破败更像省道,路况不佳不敢提速;其次这条路上的车时常如过江之鲫,如果身材不好操控不便,根本就快不起来;最后双向六车道虽然勉强可以接受,但收费居然比广深沿江高速双向八车道还贵;正确的选路方案目前看是走沿江高速,虽然可能要多跑一段里程,但是通行更畅快。实际上,真实情况要更复杂,就如同【图二

2022-12-02 10:04:46 455

转载 海量之道系列文章之弱联网优化 (一)

【弱联网优化】作为海量之道2.0系列课题的基础方法论之一,望文生义,想必定是卖弄移动网络信号不佳时如何优化的奇技淫巧。恭喜你,感觉靠谱,不过我们还想多聊一点其它话题。移动互联网颠覆着我们的生活方式,这个每时每刻伴随着我们的网络到底有哪些特点,又是如何影响我们接入信息世界的体验呢。以下场景如似曾相识,敬请对号入座:上班路上收到朋友分享的一张美女图片,缩略图目测衣服用料相当节俭,立马兴奋点开欲详细钻研,却发现怎么脱也脱不下来,不对,是“拖”不是“脱”,仰望苍天,欲哭无泪。

2022-12-02 10:04:00 205

转载 Golang三色标记、混合写屏障GC模式图文全分析

垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the world),STW的过程中,CPU不执行用户代码,全部用于垃圾回收,这个过程的影响很大,Golang进行了多次的迭代优化来解决这个问题,本文将逐步推进Golang中GC的每次推进,来理解Gc的原理。...

2022-02-24 21:43:09 698 2

转载 Golang GMP 学习笔记:当P的本地队列为空时,M先从全局队列拿G放到P的本地队列,再从其它P窃取

今天看 studygolang.com 一篇讲解 GMP 的文章时,对一个细节有疑问。线程想运行任务就得获取P,从P的本地队列获取G,P队列为空时,M也会尝试从全局队列拿一批G放到P的本地队列,或从其他P的本地队列偷一半放到自己P的本地队列。M运行G,G执行之后,M会从P获取下一个G,不断重复下去。那当P队列为空时,M是先从全局队列拿G放到P的本地队列,还是先从其它P窃取?通过查阅相关资料,发现《Go专家编程》一书也没有明确说明。里面有一句话:GO调度器提供了工作量窃取策略,即当某个处理器P

2022-02-24 11:06:21 610

转载 流媒体协议介绍(rtp-rtcp-rtsp-rtmp-mms-hls)

流媒体协议介绍(rtp-rtcp-rtsp-rtmp-mms-hls)版本说明版本 作者 日期 备注 0.1 loon 2019.2.14 初稿 目录文章目录 流媒体协议介绍(rtp-rtcp-rtsp-rtmp-mms-hls) 版本说明 目录 一、RTP 二、RTCP 三、SRTP & SRTCP 四、RTSP 五、RTSP 和RTP的关系 六、小结 七、RTMP/RTMPS 八、mms

2022-01-12 23:08:28 162

转载 面试官:你能聊聊string和[]byte的转换吗?

前言哈喽,大家好,我是asong。为什么会有今天这篇文章呢?前天在一个群里看到了一份Go语言面试的八股文,其中有一道题就是"字符串转成byte数组,会发生内存拷贝吗?";这道题挺有意思的,本质就是在问你string和[]byte的转换原理,考验你的基本功底。今天我们就来好好的探讨一下两者之间的转换方式。byte类型我们看一下官方对byte的定义://byteisanaliasforuint8andisequivalenttouint8inallways.I...

2021-12-29 10:18:56 286

转载 用数据说话,Go 所有字符串拼接方式里哪种才是最稳定高效的?

前言日常业务开发中离不开字符串的拼接操作,不同语言的字符串实现方式都不同,在Go语言中就提供了6种方式进行字符串拼接,那这几种拼接方式该如何选择呢?使用那个更高效呢?今天我们邀请到公众号「Golang 梦工厂」的主理人松哥就一起来分析一下。本文使用Go语言版本:1.17.1string类型我们首先来了解一下Go语言中string类型的结构定义,先来看一下官方定义://stringisthesetofallstringsof8-bitbytes,conventi...

2021-12-29 10:15:58 339

转载 数据库讲讲Redis缓存更新一致性

讲讲Redis缓存更新一致性。数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。当执行写操作后,需要保证从缓存读取到的数据与数据库中持久化的数据是一致的,因此需要对缓存进行更新。因为涉及到数据库和缓存两步操作,难以保证更新的原子性。在...

2021-04-09 00:45:21 626

转载 delete、truncate、drop的区别有哪些,该如何选择

上周同事小姐姐问我:“哈哥你看,我发现MySQL有bug,我下午为了清理磁盘,明明删除了100万条MySQL数据,磁盘不仅没有变小,反而更满了呢??”那你是怎么删除的?“delete from table 呀”“怪不得,其实要删除MySQL数据是有好几种方式的,有些场景下是不应该用DELETE的,比如你这种情况。好了,让我来给你讲一下吧。”MySQL删除数据的方式都有哪些?咱们常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据.

2021-04-01 16:28:53 131

转载 分享:详记一次MySQL千万级大表优化过程!

问题概述使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和SQL语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!!我尝试解决该问题,so,有个这个日志。方案概述方案一:优化现有MySQL数据库。优点:不影响现有业务,源程序不

2021-03-30 17:05:00 330

转载 MySQL如何有效的存储IP地址

前几天一个朋友去面试,告诉我面试官问他 IP 地址是怎么存在数据库的?他当时也没多想,直接就回答的存字符串啊前面这段权当看看,毕竟 IP地址 本来就是一个字符串,存放在数据库作为字符穿类型,也是无可厚非的。但是,阿淼我可是一个喜欢换位思考的人,站在面试官的角度,你觉得我会问这么一个低级的问题么? 那么档案当然是否定的。所以,面试官想知道的是你对这个问题会不会有深度思考,从此来一定程度的判断你在平常的开发中只是一个单纯的 "搬砖" 的码农,还是一个有灵魂的 Coder 。序言针对这个问题,首先声明

2021-03-30 17:03:44 139

转载 java list 按照多字段排序

list 排序涉及的接口Comparator, 具体实现代码如下,以Apple类为例public class Test{  public static void main(String [] args){     List<Apple> apples = new ArrayList<>(); Comparator<Apple> byName = Comparator.comparing(Apple::getName); Compara...

2020-09-24 18:49:52 602

原创 正则表达式,限制允许中英文混合的用户名长度

https://bbs.csdn.net/topics/391931908https://blog.csdn.net/chaoyong918/article/details/45058257

2020-09-04 11:23:06 1022

转载 Java一致性Hash算法的实现

哈希hashhash的意思是散列,目的将一组输入的数据均匀的分开、打散,往往用来配合路由算法做负载均衡,多用在分布式系统中。比如memcached它只提供了K V的存储、读取,如果使用了多台memcache做一个“逻辑集群”,就需要客户端做“路由算法”,来保证数据均匀的进去,然后能“原路”拿出来。常规哈希取模常规哈希,往往结合取模运算,以便将请求转发到后端的服务器上,如下图:第一步使用hash算法,将请求“打散”得到一个整数(比如传递过来一个请求,使用jdk类库的hash对某个参数做计算

2020-09-02 00:31:27 440

转载 你不知道的Golang 在json反序列化时interface{}对int64做的特殊处理

题最近在项目中遇到一个坑,Go语言在json反序列化时,如果未指定类型,则数字(比如int64)会默认是 float64,这样再次序列化的时候造成了精度丢失。具体可以看如下代码 package main import ( "fmt" jsoniter "github.com/json-iterator/go" ) func main() { s := "{\"a\":6673221165400540161}"...

2020-08-28 17:04:27 992

转载 多图详解!10大高性能开发核心技术

多图详解!10大高性能开发核心技术程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。- I/O优化:零拷贝技术- I/O优化:多路复用技术-线程池技术-无锁编程技术-进程间通信技术-RPC&&序列化技术-数据库索引技术-缓存技术&&布隆过滤器-全文搜索技术-负载均衡技术准备好...

2020-08-28 00:26:55 255

转载 借助Redis Bitmap实现简单的布隆过滤器

https://www.jianshu.com/p/c2defe549b40

2020-08-21 16:44:10 997

原创 java中常见数据库字段类型与java.sql.Types的对应

常见数据库字段类型与java.sql.Types的对应Oracle与java.sql.Types的对应Oracle java.sql.Types blob blobchar charclob clobda...

2020-07-23 16:56:50 290

转载 通过redis setbit方式高效统计网站当前在线人数(详细总结)

关于统计在线人数,第一反应想到的是创建一个大型字典存储用户id与对应的状态,但是这种方法耗费空间大,效率较低。通过学习 redis 想到更高效的方法。原理:通过将用户 id 作为位数,每次上线则将该位设为 1,下线则设为 0,通过 bitcount 来查询有多少 1,通过 getbit,传入用户 id 来判断当前用户是否为上线状态。SET key value [EX seconds] [PX milliseconds] [NX|XX]SETBIT key offset value.

2020-07-14 16:42:58 1451 2

转载 windows下zookeeper安装并发布成windows服务

https://blog.csdn.net/yzy199391/article/details/80605195

2020-06-24 16:04:41 183

原创 INFO [org.apache.zookeeper.ClientCnxn] - Opening socket connection to server zkserver/127.0.0.1:21

cmd窗口一直在报错INFO [org.apache.zookeeper.ClientCnxn] - Opening socket connection to server zkserver/127.0.0.1:21解决:将hosts文件的#127.0.0.1 localhost#::1 localhost取消注释 重启zoo...

2020-04-30 18:44:55 2602 1

转载 Netty 粘包/半包原理与拆包实战(史上最全)

写在前面大家好,我是作者尼恩。为了完成了一个高性能的 Java 聊天程序,在前面的文章中,尼恩已经再一次的进行了通讯协议的重新选择。这就是:放弃了大家非常熟悉的json 格式,选择了性能更佳的 Protobuf协议。在上一篇文章中,并且完成了Netty 和 Protobuf协议整合实战。具体的文章为:Netty+Protobuf 整合一:实战案例,带源码另外,专门开出一篇...

2020-04-23 16:44:41 1213

转载 Netty粘包拆包详细总结

TCP黏包拆包TCP是一个流协议,就是没有界限的一长串二进制数据。TCP作为传输层协议并不不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分,所以在业务上认为是一个完整的包,可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。怎么解决?消息定长度,传输的数据大小固定长度,例如每段的长度固定为100...

2020-03-23 11:44:52 843 1

原创 Netty解析Http协议的方式(详细总结)

HttpServerCodec是最终类,不可继承。websocket协议本身是基于http协议的,所以也可以使用http解编码器HttpServerCodec的功能有两个:HttpRequestDecoder和HttpResponseEncoder,即在pipline.addLast时要么开始就添加一个HttpServerCodec,或HttpRequestDecoder和HttpRespo...

2020-03-19 14:45:49 1344

原创 单线程,多线程,单核cpu与多核cpu的区别(详细总结)

https://www.cnblogs.com/caihuafeng/p/5438753.html

2020-03-14 18:12:07 6220

转载 命令行版的斗地主你玩过没?

HelloGitHub 推出的《讲解开源项目》系列,今天给大家带来一款命令行斗地主开源项目——ratel项目源码地址:https://github.com/ainilili/ratel一、项目简介斗地主我想大家都会玩吧,今天分享一个 Java 命令行斗地主的开源项目!项目是基于 Netty 实现,Netty 是一个高性能、异步事件驱动的 NIO 框架。下面就让我们一起来把这个项目...

2020-03-04 16:43:09 215

原创 mysql错误:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents

java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configu...

2020-02-22 23:10:31 5936 5

转载 SpringBoot 整合durid的所有方式(详细总结)

整合了一大堆ORM,是时候增加一个连接池了,此处选用了druid作为连接池,druid是alibaba开源平台上的一个数据库连接池实现,对比c3p0,dbcp加入了对数据库的监控,不知道甩出几条街的距离,个人推为数据库连接池的首选(手动摊手)这里仍然使用jpa+druid首先先来看看引入的依赖 <dependencies> <dependen...

2020-02-22 22:50:02 2648

原创 登陆服务器和游戏服务器为甚要分开总结

登陆服务器和游戏服务器为甚要分开摘自知乎把游戏登陆逻辑单独成一个服务的优点有如下几点:登陆入口唯一.:游戏如果不是自己运营,则需要上其他平台。每个平台只能有一个登陆服务器,但是游戏逻辑服务器要跟着玩家数量的增加而增加。 方便扩展:游戏可能会在多个平台一起运营,不同的平台对登陆的处理方式可能不一样。单独把登陆部分分开的话,只要修改登陆服务的代码,然后发布就可以了,其他部分的服务器不需要做...

2020-01-19 18:07:35 1116

转载 Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to

Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to2017年8月4日朱宏亮%1 $ SIntellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to如图,,按住Ctrl+鼠标单击的时候,系统提...

2020-01-19 17:35:52 5615 2

转载 一步一步教你如何在GitHub上上传自己的项目

首先你得注册一个自己的GitHub账号,注册网址:https://github.com/join有了自己的账号以后,就可以进行登录,开始创建一个新的项目创建一个新的项目,填写项目名称,描述创建完成之后,跳转到下面的页面,下面红框中的网址要记住,在后面上传代码的时候需要使用接下来,我们需要先下载Git,这里最好下载最新版本的Git,这里附上我下载的Git2.6.2的网址:https:...

2020-01-14 15:35:40 168

空空如也

空空如也

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

TA关注的人

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