自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (5)
  • 收藏
  • 关注

原创 Hessian Bug修复

一、背景说明近日开发同学说Php调用Java一个接口报错,表现是如果参数比较大,如56K就报错,其它情况下不报错。让其提供相应参数,发现一个参数的长度是81360,对应十六进制是13DD0,通过抓包发现,实际上传到Java这里长度只有3DD0即上图中第7行,这是什么情况呢,还是从Hessian协议说起,Hessian中字符长度只能是2字节,即单包最多只能传65535字节,如果长度超过65535,则需要封多次包发送,官方说明如下:string ::= x52 b1 b0 string::= S b

2020-09-05 10:22:03 170

原创 Dubbo2.7试用

一、Dubbo介绍Java开发的同学相信对Dubbo都有了解,Dubbo是阿里开源的RPC/服务治理框架,以下是百度的解释:Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和[1] Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。https://baike.baidu...

2020-08-17 23:00:54 245

原创 FastDFS不同步怎么破

一、背景说明FastDFS是一款开源的分布式文件系统,具体介绍就不说了,有兴趣的可以自行百度下。以下是官方的架构图:一次完整的写交互过程如下:1、Client向Tracker查询可用的Storage;2、Tracker随机返回一个Storage;3、Client向Storage发起写请求;一次完整的读交互:1、Client向Tracker查询可用的Storage;2、Tracker随机返回一个Storage;3、Client向Storage...

2020-08-17 22:57:48 1658

原创 360 Atlas 生产环境使用心得

一、Atlas介绍Atlas是360开源的一个Mysql Proxy,以下是官方介绍:Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发

2020-08-17 22:56:37 1076 1

原创 插件系统分析及Discuz插件实现

一、Discuz介绍Discuz是国内比较知名的开源论坛了,后来被腾讯收购,Discuz在设计时就考虑了生态体系的建设,支持插件设计,可以让广大开发者朋友来一起建设生态,不得不说设计者是很有商业头脑的。回到话题,我们为什么要学习Discuz的插件设计呢,因为假如我们哪天自己想做一套系统,也要支持插件,可以借鉴下相关的设计。源代码:https://gitee.com/ComsenzDiscuz/DiscuzX/tree/v3.4-20190917/插件市场:https://addon.

2020-07-18 00:16:12 553

原创 OAuth2.0及Spring实现

一、什么是OAuth2.0引用百度的解释:OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。2012年10月,OAuth 2.0协议正式发布为RFC 6749百度百科说简单点就是用来认证的。二、..

2020-07-15 23:21:49 849

原创 线上故障处理实践

一、背景最近公司一个系统发生线上故障,系统架构为C/S的,客户端是APP;系统的功能有:联系人、短信、通话记录等,每个业务都有备份、恢复的功能,即用户可以在APP内备份自己的联系人、短信、通话记录至服务端,然后可以后续某个时间段恢复数据。服务端架构如下:第1层Nginx,主要做一些流量清洗、流控等处理;第2层是应用层,分应用接入层和服务层,应用接入层做一些参数检查和登录检查等,服务层处理业务逻辑,这2层之间通过RPC通信;底层的存储是Mysql和Hbase,Mysql存一些元数.

2020-06-06 20:25:25 218

原创 招Java高级开发工程师一枚

岗位职责1、负责基础产品线核心功能的设计和开发。2、审核基础产品线初、中级人员的方案设计、代码等。3、主导攻克技术难关致力于系统性能优化安全加固保证系统的安全、稳定、快速运行。4、主导基础产品线核心项目进度管理。5、负责主导解决开发过程和线上的各种技术问题。任职要求填写1、计算机或相关专业本科及以上学历,5年以上互联网开发经验;2、Java基本功扎实,有良好面向对象设计思想,了解多线程,设计模式,拥有良好编程习惯;3、熟练Spring、Mybatis、Redis、Zookeeper、D.

2020-05-28 23:52:20 95

原创 Redis源码之常用数据结构和函数

上一篇扩展Redis:增加Redis命令讲了如何动手编写一个命令,但没有具体讲代码的细节,今天讲下Redis代码中的常用数据结构和函数,看完这篇文章希望大家自己能写一个helloworld的命令。首先讲下环境,代码的版本还是3.2.11的。一、数据结构1、robjrobj是Redis源码中用的非常多的数据结构,包括我们输入的命令和参数在服务端都是以robj来表示的。...

2020-05-05 22:30:20 159

原创 扩展Redis:增加Redis命令

一、背景Redis因高性能、轻量的优秀特性成了互联网公司缓存的标配,有的时候我们想增加一些自定义的命令,主要是重度使用Redis的场景,像抢购的场景,要保证多个Redis命令的事务性,如果没有很好的原子性保证,很容易出现数据不一致的问题,虽然官方给出事务的方案,但如果中间需要根据某个命令的返回值做判断才做下一步处理,则事务的方案就无法应对了。今天我们以一个实际的案例讲述如何增加一个R...

2020-05-04 00:20:56 428

转载 如何做好稳定性

电商类的网站不可避免要面对大促的话题,每次大促对系统的可用性要求很高,是对技术人的一次考验,所以要做好整套的方案来保证。我所在的公司为手机公司,每年新品销售的时候,流量也是非常大,是平时的10倍,甚至上百倍,今天来聊一聊稳定性相关的话题,谈下如何做好稳定性。一、梳理主链路,保证主链路的可用性电商类的主链路就是从商品浏览,到添加购物车,保存订单,支付等完整下单链路。梳理主链中...

2020-04-25 10:51:40 404

