自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C#——LINQ方法

LINQ(语言集成查询)是.NET框架中的一组扩展方法,为集合和数据源提供类SQL的查询功能。它通过Enumerable类的扩展方法实现,支持延迟执行,包括筛选(Where)、投影(Select)、排序(OrderBy)、聚合(Count/Sum)等操作。LINQ能以方法语法(配合Lambda)或类SQL的查询语法使用,并支持结果转换(ToList)。典型应用包括:从学生列表中筛选年龄20的学生、计算平均成绩、排序等,显著简化数据处理代码。

2025-12-19 17:32:58 590 1

原创 C/C++——结构体(Struct)

C++结构体与类的区别主要体现在两个方面:1)默认访问权限不同(结构体成员默认public,类成员默认private);2)默认继承权限不同(结构体继承默认public,类继承默认private)。除此之外,结构体完全具备类的面向对象特性,包括成员函数、构造函数、继承和多态等功能。C++结构体既保留了C语言结构体的数据封装特性,又扩展了面向对象编程能力,实现了与类的高度一致性。

2025-12-19 11:59:27 643

原创 C/C++与C#——指针的作用

摘要:指针是编程中直接操作内存的核心工具,主要用途包括:1)直接访问和修改内存数据;2)实现动态内存分配;3)传递大型数据时减少拷贝开销;4)构建链表、树等复杂数据结构;5)与硬件/系统底层交互。在C/C++中指针通过地址操作内存,而在C#中需使用unsafe关键字启用指针功能,常用于性能优化、调用非托管代码和系统API交互。指针虽强大但需谨慎使用,避免内存安全问题。

2025-12-18 18:16:12 1100

原创 C#——接口(Interface)

接口在编程中的核心应用场景包括:1.定义契约规范行为,通过约定优于配置实现多态性;2.突破单继承限制,实现多继承式的行为复用;3.实现代码解耦,提升可测试性和可维护性。接口作为抽象契约,允许不同类实现相同行为但具体实现各异,支持依赖注入和分层架构设计,是面向对象编程中实现松耦合的关键技术。典型应用包括业务逻辑分层、单元测试mock等场景。

2025-12-17 11:44:38 1492 1

原创 C#——Lazy<T>懒加载机制

本文介绍了使用Lazy<T>;实现线程安全的懒汉式单例模式。通过DataCacheManager类示例,展示了如何利用Lazy<T>;的延迟初始化特性,在首次访问时创建唯一实例。该模式包含私有构造函数、静态只读Lazy实例和公开访问属性。文章还详细说明了Lazy<T>;的工作原理:首次访问Value属性时执行初始化委托创建实例,后续访问直接返回缓存实例。此外,示例中包含了异步加载数据和异常处理的实现,确保数据加载失败时能清理缓存并提供详细错误信息。这种实现方式既保证了线程安全,

2025-12-17 11:14:50 209

原创 C#——textBox控件(1)

本文介绍了两种在C#中处理文本框输入的方法:1)使用int.Parse进行整数转换并捕获格式异常;2)使用double.TryParse将文本框内容安全转换为double类型并赋值给静态变量。第二种方法展示了如何在另一个类中访问窗体中的文本框值,通过静态变量initialWeight传递数据,并在CalculateWeight方法中调用该变量进行计算。两种方法都涉及对文本框输入的Trim处理,确保数据转换的准确性。

2025-12-16 16:08:31 418

原创 C#——单例模式

本文介绍了C#中线程安全的单例模式实现。通过私有构造函数防止外部实例化,使用静态变量_instance存储唯一实例。关键点在于GetInstance()方法采用双重检查锁定机制:外层无锁检查提升性能,内层加锁确保线程安全。lock语句保证多线程环境下只会创建一个实例,readonly锁对象防止篡改。通过Task.Run()演示了多线程调用场景,验证了单例的唯一性。这种实现既保证了线程安全,又避免了不必要的锁开销。

2025-12-16 16:01:55 624

原创 IDEA实用快捷键

