Swoole - PHP asynchronous programming framework | Swoole



Swoole - PHP asynchronous programming framework | Swoole

Enable PHP developers to write high-performance, scalable, concurrent TCP, UDP, Unix socket, HTTP, Websocket services in PHP programming language without too much knowledge about non-blocking I/O programming and low-level Linux kernel.

Get started

Read full article from Swoole - PHP asynchronous programming framework | Swoole


Top Redis Headaches for Devops - Client Buffers



Top Redis Headaches for Devops - Client Buffers

Redis provides a wide variety of tools directed at improving and maintaining efficient in-memory database usage. While its unique data types and commands fine-tune databases to serve application requests without any additional processing at the application level, misconfiguration, or rather, using out-of-the-box configuration, can (and does) lead to operational challenges and performance issues.

Despite the setbacks that have been the cause of quite a few headaches, solutions do exist, and may be even simpler than anticipated.

This series of installments will highlight some of the most irritating issues that come up when using Redis, along with tips on how to solve them. They are based on our real-life experience of running thousands of Redis database instances.

Our previous installments in this series had discussed Redis' replication buffer and timeouts. In this post we'll fill you in on yet another type of buffer that Redis maintains, the client buffer. In some cases, this bugger may prove to be the cause of many headaches when left untamed.


Read full article from Top Redis Headaches for Devops - Client Buffers


Learn Redis the hard way (in production) · trivago techblog



Learn Redis the hard way (in production) · trivago techblog

For our products, like the trivago hotel search, we are using Redis a lot. The use cases vary: Caching, temporary storage of data before moving those into another storage or a typical database for hotel meta data including persistence.


Read full article from Learn Redis the hard way (in production) · trivago techblog


8 Things You Need to Know Before a System Design Interview



8 Things You Need to Know Before a System Design Interview

Many people are afraid of system design interview as there's no certain pattern to prepare and the question is quite flexible and unpredictable. What's more, system design questions are usually open-ended so that there's no standard or correct answer, which makes the preparation process even harder.

We've spent the past whole month for this guide to tell you things you'd better know before your system design interview, and at the same time let you be more carefree as system design interview is not as hard as many people thought, certain ways can definitely help you be good at it.


Read full article from 8 Things You Need to Know Before a System Design Interview


今日头条发力海外!自研《News Master》居美国Google Play新闻类下载榜首 - 白鲸出海



今日头条发力海外!自研《News Master》居美国Google Play新闻类下载榜首 - 白鲸出海

与国内《今日头条》模式类似,在海外发行的《News Master》,也以个性化内容推荐等功能为主。通过分析用户的个人兴趣爱好,为其推荐感兴趣的新闻文章和视频内容。《News Master》的文章内容,主要来自国外的传统主流媒体和新兴的自媒体,如《镜报》、《每日快报》,《Mashable》、《Business Insider》。而它的视频内容则主要以YouTube为来源。


Read full article from 今日头条发力海外!自研《News Master》居美国Google Play新闻类下载榜首 - 白鲸出海


两个Long类型真的不能直接用>或 - 推酷



两个Long类型真的不能直接用>或 - 推酷

古人说得好—— 尽信书,则不如无书 。可能,大多数的我们在面对这个问题时,都会下意识地去Google一把,然后多家博客对比查阅,最后发现几乎所有的博文都是一致的观点:Long对象不可直接用">"或"<"比较,需要调用 Long.longValue() 来比较。于是毫无疑问地就信了。当再次遇到这个问题时,就会"很自信"地告诉别人,要用 Long.longValue() 比较。而实际呢,却不知道自己已经陷入误区!


Read full article from 两个Long类型真的不能直接用>或 - 推酷


Google发布Puppeteer 1.0 - OPEN资讯



Google发布Puppeteer 1.0 - OPEN资讯

Puppeteer 是一个 headless 自动化工具,它同时也是 Chrome 和基于 Chromium 网页浏览器的 API。Puppeteer 利用 Node.js 和 DevTools 协议,是一款良好的 Selenium WebDriver 替代品。


Read full article from Google发布Puppeteer 1.0 - OPEN资讯


articles-translator/你真的理解grok吗?.md at master · neal1991/articles-translator · GitHub



articles-translator/你真的理解grok吗?.md at master · neal1991/articles-translator · GitHub

解析日志数据时最常见的任务是将原始文本行分解为其他工具可以操作的一组结构化字段。 如果你使用 Elastic Stack,则可以利用 Elasticsearch 的聚合和 Kibana 的可视化,从日志中提取的信息(如 IP 地址,时间戳和特定域的数据)解释业务和操作问题。


Read full article from articles-translator/你真的理解grok吗?.md at master · neal1991/articles-translator · GitHub


阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了 - CSDN博客



阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了 - CSDN博客

详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。

帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。知其然,并知其所以然。把知识变成自己的


Read full article from 阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了 - CSDN博客


开发过程中沟通的禁忌



开发过程中沟通的禁忌

不幸的是,开发的复杂度,唯一有效的推测方法是技术人员根据过去的经验。而且还不是每次都管用。作为一名十几年的技术人员,我知道,根据我之前开发过或者领导的相似项目,我可以估计出现在的这些功能特征各自要多少开发时间。然而,事实情况中,每个项目在开发过程中都遇到意想不到的事情。比如block issue,人员的突发情况,沟通障碍等等。这些问题,有时在项目开始前,根本不会有所预见。


Read full article from 开发过程中沟通的禁忌


架构师之路16年精选50篇



架构师之路16年精选50篇

2016精选索引,点击标题阅读相关文章。


Read full article from 架构师之路16年精选50篇


为什么学了那么多门语言,我还是编不好这段代码_架构师之路_传送门



为什么学了那么多门语言,我还是编不好这段代码_架构师之路_传送门

3 很多人觉得不要用脚本语言入门,我觉得不一定,尤其现在就着人工智能浪潮搞机器学习的人,用 Python 入门就很好。另外,脚本语言在面试中绝对占优势。平时工作中我对 Ruby、Python、C++、和 Java 的熟练程度差不多,但是面试中使用 Ruby 或者 Python 答题,写代码的时间估计是那两者的一半。


Read full article from 为什么学了那么多门语言,我还是编不好这段代码_架构师之路_传送门


为什么学了那么多门语言,我还是编不好这段代码_架构师之路_传送门



为什么学了那么多门语言,我还是编不好这段代码_架构师之路_传送门

4 后端工程师要熟练掌握一门前端语言,前端工程师也要熟练掌握一门后端语言。倒不是为了提倡全栈或多个能力储备,而是两者的编程思维模式很不一样。知己知彼,在架构设计和解决具体问题时,才会有更精确的判断。另外,现在大前端的概念也比较流行,也就是大前端工程师能够同时掌握 Web 编程语言、iOS 和 Android 编程语言,原生技术(iOS 和 Android)和 Web 的配合会越来越紧密。


Read full article from 为什么学了那么多门语言,我还是编不好这段代码_架构师之路_传送门


分级告警策略,人性化系统监控?



分级告警策略,人性化系统监控?

监控平台发现系统异常,向系统负责人发出文字(例如,邮件/短信),色彩(有些公司,编译不过,CI平台会亮红灯),声音(有些公司,有蜂鸣器嗡嗡响,研发压力大呀)等警示,就是告警。

 

