线程

程序员启示录

最近因为项目需要在看一个开源项目的源码,这个开源项目据说在内部开发孵化了 6 年之久,前几年才开源出来。 我在看设计文档和源码中发现,它的高层设计的一致性是比较好的,但到了源码实现就显得凌乱了些。 既然是时间跨度如此长的项目,想必参与这个项目的程序员也不止一批人了,处于不同阶段的程序员都有可能参与,这样也能理解实现上的凌乱了。 看着这些有一定时间沉淀的代码,有些代码可能诞生

浏览器线程阻塞和无阻塞加载脚本的理解

一个页面,从被请求访问,到用户可以看到页面、操作页面,到最后页面完全加载完毕,中间需要经历一个相当奇幻的过程,这个过程的速度被“web性能师”孜孜不倦、前赴后继的优化。本文讨论的是其中一个优化。浏览器线程和阻塞虽然大家耳熟能详的一句话是:JavaScript是单线程的。但是:浏览器当然不是单线程的。浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲

理解Event-Loop

Event Loop(事件轮询)机制是一个经常把人搞晕的东东。我不敢说我完全明白,只是在此谈谈我的浅见。事件的处理浏览器是一个事件驱动(event-driven)架构的软件。它的UI线程中会不断产生用户事件。但是处理事件的JavaScript是单线程执行的,这是一个浏览器环境下难以改变的现状(HTML5 Web Works没有从本质上改变这个模型)。这意味着:在JavaSc

ConcurrentHashMap,一条长着熊掌的鱼

在现实开发中,不可避免地会碰到一些多线程并发访问的情况。为了解决这个问题,HashTable 和HashMap 先后诞生。问题也随之而来,使用后发现HashTable 虽然能保证线程安全但是效率低下,而HashMap 虽然效率高于hashTable 但是是非线程安全的。这个很像一个鱼与熊掌的问题,真的不可兼得吗?于是人们就考虑有没有一种及支持并发有能保证线程安全的方法。终于

产品经理须知的“技术黑话”

文章梳理了一些技术术语,以比较通俗的方式来解释和介绍,希望对于非技术背景的产品经理们有所帮助。产品经理在实际工作中经常会遇到一些“技术黑话”,这些技术语言让非技术背景的产品经理们经常不知所云,带来了一些沟通和理解的问题,这里梳理了一些但不全的技术术语,以比较通俗的方式来解释和介绍,希望对于非技术背景的产品经理们有所帮助。1. 类、对象、抽象和实例在技术的世界里,有一类编程语