随笔分类 -  原理&故事

讲一些理论性的东西,不涉及具体技术。讲一些有趣的故事,让生活更美好!
摘要:一般地,像kafka之类的消息中间件,作为一个可以保持历史消息的组件,其消费模型一般是主动拉取方式。这是为了给消费者足够的自由,回滚或者前进。 然而,也正是由于将消费消息的权力交给了消费者,所以,消费者往往需要承担更多的责任。比如:需要自行保存消费偏移量,以便后续可以知道从哪里继续。而当这一点处理不 阅读全文
posted @ 2019-07-01 15:50 阿牛20 阅读(1896) 评论(1) 推荐(1) 编辑
摘要:首先,咱们都有一共识,即可以使用缓存来提升系统的访问速度! 现如今,分布式缓存这么强大,所以,大部分时候,我们可能都不会去关注本地缓存了! 而在一起高并发的场景,如果我们一味使用nosql式的缓存,如 redis, 那么也是好的吧! 但是有个问题我们得考虑下: redis 这样的缓存是快,但是它总有 阅读全文
posted @ 2019-05-20 16:17 阿牛20 阅读(4246) 评论(0) 推荐(0) 编辑
摘要:在之前的文章中,我介绍了使用 Btrace 工具进行线上代码的debug (https://www.cnblogs.com/yougewe/p/10180483.html),其大致原理就是通过字节码注入的方式进行辅助排查。 可以说,btrace 已经给我们的开发调试一带来了许多的方便,我们在上面做任 阅读全文
posted @ 2019-04-28 11:56 阿牛20 阅读(11161) 评论(0) 推荐(3) 编辑
摘要:给你一组json数据结构,你把它解析出来到项目中,你会怎么做? 首先,code,msg,data 肯定是固定结构,所以可以抽象出一层 data 的变化,可以使用泛型去适应变化; 其次,data下的数据是 key -> object 的结构,如果直接object表示的话,又不友好了。如果不以objec 阅读全文
posted @ 2019-04-11 18:54 阿牛20 阅读(9458) 评论(1) 推荐(0) 编辑
摘要:zk用处如此之多,以至于每个地方都要你理解zk原理! 请按如下操作姿势打开: 1. 打开zk的git仓库地址: https://github.com/apache/zookeeper , 确认过眼神,它就是你要找有人! 2. 下载源码到本地,下载 ant 工具到本地,(如果还没下载的话: http: 阅读全文
posted @ 2019-03-24 16:16 阿牛20 阅读(5312) 评论(0) 推荐(0) 编辑
摘要:问: 为什么300的并发能把支持最大连接数4000数据库压死? 买了一台数据库,最大连接数的参数是 4000,看起来很棒!但是 cpu 和内存并不咋好!是 2c4g的超低配制。 但是想着反正业务量也不大,不如先扛着,等业务量上来再进行升配! 没过多久,进行一次小量的营销活动。粗略计算想了下,大约3- 阅读全文
posted @ 2019-03-22 08:27 阿牛20 阅读(14883) 评论(7) 推荐(12) 编辑
摘要:jenkins 作为一个自动化的集成工具,已经是必不可少的了。它里面提供各种插件,以及完备的基础流程设施,为大家的自动化集成之路提供了很多的方便。所以,我们有必要完整的实践一回。以切身体会到它的好处! 一、 操作步骤说明陈列 1. 下载jenkins包,并安装;(两种方案,基于物理机和基于docke 阅读全文
posted @ 2019-03-20 22:12 阿牛20 阅读(3468) 评论(0) 推荐(0) 编辑
摘要:由于一次上线操作的数据变更太多,导致执行时间很长! 由于做手动主从关系,所以操作落在了主库上。 由于主从关系不是对整个库的操作,所以在有表新增的地方,添加了dts新的同步关系。 db变更完成后,就发布代码上线了! 以上是背景!一切看起来都很美好。 代码上线后,从从库发现数据一直没有,时间在一分分地过 阅读全文
posted @ 2019-03-01 23:33 阿牛20 阅读(857) 评论(1) 推荐(0) 编辑
摘要:docker可以说给我们的部署带来极大的方便和可逢凶化吉性!(懂的同学自然懂) 在初步了解之后,我们就能简单使用docker了。 刚开始玩docker时,可以基于系统级别的镜像做定制,比如基于 centos 镜像使用docker; 你可以在拉下来的容器里安装任何需要的应用(必要的);然后,一切都看起 阅读全文
posted @ 2019-02-24 09:46 阿牛20 阅读(45257) 评论(2) 推荐(2) 编辑
摘要:springmvc 的请求流程,相信大家已经很熟悉了,不熟悉的同学可以参考下资料! 有了整体流程的概念,是否对其中的实现细节就很清楚呢?我觉得不一定,比如:单是参数解析这块,就是个大学问呢? 首先,我们从最靠近请求末端的地方说起!此时,handler已经找到,即将进行处理! 这是在 RequestM 阅读全文
posted @ 2019-02-18 17:46 阿牛20 阅读(4241) 评论(0) 推荐(0) 编辑
摘要:由于某几个业务表数据量太大,数据由业务写,数据部门读。 写压力不大,读却很容易导致长时间等待问题(读由单独系统进行读),导致连接被占用,从而容易并发稍稍增长导致全库卡死! 于是,就拆库呗。 业务系统拆分就不要做了(微服务化),没那工夫。 直接原系统拆两个数据源出来,对某几个高压力表的写就单独用这个数 阅读全文
posted @ 2019-02-14 09:59 阿牛20 阅读(3476) 评论(5) 推荐(1) 编辑
摘要:gc是java区别于其他好几门语言(c/c++)的一个代表功能(当然也有很多可以自动管理内存的语言,如所有的脚本语言,你根本不知道内存管理这回事)! 当然,之所以要把c/c++和java相比,是因为java出现的初衷即是对标c++的缺点的。不管怎么样,gc让程序员gg们不用痛苦地管理内存,这是好事! 阅读全文
posted @ 2019-02-11 19:30 阿牛20 阅读(1006) 评论(0) 推荐(0) 编辑
摘要:一般作为服务端的应用,必须要有相应的日志,否则问题怎么排查呢? 而日志怎么打印,也是一个技术活。不然java中也不会存在N多厂商争相提供日志框架了! 而日志滚动则往往也是刚需,毕竟没人能保证日志的量及可阅读性。 1. 日志滚动实现思路 日志滚动实现主要有两个大方向: 1. 让应用服务自行打印,打印到 阅读全文
posted @ 2019-02-01 14:44 阿牛20 阅读(2966) 评论(0) 推荐(2) 编辑
摘要:谈到线上环境,一般开发同学,不太容易接触到。即使接触到,也只是其中的冰山一角! 所以,其实说起线上环境的部署,咱们好像都有点懂,但是又都不一定完全懂!网上的知识无穷无尽,但往往都是各司一职,对于普通同学,很难窥其全貌! 所以,我今天就来说说,一些普通的线上环境的部署步骤,和一些脚本小技巧吧。只希望通 阅读全文
posted @ 2019-01-27 17:37 阿牛20 阅读(3412) 评论(1) 推荐(4) 编辑
摘要:微信公众号现在影响力有目共睹,所以接入其功能也是很正常的。 现在的应用中,有很多是基于spring的框架来做的。针对自行开发的系统,我们可以通过任意的自定义 url 来进行业务功能的映射。然而大家知道,微信的回调地址永远只有一个,但是其内部的内容则是多样的。针对不同的内容,咱们做出的响应自然也是不一 阅读全文
posted @ 2019-01-06 15:01 阿牛20 阅读(1466) 评论(0) 推荐(0) 编辑
摘要:synchronized 和 volatile,是最基础的两个锁! volatile是轻量级锁,它在多核处理器开发中保证了共享变量的可见性。即当一个线程修改一个共享变量时,其他线程能够读到这个修改的值。它比syncronized使用和成本更低。 要说volatile的实现原理,就要先看一下cpu基本 阅读全文
posted @ 2018-12-04 09:22 阿牛20 阅读(1046) 评论(0) 推荐(0) 编辑
摘要:怎么获取一个客户端ip ? 我想这个问题,在网上遍地都是答案! 而且多半是像下面这样: 我也没说要去研究这玩意,我只是不想重复造轮子,然后找到了代码仓库里有这么一段代码,所以,我就用来去获取ip了! 测试环境一切ok。然后稀拉拉地,上线了! 嘿,一上线之后,发现了数据库ip字段竟然有两个ip: 10 阅读全文
posted @ 2018-11-28 14:36 阿牛20 阅读(421) 评论(0) 推荐(1) 编辑
摘要:0.28+0.34=? 我相信这个简单的加法,谁都会,肯定等于0.62嘛。 这是两个特别简单的加法,那如果我在其整数位置上加上其他的数字,或者多加几个和项,你是否还能快速算过来? 我想这时候,我们又得借助计算器了!而这,有时可能就是电脑!尤其是如果咱们借助简单程序语言来算的时候,嘿嘿,可能就不是那么 阅读全文
posted @ 2018-11-25 16:25 阿牛20 阅读(686) 评论(0) 推荐(1) 编辑
摘要:微信公众号作为强大的自媒体工具,对接一下是很正常的了。不过这不是本文的方向,本文的方向公众号接入的排序问题。 最近接了一个重构的小项目,需要将原有的php的公众号后台系统,转换为java系统。当然,也很简单的了。 不过,在接入的时候,遇到有一个有趣的问题,可以分享下。 大家知道,要将微信在接到用户的 阅读全文
posted @ 2018-11-24 19:56 阿牛20 阅读(1376) 评论(0) 推荐(0) 编辑
摘要:spring中,注册controller的url有多种方式: 1. 你可以啥都不都干,直接使用 @RequestMapping 注解上体路径,然后加上 <component-scan>, 访问的时候就根据这个路径来加载handler了; 2. 如果你想自定义一些路径的访问方式,那么你可以自定义 Re 阅读全文
posted @ 2018-11-14 21:33 阿牛20 阅读(987) 评论(0) 推荐(0) 编辑