Elasticsearch 架构以及源码概览
设计高并发下的读服务?一个电商老兵的10条经验
Java最佳实践
Java Top 100热门问答(Stackoverflow)

Elasticsearch 架构以及源码概览

Elasticsearch 是最近两年异军突起的一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建。最近研究了一下,感觉 Elasticsearch 的架构以及其开源的生态构建都有许多可借鉴之处,所以整理成文章分享下。本文的代码以及架构分析主要基于 Elasticsearch 2.X 最新稳定版。 Elasticsearch 看名字就能大概了解……

设计高并发下的读服务?一个电商老兵的10条经验

本文作者是一个一线的电商老兵,任职于京东商城。在本文中,他将会分享他在构建以读为主的系统时总结的经验和教训,内容包括使用HTTP协议对外通讯、使用短连接、数据异构、巧用缓存、流量控制、防刷、降级、多域名等,作者老马不带遮掩的,把自己总结的经验,包括代码都放到这里了,欢迎各位检阅! 几乎所有的互联网系统……

Java最佳实践

Java 是在世界各地最流行的编程语言之一, 但是看起来没人喜欢使用它。而 Java 事实上还算是一门不错的语言,随着 Java 8 最近的问世,我决定编制一个库,实践和工具的清单,汇集 Java 的一些最佳实践。 本文被放到了 Github 上。你可以随意地提交贡献,并加入自己的有关 Java 方面的建议和最佳实践。 本文概览: 风格 ……

Java Top 100热门问答(Stackoverflow)