本文总结了IntelliJ IDEA的常用快捷键,涵盖导航搜索(如Ctrl+N查找类)、代码编辑(如Alt+Enter快速修复)、重构生成(如Shift+F6重命名)、调试运行(如Shift+F10运行)和版本控制(如Ctrl+K提交)等核心功能。这些快捷键能显著提升开发效率,包括查找、代码生成、重构、调试和版本管理等多个环节,适合Java开发者快速掌握IDE操作技巧。

2025-10-30 08:50:57 479 2

原创 Linux服务器崩溃急救指南

摘要:本文介绍Linux服务器故障的应急处理流程。首先通过系统监控工具(top/htop)和日志分析快速定位问题。针对不同故障类型给出具体解决方案:内存/CPU过载时终止异常进程,磁盘不足时清理文件;服务崩溃时重启并检查依赖项;内核/硬件故障需日志分析和专业工具检测。强调数据备份的重要性及回滚策略,最后建议建立监控预警和定期维护机制,包括资源阈值告警、日志轮转和系统更新等预防措施,以提升系统稳定性。(150字)

2025-10-30 08:45:01 205

原创 C盘爆满急救指南

摘要:本文介绍了7种清理C盘空间的方法:1)运行磁盘清理工具删除临时文件;2)将桌面等文件夹移至其他盘;3)手动删除Temp文件夹内容;4)卸载闲置软件;5)用TreeSizeFree分析空间占用;6)迁移用户文件夹位置;7)安装软件时选择非C盘路径。这些操作可有效释放系统盘空间,建议结合使用以获得最佳效果。

2025-10-29 18:15:08 191

原创 操作系统—内存管理(4)

本文介绍了存储管理的三种主要方式:连续分配、非连续分配(包括分页和分段)以及段页式管理。分页管理通过固定大小的页划分提高内存利用率,对用户透明,采用一维地址空间;分段管理则基于程序逻辑划分不同长度的段,支持共享与保护,使用二维地址空间。段页式结合两者的优点,既有逻辑分段又有物理分页,通过段表和页表实现地址转换。此外,文章还详细阐述了分段管理的地址变换过程、共享保护机制,并比较了分页与分段在地址空间、共享实现等方面的差异。

2025-10-29 18:03:32 891

原创 操作系统—内存管理(3)

本文介绍了内存管理中非连续分配方式的两种类型:分页存储管理和分段存储管理。重点阐述了分页存储管理的核心概念,包括页面与页框的对应关系、地址结构(32位地址中12-31位为页号,0-11位为页内偏移量)以及页表的作用(实现页号到物理块号的映射)。详细说明了基本地址变换过程(通过计算页号、检查越界、查询页表项并计算物理地址)和具有快表(TLB)的优化机制。最后提及两级页表结构需要3次访存操作。分段存储管理将在后续章节讨论。

2025-10-29 09:36:33 542

原创 C#窗体—子窗体获取父窗体TextBox框的值

本文介绍了C#窗体间传值的两种实现方法:1.通过构造函数传值 - 在子窗体Form4中定义带参数的构造函数接收Form3传递的值;2.通过公共属性传值 - 在Form4中定义公共属性Form3Value,并在Form3中设置该属性值。两种方法均实现了点击Form3按钮时将文本框内容传递到Form4文本框的功能,包含代码初始化、值传递和窗体显示等关键步骤。文章还提示了多值传递的扩展思路和注意事项。

2025-10-29 08:35:36 891

原创 操作系统—内存管理(2)

本文介绍了内存管理的两种主要方式:连续分配和非连续分配。连续分配包括单一连续分配(单用户独占内存)、固定分区分配(预先划分固定分区)和动态分区分配(按需动态划分),其中动态分区分配有首次适应、邻近适应、最佳适应和最坏适应等算法。非连续分配则通过分页和分段实现内存离散分配,避免了连续分配的外部碎片问题,但需要额外的索引空间。文章还分析了各种分配方式的优缺点,特别比较了不同动态分区分配算法的性能特点。

2025-10-28 10:53:22 782

原创 操作系统—内存管理(1)

程序执行需要经过编译、链接和装入三个步骤,装入方式包括绝对装入、可重定位装入和动态运行时装入。逻辑地址是程序使用的虚拟地址,需转换为物理地址才能访问内存。进程内存映像包含代码段、数据段、PCB、堆和栈等部分。内存管理从单一连续分配发展到页式和分段存储管理,以提高内存利用率和满足不同需求。地址重定位和动态链接技术支持程序的高效运行。

