`
文章列表
<算法基础>上的贪婪算法讲的真是好啊,分析的很精到,例子也很实际,遇到了一个新问题: 日程安排,n个日程,以及数组d,d[i]表示任务i的完成期限,数组g,g[i]表示i在d[i]前完成可以获得的收益,求最大收 益序列。   n^2的方法不说了,先快排g,降序,按照g顺序把遍历到的每个i插入数组j中,用并查集记录i的位置变化,最终时间复杂度O(nlogn)+O(n)<并查集的平摊复杂度>   具体实现后面贴上,此处先mark之 八卦一下,Gilles的<算法基础>我觉得甚至比算法导论还要好,贪心以及概率算法讲的尤其好
看到一道题目,开始挺昏沉,加上翻译是在碉堡,没理解,后来大悟,这个题目编程之美上有嘛,就是个位操作统计个数的问题,easy: 一个数组A[1,n]能容纳n个数字,现将0到n这n+1个数字,随机的放入到数组中。最后会有一个数字没有进入数组。现在让你找出这个数字。但是有如下的限制,不能直接访问数组的整个元素,只能访问“A[i]的第j位”。写出代码找出该元素。能否将时间复杂度控制在O(n)。 然后一同比较最低位的1,o个数,每次去除一半的数据,得出: 线性复杂度,好了,收工。。。
        哎,javaeye的编辑器再次让我崩溃了。。 怀念总是无限,唯有黑暗,给我无名的鼓励。      海子的诗句:     风后面是风,天空上面是天空,道路前面还是道路。 ——《四姐妹》          面朝大海,春暖花 ...
写磁盘时应该注意: (引自短歌老大)直接fwrite并非不可以,只是可移植性太差。一般我们把数据写入文件都是为了进行数据交换,而直接把一个结构体用一次fwrite调用写入文件后是否可以再用一次fread正确读出取决于写入代码和读出代码编译时的字长、对齐逻辑和字节序等问题(这句话长点,大家凑合着看),严重影响可移植性。  把一个结构体写入文件时我觉得要注意以下几点: 1:要按不同域分别写入,以避免对齐方式的影响; 2:要设计好不同数据的长度,不要用sizeof来获得,以避免字长的影响; 3:要设计好字节顺序,每次写入一个字节,以避免 字节序的影响; 4:要存储逻辑结构而不是数据结构。比如 ...
参加百度的面试,面试官提了一个海量数据问题,貌似自己的回答没能让人家满意,纠结点是: 大规模数据一般先用hash来分为小的数据段,然后在内存里处理之,然而如果hash后hash值还是各不相同(及其变态的情况),怎么办?   回来思考了下,下面是自己的想法,大家说说看:   如果一遍hash后,数据还是十分单调,可以采用另一个hash函数,或者不是单纯按照hash值分类,而是按照hash后的值范围,例如,原来hash(query)%100, 现在可以1-10为一个文件,间隔10建立子数据集,应该能解决问题吧?       轻拍。。。
百度的面试题一道:   在处理磁盘数据时,需要首先将其读入内存才能进行处理。如果要读取的数据已经在内存中,则可以直接访问内存。通常来说内存是有限的,因此要读取新的数据时必须覆盖内存中一部分原有的数据。假设现在有n块同样大小的数据,内存一共可以容纳m块数据。现在给出一系列对这些数据的读取请求,要求它们必须按照给定的顺序被读取,同时要求读取磁盘的次数尽可能地少。请简述一个策略满足这样的要求。   解析:目标是最小化磁盘读取次数,分两部分:   内存中的m块数据按照LRU策略组织,由于已经给出了读取请求,或许可以进一步提高swap的效率, 磁盘上数据用B树或者其变种实现,最小化 ...
立此存念; Dana Delany < Tombstone> Kate Beckinsale Rhona Mitra <oh i just love her> Scarlett Johansson Cameron Diaz Jessica Biel   <blade> Camilla Belle  <When a Stranger Calls> Renee Zellweger <Bridget Jones's Diary>
通讯层: 封装与网络通讯 传输数据相关的API,成熟的框架有mina等 序列化/反序列化: 这个多了 gpb,json等等 rpc: 我觉得这个是更多关系业务层逻辑上的过程功能,底层的实现调用可以是通讯  序列化这些。 看了tim的文章 ,网络相关的问题在他的眼里通讯层与实际的IDC关系比较密切,也可以抽象出更多的问题,引用tim的话:   “ 目前考虑到的原因有 Connection pool作用。为了节点间更高的throughput, 通常两节点之间会使用n个固定连接来传输。n可设为CPU内核数大小。 多节点互相连接的处理。一个节点需要连接n个节点发送信息 ...
应对单点故障,SIGSEGV:   consistent hash read through cache   前者的优点不想再提了:震荡最小,常用的优化 包括,虚拟化节点,   分布式系统焦点:高并发  高性能  高可扩展 容错设计思想  分布式存储  数据的一致性(Merkle Tree)  高速读写访问   低延迟 新浪微博的处理:tweet异步处理,为了解决队列的延时问题,采用分级队列,来进一步提高异步处理的效率 sina app API设计: 安全 易用 稳定 灾难恢复
今天看很久前的新浪工程师在Qcon上的ppt,提到应对系统高峰时的应对,有以下几点异步考虑:   不同步等待, 将消息存入消息队列, 轻量级发表(貌似不相关鸟)   最近异步概念漫天飞,node里面基于事件的异步处理,erlang,scala这一票采用异步actor模式的语言框架,以及高性能的linux异步io,到系统架构级别的异步处理,层出不穷,准备深入学习各种异步的种种。。。 <未完待续>

+-的类型转换

    博客分类:
  • c++
c中变量间赋值可能会出现类型转换的情况,而+-可以进行类型转换,如下代码1:   short a = 1; a += 1L; 编译不会出错;而代码2: short b = 1; b = b + 1L; 需要进行强制类型转换,否则会编译出错: b =(short)( b + 1L);  

MongoDB初试牛刀

    博客分类:
  • DB
突然想研究下MongoDB,browser到官网,发现上面挂了个browser  shell ,大喜啊,试试
读《史玉柱谈创业》   2009-12-24 18:52:59|  分类: 读书|字号 订阅

转-reinterpret_cast

    博客分类:
  • c++
reinterpret_cast   reinterpret_cast是C++里的强制类型转换符。  操作符修改了操作数类型,但仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换。  例如:int *n= new int ;  double *d=reinterpret_cast<double*> (n);  在进行计算以后, d 包含无用值. 这是因为 reinterpret_cast 仅仅是复制 n 的比特位到 d, 没有进行必要的分析。  因此, 需要谨慎使用 reinterpret_cast.  == ============================== ...
做生意的十大禁忌: 一忌:坐门等客。经商不跑不活,商品市场瞬息万变,商品交流讲究时效性,坐门难见客。只有跑动,才能得知市场信息,找准时机,方能盈利。 二忌:没胆量。俗话说,只要有七分把握便可行动, ...
Global site tag (gtag.js) - Google Analytics