上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 首先,来说一下业务场景,也即什么时候,需要有这么一个系统,举两个例子: 1. 订单推送——点评侧垂直业务产生新的订单之后,需要推送给美团订单中心,以在美团APP展示出来。这种通过RPC调用的推送,是可能调用失败的,那么失败之后怎么处理呢?业务线程自己立即重试还是睡一会再重试都不是很合理。在推送失败后 阅读全文
posted @ 2017-03-17 11:46 Mr.do 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 在项目中,常常会遇到这么一种场景,即对一批/一种/一堆数据,进行链式的处理。举个栗子,拿到一个task后,需要对这个task进行校验处理、状态变更处理、计算并回填数据处理等等各种处理,这种情况下,最适合的编码方式就是使用责任链了: 定义一个taskprocessor接口: 然后,再定义诸多的实现类, 阅读全文
posted @ 2017-03-16 16:59 Mr.do 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 首先说说与ThreadLocal相识的背景。在项目中,service有一些逻辑处理{如对主从延迟敏感的下单逻辑}需要强制走主库的。就查了查公司数据库框架zebra强制走主库的方式,发现其主要就是在业务线程的context中写入了一个ThreadLocal<Boolean>变量,当要进行SQL路由时, 阅读全文
posted @ 2017-03-05 16:43 Mr.do 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 在程序的开发过程中,可以使用debug打断点来调试程序,观察程序的运行情况。那代码上线之后,怎么看程序的运行情况呢?打log。 1、 程序log的几处应用: 定位问题 观察程序的运行状态 统计 定位问题 观察程序的运行状态 统计 log的三大组件: Logger:输入日志的具体内容 Appender 阅读全文
posted @ 2017-02-14 19:55 Mr.do 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 阻塞IO的server结构图: 阻塞IO的server版本代码: 在上面版本的代码中,有两个地方是阻塞的: 其一是ServerSocket.accept( )方法,该方法的语义是到连接请求队列中,取出一个建立连接,建立好后,返回这个链接的句柄(Socket)。当队列中无连接请求时,该方法就会一直阻塞 阅读全文
posted @ 2017-02-14 19:51 Mr.do 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 每一个索引就对应着一棵树 (1) 主键:MySQL会以主键的值构造一棵树,其叶子节点存放着该主键对应的整行数据。因此一张表在数据结构上就等价于一颗以主键排序好的树 (2)辅助索引:自己建的索引一般都叫辅助索引,辅助索引树的叶子节点存放着两样东西,即辅助索引字段的值以及它所对应的主键值。因此当走辅助索 阅读全文
posted @ 2016-05-31 19:27 Mr.do 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 工作树:其存储着仓库内所有被管理文件 (untracked files是不记录在工作树中的) 的当前状态,随各文件的的改动而实时变化 HEAD : 当前分支中最新一次提交的指针 暂存区:提交之前的临时区域 (工作区 -add-> 暂存区 -commit-> 版本库) git init : 初始化仓库 阅读全文
posted @ 2016-05-31 17:21 Mr.do 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 内推的蚂蚁金服Java研发岗,从7月15日第一面到7月31的hr面,共计4轮技术面,一轮hr。于8月15日收到录用意向。 7.15,20:45,一面:大概聊了24分钟 自我介绍 问数据库3NF与BCNF的区别 问GC机制,如何使持久代溢出 问数据库事务的四个特性 讲Java并发,自己的理解,随便讲 阅读全文
posted @ 2015-08-29 10:40 Mr.do 阅读(1448) 评论(0) 推荐(0) 编辑
摘要: Executor框架的最大优点是把任务的提交和执行解耦,ExecutorService和其各种功能强大的实现类提供了非常简便方式来提交任务并获取任务执行结果,封装了任务执行的全部过程。而封装最大的效果是使得真正执行任务的线程们变得不为人知。使得操作友好,不用程序员关心具体的执行,只需要等结果就行了。 阅读全文
posted @ 2015-08-06 14:12 Mr.do 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 在HashMap的分析中,介绍了hashmap不是线程安全的,其在并发环境使用fail-fast策略来抛出由并发错误导致的异常。 先来看下Hashtable这个线程安全的容器,其虽然是线程安全的,但是其实现并发安全的手段比较粗暴。从下面的三个方法就能看出来,其只是简单的以自身作为对象锁,将相关方法都 阅读全文
posted @ 2015-07-16 14:41 Mr.do 阅读(156) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页