自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 问答 (1)
  • 收藏
  • 关注

原创 游戏开发-红点管理(使用二叉树)

红点的信息是明显包含一个树形结构,这里使用二叉树,其中左节点表示孩子节点,右节点表示兄弟节点。红点信息以数组形式表示,例如一组信息 [活动, 限时活动, 具体活动]。

2023-03-19 03:43:39 338 2

原创 Unity AB包的打包与加载

打包首先在unity编辑器中设置好, 在Editor代码中打包using System.IO;using UnityEditor;using UnityEngine;public class AssetBundleEditor : Editor { [MenuItem ("Assetbundle/MakeCubeForWin64")] public static void MakeCubeForWin64 () { // 制作AB包的位置 string path = Path.C

2021-10-03 16:03:00 2407 4

原创 数据结构-线段树

线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。线段树可以在O(log N)的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。线段树维护的信息,需要满足可加性,即能以可以接受的速度合并信息和修改信息,包括在使用懒惰标记时,标记也要满足可加性(例如取模就不满足可加性,对4取模然后对3取模,两个操作就不能合并在一起做)。定义结构体struct node { int l; // 线段树的左端点 int r; // 线段树

2021-07-08 20:57:00 196

原创 8086汇编 实验15安装新的int9中断例程

安装一个新的 int 9中断例程,功能: 在 DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”,其他的键照常处理。提示: .按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码=通码+80h。代码:;安装一个新的int9中断例程, 功能: 在DOS下, 按下'A'键后, 除非不再松开,;如果松开, 就显示满屏幕的'A', 其他的键照常处理assume cs:codestack segment db 128 dup (0)stack endsco

2021-04-17 21:12:35 247

原创 8086汇编 实验14访问CMOS RAM

编程,以“年/月/日时:分:秒”的格式,显示当前的日期、时间。注意: CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误。代码:assume cs:codecode segmentstart: mov ax,0b800h mov es,ax mov si,160*12+20*2 ;显示年 mov al,9 out 70h,al in al,71h mov bl,al call get_ascii

2021-04-17 21:08:33 246

原创 8086汇编 实验13编写、应用中断程序

实验1(1)编写并安装int 7ch中断例程,功能为显示一个用О结束的字符串,中断例程安装在0:200处。参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si 指向字符串首地址。以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret 指令执行前后CS、IP和栈中的状态。assume cs:codedata segment db "welcome to masm!",0data endscode segmentstart: mov dh,10 mo

2021-04-12 23:50:04 1012

原创 8086汇编 课程设计1

**任务:**将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来在这个程序中,要用到我们前面学到的几乎所有的知识,注意选择适当的寻址方式和相关子程序的设计和应用。另外,要注意,因为程序要显示的数据有些已经大于65535,应该编写一个新的数据到字符串转化的子程序,完成dword型数据到字符串的转化,说明如下。在这个子程序中要注意除法溢出的问题,可以用在实验10中设计的子程序divdw来解决。实验:1.对于这个实验,还是可以先用C语言描述一遍2.根据所学知识,用汇编语言

2021-04-08 21:36:37 956

原创 8086汇编 实验10编写子程序

1.显示字符串问题显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色。子程序描述名称:show_str功能:功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。参数:(dh)=行号(取值范围0 ~ 24),(dl)=列号(取值范围0 ~ 79),(cl)颜色,ds:si指向字符串首地址返回:无应用举例:在屏幕的8行3列,用绿色显示data段中的字符串提示(1)子程序的入口参数

2021-04-06 20:11:08 652

原创 8086汇编 实验9根据材料编程

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 ‘welcome tomasm!’。80x25彩色字符模式显示缓冲区(以下简称为显示缓冲区)的结构:内存地址空间中,B8000H~BFFFFH共 32KB的空间,为80×25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。在80x25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256种属性(背景色、前景色、闪烁、高亮等组合信息)。这样,一个字符在显示缓冲区中就要占两个字节,分别存放字符

2021-04-06 20:09:40 160

原创 8086汇编 转移指令

可以修改IP,或同时修改CS和IP的指令统称为转移指令。1.操作符offset操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。比如:assume cs:codesgcodesg segment start: mov ax,offset start ;相当于mov ax,0 s: mov ax,offset s ;相当于mov ax,3ax,3codesg endsend start以下程序,将s处的一条指令复制到s0处:assu

2021-03-31 21:09:05 1049

原创 8086汇编 实验7:寻址方式在结构化数据访问中的应用

原题下面程序中,已经定义好了这些数据:data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' dd 16,22,382,1356,2390,8000,16000,24486,50056,97479,140417,1

2021-03-30 18:23:49 1054

原创 C/C++处理字符串中的字符

头文件#include <cctype>代码示例:#include <cctype>#include <iostream>using namespace std;int main() { string str = "012abcxyzABCXYZ \n\t~`!@#$%^&*()_+{}:\"|<>?[]\\;',./'"; cout << "\tisalnum" << "\tis

2021-03-30 11:00:31 178

原创 C语言链表操作

1.2 编写程序,在第1题(第1题:编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁。程序不可存在内存泄漏。)基础上合并2个单链表,合并前后单链表保持递增或相等次序,显示合并前后单链表。注意不可存在内存泄漏。。输入格式:若干整数。输出格式:每个单链表输出占一行,元素间用分隔符分隔;共3行输入样例:100 2 3 -2 -8 -6 -9 -10 50 2 -1输出样例:2-&gt

2021-03-29 20:59:19 3113 2

原创 命令行执行C文件示例

先写一个C语言代码文件mstore.c内容如下:#include <stdio.h>long mult2(long, long);void multstore(long x, long y, long *dest) { long t = mult2(x, y); *dest = t;}在命令行使用“-S”选项,就能看到C语言编译器产生的汇编代码:PS E:\VS Code\VS Code C\chapter 3> gcc -Og -S mstore.c

2021-03-19 21:19:11 2327

原创 PTA 小谢的工程任务 (30 分)(最小生成树)

小谢的工程任务 (30 分)小谢是一位刚刚搬到二维星球上居住的工程师,现在他要为该星球上的一个村庄铺设道路,规定该村庄有n个地点( 编号从1至n )需要铺设道路,只需要保证n个地点中任意两个地点都能连通( 即连通图 ),但是由于身处二维星球,并且每个地点被抽象为一个二维坐标系上的点(a,b),并且对于任意两个地点连通的代价不再与欧几里得距离有关了。假设地点A(x,y) , 地点B(p,q),现在规定为这两个地点之间铺设道路的代价为 min(∣x−p∣,∣y−q∣) ,这对于初来乍到的小谢来说有点困难,现在

2021-03-18 21:43:01 338

原创 C#学习笔记 XML

使用TextWriter 来生成 XML文件,该程序用的是SAX方式: #region 使用SAX方式处理XML static void XmlTextWriteTest() { const string filename = "sampledate.xml"; XmlTextWriter writer; writer = new XmlTextWriter(filename, null); // 为使文件易读,使用缩进 writer.Formatting = Formattin

2021-03-14 19:51:13 137

原创 C#学习笔记 正则表达式

正则表达式是用来表示字符串模式的表达式,如[0 - 9]{4}表示4个数字,可以认为它是复杂的通配符,它主要用来从文中查找到某一类字符串。1.正则表达式的基本元素正则表达式实际上是用来匹配某种格式的字符串的模式。一个模式主要有三种要素构成:位置、字符和量词(字符个数)。例如: ^[0-9]{4}其中,^表示要求字符串出现在行首,[0-9]表示要匹配的是数字,{4}表示数字字符是4个,例如它可以匹配出现在行首的1998、2022等。详细内容见下表:一些实例:a..c——能够匹配“abbc”

2021-03-11 22:02:08 578

原创 C#学习笔记 文件、目录、注册表

文件(file)是存储在磁盘上的一组信息的集合;目录(directory),即文件夹,是组织多个文件的方式;注册表(registry)则是操作系统中存储各种配置信息的其中地(数据库)。文件与目录管理C#支持文件管理和目录管理,它们由System.IO命名空间中的相关类来实现。这些类不是Stream或者TextReader的子类,因为它们不负责内容的输入/输出,而是用来专门管理磁盘文件和目录的。文件和目录由System.IO命名空间中的6个类来表示。① FileSystemInfo——FileInf

2021-03-09 11:39:21 308 2

原创 C#学习笔记 文本输入/输出

使用Reader和Writer的文本I/OTextWriter类和TextReader类是基于文本的抽象类,它们的重要子类包括:StreamWriter、StreamReader,处理流的操作;StringWriter、StringReader,处理字符串的操作。注意:对于C程序员来说,StreamWriter类似于printf()或者fprintf(),而StringWriter类似于sprintf()。1.TextWriterTextWriter是一个抽象基类,它包含下面一些子类:① 用来为浏

2021-03-07 21:30:36 1647 1

原创 C#学习笔记 二进制输入输出

1.BinaryReader类和BinaryWriter类BinaryReader和BinaryWriter可以用来进行二进制输入/输出,也就是用来读写基本的数据类型(如int,double等),而不是原始的字节类型。BinaryReader和BinaryWriter不是Stream类的子类,但它是对Stream流进行包装,在构造BinaryReader和BinaryWriter对象时,需要一个Stream对象作为其参数。如: new BinaryReader(myStream);实际上,这两种类主

2021-03-05 22:16:34 2298

原创 C#学习笔记 流

为进行数据的输入输出操作

2021-03-04 20:24:56 145 1

原创 C#学习笔记 Linq

Linq的基本用法Linq,语言集成查询(language intergrated query)是一组用于C#的扩展。使用Linq可以对集合等内存数据进行查询,还可以查询数据库(datebase)、XML(标准通用标记语言)数据,分别称为Linq to object,Linq to datebase和Linq to XML。这里谈的是Linq to object。Linq的写法类似于数据库SQL语句的查询语法。 from 变量名 in 集合 where 条件 select 结果变量其中,变量名是一

2021-03-03 23:58:51 1024 2

原创 C#学习笔记 自己写排序

Swap交换函数 private static void Swap(ref T t1, ref T t2) { T tmp = t1; t1 = t2; t2 = tmp; }选择排序 #region 选择排序算法 public static void SelectSort(T[] arr) { for (int i = 0; i < arr.Length - 1; i++) { int minIndex = i; // 最终最小值的位置 for (int

2021-03-03 21:01:31 120 1

原创 C#学习笔记 排序与查找

IComparable接口和IComparer接口为了能够对数据项进行排序,就要确定两个数据项在列表中的相对位置,也就是要确定两个对象的“大小”关系。一般来说有如下两种方式来定义大小关系:第一种方式是针对对象本身。为了使对象自己能够执行比较操作,该对象必须实现IComparable接口,即至少具有一个CompareTo()成员。System.IComparable接口中有一个方法,如下: int CompareTo(object obj);它根据当前对象与要比较的对象的“大小”来返回一个正数、0

2021-03-03 14:27:46 318

原创 C#学习笔记 unsafe及指针

为了便于与C/C++等语言交互,在C#中保留了指针的概念。但是对指针的使用做了严格的限定,所以不要认为可以像C语言那样自由的使用指针。指针必须在“非安全环境(unsafe)”中使用。1.unsafeunsafe关键字表示不安全的上下文。任何设计指针的操作都要求不安全的上下文。unsafe用作结构、类、方法、属性、委托等的修饰符。例如: static unsafe void FastCopy(byte[] src, byte[] dst, int count){ // ... ... }若要编

2021-02-27 14:58:09 1085

原创 C#学习笔记 编译预处理

编译预处理(pre - processing),是指编译之前的处理,它曾经是C/C++语言中相当重要的语法成分。C#语言中保留了部分预处理功能。但去掉了容易出错或者繁琐的成分,特别是去掉了#include和定义可替换的宏定义(#define)等。编译预处理是通过一些预处理指令来完成的。每个预处理指令单独占一行,都以 #好开始。预处理指令可以分成标识声明、条件处理、信息报告、行号标记四类。1.标识符声明在预处理过程中,可以对标识符进行定义和取消定义。#define 定义一个标识符;#undef "取消

2021-02-27 14:22:40 252

原创 C#学习笔记 Attribute(特性)

简单地说,特性(Attribute)是与类、结构、方法等元素相关的额外信息,是对元信息的扩展。通过Attribute可以使程序、甚至语言本身的功能得到增强。Attribute是C#中一种特有的语法成分,它可以作用于各种语言要素,如命名空间、类、方法、字段、属性、索引器,等等,都可以附加上一些特定的声明信息。Attribute与元数据一起存储于程序集中,编译器或者其他程序可以读取并利用这些信息。...

2021-02-27 13:46:37 730

原创 C#学习笔记 运算符重载

运算符(operator)也称操作符,是指+,-,*等,C#中允许对用户定义的类型重新定义各种运算符的意义,这就是运算符重载(operator overloading)。比如,两个日期时间(DateTime)相减,表示两个日期的时间间隔(TimeSpan);而日期时间加上一个时间间隔则得到另一个日期时间: DateTime now = DateTime.Now; DateTime start = new DateTime(2000, 1, 1); TimeSpan c = now - start;

2021-02-26 23:04:59 101

原创 C#学习笔记 factory模式

嵌套类型的一个应用——factory模式(工厂模式)。所谓factory模式,是指一个能产生某种“产品”的“工厂”,其中产生产品只能由工厂产生。例如一个银行账号(Account)只能有银行(Bank)来产生。在C#中,账号可以由Bank的内部类(Account)来实现,在这里内部类是private的,不能由外部进行访问,只能通过一个接口(ICount)来访问。例NestedBankAccount.cs通过嵌套类来实现Factory模式的银行账号:using System;using System.Co

2021-02-26 21:18:01 702

原创 C#学习笔记 命名空间

命名空间1.命名空间的概念命名空间(namespace)是对各种类型的名字进行层次规划的方式,命名空间实际上提供了一种命名机制,同时也是程序进行逻辑组织的方式。命名空间是一些类型的松散的集合,一般不要求处于同一命名空间的类有明确的相互关系,如包含、继承等。为了方便编程和管理,通常把需要在一起工作的类型放在一个命名空间里。如System命名空间下有各种类和接口,包括System.Console,System.String,System.Random,System.Math,System.GC,Syste

2021-02-26 17:18:41 633

原创 C#学习笔记 异常处理

System.Exception类C#中定义了很多异常类,C#的异常类都是System.Exception的子类。它派生了两个子类:SystemException和ApplicationException。其中前者是系统定义的各种异常,后者则提供应用程序使用。Exception的构造方法常用的有两个:public Exception();public Exception(string s);第二个构造方法可以接受字符串参数传入的信息,该信息通常是对该例外所对应的错误的描述。Exception类有

2021-02-26 01:32:53 641

原创 C#学习笔记 事件

事件(event)是在委托的基础上实现的一种“通知机制”。比如,当一个按钮被点击,就是一个事件,事件的发生可以通知相关的程序进行处理。事件相当于其他语言中的回调函数,或事件监听类。对于Button类来说,Click是其中一个特殊的属性,它就代表一个事件,它的类型是EventHandler委托,是的,关于事件有几个关键点:在一个类中定义一个事件,事件的类型是一个委托类型在外面用 += 来注册这个事件,即将一个外部方法关联上了在事件源所在的类中,在一定条件下(即事件发生了)来调用这个委托,实际上是调用

2021-02-25 23:59:22 112

原创 C#学习笔记 Action及Func

系统中定义好了一些常用的委托,这就是System.Action及System.Func,前者并没有返回值的函数,后者表示有返回值的函数。为了方便适应不同参数个数,系统定义了一系列Action及Func,如下图所示:其中,每个委托的参数类型在使用时是可以自定义的,即使用了泛型,如表示两个整数为参数、返回一个double类型,则可以表示为: Func<int, int, double> f = (x, y) => x * 3.0 + y * 2.0;又比如只带一个字符串参数、返回类型

2021-02-25 17:07:19 232

原创 C#学习笔记 Lambda表达式

在委托实例化时,总要使用一个函数,所以我们去单独定义一个函数,但是在更多的时候,我们不想这样做,而是直接定义函数、直接使用,这时可以使用匿名函数或Lambda表达式,它们分别是C#2.0 和C#3.0 中引入的。Lambda表达式Lambda表达式(或者叫λ表达式),实际上是直接写函数头和函数体,而不写函数名,在函数头和函数体之前用符号 => 来表示。并且将这个函数直接赋给一个委托或作为另一个函数的参数。例如: MyDelegate d = (double x) => { return x

2021-02-25 17:06:04 239

原创 C#学习笔记 委托

委托(delegate)与事件(event)是C#中提出的独特的概念,简单地说,委托是“函数指针”在C#中的更好实现,而事件是“回调函数”在C#中的更好实现。委托类型与赋值可以认为委托类似于函数指针,它是一种引用类型,它引用的就是函数。委托所引用的函数是有一定类型的,一个委托类型表示函数的签名(函数的参数类型及顺序),所以可以认为是类型安全的,即一种委托类型不能引用与之不兼容的任意类型;而一个委托实例可以表示一个具体的函数,及某个类的实例方法或静态方法,所以可以将委托理解为函数的包装或引用。1.委托

2021-02-24 23:54:10 156

原创 C#学习笔记 泛型

泛型泛型(generic)是C#中一个重要概念,简单地说,泛型是编写一个类可以针对不同的类型。即通过参数化类型来实现同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。C#是在2.0 版本中开始引入泛型的。泛型的基本使用考虑这样一个问题:如果要定义一个含有多个元素的列表集合List,有加入。删除、查找等功能,但是为了表示元素的类型可以是各种类型(如int,string,Point,Person等),如果不适用泛型,则有两种方法,一是针对每一种

2021-02-24 21:55:55 344

原创 C#学习笔记 结构、枚举

结构结构(struct)是一种对数据及功能进行封装的数据结构,与类(class)相比最大不同是:结构是值类型,而类是引用类型。一般结构用于比类(class)更简单的对象。结构的声明与使用与类一样,结构可以包含各种成员,如:构造函数、常数、字段、方法、属性、索引器、事件、运算符和嵌套的值类型。同时,结构也可以实现接口。结构的类型声明格式如下:struct 结构名 [:接口名]{ ...}struct 结构类型适合表示如点、矩阵和颜色这样的简单数据结构。例如:struct Point {

2021-02-24 09:55:01 125

原创 C#学习笔记 接口

接口C#中的接口(interface)在语法上有些类似与抽象类(abstract class),它定义了若干个抽象方法、属性、索引器、事件,形成一个抽象成员的集合,每个成员通常反映事物某些方面的功能。接口在本质上是对某方面功能或特征的约定。程序中的接口的用处主要体现在下面几个方面:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以指明多个类需要实现的方法。通过接口可以了解对象的交互界面,而不需要了解对象所对应的类。定义接口定义接口使用interface关键字

2021-02-23 02:34:54 277 1

原创 C#学习笔记 单例模型

单例(singleton)也叫单子模型,是指在某个类中只有一个实例,调用者可以获取该实例,并且这个实例是唯一的。实现这种模型的方法,首先将该类中的构造方法设定为private,使得外部调用者不能直接用new来进行创建实例;然后在该类中,用static的字段来存放该类的唯一实例,并将该实例一public方法向外进行公开。这里利用了private,public,static等修饰符来实现这一模型。代码如下using System;namespace ConsoleApp12单例 { class

2021-02-21 02:01:42 109

原创 C#学习笔记 修饰符

访问控制符C#中的访问控制符有5个,其中基本的有4个:public,protected,private,internal,还有1个复合的修饰符protected internal(也可以写成internal protected)。类的成员的可访问性有两个方面的含义:一种是基于逻辑的,例如protected表示其子类也可以访问;一种是基于物理的,即可访问性跟是否在同一程序集(assembly)中有关,如internal表明在同一程序集类可访问。程序集,也称“程序装配”,是指编译时将多个类(编译后的M

2021-02-21 01:43:29 238

空空如也

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

TA关注的人

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