- 浏览: 103578 次
- 性别:
- 来自: 上海
博客专栏
-
Hyperic插件开发不完...
浏览量:11255
最新评论
-
u011506498:
楼主,能否求源码,924393541@qq.com,多谢!
Java爬虫框架(三)--模块设计之二 -
yutiannanjingjiangsu:
leftpop的返回值问题,在jedis2.6中似乎已解决(l ...
Spring-data-redis使用心得 -
xpf123fly:
楼主,能否求源码,593829792@qq.com,多谢!
Java爬虫框架(三)--模块设计之二 -
wenlinguo:
写得不是很好理解
Hyperic插件开发不完全指南(二)--插件进阶 -
406657836:
java 在server模式下对while进行了优化。把判断提 ...
Java进程CPU100%的问题
文章列表
1.列表页原子操作问题
我们使用的nginx proxy cache,每次只能purge(过期)一个页面。发现页,热门,如果不同时purge,会出现新老交替的瞬间。没有主动过期概率更高。阅读nginx proxy cache代码,知道hash规则,删除文件。可以用nginx插件实现。
2.缓存什么像大量的用户,专辑页,如果都缓存代价很高,是否只缓存首页。只缓存第一页。3.缓存过期问题被动过期:缓存时间到了后,会获取新的数据。对于未登录比较适合。主动过期:发生修改后,主动通知页面缓存清理。用户的声音,专辑列表,专辑的声音列表,发现页列表用户:用户修改了自己的属性,发了新声音,新专辑。专辑: ...
回来时候,发现会场听讲的会议记录的笔记本丢了,写了满满一本。就凭记忆写一些东西吧。
1.android插件化
插件化框架组开发定制了自己的dexloader,resource loader,如果发现插件或者资源有更改,就自动更新。有校验机制,母包会对子包记性校验,大概是母包对子包进行签名,接着dexloader加载时用母包的公钥解密,得到插件指纹,对插件指纹进行校验,如果插件有任何内容修改,就生成不了一致的插件指纹。校验的算法都是用C直接写的。反编译可能就不起作用了。另外子包也会对母包进行校验。
插件开发组 开发的包 就跟普通的apk一样,可打包到app market发 ...
今天review了一下测试环境,后来发现一个java进程CPU 120%多,4核的CPU,很多人都没感觉。但是确实是很大问题。测试环境没什么并发,也没什么数据量怎么会这么高的cpu呢?
找到java进程中耗cpu最高的nid,
top –p pid –H
用jstack或者其他方式打印一下线程堆栈,从堆栈记录里找出nid,对应的线程和他的堆栈。找到出问题的方法。有这么一段代码。
while (true) {
while (blockingDeque.size() > 0) {
try {
...
满篇的fullgc
- 博客分类:
- J2SE and JVM
今天,抽空review一下测试环境。看了一下gc日志,乖乖,满篇的full gc。
用jstat –gcutil PID查了一下,发现确实fgc的count是ygc的4倍。为什么都跑到老年代了。然后看了tomcat启动设置,发现不知一哥们把xmn配成了256m。问他为什么这么设置。说配小了就可以不停的YGC,FGC就没有了。
我怔住了,竟然能这么理解,YGC是增多了,短期对象都跑到老年代了,FGC并没有减少。把xmn重新设置到了
花了几天时间,对androidpn的源代码进行了阅读,并修改了一些必要的功能。
服务端:
1.用户认证策略改为用device id和token。token是用户登陆应用成功后生成的,device id是一台机器的UUID。一个用户会绑定到多个device,和网站本 ...
1. 神奇的现象
今天发布版本时,重启了整个rabbitmq集群,发现有的模块和rabbitmq中的exchange解绑了。而且启动时并没有自动绑定。有个同事有十几个queue,全部手动绑定了一下。导致上线时间多花了10多分钟。现象描述:
queue ...
背景
远程提交MR job时将MR job依赖的所有jar都发布到HDFS中,同时将这些jar加到hadoop job的classpath上。
如果每次手动上传就太费劲。项目集成maven。所以打算在maven package时将所有jar通过脚本上传到远程HDFS上
编写ant脚本
使用了,haddop的ant 插件。说白了就是一些util方法,调用了fsshell。没有文档,写的时候需要参考plugin的源代码。呵呵。
关键:
<hdfs cmd="rm" args="@{mapred.lib.dir}/*.jar&qu ...
多客户端同时登录向下查看更多翻页
- 博客分类:
- web
分页逻辑:
1.向下翻滚动条,查看更多
2.旧的内容和新的内容会合并,多条会合成一条,放在第一条,便于用户查看信息
3.不允许两页出现重复,特别是手机scroll view出现重复就太难看了。
解决方法:
1.为了分页显示正确,在翻页时不出现重复(翻页是向下查看更多的方式),现在是记录未读数,在获取第二页时是pagenumber×pagesize+unread。如果有新的内容产生,未读数加1,用户刷新页面,从第一页开始获取,未读数清0.
2.现在我们是每种客户端存一个未读数,但是如果用户同时登录两个手机,就会出现分页混乱的情况,因为A客户端是看6-10条,但B客户端刷 ...
1. 将开发好MR代码打包成jar。添加到distributed cache中。
bin/hadoop fs -copyFromLocal /root/stat-analysis-mapred-1.0-SNAPSHOT.jar /user/root/lib
2. 在服务器端创建和你客户端一模一样的用户。创建目录 /tmp/hadoop-root/stagging/用户
3. 客户端提交job的代码
Configuration conf = HBaseConfiguration.create();
conf.set("hb ...
Lucene sort
- 博客分类:
- Index and Search
Lucene sort:
1.索引顺序
2.相关度
3.sort field
4.custom sort (comparator)
5.function query(score函数)
6.boost(norm) 7.custom collector。
他们各有所长,有的耗cpu时间,有的耗索引大小。
1. 都是基于散列算法分表,有两种不同的方法,
一种取模法,但是取模也是先预估100张,也可以先用10张,10张表相当于0, 9,19, 29等,如果模下来的在5就寻址到值为9的那张表,这样即使加入新的10张表也只要迁移部分数据。
二种一致性hash,按100张表为例,每个物理节点增加10个虚拟节点。不要舍不得增加虚拟节点,直到算出来的节点比较平均就可以了。
2. 数据不要舍不得冗余
内容表本身按照ID分,跟用户相关比如收藏,喜欢,转发,发布等都是按照UID分。列表显示的数据都需要冗余。列表显示的数据要尽量控制住。
3. 根据id分表不是万能的。有时候需要根据 ...
MySQL,一条两层subquery的坑爹优化
- 博客分类:
- Mysql
最近整一些见不得人的事情,每天都忙到很晚。悲剧。
SELECT a.client_id,
s.cnt s_cnt,
a.cnt a_cnt,
s.cnt / a.cnt s_rate
FROM (SELECT COUNT(*) cnt,
handle_client client_id
FROM tb_captcha cpout
WHERE expire_time > ...
C# webbroser控件有限制(可能浏览器控件都有这个限制),黑盒的情况下不能修改header,是只读的方式。只能全局通过DLL的开放的接口修改整个进程的header信息和代理信息。
而webbrowser是可以多线程的,我们现在是一个独立业务使用一个webbrowser。将来或使用webrowser池,这时候proxy接收到的数据需要修改然后传给相应的发送者,按照前面所说,proxy单个进程只有一个,所以proxy在处理完数据后需要寻址到对应的发送方。但是proxy无法掌握任何有关发送方的信息,无法对应起来,此时也就无法工作于多线程的模式。
此时解决的方案由三个:
1.全局 ...
6. Filter
Filter可以对解析好的新Task,进行过滤。
7. Handler
Handler对解析好的内容进行进一步处理,异步化处理和爬取解析。处理主要是将爬取的数据入库和索引。
一、 模块
1. Scheduler
Scheduler负责启动爬虫,停止爬虫,监控爬虫的状态。
Scheduler在调度爬虫时,借助于Quartz,设置爬虫在某个时刻启动。同一个名字的爬虫是stateful的。
Task