自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

语句倒装和语音图像压缩的科学原理

 今天吴军老师讲了一道简单谷歌面试题,把语句倒装和语音图像压缩的科学原理结合了起来,很有启发。 面试题目是说“如何不使用额外的存储空间完成语句倒装?”,例如要把“London bridge is falling down”倒装成“down falling is bridge London”,这道题的难度在于不使用“额外的存储空间”,而最大思维陷阱在于人会陷入自己固有的思维方式,或者说...

2018-06-20 19:57:51 311

原创 如何设计一个地图功能,找到当前最近的加油站?

吴军老师的《硅谷来信》中的第080封信,讲了一道Google面试题。 题目如标题,主要考察两方面:1、考察计算机科学的基本知识2、看候选人分解问题、解决问题的能力 首先处理一个问题要先全面了解问题,否则答非所问或者没有体会出题人的考察点。我刚开始思考这道题,忽略掉了有点个关键点:1、汽车是移动的,结果会不断更新,计算速度不能很慢。2、这个产品不同的使用场景,对准...

2018-04-19 12:57:52 2262

锦标赛排序算法

 今天听了吴军老师的《硅谷来信》中的第079封信,了解到了锦标赛算法。 首先锦标赛排序又叫树型选择排序,也是用二叉树这种数据结构。这种排序方法比快速排序快,主要是在N个选手中选出K个选手中有优势。这封信中说了一道高盛面试题,即如何从25个选手中决出前三名,就使用了这种算法。 这封来信中讲解的方式和标准的锦标赛排序算法不太一样(标准的锦标赛排序算法见文末链接),共分三大步:...

2018-04-11 22:55:05 9106 1

原创 同程凤凰缓存系统基于Redis的设计与实践(转)

 本文摘自《深入分布式缓存》,此文中提到的同程在使用Redis过程中踩过的坑,非常真实也很有借鉴性,读文有感Mark如下: 1、Redis主从+Keepalived方案,存在的问题!这本来是个很好的方案,但是忽略了主数据节点挂掉的情况。Redis的单进程、单线程设计是其简单和稳定的基石,只要不是服务器发生了故障,在一般情况下是不会挂的。但同时,单进程、单线程的设计会导致Redi...

2017-12-28 21:15:55 169

原创 限流功能设计

很早以前做过一个限流的功能,设计地很ugly。今天看到Log4j2的限流过滤器设计的非常好,花了一些时间研究感觉很不错,以后可能还会再用,总结一下吧。 首先我们要先聊一下限流功能主要是做什么?其实就是限制某种操作在某段时间内,限制做多少次。Log4j2的使用了一个 DelayQueue 和一个 ConcurrentLinkedQueue 开发了一个过滤器(burstFilter)比...

2017-12-15 19:30:20 370

原创 kafka主题消费积压问题总结

 故障描述:12月6日下午运维反馈说,某个主题的一个分区消费积压,由于这个主题非常重要,且已经有用户投诉所以运维很紧张,紧急打印堆栈并Dump堆内存后,就重启了这台机器。 故障分析1:消费这个主题的集群的业务逻辑相对比较简单,主要就是读取某些主题,然后逻辑判断+DB操作后,分流写入到另外某些主题。运维通过kafka监控平台找到积压的主题,发现主题的某个分区积压了几万消息后,...

2017-12-09 23:43:39 7558 1

