为您找到搜索结果:3122个
为什么寄存器比内存快?
作者:阮一峰日期:2013年10月14日计算机的存储层次(memoryhierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?MikeAsh写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。原因一:距离不同距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远,所以要耗费更长的时间读取。以3GHz的CPU为例,电流每秒钟可以振荡30亿次,每次耗时大约为0.33纳秒。光在1纳秒的时间内,可以前进30厘米。也就是说,在CPU的一个时钟周期内,光可以前进10厘米。因此,如果内存距离CPU超过5厘米,就不可能在一个时钟周期内完成数据的读取,这还没有考虑硬件的限制和电流实际上达不到光速。相比之下,寄存器在CPU内部,当然读起来会快一点。距离对于桌面电脑影响很大,对于手机影响就要小得多。手机CPU的时钟频率比较慢(iPhone5s为1.3GHz),而且手机的内存紧挨着CPU。原因二:硬件设计不同苹果公司新推出的iPhone5s,CPU是A7,寄存器有6000多位(31个6...
C++ STL 里为什么不维护一个 size 成员变量?
回答:为什么GCC里要把list::size()的复杂度搞成O(N)?一通搜索后终于看到有这样的讨论:关于list::splice()函数。list是链表结构,它的优势就在于可以O(1)的时间复杂度任意插入删除甚至拼接list片段(删除时可能不是,因为要释放内存),list::splice()是一个很强大的功能,它可在任意位置拼接两个list,这正是list的优势。如果我们在类内部以一个变量储存list的长度,那么splice()之后新list的长度该如何确定?这是一个很严峻的问题,如果要在拼接操作时计算拼接部分的长度,那么将把O(1)的时间变成O(N),这么一来list相对vector的优势就消失殆尽。面对这个问题,GCC和VC的STL库作者们做了不同的选择。GCC选择舍弃在list内部保存元素数量,而在size()时直接从头数到尾,这便出现了开头看到的O(N)时间才算出size();相反,VC中有了变量_Mysize,无论在insert()erase()splice()或是push()pop()时都需要对其做相应修改。在上面的两个试验中已经看出同样是10000个push_back(...
javaweb开发环境搭建
概要 1.SSH开发相关软件及开发包下载2.软件安装及相关设置3.最简单的Web程序1.软件下载 在D盘建一个目录JavaTools,用来存放下载的软件和开发包。(本教程将使用D盘,你也可以使用C盘或E盘)。下载软件的原则,有Zip版的不下载exe版的。1)JDK:JDK6Update7Windows版 下载页面:http://java.sun.com/javase/downloads/index.jsp 下载链接:https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter;pgid=yYdgaHqkkjVSR0EUPIQsoQ3D0000o_tQgoGy;sid=AeftgEasIkTtgQ4qZlGlhakFzl2YCYvpVAUiQVuyc5IGAw== 更多信息:http://java.sun.com2)IDE:EclipseI...
Android环境搭建
一、JDK的安装我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JAVA_HOME值为:D:ProgramFilesJavajdk1.6.0_18(你安装JDK的目录)CLASSPATH值为:.;%JAVA_HOME%libools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%in;Path: 在开始追加%JAVA_HOME%in;安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java–version查看JDK的版本信息。出现类似下面的画面表示安装成功了: 二、Eclipse的安装Eclipse到官网上下载,EclipseIDEforJavaDevelopers,这个版本下载后可以添加android开发的插件 三、AndroidSDK安装在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。•运行SDKSetup.exe,点击AvailablePackages。如果没有出现可安装的包,请点击Set...
(入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?
什么是AOP(Aspect Oriented Programming)? 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改 变这些行为的时候不影响业务逻辑的代码。 AOP的底层实现技术是JDK动态代理。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式(GoF强调的是接口或抽象类在实际案例中的灵活应用和智慧)的延续,设计模式孜孜不倦追求的是调用者和被调用者之...
安装ArcGIS 9.2server插件 java环境的配置
CreateArcGISupdatesitesTheArcGISEclipseplug-inscanbeinstalledbycreatingalocalupdatesiteforeachseparateplugin. 1.FromtheEclipsemainmenu,chooseHelp>SoftwareUpdates>FindandInstall.2.ClicktheSearchfornewfeaturestoinstallbuttonandclickNext.3.Bydefault,youshouldseeseveralupdatesites. Youwilladd 3newsites:onefortheEngineplugins,onefortheServerplugins andoneforCorepluginsrequiredforboth.CorecontainstheJavaHelpSystemaswell.ToaddanArcGISupdatesite,clicktheNewLocalSitebutton.Youma...
HTML5中canvas与SVG有什么区别
SVGSVG是一种使用XML描述2D图形的语言,它基于XML也就是我们可以为某个元素附加JavaScript事件处理器,如果SVG对象的属性发生变化,那么浏览器能够自动重现图形。CanvasCanvas通过JavaScript来绘制2D图形。它是逐像素进行渲染的,一旦图形被绘制完成,如果它的位置发生了变化,那么整个场景都需要重新绘制,包括任何或者已经被覆盖的对象SVG与canvas的区别(1)SVG是用来描述XML中2D图形的语言,canvas借助JavaScript动态描绘2D图形(2)SVG可支持事件处理程序而canvas不支持(3)SVG中属性改变时,浏览器可以重新呈现它,适用于矢量图,而canvas不可以,更适合视频游戏等。(4)canvas可以很好的绘制像素,用于保存结果为png或者gif,可做为API容器。(5)canvas取决于分辨率。SVG与分辨率无关。(6)SVG具有更好的文本渲染,而Canvas不能很好的渲染,渲染中的SVG可能比Canvas慢,特别是应用了大量的DOM。(7)画布更适合渲染较小的区域。SVG渲染更好的更大区域。SVG与canvas之间的比较SVGc...
js操作对象属性用点和用中括号有什么不同
书读百遍其义自见学习《JavaScript设计模式》一书时,学习工厂模式这一章节,发现了对象后使用中括号的情况,如下:varFactory=function(type,content){if(thisinstanceofFactory){//对于一下this后使用中括号不是很明白vars=newthis[type](content);}else{returnnewFactory(type,content);}}不是很明白,百度了一些解释,如下:中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。中括号运算符可以用纯数字为属性名。点运算符不能。中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。/***在JavaScript里面.可以理解成的*下面的例子中,a.b表示对象a的属性b,既可以设置也可以读取*object[key]=>key为常量时,object[key]等价于object.key,例如:a.b==a['b']*特殊的,object[key]=>key为变量时,只能用中括...
thinkphp5.1使用支付宝接口(沙箱环境)
接口文件以及沙箱的测试账号可以去支付宝开发中心获取,下面给出一个简单地例子我新建了一个控制器Pay用来专门做支付<?phpnamespaceappindexcontroller;usethinkDb;require_oncedirname(dirname(dirname(dirname(__FILE__)))).'/extend/alipay/pagepay/service/AlipayTradeService.php';require_oncedirname(dirname(dirname(dirname(__FILE__)))).'/extend/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';classPayextendsController{public$config=array(//应用ID,您的APPID。'app_id'=>"**********",//商户私钥'merchant_private_key'=>"¥¥¥¥¥¥¥¥¥",//异步通知地址'notify_url'...
在一些开源框架中,dist文件夹是什么意思
全称是distribution。distribution英[dɪstrɪ'bjuːʃ(ə)n]美['dɪstrə'bjʊʃən]:发行版n.分布;分配在某些框架中,因为开发和发布是的内容或者代码形式是不一样的(比如利用Grunt压缩等等),这时候就需要一个存放最终发布版本的代码,这就是dist文件夹的用处。 是最终放到服务器上的发布版本。如果是放到开源去,一般放开发版,而不是发布版的,因为发布版通常是全部压缩优化过,不利于开源开发。...
2017——我们为什么选择JAVA?JAVA的发展方向和学习方法(必看)
2017——我们为什么选择JAVA?JAVA的发展方向和学习方法(必看)...
在Redis Sentinel环境下,jedis该如何配置
在Redis主从复制架构中,如果master出现了故障,则需要人工将slave提升为master,同时,通知应用侧更新master的地址。这样方式比较低效,对应用侧影响较大。 为了解决这个问题,Redis2.8中推出了自己的高可用方案RedisSentinel。 RedisSentinel架构图如下: 默认情况下,每个Sentinel节点会以每秒一次的频率对Redis节点和其它的Sentinel节点发送PING命令,并通过节点的回复来判断节点是否在线。如果在down-after-millisecondes毫秒内,没有收到有效的回复,则会判定该节点为主观下线。如果该节点为master,则该Sentinel节点会通过sentinelis-master-down-by-addr命令向其它sentinel节点询问对该节点的判断,如果超过<quorum>个数的节点判定master不可达,则该sentinel节点会将master判断为客观下线。这个时候,各个Sentinel会进行协商,选举出一个领头Sentinel,由该领头Sentinel对master节...
flask之环境的搭建
一、查看ubantu上是否安装虚拟环境的包virtualenv--version这里显示的是:15.0.1的版本,如果没有的话,sudopipinstallvirtualenv sudopipinstallvirtualenvwrapper(虚拟环境管理工具)virtualenvwrapper是virtualenv的扩展管理包,用于更方便管理虚拟环境,它可以做:将所有虚拟环境整合在一个目录下管理(新增,删除,复制)虚拟环境切换虚拟环境查看创建虚拟环境的命令 mkvirtualenv--version没有的话参考链接:https://www.cnblogs.com/yanguhung/p/10145759.html二、创建虚拟环境mkvirtualenv虚拟环境名称(默认python2.x) 例如:mkvirtualenvpy_flask 但是由于我的是pyhton3的版本,因此指定了虚拟环境中pyhon的版本为3mkvirtualenv-ppython3flask_project创建过程中报错:OSError:Command/home/pytho...
我们的代码为什么要压缩成7z?
代码为什么要压缩成7z? a.代码的复制速度是非常慢的. 几M或几KB都是常事。 b.压缩成7z格式后,复制速度迅速提高上百倍或者几十倍 下面是html文件: html文件总共占20.6M。压缩的只要是网页即可(html、shtml、mhtml…)即可。 压缩成7z后,存储容量迅速下至1.09M。 推荐用 “好压” 等待压缩完成后即可(压缩过程中较慢… 耐心等待)。 ...
函数的重载与 泛型(generic)有什么不同?
函数重载指 重载函数,形参(类型)不同,实现的功能一样。泛型算法指2个方面:这些算法可作用于各种不同的容器类型,而这些容器类型又可以容纳多种不同类型的元素。...