2025-10-22 20:20:28 1152 2

原创 PL/SQL远程连接Oracle数据库

本文介绍了远程连接Oracle数据库的完整流程。首先需要安装PL/SQL Developer和instantclient客户端,并配置NLS_LANG和TNS_ADMIN环境变量。然后在PL/SQL中设置Oracle主目录和OCI库路径。接着配置tnsnames.ora文件,添加目标数据库的IP、端口和服务名信息。最后在PL/SQL登录界面输入连接信息即可。文章还提示了常见中文乱码的解决方法,并建议遇到具体问题时查阅针对性解决方案。

2025-09-08 11:28:49 1329 1

原创 操作系统——死锁

本文系统介绍了死锁的概念、产生原因、必要条件及处理策略。死锁是指多个进程因竞争资源陷入互相等待的僵局,其产生需要满足互斥、不可剥夺、请求保持和循环等待四个必要条件。处理死锁的策略包括预防(破坏必要条件)、避免(银行家算法)和检测解除(资源剥夺、撤销进程、进程回退)。文章通过实例和算法分析,阐述了如何判断系统安全状态以及避免死锁的方法,为解决操作系统中的死锁问题提供了系统性的解决方案。

2025-09-06 09:08:13 832 1

原创 操作系统——同步与互斥

文章系统介绍了进程同步与互斥机制。首先定义了临界资源及其访问过程的四个区域(进入区、临界区、退出区、剩余区),区分了同步(直接制约)和互斥(间接制约)概念。重点阐述了实现临界区互斥的方法:软件层面包括单标志法、双标志法及Peterson算法;硬件层面涉及中断屏蔽、TestAndSet和Swap指令。最后介绍了互斥锁的实现原理,通过acquire()和release()函数实现原子操作。文章遵循空闲让进、忙则等待、有限等待三大准则,为多进程共享资源提供了系统的解决方案。(149字)

2025-09-05 15:24:51 1225 2

原创 操作系统—进程与线程(2)

CPU调度是多道程序系统中实现进程并发执行的关键机制,通过从就绪队列中选择进程分配CPU资源。调度方式分为非抢占式和抢占式,后者能提高系统响应效率但需遵循优先权、短进程优先等原则。调度目标包括CPU利用率、吞吐量、周转时间、等待时间和响应时间等指标。常见调度算法有:FCFS(简单但效率低)、SJF(短作业优先)、优先级调度、时间片轮转(适用于分时系统)、多级队列(支持多种调度策略)和多级反馈队列(结合FCFS和时间片轮转优势)。不同算法各具特点,需根据系统类型和需求选择合适的调度策略。

2025-07-22 09:06:28 1195 1

原创 操作系统——进程与线程(1)

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。进程控制块(PCB)、程序段、数据段。线程是进程中的一个实体,是被系续独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。执行态、就绪态、阻塞态。

2025-03-08 17:03:01 1007 1

原创 操作系统——计算机系统

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。

2025-03-05 17:17:15 889 1

原创 我的创作纪念日

现在我的知识储备,远不及各个领域的大佬,但,即便是很少人遇到的问题或是所需的知识,我认为这会对别人有用,那么我也会发出来分享。我的更新频率不固定,有心血来潮,也有刚遇到的解决方案,哎嘿。没啥感慨的,也没啥要多写的,先这样吧。

2025-03-01 21:43:14 360

原创 数据结构—《二叉树的定义与特性》

二叉树的定义、性质、存储结构。特殊的二叉树,满二叉树、完全二叉树、二叉排序树、平衡二叉树、正则二叉树;二叉树的存储结构,顺序存储、链式存储。二叉树是一种特殊的树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是n(n>0)个结点的有限集合:(1)n=0,为空二叉树。(2)或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别是一棵二叉树。

2025-01-14 14:56:28 1593 4

原创 数据结构—树的定义与性质

树是n(n≥0)个结点的有限集。n=0时,称为空树。(1)树有且只有一个特定的结点,称为根节点。(2)当n>1时,其余结点可分为n(n>0)个互不相交的有限集T1,T2……Tm,其中每个集合本身又是一棵树,称为根的子树。