httpclient连接池相关参数的坑

 今天早上UIOC,现象是发现调用某个服务的接口总是超时,这个环境昨晚没有发版本无缘无故就出问题很是奇怪。到公司各种查,最终通过问题服务重启前打印的堆栈信息看到几乎所有的线程都在等待连接池释放连接后获取空闲连接。错误如下:"xxxxxxxxxxxxx" prio=10 tid=0x00007f6b7c002800 nid=0x40ff waiting on condition [0x0...

2017-07-28 22:59:23 3173 1

原创 关于dubbox部分rest接口超时问题研究

 业务高峰期部分rest接口超时有一段时间了,之前一直怀疑是kafka、nginx、log4j、网络等原因并进行优化,一直没有太大改观。我们生产共有四台nginx反向代理网关,运维在某台nginx中通过日志grep看到,高峰期   nginx反向代理到后端某台tomcat,每秒达到100+,4台nginx则为400+,已超过tomcat设置的并发连接数和完全连接队列的大小(200+100=...

2017-07-28 00:32:59 450

原创 非阻塞I/O及epoll理解新方式?

 阻塞I/O与非阻塞忙轮询I/O的缺点阻塞I/O:一个线程只能处理一个流的I/O事件。如果想要同时处理多个流,要么多进程(fork),要么多线程(pthread_create)。非阻塞忙轮询I/O:循环轮询所有流,没有I/O时CPU空转。以上两种方式缺点很明显,阻塞I/O一个线程(或进程)处理一个流不适合高并发和大量长连接场景,非阻塞忙轮询I/O的主要问题需要主动轮询流的状态,...

2017-01-18 18:14:10 161

原创 OpenResty?ngx_lua?Nginx与ngx_lua结合?

什么是OpenResty?将Lua和Nginx粘合ngx_lua模块,并且将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合而成。  什么是ngx_lua及原理?ngx_lua是Nginx的一个模块,将Lua嵌入到Nginx中,从而可以使用Lua来编写脚本,这样就可以使用Lua编写应用脚本,部署到Nginx中运行,即Ngi...

2017-01-18 17:04:25 228

原创 Mysql复合索引的坑!!!

 问题第一次发生!上周五公司年会,一早运维电话说UIOC,IMS应用的CPU持续飙高,立马启动UIOC。迅速赶到公司情况属实,各种查最终发现DB并发连接数超高,DB负载超高,kafka积压严重,并且持续时间已经有一两个小时了。  解决方案第一波!查看IMS应用线程堆栈(ThreadDump)信息发现200个运行线程有167个都在做同一个操作,这个操作是每个用户登录时都要...

2017-01-11 23:21:48 550

TCP分段和IP分片

主要讲TCP/IP协议中传输层的分段和网络层的分片 1、TCP分段是指在经三次握手后,收发双方建立起连接通过后,双方已经协商好并确定彼此要采用的MSS(最大分段长度B),MSS一般都是按照接受方确定。然后把用户数据payload按照MSS大小进行分段,各个分段数据被逐一添加TCP报头后(20B),送给下一层网络层。 2、网络层接收到这些分段后,在添加端主要的IP报头前,按照主机...

2016-03-31 09:39:30 316

原创 深入浅出协程(Coroutine)

目录:1、协程是什么2、协程新思路3、协程与GreenThread4、协和调度器实现策略 1、协程是什么?(1)线程每一个线程都代表一个执行序列。当我们在程序中创建多线程的时候,看起来,同一时刻多个线程是同时执行的,不过实质上多个线程是并发的,因为只有一个CPU,所以实质上同一个时刻只有一个线程在执行。在一个时间片内执行哪个线程是不确定的,我们可以控制线程的优先...

2016-03-29 09:45:54 1206

原创 性能测试发现“redis cannot assign requested address”问题

 场景描述:test_client(jmeter) -> nginx -> redis 问题表现:nginx频繁报错redis cannot assign requested address,查看nginx网络连接情况,发现有大量TIME_WAIT的连接,并且test_client的tps上不去。大量的TIME_WAIT状态使得local port在TIME_WAIT持...

2016-03-17 17:14:05 819

原创 Java线程结束/中断退出

SelectorManager包含Reactor(extends Thread)数组,要停止SelectorManager所以要先停掉各个Reactor,查看代码如下:public synchronized void stop() {if (!started) {return;}started = false;for (Reactor reactor : reactorSet) {rea...

2015-08-19 14:17:19 139

原创 CentOS 6.5安全加固及性能优化

说明:经常玩Linux系统的朋友多多少少也知道些系统参数优化和怎样增强系统安全性,系统默认的一些参数都是比较保守的,所以我们可以通过调整系统参数来提高系统内存、CPU、内核资源的占用,通过禁用不必要的服务、端口,来提高系统的安全性,更好的发挥系统的可用性。通过自己对Linux了解,对系统调优做了如下小结:操作系统:CentOS 6.5_x64最小化安装1、主机名设置 [roo...

2014-12-04 12:44:52 75

Netty 4.0.0.Alpha1

Netty 3.5.2.Final 到 Netty 4.0.0.Alpha1变化很大 主要体现在以下几个方面1.包结构的变化(Project structure changes)2.Buffer API变化(Buffer API changes)3.Channel API变化(Buffer API changes)4.定义更加完善的线程模型(Well-defin...

2012-07-22 21:55:57 158

原创 jsessionid释疑解惑(转)

在web应用的开发中我们会经常看到这样的url:http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x。这跟一般的url基本一样,只有一个地方有区别,那就是“;jessionid=xxxxxxxx”。这个参数有时候有,有时候又没有,说它是参数可又跟一般传递的参数不同,它是紧跟在url后面用分号来分隔的,用一般的request.get...

2011-11-01 13:52:45 117

Apache MINA 2.0.4 Released

The Apache MINA project is pleased to announce MINA 2.0.4 ! This version is a bug fix release. We recommend all users to upgrade to this release. We consider this a stable and production ready rel...

2011-06-23 09:33:09 100

原创 关于TOMCAT缓存问题及处理方法

1。问题tomcat 的缓存机制 事出做项目时一个jsp页面修改后一直没有读出来,后来仔细研究了下tomcat才发现当请求jsp页面时,Tomcat会分派给JspServlet来处理,在jspServlet的方法 service()中有一句 boolean precompile = preCompile(request); 它会判断你请求jsp页面时有没有带?jsp_precompile查询字符串...

2011-06-01 16:22:23 406

原创 InnoDB和MyISAM区别总结

InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。MyIASM是IASM表的新版本,有如下扩展:·二进制层次的可移植性...

2011-05-11 16:31:14 58

Apache MINA 2.0.3 Released

The Apache MINA project is pleased to announce MINA 2.0.3 ! This version is a bug fix release. We recommend all users to upgrade to this release. We consider this a stable and production ready rel...

2011-05-01 09:21:04 54

原创 VM参数设置及调优

堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置: java -Xmx3550m -Xms355...

2011-04-14 17:58:14 1090

原创 shallow size & retained size 区别

shallow size就是对象本身占用内存的大小,比如String对象public final class String   implementsjava.io.Serializable, Comparable<String>, CharSequence{   /**The value is used for character storage.*/   private final ...

2011-04-14 17:01:20 442

原创 JDK ByteBuffer & MINA IoBuffer 总结&比较

JDK ByteBuffer & MINA IoBuffer 总结&比较    Position(Mark)<=limit<=capacity当position==limit时就没有字节可读写了每次get或put都将增加position重置mark就是设置mark=-1JDK   ByteBuffer 属性:...

2011-04-13 19:31:25 61

原创 JAVA中String与StringBuffer的区别

 在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。不可变类。3.StringBuffer 也是对一串字符进行操作,但是可变类。 String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String ...

2011-04-02 16:51:33 52

原创 Java内存分析

在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极 其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。 2. 堆栈(stack)。位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存; ...

2011-03-29 18:20:00 71

原创 救火必备linux命令小结(转)

线上查问题的时候有些命令是必备,有必要把一些常用命令总结一下(这类命令和相关参数相当多,只总结自己常用得到的),查找问题一般可以分为系统参数、性能参数、进程、内存、网络、存储、内存和jvm这么几类:系统参数 cat /proc/cpuinfo cpu相关参数cat /proc/meminfo 内存相关参数cat /proc/loadavg 负载情况 性能参数 ...

2011-03-29 13:55:49 64

空空如也

空空如也

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

TA关注的人

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