对Java static关键字的理解总结。
Guava 源码阅读之 TreeMultiset
崇祯五年十二月,余住西湖。大雪三日,湖中人鸟声俱绝。是日更定矣,余拏一小舟,拥毳衣炉火,独往湖心亭看雪。雾凇沆砀,天与云与山与水,上下一白。湖上影子,惟长堤一痕、湖心亭一点、与余舟一芥、舟中人两三粒而已。
到亭上,有两人铺毡对坐,一童子烧酒炉正沸。见余,大喜曰:“湖中焉得更有此人?”拉余同饮。余强饮三大白而别。问其姓氏,是金陵人,客此。及下船,舟子喃喃曰:“莫说相公痴,更有痴似相公者!”
– 《湖心亭看雪》(明)张岱
Programmers Reading Everyday 2016
Programmer
Why I love ugly, messy interfaces — and you probably do too 并非总要将Beautiful. Fresh. Clean. Simple. Minimal的设计原则奉为圭臬,完成功能是最重要的,太他妈好用的一个产品,谁会在意他很庞杂混乱。
My Biggest Regret As A Programmer 比较深沉的一个blog,后悔没有抓住时代的机会转型以及在94从Apple离开,说到作为程序员能改变的太少了,是因为作为程序员比较简单。自己也可以思考一下。
Lessons from a Google App Engine SRE on how to serve over 100 billion requests per day 应该算是运维相关,谷歌的Site Reliability Engineer(网站可靠性工程师) Chris Jones阐述了SRE工作的一些方面,自动化,“It’s better to have people do things people are good at and computers do things computers are good at.”, 有 contingency(应急)计划,有网络负载均衡器,有数据迁移,有内部的分析机制及时发现问题。
How BuzzFeed Thinks About Data Science
3 simple reasons why you need to learn Scala
Working at Netflix 2016 谈了自己2年在Netflix的感受以及SRE方面的经验。结合Netflix其他的博客可以看到,其中的开发基本是关于Java和Linux性能调优。
Reclaiming Design Patterns (20 Years Later)
How to get rich in tech, guaranteed.
Fail at Scale-Reliability in the face of rapid change
When I Learned that Computers Have Soul
The software engineer’s guide to asserting dominance in the workplace
Being data-driven: It’s all about the culture
What I learned about software architecture from running a marathon
Defining a reactive microservice
Git
Math
Immersive Linear Algebra – free interactive online book 线性代数书籍,很生动的图画,可以参阅。
Java
(√)Java for Everything 作者根据自己的自己的体会,决定使用java做所有的事情,其中说道了动态语言和静态语言的优劣,Python虽然能够快速着手,但是面对大型,需要长期维护,需要单元测试的项目,java更胜任,而且java比Python快10倍,作者提到了忠实于java后,可以构建自己的lib常用组件。
(√)How (not) to write Factorial in Java 作者从写一个阶乘的util层层递进,引人入胜,其实是要说明over-engineering的弊端,不要以后这个地方要扩展,所以先做好可扩展性的架构设计,这不过是意淫罢了,要着眼于重点,不要过度设计。
(√)java-magic-part-4 sun.misc.Unsafe 学习Unsafe的魔法。
Quora - How is Hashmap in Java implemented internally?
Differences between HashMap and Hashtable?(stackoverflow)
Equals and Hash Code
A generic input/output API in Java
10 Things You Didn’t Know About Java
HowToDoInJava 一系列Java方面的文章,可以看看。
Introduction to Java threads (1996)
Modern Java - A Guide to Java 8
JVM
Java Code To ByteCode . PartOne
The infamous sun.misc.Unsafe explained
The Black Magic of (Java) Method Dispatch
Understanding Java Garbage Collection
How to Monitor Java Garbage Collection
Message Queue
Adventures in message queues - Disqueue
Top 10 Uses For A Message Queue 消息队列的应用场景。
Dissecting Message Queues 解析比较了几种常见的消息队列
Apache Kafka, Samza, and the Unix Philosophy of Distributed Data Unix的很多哲学,值得我们不时回头反思汲取
The value of Apache Kafka in Big Data ecosystem
Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform (Part 1)
Announcing Kafka Connect: Building large-scale low-latency data pipelines
Security
Data Architecture in an Anti-Fraud Architecture
Database
Elements of Scale: Composing and Scaling Data Platforms
Database versioning best practices
How does a relational database work 知其所以然,关系型数据库如何工作的。
NoSQL & Redis &Memcached
Operating System
Operating Systems: Three Easy Pieces
Distributed System & Software Architecture
6-824-distributed-computer-systems-engineering-spring-2006 MIT的分布式系统课程。
A Distributed Systems Reading List
Facebook’s software architecture
Software Architecture cheat sheet
Notes on Distributed Systems for Young Bloods
The Log: What every software engineer should know about real-time data’s unifying abstraction - 中文版
Linux & Unix Philosophy
Apache Kafka, Samza, and the Unix Philosophy of Distributed Data
Miller is like sed, awk, cut, join, and sort for name-indexed data such as CSV
Network & TCP/IP
Webcomic: How DNS Works (howdns.works)
Python
Python List Comprehensions: Explained Visually解析Python中的列表解析
Architecture
Backend infrastructure at Spotify
Airbnb Shares The Keys To Its Infrastructure Mike Curtis讲述了Airbnb很多的技术方面-分享经济;数据中心使用的AWS,工程师应该把注意力放在企业的独特之处;更多的server是用来做分析和机器学习,为用户找到合适的place;Airbnb工程上的重点就是实现更好的匹配,有机器学习,搜索排名,欺诈发现;Hadoop等等。
HOW UBER THINKS ABOUT SITE RELIABILITY ENGINEERING
Stack Overflow: The Architecture - 2016 Edition
The Epic Story of Dropbox’s Exodus From the Amazon Cloud Empire
4 reasons why microservices resonate
Object-oriented vs. functional programming
Go
Packet Capture, Injection, and Analysis with gopacket
Others
In search of the perfect URL validation regex
How a Car Engine Works 汽车发动机是如何工作的,长点知识。
2015 找工作总结
前言
找工作毕竟为人生之大事,所以总结一下,然后做该做的事情。掐指一算,也花了将近半年的时间了,从找实习开始,有点当年考研的味道,有目标,有力量。
实习拿到了阿里和腾讯的offer,想了太远,以及考虑阿里允许实习一个月,所以就去了淘宝城,进行了为期一个多月的实习,那段日子很辛苦,为了习得更多东西,晚上零点之后才会住房,总想尽快熟悉相关的东西,然后给众人留下好印象,收获还是有的,实习期间就有了以后长留于此的想法。可是,变化总是要拥抱的,今年阿里大规模缩招,我一个B+级别的何以能留下,而且实习时间短,^_^。
等待结果的过程是痛苦的,你总是试图往好的方向去意淫,但是事实来的时候你不得不坦然。所以接下来就进入了战斗模式,各种通道,各种公司,狂轰乱炸。在面试中成长,在面试中寻找自信。
总的来说最后拿到了一些,如何选择?
结果汇总
公司 | 行进 | 结果 |
---|---|---|
阿里 | 业务安全实习 7.9-8.14 | 转正面试结果:失败! |
华为 | IT 产品线,云存储(成都) | offer 可选杭州 |
网易游戏 | 9.15在线笔试 | 没有一面机会 |
腾讯 | 9.14 下午3:30 面试 9.17 二面 HR面 | IEG 9.22 签两方 |
百度 | 9.12 笔试,9.15 一面,9.18 二面 | 二面跪了 |
蘑菇街 | 9.19 在线笔试 | 没有面试机会,草 |
UCloud | 上海,和自己做的非常接近 | offer |
网易互联网 | 9.22面试 | offer |
微策略 | 电话面了两次,10.12进行了2次现场面试 | 无果 |
选择
如何选择?如何进行所为的职业生涯规划?有人说你列个表格看纠结去哪儿更胜一筹,但我想说,难道所有的条目都是等价的吗?可能就仅仅为了某个理由就肆无忌惮的选择了一个一般的公司。
尝试列个表:
因素 | 是否看重? |
---|---|
个人提升 | |
个人情节 | |
机会更多 | |
公司注重工程师 | |
加班不多 | |
和自己想做的更接近 | |
你的另一半 | |
你真的热爱游戏开发吗?一辈子? | |
公司伙食好 | |
外企,流程规范 | |
有离家近的公司吗? |
明天你好
找工作的事差不多就这样了,再掐指一算,在学校的日子也不多了,怀揣着一颗感恩的心去想想毕业设计做什么,并做好!
最后选择了去网易互联网。
vonzhou 2016.1.27
使用Github和Hexo写博客
曾经一度多次尝试过在github上写博客,包括使用hexo,后来不知不觉就冷却了,那是在换电脑之前。今天又心血来潮,又把这个流程捡起来,遇到了些问题,记录下。
前提:
- 有个github账号
- 安装 nodejs,git
- 有个shell环境
安装 hexo
1 | npm install hexo-cli -g |
创建一个文件夹,进入执行hexo init,然后会生成一些hexo的模板文件
运行本地的hexo server,在浏览器访问localhost:4000可以看到一个demo
然后就需要把hexo生成的静态文件托管到github中,在github中new一个vonzhou.github.io的仓库(vonzhou是我的用户名)
hexo g会在public目录下生成所有的静态文件,手动push到vonzhou.github.io,然后访问浏览器vonzhou.github.io可以看到OK了。但是这样每次很耗时。所以急需自动部署。
hexo工作目录下生成的_conifg.yml是一些配置,其中可以配置deploy的策略,如下:
1 | deploy: |
然后继hexo g生成所需的静态文件后,可以运行 hexo d进行自动部署到对应的仓库,这里需要安装插件:
1 | npm install hexo-deployer-git --save |
然后出现问题 “FATAL Permission denied (publickey)”,需要生成SSH key
1 | ssh-keygen -t rsa -C "your_email@example.com" |
我设置的密码和github登录密码一样,然后将~/.ssh/id_rsa.pub文件中的内容拷贝,进入github的setting中设置到SSH Key中。
然后,ssh一下github,OK后,hexo d就妥妥的了。
1 | $ ssh -T git@github.com |
最后还出现了一个问题“FATAL EACCES: permission denied, unlink ‘/Users/vonzhou/Workspace/hexo/.deploy_git/css/style.css’”,使用sudo hexo d就好了。