• 关于

    C++实例

    的搜索结果

问题

Linux下如何使用纯C++实现socket通信呢?

a123456678 2019-12-01 19:52:57 1105 浏览量 回答数 1

回答

希望对你有帮助。 一、为何要学编程。 每个人的动机不一样。大致有: 1、为了找个好工作;或为了有更好的机会和更好的发展。 2、看到别人超厉害,所以也想学。 3、实际工作中很多场合需要。 4、从小就立志做个程序员,做软件工程师。 5、振兴中国的软件事业。 。。。。。。 ================================================ 二、如何学编程。 1、多看好书。 差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,让会让人怀疑自已的学习能力。 现在的书很多,但好书很少,特别是被大家公认很有价值的好书,更是少之又少。历经多年时间考验和市场风雨不残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过<<红楼梦>>等四本名著而已,编程方面也是如此。 2、多动手。 这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。 ================================================ 三、用什么语言最好。 这主要取决于应用领域,每种语言都有自已的长处和不足。 1、汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/c#的起点。 2、C++系统编程等多个方面,最常用的编译器是VC。 3、C#/java网络编程方面新兴的。 4、VB通用。 5、还有Delphi等。。。。。。 个人建议:从未编过程的,就从学vb开始。有基础的可直接学c++/VC。 =================================================== 四、有什么好书。 几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做《MFC四大天王》。文章的意思是说在MFC的浩瀚书海中,只要认真研读和学习其中四本,就可以“五岳归来不看山”。侯先生虽以MFC为例,但是这个道理却同样适合于MFC之外的很多具体技术领域,这不能不说是一个有趣的统计现象。 通常在某一个具体细分的技术领域,会自然而然地出现3-5本顶级著作,它们彼此互相配合,形成一个完整的体系。对于学习者来说,只需要认真研读这几本书,就足以升堂入室。我乐于将这种现称为“四书五经现象”。对于读者来说,如果能够找到该领域中的“四书五经”,则无论在时间上还是金钱上都是最经济的选择。好书几本,胜过烂书几捆,这个体会想必大家都有。在此,帮助大家遴选各个技术领域里的“四书五经”。 编程的书可谓汗牛充栋,其中经典也是不泛其数,但绝大多数的过来人,都一致认为,要想很快的入门并尽快的投入到编程实践中,只要其中的四到五本也就够了,即只看经典中的经典,圣经级的书就可以了。 所谓活到老学到老,程序员是个终身学习的职业,要不断的看书,直到放弃编程的那一天。所以,您要读的好书也绝非以下推荐的这些书哟,呵呵。 一句话,由于我们的时间、精力、金钱都是有限的,如何以最小的代价换得最大的收获。 ================================================================ 五、经典好书分类热销榜 1、java java编程语言(第三版)---java四大名著----James Gosling(java之父) java编程思想(第2版)----java四大名著----Bruce Eckel java编程思想(第3版)----java四大名著----------------Bruce Eckel java 2核心技术 卷I:基础知识(原书第7版)---java四大名著-----Cay Horstmann java 2核心技术 卷II:高级特性(原书第7版)----java四大名著-----Cay Horstmann Effective java中文版------java四大名著--------Joshua Bloch 精通Struts:基于MVC的java Web设计与开发---孙卫琴 精通Hibernate:java对象持久化技术详解---孙卫琴 Tomcat与java Web开发技术详解------------孙卫琴 java与模式------------------------------阎宏 2、c# C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑” C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑” .NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王 C# Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王 .NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王 .NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王 3、C++ C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父” C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父” 深度探索C++对象模型---c++八大金刚----Stanley B.Lippman Essential C++中文版---c++八大金刚---Stanley B.Lippman Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers More Effective C++中文版----c++八大金刚------Scott Meyers C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel C++程序设计--------------------------谭浩强 C++ 程序设计教程(第2版)--------------钱能 C++ Primer Plus(第五版)中文版---Stephen Prata 广博如四库全书The c++ programming language、c++ Primer 深奥如山重水复Inside the c++ object model 程序库大全The c++ standard libray 工程经验之积累Effective c++、More Effective c++、Exceptional c++ c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。 3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。 4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。 5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。 6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。 7、The c++ standard libray---c++标准库的百科全书。 8、设计模式:可复用面向对象软件的基础------good! 4、c C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父” C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata C程序设计(第三版)---------------------------谭浩强 C语言大全(第四版)---------------------------HERBERT SCHILDT C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON C语言参考手册(原书第5版)--------------------------Samuel P.Harbison C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel C陷阱与缺陷-----------------------------------Andrew Koenig 5、VB Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师” Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”--- .NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”--- Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师” Visual Basic.NET 从入门到精通-------------------------Petroutsos,E. 高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND 6、Delphi Inside VCL(深入核心——VCL架构剖析)----------李维 Delphi 7高效数据库程序设计--------------李维 面向对象开发实践之路(Delphi版)----------李维 7、VC Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”--- Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”--- Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”--- 深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷 MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski 深入解析MFC-------------MFC四大天王”-----------George Shepherd Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski 8、vf Visual Foxpro程序设计参考手册-------------------张洪举 专家门诊——Visual FoxPro开发答疑160问-------------------张洪举 Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举 Visual FoxPro软件开发模式与应用案例-------------------张洪举 9、黑客 应用密码学(协议算法与C源程序-----------Bruce Schneier 网络信息安全的真相-----------Bruce Schneier 黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE 软件加密技术内幕------------看雪学院 加密与解密——软件保护技术与完全解决方案------------看雪学院 加密与解密(第二版)--------段钢 10、汇编 Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey 80*86、奔腾机汇编语言程序设计---------Barry B. Brey Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬 IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵 IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译 11、驱动开发 Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河 WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河 12、网络 计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客 UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客 用TCP/IP进行网际互联-----------Douglas E. Comer 高级TCP/IP编程-------------------Jon C. Snader C++网络编程-----------------------Douglas Schmidt UNIX环境高级编程(第2版)--------------------Richard Stevens 13、算法 计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑 算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑 离散数学及其应用----------Kenneth H.Rosen 具体数学—计算机科学基础--------Donald.E.Knuth 14、图形编程 Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书 15、数据结构 数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林 数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社 16、软件工程 设计模式--可复用面向对象软件的基础 重构—改善既有代码的设计 17、操作系统 深入理解计算机系统(修订版)-------RANDAL E.BRYANT 18、Unix UNIX 网络编程 卷I 套接字联网API(英文版 第三版 UNIX 编程艺术 UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经 UNIX环境高级编程(英文影印版)(第2版) UNIX环境高级编程(第2版) UNIX环境高级编程(第2版)---UNIX编程“圣经 UNIX网络编程 第1卷:套接口API(第3版) UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX编程环境 UNIX 网络编程 卷I 套接字联网API(英文版 第三版 UNIX系统编程 UNIX环境高级编程 UNIX 网络编程 卷I 套接字联网API(英文版 第三版) UNIX网络编程 第1卷:套接口API(第3版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版) UNIX环境高级编程 Unix技术手册 19、Linux Linux内核设计与实现 Linux内核完全注释 LINUX内核分析及编程 GNU/Linux 编程指南(第二版) Linux设备驱动程序(第三版) 嵌入式设计及Linux驱动开发指南——基于ARM 9处理器 Linux设备驱动程序 第三版(英文影印版) Linux内核设计与实现(第2版) Linux内核设计与实现(英文影印版)(第2版) linux技术手册 20、游戏编程 Windows游戏编程大师技巧(第二版 游戏之旅--我的编程感悟 OpenGL超级宝典:第三版 OpenGL编程指南(第四版) java 游戏高级编程 J2ME手机游戏编程入门 游戏之旅——我的编程感悟 游戏开发中的人工智能(英文影印版) 3D游戏:卷2 动画与高级实时渲染技术 面向对象的游戏开发 java 游戏高级编程 3D游戏编程大师技巧 游戏编程精粹 面向对象的游戏开发 3D游戏 卷1:实时渲染与软件技术 3D游戏:卷2 动画与高级实时渲染技… J2ME手机游戏编程入门 Direct3D游戏编程入门教程(第二版… 21、移动开发 Windows Mobile手机应用开发 SYMBIAN OS C++手机应用开发 Windows Mobile手机应用开发--傅曦 齐宇 徐骏 SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译 SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译 Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林 嵌入式系统Windows CE 开发技巧与实例--傅曦 Palm OS编程实践---绝版 22、单片机 单片机轻松入门----------------------------------周坚(平凡老师) 单片机典型模块设计实例导航-----------------------求是科技 例说8051----------------------------------------张义和 陈敌北 KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧 单片机应用程序设计技术(修订版)--------------------周航慈 8051单片机实践与应用-------------------------------吴金戎 MCS-51系列单片机实用接口技术---------------------李华 23、串并口通讯 Visual C++/Turbo C串口通信编程实践------------------龚建伟 VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之 24、电子 无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌 无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌 图表细说电子技术识图-------------------胡斌 图表细说电子元器件-------------------胡斌 图表细说元器件及实用电路-------------------胡斌 ================================================================ 六、怎样成为一名程序员 通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员。 第一阶段:掌握一种编程语言 学习内容:学习任意一种主流的编程语言。例如C++语言。 学习目标:熟练掌握一种语言的语法和基本的编程技巧。 学习时间:3个月左右 注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0 编译、执行,所以: C++ 不等于 Visual C++ 6.0 第二阶段:掌握一种编程工具 学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。 学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。 学习时间:3个月左右 注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。 第三阶段:掌握“算法与数据结构”这门课程 学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。 学习目标:熟练掌握各种常用的算法与数据结构 学习时间:4个月左右 注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。 第四阶段:实现一个模拟的小型软件项目 学习内容:软件项目的开发过程 学习目标:掌握软件项目的基本开发过程和方法 学习时间:4个月左右 注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效,以它为基础再加以扩展,就可以做出实用的MIS软件来。此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》 《java数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》 《DELPHI数据库系统开发实例导航》《POWERBUILDER 8.0数据库系统开发实例导航》。 最后将完成的模拟软件刻成光盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路。

