自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 C语言_局部变量和全局变量_零碎知识【笔记】

在程序中某一变量经常被频繁使用,如在某函数中存在一个1000次的循环,每次循环都要引用局部变量,每次引用都要经过取指寻址过程,从而把数据从内存传输到cpu中,相当耗时,这时可以把改变量定义为寄存器变量,这样不需要再去内存中取数据,而是直接在cpu的寄存器里取即可,且寄存器存储数据速度远超于内存,因此更加高效。

2024-02-27 19:43:29 1354

原创 C语言_数组作为函数参数【笔记】

1.可以作为函数实际参数,不能作为形式参数2.实参传递到形参,单向传递3.用数组元素作为实参时,向形参(数组元素类型地形参)传递的是数组元素的值,而用数组名作为函数的实参时,向形参(数组名或者指针变量)传递的是数组首元素的地址4.数组作为函数形参时,其指定的数组大小是不起任何作用的,实际上在编译后数组形参会转化为指针变量来处理,用来接收地址,因此在形参是数组类型时,这个数组可以不用指定大小(可写可不写),直接在数组名后面跟个[ ] 空的方括号即可。

2024-02-27 17:33:13 345

原创 C语言【scanf函数细节问题 笔记】

2.对于"%d"格式输入数据时,连续输入的数据间要用空格来隔开,以使系统区分两个数值,上面之所以不隔开是因为输入的是字符,系统能区别两个字符且空格等也是有效字符,除非格式控制符中存在普通字符,这是就要对照格式输入相应的数据。3.在输入数值数据时,如果输入空格、回车、tab键或非法字符(不输入数值的字符)时,认为该数据输入结束。函数一般形式:scanf(格式控制字符串,地址序列)地址序列:把输入的数据依次放入到对于的地址的内存中去。格式控制字符串:用来控制以什么格式输入数据。

2024-02-26 17:27:04 501

原创 C语言【零碎基础知识】

基本数据类型(格式:类型 占内存大小 …)整形数据类型基本整形(int)2/4字节 一般在32或64位下是4字节短整型(short int) 2字节 注意 int 可以省略长整型(long int) 4字节 指定该类型的字面值时加l\L后缀 注意 int 可以省略,在vc++6.0中 long 与 int 都是占4字节双长整型(long long)8字节 注意 C99所增加的,很多编译器未实现字符类型(char)1字节布尔类型(bool) 1字节 注意 C99所

2024-02-25 22:35:27 287

原创 【C语言】C语言中的转义字符 【详解干货】

它是一种特殊的字符常量,就是以 \ 符号开头的符号序列,比如:'\t','\a' ...等,这里的 \ 符号可以把它理解为转义的意思,既把a转变为其它特殊意义,而这里的 '\a' 在C语言中的作用是发出一个警告的声音或者视觉信号,显然这里的 '\a' 与 'a' 的作用是完全不同的,a 被搭配 \ 符号后已经被转义,改变了意义。

2024-02-25 17:46:44 604

原创 C语言程序设计之基础篇-1初识C语言

C语言初步认识 学习笔记 期末复习。C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言...

2024-02-25 15:51:24 723

原创 冒泡排序【java】

内层的循环走一轮即选出其中最大的一个数放在最后,外层循环次数是两两比较的次数,9个数字需要比较8次,即j

2023-05-13 19:10:46 95

原创 模板方法模式【设计模式-行为型模式】

在面向对象程序设计过程中,我们常面对这样一种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤具体实现还未知,或者说某些步骤的实现与具体的环境有关,例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。

2023-04-23 09:25:41 96

原创 享元模式【设计模式-结构型模式】

运用共享技术有效的支持大量细粒度对象的复用,通过共享已存在的对象大幅度减少对象的创建数量,避免大量相似的开销,从而提升系统资源的利用率。比如共享单车,在没有它之前,想要骑自行车就需要购买,可能骑一两天就不想骑了,这样浪费了资源也浪费钱,而共享单车的出现,你只需要租赁即可,骑行好后归,别人也可以使用,达到共享

2023-04-21 10:03:35 103

原创 组合模式【设计模式-结构型模式】

组合模式又叫部分整体模式,它是一种对象组合成树状层次结构的模式,使用户对单个对象和组合对象具有一致的访问性,即访问单个对象和组合对象对于用户来说没有区别。

2023-04-20 08:50:34 58

原创 装饰者模式【设计模式-结构型模式】

