电脑CPU的发展史(转)
Intel于1971年发售了自己的第一款4位微处理器,设计与ROM 4001,RAM 4002和移位寄存器4003配合工作。其中4004自身负责运算,其它部分则是使CPU正常工作的重要组成。大部分4004被用于计算器和其它类似的设备,而不是用在计算机中。它的最大频率只有740KHz。4004的后继产品是4040,实质上是4004的改进版本,增加了扩展指令集并提高了性能。
二.8008和8080(1972)
4004使得Intel成为了一家微处理器公司,为了适应潮流,Intel发布了新的8位处理器系列。8008,8080和8085分别于1972年,1974年和1975年发布。
尽管8008是第一款8位处理器,但是并没有前任4004或者继任者8080那么著名。借助于8位数据传输,它的性能比4004有所提升,但频率依旧保守地定在200-800KHz之间,使用10微米工艺制造的8008的性能并没有打动消费者们。
Intel的8080处理器则要成功的多,它增加了新的指令集并采用了6微米的制造工艺。这让频率几乎翻了一番,1974年性能最高的8080达到了2MHz的频率。8080被用到了大量的设备上去,这吸引了许多开发者,例如刚成立不久的微软,投身到Intel处理器的软件开发上。到8086发布的时候,它通过兼容8080来保持软件兼容性。结果是8080系列处理器和其他的关键硬件遍布当时所有的X86微机系统,8080的软件可以在任何X86处理器上运行。8085是8080的低价高能版本,尽管很成功但影响力不大
8086:X86的起点(1978)
Intel的第一款16微处理器,相比于8080大有提升。不仅频率更高,而且16位总线和其它附加硬件允许8086同时执行两条8位指令。它也能执行更高效的16位任务,但此时大多数软件是8位软件,所以支持16位在多任务能力面前显得不那么重要。地址总线则扩展到了20位,使得8086可以存取1MB的内存,因而提高了性能。
8086是史上第一款X86处理器,使用第一版的X86指令集架构,这是日后AMD和Intel几乎所有处理器的基石。
Intel与此同时也在生产8088处理器,这款处理器以8086为蓝本,但是外部总线只有8位。因为依旧能访问1MB内存和运行在较高频率,它比Intel的旧8位处理器性能快得多。
80186和80188(1980)
继8086之后Intel发布了一些使用相似架构的16位处理器。首先是80186处理器,设计用于缓解使用80186 CPU成品机的制造压力。Intel将一些原本在主板上的硬件移到了CPU中,包括时钟发生器,中断控制器和计时器,通过集成这些部分,80186比8086快上许多,Intel也通过提高时钟频率来提升性能
80188同样集成了部分硬件,但是像8088那样总线被限制为8位总线
80286:更多的内存 更好的性能(1982)
80286和80186于同年发布,有着几乎相同的特性,但是80286的地址总线扩展到了24位,使得最高能访问16MB的内存
iAPX 432(1981)
iAPX 432是Intel对于偏离X86的不同设计的一种尝试。Intel希望 iAPX 432性能能够更上一步,但因为一些设计上的缺陷,这款处理器最终以失败告终。尽管X86处理器已经很复杂了,iAPX 432则将CISC复杂度更上一层。芯片的设计过于庞杂,迫使Intel不得不把它做成分离的两片芯片。处理器对于数据吞吐的庞大需求致使带宽不足而性能表现不佳。它比8080和8086表现要好,但不敌后续的X86处理器,最终被放弃
i960:Intel的RICS初尝试(1984)
Intel在1984年推出了自家的第一款RICS(精简指令集)处理器,但它并不是设计与自家的X86处理器竞争,而是主要被用于嵌入式安全解决方案。它的内部设计基于BerkeleyRISC 32位超标量设计概念。最初的i960处理器频率非常低,低速模式仅仅有10MHz,但是经过逐年改进和更先进的制程,它的最终频率达到了100MHz。同样支持4GB内存,被广泛应用于军事系统和商业系统中
80386:X86的32位开端(1986)
Intel的第一款32位X86处理器是80386,于1985年发布。其中最关键的特性就是采用了32位地址总线最大支持4GB内存,尽管这个数字比当时大多数人用的要大得多,但RAM的限制损害了早先X86处理器和它的竞品的性能。与现代CPU不同的是,在80386时代,更多的RAM能够直接转化为性能的提升。Intel同时采用了一些架构改进来提升相同RAM大小的性能表现
为了让产品线在价格上更加友好,Intel发布了80386SL,和32位的80386几乎相同,不过限制了只能进行16位操作,不过它同样支持最大4GB RAM,但只能运行16位应用
.i860(1989)
在1989年,Intel再次尝试了非X86处理器,他们推出了全新的RICS处理器i860。不像早先的i960,这次的i860被设计用于直接在桌面级市场竞争,但是这次的设计问题繁多,它最明显的缺陷是处理器的性能严重依赖于编译器在软件启动时将指令编排好顺序,这虽然帮助Intel将芯片尺寸缩小,复杂度降低,但是在编译过程中将指令从头到尾正确排序几乎是不可能的,最终导致了处理过程中的高延迟
80486:整合浮点运算(1989)
80486是CPU性能史上的又一里程碑,它成功的关键在于在CPU中整合更多的元件。80486上第一次出现了一级缓存,早期的80486封装了8KB缓存,使用1000nm制程。不过随着制程发展到600nm,一级缓存增加到了16KB
此外,Intel还整合了FPU(浮点运算单元),在此之前一直作为一个分离的处理单元。通过将FPU整合进CPU,它们之间的延迟大大降低。80486还使用了更快的FSB接口来提升带宽和其它技术来提升性能。这些改进显著提高了80486的性能。
最初的80486时钟频率为50MHz,后来的采用600nm制程的型号达到了100MHz。在消费领域还发布了80486SX,移除了FPU部分
P5:最初的Pentium(奔腾)(1993)
最初的Pentium CPU在1993年发布,但没有沿用80X86的命名方式。Pentium采用了P5架构,这是Intel在X86 CPU首次采用超标量技术(注:这与我们现在常提到的超线程技术不同),尽管全面超越了80486,但最突出的进步是改进了FPU。
最初的Pentium FPU性能达到80486的十倍,在接下来推出的Pentium MMX中这一特点更加显著,它和最初的Pentium处理器架构相同,但新的MMX SIMD指令集令性能大幅提升
Intel同样提升了一级缓存的大小,Pentium提升到16KB,Pentium MMX提升到32KB。当然频率也在提升,最初的Pentium使用800nm制程,运行在60MHz,但在之后的版本中,采用250nm的Pentium达到了300MHz的频率
P6架构:Pentium Pro(奔腾 Pro)(1995)
Intel计划在Pentium之后迅速推出基于P6架构的Pentium Pro系列,但是遇到了技术问题。借助于Out-of-Order(无序执行指令)设计,Pentium Pro的性能大大提高。最显著的特性是其内部有一个将指令分解为微指令的架构,随后送到通用执行单元。此外还采用了典型的14级流水线结构
最初的目标是面向服务器市场,将地址总线提升至32位并且增加了PAE(物理地址扩展),使得最大能支持到64GB RAM,这远超一般消费者的需求,但大容量内存支持对服务器市场来说很重要
缓存系统也得到了改进,一级缓存使用在2片8KB高速缓存,一片存取指令,一片存取数据。为了弥补和Pentium MMX 16KB缓存的差距,Intel采用了从256KB到1MB大小不等的二级缓存,以与CPU相连的单独芯片形式封装在CPU中,它与CPU通过BSB总线相连
Intel原来打算把Pentium Pro推向消费者市场,不过最终只在服务器市场销售,Pentium Pro带来了几种革命性改进,但是表现难以在Pentium和Pentium MMX面前脱颖而出,后两者在16位操作下性能优异,而那时软件市场还是16位的天下,同时由于缺乏对于MMX指令集的支持,结果导致Pentium Pro在MMX指令集优化软件下表现不佳
PentiumPro或许会在消费级市场站住脚,但是由于分离的辅助芯片(包括二级缓存)导致造价依旧昂贵。最快的Pentium Pro处理器能达到200MHz,制造工艺为500nm和350nm
P6架构: Pentium II(奔腾II)(1997-1999)
Intel没有放弃P6架构,1997年Pentium II发布。Pentium II几乎一扫所有Pentium Pro的缺陷。它的底层架构和Pentium Pro相似,坚持使用14级流水线架构和一些增强核心来改善性能。一级缓存由16KB数据缓存和16KB指令缓存
Intel还选择通过使用低价缓存芯片和更大的硅片封装来降低成本,这两种方法对于降低产品价格非常奏效,但是这些存储模块不能与CPU的速度相匹配,因此二级缓存只有一半的速率,在早期的CPU中这些方法对于提升性能异常有效
Intel同时增加了对于MMX指令集的支持,Pentium II使用的核心代号分别为"Klamath"和 "Deschutes",同时也作为Xeon和PentiumII Overdrive系列产品在服务器市场出售,最高端的型号拥有频率450MHz容量512KB二级缓存
P6:Pentium III和1 GHz竞赛(1999-2003)
Intel打算使用代号为Netburst 架构的CPU来接替PentiumII ,但是事与愿违,新架构处于难产。因而Intel继续压榨P6架构推出了Pentium III处理器
第一款产品代号为Katmai,它与Pentium II非常相似,同样使用了只有一半CPU时钟频率的二级缓存。底层架构包括了一些其他的显著变化, 14级流水线的一些部分被融合在一起,缩短至10级流水线。得益于流水线的改进和时钟频率提高,Pentium III性能小幅度超越Pentium II
Katmai使用250nm工艺,但是随着制造工艺演进到180nm,Intel得以大幅度提升Pentium III的性能。代号Coppermine的处理器将二级缓存集成到CPU,并且削减了一半容量(降至256KB),但因为与CPU保持同速,性能表现抢眼
Coppermine是Intel在1GHz大战中面对AMD Athlon的竞品,Intel成功地将频率提升到1.13GHz,但是在随后发现不能以此频率稳定运行因而被召回了,这使得1GHz的型号成为最快的Pentium III
最后的Pentium III核心代号为Tualatin,采用130nm制程,频率达到1.4GHz,二级缓存扩容至512KB,一定程度提高了性能
P5和P6架构 Celeron(赛扬)和Xeon(志强)
在发布Pentium II的同时Intel也发布了Celeron和Xeon系列,这系列产品和Pentium II或是之后的Pentium III拥有相同的核心,只是缓存大小不同。第一款基于PentiumII的赛扬处理器没有二级缓存,结果性能表现糟糕。而基于Pentium III的赛扬处理器拥有对应产品的一半的缓存。结果是使用Coppermine核心的赛扬处理器只有128KB二级缓存,随后的Tualatin核心产品增加到了256KB
这些一半缓存的衍生品被称作Coppermine-128和Tualatin-256,Intel以媲美Pentium III的频率售卖这些CPU,让他们拥有良好的性能表现来和AMD的Duron处理器相对抗。例如微软在Xbox游戏机上使用的就是733MHz的Coppermine-128处理器
第一款Xeon处理器也很类似,不过拥有更大的二级缓存,基于PentiumII的Xeon处理器至少有512KB的缓存,高端型号能达到2MB
Netburst架构: Pentium 4 Willamette(威廉)和Northwood(北木)(2000-2004)
时间来到2000年,Intel的Netburst架构终于准备就绪,推向市场的产品就是Pentium 4,这样的组合本该让Intel在之后的6年里在CPU市场独领风骚。首先发布的是代号Willamette的产品,领跑Pentium 4最初的两年。尽管新品在性能上勉强超过PentiumIII,但这段时间Intel麻烦不断。Netburst 架构的特点是流水线长频率高(注:堆了多达20级的流水线),Willamette的频率高达2GHz,但1.4GHz的Pentium III在某些任务中表现竟然优于Willamette处理器。结果这一时期AMD的Athlon处理器的良好表现使其独领风骚
在高端领域Intel推出了超线程技术来改善多任务下的资源利用问题,那时的超线程技术不像现在Core i7那样高效,但还是能够在一定程度上提高性能
Willamette和Northwood同样出现在Celeron和Xeon系列里,像上代产品一样,Intel通过调整二级缓存大小来区别性能
P6: Pentium-M(奔腾M)(2003-2008)
高性能的Netburst发热量巨大,将其用于笔记本表现不佳。因而2003年Intel发布了旗下第一次为笔记本设计的专用架构。Pentium-M基于P6架构,采用12-14级可变流水线,这也是Intel第一款可变流水线长度处理器,意味着如果需要的数据已经读取到缓存中,指令只需经过12级流水线就可以执行完毕,如果没有则再经过额外的2级流水线来读取数据
首款处理器采用130nm工艺,包含1MB二级缓存。主频达到1.8GHz而功耗只有24.5W。2004年发布的名为Dothan的后继型号,采用90nm工艺,拥有2MB二级缓存和更多的辅助核心,改善了IPC。最终达到2.27GHz主频和仅仅27W的功耗
Netburst: Prescott(2004-2008)
Northwood在2002年至2004年作为Netburst 架构的主力,在这之后Intel发布了Prescott架构带来了巨大的提升,使用90nm工艺,二级缓存增至1MB,全新的LGA 775接口,支持DDR2内存,新的FSB。使得Prescott相较于northwood有了更大的带宽,极大地提高了Netburst架构的性能。Prescott同时也是第一款64位X86 CPU,能够支持更大的RAM
Prescott本应是Intel处理器家族中的皇冠,可结果是惨败。Intel再次狂堆至31级流水线(注:包括前端处理)Intel希望通过提高频率来抵消长流水线的弊端,但是只达到了3.8GHz。Prescott 发热量巨大,功耗过高。Intel寄希望于90nm制程能解决这一问题,结果是增加的晶体管密度致使散热更加困难。因为频率没有达到预期,Prescott的“革命性”改进成效
Netburst: Pentium D(奔腾D)(2005-2008)
2005年,双核处理器之战打响。AMD率先发布了自己的双核产品Athlon 64,但只是画了张大饼。Intel匆忙推出基于MCM( multi-coremodule)的双核产品迎战,并将其命名为Pentium D,核心代号Smithfield
事与愿违,Pentium D处理器饱受批评,因为它有着和Prescott一样的问题。两片基于Netburst架构的芯片发热巨大、能耗惊人,频率则最多只有3.2GHz。因为带宽上的不足,Smithfield的IPC性能大打折扣,而同时期AMD的单芯双核处理器则非常成功
Smithfield的继任者是Presler架构,采用新的65nm工艺,由两片CederMill芯片封装而成。改善了发热和功耗,并且频率提升至3.8GHz
Presler有两点重要改进,一是将TDP从125W降至95W。二是归功于更小的芯片尺寸,二级缓存几乎翻了一倍,达到了2MB。一些发烧级型号使用了超线程技术,允许CPU同时执行4线程。
改头换面:Core 2(2006-2011)
Intel最终放弃了Netburst架构转而采用和P6、Pentium-M类似的设计。他们终于意识到P6的设计是高效可行的。Intel重新设计了核心架构,新架构采用14级流水,明显比Prescott的31级要少得多
Core 2系列具有很高的可扩展性,Intel推出了从TDP只有5W的移动型号到130W的高端型号,其中Intel售出的大部分是Core 2 Duo(双核)和Core 2 Quad(四核)的产品,不过也有Core Solo、Celeron,Pentium和Xeon系列产品。四核产品是将两个单芯双核芯片封装在一起,单核产品则由双核屏蔽而成,配置的二级缓存从512KB到12MB不等
随着核心架构的改进,Intel终于可以与AMD一较高下,PC DIY市场也进入了新的黄金时代
Bonnell架构: Silverthorne 和Diamondville(2008)
Core 2处理器广受欢迎,但Intel需要一些价格低廉的产品来攻占低端市场,于是Atom诞生了。芯片大小仅有26平方毫米,不及Core 2的四分之一
Intel并没有选择完全重新设计Atom Bonnell架构,而是选择借助P5架构的基础。第一款Atom芯片,核心代号Silverthorne,TDP仅有3W,让它能够在无法使用Core 2的地方发挥功用。Silverthrone的IPC性能毫无亮点,不过还是能够达到2.13GHz频率。配有512KB二级缓存,不过这两者对于弥补较低的IPC没有太大帮助。不过Silverthrone的低价还是物有所值
接替Sliverthorne的是Diamondville,频率降低至1.67GHz,增加64位支持,改善了面对64位软件的性能表现
.Nehalem:第一款Core i7(2008)
随着高端处理器市场的竞争白热化,Intel决心不能坐以待毙。他们重新设计了Nehalem架构。包括重新设计的缓存控制器,每核心二级缓存降至256KB,增加4-12MB不等的三级缓存(所有核心共享)。Nehalem产品线包括单核到四核,采用45nm工艺
Intel还重新设计CPU和系统其它部分的总线,从19世纪80年代起一直采用的FSB总线终于寿终正寝,取而代之的的是全新的QPI和DMI。Intel同时将内存控制器和PCIe控制器一并集成到了CPU中,这项举措增加了带宽的同时降低了延迟
Intel再一次增加了处理器的流水线,这次是20-24浮动,频率没有任何提升。同时也是Intel第一款采用睿频技术的处理器。尽管最高频率是3.33GHz,不过可以短时运行在3.6GHz。
最后一项主要特性是Nehalem标志着超线程技术的回归,得益于这项技术和其它改进,Nehalem与Core 2相比在满负载情况下性能最高能提高一倍
Bonnell:Pineview和Cedarview(2009)
2009年,Intel发布了两款新的基于Bonnell架构的Atom处理器。第一款代号为Pineview,依旧采用45nm制程,采用集成部分原属于主板的组件的方法来提升性能,包括集成显卡和内存控制器,并且降低了功耗和发热。使用MCM(Multi-Chip Module)技术的双Pineview核心版本也有发售
.Westmere:核显的开端(2010)
Intel使用32nm工艺重做了Nehalem并命名为Westmere,它的底层架构没有太多变化,但是通过制程带来的进步,Intel可以在CPU中塞下更多的东西,Westere堆至10核心以及多达30MB的三级缓存
集成在其中的核显架构类似GMA 4500,除了前者多出了两个EU,频率从低端CPU的166MHz到高端CPU的900MHz
尽管32nm的CPU和45nm的北桥没有完全融合在一起,不过还是封装在一块基板上,这有助于减低CPU和北桥中的内存控制器的通信延迟。API的支持上和GMA系列没有太大变化,但是性能提高了50%
Sandy Bridge(2011)
SandyBridge架构完成了性能上的巨大飞跃,流水线重新缩减为14-19级,采用了新的微指令缓存能够存储至多1500条微指令,当微指令全部进入缓存时可以绕过多出的5级流水,如若没有则执行完整的19级流水
此外还有一些其他改进,包括支持DDR3内存,更多的组件集成到CPU中,所有部分集成在一个芯片中,这些子系统由一条高带宽的总线连接在一起
此外还更新了核显,改变了上代产品一款核显打天下的思路,这次发布了三种型号的核显,最高端的是12EU的HD Graphics 3000,时钟频率可达1.35GHz。中端型号为HDGraphics 2000,缩至6EU。低端型号也是6EU,但阉割了一些额外功能
Bonnell: Cedarview(2011)
2011年Intel发布新的Atom处理器,通过缩小核心来改善IPC性能,但事实上收效甚微
Cedarview的两项重大举措就是采用32nm工艺和频率提升至2.13GHz,同时得益于改进后的内存控制器,可以支持频率更高的DDR3内存
Ivy Bridge(2012)
Sandy Bridge产品的后继者是Ivy Bridge系列产品,是Intel Tick-Tock战略中的Tick+产品。IvyBridge的IPC性能仅比SandyBridge好上一点,但是带来了一些其他的亮点
Ivy Bridge最大的亮点是能耗,采用22nm的工艺降低了发热,上代i7产品的典型TDP为95W,而这代产品降至77W。这对于移动端意义非凡,使得移动端四核CPU仅有35W的TDP,而此前移动端四核CPU的TDP为45W
.Haswell(2013)
Intel在IvyBridge发布后仅一年发布了新的Haswell架构,这次仅仅能算上是进步而不是革新。AMD此时在高端产品无法与Intel抗衡,所以Intel继续挤牙膏,Haswell与Ivy Bridge相比仅提高10%左右
和IvyBridge系列类似,Haswell最大的吸引力在于能耗和iGPU,Hsawell在CPU中集成了电压管理模块,使CPU能够有更好的能耗表现,但问题是电压管理模块导致CPU发热更大
与此同时为了与AMD的APU抗衡,Intel在高端iGPU中集成了40组EU,同时通过增加128MB L4 eDRAM缓存,大幅提高iGPU性能
Broadwell(2014)
Intel的下一代架构的核心代号为Broadwell,采用14nm制程,为移动端而设计,于2014年发布。首个Broadwell产品是Core M,双核超线程CPU,TDP仅有3-6W
但是在桌面市场,几乎难见Broadwell的身影,仅在2015年中期发布寥寥几款产品,但集成了Intel史上最强核显,包括48组EU单元,128MB L4 eDRAM缓存,解决了核显的带宽问题,在游戏性能的测试中,表现优于AMD最快的APU
Skylake(2015)
在Broadwell桌面端发布后不久,Intel发布了下一代产品Skylake架构,尽管这是Intel至今最强的CPU,不过平台的变化可以说比CPU本身更重要
首先是支持DDR4内存,能够比DDR3内存提高更高的带宽,还有全新的DMI 3.0总线,升级的PCIe控制器和支持更多的设备连接
同时iGPU也得到了升级,最高端型号为Iris Pro Graphics 580(Skylake-R系列),包含72组EU和128 MB L4 eDRAM缓存,但大部分CPU搭载的是包含24组EU的核显,其架构与上代Broad架构相似
电脑CPU的发展史(转)的更多相关文章
- 查看电脑CPU核心数的方法
查看电脑CPU核心数的方法: 方法一: 同时按下[Ctrl+Shift+Esc]组合快捷键打开任务管理器: 点击[性能]就可以看出是几核CPU了: 方法二: 在计算机图标上面点击右键,选择“管理”: ...
- 如何查看自己的电脑 CPU 是否支持硬件虚拟化
引言 在你安装各种虚拟机之前,应该先测试一下自己的电脑 CPU 是否支持硬件虚拟化. 如果你的电脑比较老旧,可能不支持硬件虚拟化,那么将无法安装虚拟机软件. 如何查看自己 CPU 是否支持硬件虚拟化 ...
- 完美解决夏天电脑cpu发烫问题
最近有朋友跟我反馈,说苹果电脑虽然好用,但是一直有一个问题困扰着他,就是电脑散热的问题.每到夏天的时候,电脑运转之后就会发烫,用的特别的不舒服. 相信用电脑的都会有这样的感受吧,更加相信你们都用过以下 ...
- 监控电脑CPU,内存,文件大小,硬盘空间,IP,用户名
public class MonitorTools { /// <summary> /// 获取具体进程的内存,线程等参数情况 /// </summary> /// <p ...
- 使用python函数持续监控电脑cpu使用率、内存、c盘使用率等
方法一: # import time 导入time模块 # import psutil 导入psutil模块 # def func(): # while True: ------->持续监控得w ...
- 查看windows电脑CPU核心数,线程数
在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中输入“cpu get *”即可查看物理CPU数.CPU核心数.线程数.其中, Name:表示物理CPU数 NumberOfC ...
- 电脑CPU开机上电后的第一条指令
结合上面的文章,CPU上电后第一条指令是通过CS:IP来指定的,CPU厂家会给其初始值,对于386处理器来说,CPU第一条指令地址是 0xFFFFFFF0 这里会有一个问题,CPU怎么能一上来就去0x ...
- 获取电脑cpu的使用情况
using System; using System.Diagnostics; namespace ConsoleApplication1 { class Program { static void ...
- 判断电脑CPU硬件支不支持64位
你可以在注册表中查看: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PROCESSO ...
随机推荐
- H - Quicksum(1.5.3)
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit cid=1006#sta ...
- 【WPF】MVVM前台绑定一组RadioButton按钮
需求:制作一组RadioButton,像下面这样的效果: [MVVM]要显示一组RadioButton按钮,想法是Controller层联网获取到数据后,将数据进行处理,然后加到一个Observabl ...
- netfiler/iptables
一. 什么是netfilter netfilter is a set of hooks inside the Linux kernel that allows kernel modules to re ...
- openwrt使用list
openwrt中用到双向无头链表,实际应用时应在外部定义实体链表头,后续可直接应用链表函数(宏定义已将链表头排除在外): static struct list_head timeouts = LIST ...
- 教你如何做一个优雅的Ecmascripter /转
看看这些被同事喷的JS代码风格你写过多少 殷荣桧 JavaScript 今天 现在写代码比以前好多了,代码的格式都有eslint,prettier,babel(写新版语法)这些来保证,然而,技术手段再 ...
- Java中Calendar.DAY_OF_WEEK需要减一的原因
http://blog.sina.com.cn/s/blog_45c06e600100pm77.html ——————————————————————————————————————————————— ...
- kettle中执行sql语句
一.直接执行sql,不添加任何参数 1.先找出执行sql语句的控件 2.打开控件,填写要执行的sql语句,主要下图中的红框中选项,后面会介绍各个选项的作用 二.执行sql,变量替换选项,变量指的是ke ...
- selenium测试(Java)--告警框处理(十四)
下面代码中介绍了告警框的处理方法 package com.test.alerthandle; import org.openqa.selenium.By; import org.openqa.sele ...
- Mastering the game of Go with deep neural networks and tree search浅析
Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." ...
- 关于Java方法的参数
刚好看到C++的函数这块,说C++中除了引用类型的形参,其他都是实参的副本(个人总结). 隐约记得Java中方法的参数也是这么回事,于是手动测试一番. 结果 Java中方法的参数都是值传递,哪怕是引用 ...