青衫无名 2019-12-02 01:20:33 0 浏览量 回答数 0

回答

1、Java Java编程语言(第三版)---Java四大名著----James Gosling(Java之父) Java编程思想(第2版)----Java四大名著----Bruce Eckel Java编程思想(第3版)----Java四大名著----------------Bruce Eckel JAVA 2核心技术 卷I:基础知识(原书第7版)---Java四大名著-----Cay Horstmann JAVA 2核心技术 卷II:高级特性(原书第7版)----Java四大名著-----Cay Horstmann Effective Java中文版------Java四大名著--------Joshua Bloch 精通Struts:基于MVC的Java Web设计与开发---孙卫琴 精通Hibernate:Java对象持久化技术详解---孙卫琴 Tomcat与Java Web开发技术详解------------孙卫琴 Java与模式------------------------------阎宏 2、c# C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑” C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑” .NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王 c#Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王 .NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王 .NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王 3、C++ C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父” C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父” 深度探索C++对象模型---c++八大金刚----Stanley B.Lippman Essential C++中文版---c++八大金刚---Stanley B.Lippman Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers More Effective C++中文版----c++八大金刚------Scott Meyers C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel C++程序设计--------------------------谭浩强 C++ 程序设计教程(第2版)--------------钱能 C++ Primer Plus(第五版)中文版---Stephen Prata 广博如四库全书The c++ programming language、c++ Primer 深奥如山重水复Inside the c++ object model 程序库大全The c++ standard libray 工程经验之积累Effective c++、More Effective c++、Exceptional c++ c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。 3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。 4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。 5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。 6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。 7、The c++ standard libray---c++标准库的百科全书。 8、设计模式:可复用面向对象软件的基础------good! 4、c C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父” C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata C程序设计(第三版)---------------------------谭浩强 C语言大全(第四版)---------------------------HERBERT SCHILDT C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON C语言参考手册(原书第5版)--------------------------Samuel P.Harbison C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel C陷阱与缺陷-----------------------------------Andrew Koenig 5、VB Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师” Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”--- .NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”---,Francesco Balena“vb首席大师” Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师” Visual Basic.NET 从入门到精通-------------------------Petroutsos,E. 高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND 6、Delphi Inside VCL(深入核心——VCL架构剖析)----------李维 Delphi 7高效数据库程序设计--------------李维 面向对象开发实践之路(Delphi版)----------李维 7、VC Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”--- Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”--- Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”--- 深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷 MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski 深入解析MFC-------------MFC四大天王”-----------George Shepherd Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski 8、VF Visual Foxpro程序设计参考手册-------------------张洪举 专家门诊——Visual FoxPro开发答疑160问-------------------张洪举 Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举 Visual FoxPro软件开发模式与应用案例-------------------张洪举 9、黑客 应用密码学(协议算法与C源程序-----------Bruce Schneier 网络信息安全的真相-----------Bruce Schneier 黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE 软件加密技术内幕------------看雪学院 加密与解密——软件保护技术与完全解决方案------------看雪学院 加密与解密(第二版)--------段钢 10、汇编 Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey 80*86、奔腾机汇编语言程序设计---------Barry B. Brey Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬 IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵 IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译 11、驱动开发 Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河 WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河 12、网络 计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客 UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客 用TCP/IP进行网际互联-----------Douglas E. Comer 高级TCP/IP编程-------------------Jon C. Snader C++网络编程-----------------------Douglas Schmidt UNIX环境高级编程(第2版)--------------------Richard Stevens 13、算法 计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑 算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑 离散数学及其应用----------Kenneth H.Rosen 具体数学—计算机科学基础--------Donald.E.Knuth 14、图形编程 Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书 15、数据结构 数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林 数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社 16、软件工程 设计模式--可复用面向对象软件的基础 重构—改善既有代码的设计 17、操作系统 深入理解计算机系统(修订版)-------RANDAL E.BRYANT 18、Unix UNIX 网络编程 卷I 套接字联网API(英文版第三版 UNIX 编程艺术 UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经 UNIX环境高级编程(英文影印版)(第2版) 99-UNIX环境高级编程(第2版) UNIX环境高级编程(第2版)---UNIX编程“圣经 UNIX网络编程 第1卷:套接口API(第3版) UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX编程环境 UNIX 网络编程 卷I 套接字联网API(英文版第三版 UNIX系统编程 UNIX环境高级编程 UNIX环境高级编程(英文影印版 88-LINUX内核分析及编程 UNIX 网络编程 卷I 套接字联网API(英文版第三版) UNIX网络编程 第1卷:套接口API(第3版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版) UNIX环境高级编程 UNIX 环境高级编程(英文版) UNIX环境高级编程(第2版) Unix技术手册 19、Linux Linux内核设计与实现 Linux内核完全注释 LINUX内核分析及编程 GNU/Linux 编程指南(第二版) Linux设备驱动程序(第三版)嵌入式设计及Linux驱动开发指南——基于ARM 9处理器 Linux设备驱动程序 第三版(英文影印版) Linux内核设计与实现(第2版) Linux内核设计与实现(英文影印版)(第2版) linux技术手册 20、游戏编程 Windows游戏编程大师技巧(第二版游戏之旅--我的编程感悟 OpenGL超级宝典:第三版 OpenGL编程指南(第四版) Java 游戏高级编程 J2ME手机游戏编程入门 游戏之旅——我的编程感悟游戏开发中的人工智能(英文影印版) 3D游戏:卷2 动画与高级实时渲染技术面向对象的游戏开发 Java 游戏高级编程 3D游戏编程大师技巧游戏编程精粹面向对象的游戏开发 3D游戏 卷1:实时渲染与软件技术 3D游戏:卷2 动画与高级实时渲染技… J2ME手机游戏编程入门 Direct3D游戏编程入门教程(第二版… 21、移动开发 Windows Mobile手机应用开发 SYMBIAN OS C++手机应用开发 68-Windows Mobile手机应用开发--傅曦 齐宇 徐骏 48-SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译 68-SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译 Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林 嵌入式系统Windows CE 开发技巧与实例--傅曦 Palm OS编程实践---绝版 22、单片机 单片机轻松入门----------------------------------周坚(平凡老师) 单片机典型模块设计实例导航-----------------------求是科技 例说8051----------------------------------------张义和 陈敌北 KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧 单片机应用程序设计技术(修订版)--------------------周航慈 8051单片机实践与应用-------------------------------吴金戎 MCS-51系列单片机实用接口技术---------------------李华 23、串并口通讯 Visual C++/Turbo C串口通信编程实践------------------龚建伟 VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之 24、电子 无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌 无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌 图表细说电子技术识图-------------------胡斌 图表细说电子元器件-------------------胡斌 图表细说元器件及实用电路-------------------胡斌

