- 博客(121)
- 资源 (3)
- 收藏
- 关注
原创 如何统计代码行数
如何统计代码行数linux下提供了很多实用工具,甚至在安卓上,都有移植的busybox包含这些工具。根据KISS理念,这些工具的功能很单一。但这些工具组合起来,就可以很方面的统计代码量了。统计代码行数流程为:首先使用find命令找到所有后缀名符合规则的源代码文件,之后使用wc命令统计行数。文件数可能过多,为防止出错使用xargs命令分割参数列表,最后得到的结果可以使用sort排
2014-08-02 09:28:25 7041
原创 socket套接字TCP API
socket套接字TCP APIsocket概念socket又称“套接字”,是计算机网络中进程间通信数据通道的一个端点,或称之为句柄。IP地址+端口号就可以唯一确定一个socket。TCP/IP协议族包括传输层(TCP/UDP),网络层(ICMP/IP/IGMP),链路层(ARP/RARP)。应用层通常使用socket地址,即IP地址+端口号来确定通信的对端。而socket正是TCP/
2014-08-01 08:57:05 8637 3
原创 如何写出一个较好的快速排序程序
写出一个较好的快速排序程序快速排序是常用的排序算法之一,但要想写出一个又快又准的使用程序,就不是那么简单了需要注意的事项首先要写正确。通常使用递归实现。其递归相当于二叉树展开,因此如果要用迭代实现的话需要使用一个队列来保存后续遍历信息。快速排序需要找到一个pivot值,如果顺序选择pivot则易造成N^2的复杂度,如果使用随机数则效果最好,但开销又太大,采取三数中值法比较合适。
2014-07-27 08:02:59 18447
原创 多普勒失真信号重采样的Matlab仿真分析
多普勒失真信号重采样的Matlab仿真分析应用场景水声通信指的是使用声信号在水中传输数据。相对而言,电磁信号在水中吸收严重衰减过快,光信号受水中悬浮颗粒的影响,也无法完成远距离传输。这两种信号的传播距离约为数百米,而声信号在水中传播距离达到数十千米,成为水下通信的首选方式。水声通信的一个重大挑战就是运动带来的多普勒。多普勒造成信号的频率漂移,影响系统性能,因此非常有必要消除多普勒带来的
2014-07-24 17:06:09 8632 1
原创 《剑指offer》解题笔记
《剑指offer》解题笔记《剑指offer》共50题,这两周使用C++花时间做了一遍,谨在此把一些很巧妙的方法、写代码遇到的难点、易犯错的细节等做一个简单的标注,但不会太过详细,具体算法还是请参考书本。做的比较急,代码还有很多不完善的地方,如有错误,欢迎改正,地址为:github:sword_of_offer。可以使用git clone https://github.com/heL
2014-07-22 08:42:31 7946 2
翻译 《软硬件接口》课程大纲
《软硬件接口》课程大纲Coursera课程 The Hardware/Software Interface是华盛顿大学提供的一门课程,其中汇编语言、进程结构、Java实现等章节内容我认为对于学编程的同学来说非常有用。教学环境是Fedora,顺带介绍了一些常用工具的使用。课程大纲这门课程将会让学生知道当软件运行时到底发生了什么,并说明这个问题可以通过硬件架构层、汇编层、C语言层和
2014-07-16 10:47:41 2840
原创 阅读《C陷阱与缺陷》的知识增量
看完《C陷阱与缺陷》,忍不住要重新翻一下,记录一下与自己的惯性思维不符合的地方。记录的是知识的增量,是这几天的流量,而不是存量。这本书是在ASCI C/C89订制之前写的,有些地方有疏漏。第一章 词法陷阱1.3 C语言中解析符号时使用贪心策略,如x+++++y将被解析为x++ ++ +y,并编译出错。1.5 单引号引起的一个字符代表一个对应的整数,对于采用ASCII字符集的编译
2014-06-30 02:56:40 2582 7
原创 Codeforces初体验
Codeforces印象这两天抽时间去codeforces体验了一把。首先,果然有众多大牛存在,很多名人一直参加每周一次的比赛,积分2000+,并参与出题。另外,上面题目很多,估计至少一千题。比赛结束后,题目将转为练习题,可以持续尝试。每道题目都有标签,如greedy, math, matrices等等,可以点击相应的标签只做相关的题目。可惜我做了好几道之后才发现。这次解决的题目
2014-06-24 15:32:36 3343 1
原创 Memcached概述
MemcachedMemcached是一套分布式的内存对象缓存系统,使用C语言编写,作为数据库的前端cache,缓存数据库查询结果可以减轻数据库负载。类似一张巨大的hash表,缓存的对象以key-value对的形式存在。工作流程检查客户端请求的数据是否在Memcached中存在,若存在直接返回结果若不存在,查询数据库,返回结果并把结果缓存每次修改数据库时要同时更新Memcach
2014-06-03 21:20:48 1682
原创 Ruby on Rails开发Web应用的基本概念
Web应用架构C/S架构Web应用从最初就采用C/S架构。Server负责监听客户端请求,提供资源,Client向server发起请求并渲染页面。两者通过TCP/IP协议栈之上的HTTP协议通信。多层架构在Web 2.0时代,随着交互性的要求,这个架构变得更为复杂。Server需要提供更复杂的服务,Client也要完成更多的交互任务,涌现出很多新的提供更快更好服务的技术。相应的,C/S架构需要以一种更复杂的方式来组织,即多层架构。多层架构中的每一层负责提供一个特定的功能,与其他层通过良好的
2014-05-20 10:44:02 6747
原创 C++11新特性
C++11新特性C++11已经推出三年了(2011),编译器GCC4.7、Clang3.1在2012年已经逐渐完善,VS2013也已经支持相关特性,GCC4.8.1支持全部特性。不过新特性似乎在工业界并未得到太多应用,可能出于兼容性和稳定性的考虑吧。推出的新特性还是相当的丰富,看下面这张图就知道了。我仅仅在这里提一下相对比较容易应用的部分,包括语法上的一些扩展以及改进,lambda表达
2014-05-18 10:01:11 4974 3
原创 主定理的证明及应用举例
主定理主定理最早出现在《算法导论》中,提供了分治方法带来的递归表达式的渐近复杂度分析。规模为n的问题通过分治,得到a个规模为n/b的问题,每次递归带来的额外计算为c(n^d)T(n) <= aT(n/b)+c(n^d)那么就可以得到问题的复杂度为:
2014-04-29 18:54:42 43876 7
原创 Map-Reduce原理
Map-ReduceMap-Reduce是由Google在2004年提出的大数据并行编程架构,分为Map(映射)和Reduce(化简)两个步骤,因此得名。它隐藏并行化、容错、数据分布、负载均衡等细节,可以搭建在普通PC上,程序员可以很方便完成大数据并行编程。并行运算的效率假如使用1个处理器花费T1时长可以完成任务,而使用了p个处理器需要Tp时长。那么加速比为:S(Speeup) =
2014-04-22 18:00:30 6139
原创 100层楼扔2个鸡蛋、3个鸡蛋……
原题目现有2个鸡蛋,楼高100层,假设从n层楼及以上扔下会摔碎,n层以下不会,那么怎样扔能以最小的次数得到n?分析最先想起来的是二分法的题目:100层最少需要扔多少次鸡蛋才能求得n?答案是ceil(log2(100))=7 。不过现在只有两个鸡蛋,这种方法就不行了。采用二分法的话,如果1号蛋在50层碎了,那剩下一个鸡蛋只能从1层开始慢慢扔了,需要扔1+49 = 50次。另外一种容易
2014-04-16 03:12:13 22260 2
原创 OpenSSL的Heartbleed漏洞原理及简单模拟
Heartbleed漏洞自从Heartbleed漏洞曝光以来,网上能看到很多相关的文章,但大部分都是写的云里雾里,本文尝试直观明了的对漏洞原理进行说明及模拟。OpenSSL是SSL协议以及一系列加密算法的开源实现,使用C语言编写。OpenSSL采用Apache开源协议,可以免费用于商业用途,在很多linux发行版和服务器中得到广泛应用。OpenSSL出现漏洞造成的影响是巨大的,Heartb
2014-04-15 12:22:39 13040 2
原创 北大程序设计实习MOOC 编程作业 《魔兽世界之二:装备》
这次作业是在第一次的基础上完成的,主要要求是完成五种武士的封装。这五种武士的特性(相应类的成员变量)不大相同,但可以从同一个基类派生。随着时间变化,生成相应的武士,并输出相关信息。OJ地址为:这里解决方案游戏双方各有一司令部,相应的即为head类的两个对象。每个head对象内部produce函数分别完成武士生成。构建武士对象时采用工厂方法,私有make_warrior方法根据武士名称新建相
2014-04-06 18:56:00 4424
原创 DSP集成的AIC23芯片的音频接口
AIC23芯片AIC23是语音信号处理、声通信常用的芯片。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。AIC23提供双声道Line in、双声道Line out
2014-03-31 02:02:52 5421
原创 Concepts in Games Development(游戏开发概述) 公开课笔记
Concepts in Games Development是Open2Study平台上的课程,Dr. Clinton Woodward老师任教于Swinburne University of Technology in Melbourne, Australia,主要讲 Games Programming和Artificial Intelligence for Games课程。 简介 这
2014-03-19 00:04:15 1811
翻译 C++标准基金会推荐:在线C++编译器
C++标准基金会是一个致力于对C++开发者社区提供支持,并促进现代C++标准在所有编译器以及平台上的理解与使用的非盈利性组织,成员包括微软、谷歌、英特尔,ARM,Oracle等公司。点这里进入基金会网站。网站有一篇博客,给出了一个推荐使用的在线编译器链接列表,翻译如下。(我发现这群人很有写广告词的天赋!)许多人没有认识到,很多网站都提供了在线使用C++编译器的功能。对C++11的支持正在迅
2014-03-03 00:57:27 4558
原创 不使用临时变量的swap再思考 -- 六种解法
不使用临时变量的swap一道经典的面试题如下:两个int型变量a和b,不使用临时变量,交换它们的值。答案相信大家都耳熟能详了:a = a ^ b;b = a ^ b;a = a ^ b;这段程序巧妙的安排运算顺序利用仅有的两个变量实现swap,它相当于这样一段程序:c = a ^ b;b = c ^ b;a = c ^ b;可以发现它的技巧简单的说
2014-03-01 04:40:39 8571
原创 瑞利信道:从原理到实现
瑞利信道模型 瑞利信道模型是无线通信信道最重要、最基础的的仿真模型。无线信道中的平坦衰落信道基本上都是在瑞利信道模型的基础上修改而成,比如应用同样广泛的莱斯信道就可以通过在瑞利信道的基础上简单的添加直流分量实现,而频率选择性衰落信道基本上都是几种平坦衰落信道叠加的结果。 小尺度平坦衰落信道中,由于移动体处于不断的运动状态,导致接收端接收到的是来自不同路径的多径信号。移动台的速率将会导致
2014-02-25 20:20:37 58095 9
原创 台湾大学公开课《概率》六到九章笔记以及课程总结
第六周期望概率的推导的奥义是凑字决:概率之和为1!第七周指数分布和几何分布都有失忆性,即条件概率分布不变。第八周联合概率分布对于两人等车问题,可以画图解决。变量相加,则期望相加,如果相互独立,还可方差相加,乘积的期望相乘。第九周 MGF两个随机变量的和的概率累计函数其实是卷积运算,采用MGF可以简化运算,相当于DFT变换。而且MGF的一阶
2013-11-24 19:51:16 3681
翻译 4G通信技术LTE介绍
参考文档在这里LTE技术LTE是继GSM/EDGE和UMTS/HSxPA之后的由3GPP推出的移动网络技术最新标准,属于4G。未来网络需要更高的数据速率,和包路由优化系统。更好的QoA和更廉价的设施。WCDMA和CDMA系统的终端复杂度非常高,造价昂贵。相关参数LTE要求下行速率达到100Mbps/20MHz,谱效达到5 bit/s/Hz,上行达到50Mbps/20MHz,即谱
2013-11-19 21:57:10 5657
原创 科罗拉多大学 C#游戏编程课程总结
为期八周的游戏编程课程今天完成了所有8个编程作业,一个Project,以及期末考试。证书要过一段时间发下来。教授这门课的是Dr.T ,他曾经从事游戏开发5年并执教多年。为什么使用XNA开发?XNA是微软的跨平台游戏开发平台,支持PC和XBOX的同时开发。在Linux平台上有Monogame作为其开源实现。并且,MonoGame 支持 “iOS, Android, Windows (
2013-11-08 12:36:41 2144 2
原创 向量空间中的Fourier变换:DFT DFS DTFT
持久的动态系统一定存在振荡现象。从直观理解来说,不沿着圆运动的物体终将停止,比如炸弹、人、火箭等不可逆转的事物。对于有限长度的一段信号,如64点。Wk[n]=e^(j*2*pi/N*n*k),n,k在【0,1,……N-1】,为C64向量空间的一组正交基。任取两个不同的基计算内积,化简为等比数列求和,分子为0,即正交。不过它们不是标准正交,乘以1/sqrt(N)标准化因子后才是标准正交基。W
2013-10-24 19:04:33 3908
原创 Interactive Python:Mini-project # 1 - "Guess the number" game"
加上这一次的作业,这门莱斯大学的python课程的所有project都已经完成了。这次作业中,收获最大的是关于编程风格的问题。在运算符前后和逗号后面都要添加空格,除非紧邻着括号。类名要使用CamelCase,但方法和函数要使用lower_case_with_underscores。参考链接。另外,python中的全局变量的用法和局部变量一样。在子函数中要对全局变量赋值,要事先使用glo
2013-10-22 23:06:16 8493
原创 希尔伯特向量空间中的信号
希尔伯特空间又叫完备的内积空间,是有限维欧几里得空间的一个推广。一段连续信号可以视为一个无限维度的向量,有无限个正交基,相应的,离散的可以视为有限维度的向量。内积:=[x0*,x1*,...] * [y0,y1,...]T两个向量正交,等价于内积为0.模为一的正交基称为标准正交基(othonormal)。对于两个有公共基频的正弦波信号,可以画出二者的
2013-10-18 21:16:35 2372
原创 Interactive Python:Mini-project # 1 - Rock-paper-scissors-lizard-Spock
An Introduction to Interactive Programming in Python by Joe Warren, John Greiner, Stephen Wong, Scott RixnerMini-project description — Rock-paper-scissors-lizard-SpockRock-paper-scissors i
2013-10-15 16:18:13 16152
原创 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
策略分析平台在前两周的工作中,实现了股票价格低于门限值这一策略的event study,即根据门限值来看事件发生前后股票的价格。同时,完成了根据下单的指令来进行回测,计算策略执行期间每一天的价值,以及对投资结果的分析。这一周,要求把这三部分结合起来,能够实现根据门限值直接回测生成过去时间段的下单指令,并进行计算分析。工具和方法编程工具编程语言是python,用到的开源量化分
2013-10-13 01:07:27 5058 3
原创 台湾大学公开课《概率》第五周一道不会作的作业题 ,一种看不懂的解法
第五周的第十题:巷子呈直线,长L0 = 400 m,艾波宁宁宁以v0 = 4 m/s 初速等速穿越。士兵时时 刻刻瞄准她;第t 秒时是否击中她,是随时间t 的均匀的泊松事件(Poisson process),且 与距离离无关。其中,平均每μ 秒能击中一次,μ = 100 / ln( 50 ) 约为25.5622。士兵无法 击中巷子以外的区域;另外,只要她处于巷中,μ 就是常
2013-10-12 20:27:16 3692 7
原创 华盛顿大学公开课Programming Languages by Dan Grossman 简介
Programming Languages by Dan Grossman这门课依然是Coursera平台上的,是第二次开设。现在我已经习惯了Coursera,其他的平台感觉都没有这个好,特别是论坛。这门课是关于什么的?很多编程语言共有的本质概念。使用ML,Racket, Ruby语言,这些语言在很多方面比Java,C#,Python更简单。使用多种语言来发现一些概念是
2013-10-09 22:03:18 4759
原创 Martin Odersky Scala编程公开课 第三周作业
Functional Programming Principles in Scala by Martin Odersky这次的作业叫做Object-Oriented Sets。要完成一个完整的类,实现取最大值、排序等方法。由于是函数式编程,这些的实现方法和以往我知道的完全不一样。总结TweetSet有两个子类,Empty和NonEmpty,使用BFT实现。有一点比较惊奇的是
2013-10-09 11:46:08 6960 8
原创 佐治亚理工学院 计算投资公开课第五周作业 市场仿真器
Computational Investing, Part I by Dr. Tucker Balch前几周的作业都比较简单,因此没有发上来。这次要求给出一个市场仿真器,根据order给出各日的账户金额。除此之外,可以分析相应的投资方案的各种参数,如日均回报率等,由于时间关系没有做。本题要求使用明亮行传参数,如:python marketsim.py 1000000
2013-10-06 01:42:19 3426 2
原创 网络智能和大数据公开课Homework3 Map-Reduce编程
Web Intelligence and Big Data by Dr. Gautam Shroff这门课是关于大数据处理,本周是第一次编程作业,要求使用Map-Reduce对文本数据进行统计。使用的工具为轻量级的mincemeat。需要注意的是,使用正则式来匹配单词。做完之后先按照姓名和频率排序,即双重排序,然后写入文件。做作业时因为有两分钟的时间限制,要即时进行搜索。作业要求如
2013-10-05 14:00:20 2452
原创 释放Ubuntu/Linux系统cache,增加可用内存空间
某台式机内存共3G,但free的内存只有200M,无法满足scala的jvm需求。注意用top命令查看才能看到真正的free内存。下面是查看真正内存使用量的另一种命令。watch -n 1 cat /proc/meminfo搜索发现有三种方法都可以达到释放内存的目的。watch -n 1 free -mor:free -m上述这种方法只增加了几十M。
2013-10-02 16:20:46 9042
原创 台湾大学公开课《概率》第三周作业题
機率 (Probability) by Prof. 葉丙成 Ping-Cheng Yeh (Benson)这是一门本科概率基础课程,但我发现很多问题都非常高深,需要一套理论来支撑。Question 5小可的妈妈买了5支一模一样的笔回家,准备让小可以及她的两个姊姊自己领取,但是小可她们不一定要拿,也可以拿很多支,最后5支笔也不一定会分完,没被拿走的笔会被妈妈放在客厅桌
2013-09-28 16:01:01 4514 2
原创 Martin Odersky Scala编程公开课 第一周作业
Functional Programming Principles in Scala by Martin OderskyMartin教授是scala语言的creator,在coursera上面有scala课程。本文是第一周的作业。作业应该做Eclipse里面编辑,使用WorkSheet实时检查。然后使用sbt运行styleCheck,test命令进行测试,run命令来运行mai
2013-09-24 09:47:50 3575 2
原创 慕尼黑大学公开课 Competitive Strategy(竞争策略)总结
第一章博弈同时的博弈:双方同时定制策略如果有显著的次优策略总是不如另一个,则剔除它.如果一个策略组合中没有一方可以单独改变其策略以提高回报,则称为Nash均衡.一个游戏可能没有也可能有多个Nash均衡。囚徒困境在双方都是自私的的时候会出现,通常其均衡点不是最大化总体回报的。序列化博弈:双方交替制定策略,只有有限个回合可以用博弈树来建模分析,然后使用逆向归纳法逆推找到对单
2013-09-01 20:21:58 1701
原创 Project Euler 001-006 解法总结
Problem 1. Find the sum of all the multiples of 3 or 5 below 1000. 题目要求找出所有1000以下的3或者5的倍数之和。 最简便的方法是,计算出1000以下总共有多少个3、5、15的倍数,然后用等差数列求三种数分别之和,最后3、5的倍数和减去15的倍数和就得到了结果。 NOte:这是因为15的倍数多算了一遍,所以要减
2013-08-27 01:39:48 1708
原创 三十分钟做一个网页游戏
这篇文章的目的是短时间之内,通过做出一个简单的缘分对对碰游戏,了解网页开发的基本框架。 对于大部分网页,都要包括HTML、CSS、JavaScript三种技术。而相对应的三种文件格式为.html、.css、.js。下面首先给出这个游戏的代码,在分析中学习。我认为了解整体框架之后,学习过程中对于自己不懂的部分百度一下,可以学习的更快,因此我不会做的过于详细。对最新标准支持比较好的是Chrome
2013-08-22 19:20:59 12930 3
科罗拉多大学 C#游戏编程课程 大作业
2013-11-08
Radmin3.4远程桌面软件 含注册机
2012-07-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人