2024-12-31 20:55:11 1623 3

原创 Dev c++工具栏如何调大

最近下载dev c++遇到个小问题,工具栏非常小。这种大小生怕点到编译运行,产生的原因应该是下载渠道非官方,导致的系统不适配。如果觉得代码区字体太大,可以Ctrl+鼠标滚轮调整大小。最近下载dev c++遇到个小问题,工具栏非常小。如果觉得侧边栏太宽,可以点击工具 > 编辑器选项。1.找到软件运行程序,右键,选择属性。点击显示,调整栏距。

2024-12-27 12:24:50 2377 1

原创 数据结构——栈

栈(Stack)是只允许在一端进行插入或删除操作的线性表。栈顶(Top)。线性表进行插入删除的那一端。栈底(Bottom)。不允许进行插入和删除的另一端。空栈。不含任何元素的空表。

2024-10-24 11:35:00 1102

原创 数据结构—单链表的基本操作

数据结构—单链表的基本操作,单链表的初始化,求表长,按序号查找结点,按值查找表结点,插入结点操作,删除结点操作,头插法建立单链表,尾插法建立单链表

2024-09-09 21:22:51 670 2

原创 什么是数据结构三要素?

逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。存储结构是指数据结构在计算机中的表示,也称物理结构。顺序表根据起始地址加上元素的序号,可以很方便地访问任意一个元素,这就是随机存取的概念。施加在数据上的运算包括运算的定义和实现。

2024-09-06 14:51:34 561 2

原创 鸿蒙开发—黑马云音乐之播放页面(下)

this.currentMusic = AvPlayerManager.songs[AvPlayerManager.index]// 注册emiiter接收上一首,下一首歌曲播放的时候新传入的歌曲对象emitter.on({ eventId: 0 }, (res) => { this.currentMusic = JSON.parse(res.data['item'])@State h:number = 0 //控制底部歌曲列表容器的高度。

2024-09-03 09:15:49 1828 4

原创 鸿蒙开发—黑马云音乐之播放页面(上)

router.pushUrl({ url:'pages/playPage'})// 控制一个元素旋转 .rotate({angle:this.angle}) // 元素加载完毕之后触发一个回调函数 .onAppear.onAppear(()Text(this.formatTime(this.totalTime)) //歌曲总时间。Text(this.totalTime.toString()) //歌曲总时间。// time表示当前歌曲已经播放的时长,单位是毫秒。

2024-09-02 09:56:54 2256 3

原创 鸿蒙开发—黑马云音乐之music页面播放音乐(下)

在index页面的播放栏的上一首按钮图片中增加属性,调用AvPlayerManager.pre(),实现上一首播放。同样,给播放栏的下一首按钮图片中增加属性,调用AvPlayerManager.next(),实现下一首播放。提一嘴,Index页面使用if (this.isplaying == false)判断播放状态,实现点击播放按钮后,出现暂停按钮,点击暂停按钮后出现播放按钮。

2024-08-31 09:54:19 1730 2

原创 鸿蒙开发—黑马云音乐之music页面播放音乐(上)

实例对象 :AvPlayerManager.avPlayer,实例:AvPlayerManager.avPlayer.prepare()、AvPlayerManager.avPlayer.play();console.log('mylog,播放歌曲:', music.name, 'url=', music.url)AvPlayerManager.avPlayer.url = music.url //给播放对象设置播放源。用户点击就将此歌曲对象传入avplayerManager.playMusic()。

2024-08-30 15:16:53 1962 3

原创 鸿蒙开发—黑马云音乐之Music页面

