张宇(数据恢复)岳雷的微软网络课堂老徐的私房菜
上周收到分公司同事反映tribon和sem速度很慢,影响工作效率。领导派遣xx,xx还有我前去调查情况。我们在二号线并没有找到sem速度慢的实例,只找到了两个tribon的问题。经过我们采集数据并进行分析,初步给出的结论如下。一:tribon Show Surrounding Models功能缓慢问题描述:经过测试,载入模型、旋转和渲染功能都很流畅,只有在使用调取模型周围模型的功能时,会出现较慢的
最近没什么好玩的东西可以写,就写写基本的数学原理吧。数学中有两个最为常用的超越数,一个是圆周率π,一个就是e。π只要上过学的都知道,是圆的周长和直径的比值。因为自然界充满了圆形图案,所以π的发现是自然的。而e的发现就不那么简单,因为这个极具魔力的数字隐藏地非常巧妙,每次想想这个证明,都会觉得匪夷所思。也只有欧拉一样的天才才能有如此慧眼,不得不让人感叹天才真是不合逻辑的存在。我们来看看这个证明吧。e
标准的堆插入元素的算法很好理解,而且也很容易知道向堆中插入一个元素的代价是lgn。按照最常规的想法,把一个数组中所有元素添加到一个堆中,依次压入即可。压入n个元素的代价就是Sum[Log2[i],{1,i,n}]。结果等于Log2[n!].根据斯特林公式,n!在n趋向于无穷大时可以近似看成(2Pi*n)^1/2*(n/E)^n。因此,总代价可以看成n*Log2[n/E]+o(n),比O(n)的阶要
问题似乎并没有想象中严重。最初以为可以dump任意地址的64k内存,仔细看才发现只能dump紧贴在HeartBeatMessage后面的内存。因为HeartBeatMessage的地址无法控制,因此能拿到什么东西纯属撞运气。不过假设HeartBeatMessage是在堆区分配的,因为堆区的特点是会把同等大小的内存块放在一起,所以也许会拿到同等大小的结构的实例。如果是在栈区,会拿到之前的函数调用堆栈
前几天bbs上看到这样一个问题:现在有一系列的字符串S=S1, S2, ..., Sn,另外还有一系列的正则表达式或者模式P=P1, P2, ..., Pm。有什么比较好的算法来让每一个字串对应到一个模式上去吗?(如果有多个对应的则要求对应到最前面出现的模式)现在用的是最显而易见的算法:遍历S,把每一个字串Si,尝试匹配P中的每一个直到成功则记下它Pj。这样时间复杂度是n*m,有点慢。。不知道有没
回忆一下从业这些年花时间学过的技术,做一个阶段性的总结。首先写一些编程方面的东西。虽然我并非一个程序员,但是我觉得既然是在这个圈子混饭吃,一些编程技巧总是少不了的。这也是因为以下两点:1.能够获得与计算机对话的一种手段,在找不到任何可用工具的时候可以自己制作趁手的工具。或者让计算机帮助自己完成一些重复性的工作。这就好比一个整天和外国人打交道的工作如果不能流利使用外语只能说几个单词或者靠手比划是很痛
这两天搞了本x86-64汇编的白皮书,还没看完总结一下。最主要的区别,除了大家都知道的位数扩展寻址空间增大外,就是通用寄存器从8个增加到16个。多了r8~r15,不再用字母做名称,改用数字了。说真的,能想出ax,bx,cx,dx,而且每个都是有意义的英文字母的首缩写还真是挺有想象力的。x64虽然性能提升了,但是缺少了原来的浪漫气质。寄存器的数量增加导致了很多编程方法的变化。一个是统一了调用方式,统
奇偶性在很多时候可以帮助迅速判断一些问题。想到2个例子:1.国际象棋中马从一点走到另一点的步数问题:马跳到同色格需要偶数步,而跳到异色格需要奇数步。在短途跳跃的时候我们沿着直线跳跃,算出最近的大致路线,再根据奇偶性判断边界,可以非常快速的计算出步数。2.交换排序的次数问题:我们都知道,不同排序算法很大可能交换元素的次数是不同的。但是仔细观察,可以发现,无论是什么算法,只要输入序列是固定的,那么交换
这是一个很好玩的问题,也很有价值。只可惜,这是不可能的。因为实际上,这等价于一个图灵机停机问题。假设这个程序能够断定一切程序,那么他也能够判定自己。如果是最快的,返回1,否则返回0。那么可以在程序后增加一个循环,如果判定自已的结果是1,则继续循环,如果是0,立刻跳出循环。这样,就会行成一个悖论。因此,这个程序是不存在的。这也是哥德尔不完备定理的一个实例。如果一个问题无法证明,是否可以证明它无法证明
我们拿除法hash做说明,按照hash的原理很容易知道其他类别的hash都是和除法hash同构的。假设hash函数为h(k)=k mod m,即m个slot。m的取值有几个需要注意的地方:1.m不能取一个2^p的数。算法导论是这样解释的:这是因为对一个数除以2^p取余数相当于只取这个数的最低的p位,高于p位的信息就被丢弃了。这个原理很容易理解:假设把15映射到8个槽位的hash表里,即k=15 m
最近有时间,并且陆续又有人报告网络存在问题,于是又开始继续折腾这个问题。抛开错包的问题不谈,来看一下广播流量是怎么产生的。一开始的假设是某个或某些地址不停地进行全网扫描造成的。这可以解释为什么新建一个网段并没有出现错包增多的情况。按照这个思路来理解,这个发出扫描地址一定能够访问到这个网关的地址才可以。根据防火墙的规则,我可以把这个范围缩小,在这个范围内抓包就可以定位到问题源头。我决定在交换机管理网
今天装了个GPS时钟。用来给服务器同步时间。这个事本来没什么好说的,没什么难度。但是有一个地方挺好玩的,就是传说GPS中用到了相对论来调整卫星和地面时间的误差。估计大部分工程师是一辈子也遇不到这种上帝级别的bug。物理我了解的不多,基本都是一知半解。但是相对论是如何发现的?这个事情似乎更有趣,因为这个理论完全是逻辑思考所得,而非实验观察。首先,先审视一下牛顿的三大定律:第一条:F=ma这个公式逻辑
都说,没出过事故的管理员人生不完整。终于,今天在做数据处理的时候sql名字拼错,删错表了。。幸好有快照,不过还是折腾了一天。又是处理问题,又是写问题报告。多做多错,少做少错,不做不错。多干活真是遭报应啊
http://down.51cto.com/data/1054575主要讲链路层的两个协议:vlan协议和stp协议,顺便讲了一些图论的知识:包括凯莱定理,最小生成树算法等。这次培训比较失败,讲到后来群众纷纷表示无法理解。
最近给公司内部同事做了个网络技术的基础培训。第一课主要讲了一些最基础的tcp/ip四层模型,做了个ppt。上传到下载中心。有兴趣的可以看看http://down.51cto.com/data/1040739
这两天接个任务,帮人解决一个循环优化的问题。和开发联系了一下,搞明白原来是这样一个事。因为数据库比较缓慢,这些人决定把数据取到内存里处理。两张10w条左右的表写了个嵌套循环...本来听到数据库数据加载内存这一个说法,立刻想到是不是可以加个memcached缓存。但是一看sql,各种复杂的逻辑和多表连接,还是算了。。。我和他说,你这个思路完全是不正确的。数据库有问题应该explain sql看看到底
衡量算法好坏的一般标准是渐进表示的时间复杂度。在n极大的情况下O(n)的算法就没有O(lgn)的算法好。因为n不一定会是非常大,因此常数项可能也会非常重要。这些都是非常明显的道理。但是,实际上还有另外一个非常重要的容易忽视的因素。举个排序的例子。我们都知道插入排序算法的复杂度是O(n^2)的,不如很多O(nlgn)的算法快。但是为什么我们在码牌的时候直觉上一定会选择插入排序算法呢?仅仅是因为牌的数
今天想把自己的系统给升级了。点击更新却报错/usr/bin/python符号链接出错。检查一下/usr/bin/python 指向/usr/bin/python2,而/usr/bin/python2 指向/usr/bin/python2.7。 运行了一下,也没什么问题啊。难道要python3.x?修改成python3还报错。于是又改回来,拿出了法宝strace。看看能不能发现什么蛛丝马迹strac
最近设计部报告说经常发生终端链接忽然红屏的现象。一天会发生几起。范围还挺大这是RGS协议丢包的表现。本来以为是服务器端带宽原因,因为以前发生过类似的情况。经过排查,发现并不是这样的。服务器端并不存在带宽瓶颈。而且出现问题的服务器分布也比较均匀。再看接入层,发现交换机的接入端口上的output错包都是天文数字,错包类别是abort。以前看过的资料对于abort错误是这样解释的:abort错误包含了前
我们公司买了一个短信平台,用来给各个信息系统发短信。用法是把短信内容和号码写到一个数据库里面。因为我们这边不少系统只支持邮件报警。今天闲着没事,就顺手写了一个转换器。python 下面有现成的smtpd框架,网上还能找到示例说明,实现一个smtp服务器非常容易。#!/usr/bin/env python import smtpd,asyncore,csv,datetime import pyodb
本来我对这种活动是没什么兴趣的。不过有一个赛后抽奖活动,大奖是iphone5s,让我这种穷屌丝着实兴奋了一把。等到抽奖,发现规则是这样的:一共有5个关卡,每个关卡对应一个奖品。第一关是100块购书卡,一共5份;第二关是健身手环,4份,估计价值在1000元左右;第三关是ipad mini,3份;第四关是索尼微单,2份;第五关是iphone 5s,1份。可以重复闯关,抽奖取最高成绩的奖品进行。题目都是
决定参加这个比赛就是个错误。初赛是理论知识考试。选择题考了很多asp的东西,剩下的就是考的语法和概念,还有xml gui框架的用法。没练习到,基本都是瞎懵的。许多问题低级到非常无语,包括ide能够提示出语法的功能叫做什么名字这种,非常sb。问答题第一题化一张uml图,直接pass。只用过uml类图,其他图都没用过。最后终于有两道算法和编程题。第一个让你写个冒泡排序。我靠,至少也来个O(nlogn)
逆序数是一种衡量一个序列和标准序列差异的办法。在只能交换相邻元素的情况下,每交换一次,逆序数增加或减少1。在行列式计算里面,也决定了某一项系数的符号。按照定义计算逆序数,需要O(n^2)的时间。简单想了一下,思路和快速排序一样,要缩小比较的规模。可以用原始序列构造一个二叉树。假设标准序列是升序的。那么每次比较向左插入就代表逆序数加1。当二叉树构造完成,就能得到逆序数的结果。能够得到nlgn的时间复
最近俺们这有个c#的比赛,被同事言语讥讽,报名和那些搞c#开发的一起去比赛。没办法,只能看一看c#了。得分垫底岂不是丢人显眼。而且不仅是丢我的脸,还是丢整个运维人的脸。另外,似乎比赛只比语言细节,框架熟练度还有一些软件工程的知识,不涉及算法和数据结构。让人感觉很绝望。前两个不用说,肯定比不上天天搞这些东西的,软件工程我更是一窍不通。看过人月神话,说来说去好像只有一个观点,要想软件搞得好,只有一招就
旅游回来了,继续写博客。最近没什么时间,而且过两天还要去桂林,算法相关的先放一放。写点操作系统相关的,轻松一点。这毕竟还算是本职工作。水平有限,对问题的理解可能有不正确的地方。还希望高手能够予以指正。为啥要写线程调度:1.作为一个it,经常被人问为什么电脑为什么越来越慢。但是就是这个简单的问题,却让人没法回答。2.做运维经常要监控cpu空闲时间,了解线程调度,能更好的理解cpu时间的意义。学过操作
继续练习图论算法。上次写了一个最小生成树算法kruskal和prim。这次该轮到最短路径了。dijkstra和bellman-ford。这两个算法实在是大名鼎鼎,尤其是迪克特斯拉。标准的最短路算法只记录最小路径的值,我想把路径也记录下来。那么我需要一种数据结构把单源最短路表示出来。从几何上,可以把这些路径想象成一个以出发点s为根的一棵树。这棵数上的每个节点代表图中的一个点。从树根到这个节点所经过的
还记得我最早接触互联网那会,在90年代末期,还在上中学。网吧逐渐取代了游戏厅在青少年中的灰色地位。当时正赶上第一次互联网浪潮,似乎全世界金融大鳄都密切关注着这个行业的一举一动。最早的时候非常流行聊天室。许许多多的陌生人挤进频道。很多人第一次感受到与远在天涯的人能够如此近距离的互动的震撼。这些聊天室往往是开放的,对加入的人员没有任何限制。有很多素质及低的人进入,让聊天室的环境变得乌烟瘴气。这些人进入
我对函数式编程并不熟悉,但是现在貌似很多语言都支持函数式编程的一些特性,比如lambda算子.python 和c#都有支持,似乎java也要开始支持。而函数式编程的函数和类似c里面的函数的一个显著区别是前者的函数更具数学特征。一堆值做输入,再输出一个值。而c里面的函数可以更改一些数据结构,很多时候返回值无关紧要。所以,c里面的函数并没有过程贴切。
我总结了三个原因第一个原因:真正热爱知识和技术的人对金钱并不感兴趣。真理所带来的充实快感远超过物质享受的空虚。顶级的牛人对商业运作根本不感兴趣。这大大缩小了从事商业的知识分子的范围和数量。第二个原因:一般说来,知识技术从业者的智商在人群中是出于顶尖的。但是,只有智商还远远不够。勤奋所占的比率要更大。而勤奋的人往往有一个共同的个性就是不喜欢冒险。这些人经常会使用100%的努力来消灭1%的风险。而市场
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号