程序员的自我修养

gc老生常谈

0条评论1,516次浏览

算是笔记吧。看了很多次的jvm、gc,但都没记住。这次遇到了自己写得线上服务出现了oom+死锁+频繁full gc(扶额),总算是记住了jvm和gc的基础知识。也是醉了。

jvm模型

主要分3个模块吧:堆、栈、本地方法栈。

堆=young(eden + survivor(from + to)) + tenured + permanent,也有说permanent不属于堆的,不过从gc日志来看我更倾向前者,但从gc参数来看应该是后者。

结合java8的gc来看:

young

par new generation就是新生代young,其大小等于eden区+from/to区,注意这里不是eden+from+to。为什么呢?因为你永远不能同时使用from和to。eden、from和to的比例默认是8:1:1,可以通过参数-XX:SurvivorRatio调节。

新对象的分配发生eden区域内,当新对象(非大对象)无法在该区域分配时便引发Minor GC。大对象放不下的时候直接去tenured区分配。Minor GC就是将eden+from/to的存活对象copy到to/from中去,顺带存活了若干次的会放到tenured区,而且放不下的也会去old区。
(更多…)

分类:Java语言
标签:,

百度做了哪些恶?

1条评论1,099次浏览

逼乎回答被跪舔百度py的人举报了,这里存个档。

已经过了愤青的年龄,对于这种事情已经没有任何情绪波动。
1
2
3

作者:yurnom穆

链接:https://www.zhihu.com/question/45204818/answer/121729765

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

年轻的时候,家里锁坏了,百度了下开锁。选了结果中的第一条,是个百度认证+推广的网站,点进去,发现是个1500外包就能做出来的网站。犹豫了下,还是选择相信百度。

电话打过去,一个男人接了电话,开口直接问你家住那?我问开xx样的锁多少钱?对方继续问你家在哪?我说在xx小区,开xx样的锁多少钱?对方继续问,几号楼?我说xx号楼,开xx样的锁多少钱?对方问,几单元几号?我说x单元x号,开xx样的锁多少钱?对方说,300。我问能便宜点吗?对方说,没得便宜。我说那我考虑下,然后挂了电话。

对方立马回播过来,开口就骂娘,我回了句然后挂机。结果那天从挂这个电话开始,收到了无数的电话轰炸,有的打过来骂几句,有的直接挂,有的就响几声,有的接了不说话。。。。然后去百度上维权,提交了全部截图证据和过程描述,系统告诉我等待x个工作日(具体不记得了)。然后过了很久终于收到了百度的回复,只有一句话:
你的财产受到了损害吗?

没有。我也就被骂了一天,也就家庭地址暴露了家人可能受到人身伤害,也就接了无数个骚扰电话,也就白白浪费了一些时间而已。谢谢你百度,没有让我的财产受到损失。

至今这个网站依然是百度认证+推广,虽然全部评价都是差评+警告其他人不要上当,但依然阻止不了百度帮其推广。

分类:未分类
标签:

leetcode shell

2条评论908次浏览

不知不觉中对各种shell命令熟练了起来,居然完成了所有的leetcode shell题目。撒花!谁在那嘀咕全部shell题目就4题的,你站出来!

Tenth Line

awk

sed

Word Frequency

awk

Transpose File

awk

Valid Phone Numbers

分类:Linux, Shell
标签:, ,

mapreduce二次排序

0条评论1,092次浏览

之前离职的哥们的mr任务留了一堆的坑,他把value当成排序过的,于是reduce里面全部是如此统计dau、设备数的:

心好累,手动微笑。

正所谓前人挖坑后人填,我不入地狱谁入地狱。于是开始一个个mr的改代码。

方法一:用set统计

用set的好处就是改动极小,但存在oom的风险。实际跑了下线上的数据,果然oom了。摔!

方法二:bloom filter

好处是改动也不大,也不会oom,但就统计的结果可能会比实际的值要小。考虑到数据量也没有大到要用bloom filter的地步,且希望数据尽量的精准,放弃!

方法三:mr二次排序

(更多…)

标签:,

scala笔记

2条评论1,534次浏览

