目录
计算机由CPU(包括运算器与控制器)、输入设备、输出设备、外部存储器(掉电不丢失)、内部存储器(掉电丢失)组成。
让计算机能够理解并执行的指令即程序。
编程语言从机器能够识别的机器语言发展为与机器语言一一对应的汇编语言,再到高级语言。
由于每种机器的机器码不一样,所以同样的功能在不同的电脑上需要不同的机器语言,因此对应的汇编语言也不一样,导致这两种编程方式的移植性不高。
相比于低级语言,高级语言的移植性更好,但为了简化编程以及提高移植性,高级语言进行了层层嵌套,导致编程效率较低。
高级语言又分为底层C语言,面向对象的C++、C#、Java等以及脚本语言Python等,越底层的语言越简单。
编译过程即将高级语言编译为机器语言的过程。
1.学习单片机的时候了解到,寄存器分为flash、RAM跟ROM,flash为掉电不丢失用来存储数据,RAM负责处理程序掉电丢失,ROM不太记得了,具体与上述的内外部存储器有什么区别与联系;
答案参考下述链接:
2.机器语言由于机器码不一样导致移植性较差,这个机器码不一样是因为每台计算的机器码不一样,还是因为操作系统的原因或者是因为什么导致的;
答案参考下述链接:
机器语言、汇编语言、高级语言_机器语言 汇编语言 高级语言-程序员宅基地
1.计算机组成原理
C语言特性:
效率高、可移植性高、灵活度高
编译型语言过程:
编写代码
源代码统一交给编译器
编译器编译为机器语言,打包成一个可执行文件
将文件交给CPU执行
优点:效率高
缺点:跨平台能力弱,不方便调试
解释型语言过程:
程序交给解释器
解释器每行代码逐一解释成机器语言,CPU一行一行执行
优点:跨平台能力强(通过更换操作系统解释器达到跨平台目的),易于调试
缺点:执行速度慢,程序有修改或BUG需要不停编译
代码可移植性跟跨平台能力的区别在哪?
我的理解为C语言可以通过不同的编译器将源代码编译为想要的机器语言,从而实现各个平台的移植,因此它的代码可移植性高;
解释型语言的程序文本形式存在,本身不需要编译,所以它可以在任何平台上运行,对应的每个平台解释器不一样,所以跨平台能力强。
linux不像Windows有驱动器符号,其所有东西都在根目录下,根目录用 / 表示
linux上的文件名区分大小写
/bin bin是二进制(binary)的缩写
/boot 存放的是系统启动时要用的程序
/dev 包含了linux系统中使用的外部设备
/etc 存放了系统管理时要用的各种配置文件和子目录
/lib 存放系统动态连接共享库
/home 普通用户的主目录,该目录下会有以普通用户用户名命名的文件夹
/root 根用户(超级用户)的主目录
。。。。。。
ps:不同用户的操作权限不同
Linux有七种文件类型:bcd-lsp (编程的-老色匹)
① b:块设备文件 (比如:U盘)
② c:字符设备文件(比如:键盘、鼠标、串口)
③ d:目录文件、文件夹
④ l:链接文件 (相当于windows系统下的快捷方式)
⑤ s:套接字文件(网络通讯)
⑥ p:管道文件 (进程间通信)
⑦ -:普通文件,或者更准确的说,不属于其它几种类型的文件
ctrl + alt + t 打开一个新的终端
ctrl + shift + n 在已经打开终端的基础上,新打开一个同路径的终端
ctrl + shift + t 在已经打开终端内,新起一个同路径窗口
ctrl + l 清屏
输入命令 clear 清屏
输入命令 exit 退出当前命令行终端
鼠标点击Linux虚拟机,鼠标就在Linux中。ctrl + alt,鼠标就回到了windows
whoami命令:查看当前登录的系统的用户名
hostname命令:显示当前系统的主机名
pwd命令用于显示用户在文件系统中的当前位置,命令执行结果显示为绝对路径名
ls -a查看所有类型文件
ls -l查看文件详细信息,ls -l 【文件名】查看某个文件详细信息
文件权限包括:r读,w写,x执行,-无权限
先后顺序分别为:属主,同组用户,其他用户
cd / 返回根目录
cd ~ 返回用户主目录
cd . 原地不动
cd .. 返回上级目录
cd - 返回到上一次的工作目录
cd 回到家目录
cd 【绝对路径】
cd 【相对路径】
用法:touch 【文件名】
新建的文件大小为0,如果新建的文件已存在,则内容不变,只更新文件标签的时间
用法:mkdir 【选项】【目录名】
mkdir 【目录名】【目录名】。。。 同时创建多个目录
mkdir -p 【目录名】需要时创建上层目录,若这些目录存在也不报错,可用于嵌套创建目录
用法:rmdir 【文件名】删除空目录,若目录不为空可以采用rmdir -p 【文件名】进行递归删除
用法:rm 【选项】【文件名】(可同时删除多个)
rm -f强制模式,不提示直接删除
rm -i交互模式,删除前提醒
rm -r默认rm不删除目录,添加-r可删除目录及旗下所有文件和子目录
ps:如果权限不够,可以在命令前添加sudo,获得以此超级用户的权限
作用:复制一个源文件到目标文件(夹)
用法:cp 【选项】 源文件 目标文件(夹)
复制到文件夹时文件名不变,复制到文件时本质是备份文件,所以需要改名,如果命名的文件存在同名文件,则会覆盖其内容。
cp -i交互模式,复制时会提示
cp -r复制文件夹时需要加-r
cp 源文件 源文件 ... 目标文件夹 ,一次复制多个
cp *.后缀 文件夹 ,批量复制同一文件类型的文件到文件夹
作用:剪切一个源文件(夹)到目标文件(夹)(源文件与目标文件(夹)需在一个路径)
用法:mv 源文件(夹) 目标文件(夹)
可以在剪切的过程中进行重命名,如:mv first.c newfirst.c,在同一路径重命名;mv first.c dir1/newfirst.c,剪切到其他文件夹并重新命名
生成一个Windows系统与Linux系统共享的文件夹
常见的数制分为:二进制,八进制,十进制,十六进制
数码为表示数的符号:
二进制:0,1
八进制:0,1,2,3,4,5,6,7
十进制:0,1,2,3,4,5,6,7,8,9
十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
基为数码的个数:
二进制:2
八进制:8
十进制:10
十六进制:16
位权:
每个数码所表示的数值等于该数码乘以一个与数码所在位置相关的 常数(这个常数叫位权)
123 = 1X100 + 2X10 + 3X1 = 1X10² + 2X10 + 3X1
一个数码处在不同位置上所代表的值不同, 比如数字3在个位数位 置上表示3,十位数位置上表示30,在百位数上表示30
位权的大小是以基数为底、数码所在位置的序号为 指数的整数次幂
0x开头代表十六进制
0开头代表8进制
其他进制转换为十进制用上述位权的方法即可
十进制转其他进制
方法:连续除以基,从低到高记录余数,直到商为0
83/8=10..3
10/8=1...2
1/8=0...1
转换成八进制123
二进制转八进制
000-0
001-1
010-2
011-3
100-4
101-5
110-6
111-7
每三位为一组,不够的位数补0,一一对应上述即可
如:1101001->001 101 001->151
八进制转二进制反过来即可
如246->010 100 110->10100110
二进制转十六进制则用四位数去一一对应即可
0001-1,0010-2,0011-3,0100-4,0101-5,0110-6,0111-7,1000-8,
1001-9,1010-A,1011-B,1100-C
1101-D,1110-E,1111-F
%#x输出十六进制数
%u输出无符号十进制数
最小的数据单位为比特(Bit),存储二进制的0或1。
八个最小单位为一个单元,称作字节,一个字节(Byte)为八个Bit
内存以字节为单位进行处理,每个字节都有一个地址,CPU通过访问字节的地址来访问每个字节的空间
1B=8Bit,1Kb=1024B,1M=1024Kb,1G=1024M,1T=1024G
参考下述链接:
今天的课程是C语言基础,之前学过所以大致记一下即可
在32为机器中基本数据类型对应的大小:
字符型char,1字节
短整型short,2字节
整型int,4字节
长整型long,4字节
更长的整型long long,8字节
单精度浮点型float,4字节
双精度浮点型double,8字节
长精度long double,12字节
布尔型_Bool,1字节
void型,4字节
指针,4字节
大写字母转小写+32
字符数字转数字+48
bool不是基本类型
_ Bool 才是基本类型
#define bool _Bool
#define ture 1
#define flase 0
宏定义的bool
额外补充浮点型数据的知识见下面链接:
数据类型转换分为强制类型转换与自动类型转换,自动类型转换又包括赋值操作与二元运算
在对变量赋值时,如果等号右边的表达式值与 左边的变量类型不同,右边的类型将转换为左 边的类型,并且如果右边的数据类型长度比左边的长,就会丢失一部分数据,导致精度降低。
在不同数据类型之间进行二元运算时,也会发生隐士的自动类型转换 。如果参与运算的变量类型不同,会先转换成同一类型再进行计算。如果运算时发生类型转换,就会按数据长度增加的方向进行,从而保证精度不降低。并且所有浮点数参与的运算都以双精度进行,即使表达式中只有float,也会先转为double,再进行计算。
为了确保类型转换按照开发者期望的方式进行,可以明确设置类型转换的方式,这就是强制类型转换。强制类型转换是一种运算符,在需要转换的表达式前添加小括号括起来的新类型名称。
C语言基础以前学过,大致记一下
最基本的操作就是进行各种运算。C语言提供了丰富的运算符:
算术运算符:+、-、 * 、/、%、++、--
关系运算符:>、<、>= 、<=、==、!=、
逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)
赋值运算符:
赋值:=
算术复合赋值运算符:+=、-=、*=、/=、%=
位运算复合赋值运算符:<<=、>>=、&=、|=、^=
位运算符:&、|、 ^ 、~、>>、<<
三目运算符:? :
逗号运算符:,
大小运算符:sizeof
其它运算符: [ ] (下标引用操作符)、( ) (函数调用操作符)、(类型)(强制类型转换)&(取地址操作 符)、->(结构成员操作符)
if(a == 5)错写成if(a = 5),也许会出现编译器为报警的情况,将常量写在左边即可避免该错误无法检测出。
根据短路特性,先将a的值赋给c,为0后面的不执行,因此最后a=1,b=-1,c=0,d=4
文章浏览阅读373次,点赞4次,收藏4次。笔者已经把面试题和答案整理成了面试专题文档《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!链图片转存中…(img-4xkqGpj1-1712104936689)][外链图片转存中…(img-6VtfOlP7-1712104936689)][外链图片转存中…(img-WoiUrEg2-1712104936690)][外链图片转存中…(img-W72fxn2J-1712104936690)]
文章浏览阅读5.6k次。随着计算机技术的不断发展,数字图像处理技术的应用也愈发广阔。图像是人们接受、表达、传递信息的快捷方式,通过计算机程序的运用,将图像用数字的形式表现出来,可以更加全面的控制图像处理,在全球各个尖端领域都有发展的前景。【关键词】数字 图像处理 计算机技术1 数字图像处理技术的优点数字图像处理是指利用数字硬件与计算机,将图像信息转换为电子信号,进行相应的数学运算,用以提高图像的实用性。数字图像处理精确度..._谈谈你对数字图像处理课程的理解,及其数字图像处理用途和使用场合的认识
文章浏览阅读6.1k次。for(;iter!=mapStudent.end();){ if((iter->second)>=aa) { //满足删除条件,删除当前结点,并指向下面一个结点 mapStudent.erase(iter++); } else { //_vs2008 stl map查询equal_range(),并删除
文章浏览阅读1.4k次。DataFrame.rank(self: ~FrameOrSeries,axis=0,method: str = 'average',numeric_only: Union[bool,NoneType] = None,na_option: str = 'keep',ascending: bool = True,pct: bool = False)→ ~FrameOrSeries计算..._python dataframe rank
文章浏览阅读1.7k次。可以看到很多联发科的MT芯片摘自:https://net.zol.com.cn/531/5312999.html彻底扒光 通过智能路由器拆解看其本质2015-07-23 00:40:00[中关村在线 原创] 作者:陈赫|责编:白宁收藏文章 分享到 评论(24)关注智能路由器拆解的朋友们注意啦!我们已经将这五款产品彻底扒开,将主板的真容展现在了大家的眼前。网友们可以看见这些智能路由器主板的做工和用料,我们还为网友们展示了主要的电子元器件,供大家品评观赏。..._路由器拆解
文章浏览阅读2.1k次,点赞101次,收藏78次。【学习背景】今天主要是来了解Java线程Thread中的run()、start()两个方法的执行有哪些区别,会给出一个简单的测试代码样例,快速理解两者的区别,再从源码层面去追溯start()底层是如何最终调用Thread#run()方法的,个人觉得这样的学习不论对面试,还是实际编程来说都是比较有帮助的。进入正文~学习目录一、代码测试二、源码分析2.1 run()方法2.2 start()方法三、使用总结一、代码测试执行Thread的run()、start()方法的测试代码如下:public_jdk的源码hotspot跟jdk是分开的
文章浏览阅读617次。DMA映射一个DMA映射是要分配的DMA缓冲区与为该缓冲区生成的、设备可访问地址的组合。DMA映射建立了一个新的结构类型——dma_addr_t来表示总线地址。dma_addr_t类型的变量对驱动程序是不透明的, 唯一允许的操作是将它们传递给DMA支持例程以及设备本身。根据DMA缓冲区期望保留的时间长短,PCI代码有两种DMA映射: 1) 一致性映射; 2) 流式DMA映射(推荐)。..._dma_addr_t
文章浏览阅读1k次。XSS(跨站脚本攻击)是一种常见的网络安全漏洞,它允许攻击者在网站中植入恶意的脚本代码,当其他用户访问该网站时,这些脚本代码会在用户的浏览器中执行。这可能会导致严重的安全后果,比如窃取用户的敏感信息,欺骗用户,或者在用户的浏览器中执行恶意操作。XSS漏洞通常出现在网站中输入数据未经过滤或者不当过滤的情况下,攻击者可以通过向网站发送带有恶意脚本的数据,使得脚本在用户的浏览器中执行。在反射型XSS中,攻击者向网站发送一个带有恶意脚本的URL,当其他用户点击该URL时,恶意脚本就会在用户的浏览器中执行。_小明是公司的开发工程师,发现公司网站存在xss漏洞,通过修改javascript代码进
文章浏览阅读2k次。 软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。 一、软件体系结构的定义 虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的_采用结构化技术开发的软件是否具有体系结构?
文章浏览阅读1k次,点赞2次,收藏2次。文章目录问题描述:解决方案:问题描述:提示:idea springbbot运行无法编译成功,找不到jar包报错E:\ideaProject\demokkkk\src\main\java\com\example\demo\config\WebSocketConfig.javaError:(3, 46) java: 程序包org.springframework.context.annotation不存在Error:(4, 46) java: 程序包org.springframework.conte_error:(3, 46) java: 程序包org.springframework.context.annotation不存在
文章浏览阅读6.4k次,点赞6次,收藏36次。1、redux中间件中间件提供第三方插件的模式,自定义拦截 action -> reducer 的过程。变为 action -> middlewares -> reducer 。这种机制可以让我们改变数据流,实现如异步 action ,action 过滤,日志输出,异常报告等功能。常见的中间件:redux-logger:提供日志输出redux-thunk:处理异步操作..._recate面试
文章浏览阅读405次。由于要在开发板中加载libjpeg,不能使用gcc编译的库文件给以使用,需要自己配置使用另外的编译器编译该库文件。/usr/bin/ld:.libs/jaricom.o:RelocationsingenericELF(EM:40)/usr/bin/ld:.libs/jaricom.o:RelocationsingenericELF(EM:40)...._jpeg_utils.lo: relocations in generic elf (em: 8) error adding symbols: file