分布式系统的数据结构
常用的数据结构包括:数组,队列,堆栈,链表,树(平衡二叉树,B树,Trie树,堆),哈希表,图,后缀数组,等等。其中,堆,图结构,Trie树及后缀数组解决特定问题,其它数据结构解决通用的查找,更新,删除操作。 查找,更新和删除操作一般是O(1),O(logN)或者O(N),通用的数据结果大致可分为如下三种: 1, 极端型;某些操作的算法复杂度为O(1),另外一些算法复杂度为O(N),比如有序链表查找复杂度为O(N),更新和删除为O(1); 2,...
精选技术长文、实践记录与系统化阅读
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
常用的数据结构包括:数组,队列,堆栈,链表,树(平衡二叉树,B树,Trie树,堆),哈希表,图,后缀数组,等等。其中,堆,图结构,Trie树及后缀数组解决特定问题,其它数据结构解决通用的查找,更新,删除操作。 查找,更新和删除操作一般是O(1),O(logN)或者O(N),通用的数据结果大致可分为如下三种: 1, 极端型;某些操作的算法复杂度为O(1),另外一些算法复杂度为O(N),比如有序链表查找复杂度为O(N),更新和删除为O(1); 2,...
沿着XmlBeanFactory向上追溯,可以形成上面的BeanFactory体系结构。虽然不是很全面,但是如果这个图能理解透,我相信,Spring的BeanFactory就能理解透了。之后的系列我也会以这个图为中心,深入的去学习Spring的BeanFactory。
谈到玩“等级制度”顺风顺水的企业,我首先想到的就是腾讯: 很早以前,就搞了一堆太阳月亮星星的,满足了小孩们的虚荣心,保证了大量的在线用户。 刚开始挂机挂到一个太阳,无非也就能创建个QQ群,根本谈不上什么好处。 就好比单机的俄罗斯方块,玩久了也烦,但是扔到网上加个积分排行榜,就蹦出来一片又一片的人,没日没夜的去争抢“天下第一”,虚荣心是很可怕的东西。像QQ会员最常用的功能:红名,以及各种钻石勋章、qq秀,也...
今天在网上看到一篇很有意思的文章(需翻墙),解释了几段非常有趣的 JavaScript 代码。
需求来自于,我希望可以对 lua 虚拟机中的内容做持久化,却又不希望 stop the world 。这需要利用 os 的功能,对内存做一个快照。简单的 fork 就可以达到快照的要求,但是 fork 会快照整个进程的地址空间,这不是我想要的。这两天和几位同学讨论了各种方案,比如 memcpy ,比如 fork+exec 传递 shm_open 的 fd , fork 后 munmap 不用的区域等等。最后我认为如下方案相对更满意一些。我并没有实现出来, 写 blog 只是做个记录。
切记,HTML5并不是一门凭空造出来的新语言。它的标记变化都是革新性的,不是革命性的。无论你现在使用哪个版本的HTML创建网站,你都可以说自己已经在使用HTML5了。
本想先找本算法和数据结构的书参考一下,但转念一想:不如考考自己的总结和逻辑表达能力。 loop、iterate、traversal和recursion这几个词是计算机技术书中经常会出现的几个词汇。众所周知,这几个词分别翻译为:循环、迭代、遍历和递归。乍一看,这几个词好像都与重复(repeat)有关,但有的又好像不完全是重复的意思。那么这几个词到底各是什么含义,有什么区别和联系呢?下面就试着解释一下。 循环(loop),指的是在满足条件的...
二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2)N次比较。
无论从哪个方面讲,我都觉得前端工程师是计算机科学职业领域中最复杂的一个工种。绝大多数传统的编程思想已经不适用了,为了在多种平台中使用,多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术,涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复杂。专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。
我主张浏览器应该原生提供中级API,这样才能自如地应对常见用例,同时还可以为不常见的用例留下扩展的空间。API的抽象程度太低,不利于广泛流传,更不容易引起开发社区的重视;API的抽象程度太高,由于限制的用例太专,人们要么能用,要么根本就用不了。目前来看,较新的API似乎有低级化的倾向,如此一来,开发人员在实际使用它们之前,往往需要有第三方来实现一些必要的抽象。我希望能够阻止这种趋势,好让常见用例实现起来更简单,以便人们能够立即使用它们,同时还可以对它们加以扩展。而中级API能够同时满足这两个条件。
最近有一个server在重启的时候总要花费5分钟左右来加载配置文件,导致外网服务不可用,今天和几个同事一起研究了一下,总算找到了问题所在.
数据仓库环境,ORACLE RAC,100T数据,每日归档那个量5T(对于不需要产生备份的数据,已经采用了nologging方式,以减少归档数量),如何制定备份和恢复方案?方案一:DataGuard DataGuard是性价比最高的备份和容灾方案,但是当归档超过一定规模之后,DG的恢复就成为了瓶颈,每天产生的归档无法及时恢复完,我们也尝试过很多调优的方法,包括并行恢复,都无法解决,恢复的瓶颈不在存储的吞吐量,而在于standby的恢复方式,因为恢复的...
一个同事forward过来一个, 公司某产品线遇到的一个低概率, 但长时间出现了几次的Core的bt信息, 找我帮忙分析下原因。
大家是否想了解自己服务器是否被"黑客"给盯上了?是否想知道有多少人在"关注"的你服务器的密码呢? 我们完全可以查看服务器的安全日志。
关于用户体验 用户体验并不是指一件产品本身是如何工作的(虽然这有时对用户体验具有很大的影响)。用户体验是指“产品如何与外界发生联系并发挥作用的”,也就是人们如何“接触”和“使用”它。 网站的用户体验比任何其它产品都重要。因为它是一个“自助式”的产品。没有事先阅读的说明书,没有任何操作培训或讨论会,也没有客户服务代表来帮助用户了解这个网站。 一个常用的投资收益的度量标准是转化率。通过跟踪有百分之多少的...
快过年了,最后一篇说个轻松的小故事吧。一直以来,都习惯一到家把Ipad接上充电器充电,前段时间的某天,发现充不进电,插上电源以后,没用,换个电源插口,还是没用,Ipad一直用得好好的,于是分析是充电器问题,然后把Iphone3插上试试,可以冲,但考虑到Ipad和Iphone需要的充电功率不同,仍然不能排除充电器的问题,正好Iphone也没什么电了,于是充。过一段时间,再插Ipad,发现好了。以为是临时意外,大家都知道,系统复杂了总...
说老实话,在正式开始之前,我想先交待清楚我所说的HTML5到底是什么意思。这话听起来有点搞笑:这会子你一直在说HTML5,难道我们还不知道什么是HTML5吗?大家知道,有一个规范,它的名字叫HTML5。我所说的HTML5,指的就是这个规范。但问题是,有些人所说的HTML5,指的不仅仅是这个规范,还有别的意思。比如说,用HTML5来代指CSS3就是一种常见的叫法。我可不是这样的。我所说的HTML5,不包含CSS3,就是HTML5。
以下是我写给公司运营团队的两封邮件,其中包含了一些我对公司内部职位划分和同事职业生涯规划的一些期望和建议。发到博客上,希望能让更多想要加入我们的“新人”更多地了解我们的远景蓝图。(有些涉及到内部隐私的信息已经删除了) 第一封,写作公司重新任命部门领导之后。 …… 一、成就感和快乐的源泉 我非常钦佩Google的模式,我希望每一个人能尽其所能发挥自己的特长。我希望大家能长期在这里寻找到自己事业的高点,而不是简...
在进入今天的主题之前,我们先来探讨导航的重要性,并分析一下门户网站中导航的表现。 导航直接影响到公司的财政收入 导航会给我们带来哪些好处?导航不光只是提供信息获取的途径,它的设计优劣会直接影响到整个公司财政收入。
在初学linux编程的时候,都会知道这样一个概念:当你用fork建立一个子进程,父进程的所有内容会被“完完整整”的复制到子进程中。子进程是父进程的一个clone体,除了pid不同,其余一切相同。再试想一下这样的场景:在Webserver中,首先会使用root权限启动,以此打开root权限才能打开的端口、日志等文件。然后降权到普通用户,fork出一些worker进程,这些进程中再进行解析脚本、写日志、输出结果等进一步操作。然而这里,仔细思考一下,就会发现隐含一个安全问题:子进程中既然继承了父进程的FD,那么子进程中运行的PHP或其他脚本只需要继续操作这些FD,就能够使用普通权限“越权”操作root用户才能操作的文件。