指在不改变原有对象的结构下,动态的给对象增加一些额外的功能的模式。比如快餐店吃东西案例:在店里可以吃炒饭、粉面。如果吃炒饭可以加配料(火腿、鸡蛋、白菜、饮料等),如果吃粉面也是可以以上的配料,不同的配料不同的价格,最后计算总共花销多少钱。

2023-04-19 11:26:50 38

原创 外观模式【设计模式-结构型模式】

外观模式是迪米特法则思想实现的经典模式之一,又名门面模式,是一种为多个复杂的子系统提供统一的接口,从而让使用这些子系统客户更加容易访问,该模式对外有一个统一的接口,外部人员不用关心内部子系统具体实现细节与用法,这样大大降低了使用子系统的复杂程度,提高可维护性。

2023-04-18 18:39:36 32

原创 桥接模式【设计模式-结构型模式】

将抽象与实现分离,使它们可以独立变。它是用组合关系代替继承关系来实现,从而降低了抽象类和实现这两个可变维度的耦合度

2023-04-17 11:26:47 37

原创 代理模式【设计模式-结构型模式】

由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同分为静态代理和动态代理。静态代理是在编译时期就生成,而动态代理类则是在java运行时虚拟机内部自动生成。动态代理又有jdk代理和cglib代理两种

2023-04-16 21:09:50 34

原创 适配器模式【设计模式-结构型】

如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。

2023-04-15 15:04:15 31

原创 设计模式之建造者模式

所谓建造者模式就是将一个复杂的对象的构建与表示分离,使同样的构建过程可以创建不同的表示。

2023-04-14 10:52:01 33

原创 工厂模式【创建型模式之一】

;在java中,万物皆对象,这些对象的创建我们常用new来实现,方式比较简单,但是这种方式创建对象会使代码的耦合度比较高,如果要修改代码,那么我们需要重新再把所有的对象再new一遍,这是相当麻烦的事情,且不符合软件设计的开闭原则。如果使用工厂来代替我们自己创建对象,我们只需要跟工厂打交道就可以了,彻底和对象解耦,该模式有如下几种。

2023-04-13 16:11:49 37

原创 设计模式-单例模式【七种创建方式】

这种设计模式涉及到一个单一的类,该类主要是用来创建单一的对象,同时提供给客户唯一的访问该对象的方式/方法,想要使用这个对象,直接访问该方法即可。静态内部类单例模式中实例由内部类创建,由于jvm在加载外部类的过程中,是不会加载内部类的,只有内部类的属性/方法被调用时才会别加载,并初始化其静态属性。只需要在构造方法里写判非空抛出异常的代码,即当通过反射活动构造器来创建实例时,每次都判断实例是否已经存在,存在就抛出异常不让它继续创建。1、饿汉式-方式1(静态变量的方式)6、懒汉式-方式4(静态内部类方式)

2023-04-12 14:10:05 482

原创 实现按ESC键改变屏幕颜色【改写int 9中断例程-8086汇编】

修改“int 9”号中断例程的功能,在DOS中按下ESC键后改变屏幕的显示颜色,其他的键照原有功能处理要解决的问题(1)改变屏幕的显示颜色:一个屏幕是由4000个字节组成,偶数对应的字节存放字符的ascll码,奇数对应的字节存放的字符的属性(该字节左边一个字节内容的属性),所有总共要修改2000个属性字节(2)原“int 9”中断例程入口地址保存在"0:200"处,共两个字,低字单元存放偏移地址,高字单元存放段地址,而“新int 9”中断例程的入口地址则替换"旧int 9"的入口地址。

2023-03-29 12:53:42 106

原创 汇编语言第4章学习笔记【汇编语言第三版-王爽】

如果用户要执行一个程序,则输入该程序的可执行文件名称并按下回车,command程序会根据所给的文件名称找到对应的可执行文件,然后将其载入到内存中,并设置CS:IP指向可执行文件所占用的那段内存(本质上是指向程序的入口地址)。连接过程产生的文件:可执行文件(XXX.exe)、映像文件(XXX.MAP)、库文件(XXX.LIB),库文件包含了一些可以调用的子程序,如果程序中调用了某一个库文件中的子程序,就需要在链接的时候,将这个库文件和我么的目标文件链接在一起,生成可执行文件。:(基于DOSBox编译环境)

2023-03-23 12:31:55 85

原创 汇编语言第3章学习笔记【8086汇编汇编语言第三版-王爽】