ForEach(this.songs, (item: songItemType, index: number) => { if (index < 3),index从0开始,这里表示遍历数组中前三个歌曲,之后的 else{} 表示遍历除前三之外的歌曲,数组中有几个前三之外的歌曲,就遍历几个,从第四首遍历到最后一首。歌曲列表是两种格式,一种是排名前三的歌曲(带有歌曲图片),另一种是前三之外的歌曲(不带有歌曲图片),首先设置好这两种静态布局后才进入下一步。这样才能连上网络,才能在模拟器中正常播放歌曲。

2024-07-29 21:00:19 2837 6

原创 鸿蒙开发—黑马云音乐之首页导航栏

当点击某一TabContent时,将index赋值currentIndex,image设置三元判断表达式,判断背景颜色是否该变色。设置参数currentIndex类型为number,初始为0,设置属性.onChange((index:number)=>{与List内只能使用ListItem类似,Tabs内只能使用TabContent。自定义tabBuilder,使用Tabs组件实现,属性自行调整。之后才能在TabContent内调用页面。

2024-07-28 14:26:02 885 2

原创 鸿蒙开发—黑马云音乐之广告页

接下来是项目实战,项目选用传智的黑马云音乐。给主体增加一个stack容器,先放一张广告图片,建议选择本地图片,再放一个button,之后微调样式与位置。

2024-07-25 17:45:17 1280 2

原创 鸿蒙开发—对象数组与ForEach方法

ForEach作用:可以循环遍历一个数组中的每一个元素,通过回调函数将这个元素传递给编码者使用。//ForEach可以循环遍历一个数组中的每一个元素,通过回调函数将这个元素传递给编码者使用。list组件内容只能放listitem组件,listitem里面就可以放任意组件。@Entry 表示此文件是一个页面,将来这个页面可以跳转。@Component 表示此文件是一个组件。对象:用来描述一个事物的相关属性以及行为。数组:用来存储数据的一个容器。

2024-07-19 09:20:44 1780 3

原创 鸿蒙开发—容器组件

可以让List里面的内容在超出终端屏幕的时候能够滚动(Column,Row不会滚动),list组件内部只能放ListItem()组件。alignContent:Alignment.TopEnd表示叠加元素对齐的初始位置。一个元素需要堆放到另外一个元素身上,就可以使用Stack组件,后面编写的元素堆放到前面编写的元素身上。左侧是文字,右侧是本地图片。可以给Text和Image增加属性,也可以给Row增加属性。能让Row内部的元素进行横向排列(默认从左到右)。能让让在cloumn的所有组件内容进行纵向排列。

2024-07-13 23:35:53 435 1

原创 鸿蒙开发—基础组件

该文章介绍鸿蒙开发中的部分基础组件,适用于鸿蒙开发的初学者。DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 (huawei.com)下载与安装软件-快速开始-DevEco Studio使用指南-工具 | 华为开发者联盟 (huawei.com)配置开发环境-快速开始-DevEco Studio使用指南-工具 | 华为开发者联盟 (huawei.com)一般来说,如果使用的是个人或家庭网络,是不需要配置代理信息的,只有部分企业网络受限的情况下,才需要配置代理信息。

2024-07-13 23:14:01 936 2

原创 单元测试—血压诊断代码设计

正常高值(120

2024-05-19 16:44:36 1660 3

原创 单元测试—BMI脚本设计

例如:一个人的身高为1.75米,体重为68千克,他的BMI=68/(1.75^2)=22.2(千克/米^2)当BMI指数为18.5~23.9时属正常。方案1:通过键盘输入身高,体重或者直接通过构造方法或者BMI类的成员方法初始化身高体重,然后调用方法计算BMI值,并人工判断校验。BMI中国计算标准:体质指数(BMI)=体重(kg)÷身高^2(m)过轻:低于18.5 正常:>=18.5且=24且=28且

2024-05-15 17:33:53 1450 3

JavaA实验01 Java编程基础(猜数字游戏、随机点名器)

实验1.1 随机点名器 实验描述 1、 任务描述 编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字。随机点名器具备3个功能,包括存储全班同学姓名、总览全班同学姓名和随机点取其中一人姓名。比如随机点名器首先分别向班级存入张飞、刘备和关羽这3位同学的名字,然后总览全班同学的姓名,打印出这3位同学的名字,最后在这3位同学中随机选择一位,并打印出他的名字,至此随机点名成功。 实验1.2 变量的强制转换类型 强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。例如,两种类型彼此不兼容,或者目标类型取值范围小于源类型,都需要进行强制类型转换。 4、 设计思路(实现原理) 1) 编写一个类Example02 2) 在Example02中的main()方法中定义一个int类型的变量i和byte类型的变量b,并将变量i的值赋给变量b 3) 使用println语句打印出变量b的值

2024-03-14

空空如也

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

TA关注的人

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