目录 基础语法 Java += 操作符实质 将InputStream转换为String 将数组转换为List 如何遍历map对象 public,protected,private,不加修饰符。有什么区别呢? 如何测试一个数组是否包含指定的值? 重写(Override)equlas和hashCode方法时应考虑的问题 从一个多层嵌套循环中直接跳出 如何将String转换为Int 如何分割(s……

  • 20年,中国互联网主流产品的演变和逻辑

    文/黄有璨(三节课发起人,微信公号“黄的世界”) 1995 年,中国第一家互联网公司出现。 2015 年,“互联网思维”和“互联网+”已经几乎无人不知。 写这篇文章的源起,源于一些偶发性的思考——这 20 年间,中国互联网主流产品的演变过程,背后的轨迹到底是怎样的? 在这个思考的过程中,我时常会有如下的感叹—— 互联网这个行业虽然千变万化风起云涌,但其背后的一些大众心理、诉求和规律,却是始终不变和一以贯之的。 (一) 对于老一辈网民和互联网圈人士们而言,基本上不太有争议的一件事是,中国互联网发展的起点,是 20 年前中关村大街上……
  • 前后端分离

    文章作者来自ThoughtWorks:贾朝阳,图片来自网络。 近两年来,前、后端分离的架构得到越来越多的认可,越来越多的团队在尝试、推广这种架构。但在团队采纳这种架构之前依然需要冷静思考,这是不是自己需要的? 什么是前、后端分离? 字面理解,前端与后端分离。以Web系统为例,浏览器一端的显示、交互、逻辑处理是系统的前端;前端需要获取数据、持久化数据、通知其他系统,这些无法在浏览器中单独完成,需要后端提供服务。很明显前端系统、后端系统已经分离,那为什么还要强调分离呢?此分离非彼分离,系统的实例是分离的,但系统的母……
  • 与乔布斯前老板斯卡利对话:应该支持并宽容创始人

    李开复:当年我有幸追随您工作,得到了很多学习和启发。不过许多人还是问我:「你当年是跟乔布斯一块儿工作吧?」我总是这么回答「I worked at Apple between “Jobs”。」(双关语)今天在座的基本是“乔布斯粉丝团”,感谢您愿意和我谈谈乔布斯。 当年您和乔布斯有些冲突。当时董事会支持了您,乔布斯就离开了。最近您对媒体说让乔布斯离开是个遗憾甚至是错误。 但是,我想乔布斯当年相当任性而不成熟。所以请问您:假若他当时没有受挫离开苹果的话,他是否能成长到同样的高度?还是说他离开苹果恰恰经过挫折让他学习成长,他才能成为后来……
  • code123
    华为8年理工女硕离职感言

    华为8年理工女硕离职感言

    题图说明:华为无线二十周年纪念指环,用第一代基站熔材铸之,上面刻有员工的姓名。于公司于个人而言,这都是一段如烈火般燃烧的岁月的……
  • 从100PV到1亿级PV网站架构演变

    一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。 1:积累是必不可少的 架构师不是一天练成的。 1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布局,一个DB连接,几行PHP的代码嵌入在HTML中,再用FTP传到服务器上就可以给别人展示一个网站。 2000年,个人主页已经不能满足好奇,在当时的网管中心管起几台机器,作起网线水晶头,用ALL……
  • scala 命令行解析

    最近接触scala,写点学习笔记。 scala语言中用于解析命令行参数的工具scopt。 Git地址:https://github.com/scopt/scopt 使用方法: 在build.sbt中添加scopt依赖: libraryDependencies += "com.github.scopt" %% "scopt" % "3.3.0" 1 libraryDependencies += "com.github.scopt" %% "scopt" % "3.3.0" 一个实用示例: val parser = new scopt.OptionParser[Config]("scopt") { head("scopt", "3.x") opt[Int]('f', "foo") a……
  • 年终荐文:一年过去,我读过的十佳好文

    朝花夕拾,美丽不褪。 本来每年都会推荐十本好书,但是今年过于忙碌,用来读书的时间尤为紧缺,翻了一会儿书柜,发现很难凑足十部新著,所以改为推荐文章。 保持阅读习惯仍然重要,悲观来说,互联网吸引大量注意力的确对专注阅读行为造成了冲击和替代,但是乐观的看,互联网拓宽了阅读的通道,让媒介更为广泛的连接到了人与信息,这亦值得庆幸。 因此,我倒是可以从Evernote里毫不费力的找出十篇文章,它们让我在今年印象深刻,以致于我非常想与你分享。 朝花夕拾,美丽不褪。 本来每年都会推荐十本好书,但是今年过于忙碌,用来读书……
  • Linux上php版本降级

    由于一个奇葩框架在新版本的php下会出各种奇葩问题,因此需要将新版本的php降级到5.4版本以下。 以下是降级脚本,复制下列代码存入downGrade.sh中,并赋予其可执行权限。然后执行downGrade.sh按提示完成操作。 php降级脚本如下: #!/bin/bash # # Original for 5.3 by Ruben Barkow (rubo77) http://www.entikey.z11.de/ # release 1 PHP5.4 to 5.3 by Emil Terziev ( foxy ) Bulgaria # Originally Posted by Bachstelze http://ubuntuforums.org/showthread.php?p=9080474#post9080474 # OK, here's how to do……
  • 程序员困境

    最近,我招聘一个内核程序员的岗位,几十个人过来面试。这些应聘者都来自优秀的大公司,不是开发芯片的,就是开发内生的操作系统的。其中有些人声称自己在内核上开发的时间至少 10 年!他们的简历美轮美奂,各种完成的项目,各种获得的褒奖。 但是绝大多数人都无法回答一个最基本的问题:当我们调用一个标准内存分配函数时,在内核中会发生什么? 别惊讶。当我请其中一位应聘者写一个简单的,基于在 glib 库中 hash 函数上搭建的 LRU 缓冲框架时,他表示压根没用过 glib。这也正是我想要的答案。我给他看了 glib hash 的 api 页面,同时……
  • 常用正则表达式大全——包括校验数字、字符、一些特殊的需求

    很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。 一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 ……
  • 关于社交这回事

    时常有人说跟我打起交道来,感觉不像普通的程序员。我不知道这到底是褒还是贬,不过原因我大致清楚,因为在普通人印象里,程序员应该是很沉闷很木讷、不善于交流的。大家不知道的是,在很长的时间里我也确实是比较沉闷和低调的,这也是选择计算机专业的部分原因。但是一个偶然的机会,改变了我对社交的认识,从此促成了我“不像程序员”的改变。 我刚工作不久,有一次和炳叔(当时炳叔是同事嘛)吃饭聊天,炳叔说的话着实吓到我了:你看美国的电影里,那些小孩,那么小就得穿着正式去参加各种活动,其实这是社交,社交这东西是得从小时候……
  • Vim极简教程:让你脱离键鼠切换的痛苦

    注:看大家对Vim仇恨极大,其实它只是一种文本操作方式,可以减少键鼠的切换,从而让编辑文本的操作更迅捷。并不等同于IDE,在我看来,它们是两个是包含关系,IDE可以有Vim编辑模式。Vim或许可以通过一些插件实现部分IDE的功能,但不能说Vim是IDE。 写之前,脑子里觉得可以最常用操作的来熟悉Vim,内容不多,写了一半确发现,即使是最常用的操作,讲完也要写好多,已经不能叫什么极简教程了,不过既然写了,就这样吧 都说Vim很难学,是的,相对于鼠标来讲,肯定是超难学了。但它的好处真的非常多,特别是对于敲代码的同学。关于这些问……
  • 谷歌Gmail有多厉害 很多你都不知道

    我记得我们曾经讨论过一个问题,如果部分谷歌服务先回国,你会希望哪些服务先回来。许多网友留言称,希望 Gmail 先回来,其他随意。 有些人可能不知道 Gmail 有多方便,它都有些什么丰功伟绩。今天,我们带大家来了解一下。 Gmail 于 2004 年 4 月 1 日诞生,当时许多人认为这是一个愚人节玩笑,然而并不是。它的到来,改变了多少人使用邮箱的习惯,也抹杀了多少其他的邮箱服务。 Gmail 到来的时候,谷歌提供了高达 1TB 的免费存储空间,作为对比,雅虎邮箱只提供 4MB,微软 Hotmail 只提供 2MB,Gmail 的到来搅乱了邮箱服务市场一池水……
  • 周鸿祎:我反复阅读的几本书

    很多朋友在微博微信后台问我看什么书,让我推荐一些。我看的一些书在平时的演讲中其实都会说,比如《创新者的窘境》、《定位》以及《柔道战略》等等。今年也看了一些新书,这里一起推荐一下。 《创新者的窘境》、《创新者的解决方案》——这两本书是美国讲颠覆式创新的经典教材,讲的特别深入浅出。看完后我觉得,颠覆式创新一点不神秘,特别简单,颠覆式创新是马后炮式的总结。所有颠覆式创新刚开始都是微创新,在刚开始做出来的时候都是在一些细节改进。但当你坚持不断的持续微创新,产生了足够的积累,最后就能够形成颠覆式创新。 《定……
  • Java8 简明教程

    Java并没有没落,人们开始认识到这一点 欢迎阅读我编写的Java 8介绍。本教程将带领你一步步认识这门语言的所有新特性。通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和可重复注解。在这篇教程的最后,你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。 没有大段的废话,只是一些带注释的代码片段,望君喜欢。 接口中的默认方法 Java 8 允许我们使用default关键字,为接口添加非抽象(non-abstract)的方法实现。这个特性又被称为扩展方法。下面是我们……