在内存中,存储字长是指一个存储单元的位数,而实际上内存单元一般用来存储8位(一个字节一个内存单元),所以一个存储字就是多个连续的内存单元组合成。因此,在8086的CPU中用两个连续的字节(16位)等同于一个字,这个字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。要把一段内存当作栈来使用,就先要知道这段内存的段地址,这个段地址就是栈的段地址(栈段地址),用寄存器ss来存放。数据段就是把内存中一块连续不断的内存单元当作存储数据的地方,这就是定义了一个数据段,用ds寄存器存放数据段的段地址。

2023-03-22 16:25:22 173

原创 call指令和ret指令【笔记+详解】

call指令是一个流程转移指令,就是让程序执行的顺序发生短暂的改变,去执行别处地址上的指令,遇到ret指令后再回到原来的地方继续往下顺序执行,本质和jmp大同小异,区别是在jmp基础上增加了程序回到原来跳转处的功能......

2023-03-20 19:40:57 9987

原创 jmp指令【原理详解 8086汇编语言+笔记】

指令格式示例jmp 标号-段间转移(远转移):jmp far ptr 标号-段内短转移:jmp short 标号;8位的位移-段内近转移:jmp near ptr 标号;16位的位移jmp 寄存器-jmp bx;等价于段内近转移,也是16位的位移jmp 内存单元(用地址表示的)-jmp word ptr 内存单元地址;段内转移-jmp dword ptr 内存单元地址;段间转移。

2023-03-19 13:03:00 13021 1

原创 汇编语言学习笔记(理解)第2章【汇编语言第3版-王爽】

你可能会想数据放在内存就好了啊(理论上是可以,但其他的不说,cpu的工作速度远高于内存,如果数据放在内存,那cpu<-总线->主存之间相互传输数据就会存在严重速度差,严重影响cpu效率),而寄存器就是一个很好暂存数据/指令的器件。段定义后,并往相应的段放入适合的数据(数据段-主放数据,代码段-主放汇编指令,栈段-可以放数据或者其他),但是cpu并不会知道你定义的代码段(程序的入口)在哪里从哪开始/结束程序,它只认CS:IP指向的内存单元,因此把CS:IP指向我们定义的代码段的第一个单元的首地址是必要的。

2023-03-17 15:22:54 97

原创 段地址*16+偏移地址=物理地址的本质含义【详解】

在8986机器中,物理地址是通过”段地址⋅16+ 偏移地址“来确定的。cpu访问内存时,通过内部的部件给出基础地址(段地址⋅16)和偏移地址,然后合成一个20位的物理地址,再把地址传输到主存储器(内存),从而确定一个内存单元的地址,这是8086cpu实现寻址功能的方式。(不同的机器可能有不同的设计)

2023-03-17 10:49:13 846

原创 汇编语言学习笔记(理解)第1章【汇编语言第3版-王爽】

就是把地址偏移了,哈开个玩笑。偏移地址,实际上就是一个数,代表一段长度,前面已经知道内存中段的起始地址(物理地址),一个段中有多个内存单元,现在确定了段的起始地址了,那么怎么定位到里面某个单元呢,答案呼之欲出,就是使用段的起始地址+偏移地址了,举例:有一条长的大街,街到上依次有超市、理发店、移动厅…指令和数据是概念上区别的,在计算机中它们都是以二进制的形式存储,只有当cpu获取到一段数据后才知道这个信息是数据还是指令(取决于取地址的方式),就像围棋的棋子,在棋盘里的时候没有区别,但对弈的时候意义就不同了。

2023-03-14 21:03:56 70

原创 数字逻辑电路第一章

数字逻辑欧阳星明第四版第一章、数字系统、逻辑电路类型、数制及其转化二进制、原码、反码、补码、BCD码、格雷码、奇偶校验码

2023-03-11 11:24:18 188

原创 数据结构-线性链表(C语言实现)

链表是逻辑上相邻的元素在物理存储上不一定相邻,因而在作插入和删除元素时不需要移动大量元素,但同时也因为物理存储不相邻,所以失去了随机存取的优点。先理解几个概念:结点、头指针、头结点、首元结点...

2022-12-07 21:39:28 284

原创 数据结构-线性表顺序表实现(c语言)

数据结构----顺序表C语言实现假设每个数据元素占a个存储单元,计算机在内存中开辟的内存首地址为L0=0,并以它作为第一个数据元素的地址,则第i个元素的地址为满足:Li=L(i-1)+a关系式子

2022-11-21 09:29:20 338

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除