apply

先上代码,builder模式:

scala初学者第一反大概object对象怎么能有构造参数,就算可以带参数那也应该在并发上有问题吧。

实际上是apply这个语法糖的作用:

至于这么写有什么好处?其实我觉得没啥好处,除了看起来特别舒服。但代码就是写给人看的不是么,给机器看的那是0和1。掀桌!!

模式匹配

就不背书了,模式匹配相当强大,特别对于多个条件联合判断的时候,比如条件a/b/c,组合起来多达8种可能。若用if else写到最后肯定晕,这时候用模式匹配感觉代码会清晰很多。

(更多…)

分类:Scala语言
标签:

APNS HTTP/2 client端遇到的坑

8条评论4,793次浏览

MAX_CONCURRENT_STREAMS

这个坑排查时间最长。苹果官方文档上没有关于settings的说明,但测试和生产环境中服务器返回的settings是settings={HEADER_TABLE_SIZE=4096, MAX_CONCURRENT_STREAMS=500, MAX_FRAME_SIZE=16384, MAX_HEADER_LIST_SIZE=8000}。而MAX_CONCURRENT_STREAMS=500的意思就是一个channel(就netty而言)最多同时并发500个stream。

若本地不限制stream的并发数,则会报错:Stream does not exist: $streamId。解决方法很简单,自己实现一个Channel进行计数即可。当服务器返回结果时调用decr()。

(更多…)

分类:APNs, Scala语言
标签:,

战5渣系列——Kafka Leader None

9条评论15,843次浏览

前几天大概是脑子短路了,在zookeeper的client里面本想执行ls /kafka的,结果不小心执行成了rmr /kafka

当时我的反应是这样的:1058005442427

然后迅速查了下所有的线上服务,发现居然没有受到影响。然后我的反应是这样的:1444572330_500x500.png
(更多…)

分类:Apache Kafka, 战5渣
标签:, ,

UNIX Pipeline

0条评论1,597次浏览

自从开始用UNIX Pipeline后,感觉查日志速度快了一倍不止。什么是UNIX Pipeline我就不背书了,这里就记录下一些好用的命令吧。

日志示例:

INF [20160215-15:40:52.608] regservice: /alias => {"alias":"13587428", "header":{"name":"XXXX","appkey":"1234567890"}, "token":"abc1234567890"} 1.1.0.0
INF [20160215-15:40:52.608] regservice: /launch => {"header":{"name":"XXXX1","appkey":"1234567891"}, "token":"abc1234567891"} 1.2.0.0
...

grep

not,查找不包含字符串的记录

and,查找满足多个条件的记录

or,查找满足任意一个条件的记录

-oP,这个我也不知道如何描述,我的一个常用场景是:根据日志,统计每个appkey下的日志有多少。于是可用下面的记录先选出appkey(appkey长度固定为10位),以供后续处理:

上文中日志示例的结果为:

(更多…)

分类:Linux
标签:,

常用网址记录

0条评论1,822次浏览

懒得每次要用的时候百度,纪录下。持续更新。
sed 简明教程
AWK 简明教程
RESTful API 设计指南
Redis 命令参考
在线时间戳转换工具

分类:未分类
标签:

3个python库

2条评论5,714次浏览

最近没什么可写的。换工作后开发语言由Java+Shell变成了Scala+Python。

最初的不适期过后,觉得scala和python异常好用。作为一个python新手,纪录下最近常用的3个库。

redis

大部分方法和redis客户端的方法名一样。文档:https://pypi.python.org/pypi/redis

happybase

python与hbase交互的库,其原理就是对thrift接口的一层封装。文档:http://happybase.readthedocs.org/en/latest/index.html

官方文档有的地方不太详细,可以参考hbase thrift文档。

初步测试貌似对hbase:meta表的row_prefix以及start_row、end_row属性无法支持,也就是对hbase:meta表只能全表扫描。应该是个bug。
(更多…)

分类:Python语言
profile
  • 文章总数:81篇
  • 评论总数:241条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1254天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是 Jacob迭代法,一次迭代O (n^3),迭代次数不清楚 ...
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