小旋风柴进 2019-12-02 01:20:32 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

数据结构其实大多数将一些算法,最经典的是《算法导论》。其中也有很多部分讲数据结构,但是本人认为这本书有些难度,要求比较好的数学功底。我个人推荐《数据结构与算法分析-C++描述》,或者《数据结构与算法分析-C语言描述》,我更推荐后者,因为c语言简单,不会牵扯到太多面向对象语言特性。 有问题,请追问;-------------------------c++实例教程,书的颜色是红颜色的。北京大学出版社,不错的

寒凝雪 2019-12-02 01:21:09 0 浏览量 回答数 0

问题

c++对象内存分配的问题,如何确定在堆上还是在栈上?

a123456678 2019-12-01 20:08:05 1007 浏览量 回答数 1

问题

JS对象与类的名词性问题

小旋风柴进 2019-12-01 20:24:48 790 浏览量 回答数 1

问题

linux怎么实现异步延时?

a123456678 2019-12-01 19:55:41 850 浏览量 回答数 1

回答

tableView:numberOfRowsInSection是方法名,(oc里面方法名+参数关键字) == c++里的函数名 tableView和section是参数名 -代表是实例方法 括号里都是类型 是不是这个函数的名字是tableView:numberOfRowsInSection,它有两个参数,分别是:(UITableView *)tableView 和 (NSInteger)section ,函数的返回值是(NSInteger) 。

杨冬芳 2019-12-02 03:01:12 0 浏览量 回答数 0

问题

Linux下编译C++文件出现问题

杨冬芳 2019-12-01 20:24:10 858 浏览量 回答数 1

回答