绝大部分公司,主要是通过文字发出系统异常告警信息。

 

文字告警有哪些常见的方法?

以58到家为例,目前提供了四种文字告警的方式,其成本,到达率,实时性都不一样:

  • 短信:成本高,实时性好,到达率高

  • 邮件:成本低,实时性差,到达率高

  • 钉钉/微信:成本低,实时性中,到达率中


Read full article from 分级告警策略,人性化系统监控?


#qconsf 2017 Highlights: 10 Talks That You Don’t Want to Miss | OverOps Blog



#qconsf 2017 Highlights: 10 Talks That You Don't Want to Miss | OverOps Blog

Conference season may be coming to an end, but there is still so much to learn! We spent some time looking at the #qconsf schedule and there's a lot of great talks to see. There's no way we could add them all to our "must see" list, but here's a list of highlights that we definitely don't want to miss.


Read full article from #qconsf 2017 Highlights: 10 Talks That You Don't Want to Miss | OverOps Blog


GitHub - palominolabs/jvm-ssh-groovy-shell: SSH to your JVM and use the Groovy Shell to interactively control your code.



GitHub - palominolabs/jvm-ssh-groovy-shell: SSH to your JVM and use the Groovy Shell to interactively control your code.

This is an integration between the Mina SSH server and the Groovy Shell. Using this integration, you can quickly add an SSH server to your app and be able to remotely access a Groovy shell that lets you interactively run code inside your running JVM. In other words, it's a remotely accessible REPL that's inside your JVM, thereby allowing you to inspect what's happening inside your app without having to write JMX or other ways of externally exposing management functionality.


Read full article from GitHub - palominolabs/jvm-ssh-groovy-shell: SSH to your JVM and use the Groovy Shell to interactively control your code.


CLR vs JVM: How the Battle Between .NET and Java Extends to the VM-Level | OverOps Blog



CLR vs JVM: How the Battle Between .NET and Java Extends to the VM-Level | OverOps Blog

Top differences between the CLR and JVM include:

  • CLR was designed to be language-neutral, JVM was designed to be Java-specific
  • CLR was originally only Windows-compatible, JVM works with all major OSs
  • CLR uses a JIT compiler, JVM uses a specialized JIT compiler called Java HotSpot
  • CLR includes instructions for closures, coroutines and declaration/manipulation of pointers, the JVM does not
  • JVM is compatible with more robust error resolution and production monitoring tools


Read full article from CLR vs JVM: How the Battle Between .NET and Java Extends to the VM-Level | OverOps Blog


If You’re Planning to Write Java Code in 2018 Here Are the Trends You Can’t Afford to Miss | OverOps Blog



If You're Planning to Write Java Code in 2018 Here Are the Trends You Can't Afford to Miss | OverOps Blog

However, it doesn't matter which tool or method you decided to use, you need to remember that the current CI/CD workflow holds one of the biggest misconceptions in software engineering: it does not end when new code is deployed. The missing link of the CI/CD cycle is monitoring the app, and automated deployments require smarter monitoring.


Read full article from If You're Planning to Write Java Code in 2018 Here Are the Trends You Can't Afford to Miss | OverOps Blog


Moving Java Forward Faster | Mark Reinhold



Moving Java Forward Faster | Mark Reinhold

To make it clear that these are time-based re­leases, and to make it easy to fig­ure out the re­lease date of any par­tic­u­lar re­lease, the ver­sion strings of fea­ture re­leases will be of the form $YEAR.$MONTH. Thus next year's March re­lease will be 18.3, and the Sep­tem­ber long-term sup­port re­lease will be 18.9.


Read full article from Moving Java Forward Faster | Mark Reinhold


Clean Coder Blog



Clean Coder Blog

I was sitting on the throne this morning, my iPhone in my hand, idly perusing the stream of random blather that is Facebook; when my eyes landed upon this post by Kevlin Henney.

As I followed his link, and then the next, and the next, I began to realize the dreadful truth; the horrible situation we are all in. The blood drained from my face. My body shook. The iPhone nearly fell into – nevermind.

The implications of this are no less than galactolyptic.


Read full article from Clean Coder Blog


Who needs Java modules after all ? | Java Deep



Who needs Java modules after all ? | Java Deep

My answer is that X is a human being (minus platform developers, because that was a condition). We all need module system to have safer code resulting in more reliable systems resulting in better performance in the business resulting in better economy resulting in human happiness. Perhaps I went a bit too far with the conclusions but the point is that module system is needed by everyone in the industry whether they're aware of it or not. You will get it. First of all we should start with the ob(li)vious answer to the question.


Read full article from Who needs Java modules after all ? | Java Deep


What is private in Java 9? | Java Deep



What is private in Java 9? | Java Deep

Sometimes the simplest things are not as simple as they seem. After all the whole IT technology, science, engineering is nothing else but a bunch of zeroes and ones. It is just that we have a lot of them. Really a lot. If there was something new to you in this article then it should tell you that there are areas in the Java language and in the JVM that you may be interested to examine a bit more. For example:


Read full article from What is private in Java 9? | Java Deep


JVM Buzzwords Java developers should understand ~ Java EE Support Patterns



JVM Buzzwords Java developers should understand ~ Java EE Support Patterns

This article will share with you a few JVM "buzzwords" that are important for Java developers to understand and remember before performing any JVM performance and garbage collection tuning. A few tips are also provided including some high level performance tuning best practices at the end of the article. Further recommendations regarding the Oracle HotSpot concurrent GC collectors such as CMS and G1 will be explored in future articles.

Read full article from JVM Buzzwords Java developers should understand ~ Java EE Support Patterns


GitHub - jayphelps/git-blame-someone-else: Blame someone else for your bad code.



GitHub - jayphelps/git-blame-someone-else: Blame someone else for your bad code.

This changes not only who authored the commit but the listed commiter as well. It also is something I wrote as a joke, so please don't run this against your production repo and complain if this script deletes everything.


Read full article from GitHub - jayphelps/git-blame-someone-else: Blame someone else for your bad code.


OpenJDK and HashMap …. Safely Teaching an Old Dog New (Off-Heap!) Tricks



OpenJDK and HashMap …. Safely Teaching an Old Dog New (Off-Heap!) Tricks

The OpenJDK off-heap JDK Enhancement-Proposal (JEP) seeks to standardise a facility that has been available as an internal-use-only API in HotSpot and OpenJDK from Java 6. This facility has the capability to manipulate off-heap memory as efficiently as on-heap memory, but without some of the limitations on-heap memory usage brings. On-heap memory works very well for millions of short-lived objects/values, however once you attempt to place additional requirements such as billions of objects/values, you have to be more creative if you want to avoid ever-increasing GC pauses. In some cases you want to avoid pause times altogether. What off-heap offers is the capability to build "arenas" of memory storage that follow their own rules and don't impact GC pause times. Two collections that easily lend themselves to using arenas are Queue and HashMap as these have simple object life cycles, so having to write your own garbage collection is not too onerous. The benefit is collections that can grow much larger than traditional heap sizes and even larger than main memory size with trivial impact on pause times. By comparison, if your heap exceeds main memory size, your machine will become unusable, possibly requiring power cycling.


