EGL综述 参考:https://www.khronos.org/registry/EGL/specs/eglspec.1.5.pdf## 什么是EGLEGL是支持多平台、多操作系统的,比如安卓、Unix、Windows等。为了扩展性,EGL本身与平台渲染API的定义是独立的。EGL支持OpenVG、OpenGL、OpenGL ES等多种Client API### EGL的数据类型EGLBoolean:布尔值EGLint:整数EGLAttrib:表示属性的整数EGLCon..
分形:MandelBrot和Julia 分形:MandelBrot和JuliaMandelBrotMandelBrot点是构造这样的一个集合:对于复平面上任意点z, x(0) = 0,使用公式x(n+1) = x(n)^2 + z迭代,若最终收敛,则属于此集合JuliaJulia集合如示例代码所述,复平面上的点作为x(0),控制点z取任意值,得到不同的Julia点集参考代码如下,白色部分就是所求集合import...
PyQt的使用 使用conda切换到python3如果不会使用conda,那么安装anaconda后打开navigator,再environments中选择创建好的python3环境,右键打开terminal即可安装pyqt执行以下命令即可安装好pyqtpip install PyQt5-sippip install PyQt5...
3D动画制作流程概要 - 大致分为建模、贴图、绑骨、动画四步,希望看过后能为游戏行业的同事提供一些帮助## 建模- 通常使用maya,3ds max移动现有的mesh建模,而最近的zbrush,mudbox则允许以雕刻的方式制作,更加直观、高效- 可以使用polygon、nurbs、细分曲面三种类型的几何体建模- polygon可以使用dividing, smooth- ing, extruding(挤出), beve...
简单地理解 Python 的装饰器 关于decorator说的比较透彻,作者是一位很善于讲课的人。本文系转载,作者:0xFEE1C001原文链接 www.lightxue.com/understand-python-decorator-the-easy-wayPython有大量强大又贴心的特性,如果要列个最受欢迎排行榜,那么装饰器绝对会在其中。刚接触装饰器,会觉得代码不多却难以理解。其实装饰器的语法本身挺简单的,复杂是因为同时混杂了
游戏引擎与C++ 游戏引擎与C++参考CppCon 2016: Jason Jurecka “Game engine using STD C++ 11"此presentation主要关注C++11在游戏引擎中的使用游戏引擎的特点不会使用太多STD游戏的历史很久远,且对内存、cpu的使用很苛刻比如对于std::string,操作比较慢,因此更多采用cstring比如std中的模板会造成代码体积膨胀游戏引擎不会使用太多
斐波那契数的皮萨诺周期 斐波那契数的皮萨诺周期fibonacci数为f0=0, f1=1, fi = f(i-1)+f(i-2)pisano period指的是一个序列对n取模后的周期fibonacci的周期性明显可见对2取模结果为:0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0fibonacci对3取模结果为:0 1 1 2 0 2 2 1 0 1 1 2 0 2 2 1此性质在用于计算超大fibona
安卓平台OpenGL ES的调用 安卓平台OpenGL ES的调用开发游戏如果直接使用OpenGL是比较痛苦的,最好的办法是使用封装好的引擎,但很有必要了解在安卓java代码直接调用OpenGL的渲染方法固定渲染管线只可通过配置实现不同的效果,而可编程渲染管线通过一般编程的方式实现,可以实现更加灵活的效果OpenGL ESOpenGL从3.0开始,而OpenGL ES从2.0开始,支持可编程管线下图中橙色两块儿即为可编程部分,而顶
安卓逆向简介 安卓逆向简介常用逆向方法Apk文件格式Apk文件其实是一个zip文件,解压之后可以看到其中的目录结构AndroidManifest.xml已经过编译,包括activity、权限等配置classes.dexjava程序生成的.class文件经过打包生成resources.arsc资源文件索引res此文件夹包括布局文件、图片、strings等文件,可以通过R.java引用lib用到的第三方库,包括.s
VR游戏交互开发的一些体验 VR游戏交互开发的一些体验本文主要写写VR交互输入控制的一些浅薄的经验交互方面,头控和视线按钮依然较为主流,可以获得传感器数据来获得输入除了实体按钮输入之外还可以探索其他交互方式,比如触摸板等,但机制有待成熟头控通过捕获头部转动可以很方便的实现交互,成本最低,适合一些纯观景或轻度游戏设计时,要尽量减少头部移动范围,否则用户容易疲惫视线按钮使用一个醒目的准星或光标来指
安卓系统按键映射修改 安卓系统按键映射修改谨记录下靠着自己摸索,安卓平板使用时一个bug的解决方案,及修改按钮功能的方法。这个bug目前搜不到解决方案,能独立解决还是很有成就感的解决反复打开谷歌语音搜索的bug手里一部驰为hi8,是国产双系统平板,在安卓系统下如果插上耳机会自动暂停和播放音乐,并反复打开谷歌搜索这个bug目前网上没有找到答案。自己猜测,应该是耳机接口不匹配,相当于一直按着线控耳机上的
python定时杀进程 python定时杀进程之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WebDriverWait设置最长等待时间无效。用firefox替换phantomjs无改善因为这个脚本不会长期使用,因此采取临时办法,新开一个子线程固定周期杀死phantomjs进程,这样selenium就会在block最多不超过
Unity的camera组件 Unity的camera组件文章介绍的是个大概,其中rendering paths和culling、clear flag还有更详细的用法正交和透视unity的camera支持两种投影方式:正交和透视人眼看到的物体,近处的比较大、远处的比较小,unity的摄像机支持这种透视效果,称为透视相机如果不需要物体大小随到摄像机的距离改变,可以采用正交投影可视区域一般摄像机仅关
python开发环境管理:pip和virtualenv python开发环境管理:pip和virtualenv不同的python软件需要不同的开发环境,互相之间甚至可能有冲突,怎么处理?使用pip、virtualenv和virtualenvwrapper可以迅速的搭建、转移开发环境,并隔离冲突。软件包管理pip是easy_install的替代品,distribute是setuptools的替代品pip使用使用参考文档为:
使用python开发json、csv数据格式转换工具 使用python开发json、csv数据格式转换工具json和xml是业界常用的数据格式,而游戏行业经常使用csv配表,包括本地化文本和数值。本文介绍csv和json序列化、逆序列化相关的python库,以及开发工具常用的命令行解析库--getoptcsv模块csv文件格式并不统一,存在多种分隔符,而csv模块可以很方便的读写csv文件csv.reader返回一个rea
Unity编辑器扩展之EditorWindow Unity编辑器扩展之EditorWindow继承这个类的编辑器脚本可以用来创建一个编辑器窗口,类似Inspector窗口若要在这个类中添加一些控件,可以使用GUI和GUILayout控件,还可以使用编辑器专用控件EditorGUI/EditorGUILayout脚本创建在Assets/Editor文件夹下创建脚本,并继承UnityEditor.EditorWindow在OnG
Unity中的layer和tag Unity中的layer和taglayer和tag均用于标识不同类别的gameobject,侧重点不同LayerUnity中默认已经有8种layer,但可以自行设置layer,上限32种,对应于一个int值的32位对于场景中的gameobject,均可以设置其layer。用于cameralayer和camera配合起来,可以达到尽在camera上渲染特定层gameo
python勿使用mutable值作为默认参数 python勿使用mutable值作为默认参数首先看以下一段代码def append(num, container=[]): container.append(num) return containerprint append.func_defaultsprint append(1)print append(2)([],)[1][1, 2]
Unity新项目如何快速理清顶层代码结构 Unity新项目如何快速理清顶层代码结构半路上手新项目时弄懂scene切换流程是有必要的,scene切换可以说是unity最上层的代码资源结构思路首先我们在入口scene(第一个scene)中添加新的GameObject,绑定脚本,每帧打印当前scene的名字,并防止在scene切换时销毁根据打印输出的scene名字,在代码中搜索LoadLevel如果LoadLevel有一个专
Unity中的场景切换 Unity中的场景切换与电影类似,一个游戏往往需要多个场景。而如果场景中资源较少,那么可以很快的完成切换,如果较多的话,可能需要十几秒时间。在这段时间内播放加载动画等等,可以减少玩家的不耐烦。同步切换场景Application.LoadLevel()Application.LoadLevelAdditive()加载完成后保留旧场景中资源异步切换场景Applicati
Tip: char *和char*的区别 char *和char*的区别这两种写法编译上面都没有问题,但是在某些情况下会造成歧义char* p1, p2这样的写法声明了指针p1,字符p2char *p1, *p2这样的写法表示声明了两个指向字符的指针*是变量的修饰符*p表示p是一个指针,是修饰p的,而不是修饰char的因此*和p之间不要有空格,否则就会造成误解,误以为char*是一种数据类型,继
文本编码 文本编码文本编码这个问题自三年前就困扰着我,当时是用Python处理多国语言时出现的bug,最后问题解决了,但其中具体逻辑并不懂。后来零零散散接触了不少资料,算是大致弄明白,记录如下。unicode与ascii等编码方案asciiascii编码方案一共规定了128个字符对应的二进制表示,只占用了一个字节的后面7bit,最高位为0欧洲国家使用128个符号不足以表示所有字母,使
命令行字典 命令行字典作为一个有追求的程序员,当然想把一切操作通过键盘来完成,让手指保持在键盘上。那么,如何做到用键盘来查询英文单词呢?突发奇想在命令行里用python脚本来爬取有道词典的查询结果,使用requests + BeautifulSoup实现,效果还不错。代码代码放在了heLomaN@Github#!/usr/bin/env python# coding=utf-8impo
C++中的容器 C++中的容器容器与容器适配器容器包括vector, deque, list, map, multimap, set, multiset。容器适配器包括基于deque的stack和queue,基于vector的priority_queue。string也实现了stl的接口。因为编写C++程序时经常需要查找容器的函数接口,故作此总结。C++新引入的容器与函数未引入。主要参考自:S
《全景探秘游戏设计艺术》精华 用户体验 游戏平衡性 《全景探秘游戏设计艺术》精华 用户体验 游戏平衡性一本很好的游戏设计书籍,暂时关注的是用户体验部分,比如,用户喜欢什么,什么可以带来乐趣,以及游戏的平衡性男性与女性的区别男性喜欢的游戏要素征服:控制一切竞争:与他人竞争来表明自己是最棒的破坏:破坏带来快感空间谜题:男性有更好的空间推理能力尝试和失败:男性不喜欢阅读说明,更喜欢通过尝试和失败来学习女性喜
《金领简历》精华 创业公司 面试机会 简历 《金领简历》精华 创业公司 面试机会 简历《金领简历》在我看来是一本非常好的书,把面试之前的提前准备工作讲的非常到位,可惜在图书馆里没人借这本书。本文主要讲关于是否选择去创业公司、如何得到面试机会、如何写出优秀的简历。创业公司的特点创业公司的有利之处全面锻炼能力: 有机会培养各种技能,但如果是只专注某个领域的人才,应该避免加入创业公司晋升机会更大:如果公司扩大规模,很容易成
火车运煤问题 火车运煤问题刚面试问到这个题,可惜一直没有为此类问题准备,差点就回答出来了题目内容你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?分析很显然每次走全
thttpd源码解析 定时器模块 thttpd源码解析 定时器模块thttpd是非常轻量级的http服务器,可执行文件仅50kB。名称中的第一个t表示tiny, turbo, 或throttling与lighttpd、memcached、redis相比非常小巧,仅有不到8k行,而后三者大小分别为:60k,13k,86k支持HTTP/1.1和CGI;采用IO复用实现,单线程,可移植;实现了基于URL的文件流量限制功能特别
《算法之道》精华 难解问题部分 《算法之道》精华 难解问题部分本书作者绉恒明,作者另有一本书《数据结构之弦》,以及《操作系统之哲学原理》都是很好的书这本书可以算得上是深入浅出,文笔很好,作者添加了很多自己的思考本文包括难解问题部分第十三章 易解与难解易解指的是多项式问题,难解指的是指数级问题决策问题需要输出答案是/否若回答为是,通常需要一个证人来证明。对一个潜在证人,证明之后即为真证人优化问题和决策问
《算法之道》精华 经典算法部分 《算法之道》精华 经典算法部分本书作者绉恒明,作者另有一本书《数据结构之弦》,以及《操作系统之哲学原理》都是很好的书这本书可以算得上是深入浅出,文笔很好,作者添加了很多自己的思考本文包括经典算法部分第十章 排序与次序插入排序从无序部分抽取一张插入有序部分为原地排序,无需占用临时存储空间最优情况下为O(n),平均O(n^2)折半插入排序插入时使用二分查找归
《算法之道》精华 算法设计部分 《算法之道》精华 算法设计部分本书作者绉恒明,作者另有一本书《数据结构之弦》,以及《操作系统之哲学原理》都是很好的书这本书可以算得上是深入浅出,文笔很好,作者添加了很多自己的思考本文仅包括算法设计部分,算法分析略去,并没有严格按照章节顺序来记录附录 算法随想有人喜欢遍历,希望踏遍千山万水,人生丰富多彩;有人一生贪婪,眼界不宽,及时行乐;有人注定穷搜,辛辛苦苦,收获有限;有人善用
《程序员面试宝典》精华 底层部分 《程序员面试宝典》精华 底层部分正所谓取其精华,去其糟粕。本文谨记录下《程序员面试宝典》一些关键的知识点、易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录。书里是没有糟粕的,只是指不那么重要,或者比较简单的地方略过而已,并不是说书写的不好。希望以后回顾时无需再看此书,只看保留在文中的精华即可。本文专注位运算、操作系统、数据库、网络部分,包括第十二章以后的内容第十二章 位运算与嵌
《程序员面试宝典》精华 面向对象部分 《程序员面试宝典》精华 面向对象部分正所谓取其精华,去其糟粕。本文谨记录下《程序员面试宝典》一些关键的知识点、易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录。书里是没有糟粕的,只是指不那么重要,或者比较简单的地方略过而已,并不是说书写的不好。希望以后回顾时无需再看此书,只看保留在文中的精华即可。文中有少许bug,亦摘录在此。本文专注面向对象部分,包括第十章到第十一章的内容第十
《程序员面试宝典》精华 编程语言部分 《程序员面试宝典》精华 编程语言部分正所谓取其精华,去其糟粕。本文谨记录下《程序员面试宝典》一些关键的知识点、易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录。当然这里的糟粕只是指不那么重要,或者比较简单,并不是说书写的不好。希望以后回顾时无需再看此书,只看保留在文中的精华即可。文中有少许bug,亦摘录在此。本文专注编程语言部分,包括第五章到第九章的内容第五章 语言细节
如何统计代码行数 如何统计代码行数linux下提供了很多实用工具,甚至在安卓上,都有移植的busybox包含这些工具。根据KISS理念,这些工具的功能很单一。但这些工具组合起来,就可以很方面的统计代码量了。统计代码行数流程为:首先使用find命令找到所有后缀名符合规则的源代码文件,之后使用wc命令统计行数。文件数可能过多,为防止出错使用xargs命令分割参数列表,最后得到的结果可以使用sort排
socket套接字TCP API socket套接字TCP APIsocket概念socket又称“套接字”,是计算机网络中进程间通信数据通道的一个端点,或称之为句柄。IP地址+端口号就可以唯一确定一个socket。TCP/IP协议族包括传输层(TCP/UDP),网络层(ICMP/IP/IGMP),链路层(ARP/RARP)。应用层通常使用socket地址,即IP地址+端口号来确定通信的对端。而socket正是TCP/
Matlab的parfor并行编程 Matlab的parfor并行编程通常消耗最多计算资源的程序往往是循环。把循环并行化,或者优化循环体中的代码是最常用的加快程序运行速度的思路。Matlab提供了parfor关键字,可以很方便的在多核机器或集群上实现并行计算。parfor关键字的使用由for关键字引导的循环通常为串行运行,如果改为parfor则可以由多个worker以并行方式执行。parfor可以将n次循环分解为
如何写出一个较好的快速排序程序 写出一个较好的快速排序程序快速排序是常用的排序算法之一,但要想写出一个又快又准的使用程序,就不是那么简单了需要注意的事项首先要写正确。通常使用递归实现。其递归相当于二叉树展开,因此如果要用迭代实现的话需要使用一个队列来保存后续遍历信息。快速排序需要找到一个pivot值,如果顺序选择pivot则易造成N^2的复杂度,如果使用随机数则效果最好,但开销又太大,采取三数中值法比较合适。
多普勒失真信号重采样的Matlab仿真分析 多普勒失真信号重采样的Matlab仿真分析应用场景水声通信指的是使用声信号在水中传输数据。相对而言,电磁信号在水中吸收严重衰减过快,光信号受水中悬浮颗粒的影响,也无法完成远距离传输。这两种信号的传播距离约为数百米,而声信号在水中传播距离达到数十千米,成为水下通信的首选方式。水声通信的一个重大挑战就是运动带来的多普勒。多普勒造成信号的频率漂移,影响系统性能,因此非常有必要消除多普勒带来的
《剑指offer》解题笔记 《剑指offer》解题笔记《剑指offer》共50题,这两周使用C++花时间做了一遍,谨在此把一些很巧妙的方法、写代码遇到的难点、易犯错的细节等做一个简单的标注,但不会太过详细,具体算法还是请参考书本。做的比较急,代码还有很多不完善的地方,如有错误,欢迎改正,地址为:github:sword_of_offer。可以使用git clone https://github.com/heL
《软硬件接口》课程大纲 《软硬件接口》课程大纲Coursera课程 The Hardware/Software Interface是华盛顿大学提供的一门课程,其中汇编语言、进程结构、Java实现等章节内容我认为对于学编程的同学来说非常有用。教学环境是Fedora,顺带介绍了一些常用工具的使用。课程大纲这门课程将会让学生知道当软件运行时到底发生了什么,并说明这个问题可以通过硬件架构层、汇编层、C语言层和
阅读《C陷阱与缺陷》的知识增量 看完《C陷阱与缺陷》,忍不住要重新翻一下,记录一下与自己的惯性思维不符合的地方。记录的是知识的增量,是这几天的流量,而不是存量。这本书是在ASCI C/C89订制之前写的,有些地方有疏漏。第一章 词法陷阱1.3 C语言中解析符号时使用贪心策略,如x+++++y将被解析为x++ ++ +y,并编译出错。1.5 单引号引起的一个字符代表一个对应的整数,对于采用ASCII字符集的编译
Codeforces初体验 Codeforces印象这两天抽时间去codeforces体验了一把。首先,果然有众多大牛存在,很多名人一直参加每周一次的比赛,积分2000+,并参与出题。另外,上面题目很多,估计至少一千题。比赛结束后,题目将转为练习题,可以持续尝试。每道题目都有标签,如greedy, math, matrices等等,可以点击相应的标签只做相关的题目。可惜我做了好几道之后才发现。这次解决的题目
Memcached概述 MemcachedMemcached是一套分布式的内存对象缓存系统,使用C语言编写,作为数据库的前端cache,缓存数据库查询结果可以减轻数据库负载。类似一张巨大的hash表,缓存的对象以key-value对的形式存在。工作流程检查客户端请求的数据是否在Memcached中存在,若存在直接返回结果若不存在,查询数据库,返回结果并把结果缓存每次修改数据库时要同时更新Memcach
Ruby on Rails开发Web应用的基本概念 Web应用架构C/S架构Web应用从最初就采用C/S架构。Server负责监听客户端请求,提供资源,Client向server发起请求并渲染页面。两者通过TCP/IP协议栈之上的HTTP协议通信。多层架构在Web 2.0时代,随着交互性的要求,这个架构变得更为复杂。Server需要提供更复杂的服务,Client也要完成更多的交互任务,涌现出很多新的提供更快更好服务的技术。相应的,C/S架构需要以一种更复杂的方式来组织,即多层架构。多层架构中的每一层负责提供一个特定的功能,与其他层通过良好的
C++11新特性 C++11新特性C++11已经推出三年了(2011),编译器GCC4.7、Clang3.1在2012年已经逐渐完善,VS2013也已经支持相关特性,GCC4.8.1支持全部特性。不过新特性似乎在工业界并未得到太多应用,可能出于兼容性和稳定性的考虑吧。推出的新特性还是相当的丰富,看下面这张图就知道了。我仅仅在这里提一下相对比较容易应用的部分,包括语法上的一些扩展以及改进,lambda表达
主定理的证明及应用举例 主定理主定理最早出现在《算法导论》中,提供了分治方法带来的递归表达式的渐近复杂度分析。规模为n的问题通过分治,得到a个规模为n/b的问题,每次递归带来的额外计算为c(n^d)T(n) <= aT(n/b)+c(n^d)那么就可以得到问题的复杂度为:
Map-Reduce原理 Map-ReduceMap-Reduce是由Google在2004年提出的大数据并行编程架构,分为Map(映射)和Reduce(化简)两个步骤,因此得名。它隐藏并行化、容错、数据分布、负载均衡等细节,可以搭建在普通PC上,程序员可以很方便完成大数据并行编程。并行运算的效率假如使用1个处理器花费T1时长可以完成任务,而使用了p个处理器需要Tp时长。那么加速比为:S(Speeup) =
100层楼扔2个鸡蛋、3个鸡蛋…… 原题目现有2个鸡蛋,楼高100层,假设从n层楼及以上扔下会摔碎,n层以下不会,那么怎样扔能以最小的次数得到n?分析最先想起来的是二分法的题目:100层最少需要扔多少次鸡蛋才能求得n?答案是ceil(log2(100))=7 。不过现在只有两个鸡蛋,这种方法就不行了。采用二分法的话,如果1号蛋在50层碎了,那剩下一个鸡蛋只能从1层开始慢慢扔了,需要扔1+49 = 50次。另外一种容易
OpenSSL的Heartbleed漏洞原理及简单模拟 Heartbleed漏洞自从Heartbleed漏洞曝光以来,网上能看到很多相关的文章,但大部分都是写的云里雾里,本文尝试直观明了的对漏洞原理进行说明及模拟。OpenSSL是SSL协议以及一系列加密算法的开源实现,使用C语言编写。OpenSSL采用Apache开源协议,可以免费用于商业用途,在很多linux发行版和服务器中得到广泛应用。OpenSSL出现漏洞造成的影响是巨大的,Heartb
北大程序设计实习MOOC 编程作业 《魔兽世界之二:装备》 这次作业是在第一次的基础上完成的,主要要求是完成五种武士的封装。这五种武士的特性(相应类的成员变量)不大相同,但可以从同一个基类派生。随着时间变化,生成相应的武士,并输出相关信息。OJ地址为:这里解决方案游戏双方各有一司令部,相应的即为head类的两个对象。每个head对象内部produce函数分别完成武士生成。构建武士对象时采用工厂方法,私有make_warrior方法根据武士名称新建相
DSP集成的AIC23芯片的音频接口 AIC23芯片AIC23是语音信号处理、声通信常用的芯片。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。AIC23提供双声道Line in、双声道Line out
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课程。 简介 这
C++标准基金会推荐:在线C++编译器 C++标准基金会是一个致力于对C++开发者社区提供支持,并促进现代C++标准在所有编译器以及平台上的理解与使用的非盈利性组织,成员包括微软、谷歌、英特尔,ARM,Oracle等公司。点这里进入基金会网站。网站有一篇博客,给出了一个推荐使用的在线编译器链接列表,翻译如下。(我发现这群人很有写广告词的天赋!)许多人没有认识到,很多网站都提供了在线使用C++编译器的功能。对C++11的支持正在迅
不使用临时变量的swap再思考 -- 六种解法 不使用临时变量的swap一道经典的面试题如下:两个int型变量a和b,不使用临时变量,交换它们的值。答案相信大家都耳熟能详了:a = a ^ b;b = a ^ b;a = a ^ b;这段程序巧妙的安排运算顺序利用仅有的两个变量实现swap,它相当于这样一段程序:c = a ^ b;b = c ^ b;a = c ^ b;可以发现它的技巧简单的说
瑞利信道:从原理到实现 瑞利信道模型 瑞利信道模型是无线通信信道最重要、最基础的的仿真模型。无线信道中的平坦衰落信道基本上都是在瑞利信道模型的基础上修改而成,比如应用同样广泛的莱斯信道就可以通过在瑞利信道的基础上简单的添加直流分量实现,而频率选择性衰落信道基本上都是几种平坦衰落信道叠加的结果。 小尺度平坦衰落信道中,由于移动体处于不断的运动状态,导致接收端接收到的是来自不同路径的多径信号。移动台的速率将会导致
台湾大学公开课《概率》六到九章笔记以及课程总结 第六周期望概率的推导的奥义是凑字决:概率之和为1!第七周指数分布和几何分布都有失忆性,即条件概率分布不变。第八周联合概率分布对于两人等车问题,可以画图解决。变量相加,则期望相加,如果相互独立,还可方差相加,乘积的期望相乘。第九周 MGF两个随机变量的和的概率累计函数其实是卷积运算,采用MGF可以简化运算,相当于DFT变换。而且MGF的一阶
4G通信技术LTE介绍 参考文档在这里LTE技术LTE是继GSM/EDGE和UMTS/HSxPA之后的由3GPP推出的移动网络技术最新标准,属于4G。未来网络需要更高的数据速率,和包路由优化系统。更好的QoA和更廉价的设施。WCDMA和CDMA系统的终端复杂度非常高,造价昂贵。相关参数LTE要求下行速率达到100Mbps/20MHz,谱效达到5 bit/s/Hz,上行达到50Mbps/20MHz,即谱
科罗拉多大学 C#游戏编程课程总结 为期八周的游戏编程课程今天完成了所有8个编程作业,一个Project,以及期末考试。证书要过一段时间发下来。教授这门课的是Dr.T ,他曾经从事游戏开发5年并执教多年。为什么使用XNA开发?XNA是微软的跨平台游戏开发平台,支持PC和XBOX的同时开发。在Linux平台上有Monogame作为其开源实现。并且,MonoGame 支持 “iOS, Android, Windows (
向量空间中的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
Interactive Python:Mini-project # 1 - "Guess the number" game" 加上这一次的作业,这门莱斯大学的python课程的所有project都已经完成了。这次作业中,收获最大的是关于编程风格的问题。在运算符前后和逗号后面都要添加空格,除非紧邻着括号。类名要使用CamelCase,但方法和函数要使用lower_case_with_underscores。参考链接。另外,python中的全局变量的用法和局部变量一样。在子函数中要对全局变量赋值,要事先使用glo
希尔伯特向量空间中的信号 希尔伯特空间又叫完备的内积空间,是有限维欧几里得空间的一个推广。一段连续信号可以视为一个无限维度的向量,有无限个正交基,相应的,离散的可以视为有限维度的向量。内积:=[x0*,x1*,...] * [y0,y1,...]T两个向量正交,等价于内积为0.模为一的正交基称为标准正交基(othonormal)。对于两个有公共基频的正弦波信号,可以画出二者的
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
佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台 策略分析平台在前两周的工作中,实现了股票价格低于门限值这一策略的event study,即根据门限值来看事件发生前后股票的价格。同时,完成了根据下单的指令来进行回测,计算策略执行期间每一天的价值,以及对投资结果的分析。这一周,要求把这三部分结合起来,能够实现根据门限值直接回测生成过去时间段的下单指令,并进行计算分析。工具和方法编程工具编程语言是python,用到的开源量化分
台湾大学公开课《概率》第五周一道不会作的作业题 ,一种看不懂的解法 第五周的第十题:巷子呈直线,长L0 = 400 m,艾波宁宁宁以v0 = 4 m/s 初速等速穿越。士兵时时 刻刻瞄准她;第t 秒时是否击中她,是随时间t 的均匀的泊松事件(Poisson process),且 与距离离无关。其中,平均每μ 秒能击中一次,μ = 100 / ln( 50 ) 约为25.5622。士兵无法 击中巷子以外的区域;另外,只要她处于巷中,μ 就是常
华盛顿大学公开课Programming Languages by Dan Grossman 简介 Programming Languages by Dan Grossman这门课依然是Coursera平台上的,是第二次开设。现在我已经习惯了Coursera,其他的平台感觉都没有这个好,特别是论坛。这门课是关于什么的?很多编程语言共有的本质概念。使用ML,Racket, Ruby语言,这些语言在很多方面比Java,C#,Python更简单。使用多种语言来发现一些概念是
Martin Odersky Scala编程公开课 第三周作业 Functional Programming Principles in Scala by Martin Odersky这次的作业叫做Object-Oriented Sets。要完成一个完整的类,实现取最大值、排序等方法。由于是函数式编程,这些的实现方法和以往我知道的完全不一样。总结TweetSet有两个子类,Empty和NonEmpty,使用BFT实现。有一点比较惊奇的是
佐治亚理工学院 计算投资公开课第五周作业 市场仿真器 Computational Investing, Part I by Dr. Tucker Balch前几周的作业都比较简单,因此没有发上来。这次要求给出一个市场仿真器,根据order给出各日的账户金额。除此之外,可以分析相应的投资方案的各种参数,如日均回报率等,由于时间关系没有做。本题要求使用明亮行传参数,如:python marketsim.py 1000000
网络智能和大数据公开课Homework3 Map-Reduce编程 Web Intelligence and Big Data by Dr. Gautam Shroff这门课是关于大数据处理,本周是第一次编程作业,要求使用Map-Reduce对文本数据进行统计。使用的工具为轻量级的mincemeat。需要注意的是,使用正则式来匹配单词。做完之后先按照姓名和频率排序,即双重排序,然后写入文件。做作业时因为有两分钟的时间限制,要即时进行搜索。作业要求如
Martin Odersky Scala编程公开课 第二周作业 Functional Programming Principles in Scala by Martin Odersky这一周的主要内容是函数。函数是scala语言最重要的概念,既可以当作函数的参数,也可以作为返回值。函数还可以拥有多个参数列表。因此,这次作业就是要把函数作为参数和返回值,实现set数据类型的一些方法。而set本身却是一个函数,这一点非常奇妙。另外测试程序也要自
释放Ubuntu/Linux系统cache,增加可用内存空间 某台式机内存共3G,但free的内存只有200M,无法满足scala的jvm需求。注意用top命令查看才能看到真正的free内存。下面是查看真正内存使用量的另一种命令。watch -n 1 cat /proc/meminfo搜索发现有三种方法都可以达到释放内存的目的。watch -n 1 free -mor:free -m上述这种方法只增加了几十M。
台湾大学公开课《概率》第三周作业题 機率 (Probability) by Prof. 葉丙成 Ping-Cheng Yeh (Benson)这是一门本科概率基础课程,但我发现很多问题都非常高深,需要一套理论来支撑。Question 5小可的妈妈买了5支一模一样的笔回家,准备让小可以及她的两个姊姊自己领取,但是小可她们不一定要拿,也可以拿很多支,最后5支笔也不一定会分完,没被拿走的笔会被妈妈放在客厅桌
Martin Odersky Scala编程公开课 第一周作业 Functional Programming Principles in Scala by Martin OderskyMartin教授是scala语言的creator,在coursera上面有scala课程。本文是第一周的作业。作业应该做Eclipse里面编辑,使用WorkSheet实时检查。然后使用sbt运行styleCheck,test命令进行测试,run命令来运行mai
慕尼黑大学公开课 Competitive Strategy(竞争策略)总结 第一章博弈同时的博弈:双方同时定制策略如果有显著的次优策略总是不如另一个,则剔除它.如果一个策略组合中没有一方可以单独改变其策略以提高回报,则称为Nash均衡.一个游戏可能没有也可能有多个Nash均衡。囚徒困境在双方都是自私的的时候会出现,通常其均衡点不是最大化总体回报的。序列化博弈:双方交替制定策略,只有有限个回合可以用博弈树来建模分析,然后使用逆向归纳法逆推找到对单
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的倍数多算了一遍,所以要减
国外大学生谈经验:如何在Github参与开源(Open Source on Github: Your First Contribution) 作者结合亲身经历讲述了如何尝试为开源项目做出贡献,鼓励大家参与github上面的github。Github有多火?每个人都能参与其中吗?做出贡献是否很难?作者将为大家一一解答。
三十分钟做一个网页游戏 这篇文章的目的是短时间之内,通过做出一个简单的缘分对对碰游戏,了解网页开发的基本框架。 对于大部分网页,都要包括HTML、CSS、JavaScript三种技术。而相对应的三种文件格式为.html、.css、.js。下面首先给出这个游戏的代码,在分析中学习。我认为了解整体框架之后,学习过程中对于自己不懂的部分百度一下,可以学习的更快,因此我不会做的过于详细。对最新标准支持比较好的是Chrome
Algorithms Part 1-Question 6- 2SUM Median-数和以及中位数问题 本次有两个编程问题,一个是求两个数的和满足一定值的数目,另一个是求中位数。 2SUM问题 问题描述The goal of this problem is to implement a variant of the 2-SUM algorithm (covered in the Week 6 lecture on hash table applications).The file co
Coding the Matrix Week 3 The Matrix 矩阵 本周共有三次作业。所花费的时间为一天左右,还算可以,需要注意的是考虑一些特殊情况,写出能够通用的程序,这就行了。 体会 set()和{}结果相同,可以通用,可以采取后者。>>> type({})>>> type(set())>>> type(dict())>>> {}==set()False>>> {}==dict()True 作业1 hw3 这一
Algorithms Part 1-Question 5- Dijkstra's shortest-path-最短路径算法 Algorithms: Design and Analysis, Part 1 这是斯坦福大学算法公开课第五章作业的解法。 最短路径算法题目要求 本次要求对于一个200个点的无向图应用著名的Dijkstra算法求最短路径。可以选择用heap来计算,速度更快。我采用python语言,用了多个字典来加快速度。In this programming problem you'll code up Dijkstra's shor
Algorithms Part 1-Question 4- SCC 强联通问题 Algorithms: Design and Analysis, Part 1 本次作业是算法课程中最难的一次。我想,除了算法之外,还牵涉到实现的问题。因为很多编程语言都无法处理极大次数的递归调用。 题目说明Download the text file here. Zipped version here. (Right click and save link
Coding the Matrix Week 2 The Vector Space作业 Coding the Matrix: Linear Algebra through Computer Science Applications 本周的作业较少,只有一个编程任务hw2.作业比较简单,如果大学学习过矩阵代数的话,基本上没有什么问题,不过要注意的一点是基2的Span的求法。 基2空间上,在所有基向量中取任意个数个,叠加组合就得到了Span。但是如何取任意个呢?下面给出
Stata和Matlab联合处理金融数据 Stata是统计学专业软件,可以很方便的对数据处理,但几乎只能按照整行整列进行,而且每次只能加载一个矩阵(dta文件),如果要用到多个矩阵数据进行操作或进行复杂的循环控制,就力不从心了。 而Matlab工业界广泛使用的数据分析处理工具,对矩阵支持良好,除了可以像c语言一样完成底层的操作之外,还包含很多函数库,囊括工控、信号处理、金融、人工智能各个行业。虽然没有Stata内置的统计学函数全面,
Coding the Matrix Week 0 作业 Coding the Matrix: Linear Algebra through Computer Science Applications 本次作业分成三部分,第一部分点击打开链接 已经记录过,后两部分也早已完成,趁有时间记下来。 hw0 比较简单,如果有问题在论坛都可以找到答案。不过要注意使用python3运行。# Please fill out this stenc
Coding the Matrix Week 1 The vector 作业 Coding the Matrix: Linear Algebra through Computer Science Applications 这次作业难度不小,第一个作业hw1还好,第二个全部都可以使用comprehension完成,但要小心返回值,还有深入理解本课程中的vector的概念。第三个作业难度不大,但一不小心就做错了,一个原因是grader不够智能,另一个原因就是细节问题
Algorithms Part 1-Question 3- the min cut problem-最小割问题 Algorithms: Design and Analysis, Part 1 Download the text file here. (Right click and save link as)The file contains the adjacency list representation of a simple undirected graph. There are 200
Matlab下多径衰落信道的仿真 衰落信道参数包括多径扩展和多普勒扩展。时不变的多径扩展相当于一个延时抽头滤波器,而多普勒扩展要注意多普勒功率谱密度,通常使用Jakes功率谱、高斯、均匀功率谱。 多径衰落信道由单径信道叠加而成,而单径信道中最重要的就是瑞利(Rayleigh)平坦衰落信道。 下面给出瑞利平坦衰落信道的改进Jakes模型的实现:function [h]=rayleigh(fd,t)%改进的jakes
瀚海星云BBS python脚本登陆 首先使用Chrome浏览器查看登录和操作的过程中发送了哪些数据,然后使用库实现参数post,以获得网页。 现在可以正常登录退出,以后应该增加对网页的分析,这才是这个脚本的目的。 具体代码如下:#coding=utf-8import sys,urllib,urllib2,timefrom HTMLParser import HTMLParserclass Bbs: d
Coursera课程 Competitive Strategy内容简介 Grading 六次quiz选成绩最好的三次算60分,加上考试40分,每次quiz都做并且总分50分以上可以得到含分数的证书,不到50分也能拿到证书。 Week 1 Take care of your competitor 以游戏的形式对竞争场景进行分析,以两个牙膏制造商的例子开始,使用了是否做广告的矩阵。 这样可以引入两个博弈论中非常重要的概念:Nash Equil
Algorithms Part 1-Question 2-QuickSort-快速排序算法 Algorithms: Design and Analysis, Part 1 第一章讲的是分治算法,即DC,这一章讲的是快速排序QuickSort。作业难度已经增加了,Problem Sets做了两次一不小心只得了四分,编程作业也作了两次才作对。 这次作业是实现快速排序,并改变哨兵元素的选择方法比较性能。哨兵可以选择为第一个、最后一个元素,也可以选取首、尾、中间三个元
Coding the Matrix作业Python Lab及提交方法 Coding the Matrix: Linear Algebra through Computer Science Applications 这是一门用python实现矩阵运算的课,第一次作业就感觉对python的提高很大,用到了各种数据类型。 代码如下:## Task 1minutes_in_week = 60*24*7## Task 2remainder_wit
C++自由存储空间:new new运算符可以建立起生存时间不依赖于作用域的对象,即使在函数返回之后也可以使用。 new建立的对象是“自由存储”,或者说是“堆对象”或“在动态存储中建立”。 使用方法mynode* n=new mynode;//结构体delete n;char* s=new char[length];delete[] s; 一般情况下,如果系统没有提供内存管理,在使用完毕堆对象之后
C++的位运算 位逻辑运算符有:&,|,^,~,>>, 可以应用于多种数字类型。 并运算可以用来做标记,把一个字节当作8个flag。 注意不要把按位逻辑运算符与逻辑运算符弄混。逻辑运算符:&&,||,! 返回结果为true或false,用于条件等检测语句。
阶乘与斐波那契数的理解 在算法导论第三章中,提到了阶乘和斐波那契数,颠覆或者说是加深了我以前对这两种数的理解。以前是无法想象这个数有多大,但现在是有了一个概念。 阶乘 阶乘的定义为n!= n>0?1:n*(n-1)! 根据斯特林公式Stirling有:n!=sqrt(2pi*n)*(n/e)^n*(1+THETA(1/n)) 由这个公式,数学中关于阶乘与其他函数大小的比较就了然了。 另一
Coursera Machine Leaning 课程总结 最近机器学习比较火热,身边很多同学都有兴趣,恰好Coursera上面有这门课。讲授这门课的Andrew教授任职斯坦福大学,是coursera的联合创建者,在机器学习领域颇有成就,身边的同学也有几位上这课的,我也跟着学了一下。 这门课注重基础概念,编程作业有一百次提交机会,系统取最高分,相对来说难度不大。但内容很丰富,跟着Andrew老师学完这门课会感觉收获很大。 当然,Andrew老师
Algorithms Part 1-Question 1- the number of inversions-逆序数计算算法 def countInversion(arrayList): if len(arrayList)==1: return (0,arrayList) halfIndex=int(len(arrayList)/2.0) countA,sortedA=countInversion(arrayList[:halfIndex]) countB,sor