标签:c++ 预处理器 tiobe http 命令 数据传输 大赛 because 实现
title: 系统与软件知识
tags: 系统,软件,小书匠
grammar_cjkRuby: true
---
Copyright (C) @2018 Widic
Filename:
File-function:
Cre_ID: @ Widic 2018-1-23
Mod_ID:
[toc]
系统知识结构
软件
单片机是一种可通过编程控制的微处理器。需要靠外围的数字器件或模拟器件才可发挥其自身的强大功能。
学习方法:可参考 郭天祥 51单片机 1.1.4章节。
单片机属于控制类数字芯片
序号 | 名称 | 备注 |
---|---|---|
1 | C | 表示商业用产品,温度范围为 0度 ~ + 70 度 |
2 | I | 表示工业用产品 |
3 | A | 表示汽车用产品 |
4 | M | 表示军用产品 |
冯-诺依曼结构
哈佛结构
电平类型 | 描述 |
---|---|
TTL | 高(+5V) 低(0V) |
RS-232C | 高(-12V) 低(+12V) 负逻辑电平 |
串口通信:掌握单片机之间通信、单片机与计算机之间的通信。
I2C总线
指令周期:它是指CPU执行一条指令所需要的时间,一般一个指令周期含有1~4个机器周期。
串行通信的错误校验:奇偶校验,代码和校验,循环冗余校验。
程序 = 数据 + 算法;
数据是程序使用和处理的信息;
算法是程序使用的方法;
C语言最初面世时,是过程性的,这意味着它强调的是编程的算法方面;从概念上来说,过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作。“意大利面条式编程”。 解决方法 - 结构化编程(C语言就包含了这些结构for循环,while 循环, 和if else 循环)。设计方法,自顶而下的设计方法。(《在C语言大学教程》里面见到过)在C语言中,其理念是将大型程序分解成小型、便于管理的任务,如果其中一项任务过大,继续分解下去。C语言的设计有助于这种方法,他鼓励程序员开发程序单元(函数)来表示各个任务模块。如上所述,结构化变成技术反映了过程性编程的思想,根据执行的操作来构思一个程序。
他身体力行地鼓励自己的两个女儿学习编程,甚至觉得两个女儿起步太晚了。
奥巴马也以身作则地投入编程学习,成为世界上首位会写程序的总统:在“编程一小时”的课程结束时,他写出了人生中第一段 JavaScript 代码,成功地画出了一个正方形。而为了更好地宣传全民写代码,奥巴马更是通过Youtube发布了号召加入编程学习行列的视频。
"It‘s got to be everybody. Everybody‘s got to learn how to code early."
—— Barack HusseinObama II, former US President
“不仅对于孩子,而是所有人,都必须尽早地学习编程。”
“Everybody in this country should learn how to program a computer… because it teaches youhow to think.”
—— Steve Jobs, the founder of Apple
“学习编程可以教会人如何思考,就像学法律一样。学法律的最后并不一定成为律师,但法律能教会人一种思考方式。编程也一样,计算机科学应该是一种基础教育,每个人都应该花一年时间学习编程。”
编程最大优点是培养人将复杂问题拆分解决的能力。乔布斯对于自己在20岁前后学习编程的经历给予很高的评价:“我们把编程看作思考的镜子并学习如思考。”
比尔-盖茨13岁开始学编程,后来他成了世界首富。马克-扎克伯格10岁开始学编程后来他成了最年轻的亿万富翁。facebook的创始人兼首席执行官。
百度创始人李彦宏、腾迅创始人马化腾、新浪创始人王志东、网易创始人丁磊、360创始人周鸿祎,他们都有共同的职业起点——程序员。
编程能够帮助人们构架起已有技能之间的桥梁,启发孩子们无线的创造力!
——麻省理工学院教授米切尔·雷斯尼克
计算机科学可以打开这个世界上最好的机会。
——微软总裁萨提亚
美国总统奥巴马呼吁全民编程,号召“编程一小时”
不要只是买一个新的电脑游戏,自己做一个;不要只是下载最新的应用程序,帮助设计它;不要只是在手机上玩玩,编写它的代码。
——奥巴马
“编程一小时”是由谷歌、微软、脸谱等全球顶级科技公司创立的非营利组织Code.org发起,旨在提高人们尤其是青少年创新能力、计算思维和普及计算机科学教育的一个活动,目前全球已有4000多万人参与,2015年12月7日,第三届“编程一小时”活动将在全球拉开帷幕!
2013年起,美国总统奥巴马号召全美学生学编程,截至目前,美国已有500万青少年正在学**编程。
2014年起,英国将编程作为5-16岁学生的必修课。
2012年起,日本中小学生就开始学**编程了,日本经济新闻产业部报道,2015年日本小学生在软件大赛中开始崭露头角!
2017年起,新加坡将会在中小学考试中加入编程课目。
2017年起,中国浙江等地将把信息技术(含编程)正式升级为高考项目。
...
值得注意的是,专门面向儿童的编程语言,如“Scratch”、“CargoBot”等,特点是不使用过于繁复的计算机语言,而是采用类似乐高一样的模块进行编程。
放眼全球,在英国,编程已经进入基础教育大纲,学分和数学一样。
从2013年起,美国非盈利组织Code.org发起的“编程一小时”活动引起极大反响,访问量已经接近1.4亿。
“编程一小时”每年12月7日-13日期间举行,鼓励年轻人亲自尝试编程学,每天花一小时学编程,借此让更多的人参与到编码中并意识到计算机科学教育的重要性。
“编程一小时”得到美国社会各界的大力支持,包括微软、苹果、亚马逊以及美国大学理事会等公司及机构都积极响应。Code提供的教程几乎全部由知名人士录制,其中包括比尔·盖茨和马克·扎克伯格这样的业界巨头,也有波什这样的NBA明星。在去年的“编程一小时”活动中,甚至连美国总统奥巴马也亲身站台,呼吁美国小朋友“别总在手机上玩,要去编程”。
“编程一小时”,效果带给孩子们的,带给商家的?我们拭目以待。
Learn to code, code to learn
月排行榜:Java 和 C 下跌厉害
2017-05-08
TIOBE 最近公布了 2017 年 5 月编程语言指数排行榜,排名前三的还是 Java、C、C++,Python 和 C# 排第四和第五。自从 2016 年开始,Java 和 C 的比率数据在下降。和去年同期相比,两者已下降超过 6%。流失的部分,哪些编程语言受益了呢?嗯,是其他语言都受益了。
随着越来越多的领域采用软件,C(底层软件开发)和 Java(高级软件开发)显然无法都满足了。2012 年的时候,0.6% 占有比率的编程语言,就能进入 Top 20,而如今这个数字智能排在第 33 位了。此外,教育类编程语言 Scratch 在今年 2 月份,5 月继续在 Top 20。
数据是程序使用和处理的信息;数据在程序中的使用依赖数据结构。
算法是程序使用的方法;
过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作。
过程化 语言具有两把大刀:
面向过程:面向过程的设计思想在思考问题时,是以一个具体的流程为单位,考虑它的实现方法,关心的是实现的功能。程序设计过程一般由各个相关联的函数实现,耦合性比较强。
意大利面条 ---组织 --- 结构化编程(structured programming)
1. 结构化编程(structured programming ) 结构化编程将分支(决定接下来应执行哪个指令)限制为一小组行为良好的结构。 结构化编程技术反映了过程性编程的思想,根据执行的操作来构思一个程序。
2. 自定而下的程序设计方法:
1. 理念: 大型程序分解为小型便于管理的任务。如果过大,则再分。
2. C语言的设计有助于使用这种方法:可以使用函数来表示各个任务模块。
面向对象编程(OOP):
面向对象:面向对象的设计思想在思考问题时,以具体的事物(对象)为单位,考虑它的属性及动作,关注整体,就好比观察一个人一样,不仅要关注他怎样说话,怎样走路,还要关注他的身高,体重,长相等属性特征。
结构化编程提高了程序的清晰度、可靠性,容易维护,但当大型程序编写时,仍面临挑战。
与oop不同面向过程试图免租语言的过程性方法,而是试图让语言来满足问题的要求。
OOP理念是设计与问题的本质特性相对应的数据格式。
OOP的方法首先是设计类:这种从低级组织(类)到高级组织(程序)处理过程叫做自下而上的编程。
OOP 不仅仅是将数据和方法合并为类定义。还引入了很多新的理念。它不是将重点放在任务上,而是放在概念上。有时不一定适用自上而下的编程方法。而是使用自下而上的方法。
3. 面向对象的三个基本特征:封装、继承、多态;
软件开发的过程简介:需求分析、架构设计、程序编码、软件测试、部署、维护等几个阶段。
一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。
C++、JAVA、C#等编程语言基本上都来自C语言,但又有很多区别,业内人士通常将C比作爷爷,C++ 比作爷爷的儿子,Java 和C# 等语言比作孙子。对于变量声明、参数传递、操作符、流控制等,Java使用了与C,C++相同的传统,而C++主要是对C的扩展,并融入了面向对象的思想,JAVA和C#语言是纯粹的面向对象的编程语言,吸收了C、C++语言的很多优点,摒弃了很多缺点,但C# 编程语言的运行依赖于Windows平台,而Java 语言不依赖于任何平台,因此使得熟悉C、C++、C#的程序员能够很方便地转向Java编程。
STL
Java 简单高效 面向对象,不依赖于机器的结构(跨平台)可移植性好、安全等特点,并提供了并发机制。具有很高的性能。
Java最大限度地利用了网络,Java的小应用程序可在网络上传输而不受CPU和环境的限制。
Java 还有丰富的类库,程序设计者可以很方便得建立自己的系统
对于语言来说就是
graph TD;
C-->三种语句;
C-->两种结构;
三种语句--> 顺序;
三种语句--> 循环;
三种语句--> 选择;
两种结构--> 堆叠;
两种结构--> 嵌套;
浙江大学计算机程序设计能力考试(Programming Ability Test,简称PAT)是由浙江大学计算机科学与技术学院组织的统一考试,旨在培养和展现学生分析问题、解决问题和计算机程序设计的能力,科学评价计算机程序设计人才,并为企业选拔人才提供参考标准。
ACM所评选的图灵奖(A.M. Turing Award)被公认为世界计算机领域的诺贝尔奖。现任主席为Vicki L. Hanson教授。
a是全局变量,放在全局区
str是常亮字符串放在文字常量区,str针放在全局区
b和*obj对象都是new出来的,放在堆区,指针b和obj放在栈区
c,obj2,aa是局部变量,lhs和rhs是函数参数值,都放在栈区
抽象类具有以下特性:
模版是编译时多态,它在编译时生成模版函数;虚函数是运行时多态,它根据运行时的具体对象选择相应的接口。
构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~、析构函数没有参数 、析构函数可以定义为虚函数
析构函数可以定义为虚函数?
关于内联函数:在内联函数中不允许使用循环语句(for,while)和switch结果,带有异常接口声明的函数也不能声明为内联函数。另外,递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数只适合于只有1~5行的小函数。
关于函数:函数的定义不可以嵌套,函数的调用可以嵌套。
内存:
所有的局部变量在栈区,所以p在栈上,栈区是动态存储区,自动分配内存、自动回收;
堆区:人工分配、释放,所以new出来的在堆上;
malloc不能直接申请内存。它申请的是物理内存。
A 先自增,然后返回所指向地址的值,*和++优先级相同,右结合性
空指针为NULL
C的运算符有以下几类:
2.1.算术运算符:* - + /
2.关系运算符: > < == != >= <=
3.逻辑运算符:! && ||
4.位运算符:<< >> ~ | ^ &
5.赋值运算符:=及扩展赋值运算符
6.条件运算符:?:
7.逗号运算符:,
8.指针运算符:*和&
9.求字节数运算符:sizeof
10.强制类型转换运算符:(类型)
11.分量运算符:. ->
12.下标运算符:[ ]
13.其他:如函数调用运算符:()
注意:条件运算符是C语言中惟一一个三目(三元)运算符
C语言中最简单的数据类型包括整型,实型,字符型。
左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。
在标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型。
静态分配是指在编译阶段就能确定大小,由编译器进行分配,堆不可以进行静态分配,堆的申请都是在执行过程中进行的。
A,堆和栈的大小都可以设置,栈一般只有几KB。
B,堆在动态分配时,要申请连续的内存空间,释放后会产生碎片。
D,堆是使用malloc()、calloc()、realloc()等函数动态分配的,而使用alloca()函数可以动态分配栈的内存空间,释放的时候由编译器自己释放。
C语言允许函数值类型缺省定义,此时该函数值隐含的类型是整形。
纯虚函数格式:virtual <类型> <函数名> (<参数表>) = 0;
C语言参数入栈的顺序是由右向左。
__cdecl __fastcall与__stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。
运算符优先顺序的描述:
如果没有编译器优化 ++k 和k++运行速度哪个快 : ++k 最佳答案,没有之一: 因为++k运算结束后,k的值和表达式的值相同。 而k++运算结束后,k的值和表达式的值不相同。编译器要开辟一个新的变量来保存k++表达式的值。 所以说:++k更快。
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。
一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区、程序代码
当数组作为函数的参数时,其自动转换为指向函数的指针,sizeof(str_arg)表示的是指针的长度,在32为计算机上为4位。
C语言程序的基本单位是函数。
由printf 输出的数据都隐含右对齐 printf 输出数据的所占的宽度由系统决定。
面向对象的5大原则:(1)单一 职责原则(2)开放封闭原则 (3)里氏替换原则(4)依赖倒置原则 (5)接口隔离原则
Debug 中有 ASSERT 断言保护, 而在Release 优化中就会删除ASSERT所以会出现正常运行。
类中 const 函数: 如果一个成员函数的不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,如果修改,编译器将报错,这大 大提高了程序的健壮性。
#import 是# include 的替代指令,防止重复使用。
c 语言的文件包含是可以嵌套的
C语言用非0表示逻辑真值。
C语言的文件类型有两种: ASCII文件和二进制文件。
共享内存可以用于windows进程间通信。
C语言中最简单的数据类型包括 整型,实型,字符型。
选d,类方法就是静态方法。其它的就是实例方法
实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能访问实例变量。实例方法必须由实例对象来调用,而类方法除了可由实例对象调用外,还可以由类名直接调用。
另外,在类方法中不能使用 this 或 super。 关于类方法的使用,有如下一些限制:
1 在类方法中不能引用对象变量。
2 在类方法中不能使用super、this关键字。
3 类方法不能调用类中的对象方法。
与类方法相比,实例方法几乎没有什么限制:
1 实例方法可以引用对象变量(这是显然的),也可以引用类变量。
2 实例方法中可以使用super、this关键字。
3 实例方法中可以调用类方法。
用户态切换到内核态的3中方式:a.系统调用,b.异常.3.外围设备中断。
linux中的线程状态
1、TASK_RUNNING:
进程当前正在运行,或者正在运行队列中等待调度。
2、TASK_INTERRUPTIBLE:
进程处于睡眠状态,正在等待某些事件发生。进程可以被信号中断。接收到信号或被显式的唤醒呼叫唤醒之后,进程将转变为 TASK_RUNNING 状态。
3、TASK_UNINTERRUPTIBLE:
此进程状态类似于 TASK_INTERRUPTIBLE,只是它不会处理信号。中断处于这种状态的进程是不合适的,因为它可能正在完成某些重要的任务。 当它所等待的事件发生时,进程将被显式的唤醒呼叫唤醒。
4、TASK_STOPPED:
进程已中止执行,它没有运行,并且不能运行。接收到 SIGSTOP 和 SIGTSTP 等信号时,进程将进入这种状态。接收到 SIGCONT 信号之后,进程将再次变得可运行。
5、TASK_TRACED:
正被调试程序等其他进程监控时,进程将进入这种状态。
6、EXIT_ZOMBIE:
进程已终止,它正等待其父进程收集关于它的一些统计信息。
7、EXIT_DEAD:
最终状态(正如其名)。将进程从系统中删除时,它将进入此状态,因为其父进程已经通过 wait4() 或 waitpid() 调用收集了所有统计信息。
8、TASK_KILLABLE:
Linux? kernel 2.6.25 引入了这种进程状态,用于将进程置为睡眠状态,它可以替代有效但可能无法终止的 TASK_UNINTERRUPTIBLE 进程状态,以及易于唤醒但更加安全的 TASK_INTERRUPTIBLE 进程状态。
计算机硬件的五大单元:输入单元,cpu内部的,控制单元与算术逻辑单元,还有内存,以及输出单元。
CISC
RISC
计算机的分类:超级计算机,大型计算机,迷你计算机I,工作站,微电脑。】
关于CPU:有一个加速功能,所以CPU有所谓的外频和倍频。外频:指的是CPU与外部组件进行数据传输和运算时的速度,倍频是CPU内部用来加速工作性能的一个倍数。
==End of File==
标签:c++ 预处理器 tiobe http 命令 数据传输 大赛 because 实现
原文地址:https://www.cnblogs.com/widic/p/9017241.html