Read full article from OpenJDK and HashMap …. Safely Teaching an Old Dog New (Off-Heap!) Tricks


GitHub - jOOQ/jOOX: jOOX - The Power of jQuery Applied to W3C DOM Like JDBC, DOM is a powerful, yet very verbose low-level API to manipulate XML. The HTML DOM an be manipulated with the popular jQuery



GitHub - jOOQ/jOOX: jOOX - The Power of jQuery Applied to W3C DOM Like JDBC, DOM is a powerful, yet very verbose low-level API to manipulate XML. The HTML DOM an be manipulated with the popular jQuery

jOOX stands for jOOX Object Oriented XML. It is a simple wrapper for the org.w3c.dom package, to allow for fluent XML document creation and manipulation where DOM is required but too verbose. jOOX only wraps the underlying document and can be used to enhance DOM, not as an alternative.


Read full article from GitHub - jOOQ/jOOX: jOOX - The Power of jQuery Applied to W3C DOM Like JDBC, DOM is a powerful, yet very verbose low-level API to manipulate XML. The HTML DOM an be manipulated with the popular jQuery


Mussab Blogging!: Besign Thinking: A simple framework for incorporating “Design Thinking” into the traditional “Business Thinking” for innovation!



Mussab Blogging!: Besign Thinking: A simple framework for incorporating "Design Thinking" into the traditional "Business Thinking" for innovation!

Ever since I got introduced to the concept of Design Thinking, I had this feeling that this could be a game changer for how business innovation is done. In a nutshell, because it starts with the customer as sole for finding innovations.
This may be obvious for anyone knowing about Design Thinking fundamentals, but it may be not fully true for people coming from a Business Thinking background, where the norm is how opportunities are projected to make money, not how it will solve a customer problem.
I will try in this blog post to bridge both worlds and suggest a framework for change when it comes to innovation. How can we introduce Design Thinking in a seamless manner in current today Business Thinking.

What is wrong with the traditional business thinking approach when it comes to  innovation?



Read full article from Mussab Blogging!: Besign Thinking: A simple framework for incorporating "Design Thinking" into the traditional "Business Thinking" for innovation!


The Best Java Developer Tools for Testing and Integration | Java Code Geeks - 2018



The Best Java Developer Tools for Testing and Integration | Java Code Geeks - 2018

JRat (Java Runtime Analysis Toolkit) is a performance profiler for the Java platform. It monitors an application's execution and persists performance measurements, and then allows you to view and analyze the data using the JRat Desktop application. Use it to identify potential problem areas that may impact the performance of your application.


Read full article from The Best Java Developer Tools for Testing and Integration | Java Code Geeks - 2018


Top 10 JavaCodeGeeks posts for 2017 | Java Code Geeks - 2018



Top 10 JavaCodeGeeks posts for 2017 | Java Code Geeks - 2018

Hello fellow geeks! 2017 is coming to its end and the new year is just around the corner! This has been again an amazing year for Java and Java Code Geeks. Our community continues to grow and improve, offering top-notch programming content to developers all over the world. Thank you for your support on achieving this great milestone!


Read full article from Top 10 JavaCodeGeeks posts for 2017 | Java Code Geeks - 2018


Inspired by Actual Events: Significant Software Development Developments of 2017



Inspired by Actual Events: Significant Software Development Developments of 2017

I think it important to re-emphasize that although this is an opinion-heavy post, the opinions are not on whether a particular language, framework, or tool is "best" or "worst." Rather, the opinions come in when deciding which of these frameworks, languages, or tools had the biggest developments of the year. I could, for example, decide that some language I hated had a big year and talk about its significant accomplishments of the year even if I loathe the language. Last year, at least one reader confused my listing of languages as endorsement of that being a better language, but this post is not that at all. Instead, this is a post of significant developments during 2017 in the software development world that I'm aware of. I obviously cannot be aware of every major software development happening in 2017 and welcome any feedback about major developments of 2017 in the world of software development.


Read full article from Inspired by Actual Events: Significant Software Development Developments of 2017


Use Matchers for Preconditions and Postconditions | Java Code Geeks - 2018



Use Matchers for Preconditions and Postconditions | Java Code Geeks - 2018

Preconditions and Postconditions

Preconditions and postconditions are a little old-fashioned, having been largely replaced by the proliferation of TDD, but I don't think they should be completely ruled out.

Preconditions are a set of assumptions that your function has about the parameters being passed into it.

This is especially useful when you accept "primitive" types, but what you actually want is considerably more restrictive than what those types provide. For example, you're accepting a string that is meant to be the path to a file. Many would argue that you should restrict it to a FilePath type of some sort that makes sure the path string is of the correct format when the object is created. I would argue that that is the ideal, but not always the pragmatic solution. Another example along those lines is taking in a FilePath, but the precondition is that the file pointed to already exists and it has the correct file extension. Creating specialty types just to ensure those preconditions will almost definitely be a pain.

Postconditions are similar to preconditions, but are a promise back to the caller that either a certain command was carried out or that the return value will be of a certain shape or format (assuming the preconditions were met).


Read full article from Use Matchers for Preconditions and Postconditions | Java Code Geeks - 2018


Best Git clients for Mac - My Awesome Mac



Best Git clients for Mac - My Awesome Mac

Without a doubt, Git is one of the most powerful tools that we developers have when writing code, today is perhaps the version control system that we all use almost by default, and although it can be used 100% from the terminal, it is always good to have at hand a good client with graphical interface, allowing you to perform tasks in a faster and more comfortable way.


Read full article from Best Git clients for Mac - My Awesome Mac


Decentralization in Bitcoin and Ethereum



Decentralization in Bitcoin and Ethereum

Compared to Ethereum, Bitcoin nodes tend to be more clustered together, both in terms of network latency as well as geographically. Put another way, there are more Ethereum nodes, and they are better spread out around the world. That indicates that the full node distribution for Ethereum is much more decentralized.

Part of the reason for this is that a much higher percentage of Bitcoin nodes reside in datacenters. Specifically, only 28% of Ethereum nodes can be positively identified to be in datacenters, while the same number for Bitcoin is 56%.


Read full article from Decentralization in Bitcoin and Ethereum


康奈尔大学最新研究:比特币存在隐形权力结构!究竟“去中心化”正在扼住谁的喉咙?



康奈尔大学最新研究:比特币存在隐形权力结构!究竟"去中心化"正在扼住谁的喉咙?

说到这,PoW 的优势已经非常明显了,它整合了比特币系统的货币发行、交易支付和验证等功能, 并通过算力竞争保障系统的安全性和去中心性。然而在 DT 君看来,其缺点也暴露无遗,其强大算力造成的资源浪费 (如电力) 历来为研究者所诟病,而且长达 10 分钟的交易确认时间使其相对不适合小额交易的商业应用。


Read full article from 康奈尔大学最新研究:比特币存在隐形权力结构!究竟"去中心化"正在扼住谁的喉咙?


JVM调优:CardTable简介 | EZLippi-浮生志



JVM调优:CardTable简介 | EZLippi-浮生志

