写着写着发现是认错了.东西方上来.大家批评.少走弯路.
我朋友说的很对:人啊.不能一美遮百丑.
为了爱惜自己还是不把实际情况说明了.我的基础其实很水
语言:Basic,C,java,VB,C#.net,Html,T-sql,汇编,
说明:严格的按时间顺序排列&&学了这么多显然都不行C++太水了.不排上去.....
编程一向我认为就是API编程和算法编程加上底层纠错.API调用已经有的.算法编程.创建没有的.或者对已有的优化.
API和算法的东西
左手数据结构右手算法
----某计算机大牛曾曰过
举个例子.java老师问:对于 !@#$#$.jpg怎么只读取jpg的东西.并且这个"." 可能不止一个.我说用栈反转.读取gpj.再反转.就可以了.JAVA老师说有现成的方法可以掉...可能java里面就是这么写的.我当时不服气.一想有个这个执行效率可能还不如我的呢.因为它很可能遍历字符串.直到最后一个"."才开始记录.之后第二次从这里开始遍历.以前也小鄙视一下C++反正C都可以写.后来发现C++上面的迭代器很好用.不用自己写数据结构.
我来讲个今天的故事.
背单词.考研自然是关联起来比较好背.比如
able ablilty 等等都是一个意思.我自己用手抄了一份词根.肯定有重复的..所以我想放到数据库里面.对数据的操作数据库是最方便的了.我开始想去掉重复的.第一个方案是用sql语句 select 原来的东西
if not exist (就更新update) esle 不更新.不管是excel还是mssql都支持t-sql语句.后来发现想到这个是数据库. 有check约束和主键约束防止出现重复数据....还是直接调用已有的API比较好.
当API不好用的时候需要算法来支持优化.当不知道API的时候算法可以实现.越底层的东西越可以实现高层的东西.越高层的东西出错了越不知道咋回事.
但是.高层的东西简单.底层的东西复杂难学.
一个e=b-c;
用汇编就是
mov 找到b 扔到一个CPU或者CACHE存储器上面
mov 找到c 扔到另一个CPU或者CACHE存储器上面
sub 第一存贮器 第二个存储器
mov 第一个存储器的东西放到写入e的地址.
这个代码如果要理解.至少是微机原理与汇编的东西.
而为啥 sub后用mov深层次的含义是CPU的东西要写入内存.这个设计是只写相关还是更新相关就看CPU的数量了.系统结构的东西现在好了有了C语言.一个e =b-c;世界太平了.这个例子后面有分析.
再早期有个内存泄漏问题.这个在我用一个方法的原始方法计算10万内的的质数并输出的时候遇到了.当时主要是考虑算法.我同学搞了个1亿以内的才42秒就搞定了.我算10W的搞了2分钟机子死卡还没出来.直接ctrl+C结束.后来我怒了,花了一个小时研究数据的过程和算法.半个小时写代码.搞了算1亿只需要48秒的算法.后来才知道.原来那个是我们老师写的....实验报告上面有......
要仔细的看书
"学而不思则罔,思而不学则殆"
----荀子<劝学>
我一向反对看书.一看就困.虽然有人说个读代码难.写代码容易.事实也是这样.今天才批评了一个考研战友光看高数不做题.也就造成了光看不想或导致自己光想不看.
最新的吃瘪的东西是补码运算.说要看看这个加法溢出到底是咋回事.我就搞了上面的汇编.分别看了加减乘除.分析结果.这个运算具有一致性.但是底层的东西被汇编屏蔽了.看不见.实验显示都是补码.以前上大一计算机基础理论的时候记成了反码是搞减法计算的.而不是补码....所以这个用了补码就很奇怪.还以为光浮点计算是用补码.(其实byte也不是浮点计算.是定点计算.)
其实也不用这么麻烦.编程的时候不溢出.万一溢出提前测试溢出值.边界测试一下就可以了.
直到昨天晚上晚自习拿出了考研复习指定教材组成原理的那本.看到了一句话.现代计算机的减法运算都是补码.还有单片机和组成原理相关的地方.我对一个地方问了一个问题集.直到老师问我到底是组成原理还是单片机.我说是单片机.后来问题搞定了.我和同学交流他说书上有原始的定义.我汗~~~.幸好以我当时的水平就是看了也没有问的透彻.小小的安慰一下.
自定义的dijkstra算法.
这个算法代码部分到底怎么回事我才搞明白.搞明白是指看懂了代码.我一般是不看代码的.(看懂了理解不了和看不懂是一样的)为了解决机票问题我自己搞了个算法.用矩阵计算.时间复杂度貌似是n^(2n)这个复杂度就很恐怖了(具体时间复杂度没鉴定.就是加法运算和min比较运算).我的修正方案一次计算(不管它多费时间.也许算出来很快具体时间待鉴定)之后要走就通篇查表.理论时间复杂度是n或者log(2)n 甚至更少.实际期望的时间复杂度是n/2一旦生成新的.更新了可能就要重新来次恐怖的计算.
结语
重新想起来了<疯狂程序员>里面的话.真正的疯狂程序员不在于你多懂得高深的技术.不在于你多狂妄.不在于你多能熬夜.真正的在于你的基础多扎实.GG
2009年5月20号 23:53