js中一切东西都是对象,函数也是var obj = function(){}你使用这个obj和使用一个对象思想是一致的。既然是对象那当然是实例另外说点题外话js中一切都是对象,函数是一等公民,注意没有类啊比如我们的Object,Array,Number,等他们都是函数,并不是我们类比Java等其他语言中的类一样var obj = new Object这个本质上是函数的构造器调用模式,可不是如同C++中用类名来new 一个对象那么简单。js中没有类的概念,没有从类生产对象的概念,因此在js中谈实例是不合适的。使用对象更复合js的内涵

小旋风柴进 2019-12-02 02:29:58 0 浏览量 回答数 0

回答

js中一切东西都是对象,函数也是var obj = function(){}你使用这个obj和使用一个对象思想是一致的。既然是对象那当然是实例另外说点题外话js中一切都是对象,函数是一等公民,注意没有类啊比如我们的Object,Array,Number,等他们都是函数,并不是我们类比Java等其他语言中的类一样var obj = new Object这个本质上是函数的构造器调用模式,可不是如同C++中用类名来new 一个对象那么简单。js中没有类的概念,没有从类生产对象的概念,因此在js中谈实例是不合适的。使用对象更复合js的内涵

51干警网 2019-12-02 01:34:24 0 浏览量 回答数 0

回答

嵌入式书籍推荐 : Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R) 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》 杨宗德 硬件基础 1、《ARM体系结构与编程》杜春雷 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》 杨宗德 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐

美人迟暮 2019-12-02 01:21:01 0 浏览量 回答数 0

回答

最起码是Main这个类被加载了,负责加载main的AppClassLoader也被实例化了。 所以说肯定还是有一些对象是伴随main产生的。 Java跟C++/C这种native语言不一样的地方是,很难保证所见即所得....加了点代码,证明还是在main之前有些对象被产生了import java.util.Objects; public class MyTest{ static{ System.out.println(MyTest.class.getClassLoader().getClass().getName()); } public static void main(String[] args) { } }由于我对JVM内存池的模型不是很熟悉,所以我无法说,在这过程中,是否会产生一些内存池的对象。

蛮大人123 2019-12-02 01:54:23 0 浏览量 回答数 0

回答

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。从Java的这种分配机制来看,堆栈又可以这样理解:堆栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有先进后出的特性。每一个Java应用都唯一对应一个JVM实例,每一个实例唯一对应一个堆。应用程序在运行中所创建的所有类实例或数组都放在这个堆中,并由应用所有的线程 共享.跟C/C++不同,Java中分配堆内存是自动初始化的。Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。

宏卓 2019-12-02 01:48:33 0 浏览量 回答数 0

问题

sizeof() 如何得到C++类/结构中成员所占空间大小???

a123456678 2019-12-01 20:10:04 1012 浏览量 回答数 1

问题

C++中类的方法的调用 . 和->的区别

a123456678 2019-12-01 20:11:59 639 浏览量 回答数 1

回答