网上关于JVM调优的文章很多,这篇文章主要介绍JVM里Card Table的作用。我们知道JVM GC可以分为MinorGC、MajorGC和FullGC,对于Mirnor GC来讲它的耗时主要由两个因素决定:

  1. 复制活跃对象的时间
  2. 扫描card table(老年代对象引用新生代对象)的时间

Java虚拟机用了一个叫做CardTable(卡表)的数据结构来标记老年代的某一块内存区域中的对象是否持有新生代对象的引用,卡表的数量取决于老年代的大小和每张卡对应的内存大小,每张卡在卡表中对应一个比特位,当老年代中的某个对象持有了新生代对象的引用时,JVM就把这个对象对应的Card所在的位置标记为dirty(bit位设置为1),这样在Minor GC时就不用扫描整个老年代,而是扫描Card为Dirty对应的那些内存区域。


Read full article from JVM调优:CardTable简介 | EZLippi-浮生志


Reset Your Mac OS X System Keychain – ankush narula



Reset Your Mac OS X System Keychain – ankush narula

After deleting the default user account and recreating it in OS X, I tried to access the System keychain and kept receiving this error message:


Read full article from Reset Your Mac OS X System Keychain – ankush narula


怎样评价猿题库? - 知乎



怎样评价猿题库? - 知乎

用一些零碎的时间去刷猿题库或者背拓词,这已经是我的习惯了,那时软件还还叫猿题库高考……

当时是为了准备高考,我到处找高考资料,然后手机上也下了很多软件,什么91淘课,问他,知乎,拓词,高考必备,菁优网,美文欣赏,元素周期表各种app……

最开始猿题库是同学推荐的,刚开始用就喜欢上了 因为确实方便特别是没事就做几道语文的字音字形病句题,英语的单选题,生物一些题……然后每次遇到错题我就看错题解析,遇到不懂的或者不熟的知识点我会截图下来,方便到时察看 最多的时候手机里有几百张截图。

因为毕竟是在手机上刷题,如果不是摆张桌子和草稿纸,那就确实不好做一些计算题。而我一般做题也是随性而为,没有笔计算的时候,就做那些只需要思路的题,用化学术语来说,就是只定性分析,不定量计算,遇到要计算的就跳过。

我认为各种知识点毕竟也是会触类旁通的,看一下其他省份的出法与考点,长长见识,说不定某一年本省份就会 给出一定背景材料出到同样的内容。

对了……还有一点。就是猿题库很方便找到各省市历年的高考卷,这在别的app上我暂时还没发现比猿题库还方便的。对于高三的学生,可以找一个周末,去研究一下自己省这几年的高考卷,尝试分析一下它的大致方向……

虽然这些所谓的方向那些老师和专家也会讲,但是你自己分析出来的肯定是比较适合你的。早一点分析就能越早知道自己剩下时间的努力方向……对于高考……我们要做个有心人。

Read full article from 怎样评价猿题库? - 知乎


从2.4万篇文章中挑出的最棒的 JavaScript 学习指南(2018版)



从2.4万篇文章中挑出的最棒的 JavaScript 学习指南(2018版)

原文作者研究了近2.4万篇 JavaScript 文章得出这篇总结,全文包含学习指南、新人上手、Webpack、性能、基础概念、函数式编程、面试、教程案例、Async Await、并发、V8、机器学习、数据可视化、调试、单元测试等章节,非常适合用于对自己 JavaScript 技术栈的比对,用于查漏补缺,适合收藏阅读。有删减。文中如有错误,欢迎评论指出。

如果你对 React 关注较多,也可以移步这里查看 从18000篇文章中脱颖而出45个最棒的 React.js 学习指南(2018版)

在过去的一年间(2017年),我们对比了近24000篇 JavaScript 文章,并从中挑选出了最好的55篇。

我们做了这个目录,认为阅读有经验的程序员写的文章是一个很好的学习方式。在学习了一两门课程之后,您可能在构建和发布实际应用时面临许多挑战。

通过这个目录,您可以更轻松地找到去年的最佳 JavaScript 教程,在这里有经验的开发人员会分享他们学习 JavaScript 的课程、见解和遇到的错误。


Read full article from 从2.4万篇文章中挑出的最棒的 JavaScript 学习指南(2018版)


无处不在的Python – ThoughtWorks洞见



无处不在的Python – ThoughtWorks洞见

对于复杂的系统管理工作,目前流行的配置管理工具,如Fabric,Ansible,Saltstack等,可以让运维人员使用几行命令,让成百上千台服务器俯首帖耳。随着DevOps运动的发展,"基础设施即代码"的理念越来越深入人心,借助于molecule或者testinfra这样的工具,开发者可以像运行单元测试一样,对基础设施的配置进行测试。


Read full article from 无处不在的Python – ThoughtWorks洞见


安吉・弗格森:IT曾是女性主导的行业 – ThoughtWorks洞见



安吉・弗格森:IT曾是女性主导的行业 – ThoughtWorks洞见

弗格森:某名为《当女性停止编程》的研究指出,个人计算机最初进入市场时,其营销方向是男孩的玩具,所以美国、欧洲、澳洲的大多数家庭都会把电脑放在男孩子的房间。我们准备考大学时,卧室里有电脑的男孩对计算机更熟悉,技能更熟练,所以选择计算机专业的学生往往是男生,而最终从事这一行业的人也多为男性。我认为,市场营销,包括整个社会从一开始就建立了"计算机属于男性领域"的刻板印象,但这一假设并不成立。在计算机早期应用阶段,程序员往往是女性,而计算机主要用于行政工作——传统女性主导的领域。这样看,男女工作的选择更多受社会思维观念影响,而非男性真的做不好行政工作,或女性不能胜任IT岗位。


Read full article from 安吉・弗格森:IT曾是女性主导的行业 – ThoughtWorks洞见


迟到的 2013,2014,2015,2016,2017 技术小记



迟到的 2013,2014,2015,2016,2017 技术小记

以前的我,学了很多技术,做了很多项目,但是自己的核心竞争力是什么,总是有些模糊。感谢我的猿题库(和老板),给了我这么多复杂又富有挑战的需求和任务,我逐渐找到了答案:

把复杂的事情做简单,用最小最简单的理念把最大最复杂的世界规整起来,关注问题的本质,高效持续的解决问题。

趁着自己还记得住,用几句话记录一下猿题库曾经搞过的一些有意思的东西,省略了很多细节,不知道还有没有机会再补。


Read full article from 迟到的 2013,2014,2015,2016,2017 技术小记


区块链究竟是什么鬼东西?一张漫画秒懂



区块链究竟是什么鬼东西?一张漫画秒懂

区块链技术是指一种全民参与记账的方式。所有的系统背后都有一个数据库,你可以把数据库看成是一个大账本。目前是各自记各自的账。


Read full article from 区块链究竟是什么鬼东西?一张漫画秒懂


转眼人到中年:前端老程序员无法忘怀的一次百度电话面试 - 程序猿小卡的前端专栏 - SegmentFault



转眼人到中年:前端老程序员无法忘怀的一次百度电话面试 - 程序猿小卡的前端专栏 - SegmentFault

一个多小时的面试,问了很多问题,事后稍事整理记录了下来,主要是围绕JavaScript展开。