转载 分布式数据库OcceanBase介绍

一、OcceanBase是什么以下是oschina的介绍:OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanB...

2020-03-23 23:09:00 1272

原创 BoneCP连接池重连机制分析

一、背景朋友公司Mysql连接池用的BoneCP,应用程序访问Mysql以域名方式,配置如下:jdbc:mysql://order.mysql.xx.cn:3306/order?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true所有中间件访问都是通过内网的Dns服务器进行访问。最近...

2020-03-15 09:51:46 512

转载 缓存的不当使用案例分析

一、背景 最近一朋友做社区重构,社区主要功能有发帖、回帖、查看帖子详情,详情页按不同条件展示回帖(除了预先定义的顺序外,可能每个用户看到的顺序都不一样,组合超过100个),大概的效果如下:以前用的是开源的代码,存储用的是Mysql,系统也过于臃肿,稍微有点流量系统响应就很慢,所以准备重构。重构后的方案如下1、存储还是Mysql;2、为了提高访问速度,引...

2020-03-01 22:40:02 182

转载 从RabbitMQ Channel设计看连接复用

今天公司有同事在做RabbitMQ的分享的时候,讲到了Connection和Channel的设计,有同学有疑惑,为什么不用连接池实现,而要通过Channel的方式实现呢?先脑补下Connection和Channel的关系即可以在一个连接上同时发送不同Channel的数据;看下RabbitMQ官网对于Channel的解读:Some applications need mul...

2020-02-23 23:23:51 2543 1

转载 RabbitMQ网络框架代码分析二:命令分发

前面讲了基本的网络框架,说了一个连接进来会经过哪些文件,RabbitMQ网络框架代码分析,今天会讲消息的具体的处理过程,即一条消息过来,最终是如何分发到具体的处理函数的。从rabbit_reader:start_connection说起吧,一个连接进来会调用这个函数,它会调用recvloop进行不断地读数据,并进行相应的处理:start_connection(Parent, Hel...

2020-02-23 23:22:17 258

转载 RabbitMQ网络框架代码分析

RabbitMQ的启动步骤是一个有向无环图,具体细节后面另外章节再聊,其中网络一块的启动集中在文件rabbit_network.erl中boot() -> ok = record_distribution_listener(), ok = start(), ok = boot_tcp(), ok = boot_ssl().第1行往mnesia中插入监听...

2020-02-23 23:17:15 310 1

转载 分布式文件系统FastDFS

FastDFS是一个开源的轻量级分布式文件系统,开发语言为C,适合以小型文件为载体的在线服务,如相册网站、图片服务器等等。github地址:https://github.com/happyfish100/fastdfs架构图如下几个重要的概念:tracker、storage、clientclient就是调用方,tracker负责元数据,要上传文件、下载文件先从tracker获取...

2020-02-23 23:12:10 185

转载 一次线上Mysql死锁分析

发生死锁的是用户地址表,先贴下表结构:CREATE TABLE `user_address` (`addr_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '地址id',`user_id`int(11)DEFAULTNULLCOMMENT'用户id',`mobile`varchar(20)DEFAULTNULLCOM...

2020-02-23 23:08:45 86

转载 直播评论系统分析设计

直播评论系统是电商系统一个常用的功能,即在发布新品的时候,为了吸引用户参与和营造互动气氛,让参与的每个人都可以发消息,发完后每个人都可以即时看到新消息,原型和 http://live.oneplusbbs.com/ 差不多。假如要求在线用户数是20W,你会如何设计系统呢?任何系统设计都不能离开用例设计,脱离业务讲技术都是耍流氓,我们先分析功能需求:1、发表消息假...

2020-02-23 23:07:11 596

转载 PHP内存池分析

一、为什么需要内存池 内存是非常宝贵的资源,需要最优访问; 操作系统适合管理大块内存,如一页(4096字节),不适合小块内存分配;不做内存池管理,容易产生内存碎片,会出现剩余内存够,但没有一块连续内存来分配,会引起操作系统把程序HOLD住来整理碎片的情况; 另外直接调用操作系统分配内存会导致从用户态切换到内核态,开销比较大;二、内存池设计目标:1、...

2020-02-23 23:03:35 397

转载 从一次线上故障来看redis删除机制

一、问题及背景 公司去年上线一个抽奖系统,主要用来拉新、提升流量,所有新注册的用户在指定时间都可以抽奖,为了保证安全性,程序中做了频率限制,每个用户30秒只能抽1次,具体做法是以用户id为key,保存在redis中,过期时间为30秒;抽奖时会先读取这个key是否存在,如果存在则认为用户在30秒内已经抽过,返回稍后再试。 因为读多写少,为了提高系统的吞吐量,系统采...

2020-02-23 22:59:45 331

flex&bison资料

flex&bison相关资料;想做语法分析的朋友可以看看

2014-12-01

php curl 长连接的实现

php curl中长连接实现,对于同一个域名和端口的访问,可以做到在同一个进程中复用同一个连接,特别是对于经常内网访问的地址,性能提升很大!

2014-04-09

php中快速计算MD5的脚本

一个用于快速计算md5的类,因为php的md5_file的效率不敢恭维,所以自己写了一个计算的工具,可以反复多次、增量式的计算md5,对于大文件,自己在外面处理每次要读多少文件内容,然后调用本工具类进行处理就可以了.

2013-10-05

innodb文件格式分析器

自己写的一个分析innodb文件格式的一个小工具

2012-12-28

php中实现application对象的扩展源代码

php中实现application对象的扩展源代码

2012-10-29

空空如也

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

TA关注的人

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