程序员如何选购适合自己的电脑
文章目录
- 一、前言
- 二、选购笔记本需要看的一些重要硬件参数
-
- CPU(*处理器)
- GPU(显卡)
- Memory(内存)
- Disk(硬盘)
- 屏幕
- 尺寸
- 三、不同类型电脑怎么选
-
- 不同类型的笔记本
- 如果是学生,文史科更适合用轻薄本,理工科更适合中游戏本
- 如果是工作,不同工作岗位电脑要求稍有不同(仅分析程序员)
- 四、为什么相同配置有的电脑便宜,有的电脑贵
-
- 五千档的本子,一分钱一分货,没有品牌溢价,全靠硬件成本堆嵌
- 一万档的本子,轻薄本开始走品牌溢价,游戏本继续性能堆嵌
- 二万档的本子,品牌溢价或移动图像工作站
- 为什么相同配置有的电脑便宜,有的电脑贵
- 五、尾声
一、前言
在程序员的工作中,很多初创公司、中小公司是员工可以用自己电脑搞开发,传统行业或者规模大点的公司一般要求用公司的电脑。不管哪种,程序员也基本上每个人有自己的一台电脑,一般写后端都是五大品牌的性能本或游戏本,写前端的女生有时用mac。
本文来讲讲程序员选购的一些小技巧,顺便学学基本的硬件知识。
二、选购笔记本需要看的一些重要硬件参数
CPU(*处理器)
目前,电脑上用的CPU主要由Intel和AMD两家公司设计制造,高通也造CPU,不过只是智能手机上的。
先说Intel,这家一直造CPU,前前后后出过好几代,分别是赛扬、奔腾、酷睿、至强。
赛扬(Celeron):英特尔低端CPU系列,主要以价格优势和较强的稳定性吸引了办公和文字用户等一系列低端用户,当然低端家用机市场也很有优势。赛扬系列CPU主要特点是价格低,缺点是性能低,所谓一份价钱一分货,在赛扬身上得到了应验。
奔腾(Pentium):英特尔中低端CPU系列,主要面向基础游戏娱乐用户和基本家庭娱乐用户,以及对文件处理速度要求较高的办公用户。奔腾系列CPU的性价比一直比较高,受到了广大消费者的喜爱。奔腾系列CPU的主要特点是性价比高,主要缺点是,有高不成低不就之嫌。
酷睿(Core):英特尔中、高端CPU系列,主要面向中高端游戏用户,以及中高端的办公用户,特别受到许多游戏玩家的亲睐和追捧。酷睿系列CPU的主要特点是性能强劲,节能高效,热量小;缺点是价格高,目前深受家庭用户的欢迎。
截止目前,新发布的笔记本上所装载的处理器,前面两种(赛扬和奔腾)基本上是找不到,所有的都是酷睿。实际上,英特尔在酷睿的基础上区分了i3、i5、i7、i9等各个系列,不用说,看数字就知道,i9>i7>i5>i3,其中,笔记本平台主要为i5和i7。
另外,Intel还有一种“至强”系列处理器,主要用于服务器上,和程序员选购电脑关系不大,这里略过。
所以,选电脑的时候,先看CPU参数。
步骤一,看CPU系列:方法是i9>i7>i5>i3,注意这个性能顺序仅同代同类型处理器比较时成立。
步骤二,看CPU代数:i5、i7后面有个横杠,横杠后面第一个或前两个数字就是代数,如i5-9300H为第九代,i5-10210U为第十代。
步骤三,看CPU类型:标注在CPU型号最后,分为低压版(14nm为U,10nm为 G+数字)和标准电压版(H)。低压版性能一般,但功耗低发热少,主要用于轻薄本;标压版性能较强,但功耗大发热多,主要用于游戏本。
- Q代表至高性能级别;
- X代表高性能,可拆卸的;
- H是高电压的,是焊接的,不能拆卸;
- M代表标准电压cpu是可以拆卸的;
- U代表低电压节能的,可以拆卸的;
- Y代表超低电压的,除了省电,没别的优点的了,是不能拆卸的;
- 两个字母的,属于上面这些字母的组合:HQ高电压至高性能处理器。
所以,电脑如果是酷睿系列的,一般来说,尽量选择标压处理器而不是低压处理器。即尽量选择末尾是H字母、HQ字母、M字母,而不是末尾是U字母和Y字母的,为什么呢?因为程序员无论是工作还是生活,对配置还有有一定的需求的,那些爱打游戏的自然不必多说,就算是单纯工作,无论是idea、android studio、visual studio、visual code、vmware,这些东西跑起来,对性能也还是有一定的要求的。
当然,代价就是一般只有游戏本和性能本才会有标压处理器(轻薄本上都是低压处理器),而且这样的本子要比轻薄本更重更厚一些。
至于搭载标压处理器的游戏本和性能本会不会噪声比较大,不适合办公室工作,这个其实只要不运行网络游戏,实际上没关系,一般是没什么噪声的。当然标压处理器还有另外一个好处,冬天可以暖手(有些电脑确实可以做到)。
也不是低压处理器就一定不行,所谓萝卜白菜各有所爱,总之相同价钱下,性能和轻薄只能选择其中一个,身边也有很多同事用搭载低压处理器的笔记本工作的,都能完成自己的工作,不过有硬性游戏需求的小伙伴们就只能选标压处理器了。
AMD锐龙芯片
和英特尔的酷睿类似,有R9、R7、R5、R3系列,同时分为低压和标压版。最新的锐龙处理器型号:低压:R5 4500U(6核6线程);R5 4600U(6核12线程);R7 4700U(8核8线程);R7 4800U(8核16线程)标压:R5 4600H(6核12线程);R7 4800H(8核16线程);R9 4900H(8核16线程)。
Intel与AMD如何选择?
细心的同学可能已经发现,锐龙R5/R7在规格上都要领先于英特尔的酷睿i5/i7,而且由于采用了台积电的7nm工艺,这代AMD处理器基本可以实现R5打i7,R7打i9,考虑到AMD处理器的价格比英特尔更低,因此除了一些对AMD优化较差的专业软件,建议追求性价比的同学优先考虑AMD。
关于CPU和GPU性能天梯图的软件,文末给一个。
GPU(显卡)
GPU(俗称显卡)用于图像处理,如玩大型游戏,视频特效的渲染。很久一起,计算机就一个黑白命令行,CPU和GPU是连在一起的,只是后来图形图像的处理越来越重要,GPU就单独出来了。
如果说CPU选标压还是低压和工作相关的话,那么GPU就纯粹和工作无关了,要是运行大型网络游戏或者对画面质量要求高的单机游戏,娱乐方式就是听歌、刷剧、逛淘宝,就没必要在显卡上花钱,跳过下面,进入2.3,看内存部分。
如果是天天要打几个小时游戏的,接着看。
核显/集显:显卡功能集成在CPU中,无独立显卡,性能较弱,因此玩不了大型游戏,但耗能少因此续航时间长,很适合办公用轻薄本。
独立显卡:主要由NVIDIA和AMD设计,但目前笔记本独显还是以NVIDIA为主:轻薄本独显:MX450、MX350:轻薄本用的主流入门显卡,性能略强于核显。
好的,既然是打游戏,我们就看看游戏本独显。
性能排序: RTX2080 SUPER > RTX2070 SUPER > RTX2070 > RTX2060 > GTX1660 Ti > GTX1650 Ti > GTX1650
显卡怎么看,看数字就好了,数字越大越好,数字相同,如果带有Super或者Ti的后缀,性能会比原型号强(如2070Super > 2070),如果带有Max-Q的后缀,性能一般会比原型号弱(个别型号除外)。
Memory(内存)
一般是8G和16G,这个越大越好,一般来说,无论是工作还是刷剧,电脑性能都在CPU和内存条上,所以这里就加点钱,选16G的吧~
Disk(硬盘)
硬盘分为机械硬盘(HDD)和固态硬盘(SSD)。这里建议一定要有固态硬盘,HDD和SSD最明显的就是重启开机的速度了。前几年固态硬盘的价格比较贵,现在便宜点了,如果确实没钱,买不起500G SSD,可以选择固态硬盘+机械硬盘的组合,即128G SSD + 500G HHD。
关于硬盘的容量,不是重点,一般来说500G的容量绝对够了,至今没看到身边有小伙伴们谁说硬盘不够用的。当然,如果是美剧爱好者(要存一大堆美剧)或者小姐姐爱好者(要收集一大堆小姐姐),可以自配移动硬盘。
小结:硬盘这里的话,主要是速度和容量两个特性,前者比后者重要,系统盘最好用固态,至于容量,真不是重点,如果只是工作,可能256G都够了。
屏幕
屏幕是眼睛要看的东西,无论工作还是娱乐,要重视点。
(1)材质:分为IPS和TN屏,IPS屏强于TN屏,最好是IPS屏!
(2)分辨率:分辨率越高越好,至少要1920*1080,否则影响使用体验。
(3)刷新率:普通笔记本屏幕刷新率为60Hz,部分游戏本采用了高刷新率的电竞屏(120Hz、144Hz、240Hz、300Hz等),目的是减少游戏时的画面撕裂,使观感更流畅。个人认为刷新率没有分辨率那么重要,看个人需要,仅游戏玩家有需求。
辨析刷新率和分辨率
一句话,分辨率越高,人看得越清晰;刷新率越好,人看得越连续。
分辨率:分辨率不同的说法,最常见的四种:1366768,1080p,2K和4K。
1366768:不用解释,一看就懂,数字分别表示显示器横向和纵向的像素数量;
1080p:P是指逐行扫描,几P就是纵向有多少行像素,所以,1080p就是纵向有1080行像素,我们现在默认1080p就是1920*1080;
2K和4K:几K是指横向有几个1000列(等效)像素,所以,2K就是2560像素x1440像素,4K就是3840像素x2160像素。
刷新率:刷新率,即每秒屏幕刷新图像的次数,刷新率为144hz表示屏幕每秒刷新144次。
分辨率和刷新率二者那种更重要?2K高分辨率屏和144Hz电竞屏选哪个?
个人认为分辨率更重要,分辨率指的显示器物理分辨率,一般而言,涉及屏幕的所有图像显示,无论静态图还是动态视频还是交互式游戏;刷新率指定的是每秒屏幕刷新图像的次数,刷新率越好,人看得越连续,但是一般处理大型网络游戏,一般高刷新率在刷剧、听歌没太大用。所以,一般来说2K的分辨率比144hz的刷新率重要些,纯属个人看法。
(4)色域:屏幕可显示颜色的范围,建议尽量选购高色域屏幕。
高色域:100%ARGB / 100%sRGB / 72%NTSC
低色域:45%NTSC
在上面的高色域中,笔记本72%NTSC和100%sRGB色域有何区别?区别就是NTSC所表现的色彩要更丰富,sRGB所表现的色彩几乎被NTSC所包含,100%sRGB≈72%NTSC。
NTSC色域指的是NTSC标准下颜色的总和,色域是对一种颜色进行编码的方法,也指一个技术系统能够产生的颜色的总和,在计算机图形处理中,色域是颜色的某个完全的子集。
sRGB(standard Red Green Blue)是由微软联合惠普、三菱、爱普生等厂商共同开发的一种彩色语言协议,它提供了一种标准方法来定义色彩,让显示、打印和扫描等各种计算机外部设备与应用软件对于色彩有一个共通的语言。
NTSC和sRGB所包含的色彩范围是不太一样的,NTSC所表现的色彩要更多丰富一些,而sRGB所表现的色彩几乎被NTSC所包含。不过需要注意的是72%NTSC并不完全等于100%sRGB,因为72%的NTSC所表现的色彩并不一定在sRGB的蓝色框体内。所以挑选标注为100%sRGB色域的屏幕更可靠一些。
小结:屏幕考核四要素:材质、分辨率、刷新率、色域。
材质最好为最好是IPS屏,分辨率建议1080p起,刷新率看自己的需求,色域选100%sRGB或72%NTSC为佳。
尺寸
一般程序员用的笔记本最多的是15.6寸和14寸,当然也有一些13.3英寸、12英寸的,这种太小,不太适合敲代码用,打开个编辑器,左边右边下面还要占一些,写代码都没空间了;还有一些17英寸、18.4英寸,不大方便携带,失去了笔记本便携式的意义,还不如买个台式机。
很多小伙伴是用14英寸的,我个人比较喜欢15.6英寸的,主要是可以多一个数字小键盘,我比较喜欢用那个小键盘输入数字,当然,还有就是编辑器写代码的空间大点,但是15.6英寸是一个极限,再大就不大好携带了。
三、不同类型电脑怎么选
不同类型的笔记本
游戏本
游戏本向来重视性价比,有“游戏本=CPU+显卡”的说法,有些人配一个台式机在家打游戏加一个轻薄本工作,也有些人直接买一个游戏本打游戏加工作。
游戏本追求性能的笔记本类型,整体性能是所有笔记本类型中最强的,但要为性能做出妥协的是便携性和续航。
便携式方面,大部分游戏本的裸机重量在2.5kg左右,个别的会达到3kg以上,机身厚度在25mm左右,相比之下,大部分轻薄本的重量在0.9kg-1.6kg,厚度在16mm左右。
续航方面,轻度办公状态下大部分轻薄/全能本有8h左右,而大部分游戏本只有4h左右。入门级游戏本是搭载了入门级游戏显卡的款式,市面上的大多数游戏基本都能运行,但有些比较吃配置的游戏只能开中低画质玩;高性能游戏本搭载了高性能游戏显卡,可以开高画质流畅运行市面上的大多数游戏(游戏显卡性能在游戏方面的影响说白了就是帧数,大部分游戏上都是性能越强帧数就越高),可以应对较复杂的三维场景(建模渲染等);轻薄类游戏本顾名思义就是比较轻薄的游戏本类型,裸机重量在2kg左右,机身厚度在20mm左右,万元以上的轻薄类游戏本基本都配备了大电池,续航会比普通游戏本更长一些(6h左右),但它们的散热没有普通游戏本好(除非你很有钱直接买两三万的款式),和高性能全能本有些类似,区别是轻薄类游戏本更适合玩游戏一些,有144Hz电竞屏和GTX1650显卡以上的选择,这些在万元以内的高性能全能本上比较少。
轻薄本
如果说游戏本走到了性能的极端,那轻薄本就走到了轻薄的极端。这种本子轻薄,易于携带,性能相较于其他类型笔记本较弱,适合经常要拿着笔记本到处走、出差的人,可以满足日常办公、影音娱乐和基础修图的需求,可以玩一些不吃性能的游戏(LOL、CF、飞车等),不适合运行吃性能的游戏和软件。
全能本
在轻薄本的基础上增加了独立显卡(MX3/450),显卡性能更强使得全能本能够流畅运行更多的游戏,可以玩一些优化较好、中等配置要求的游戏(DOTA2、OW、CSGO、剑灵等),同时也可以胜任轻中度的三维制图/建模、视频处理等工作,但一半以上的全能本便携性没有轻薄本好,整体性能也没有游戏本强,属于一个在轻薄本和游戏本之间折中的选择。
高性能全能本是Intel推出的"创意设计PC系列",大部分款式的屏幕经过了出厂预校色处理,所以比较适合平面设计和影视后期的人群,因为配置方面装上了和入门级游戏本相同的配置,所以叫它"高性能",入门级游戏本能干的活它基本也都能胜任,同时还比游戏本轻薄,但它的缺点是散热没有游戏本好,大概率会出现性能释放一般、高负载时表面温度较高的现象,所以选择这个类型之前要想清楚,如果出现了这些现象就不要抱怨了。
如果是学生,文史科更适合用轻薄本,理工科更适合中游戏本
文科类专业(法学、经济学、文学等),大部分专业对电脑性能要求不高,在文章中的轻薄本和全能本里选就可以;
特别的,艺术类专业里面的影视类和设计类:这两类专业对电脑的屏幕素质有要求,不要选择文章中劣势里有“屏幕素质一般”的笔记本电脑,预算充足的情况下最好买标称色域有100%sRGB的电脑。
影视类专业一般要用到视频处理(PR、达芬奇、AE等)、三维动画渲染制作(Maya、3D MAX、C4D等)等方面的软件,这些软件都比较吃电脑的性能,需要在游戏本和高性能全能本中选购。
设计类专业,如果只涉及一些2D修图/画图类软件(PS、LR、CDR等)和排版软件,轻薄本或全能本就能满足需求,但如果也涉及到上面影视类专业的软件,那同样需要在游戏本和高性能全能本中选购。
理工类专业,专业如果涉及到3D制图、建模、渲染、仿真方面(机械、建筑、电子等等),需在游戏本和高性能全能本中选购,这些都比较吃性能;涉及人工智能、深度学习方面,预算充足最好选择显卡是20系的(RTX2060/70/80)游戏本或高性能全能本。理工类未涉及到以上方面的专业,选购笔记本的类型不受限制。
其实游戏本因为强大的性能,加超高的性价比,啥都能干,但是很多人认为它就是用来打游戏的…
如果是工作,不同工作岗位电脑要求稍有不同(仅分析程序员)
不同的岗位需求对不同的电脑性能要求也不一样,比如像前端开发、后端开发、运维、算法、嵌入式等这些岗位的要求都还不太一样。
前端开发
开发不管是用“三件套”的原生技术栈时代,也就是所谓的html、css、javascript。还是后来的“封装库”时代,也就是有了jQury和ajax的时代。亦或是现在如今比较火的“组件式”开发时代,有angular、react、Vue这些组件化框架开发时代。
我们以最新的为例来说:
首先,你一般会需要一个命令行终端,然后前端开发也需要一个比较大的IDE环境,现在我看好像用webstorm比较多,前端开发再厉害点的就还需要一个vscode或者是atom也就是文本编译器,最后就还需要一个浏览器。所以前端开发常见也就使用这个四五个开发软件,所以说前端开发对于电脑性能没什么要求,因为它不怎么吃电脑性能没有什么特殊要求,正常配置就可以了。
当然唯一的要求可能就是屏幕分辨率和屏幕色准,不管怎么说都是跟图形化的东西打交道。所以从这些角度上来讲,我是推荐还是用一台Mac来做前端开发比较好,因为它屏幕还是挺不错的。关于显卡的话,显卡不是必须的,但是具备最好,因为前段也有可能会接触到一些UI设计方面的应用软件。
小结:前端开发其实不耗电脑性能,8G内存加上一个固态SSD基本上就够了。
后端开发
以java后端开发为例,需要一个大的IDE,一般是eclipse或者是intellij IDEA(后者现在更多)、浏览器(Google)、而数据库可视化可能需要类似于Navicat这种软件、前后端调试接口需要Postman、编辑器vscode或者是atom、后端开发也需要命令行终端、远程连接服务器就需要一个SSH终端。
小结:后端开发的话建议内存尽量8G及以上、系统盘是SSD(256G)基本够了、显卡就看自己的喜好就行,如果你要搞大数据、虚拟化、编程环境复杂一些的技术,需要虚拟机支持的话就需要你的电脑CPU、内存、硬盘都得要再上一个台阶了。
AI(人工智能)
如果是做AI、机器学习、图形图像处理算法,除了在CPU、硬盘、内存(16G+)要求比较高之外还需要GPU的加持。因为我们做图形图像处理和一些模式处理的算法的时候就会用到并行计算,这个时候就需要GPU的加速了。
小结:CPU、GPU、内存要求都比较高,建议8000左右的性能本起。
运维
运维岗对客户端机要求是最低的,因为运维绝大部分时间都是在一个远程终端连接到一个远程服务器上去进行操作。所以你本地客户机基本上一个SSH终端就能搞定一切,厉害些的可能就还需要一些文件对比工具和编译器等,很小的一些小工具就可以了。
小结:入门本,能上网就行。
嵌入式开发
如果你是做嵌入式开发或者跟硬件打交道的话,那尽量还是在Windows或则是Linux下做比较好,Mac不是一个好的选择,因为Mac上很多嵌入式开发的软件确实是没有。
小结:没有太大要求。
综合小结
就程序员的这些工作,也就是搞AI对电脑性能要求高点,后端嵌入式其次(看情况),其他的不太费性能,所以说,程序员毕竟是对穷人比较友好的职业呀!
四、为什么相同配置有的电脑便宜,有的电脑贵
五千档的本子,一分钱一分货,没有品牌溢价,全靠硬件成本堆嵌
一般来说,5000左右的本子,基本是一分钱一分货的,想要性价比,建议神舟宏碁这两家的游戏本(不是说别的厂没有游戏本,主要是预算五千就要把钱花在刀刃上,毕竟神舟是同配置能便宜500-1000)
不在乎性价比,联想、惠普、华硕、戴尔都可以,唯一要记住的就是,能在网上买就就不要去电脑城买,一去一个坑。
还有,预算5000以内,买二手mac也可以,买二手要想避坑参考这篇:买卖二手电脑需要注意些什么
一万档的本子,轻薄本开始走品牌溢价,游戏本继续性能堆嵌
预算8000-10000,这里可以有品牌溢价,比如mac、微软这些,配置不咋地,但是价格上万,mac是因为有设计支撑着溢价,也不知道微软靠什么支撑这么高的溢价,难道就靠一个标…
还有很多的颜值本,之前看到过一个华硕14寸的蓝色的小商务本,配置贼低,低压处理器,加上最基本的8g内存和一个固态硬盘,定价7000+
后来发现不光是华硕,其他品牌都有这样的,8000左右的轻薄本,颜值贼高配置贼低的,可能目标用户是那群商务颜值党吧~
当然8000-10000这个价位,要是买游戏本,可以买到配置很高的,以神舟战神为例,8500可以买到几乎最好的配置:
如战神G8-CA7NP,搭载 i7 10代的高电压CPU,RTX3060的6G显卡,16G内存条和512G的固态,17.3的大尺寸,144hz刷新率的电竞屏。
主流品牌也不例外,如:
联想(Lenovo)拯救者Y7000P英特尔酷睿i7 15.6英寸游戏笔记本电脑(8核i7-10875H 16G 512G RTX2060 144Hz)灰
小结:在8000-10000档次中,轻薄本逐渐将目标用户定位为高端商务人群,依靠品牌溢价和优秀的外观设计作为竞争力提高价格;而在游戏本继续将目标用户定位为游戏玩家,依靠堆砌硬件配置来争取用户。
二万档的本子,品牌溢价或移动图像工作站
两万以上的本子,各个公司都会出一些,如联想的高端thinkpad、微星、冰刃,但是销量都不高,更多的是叫做“工作站”、“移动工作站”、“移动图像工作站”而不是“笔记本”,还在叫笔记本也就是戴尔的外星人了。
这种本子高的能卖到两万、五万,甚至十万,程序员也一般不会用到,看看就好。
小结:两万以上的本子,如果还做笔记本就只能靠品牌溢价了,如外星人;更多的是走专业化路线,做移动图像工作站。
为什么相同配置有的电脑便宜,有的电脑贵
让我们来重新回答这个问题:“为什么相同配置有的电脑便宜,有的电脑贵?”,理由很简单,因为电脑卖的不仅仅是配置。
所谓低端产品靠成本,中端产品靠质量,高端产品靠品牌。在笔记本领域也是这样,不同类型的笔记本,影响价格的因素是不同的。
游戏本和高性能全能本是偏向性能的笔记本类型,所以在它们当中一般是价格越高,配置越好,性能也就越强,这个很好理解,配置是影响它们价格高低的主要因素,也会有其他的次要因素,就不细说了,比如高性能全能本还会追求屏幕(4k/触控/广色域屏等);
轻薄本和普通的全能本不是追求性能的笔记本类型,所以它们当中价格高的和价格低的的性能一般不会有很大差距,价格高的不一定性能就强,所以如果你只想买一个性能够用的轻薄/全能本,不在意其他方面,那文章中5000左右的款式就可以很好的满足需求了,价格高/定位更高的主要是在做工质感、细节处理、特色功能等方面下功夫,这些方面同样也可以提升你的使用体验。
至于为什么相同配置,有的电脑便宜,有的电脑贵的问题?
只能说决定价格的不仅仅是配置,而是用户的使用体验,配置(即物料成本)不能简单的等同于商品的价值。越是低端商品,物料成本占总成本的比例就越大,用户体验占比小;反而,越是高端商品,物料成本占总成本的比例就越低,用户体验占比大。
相同价格下,游戏本的配置就是比轻薄本高,即使是低端的五千档本子上也是这样。然后继续往上走,八千至一万的本子,轻薄本开始走商务路线,将用户定位为商务人群,依靠优秀的外观设计取得市场竞争力,游戏本则继续堆砌硬件配置讨好用户玩家,两条路线开始分叉。继续往上走,二万及以上档期,各个商家都提高本子的专业化程度,走“移动图像工作站”路线,为专业的图像工作人员服务。
五、尾声
本文介绍一下“选购笔记本需要注意哪些硬件参数”、“不同类型电脑怎么选”、“为什么不同的笔记本价格差异这么大”这些方面的东西,希望对大家有用
天天打码,天天进步!
关注我的技术公众号,每天都有优质技术文章推送。
推荐阅读
-
如何挑选适合自己的摄影器材?
-
学习回顾:知识就是力量" 如何找到适合自己的工作
-
各种智能水表价格不一,用户应如何选择适合自己的产品?
-
程序员如何选购适合自己的电脑
-
程序员如何建立自己的影响力
-
如何选择适合自己的网站建设工具?
-
我很遗憾自己对 "程序员如何提高抽象思维能力 "这个问题的回答敷衍了事。
-
如何组装自己最满意的电脑 - 摘要:
-
windows下进程间通信的(13种方法)-摘 要 本文讨论了进程间通信与应用程序间通信的含义及相应的实现技术,并对这些技术的原理、特性等进行了深入的分析和比较。 ---- 关键词 信号 管道 消息队列 共享存储段 信号灯 远程过程调用 Socket套接字 MQSeries 1 引言 ---- 进程间通信的主要目的是实现同一计算机系统内部的相互协作的进程之间的数据共享与信息交换,由于这些进程处于同一软件和硬件环境下,利用操作系统提供的的编程接口,用户可以方便地在程序中实现这种通信;应用程序间通信的主要目的是实现不同计算机系统中的相互协作的应用程序之间的数据共享与信息交换,由于应用程序分别运行在不同计算机系统中,它们之间要通过网络之间的协议才能实现数据共享与信息交换。进程间通信和应用程序间通信及相应的实现技术有许多相同之处,也各有自己的特色。即使是同一类型的通信也有多种的实现方法,以适应不同情况的需要。 ---- 为了充分认识和掌握这两种通信及相应的实现技术,本文将就以下几个方面对这两种通信进行深入的讨论:问题的由来、解决问题的策略和方法、每种方法的工作原理和实现、每种实现方法的特点和适用的范围等。 2 进程间的通信及其实现技术 ---- 用户提交给计算机的任务最终都是通过一个个的进程来完成的。在一组并发进程中的任何两个进程之间,如果都不存在公共变量,则称该组进程为不相交的。在不相交的进程组中,每个进程都独立于其它进程,它的运行环境与顺序程序一样,而且它的运行环境也不为别的进程所改变。运行的结果是确定的,不会发生与时间相关的错误。 ---- 但是,在实际中,并发进程的各个进程之间并不是完全互相独立的,它们之间往往存在着相互制约的关系。进程之间的相互制约关系表现为两种方式: ---- (1) 间接相互制约:共享CPU ---- (2) 直接相互制约:竞争和协作 ---- 竞争——进程对共享资源的竞争。为保证进程互斥地访问共享资源,各进程必须互斥地进入各自的临界段。 ---- 协作——进程之间交换数据。为完成一个共同任务而同时运行的一组进程称为同组进程,它们之间必须交换数据,以达到协作完成任务的目的,交换数据可以通知对方可以做某事或者委托对方做某事。 ---- 共享CPU问题由操作系统的进程调度来实现,进程间的竞争和协作由进程间的通信来完成。进程间的通信一般由操作系统提供编程接口,由程序员在程序中实现。UNIX在这个方面可以说最具特色,它提供了一整套进程间的数据共享与信息交换的处理方法——进程通信机制(IPC)。因此,我们就以UNIX为例来分析进程间通信的各种实现技术。 ---- 在UNIX中,文件(File)、信号(Signal)、无名管道(Unnamed Pipes)、有名管道(FIFOs)是传统IPC功能;新的IPC功能包括消息队列(Message queues)、共享存储段(Shared memory segment)和信号灯(Semapores)。 ---- (1) 信号 ---- 信号机制是UNIX为进程中断处理而设置的。它只是一组预定义的值,因此不能用于信息交换,仅用于进程中断控制。例如在发生浮点错、非法内存访问、执行无效指令、某些按键(如ctrl-c、del等)等都会产生一个信号,操作系统就会调用有关的系统调用或用户定义的处理过程来处理。 ---- 信号处理的系统调用是signal,调用形式是: ---- signal(signalno,action) ---- 其中,signalno是规定信号编号的值,action指明当特定的信号发生时所执行的动作。 ---- (2) 无名管道和有名管道 ---- 无名管道实际上是内存中的一个临时存储区,它由系统安全控制,并且独立于创建它的进程的内存区。管道对数据采用先进先出方式管理,并严格按顺序操作,例如不能对管道进行搜索,管道中的信息只能读一次。 ---- 无名管道只能用于两个相互协作的进程之间的通信,并且访问无名管道的进程必须有共同的祖先。 ---- 系统提供了许多标准管道库函数,如: pipe——打开一个可以读写的管道; close——关闭相应的管道; read——从管道中读取字符; write——向管道中写入字符; ---- 有名管道的操作和无名管道类似,不同的地方在于使用有名管道的进程不需要具有共同的祖先,其它进程,只要知道该管道的名字,就可以访问它。管道非常适合进程之间快速交换信息。 ---- (3) 消息队列(MQ) ---- 消息队列是内存中独立于生成它的进程的一段存储区,一旦创建消息队列,任何进程,只要具有正确的的访问权限,都可以访问消息队列,消息队列非常适合于在进程间交换短信息。 ---- 消息队列的每条消息由类型编号来分类,这样接收进程可以选择读取特定的消息类型——这一点与管道不同。消息队列在创建后将一直存在,直到使用msgctl系统调用或iqcrm -q命令删除它为止。 ---- 系统提供了许多有关创建、使用和管理消息队列的系统调用,如: ---- int msgget(key,flag)——创建一个具有flag权限的MQ及其相应的结构,并返回一个唯一的正整数msqid(MQ的标识符); ---- int msgsnd(msqid,msgp,msgsz,msgtyp,flag)——向队列中发送信息; ---- int msgrcv(msqid,cmd,buf)——从队列中接收信息; ---- int msgctl(msqid,cmd,buf)——对MQ的控制操作; ---- (4) 共享存储段(SM) ---- 共享存储段是主存的一部分,它由一个或多个独立的进程共享。各进程的数据段与共享存储段相关联,对每个进程来说,共享存储段有不同的虚拟地址。系统提供的有关SM的系统调用有: ---- int shmget(key,size,flag)——创建大小为size的SM段,其相应的数据结构名为key,并返回共享内存区的标识符shmid; ---- char shmat(shmid,address,flag)——将当前进程数据段的地址赋给shmget所返回的名为shmid的SM段; ---- int shmdr(address)——从进程地址空间删除SM段; ---- int shmctl (shmid,cmd,buf)——对SM的控制操作; ---- SM的大小只受主存限制,SM段的访问及进程间的信息交换可以通过同步读写来完成。同步通常由信号灯来实现。SM非常适合进程之间大量数据的共享。 ---- (5) 信号灯 ---- 在UNIX中,信号灯是一组进程共享的数据结构,当几个进程竞争同一资源时(文件、共享内存或消息队列等),它们的操作便由信号灯来同步,以防止互相干扰。 ---- 信号灯保证了某一时刻只有一个进程访问某一临界资源,所有请求该资源的其它进程都将被挂起,一旦该资源得到释放,系统才允许其它进程访问该资源。信号灯通常配对使用,以便实现资源的加锁和解锁。 ---- 进程间通信的实现技术的特点是:操作系统提供实现机制和编程接口,由用户在程序中实现,保证进程间可以进行快速的信息交换和大量数据的共享。但是,上述方式主要适合在同一台计算机系统内部的进程之间的通信。 3 应用程序间的通信及其实现技术 ---- 同进程之间的相互制约一样,不同的应用程序之间也存在竞争和协作的关系。UNIX操作系统也提供一些可用于应用程序之间实现数据共享与信息交换的编程接口,程序员可以通过自己编程来实现。如远程过程调用和基于TCP/IP协议的套接字(Socket)编程。但是,相对普通程序员来说,它们涉及的技术比较深,编程也比较复杂,实现起来困难较大。 ---- 于是,一种新的技术应运而生——通过将有关通信的细节完全掩盖在某个独立软件内部,即底层的通讯工作和相应的维护管理工作由该软件内部来实现,用户只需要将通信任务提交给该软件去完成,而不必理会它的具体工作过程——这就是所谓的中间件技术。 ---- 我们在这里分别讨论这三种常用的应用程序间通信的实现技术——远程过程调用、会话编程技术和MQSeries消息队列技术。其中远程过程调用和会话编程属于比较低级的方式,程序员参与的程度较深,而MQSeries消息队列则属于比较高级的方式,即中间件方式,程序员参与的程度较浅。 ---- 4.1 远程过程调用(RPC)
-
如何在百联OK卡平台上寻找到适合自己的?