JS部分:

  1. JS是如何实现继承的?
  2. object的prototype是什么?(接上一个问题)
  3. JS如何实现数据以及功能的封装。(即类是如何实现的)
  4. 如果一个标签里面包含了10000个image,如何有效地对这10000个image实现事件绑定,比如说click事件。(考察事件冒泡机制)
  5. 假设现在有对象A、B,A对象绑定了S事件,如何对B对象也绑定S事件?(其实不清楚)
  6. 如何实现跨域请求?你知道的有多少种方法?各有什么优缺点?
  7. 当使用隐藏框架实现跨域请求时,如果框架页跟当前页不属于同个父域,是否可以实现跨域?
  8. 如何实现私有变量?说出一种方法即可。
  9. 函数闭包使用得多吗?什么情况下需要使用函数闭包?
  10. 当某个事件发生时,如果获得事件发生的对象。(ff和ie不同)
  11. 当绑定事件时,this指针指向的是?
  12. 当为document绑定事件时,this指针指向的是?
  13. 发送ajax请求有多少个步骤?如何判定发送成功?(readyState和onreadystatechange)
  14. 表示请求成功返回的状态码是多少?你还知道哪些状态码?分别表示什么意思?


Read full article from 转眼人到中年:前端老程序员无法忘怀的一次百度电话面试 - 程序猿小卡的前端专栏 - SegmentFault


Google Brain陈智峰:TensorFlow可以用来做什么?



Google Brain陈智峰:TensorFlow可以用来做什么?

深度学习这几年非常流行,在上面这张图中,我们可以看到在 Google 上搜索"深度学习"的请求在过去 7、8 年间大约增长了 100 倍。从这个侧面也反映出业界对这个技术的关注程度迅速提高。大家都想知道,深度学习是什么?它能够为我们做什么?我们可以怎么来应用它?


Read full article from Google Brain陈智峰:TensorFlow可以用来做什么?


测试矩阵 – ThoughtWorks洞见



测试矩阵 – ThoughtWorks洞见

"单元测试,集成测试,端到端测试,安全测试,性能测试,压力测试,契约测试,冒烟测试,验收测试,API测试,UI测试,兼容性测试……"

不知道你是不是像我一样,曾被这些各种各样的"测试"搞得晕头转向。作为一个有追求的开发人员,保证所写的程序、所构建的系统具备良好的质量自然是分内之事。但是面对这些千奇百怪的测试难免会望而却步,只能劝自己一句"专业的事情还是交给专业的人去做吧",然后把测试的工作一把推给QA,闷头写自己的代码去了。

不光是测试种类众多,每个人对于某一个测试的理解也都不一样。就拿大家最熟悉的"单元测试(unit testing)"来举例,问题的关键就被聚焦到了"到底如何才算是一个单元(unit)?"有人说是一个方法,有的人说是一个类,有的人说都不对,应该是一个最小的业务单元(至少是API级别的)。还有人提出了Integration Unit Test的概念,即集成级别的单元测试。


Read full article from 测试矩阵 – ThoughtWorks洞见


phantomJs之殇,chrome-headless之生 – ThoughtWorks洞见



phantomJs之殇,chrome-headless之生 – ThoughtWorks洞见

Google 最近放出了终极大招——Puppeteer(Puppeteer is a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome.)

类似于webdriver的高级别的api,去帮助我们通过DevTools协议控制无界面Chrome。

在puppteteer之前,我们要控制chrome headless需要使用chrome-remote-interface来实现,但是它比 Puppeteer API 更接近低层次实现,无论是阅读还是编写都要比puppteteer更复杂。也没有具体的dom操作,尤其是我们要模拟一下click事件,input事件等,就显得力不从心了。


Read full article from phantomJs之殇,chrome-headless之生 – ThoughtWorks洞见


phantomJs之殇,chrome-headless之生 – ThoughtWorks洞见



phantomJs之殇,chrome-headless之生 – ThoughtWorks洞见

技术雷达快讯:自2017年中以来,Chrome用户可以选择以headless模式运行浏览器。此功能非常适合运行前端浏览器测试,而无需在屏幕上显示操作过程。在此之前,这主要是PhantomJS的领地,但Headless Chrome正在迅速取代这个由JavaScript驱动的WebKit方法。Headless Chrome浏览器的测试运行速度要快得多,而且行为上更像一个真正的浏览器,虽然我们的团队发现它比PhantomJS使用更多的内存。有了这些优势,用于前端测试的Headless Chrome很可能成为事实上的标准。


Read full article from phantomJs之殇,chrome-headless之生 – ThoughtWorks洞见


聊聊 2018 年后端技术趋势 - Swoole开源项目 - SegmentFault



聊聊 2018 年后端技术趋势 - Swoole开源项目 - SegmentFault

Go 语言越来越热门,很多大型互联网公司后端正在转向 GO 。Java 圈知名的服务化框架 Dubbo 也宣布转型异步模式。这是一个大趋势,异步模式已经被市场验证和认可。

在 Web 服务器选择上,几年前大部分人就开始选择异步非阻塞的 Nginx,而不是同步阻塞的 Apache。就是因为 Nginx 这样的异步程序,它的适应性更好、并发能力更强。现在在后端业务开发编程方面,技术力量强的团队已经开始将技术栈从同步模式切换为异步了。

同步阻塞模式存在较多缺陷,并发能力弱、适应性差、慢速请求导致服务不可用。如:后台接口中调用第三方 API 的场景,同步模式效果极差。过去那些使用 Java、PHP、C++、Python、Ruby 语言开发的同步阻塞模式框架,用的人越来越少。

Node.js

虽然 Node.js 也很热门,很流行,但仍然很少见到企业将 Node.js 作为公司后端方面的主要编程语言。C++、Java、PHP、Python 语言同样也有一些类似的方案,包括 Swoole-1.0 也是基于类似于 Node.js 的异步回调模式。

本质原因是异步回调的技术方案,以及在它之上所做的一些优化方案,包括 Promise、Future、Yield/Generator、Async/Await 等,改变了程序开发的风格和习惯。如果要使用这些技术,那么工程师需要额外学习这些关键词和函数的使用方法。

使用这些技术方案是无法兼容已有程序的。可以说研发成本巨大,难以平滑过渡。影响了异步回调技术栈的普及。这种编程模式很难让所有人都接受。


Read full article from 聊聊 2018 年后端技术趋势 - Swoole开源项目 - SegmentFault


免费知识哪里来——Arxiv使用指南 – ThoughtWorks洞见



免费知识哪里来——Arxiv使用指南 – ThoughtWorks洞见

