- 博客(48)
- 收藏
- 关注
原创 优化摘抄笔记
迭代过程 正式的优化过程,是一轮接一轮的迭代过程,主要包含如下几个步骤: 基准测试。 压测报告数据分析。 CPU热点分析。 分析CPU、Thread、Memory、和io等指标。 找到当前性能的瓶颈,考虑优化方案。 实施优化方案,进行压测确认。 同步生产环境。 重新开始新的一轮迭代。 详细的报告记录优化方向 1. 依赖服务并行化 2. Thrift异步化、H
2017-02-19 14:15:12 349
原创 JS小语法
!function(){}();立即执行方法的理解function a(){alert('iifksp')} //这是一个函数声明现在想要定义一个匿名方法并立即执行,但是如果像下面这样function a(){alert('iifksp')}() // SyntaxError 这种会报错因为上面的代码混淆了函数声明和函数调用,不是一个表达式,无法执行,可以通过!等符号将其转为表
2017-01-13 15:58:02 293
原创 Sevlet相关 摘抄笔记
ServletContextServletContext,是一个全局的储存信息的空间,Servlet上下文提供对应用程序中所有Servlet所共有的各种资源和功能的访问。 对其可以做一些操作: 添加属性:setAttribute(String name,Object ob); 得到值: getAttribute(String)返回Object 删除属性:removeAttribute
2017-01-08 11:47:49 264
原创 分布式一致性算法学习笔记
两阶段提交http://blog.csdn.net/whycold/article/details/47702133paxos
2016-12-27 07:32:36 351
原创 订单系统架构笔记摘抄
美团外卖订单系统优化系统拆分 划分为三个系统,分别为交易系统、查询系统、异步处理系统。独立拆分后,可以避免业务间的相互影响。快速支持业务迭代需求的同时,保障系统稳定性。异步化 有两种方案: 线程或线程池:将异步操作放在单独线程中处理,避免阻塞服务线程。但是重启时,需要通过JVM优雅关闭来保证异步操作进行完成后,JVM再关闭。消息异步:异步操作通过接收消息完成。并行化 并行化将原本串行
2016-12-26 22:39:59 2366
原创 锁机制学习笔记
线程之间ReentrantLockReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁(即抢占锁),两者的实现类似。synchronized每个对象都有一个锁,也就是监视器(monitor)。 - synchronized语句:当源代码被编译成字节码的时候,会在同步块的入口位置和退出位置分别插入monitorenter和monitorexit字节码指令; - syn
2016-12-26 09:56:30 379
原创 消息队列学习笔记
kafka设计目标以时间复杂度为O(1)的方式提供消息持久化能力以及读取能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。同时支持离线数据处理和实时数据处理(通过消费组实现)。Scale out:
2016-12-24 13:40:45 563
原创 手机抓取数据学习笔记
常用抓取方案比较 对于最后的方式,一般需要以下步骤 • 工具准备 • App脱壳 • 寻找突破口 • 动态调试 • 编写外挂 • 部署到真机
2016-12-23 07:15:40 374
原创 分布式会话跟踪系统学习笔记
美团MTrace核心理念是调用链:通过一个全局的ID将分布在各个服务节点上的同一次请求串联起来,还原原有的调用关系、追踪系统问题、分析调用数据、统计系统指标。作用能够梳理内部服务之间的关系,感知上下游服务的形态。比如一次请求的流量从哪个服务而来、最终落到了哪个服务中去?服务之间是RPC调用,还是HTTP调用?一次分布式请求中的瓶颈节点是哪一个,等等。 进一步利用这些数据对服务进行优化: - 对
2016-12-22 06:40:07 686
原创 数据访问层中间件学习笔记
业界组件参考http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745918&idx=1&sn=7e061efafdde7f87eb054fc98a4ca1e9&chksm=bd12b7338a653e254302d2d13e29b2d729adcedb46b1dfc67c2457789614594ad3c29a71d3ea&mpshar
2016-12-21 22:05:38 328
原创 唯一主键生成方案学习笔记
常见方案参考http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745918&idx=1&sn=7e061efafdde7f87eb054fc98a4ca1e9&chksm=bd12b7338a653e254302d2d13e29b2d729adcedb46b1dfc67c2457789614594ad3c29a71d3ea&mpshar
2016-12-21 21:45:21 423
原创 开发模式学习笔记
瀑布模型特点 强调文档,每阶段的输出作为下阶段的输入,文档是各个阶段衔接的唯一信息。难以应对客户需求的变化。要到开发的后期,才可以看到软件的“模样”。敏捷开发敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
2016-12-18 11:45:43 287
原创 单租户&多租户学习笔记
单租户SaaS架构也被称作多实例架构,指的是为每个客户单独创建各自的软件应用和支撑环境。单租户SaaS被广泛引用在客户需要支持定制化的应用场合。每个客户都有一份分别放在独立的服务器上的数据库和操作系统,或者使用强的安全措施进行隔离的虚拟网络环境中。多租户SaaS架构应用都是运行在同样的一个或者一组服务器上,被称为“单实例”架构(Single Instance)。 多租户比较适合通用类需求的客户,即
2016-12-18 09:34:56 5410
原创 IO模型学习笔记
IO模式对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。 所以说,当一个read操作发生时,它会经历两个阶段: 1. 等待数据准备 (Waiting for the data to be ready) 2. 将数据从内核拷贝到进程中 (Copying the data from the kernel to th
2016-12-11 20:36:53 322
原创 nginx学习笔记
一.安装mac os X 10.11.5环境:brew install nginx 即可。 默认安装目录/usr/local/etc/nginx。 可以修改目录下nginx.conf文件的配置,将8080改为8081,则通过http://localhost:8081访问就可以看到nginx的欢迎界面了。
2016-12-10 17:51:22 303
原创 性能调优笔记
调优策略分类代码这应该是性能调优第一步,检查相关代码。定位性能瓶颈,再去考虑具体的优化策略。 数据库sql语句调优每一个技术人员都应该掌握基本的SQL调优手段(包括方法、工具、辅助系统等),比如自带的慢查询日志或者开源的慢查询系统定位到具体的出问题的SQL,然后使用explain、profile等工具来逐步调优。数据库架构一般包括读写分离,多从库负载均衡,水平和垂直分库分表等。连接池调优为了实现数据
2016-12-03 07:27:41 306
原创 消息队列笔记
常见消息队列:ActiveMQ、RabbitMQ、Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。常用于解决:业务解耦/最终一致性/广播/错峰流控如果下游有很多业务方关系你的系统发出的通知的时候 ,果断的使用消息队列吧业界的一些为最终一致性而生的消息队列如notify(阿里)、QMQ(去哪儿),设计初衷是为了交易系统中的高可靠通知。一种实现方案是通过补偿机制, 比如
2016-11-27 12:05:28 1067
原创 阅读笔记:微信后台相关
一 从0到1:微信后台系统的演进之路http://36kr.com/p/5042290.html异步消息机制 群聊是耗时操作,消息发到群后,可以通过异步队列来异步完成消息的扩散写等等。 图4是异步队列在群聊中的应用。微信的群聊是写扩散的,也就是说发到群里的一条消息会给群里的每个人都存一份(消息索引)。为什么不是读扩散呢?有两个原因: 1、群的人数不多,群人数上限是10(后来逐步加到20、
2016-11-24 22:55:26 365
原创 hash算法 todo
hash算法hashMurmurHash: 高运算性能,低碰撞率,现已应用到Hadoop、libstdc++、nginx、libmemcached等开源系统。http://blog.csdn.net/yfkiss/article/details/7337382- http://blog.csdn.net/wisage/article/details/7104866- 局部敏感性hash
2016-10-31 22:58:52 250
原创 Java Apache CollectionUtils 源码阅读笔记,注意3.2版本bug
union并集以下是部分方法,并非是所有方法。//通过set将a、b集合合并,如果某个对象在两个集合中出现,则新集合中该对象的数量取两个集合中该对象出现次数的较大数。 public static Collection union(final Collection a, final Collection b) { ArrayList list = new ArrayList();
2016-10-30 11:45:18 1653
原创 java String 源码阅读笔记以及Unicode的学习
感悟可以看到String中的方法,均是比较简短的方法,且每一行的长度都在idea代码显示框的一半长左右。非常便于阅读。小细节regionMatches 比较两个字符串区域是否相等public boolean regionMatches(boolean ignoreCase, int toffset, //...... while (len-- > 0) {
2016-10-29 10:14:30 235
原创 面试高频问题
常问问题数据库引擎有了解么 如何分表Tcp与udp的区别jvm内存结构和各个内存块的作用,知道gc的大致过程concurentHashMap 的内部实现ssh了解以及抓取项目中遇到的比较有挑战性的问题如何发现慢查询?如何解决 (不要因为公司内部有了相应的自动化工具就不去了解如何去做!!!!!)具体考察非对齐的二维整数数组数据拷贝 coding实现两个有序数组的合并背包算法具
2016-08-16 09:33:38 418
原创 mysql小知识点摘抄
行级锁:对于mysql,InnoDB预设的是Row-level Lock,但是,需要明确的指定主键,才会执行行级锁,否则执行的为表锁。 如select * from job_info where id = 1 for update; 若不出现主键为表锁。
2016-08-15 08:24:02 173
原创 排序算法
快排 package org.gebilaowang.crawller;import java.util.Scanner;/** * Created by xiehonghao on 16-8-10. */public class HduTest { private static int[] numArr = new int[200]; //升序 private s
2016-08-10 23:41:42 203
原创 防爬虫
一些爬虫的弱智小问题本应该是ios/android的请求,却携带windows、linux系统的useragent仅仅访问某个页面且频繁的用户可能是爬虫访问有频率
2016-08-09 07:52:58 368
原创 验证码识别
灰度化http://www.codeceo.com/article/java-image-gray.htmlpackage org.gebilaowang.utils;import javax.imageio.ImageIO;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.awt.image.BufferedI
2016-08-06 00:00:31 435
原创 线程池的大小应该设为多少
线程池的大小应该为多少结论:线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程(防止过多的上下文切换)。 最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1)* CPU数目 http://my.oschina.net/u/175660/blog/389346是否使用线程池就一定比使用单线程高效呢?答案是否定的,比如Redis就是单线程的,但它却非常高效,基
2016-07-31 23:14:16 1030
原创 RPC thrift学习笔记
RPC远程过程调用,需要它的理由 - 架构分层、分割 - 分布式集群 - 基础服务复用 RPC典型框架 - thrift(facebook) - gRPC(google) - Dubbo(alibaba) - json rpcthrift介绍一款RPC通信框架,采用C/S架构,且拥有高效的序列化机制。特点支持多种主流的语言,客户端、服务端可以采用不同语言类型。 使用 t
2016-07-31 21:46:31 384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人