① 初级程序员考试内容
考试科目1:计算机硬软件基础知识
一、计算机科学基础
1.1 数搜腊制及其转换。1.2 数据的表示。1.3 算术运算和逻辑运算。1.4 数学应用。1.5 常用数据结构。1.6 常用算法
二、计算机系统基础知识
2.1 硬件基础知识。2.2 软件基础知识。2.3 网络基础知识。2.4 数据库基础知识。2.5 多媒体基础知识。2.6 系统性能指标。2.7 计算机应用基础知识和常用办公软件的操作方法
三、 软件开发和运行培弯维护基础知识
3.1 软件工程和项目管理基世中滑础知识。3.2 软件需求分析、需求定义及软件基础知识。3.3 程序设计基础知识。3.4 程序测试基础知识。3.5 软件开发文档基础知识。3.6 软件运行和维护基础知识
四、安全性基础知识
五、 标准化基础知识
六、 信息化基本知识
七、 计算机专业英语
② 程序员必备知识有哪些
根据软考程序员职称的考试内容,我们可以得出,程序员需要具备以下的知识。但这些只是基础,还要不断扩展。
计算机硬件基础知识。
1. 计算机科学基础。
1.1数制及其转换。
二进制、十进制和十六进制等常用数制及其相互转换。
1.2数据的表示。
数的表示(原码、反码、补码表示,整数和实数的机内表示方法,精度和溢出)。
校验方法和校验码(奇偶校验码、海明校验码)。
1.3算术运算和逻辑运算。
计算机中二进制数的运算方法。
逻辑代数的基本运算和逻辑表达式的化简。
1.5常用数据结构。
数组(表态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树)、图的定义、存储和操作
1.6 常用算法。
算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表)
2. 计算机系统基础知识。
2.1计算机基础知识。
2.1.1计算机系统的组成,硬件系统、软件系统及层次结构。
2.1.3 中央处理器CPU。
运算器和控制器的组成,常用的寄存器、指令系统、寻址方式、指令执行控
处理机性能。
2.1.4 主存和辅存。
存储器系统。
存储介质(半导体、硬盘、光盘、闪存、软盘、磁带等)。
主存储器的组成、性能及基本原理。
Cache的概念、虚拟存储的概念。
辅存设备的类型、特性、性能和容量计算。
2.1.5 I/O接口、I/O设备和通信设备。
I/O接口(总线、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)。
I/O设备的类型和特性(键盘、鼠标、显示器、打印机、扫描仪、摄像头,以及各种辅存设备)。
I/O设备控制方式(中断控制、DMA)。
通信设备的类型和特性(Modem、集线器、交换机、中继器、路由器、网桥、网关)及其连接方法和连接介质(串行连接、并行连接,传输介质的类型和特性)。
2.2 软件基础知识。
2.2.1 操作系统基础知识。
操作系统的类型和功能。
操作系统的内核(中断控制)和进程概念。
处理机管理、存储管理、设备管理、文件管理、作业管理、汉字处理。
2.2.2 程序设计语言和语言处理程序基础知识。
汇编、编译、解释系统的基础知识。
过程(函数)调用。
2.3 网络基础知识。
网络的功能、分类、组成和拓扑结构。
网络体系结构与协议(OSI/RM,TCP/IP)。
2.4 数据库基础知识。
数据模型,ER图。
数据操作(关系运算)。
数据库语言(SQL)。
2.5 多媒体基础知识。
多媒体基础概念,常用多媒体设备性能特征,常用多媒体文件格式类型。
3.软件开发和运行维护基础知识。
3.2 软件需求分析、需求定义及软件基础知识。
结构化分析概念(数据流图(DFD)、实体关系图(ER))。
面向对象设计、结构化设计基础知识。
模拟设计、代码设计、人机界面设计要点。
3.3 程序设计基础知识。
结构设计程序设计,程序流程图,NS图,PAD图。
程序设计风格。
面向对象设计基础知识、可视化程序设计基础知识。
3.4 程序测试基础知识。
黑盒测试、白盒测试、灰盒测试基础知识。
4. 安全性基础知识。
安全性基本概念。
加密与解密基础知识。
5. 标准化基础知识
标准化基本概念
6. 信息化基本知识。
有关的法律、法规要点。
7. 计算机专业英语。
考试科目2:程序设计。
1. 内部设计
1.1 理解外部设计。
1.3 物理数据设计。
确定数据组织方式、存储介质,设计记录格式和处理方式。
2. 程序设计。
2.1 模拟划分(原则、方法、标准)。
3. 程序实现。
3.1 编程。
编程方法和标准。
程序设计语言的使用。
4.程序设计语言(C语言为必选,其他语言可以任选一种)。
4.1 C程序设计语言(ANSI C标准)。
程序结构,语法,数据类型说明,可执行语句,函数调用,标准库函数,指针。
4.2C++程序设计语言(ANSI C++标准)。
C++和面向对象程序设计,语法和程序结构,类、成员、构造函数、析构函数、模板、继承、多态。
4.3Java程序设计(Java 2)。
语言机制(程序结构和语法,类、成员、构造函数、析构函数、继承、接口)。
4.4Visual Basic程序设计(Visual Basic 6.0)。
用户界面设计。
③ 软考初级程序员的相关知识有哪些
1. 考试要求:
(1) 熟练掌握DOS、WINDOWS95、WORD和上网软件的使用方法,以及有关基础知识;
(2) 掌握程序编制方法,用C语言编制简单程序;
(3) 掌握基本数据结构、程序语言和操作系统的基本知识;
(4) 了解数据库和信息安全的基础知识;
(5)掌握数制、机内代码和逻辑运算的基础知识;
(6)了解计算机主要部件和功能的基础知识;
(7) 了解多媒体和网络的基础知识;
(8) 理解计算机操作中常见的英语术语二、考试范围。
我这里有一些程序员的学习资料 大家有需要的可以
(一)基础知识
1.1软件基础知识
1.1.1基本数据结构
数组、纪录、列表、队列、栈(stack)的定义、存储和操作
1.1.2程序语言基础知识
汇编、编译、解释系统的基本概念和使用
程序语言的数据类型
程序语言的控制结构
1.1.3文件系统使用的基础知识
文件组织的类型和特点
文件操作命令的使用
1.1.4 操作系统的类型、功能和使用基础知识
1.1.5数据库系统基础知识
1.1.6多媒体基本概念
1.1.7上网浏览和收发电子邮件的基础知识
1.1.8计算机信息安全基础知识
计算机信息安全基本概念
常见计算机病毒的识别
1.2硬件基础知识
1.2.1数制及其转换
二进制、十进制和十六进制等常用数制及其相互转换
1.2.2机内代码
原码、补码、反码
定点数与浮点数的机内表示
ASCLL码级汉字编码等常用的编码
奇偶校验码
1.2.3逻辑运算
逻辑代数的基本运算和逻辑表达式的化简
1.2.4计算机的主要部件
中央处理器CPU、存储器和输入输出设备
1.2.5指令系统
常用的寻址方式
指令的格式分类及功能
1.2.6常用多媒体设备和网络通信设备的功能
1.3计算机专业英语
高中毕业英语程度
理解计算机操作中常见的英语术语
(二) 软件使用和程序编制初步能力
2.1 能熟练使用下列常用软件
2.1.1 操作系统(DOS和WINDOWS95)
2.1.2 字处理软件(WORD)
2.1.3 上网软件(电子邮件和浏览器)
2.2 能熟练使用下列程序语言编制程序
C(美国标准)
2.3 理解给定程序的功能
2.4 基本算法
查找、更新、排序和字符处理
2.5 程序编制方法
2.5.1 分支、循环、子程序(过程和函数)
二、考试范围
(一)基础知识
1.1软件基础知识
1.1.1基本数据结构
数组、纪录、列表、队列、栈(stack)的定义、存储和操作
1.1.2程序语言基础知识
汇编、编译、解释系统的基本概念和使用
程序语言的数据类型
程序语言的控制结构
1.1.3文件系统使用的基础知识
文件组织的类型和特点
文件操作命令的使用
1.1.4 操作系统的类型、功能和使用基础知识
1.1.5数据库系统基础知识
1.1.6多媒体基本概念
1.1.7上网浏览和收发电子邮件的基础知识
1.1.8计算机信息安全基础知识
计算机信息安全基本概念
常见计算机病毒的识别
1.2硬件基础知识
1.2.1数制及其转换
二进制、十进制和十六进制等常用数制及其相互转换
1.2.2机内代码
原码、补码、反码
定点数与浮点数的机内表示
ASCLL码级汉字编码等常用的编码
奇偶校验码
1.2.3逻辑运算
逻辑代数的基本运算和逻辑表达式的化简
1.2.4计算机的主要部件
中央处理器CPU、存储器和输入输出设备
1.2.5指令系统
常用的寻址方式
指令的格式分类及功能
1.2.6常用多媒体设备和网络通信设备的功能
1.3计算机专业英语
高中毕业英语程度
理解计算机操作中常见的英语术语
(二) 软件使用和程序编制初步能力
2.1 能熟练使用下列常用软件
2.1.1 操作系统(DOS和WINDOWS95)
2.1.2 字处理软件(WORD)
2.1.3 上网软件(电子邮件和浏览器)
2.2 能熟练使用下列程序语言编制程序
C(美国标准)
2.3 理解给定程序的功能
2.4 基本算法
查找、更新、排序和字符处理
2.5 程序编制方法
2.5.1 分支、循环、子程序(过程和函数)
④ 软件开发的基础知识是什么
软件因计算机而存在,而计算机的实质是数学,所以计算机的知识本质上就是数学知识,也可以这么说数学知识也是计算机的基础知识,计算机的基础知识也是软件的基础知识。在。软件发展的过程中,软燃并件的知识也在慢慢地积累,很多软件知识与数学并无直接的联系,而。在这里我们所要说的就是纯软件的基础知识。
我们可以把软件的知识分为两个部分,专业技能知识和领域知识或说行业知识。
1,专业技能知识
一门编程语言及库
你可以在书店里找到各色各样的关于编程方面的书籍,但是我建议你只需要深入地掌握
一门便可,而且任何程序员都需要熟悉C语言。你所深入掌握的语言可有多种选择。如果你从事的是驱动程序开发,我想必须要掌握汇编语言,C语言也是个不错的选择,而如果是做UI的话C++也许更好,Java语言比较适合网络程序的开发,当然JavaScript在google肯定很受推崇。
对于程序员来说,编程语言就相当于游侠手中的武器,可以是长剑,也可是以是短剑,可以是大刀,也可以是匕首。这些武器各有所长,而要发挥这些武器的长处必须基于一套路数上,那么对于程序员来说就是基于某一种编程语言的代码库。如GNUC的库就是libc或ulibc。如果你是用C语言,而且你是在类UNIX平台下开发,那么你就必须正确理解libc的工作原理,你代码里所调用的每一个函数的输入与输出,可能的错误,可能的歧义,对系统可能产生的影响。比如某一个函数是否是可再入的,还是不可再入的,如果出现了多线程同时调用的情况会发生什么错误等等细节上的问题。
一种编程思想
全世界都惊叹于毛泽东的领导和军事才能,而在他的才能表象之后是什么,是他的革命
精神,是他的睿智的思想。编程也一样,如果没有了编程思想就没有了指导前进的动力,就没有了创造的灵感的土壤。软件知识发展到现在比较常用的编程思想就是结构巧段饥化(模块化)和面向对象化(设计模式)。
有些语言是在模块化大行其道的历史背景下被发明出来的,如C语言,而有些语言则是为了满足面向对象的编程思想而构造出来的,如C++。有一部分程序员会认为C语言是结构化的编程语言无法实现面向对象的编程思想。其实不然,C语言同样可以很好地实现面向对象的编程思想,只不过有些面向对象的工作由程序员来做而已。同样,面向对象的编程语言也可以用于写模块化的程序。
一种信仰
就我所接触过的系统里,Windows我只会安装,使用,VC/VB也只能做一些简单的开发,而MACOS体验过一次安装,不过最终还是失败了,iPhone的系统还没有机会体验过。曾经在AIX下做过开发,目前正在Fedora9下做开发,目标板的CPU是SH4,将来也可能是MIPS。
不管是MACOS,Windows,UNIX,Linux等都有各自的追随着,我把这种现像称为信仰。就拿我自己来说,我信仰Linux,Linux内核的源代码对于我来说就是神话。
我觉得在Linux下工作是一件很娱悦的事情。如果你每每解决一些比较棘手的问题,都会
有一种成就感,这是在Windows平台下感受不到的。所以对于这一信仰,我觉得至少需要知道它的安装,启动,配置,安全,如引导程序GRUB,ftp,telnet,sshd,smbd,named等等服务器的配置,网络安全的配置等等。
如果你要在Linux下进行开发,你必须了解Linux的API,标准库,也就是libc。如果你
的程序是多线程的,你还得掌握libpthread.so里的函数使用方法。GCC,GDB,LD,AS,AR,以
及Makefile和make等等工具的使用。如果你能掌握find,awk,sed,grep,od,nm,objmp
等实用工具的话,将会大大提高你的工作效率。
这,就是我的信仰。
总之一句话,一种编程语言及库,一种编程思想和一种信仰。一切OK!
2,领域知识/行业知识
我记得我的第一份工作是银行的交易开发程序员,当时是一家外包公司把我外派到工商
银行,我对工商银行的业务一无所知。不过初出茅庐不怕虎,硬是一个人完成了一个我一无所知的项目,而仅凭我对自己技术实力的自信。
但事后我却有些后怕,因孝返为我并不明白,为什么那个整数要乘以个0.456存入到数据库,也不知道银行对数据的精确度是多大,等等细节上的问题我一无所知。那我只能求上天保佑,哪天不要多扣了人家的钱,天啊,这事我也做了?!当然不至于那么严重:)
后来我确实发现自己对于银行这套业务系统了解起来比较吃力,我宁愿花点时间写些小
的C程序也不愿花时间去肯那些苦涩的业务流程文档。所以在那家公司呆_一年后我辞职了。
我想,大部分程序员都想做一些相对技术含量高的开发工作,像那种整天与数据和数据
库打交道的开发工作,随便有点志向的程序员也不愿意去做,当然如果钱足够多的话我还是愿意的:)
但现在我发现我错了。因为这部分也是软件知识的一部分。就拿我目前的工作来说,技术上不会有太大的困难,但是蓝光规格以及其涉及到的规格相当的多,恐怕没有十年时间无法做到精通。这就是领域知识或说是行业知识。有些人一生只做一件事,还不一定能做好,而我现在只做了不到两年,虽觉时间不长但也不短,纵是一无所获。
所以,我觉得自己仍不是一名合格的开发者。软件开发的基础知识包括专业知识和行业
知识,如果基础知识不完整,那么这个程序员不会是一个合格且高效的程序员。
⑤ 计算机网络安全基础的目录
1.1网络参考模型
1.2网络互连设备
1.3局域网技术
传输介质是网络中信息传输的媒体,是网络通信的物质基础之一。传输介质的性能特点对传输速率、通信的距离、可连接的网络结点数目和数据传输的可靠性等均有很大的影响。因此,必须根据不同的通信要求,合理地选择传输介质。目前在局域网中常用的传输介质有双绞线、同轴电缆和光导纤维等。
1.4广域网技术
广域网是一种跨地区的数据通讯网络,使用电信运营商提供的设备作为信息传输平台。对照OSI参考模型,广域网技术主要位于底层的3个层次,分别是物理层,数据链路层和网络层。下图列出了一些经常使用的广域网技术同OSI参考模型之间的对应关系。
点对点链路提供的是一条预先建立的从客户端经过运营商网络到达远端目标网络的广域网通信路径。一条点对点链路就是一条租用的专线,可以在数据收发双方之间建立起永久性的固定连接。网络运营商负责点对点链路的维护和管理。点对点链路可以提供两种数据传送方式。一种是数据报传送方式,该方式主要是将数据分割成一个个小的数据帧进行传送,其中每一个数据帧都带有自己的地址信息,都需要进行地址校验。另外一种是数据流传送方式,该方式与数据报传送方式不同,用数据流取代一个个的数据帧作为数据发送单位,整个流数据具有1个地址信息,只需要进行一次地址验证即可。下图所显示的就是一个典型的跨越广域网的点对点链路。
1.5TCP/IP基础
1.6因特网提供的主要服务
1.7小结
习题 2.1UNIX操作系统简介
UNIX操作系统,是美国AT&T公司于1971年在PDP-11上运行的操作系统。具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。
目前它的商标权由国际开放标准组织(The Open Group)所拥有。
1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划被停了下来。当时,Ken Thompson(后被称为UNIX之父)已经有一个称为星际旅行的程序在GE-635的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的PDP-7(Digital的主机),Ken Thompson和Dernis Ritchie就将星际旅行的程序移植到PDP-7上。而这部PDP-7(如图1-1所示)就此在整个计算机历史上留下了芳名
2.2Linux操作系统简介
Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯·托瓦兹。
Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux以它的高效性和灵活性着称,Linux模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。
Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。
1981 年IBM公司推出微型计算机IBM PC。
1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。当时的MINIX需要购买才能得到源代码,局限于校园用作教育使用,闭源专利注定Minix错失推广时机,以至于Minix长期处于测试而无人问津。
1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。刚开始,他的目的很简单,只是为了学习Intel386 体系结构保护模式运行方式下的编程技术。通过学习,他逐渐不能满足于minix系统的现有性能,并开始酝酿开发一个新的免费操作系统。林纳斯·托瓦兹几乎花了全部时间研究i386-minix系统(hackthe kernel),并且尝试着移植GNU的软件到该系统上(GCC、BASH、GDB等)。
1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上,而且已经爱不释手、不能离开这个shell 软件了。
1991年7月3日,第一个与Linux有关的消息是在comp.os.minix上发布的(当然此时还不存在Linux这个名称,当时林纳斯·托瓦兹的脑子里想的可能是FREAX,FREAX的英文含义是怪诞的、怪物、异想天开等)。其中透露了他正在进行Linux系统的开发,并且在Linux最初的时候已经想到要实现与POSIX兼容。
1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的诞生(Freeminix-like kernel sources for 386-AT)。
1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码有大约有十万行,用户大约有10万左右。
1994年3月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。
1995年1月,Bob Young创办了RedHat(小红帽),以CNULinux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux发行版,在市场上出售。这在经营模上是一种创举。
1996年6月,Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux 已经进入了实用阶段,全球大约有350万人使用。
1998年2月,以Eric Raymond为首的一批年轻的老牛羚骨干分子终于认识到CNULinux体系的产业化道路的本质,并非是什么自由哲学,而是市场竞争的驱动,创办了Open Source Intiative(开放源代码促进会)复兴的大旗,在互联网世界里展开了一场历史性的Linux产业化运动。
2001年1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持 桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能。
2003年12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。
2004年的第1月,SuSE嫁到了Novell,SCO继续顶着骂名四处强行化缘 , Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。
2.3Windows操作系统简介
Windows操作系统是一款由美国微软公司开发的窗口化操作系统。采用了GUI图形化操作模式,比起从前的指令操作系统如DOS更为人性化。Windows操作系统是目前世界上使用最广泛的操作系统。最新的版本是Windows 8。Microsoft公司从1983年开始研制Windows系统,最初的研制目标是在MS-DOS的基础上提供一个多任务的图形用户界面。第一个版本的Windows 1.0于1985年问世,它是一个具有图形用户界面的系统软件。1987年推出了Windows 2.0版,最明显的变化是采用了相互叠盖的多窗口界面形式。但这一切都没有引起人们的关注。直到1990年推出Windows 3.0是一个重要的里程碑,它以压倒性的商业成功确定了Windows系统在PC领域的垄断地位。现今流行的 Windows 窗口界面的基本形式也是从Windows 3.0开始基本确定的。1992年主要针对Windows 3.0的缺点推出了Windows 3.1,为程序开发提供了功能强大的窗口控制能力,使Windows和在其环境下运行的应用程序具有了风格统一、操纵灵活、使用简便的用户界面。Windows3.1 在内存管理上也取得了突破性进展。它使应用程序可以超过常规内存空间限制 ,不仅支持16MB内存寻址,而且在80386及以上的硬件配置上通过虚拟存储方式可以支持几倍于实际物理存储器大小的地址空间。Windows 3.1还提供了一定程度的网络支持、多媒体管理 、超文本形式的联机帮助设施等,对应用程序的开发有很大影响
2.4UNIX网络配置
2.5Windows网络配置
2.6小结
习题 3.1网络安全基础知识
3.2威胁网络安全的因素
3.3网络安全分类
3.4网络安全解决方案
3.5小结
习题 4.1什么是计算机安全
4.2安全级别
4.3系统访问控制
4.4选择性访问控制
4.5小结
习题 5.1数据库安全概述
5.2数据库安全的威胁
5.3数据库的数据保护
5.4数据库备份与恢复
5.5小结
习题 6.1计算机病毒及其分类
6.2计算机病毒的传播
6.3计算机病毒的特点及破坏行为
6.4宏病毒及网络病毒
6.5病毒的预防、检测和清除
6.6病毒防治软件
6.7小结
习题 7.1数据加密概述
7.2传统密码技术
7.3对称密钥密码技术
7.4公钥密码体制
7.5数字签名技术
7.6验证技术
7.7加密软件PGP
7.8小结
习题 8.1网络安全协议
8.2网络加密技术
8.3防火墙技术
8.4入侵检测技术
8.5虚拟专用网技术
8.6小结
习题 9.1因特网的安全
9.2Web站点安全
9.3黑客与网络攻击
9.4口令安全
9.5网络监听
9.6扫描器
9.7E-mail的安全
9.8IP电子欺骗
9.9DNS的安全性
9.10小结
习题 10.1数据完整性简介
10.2容错与网络冗余
10.3网络备份系统
10.4小结
习题 11.1网络安全实验指导书
11.2综合练习题
附录
附录一优秀网络安全站点
附录二英文缩写词
参考文献
……
⑥ 电脑程序员要学什么知识
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
程序员需要学习:
1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
2、理解计算机的组成以及各主要部件的性能指标;
3、掌握操作系统、程序设计语言的基础知识;
4、熟练掌握计算机常用办公软件的基本操作方法;
5、熟练掌握基本数据结构和常用算法;
6、熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;
7、熟悉数据库、网络和多媒体的基础知识;
8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
10、了解信息化、计算机应用的基础知识;
11、正确阅读和理解计算机领域的简单英文资料。
程序员必备技能:
1、熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
2、熟知数据库
作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
3、了解操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。
要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式。
从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。
至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
4、明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
5、不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。
一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。
如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
6、需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。
要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
7、模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
就业方向:
1、网络开发
现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。
2、企业软件开发
JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。
3、系统软件
C语言、C++、Object-C这些软件更多是用在系统软件开发,嵌入式开发的方面。
当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。
但所以在刚入门的时候,建议先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。