arxiv设计的初衷是一群物理学家们想要交流自己将要发表的论文,可以想象一下,在上世纪九十年代,人们用的还是软盘(包括5.25吋软盘和3.5寸什么的,存储空间可以说以KB计算),邮箱也不例外,投稿高峰期分分钟几百个KB的邮箱就会被文章塞满。Paul Ginsparg一看这不行,论文如果想要很好的被分享并审核,大约是需要集中存储的,就在1991年于LANL(http://www.lanl.gov/ 洛斯阿拉莫斯国家实验室)建立了arxiv的雏形,如下图所示。


Read full article from 免费知识哪里来——Arxiv使用指南 – ThoughtWorks洞见


When can my baby take a bubble bath? | BabyCenter



When can my baby take a bubble bath? | BabyCenter

Bubble bath formulas, as well as strong soaps that contain deodorants or potent scents, can irritate the opening of your baby's urethra (where urine comes out) if the soap is not rinsed off completely. "This makes it painful to urinate so the child ends up holding the urine and voiding incompletely, which can lead to UTIs," says Shelly J. King, a pediatric urology nurse practitioner at the James Whitcomb Riley Hospital for Children in Indianapolis.

According to the American Foundation for Urologic Disease, girls are more likely to get UTIs. In boys, UTIs occur almost exclusively in those younger than six months who are uncircumcised. To prevent UTIs in girls and boys:

  • Don't let your child soak in a tub full of soapy water or bubble bath.
  • If your child is toilet trained, encourage her to urinate after bathing, This will empty her bladder of any bacteria that could lead to a UTI.
  • If your child is prone to UTIs, or complains that urinating is painful after a bubble bath, avoid bubble baths altogether until puberty or at least until your child can thoroughly rinse her own bottom.


Read full article from When can my baby take a bubble bath? | BabyCenter


REDUCE LONG GC PAUSES – GC easy – Universal Java GC Log Analyser



REDUCE LONG GC PAUSES – GC easy – Universal Java GC Log Analyser

If your application's object creation rate is very high, then to keep with it, garbage collection rate will also be very high. High garbage collection rate will increase the GC pause time as well. Thus, optimizing the application to create less number of objects is THE EFFECTIVE strategy to reduce long GC pauses. This might be a time-consuming exercise, but it is 100% worth doing. In order to optimize object creation rate in the application, you can consider using java profilers like JProfiler, YourKit, JVisualVM….). These profilers will report


Read full article from REDUCE LONG GC PAUSES – GC easy – Universal Java GC Log Analyser


Best Gifts for 3-Year-Olds | Parents



Best Gifts for 3-Year-Olds | Parents

Memory Games

Why he'll love it: These days, your child can sit still for a bit longer and take turns -- the perfect time to introduce him to board games like Concentration, which build memorization skills. 

Why experts love it: "Children notice and ask questions about similarities and differences at this age, and they're also building problem-solving skills," says Adair. "This is the perfect time to introduce this type of game." 


Read full article from Best Gifts for 3-Year-Olds | Parents


8 Best Toys for 3-Year-Olds 2018



8 Best Toys for 3-Year-Olds 2018

For the budding Neil deGrasse Tyson. Dr Golinkoff says: "When it comes to puzzles, start easy and increase the number. I work in spatial learning and when children know words like "over," "under," "through," "next to," and "beside" it feeds into understanding of spatial tasks and that correlates with mathematical ability. Again, here, parent should follows the child's direction. If you see a child struggling with a piece, parents should say, try turning it. Don't tell them what to do, but offer helpful advice."


Read full article from 8 Best Toys for 3-Year-Olds 2018


Toy Weapons for Toddlers: Guns, Swords, and Axes, Oh, My!



Toy Weapons for Toddlers: Guns, Swords, and Axes, Oh, My!

-You never hit people with toy weapons. Next, while we do allow shooting of people with toys in a pretend play way–who didn't play cow boys and Indians as a kid?–, swords hit other swords not people, and projectiles point away from people, etc. It should be understood that even a toy can hurt someone. Hitting in general is simply not allowed.

-Use every weapon as an educational opportunity. It's all well and dandy to claim weapons have real life uses, but you also need to teach your toddler those uses. With each new toy be sure to talk about what that weapon is and isn't used for. These may seem like lofty concepts for a toddler, but they sink in even if they may not be fully grasped until much later.


Read full article from Toy Weapons for Toddlers: Guns, Swords, and Axes, Oh, My!


再谈API GateWay服务网关(1.22)_人月神话_新浪博客



再谈API GateWay服务网关(1.22)_人月神话_新浪博客

前面在谈微服务架构的时候,我博客上转过Chris Richardson 微服务系列中对微服务网关的描述:

通常来说,使用 API 网关是更好的解决方式。API 网关是一个服务器,也可以说是进入系统的唯一节点。这与面向对象设计模式中的 Facade 模式很像。API 网关封装内部系统的架构,并且提供 API 给各个客户端。它还可能还具备授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等功能。下图展示了一个适应当前架构的 API 网关。

Read full article from 再谈API GateWay服务网关(1.22)_人月神话_新浪博客


Option+Click Everything: 15 OS X Tricks Enabled with the Option Key



Option+Click Everything: 15 OS X Tricks Enabled with the Option Key

  • Reveal Wi-Fi information by Option+clicking the Wi-Fi symbol in the menu bar.
  • Option-click the Bluetooth icon in the menu bar to get more information.
  • Choose a different output and input by Option+clicking the volume icon in the menu bar.
  • Turn off Notification Center by option-clicking the notifications bar.
  • Immediately go to the "System Information" by option-clicking the Apple icon.
  • Option-click to free-resize windows.
  • Open all subfolders with an Option+click.
  • Resize all columns in Finder with Option+double-click on the column selector.

  • Read full article from Option+Click Everything: 15 OS X Tricks Enabled with the Option Key


    Holiday Gift Guide 2017 - Best in robots and interactive toys - Washington Times



    Holiday Gift Guide 2017 - Best in robots and interactive toys - Washington Times

    Santa's scoop: Spin Master delivers a near life-size version of the orb-shaped droid (at least for youngsters) that co-starred in the latest "Star Wars" films that looks and acts like it was taken right from Mr. Dameron's modified X-Wing.

    Forget that puny, palm-sized Sphero model of BB-8, this guy rolls around at 14 inches tall and will make Padawan's eyes double in size at his antics.

    Authentic sound effects have him chirping and whirring as he interacts with the owner through three modes — radio-controlled, follow me and voice command.


    Read full article from Holiday Gift Guide 2017 - Best in robots and interactive toys - Washington Times


    git常用命令清单



    git常用命令清单

    还在使用 svn 的小伙伴们,赶快上车吧~~ 不然就来不及了 😏


    Read full article from git常用命令清单


    短网址(short URL)系统的原理及其实现



    短网址(short URL)系统的原理及其实现

    你有没有发现,我们的任务中出现长 URL 就会比较麻烦?如果有一个短址生成器就好了。虽然市面上有很多,但是我们可以重复发明一个轮子,利用这个机会尝试一下简单的 Web 全栈开发。


    Read full article from 短网址(short URL)系统的原理及其实现


    Six tech topics for software engineers to watch in 2018 - TechRepublic



    Six tech topics for software engineers to watch in 2018 - TechRepublic

    Couchbase is a database technology that I've recently become quite interested in for its multiple platform integration and ability to synchronize data on more than one device in lightning speed through a server gateway.


    Read full article from Six tech topics for software engineers to watch in 2018 - TechRepublic


    create eclipse project with gradle - theJavaGeek



    create eclipse project with gradle - theJavaGeek

    After we have compiled java source code and built necessary files, we want to import the project in eclipse and then continue working with it. But only built code will not be able to get imported in eclipse. Eclipse needs a .project, .classpath files and .settings folder which is essential for project to be recognized as eclipse project. Gradle eclipse plugin helps us create eclipse project with gradle. We simply need to add the plugin in build.gradle file as below.


    Read full article from create eclipse project with gradle - theJavaGeek


    Dashes and hyphens



    Dashes and hyphens

    The character commonly known as hyphen originated in early typewriters. The character repertoire had to be kept small, so several characters such as hyphen, en dash, em dash, and minus sign were lumped together. In modern character code standards, the character is called "hyphen-minus" to reflect its ambiguity, but it's really more ambiguous than the name suggests. It is best to call it "Ascii hyphen".


    Read full article from Dashes and hyphens


    谷歌傻瓜式深度学习工具来了! 李飞飞&李佳里程碑式大招



    谷歌傻瓜式深度学习工具来了! 李飞飞&李佳里程碑式大招

    谷歌的两位AI明星女科学家——李飞飞和李佳联合宣布,谷歌正式推出Cloud AutoML,通过在网页上选定你的需求(比如"我要一个能够识别客厅的AI模型")、再上传少量素材(比如"100张客厅的照片"),系统就可以自动生成这个AI模型!

    这是自从李飞飞和李佳加入谷歌后一个里程碑式的大招,据两人介绍,目前CloudAI团队推出了10多个AI产品,超过1万家公司在使用。


    Read full article from 谷歌傻瓜式深度学习工具来了! 李飞飞&李佳里程碑式大招


    HashMap1.8源码解读 | 记忆碎片



    HashMap1.8源码解读 | 记忆碎片

    HashMap是Map的一个Hash表类型的实现,由于Hash表的常数时间内的寻址特性,使得HashMap可以在常数的时间内执行get(key), set(key, value)方法。HashMap支持存储key和value为null的元素。

    HashMap有两个非常重要的初始化参数:initial capacity和load factor。initial capacity决定了存储hash(key)的返回值的bucket。因为HashMap是使用了数组加链表的形式进行元素的存储的(1.8之后增加了红黑树的支持,当链表长度大于8之后,会将链表进行树化)。

    load factor是另一个重要的指标,它标示了这个HashMap什么时候需要扩容,默认值是0.75.举个例子,假如初始容量为100,则当hash(key)的返回值达到75个的时候,该HashMap需要扩容,并rehash,扩容后的大小是扩容前的两倍。load factor只和填充的bucket有关,而和该bucket对应的存储了多少个Node无关,即使该bucket只存了一个,也会将填充数+1。因此,如过initial capacity * load facotr > entry数量,则HashMap不会进行rehash。因此,如果预先知道entry的数量,计算相应的capacity值,有利于提高存取效率。


    Read full article from HashMap1.8源码解读 | 记忆碎片


    【译文】Apache HAWQ:MPP的进化 | 记忆碎片



    【译文】Apache HAWQ:MPP的进化 | 记忆碎片

    Apache HAWQ(incubating)的第一个版本受益于ASF(Apache software foundation)组织,通过将MPP(Massively Parallel Processing)和批处理系统(batch system)有效的结合,在性能上有了很大的提升,并且克服了一些关键的限制问题。一个新的重新设计的执行引擎在以下的几个问题在总体系统性能上有了很大的提高:

    • 硬件错误引起的短板问题(straggler)
    • 并发限制
    • 存储中间数据的必要
    • 扩展性
    • 执行速度

    Pivotal HAWQ的开发工作基于GreenPlum数据库的一个分支,至今(2016年8月)已经有超过3年了。最主要的目的就是在Hadoop集群上运行SQL语句查询存储于HDFS上的数据。在三年前的第一个公开的发行版中已经介绍了HAWQ的很多改进手段。但是对于查询执行引擎来说,Pivotal HAWQ仍然使用的是和GreenPlum一样的架构——MPP执行引擎。


    Read full article from 【译文】Apache HAWQ:MPP的进化 | 记忆碎片


    vegasbrianc/github-monitoring: Monitor your GitHub Repos with Docker & Prometheus



    vegasbrianc/github-monitoring: Monitor your GitHub Repos with Docker & Prometheus

    If you would like to change which targets should be monitored or make configuration changes edit the /prometheus/prometheus.yml file. The targets section is where you define what should be monitored by Prometheus. The names defined in this file are actually sourced from the service name in the docker-compose file. If you wish to change names of the services you can add the "container_name" parameter in the docker-compose.yml file.


    Read full article from vegasbrianc/github-monitoring: Monitor your GitHub Repos with Docker & Prometheus


    An Introduction to Hollow JARs - DZone Java



    An Introduction to Hollow JARs - DZone Java

    The main benefit comes from the fact that the JAR component of the Hollow JAR deployment pair won't change all that frequently. While you could expect to deploy new versions of the WAR half of the deployment multiple times per day, the JAR half will remain static for weeks or months. This is particularly useful when building up layered container images, as only the modified WAR file needs to be added as a container image layer.

    Likewise, you may also reduce build times with technologies like AWS autoscaling groups. Because the JAR file doesn't change often, this can be baked into an AMI, while the WAR file can be downloaded as an EC2 instance is deployed through the scripting placed into an EC2 user data field.


    Read full article from An Introduction to Hollow JARs - DZone Java


    Core Java Concurrency - DZone - Refcardz



    Core Java Concurrency - DZone - Refcardz

    Publishing an object is making its reference available outside of the current scope (for example: return a reference from a getter). Ensuring that object is published safely (only when it is fully constructed) may require synchronization. The safe publication could be achieved using:


    Read full article from Core Java Concurrency - DZone - Refcardz


    请问地震包在哪里买? | 加拿大家园论坛



    请问地震包在哪里买? | 加拿大家园论坛

  • 24份水water rations (5年有效期)
  • 24份400卡路食物food rations of 400 calories (5年有效期)
  • 20粒水化片water purification tablets
  • 110升水water carrier
  • 4 保毯thermal blankets
  • 8 12小取暖袋12-hour hand/body warmers
  • 4 急雨披emergency rain ponchos
  • 4 12小光棒12-hour emergency light sticks
  • 1 收音/手筒 (池)crank radio/flashlight (no batteries)
  • 2 急口哨emergency whistles
  • 1 盒克牌playing cards(找,打,解情?)
  • 1 卷 tape
  • 4 防罩dust masks
  • 1 把多功能刀multi-function knife
  • 1 盒防水火柴 matches
  • 2 皮手套 leather work gloves
  • 1 地面篷布ground tarp
  • 1 根撬棒crow bar
  • 1 尼nylon rope: 15.24米 (50 ft.)
  • 1 本填色colouring book(孩子也要解解)
  • 1 盒pack of crayons
  • 2 卷手toilet paper
  • 12 片巾wet wipes
  • 2 垃圾袋waste bags
  • 6 片生巾sanitary napkins
  • 9 可保袋ziplock bags
  • 4 根牙刷toothbrushes
  • 2 管牙膏toothpaste
  • 1 拉杆箱large carrying case with telescoping handle and wheels
  • 1 62件急救包62-piece first aid kit

  • Read full article from 请问地震包在哪里买? | 加拿大家园论坛


    How Java thread maps to OS thread? – Unmesh Joshi – Medium



    How Java thread maps to OS thread? – Unmesh Joshi – Medium

    JVM thread maps to OS thread is a commonly read statement. But what does it really mean?. We create Thread object in java and call its start method to start new thread. How does it start OS thread? and how the run method of the Thread object is attached to the OS thread that is executed?


    Read full article from How Java thread maps to OS thread? – Unmesh Joshi – Medium


    Open-sourcing RacerD: Fast static race detection at scale | Engineering Blog | Facebook Code



    Open-sourcing RacerD: Fast static race detection at scale | Engineering Blog | Facebook Code

    At Facebook we have been working on automated reasoning about concurrency in our work with the Infer static analyzer. RacerD, our new open source race detector, searches for data races — unsynchronized memory accesses, where one is a write — in Java programs, and it does this without running the program it is analyzing. RacerD employs symbolic reasoning to cover many paths through an app, quickly.


    Read full article from Open-sourcing RacerD: Fast static race detection at scale | Engineering Blog | Facebook Code


    PVS-Studio 2018: CWE, Java, RPG, macOS, Keil, IAR, MISRA



    PVS-Studio 2018: CWE, Java, RPG, macOS, Keil, IAR, MISRA

    2018 year is approaching and it's time to think about new directions for development of our PVS-Studio static analyzer. At the moment, the greatest concern for us is the Java language support. In addition, we are considering the possibility of supporting IBM RPG language. It is no less interesting for us to develop the analysis of C, C++, and C# code in terms of detecting potential vulnerabilities. Also we'd like to support the analysis of C and C++ code on the macOS platform and, finally, to complete a support for compilers from Keil and IAR. Definitely, we'll not escape anywhere from the support of a MISRA standard. A lot is listed, and the next 2018 year is not enough period of time for us for to fulfill all these purposes. So, let's discuss together our plans and choose the top-priority directions.


    Read full article from PVS-Studio 2018: CWE, Java, RPG, macOS, Keil, IAR, MISRA


    同行:成长路上的三人行



    同行:成长路上的三人行

    成长的路上,有时会感觉陷入了停顿,就像前行的一辆车陷在了泥地里,不管你怎么加油踩油门,它只是在原地打转而无法继续前行。这时,我们就需要有人来帮助,或推或拉或扶。

    孔子说:"三人行,必有我师"。原意中的三是虚数,泛指多人,意思是身边的任何人都可以成为我们的老师,拥有值得我们学习的地方。成长的路,本是一条越走人越少的路,但若有伙伴同行,我们会走得更远,走得更久。这就是成长路上的三人行。


    Read full article from 同行:成长路上的三人行


    如何充分“使用”研发团队新人



    如何充分"使用"研发团队新人

    面对这样的问题,行业内,我见过不少管理者,就直接丢给他一堆源码和文档,就什么也不管了。直到一个星期后才询问新人理解了多少,或者直接丢给他一个需求让他去实现。

    这样做意味着:

    1. 一个星期是出不了活的,因为你已经在一个星期后才给他任务
    2. 一个星期后,你敢100%保证他所理解的东西能帮忙到他完成你一个星期后给他的需求?很有可能,他所做的需求和这一个星期内看的东西毫无关系


    Read full article from 如何充分"使用"研发团队新人


    Netflix 的上线工具 Spinnaker



    Netflix 的上线工具 Spinnaker

    Spinnaker 是 Netflix 开源出来的持续交付工具,目的是为研发团队提供灵活的持续交付流水线,并且支持部署到测试/生产环境。Netflix 目前通过 Spinnaker 实现每天4000次的发布。它的优势在于:


    • 支持多种云平台。

      目前支持 AWS EC2(Netflix 的机器大部分都在亚马逊),谷歌云,Kubernetes,Azure,Openstack 等,目前正在支持甲骨文的物理机和 DC/OS。


    • 自动化发布。

      可以集成测试脚本进行测试,并且能够管理测试,线上环境的机器,实现动态扩容,和服务的下线。


    • 发布原子化。

      由于 Netflix 的平台已经实现微服务化,每个团队使用 Spinnaker 独立维护服务的发布,所以 Spinnaker 的设计特别适合于微服务持续交付的场景。


    • 预置了软件发布的最佳实践。

      通过脚本实现不可变基础设施,使得发布时候能够更容易的进行回滚,和扩容。当你的团队还在为每个应用写脚本支持蓝绿发布时,Spinnaker 已经提供了从界面上进行蓝绿发布,金丝雀发布等策略的配置。


    • 社区强大。

      Netflix,谷歌,微软等等都已经在社区贡献代码。


    Read full article from Netflix 的上线工具 Spinnaker


    从“导弹袭击夏威夷”谈系统设计



    从"导弹袭击夏威夷"谈系统设计

    在硬币的另一面,PC上、尤其是面对"内部客户"的操作界面似乎许久也没有更新过了。如果你去电信、煤气之类公司的柜台办业务的时候,留神看过他们的操作界面,就会发现几乎所有界面还停留在十多年前:满屏的菜单、按钮、数据,似乎开发就是一股脑儿把所有的操作按钮和数据都扔到屏幕上了,根本不用考虑用户体验。反正,每个上岗的员工都需要阅读厚厚的手册,反复练习SOP(标准操作规程)。


    Read full article from 从"导弹袭击夏威夷"谈系统设计


    十分钟了解epoll及多线程IO模型



    十分钟了解epoll及多线程IO模型

    服务端编程,首要问题是选取IO模型。即如何处理大量连接,服务更多的客户端?


    我们最早有2种解法,各有不足:

    1、阻塞IO,每个连接都需要一个线程。

        随着连接数增多,线程数剧增,系统开销太大。

    2、非阻塞IO,采用"忙轮询"的方式处理多个连接。

         空闲连接很多时,太浪费CPU。



    Read full article from 十分钟了解epoll及多线程IO模型


    请停止结对编程 – ThoughtWorks洞见



    请停止结对编程 – ThoughtWorks洞见

    Ben和Martin都总结道,我们应该停止结对,当:

    • 两人的思路不统一但无法说服对方时:我们可以考虑分开一阵,安静一下,各自用可运行的代码来证明思路的可行。这里只需要相对粗糙的代码即可。
    • 时间已经超过番茄时间而感到疲惫时:人的专注力是有限的,在Pair时非常累,特别是在能力方面存在较大差距的时候。在这时候我们可以试试番茄工作法,让大脑得到休息。
    • 注意力不集中或者有其他事务要处理时:在Pair的时候,彼此要尊重对方,不要玩手机、看其他无关的网页,除非事先取得别人的同意,否则就要等到停止结对、处理完事务后再继续。

    Read full article from 请停止结对编程 – ThoughtWorks洞见


    Four Steps to Google, Without a Degree – Always Be Coding – Medium



    Four Steps to Google, Without a Degree – Always Be Coding – Medium

    Two months into development, I released a demo online. A fledgling startup in California called CodeFire took notice as they were essentially making the same damn game, a top-down space shooter, similar to SubSpace except in 3D. Unfortunately, they communicated this to me in the form of a cease-and-desist letter. There was only one response I could give, "Sure, I'll stop — if you hire me to work on yours instead." They replied with an offer. And so I picked up and went.


    Read full article from Four Steps to Google, Without a Degree – Always Be Coding – Medium


    Labels

    Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

    Popular Posts