OAuth 2.0系列教程(一)引言
原文地址:http://tutorials.jenkov.com/oauth2/index.html
作者:Jakob Jenkov 译者:林浩 校对:郭蕾
OAuth 2.0是一个应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据或者一个基于地理的应用可以访问Foursquare的用户数据等。下面是一张阐述该概念的图:
原文地址:http://tutorials.jenkov.com/oauth2/index.html
作者:Jakob Jenkov 译者:林浩 校对:郭蕾
OAuth 2.0是一个应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据或者一个基于地理的应用可以访问Foursquare的用户数据等。下面是一张阐述该概念的图:
1.3集成开发环境(IDEs)
你完全可以用文本编辑器来写Java 程序。但是,IDE会更方便。它不仅仅可以检查你的代码语法,还可以自动填写代码,检测,和调试你的程序。另外,在你输入的时候就自动编译了,还有运行Java程序只要点击个按钮就行。这样,可以节省你很多时间。
阅读全文
1.2 Java代码规格
写正确的可运行的Java程序固然重要,但是写出的代码方便阅读和维护也是相当重要的。普遍相信一个软件80%的时间都花在维护上。而且,程序员的变动率非常的高,所以很有可能是别人在维护你的代码。如果你留下的程序源代码是清楚且简单易懂的,不管是谁都会非常感谢你。 阅读全文
1.1第一个Java程序
这个小节主要介绍的是关于Java 开发的主要步骤:写代码,转换成字节码,和运行字节码。
阅读全文
感谢看处方的汪院长和烨明,为这次活动提供了场地和零食,去年在上海的scala聚会也是看处方的汪院长发起的。这次聚会人比上次略微多一些了,而且整体水平是不断提升的。
聚石分享了来往使用scala构建通讯的一些经验,来往的IM部分采用自己的协议(有些类似spdy,要简单很多),在协议网关的实现上主要使用scala、akka,他主要分享了这个过程中踩过的一些坑。
诺铁的分享是scala集合部分,这部分内容是小中见大的,有部分内容来自《scala in depth》(顺便提一下他翻译的这本书快要出版了)。整个ppt很清晰,把Vector
的细节讲的比较透,另外还提到Set的一个细节是继承自(T)=>Boolean
这个函数类型,也就是contains
方法,比如Set(1,2,3)(1)
将返回true,这种设计确实怪异,容易误解。 阅读全文
本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》
我将会对机器学习算法的不同的实现范式进行讲解,既有来自文献中的,也有来自开源社区里的。首先,这里列出了目前可用的三代机器学习工具。
本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:许巧辉
另一个来自Google的重要工具,看起来超越了Hadoop MR——Pregel框架实现了图形计算(Malewicez et al.2010)。在Pregel中的计算是由一系列迭代组成的,被称为supersteps。图上的每个顶点都与一个用户定义的计算函数相关联;Pregel确保每个superstep在图的每条边上并发调用用户定义的计算函数。顶点可通过边发送消息,并且顶点间可交换值。这也是个全局同步——所有操作必须在用户定义的函数结束后才能继续。熟悉BSP的读者可以看出为什么Pregel是BSP优秀的例子——一组实体在用户定义的函数中使用全局锁并行计算,并且能够进行消息交换。
阅读全文
原文链接 作者: PATRICK PESCHLOW ;译者:严亮
本部分,我们将关注堆(heap) 中一个主要区域,新生代(young generation)。首先我们会讨论为什么调整新生代的参数会对应用的性能如此重要,接着我们将学习新生代相关的JVM参数。
单纯从JVM的功能考虑,并不需要新生代,完全可以针对整个堆进行操作。新生代存在的唯一理由是优化垃圾回收(GC)的性能。更具体说,把堆划分为新生代和老年代有2个好处:简化了新对象的分配(只在新生代分配内存),可以更有效的清除不再需要的对象(即死对象)(新生代和老年代使用不同的GC算法)
通过广泛研究面向对象实现的应用,发现一个共同特点:很多对象的生存时间都很短。同时研究发现,新生对象很少引用生存时间长的对象。结合这2个特点,很明显 GC 会频繁访问新生对象,例如在堆中一个单独的区域,称之为新生代。在新生代中,GC可以快速标记回收”死对象”,而不需要扫描整个Heap中的存活一段时间的”老对象”。
原文链接 ,原文作者: Javin Paul , 译者:赵峰
在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的。下面这些是我在不同时间不同地点喜欢问的Java线程问题。我没有提供答案,但只要可能我会给你线索,有些时候这些线索足够回答问题。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadLocal、Blocking Queue、Counting Semaphore和ConcurrentHashMap比较流行。
本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:许巧辉
首先,我要衷心感谢Vineet Tyagi、AVP和Impetus的创新实验室主管。Vineet对我帮助很大,并促使我写这本书。在6、7月份,每个工作日他给我3个小时的时间写作本书,这是帮助我完成本书的关键。任何学术活动都要专门花费很多时间——这时候就得加倍努力,因为我必须在工作之余写作。Vineet令写作成为我工作的一部分。
我也想对Pankaj Mittal、CTO和SVP、Impetus表示感谢,他对研发的全心支持,像我这样的研发全职工作。荣誉对他来说,就是Impetus能够有一个无支付和收入压力的研发团队。这真的释放了我并有助于我专注于研发。在IT行业工作,写书是一个艰巨的任务。感谢Pankaj实现这点及类似的活动。
阅读全文
本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:吴京润
译者注:本文是本书第一章的开头,第一章其它部分由其他人翻译。
你可能是一个视频服务提供商,而你想基于网络环境动态的选择合适的内容分发网络来优化终端用户的体验。或者你是一个政府监管机构,需要为互联网页进行色情或非色情的分类以便过滤色情页面,同时还要做到高吞吐量以及实时性。或者你是一个通讯/移动服务提供商——要么你在这样的公司工作——而你担心客户流失(客户流失意味着,老用户离开而选择竞争对手,或者新用户加入竞争对手)。你一定非常想知道前一天有哪些客户在tweeter上抱怨你的服务。或者你是个零食店主,而你非常想对你的客户做购买预测,这样你就可以为你商品做更多有针对性的促销活动,并期望销售额由此带来的增长。或者你是一家医疗保险公司,当务之急是计算某位客户明年住院的概率,以便适当的修改的保费。或者你是一家金融产品公司的CTO,而公司希望拥有实时交易/预测算法,帮助确认损益表底线。或者你为一家电子制造公司工作,而你想在试运行期间预测故障、查明故障根源,以便在后来的实际运行中有效。这要归功于大数据分析创造的新世界。 阅读全文
本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:吴京润 校对:方腾飞
我试图给人们学习大数据留下的一点深刻印象:尽管Apache Hadoop很有用,而且是一项非常成功的技术,但是这一观点的前提已经有些过时了。考虑一下这样一条时间线:由谷歌实现的MapReduce投入使用的时间可追溯到2002年,发表于2004年。Yahoo!于2006年发起Hadoop项目。MR是基于十年前的数据中心的经济上的考虑。从那时以来,已经有太多的东西发生了变化:多核心处理器、大内存地址空间、10G网络带宽、SSD,而至今,这已经产生足够的成本效益。这些极大改变了在构建可容错分布式商用系统规模方面的取舍。 阅读全文
声明:本文是《Netty 权威指南》的样章,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文。
在开始本节之前,我先讲一个亲身经历的故事:曾经有两个项目组同时用到了NIO编程技术,一个项目组选择自己开发NIO服务端,直接使用JDK原生的API,结果2个多月过去了,他们的NIO服务端始终无法稳定,问题频出。由于NIO通信是它们的核心组件之一,因此,项目的进度受到了严重的影响,领导对此非常恼火。另一个项目组直接使用Netty作为NIO服务端,业务的定制开发工作量非常小,测试表明,功能和性能都完全达标,项目组几乎没有在NIO服务端上花费额外的时间和精力,项目进展也非常顺利。
这两个项目组的不同遭遇提醒我们:开发出高质量的NIO程序并不是一件简单的事情,除去NIO固有的复杂性和BUG不谈,作为一个NIO服务端需要能够处理网络的闪断、客户端的重复接入、客户端的安全认证、消息的编解码、半包读写等等,如果你没有足够的NIO编程经验积累,一个NIO框架的稳定往往需要半年甚至更长的时间。更为糟糕的是一旦在生产环境中发生问题,往往会导致跨节点的服务调用中断,严重的可能会导致整个集群环境都不可用,需要重启服务器,这种非正常停机会带来巨大的损失。
从可维护性角度看,由于NIO采用了异步非阻塞编程模型,而且是一个IO线程处理多条链路,它的调试和跟踪非常麻烦,特别是生产环境中的问题,我们无法有效调试和跟踪,往往只能靠一些日志来辅助分析,定位难度很大。