这是一篇介绍随机数的文章。本文的主要目的在于展示一个起点,帮助开发和测试人员了解随机数及其原理,并介绍了几种常见随机数算法以及其各自的优劣。 1、随机数的概念随机数是许多计算机应用中必不可少的要素。对于游戏软件,开发者经常利用随机数来模拟自然环境中的许多不确定性行为。但是在大多数计算领域中所使用到的随机数并不是真正“随机”的,而是由为伪随机生成器(PRNG)生成的。为随机数生成器都是通过确定的算法,并且不需要使用外接熵(如不确定的用户输入、时间、热噪声)来生成随机数的算法。 随机性在游戏
前言 因为作者是从后台岗位转通道到移动开发岗位,所以深知作为一个后台开发人员对想了解终端开发技术的渴望,也明白作为一个终端开发者对后台开发技术的好奇。通过阅读本文,你会发现前后台技术之间的本质都是殊途同归的。文章重点还是侧重于讲解终端技术,后台技术没有细讲,只是涉及了对应概念。 注:本文中提到的终端都统指iOS终端 iOS与Linux之间的关系 首先来看iOS与Mac
安全的程序必须最小化特权,以降低 bug 转化为安全缺陷的可能性。本文讨论了如何通过最小化有特权的模块、授与的特权以及特权的有效时间来最小化特权。文章不仅讨论了一些传统的类 UNIX 特权机制,还讨论了较新的机制,如 FreeBSD 的 jail(),Linux 安全模块(Linux Security Modules,LSM)框架,以及 Security-Enhanced Linux(SELinux)。2003 年 3 月 3 日,Internet Security Systems 对 Send
【编者按】无人机能被快速普及,很大程度上是得益于开源飞控的发展,因为困扰着无人机发展的关键设备是自动驾驶仪。那么,开源飞控是什么?又是如何发展过来的?本文由北航无人驾驶飞行器设计研究所的两位教授撰稿于机器人圈,雷锋网编辑节选其中部分内容,与读者分享开源飞控的技术和故事。在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单、使用方便、成本低廉等优势,最先进入了大众的视线。但是,这种飞行器对飞行控制能力的要求是最高的,因此它刺激了大批基于MEMS传感器的开源飞控的出现。 如何定义开源开源(Open So
对于 TeX 爱好者来说,TeX 的漫长历史一直是他们津津乐道的,然而在他们眼里看来是历史的东西,在我看来,仅仅是一场漫长的尚待正式拉开的序幕。Knuth 的 TeX20 世纪 60 年代,著名计算机科学家和数学家,斯坦福大学 Donald Knuth 教授在忙于撰写那部叫做《计算机程序设计艺术》 的书。这部书计划一共写七卷,Knuth 在写第四卷时,出版社拿来了第二卷的第二版书样给他过目,结果令他大失所望。因为当时出版社的印刷技术没有使他的书稿更好看,反而变糟了,尤其是在数学公式和字体上面的缺陷更令他无法
这篇文章探讨并比较两种用于TCP服务器的高性能设计模式。 除了介绍现有的解决方案,还提出了一种更具伸缩性,只需要维护一份代码并且跨平台的解决方案(含代码示例),以及其在不同平台上的微调。 此文还比较了java、c#、c++对各自现有以及提到的解决方案的实现性能。系统I/O 可分为阻塞型, 非阻塞同步型以及非阻塞异步型[1、2]。 阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者手里。 结果调用者被阻塞了, 这段时间了做不了任何其它事情。 更郁闷的是,在等待IO结果的时间里,调用者所在线程此时无法腾出
相关概念套接字是支持TCP/IP网络通信的基本操作单元。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。非常非常简单的举例说明下:Socket=Ip address+ TCP/UDP + p
网络数据包的封包与拆包过程如下:将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时, 每层协议都要加上一个数据首部(header),称为封装(Encapsulation) ,如下图所示:不同的协议层对数据包有不同的称谓, 在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame) 。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。上图对应两台计算机在同一网段中的情况,如果两台计算
嵌入式数据库是轻量级的,独立的库,没有服务器组件,无需管理,一个小的代码尺寸,以及有限的资源需求。目前有几种嵌入式数据库,你可以在移动应用程序中使用。让我们来看看这些最流行的数据库。数据库数据类型存储License支持平台BerkeleyDBrelational, objects, key-value pairs, documentsAGPL 3.0Android, iOSCouchbase LitedocumentsApache 2.0Android, iOSLevelDBkey-value pairsN
最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具。这是一个系列,主题为:· 语言· web框架· 应用服务器· SQL数据访问工具· SQL数据库· 大数据· 构建工具· 云提供商 今天我们就要说说大数据。根据维基百科,大数据是数据集的一个广义的术语,并且该数据集是如此庞大和复杂,以致于传统的数据处理应用程序无法胜任。 在许多情况下,使用SQL数据库用于存储/检索数据就足够了。但在另一些情况下,要么SQL数据库规模不够,要么还有更好的工具。这一切都取决于使用情况。 现在让
前言 vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了。本文只介绍学习vim的方法以及一些vim常用的插件让大家对vim的功能有一个初步的认识,可以认为是vim的广告,并不是vim的教程。 vim与神的编辑器emacs的争论从来没有停止过。其实两种编辑器的设计哲学完全不同,风格迥异。vim的特点是Composability,Emacs的特点是Extensibility。vim使用键序列输入,Emacs则经常使用组合键(同时按)输入,跟弹钢琴一样。所以Emacs有个绰号Esc + Me
我也曾经是容器技术尤其是 Docker 粉丝,但用了一年后觉得事情也没那么美好,而颇有一些同学以及一些公司依然认为容器就是银弹,虚拟机已经是昨儿黄花必须打倒,大家赶紧一切皆容器。这里我对这种观点吐吐槽。首先要明确的是,软件开发和运维活动中,可维护性、正确性、性能的优先级是依次降低的,不要跟我抬杠少数极端情况。关于可维护性和正确性的先后,著名的 "worse is better" 那篇文章就是很好的无奈的解释,如果你犹豫这两者,这还情有可原,毕竟真善美和糙快猛的斗争从未停歇,而你如果第一反应觉得性能是最重要的
GCC 6.1 发布了,该版本较之前GCC5 新怎了大量的功能特性,默认采用C++14为新的标准,替代了之前的C++98。OpenMP 4.5规范将在本版本中被支持。此外,GCC 6.1 增强了对 C++17 的试验性支持;大大改进了诊断特性,包括位置,位置范围,拼写错误标识符建议,选项名字等等改进;新增了修复提示和一些警告提示。 完整发布说明,可以在这里查看。C/C++ 语言主要改进记录如下:一、C family · Version 4.5 of the OpenMP specification i
下面我们就正式开始客户端的搭建 首先我献给大家画一张我的客户端实现的流程图 我PS 画的大家不要见怪啊 不过流程就是这样的 搭建看到我上面的框架图的时候 就知道我的大概设计思路, boy 在这里强调一点 这个是用异步的结构实现 其中线程类 我是参照Java 里面的方法。 好了废话不多 首先先上 BSD SOCKET 这个核心类?123456789101112131415161718192021222324252627282930313233343536373839404142434445464
作者:Pansop / 译者:郭芮(guorui@csdn.net) 本文介绍了一些最受用户欢迎的开源机器人技术,包括 ROS,Gazebo,Poppy Humanoid,iCub 及 Jasmine 等。 ROS ROS(Robot OperatingSystem)是一组开源软件库和工具,能够帮助软件开发人员创建机器人应用程序。ROS 的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人 STAIR 而建立的交换庭(switchyard)项目。到 2008 年,主要由威楼加拉吉
Quora上有一个帖子: Why do most of thedevelopers in Silicon Valley prefer OS X over Linux or Windows? 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows? 【重要】:这就是本文标题的由来! 那位题主还补充说: 「看过许多诸如 Google、Dropbox、Quora 等公司的视频,发现有超过 90% 的工程师都在使用 Mac。Mac 为什么这么流行?难道大家没发现下面这些问题嘛?」
有关游戏开发:游戏开发始终是个小项目,另外由于开发时间的限制,软件工程的思想和方法在游戏开发领域并不怎么受欢迎。从游戏开发团队的规模也能看出,基本上只能算小开发团队,有些工作室性质的,那就更简单了。 我所了解的早些的开发团队,其成员间没有什么严格的分工,大家凭兴趣自由选择一些模块来负责,完成了再去负责另一模块,有其他同事的工作需要接手或协助的也会立即转入。所以游戏开发人员基本都是多面手,从网络到数据库,从游戏逻辑到图形图象,每一项都有所了解,并能实际应用。或者说都具有非常强的学习能力,在接手一项新的任
分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大并发下的本身的性能问题,再次避免缓存的单点故障问题(多副本和副本一致性)。分布式缓存的核心技术包括首先是内存本身的管理问题,包括了内存的分配,管理和回收机制。其次是分布式管理和分布式算法,其次是缓存键值管理和路由。什么是Memcached 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等重大影响。Me
系列文章导航: memcached完全剖析–1. memcached的基础 memcached全面剖析–2. 理解memcached的内存存储 memcached全面剖析–3. memcached的删除机制和发展方向 memcached全面剖析–4. memcached的分布式算法 memcached全面剖析–5. memcached的应用和兼容程序 翻译一篇技术评论社的文章,是讲memcached的连载。fcicq同学说这
1、背景 zhe800公司内大量使用redis,且用途多样:缓存、队列、数据库,都有功能。同时公司内对redis的使用比较随意,每个应用按自己的需求要求运维部署redis-server,导致对redis的使用很混乱,运维部门都无法精确得知redis-server的部署情况。经过长时间的调查、搜集资料才整理出公司内redis的使用情况,目前部署数百多个redis-server实例、版本分为:2.8.9、2.8.11、2.8.17、2.8.19、2.8.23 多种。2、 需求的演变 鉴于
标签暂无描述