嵌入式Linux操作系统学习规划 ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软件开发的缺点是: (1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 (4)平台依托强,换平台比较辛苦。 兴趣的由来: 1、成功观念不同,不虚度此生,就是我的成功。 2、喜欢思考,挑战逻辑思维。 3、喜欢C C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: 相信程序员。 不要阻止程序员做那些需要去做的。 保持语言短小精干。 一种方法做一个操作。 使得它运行的够快,尽管它并不能保证将是可移植的。 4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 方法步骤: 1、基础知识: 目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 2、学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习: A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 2010-8-21 16:46 回复 122.90.173.* 2楼 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的。 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程。等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》 杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》 杨宗德著 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重。。。

小旋风柴进 2019-12-02 01:20:03 0 浏览量 回答数 0

回答

Showcase.prototype.run = function(obj) { for(var i = 0; i < this.goodsPreviewBox.length; i++) { this.goodsPreviewBox[i].index = i; //移入显示 this.goodsPreviewBox[i].onmousemove = function(event) { var event = event || window.event; obj.showGoodsPic(event, this.index); } //移出隐藏 this.goodsPreviewBox[i].onmouseout = function() { obj.hideGoodsPic(); } } } 调用 myTshirt.run(myTshirt); 这样就没问题了。在一个类里声明一个属性实例指向自己,感觉有点怪异,Java、C++里似乎没见过这样用的。这大概和javascript的实现有关,不过如果这样用更方便就这样用吧,呵呵。

a123456678 2019-12-02 03:10:37 0 浏览量 回答数 0

回答

开发板用友善之臂的吧 mini2440 连3.5寸屏500块钱的样子 有好几张DVD学习光盘 这款口碑比较高 嵌入式Linux操作系统学习规划 ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软件开发的缺点是: (1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 (4)平台依托强,换平台比较辛苦。 兴趣的由来: 1、成功观念不同,不虚度此生,就是我的成功。 2、喜欢思考,挑战逻辑思维。 3、喜欢C C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: 相信程序员。 不要阻止程序员做那些需要去做的。 保持语言短小精干。 一种方法做一个操作。 使得它运行的够快,尽管它并不能保证将是可移植的。 4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 方法步骤: 1、基础知识: 目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 2、学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习: A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 2010-8-21 16:46 回复 122.90.173.* 2楼 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的。 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程。等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》 杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》 杨宗德著 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重。。。

一键天涯 2019-12-02 01:19:56 0 浏览量 回答数 0

回答

触及 multiple inheritance (MI)(多继承)的时候,C++ 社区就会鲜明地分裂为两个基本的阵营。一个阵营认为如果 single inheritance (SI)(单继承)是有好处的,multiple inheritance(多继承)一定更有好处。另一个阵营认为 single inheritance(单继承)有好处,但是多继承引起的麻烦使它得不偿失。在本文中,我们的主要目的是理解在 MI 问题上的这两种看法。   首要的事情之一是要承认当将 MI 引入设计领域时,就有可能从多于一个的 base class(基类)中继承相同的名字(例如,函数,typedef,等等)。这就为歧义性提供了新的时机。例如: class BorrowableItem { // something a library lets you borrowpublic: void checkOut(); // check the item out from the library ..}; class ElectronicGadget {private: bool checkOut() const; // perform self-test, return whether ... // test succeeds}; class MP3Player: // note MI herepublic BorrowableItem, // (some libraries loan MP3 players)public ElectronicGadget{ ... }; // class definition is unimportant MP3Player mp; mp.checkOut(); // ambiguous! which checkOut?    注意这个例子,即使两个函数中只有一个是可访问的,对 checkOut 的调用也是有歧义的。(checkOut 在 BorrowableItem 中是 public(公有)的,但在 ElectronicGadget 中是 private(私有)的。)这与 C++ 解析 overloaded functions(重载函数)调用的规则是一致的:在看到一个函数的是否可访问之前,C++ 首先确定与调用匹配最好的那个函数。只有在确定了 best-match function(最佳匹配函数)之后,才检查可访问性。这目前的情况下,两个 checkOuts 具有相同的匹配程度,所以就不存在最佳匹配。因此永远也不会检查到 ElectronicGadget::checkOut 的可访问性。   为了消除歧义性,你必须指定哪一个 base class(基类)的函数被调用: mp.BorrowableItem::checkOut(); // ah, that checkOut...   当然,你也可以尝试显式调用 ElectronicGadget::checkOut,但这样做会有一个 "you're trying to call a private member function"(你试图调用一个私有成员函数)错误代替歧义性错误。    multiple inheritance(多继承)仅仅意味着从多于一个的 base class(基类)继承,但是在还有 higher-level base classes(更高层次基类)的 hierarchies(继承体系)中出现 MI 也并不罕见。这会导致有时被称为 "deadly MI diamond"(致命的多继承菱形)的后果。 class File { ... };class InputFile: public File { ... };class OutputFile: public File { ... };class IOFile: public InputFile,public OutputFile{ ... };    在一个“在一个 base class(基类)和一个 derived class(派生类)之间有多于一条路径的 inheritance hierarchy(继承体系)”(就像上面在 File 和 IOFile 之间,有通过 InputFile 和 OutputFile 的两条路径)的任何时候,你都必须面对是否需要为每一条路径复制 base class(基类)中的 data members(数据成员)的问题。例如,假设 File class 有一个 data members(数据成员)fileName。IOFile 中应该有这个 field(字段)的多少个拷贝呢?一方面,它从它的每一个 base classes(基类)继承一个拷贝,这就暗示 IOFile 应该有两个 fileName data members(数据成员)。另一方面,简单的逻辑告诉我们一个 IOFile object(对象)应该仅有一个 file name(文件名),所以通过它的两个 base classes(基类)继承来的 fileName field(字段)不应该被复制。   C++ 在这个争议上没有自己的立场。它恰当地支持两种选项,虽然它的缺省方式是执行复制。如果那不是你想要的,你必须让这个 class(类)带有一个 virtual base class(虚拟基类)的数据(也就是 File)。为了做到这一点,你要让从它直接继承的所有的 classes(类)使用 virtual inheritance(虚拟继承): class File { ... };class InputFile: virtual public File { ... };class OutputFile: virtual public File { ... };class IOFile: public InputFile,public OutputFile{ ... };    标准 C++ 库包含一个和此类似的 MI hierarchy(继承体系),只是那个 classes(类)是 class templates(类模板),名字是 basic_ios,basic_istream,basic_ostream 和 basic_iostream,而不是 File,InputFile,OutputFile 和 IOFile。   从正确行为的观点 看,public inheritance(公有继承)应该总是 virtual(虚拟)的。如果这是唯一的观点,规则就变得简单了:你使用 public inheritance(公有继承)的任何时候,都使用 virtual public inheritance(虚拟公有继承)。唉,正确性不是唯一的视角。避免 inherited fields(继承来的字段)复制需要在编译器的一部分做一些 behind-the-scenes legerdemain(幕后的戏法),而结果是从使用 virtual inheritance(虚拟继承)的 classes(类)创建的 objects(对象)通常比不使用 virtual inheritance(虚拟继承)的要大。访问 virtual base classes(虚拟基类)中的 data members(数据成员)也比那些 non-virtual base classes(非虚拟基类)中的要慢。编译器与编译器之间有一些细节不同,但基本的要点很清楚:virtual inheritance costs(虚拟继承要付出成本)。   它也有一些其它方面的成本。支配 initialization of virtual base classes(虚拟基类初始化)的规则比 non-virtual bases(非虚拟基类)的更加复杂而且更不直观。初始化一个 virtual base(虚拟基)的职责由 hierarchy(继承体系)中 most derived class(层次最低的派生类)承担。这个规则中包括的含义:   (1) 从需要 initialization(初始化)的 virtual bases(虚拟基)派生的 classes(类)必须知道它们的 virtual bases(虚拟基),无论它距离那个 bases(基)有多远;   (2) 当一个新的 derived class(派生类)被加入继承体系时,它必须为它的 virtual bases(虚拟基)(包括直接的和间接的)承担 initialization responsibilities(初始化职责)。    我对于 virtual base classes(虚拟基类)(也就是 virtual inheritance(虚拟继承))的建议很简单。首先,除非必需,否则不要使用 virtual bases(虚拟基)。缺省情况下,使用 non-virtual inheritance(非虚拟继承)。第二,如果你必须使用 virtual base classes(虚拟基类),试着避免在其中放置数据。这样你就不必在意它的 initialization(初始化)(以及它的 turns out(清空),assignment(赋值))规则中的一些怪癖。值得一提的是 Java 和 .NET 中的 Interfaces(接口)不允许包含任何数据,它们在很多方面可以和 C++ 中的 virtual base classes(虚拟基类)相比照。   现在我们使用下面的 C++ Interface class(接口类)(参见《C++箴言:最小化文件之间的编译依赖》)来为 persons(人)建模: class IPerson {public: virtual ~IPerson();  virtual std::string name() const = 0; virtual std::string birthDate() const = 0;};    IPerson 的客户只能使用 IPerson 的 pointers(指针)和 references(引用)进行编程,因为 abstract classes(抽象类)不能被实例化。为了创建能被当作 IPerson objects(对象)使用的 objects(对象),IPerson 的客户使用 factory functions(工厂函数)(再次参见 Item 31)instantiate(实例化)从 IPerson 派生的 concrete classes(具体类): // factory function to create a Person object from a unique database ID;// see Item 18 for why the return type isn't a raw pointerstd::tr1::shared_ptr makePerson(DatabaseID personIdentifier); // function to get a database ID from the userDatabaseID askUserForDatabaseID(); DatabaseID id(askUserForDatabaseID());std::tr1::shared_ptr pp(makePerson(id)); // create an object// supporting the// IPerson interface ... // manipulate *pp via// IPerson's member// functions   但是 makePerson 怎样创建它返回的 pointers(指针)所指向的 objects(对象)呢?显然,必须有一些 makePerson 可以实例化的从 IPerson 派生的 concrete class(具体类)。    假设这个 class(类)叫做 CPerson。作为一个 concrete class(具体类),CPerson 必须提供它从 IPerson 继承来的 pure virtual functions(纯虚拟函数)的 implementations(实现)。它可以从头开始写,但利用包含大多数或全部必需品的现有组件更好一些。例如,假设一个老式的 database-specific class(老式的数据库专用类)PersonInfo 提供了 CPerson 所需要的基本要素: class PersonInfo {public: explicit PersonInfo(DatabaseID pid); virtual ~PersonInfo();  virtual const char * theName() const; virtual const char * theBirthDate() const; ... private: virtual const char * valueDelimOpen() const; // see virtual const char * valueDelimClose() const; // below ...};    你可以看出这是一个老式的 class(类),因为 member functions(成员函数)返回 const char*s 而不是 string objects(对象)。尽管如此,如果鞋子合适,为什么不穿呢?这个 class(类)的 member functions(成员函数)的名字暗示结果很可能会非常合适。   你突然发现 PersonInfo 是设计用来帮助以不同的格式打印 database fields(数据库字段)的,每一个字段的值的开始和结尾通过指定的字符串定界。缺省情况下,字段值开始和结尾定界符是方括号,所以字段值 "Ring-tailed Lemur" 很可能被安排成这种格式: [Ring-tailed Lemur]   根据方括号并非满足 PersonInfo 的全体客户的期望的事实,virtual functions(虚拟函数)valueDelimOpen 和 valueDelimClose 允许 derived classes(派生类)指定它们自己的开始和结尾定界字符串。PersonInfo 的 member functions(成员函数)的 implementations(实现)调用这些 virtual functions(虚拟函数)在它们返回的值上加上适当的定界符。作为一个例子使用 PersonInfo::theName,代码如下: const char * PersonInfo::valueDelimOpen() const{ return "["; // default opening delimiter} const char * PersonInfo::valueDelimClose() const{ return "]"; // default closing delimiter} const char * PersonInfo::theName() const{ // reserve buffer for return value; because this is // static, it's automatically initialized to all zeros static char value[Max_Formatted_Field_Value_Length];  // write opening delimiter std::strcpy(value, valueDelimOpen());  append to the string in value this object's name field (being careful to avoid buffer overruns!)  // write closing delimiter std::strcat(value, valueDelimClose());  return value;}    有人可能会质疑 PersonInfo::theName 的陈旧的设计(特别是一个 fixed-size static buffer(固定大小静态缓冲区)的使用,这样的东西发生 overrun(越界)和 threading(线程)问题是比较普遍的——参见《C++箴言:必须返回对象时别返回引用》),但是请把这样的问题放到一边而注意这里:theName 调用 valueDelimOpen 生成它要返回的 string(字符串)的开始定界符,然后它生成名字值本身,然后它调用 valueDelimClose。   因为 valueDelimOpen 和 valueDelimClose 是 virtual functions(虚拟函数),theName 返回的结果不仅依赖于 PersonInfo,也依赖于从 PersonInfo 派生的 classes(类)。    对于 CPerson 的实现者,这是好消息,因为当细读 IPerson documentation(文档)中的 fine print(晦涩的条文)时,你发现 name 和 birthDate 需要返回未经修饰的值,也就是,不允许有定界符。换句话说,如果一个人的名字叫 Homer,对那个人的 name 函数的一次调用应该返回 "Homer",而不是 "[Homer]"。   CPerson 和 PersonInfo 之间的关系是 PersonInfo 碰巧有一些函数使得 CPerson 更容易实现。这就是全部。因而它们的关系就是 is-implemented-in-terms-of,而我们知道有两种方法可以表现这一点:经由 composition(复合)(参见《C++箴言:通过composition模拟“has-a”》)和经由 private inheritance(私有继承)(参见《C++箴言:谨慎使用私有继承》)。《C++箴言:谨慎使用私有继承》 指出 composition(复合)是通常的首选方法,但如果 virtual functions(虚拟函数)要被重定义,inheritance(继承)就是必不可少的。在当前情况下,CPerson 需要重定义 valueDelimOpen 和 valueDelimClose,所以简单的 composition(复合)做不到。最直截了当的解决方案是让 CPerson 从 PersonInfo privately inherit(私有继承),虽然 《C++箴言:谨慎使用私有继承》 说过只要多做一点工作,则 CPerson 也能用 composition(复合)和 inheritance(继承)的组合有效地重定义 PersonInfo 的 virtuals(虚拟函数)。这里,我们用 private inheritance(私有继承)。   但 是 CPerson 还必须实现 IPerson interface(接口),而这被称为 public inheritance(公有继承)。这就引出一个 multiple inheritance(多继承)的合理应用:组合 public inheritance of an interface(一个接口的公有继承)和 private inheritance of an implementation(一个实现的私有继承): class IPerson { // this class specifies thepublic: // interface to be implemented virtual ~IPerson();  virtual std::string name() const = 0; virtual std::string birthDate() const = 0;}; class DatabaseID { ... }; // used below; details are// unimportant class PersonInfo { // this class has functionspublic: // useful in implementing explicit PersonInfo(DatabaseID pid); // the IPerson interface virtual ~PersonInfo();  virtual const char * theName() const; virtual const char * theBirthDate() const;  virtual const char * valueDelimOpen() const; virtual const char * valueDelimClose() const; ...}; class CPerson: public IPerson, private PersonInfo { // note use of MIpublic: explicit CPerson( DatabaseID pid): PersonInfo(pid) {} virtual std::string name() const // implementations { return PersonInfo::theName(); } // of the required // IPerson member virtual std::string birthDate() const // functions { return PersonInfo::theBirthDate(); }private: // redefinitions of const char * valueDelimOpen() const { return ""; } // inherited virtual const char * valueDelimClose() const { return ""; } // delimiter}; // functions   在 UML 中,这个设计看起来像这样:   这个例子证明 MI 既是有用的,也是可理解的。    时至今日,multiple inheritance(多继承)不过是 object-oriented toolbox(面向对象工具箱)里的又一种工具而已,典型情况下,它的使用和理解更加复杂,所以如果你得到一个或多或少等同于一个 MI 设计的 SI 设计,则 SI 设计总是更加可取。如果你能拿出来的仅有的设计包含 MI,你应该更加用心地考虑一下——总会有一些方法使得 SI 也能做到。但同时,MI 有时是最清晰的,最易于维护的,最合理的完成工作的方法。在这种情况下,毫不畏惧地使用它。只是要确保谨慎地使用它。   Things to Remember   ·multiple inheritance(多继承)比 single inheritance(单继承)更复杂。它能导致新的歧义问题和对 virtual inheritance(虚拟继承)的需要。    ·virtual inheritance(虚拟继承)增加了 size(大小)和 speed(速度)成本,以及 initialization(初始化)和 assignment(赋值)的复杂度。当 virtual base classes(虚拟基类)没有数据时它是最适用的。   ·multiple inheritance(多继承)有合理的用途。一种方案涉及组合从一个 Interface class(接口类)的 public inheritance(公有继承)和从一个有助于实现的 class(类)的 private inheritance(私有继承)。 关于虚拟继承的思考虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要(因为这样只会降低效率和占用更多的空间,实在是一无是处)。  以下面的一个例子为例:  #include   #include   class CA  {   int k; //为了便于说明后面的内存结构特别添加  public:   void f() {cout << "CA::f" << endl;}  };  class CB : public CA  {  };  class CC : public CA  {  };  class CD : public CB, public CC  {  };  void main()  {   CD d;   d.f();  }  当编译上述代码时,我们会收到如下的错误提示:  error C2385: 'CD::f' is ambiguous  即编译器无法确定你在d.f()中要调用的函数f到底是哪一个。这里可能会让人觉得有些奇怪,命名只定义了一个CA::f,既然大家都派生自CA,那自然就是调用的CA::f,为什么还无法确定呢?  这是因为编译器在进行编译的时候,需要确定子类的函数定义,如CA::f是确定的,那么在编译CB、CC时还需要在编译器的语法树中生成CB::f,CC::f等标识,那么,在编译CD的时候,由于CB、CC都有一个函数f,此时,编译器将试图生成两个CD::f标识,显然这时就要报错了。(当我们不使用CD::f的时候,以上标识都不会生成,所以,如果去掉d.f()一句,程序将顺利通过编译)  要解决这个问题,有两个方法:  1、重载函数f():此时由于我们明确定义了CD::f,编译器检查到CD::f()调用时就无需再像上面一样去逐级生成CD::f标识了;  此时CD的元素结构如下:  --------  |CB(CA)|  |CC(CA)|  --------  故此时的sizeof(CD) = 8;(CB、CC各有一个元素k)  2、使用虚拟继承:虚拟继承又称作共享继承,这种共享其实也是编译期间实现的,当使用虚拟继承时,上面的程序将变成下面的形式:  #include   #include   class CA  {   int k;  public:   void f() {cout << "CA::f" << endl;}  };  class CB : virtual public CA  {  };  class CC : virtual public CA  {  };  class CD : public CB, public CC  {  };  void main()  {   CD d;   d.f();  }  此时,当编译器确定d.f()调用的具体含义时,将生成如下的CD结构:  ----  |CB|  |CC|  |CA|  ----  同时,在CB、CC中都分别包含了一个指向CA的vbptr(virtual base table pointer),其中记录的是从CB、CC的元素到CA的元素之间的偏移量。此时,不会生成各子类的函数f标识,除非子类重载了该函数,从而达到“共享”的目的。  也正因此,此时的sizeof(CD) = 12(两个vbptr + sizoef(int));

a123456678 2019-12-02 01:58:07 0 浏览量 回答数 0

回答

一:C语言 嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。 二:Linux基础 Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。 三:Linux系统编程 重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。 四:Linux网络编程 计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。 五:数据结构与算法 数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。 六:C++ 、QT C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。 七:Cortex A8 、Linux 平台开发 通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。 八:驱动开发 驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。 以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。

知与谁同 2019-12-02 01:22:27 0 浏览量 回答数 0

问题

在分配新版本的资源时,在C++中处理复杂资源指针的做法是什么?

aqal5zs3gkqgc 2019-12-20 10:15:47 270 浏览量 回答数 1

问题

C++ 线程和仿函数的问题??

a123456678 2019-12-01 20:10:31 970 浏览量 回答数 1

问题

c++有时候不能调用max函数

DM。 2020-05-27 15:36:16 3 浏览量 回答数 1

问题

C/C++ SDK集群方式订阅消息如何实现?

猫饭先生 2019-12-01 21:14:57 1287 浏览量 回答数 0

回答

Python中没有像C++中public和private这些关键字来区别公有属性和私有属性。它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。 class Plane(object): def __init__(self): self.mA = 100 self.mB = 200 self.__mC = 300  p  = Plane() 但是类的方法可以封装__私有属性,如下可以通过Student.get_name访问self.__name class Student(object): # 类名的括号里写继承的类,如果没有则写object,这是所有类都要继承的类     school = '清华大学' # 直接在类中定义的属性为类属性,归Student类所有,所有实例都可以访问到,但是与java的静态变量不同,如果一个实例改变了school的值,那么这个新值就生效,且只对这一个实例生效     def __init__(self, name, score): # 只要是class中定义的函数,第一个参数都要写self,并且调用时第一个参数都不必传                                     # init 是特殊函数,在创建类时会调用,相当于java的构造函数        self.__name = name # 可以直接self.新的变量名,注意,两个下划线开头的变量名为私有变量,不允许外部访问,但可以通过get和set方法访问和赋值        self.__score = score # 以两个下划线开头且以两个下划线结尾的变量为特殊变量,特殊变量不是私有变量,允许外部访问,因此起变量名时不要起成这种特殊变量的格式     def get_name(self):        return self.__name     def get_score(self):        return self.__score     def set_score(self, score):        if 0 <= score <= 100:            self.__score = score        else:            raise ValueError('bad score') # 手动抛出异常     def get_grade(self):        if self.__score >= 90:            return 'A'        elif self.__score >= 60:            return 'B'        else:            return 'C'

游客drl6uevi2k7uk 2019-12-02 01:57:43 0 浏览量 回答数 0

回答

生命周期:加载和实例化Servlet我们来看一下Tomcat是如何加载的: 1. 如果已配置自动装入选项,则在启动时自动载入。 2. 在服务器启动时,客户机首次向Servlet发出请求。 3. 重新装入Servlet时。 当启动Servlet容器时,容器首先查找一个配置文件web.xml,这个文件中记录了可以提供服务的Servlet。每个Servlet被指定一个Servlet名,也就是这个Servlet实际对应的Java的完整class文件名。Servlet容器会为每个自动装入选项的Servlet创建一个实例。所以,每个Servlet类必须有一个公共的无参数的构造器。 初始化 当Servlet被实例化后,Servlet容器将调用每个Servlet的init方法来实例化每个实例,执行完init方法之后,Servlet处于“已初始化”状态。所以说,一旦Servlet被实例化,那么必将调用init方法。通过Servlet在启动后不立即初始化,而是收到请求后进行。在web.xml文件中用<load-on-statup> ...... </load-on-statup>对Servlet进行预先初始化。 初始化失败后,执行init()方法抛出ServletException异常,Servlet对象将会被垃圾回收器回收,当客户端第一次访问服务器时加载Servlet实现类,创建对象并执行初始化方法。 请求处理 Servlet 被初始化以后,就处于能响应请求的就绪状态。每个对Servlet 的请求由一个Servlet Request 对象代表。Servlet 给客户端的响应由一个Servlet Response对象代表。对于到达客户机的请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。调用service方法,这个方法可以调用其他方法来处理请求。 Service方法会在服务器被访问时调用,Servlet对象的生命周期中service方法可能被多次调用,由于web-server启动后,服务器中公开的部分资源将处于网络中,当网络中的不同主机(客户端)并发访问服务器中的同一资源,服务器将开设多个线程处理不同的请求,多线程同时处理同一对象时,有可能出现数据并发访问的错误。 另外注意,多线程难免同时处理同一变量时(如:对同一文件进行写操作),且有读写操作时,必须考虑是否加上同步,同步添加时,不要添加范围过大,有可能使程序变为纯粹的单线程,大大削弱了系统性能;只需要做到多个线程安全的访问相同的对象就可以了。 卸载Servlet 当服务器不再需要Servlet实例或重新装入时,会调用destroy方法,使用这个方法,Servlet可以释放掉所有在init方法申请的资源。一个Servlet实例一旦终止,就不允许再次被调用,只能等待被卸载。 Servlet一旦终止,Servlet实例即可被垃圾回收,处于“卸载”状态,如果Servlet容器被关闭,Servlet也会被卸载,一个Servlet实例只能初始化一次,但可以创建多个相同的Servlet实例。如相同的Servlet可以在根据不同的配置参数连接不同的数据库时创建多个实例。 各个方法:init()方法 在Servlet的生命周期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的,可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init(); service()方法 它是Servlet的核心,每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。 destroy()方法 仅执行一次,在服务器端停止且卸载Servlet时执行该方法,有点类似于C++的delete方法。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。 下面来谈谈Servlet的生命周期,Servlet的生命周期是由Servlet容器来控制的,它始于装入Web服务器的内存时,并在终止或重新装入Servlet时结束。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。 在代码中,Servlet生命周期由接口javax.servlet.Servlet定义。所有的Java Servlet 必须直接或间接地实现javax.servlet.Servlet接口,这样才能在Servlet Engine上运行。javax.servlet.Servlet接口定义了一些方法,在Servlet 的生命周期中,这些方法会在特定时间按照一定的顺序被调用。

小川游鱼 2019-12-02 01:50:40 0 浏览量 回答数 0

问题

业务逻辑写在数据库还是自身应用程序?

蛮大人123 2019-12-01 20:02:37 1552 浏览量 回答数 1

问题

C++ MFC有进程没有界面

a123456678 2019-12-01 20:28:24 1281 浏览量 回答数 1

回答

启动线程 在 C++11 中启动一个线程是非常简单的,你可以使用 std:thread 来创建一个线程实例,创建完会自动启动,只需要给它传递一个要执行函数的指针即可,请看下面这个 Hello world 代码: #include <thread> #include <iostream> void hello(){ std::cout << "Hello from thread " << std::endl; } int main(){ std::thread t1(hello); t1.join(); return 0; } 所有跟线程相关的方法都在 thread 这个头文件中定义,比较有意思的是我们在上面的代码调用了 join() 函数,其目的是强迫主线程等待线程执行结束后才退出。如果你没写 join() 这行代码,可能执行的结果是打印了 Hello from thread 和一个新行,也可能没有新行。因为主线程可能在线程执行完毕之前就返回了。线程标识 每个线程都有一个唯一的 ID 以识别不同的线程,std:thread 类有一个 get_id() 方法返回对应线程的唯一编号,你可以通过 std::this_thread 来访问当前线程实例,下面的例子演示如何使用这个 id: #include <thread> #include <iostream> #include <vector> void hello(){ std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl; } int main(){ std::vector<std::thread> threads; for(int i = 0; i < 5; ++i){ threads.push_back(std::thread(hello)); } for(auto& thread : threads){ thread.join(); } return 0; } 依次启动每个线程,然后把它们保存到一个 vector 容器中,程序执行结果是不可预测的,例如:Hello from thread 140276650997504Hello from thread 140276667782912Hello from thread 140276659390208Hello from thread 140276642604800Hello from thread 140276676175616 也可能是: Hello from thread Hello from thread Hello from thread 139810974787328Hello from thread 139810983180032Hello from thread139810966394624139810991572736139810958001920 或者其他结果,因为多个线程的执行是交错的。你完全没有办法去控制线程的执行顺序(否则那还要线程干吗?) 使用 lambda 启动线程当线程要执行的代码就一点点,你没必要专门为之创建一个函数,你可以使用 lambda 来定义要执行的代码,因此第一个例子我们可以改写为: #include <thread> #include <iostream> #include <vector> int main(){ std::vector<std::thread> threads; for(int i = 0; i < 5; ++i){ threads.push_back(std::thread([](){ std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl; })); } for(auto& thread : threads){ thread.join(); } return 0; }

a123456678 2019-12-02 01:56:44 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站