自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 请简述MyBatis中 #{} 和 ${} 之间的区别。

​ 首先和都可以用来读取调用Mapper接口时传递给方法的形参值,形参可以是基本类型、引用类型(对象),不管是读取基本类型还是对象中的属性,都可以用或直接获取到。

2023-05-10 23:45:02 1956

原创 JDK1.8中的HashMap源码分析

在讲解之前先思考一下为什么需要Hashmap?如果我们想在顺序表中查找某一个记录时,通常都是从表头开始,挨个地比较记录a[i]与key的值是 “==” 还是 “!=” ,直到有相等才算是查到了,这种挨个遍历(即线性查找)的最坏时间复杂度可想而知是O(N)。如果顺序表的元素是有序的情况下,我们可以利用a[i]与key的 “”来折半查找,直到相等时查找成功并返回i下标,此时的复杂度降到了O(logN)。这两种查找方式都是在 “比较”,当元素增多时比较的次数也随之增加,想一想这种比较是否真的有必要?

2023-03-29 09:42:43 349

原创 线程安全之volatile关键字

volatile 这个单词本意是易变的、易失的,那它和线程安全有什么关系呢?我们来看一段代码

2023-02-18 21:09:00 255

原创 join()、sleep()、wait()和notify()方法的区别

虽然多线程极大的提高了程序的执行效率,但是由于线程之间是抢占式执行的,有些时候我们需要确定线程的执行顺序来使线程互相协作共同完成任务。因为操作系统负责线程调度的工作所以我们很难进行干预,不过我们可以让线程进行阻塞(也就是主动放弃被调度)从而实现控制顺序的目的。

2023-02-18 19:59:43 216

原创 Java中Thread类的基本用法

并发编程是现在应用开发的必备技术,多核心的CPU为我们提供了硬件支撑,而如果想利用上这些硬件设备,我们需要在软件层面上充分应用多线程技术。Java标准库中提供的Thread类对操作系统中的线程进行了封装和更进一步抽象,通过学习使用Thread类API来进行并发编程。

2023-02-03 16:33:53 300

原创 操作系统中进程的概念和调度的基本过程

​ 操作系统应该是大家即熟悉又陌生的东西了,我们每天无时无刻都在使用着它们,例如手机上发送QQ和微信消息、逛淘宝、打电话;电脑上打游戏、刷哔哩哔哩、上网课等等,用的这些软件都不能脱离操作系统的支持和服务,都是在使用操作系统,例如电脑上的Windows、Linux、Mac,手机上的安卓、IOS、鸿蒙,这些系统为我们要使用的第三方软件提供运行环境。。但是通常我们对它的感知要小于对应用软件的。计算机硬件:例如CPU、内存、硬盘、输入设备、输出设备。

2023-01-27 22:18:42 189

原创 文件IO流API

InputStream是以字节为单位来读取数据,它是一个抽象类,提供了读数据的几种方法,通过构造其实现子类的对象来进行读文件操作。成员方法方法签名描述read()从流中读取一个字节并返回,如果读到了文件末尾则返回-1从流中最多读取buf.length长的数据到buf中,返回实际读取的字节数,若读到文件末尾则返回-1从流中最多读取len-offset长的数据到buf中,从offset位置开始,返回实际读取的字节数,若读到文件末尾则返回-1close()关闭字节输入流。

2023-01-20 22:49:18 347

原创 文件的概念与Java中的File类

在现实生活中,我们对于文件夹应该不陌生,例如办公桌上摆放的文件夹,学生档案柜中存放的文件夹等。文件夹当中存放的就是一份一份的文件(在计算机文件夹中,文件夹里可以嵌套文件夹)。

2023-01-20 22:44:38 436

原创 Java数据结构 - 队列与MyQueue

队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,队列中的元素遵循(First In First Out)原则。允许插入的一端称为队尾,允许删除的一端称为队头。

2022-12-23 17:56:08 449

原创 Java数据结构 - 栈与MyStack

栈属于线性表的一种特殊结构,栈中的元素被限制为只能从表的一端进出,这一端称之为,另一端称为,元素进出的顺序遵循(First In Last Out),或:将元素插入表中的操作叫做进栈/压栈/入栈,插入元素在栈顶。:将元素从表中删除的操作叫出栈/弹栈,删除元素在栈顶。

2022-12-23 17:49:47 427

原创 Java数据结构 - 链表与MyLinkedList

链表是一种线性的数据结构,由有限的结点组成。其特点是结点的物理存储结构不一定连续,但逻辑顺序是连续的,通过链表中的引用链接次序实现。

2022-12-23 11:42:18 254

原创 Java数据结构 - 数组与ArrayList

数组是在,每个单元存储相同数据类型的值。这些内存单元称之为数组的,通过数组的(或称索引)访问,下标从0开始。

2022-12-22 21:42:50 978

原创 LeetCode: 第98题 - 验证二叉搜索树

如果一个二叉树是有效的二叉搜索树,那么使用中序遍历则一定可以得到一个有序的序列。

2022-10-24 00:06:12 187

原创 Java数据结构 - 优先级队列(PriorityQueue)

JDK1.8中的PriorityQueue底层使用了堆的数据结构,那么我们先了解一下堆的概念。堆通常是一个可以被看做一棵二叉树的数组对象。堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一颗完全二叉树。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆是非线性数据结构,相当于一维数组,有两个直接后继。堆的定义如下:n个元素的序列{k1, k2, k3, …, kn}当且仅当满足下关系时,称之为堆。

2022-10-13 18:21:38 1338

原创 复习笔记第六章 - JAVA中的数组

数组的定义:一组相同类型元素的集合,在内存中是一块连续的空间(Java中的数组是存放在JVM堆区的),数组中的元素可以通过下标(索引)来访问,数组一旦创建,其长度不可修改。

2022-08-02 21:34:37 752

原创 C语言学习 - 指针进阶知识点总结(下)

指针进阶知识点总结

2022-07-21 16:20:07 383

原创 C语言学习 - 指针进阶知识点总结(上)

我们知道计算机内存被细分为以字节为单位的空间大小,每块字节空间都有一个唯一的内存编号(由硬件产生),如同酒店房间的门牌号一样。我们通过内存编号就可以快速的找到需要的那块空间。指针其实就是指针变量,用来存放其他空间的内存编号的,这个编号就是内存的地址,也形象的称之为指针——指向内存空间。口语中常说的指针(地址)就是指针变量。......

2022-07-19 15:54:30 128

原创 专升本考试顺利通过!正式回归编码之路。

自上次发文至今已有一个多月,暂离期间我都在努力准备湖北专升本考试,最终功夫不负有心人,我考上了心仪的公办院校。此后未来两年都将在里面学习,曾经立下的Flag我也会继续努力下去。

2022-07-19 15:48:22 147 1

原创 字符串左旋 (C语言实现)

题目要求:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB解题办法:构建双倍字符串解题思路:使用malloc开辟原字符串长度的两倍的空间double_string,将原字符串先拷贝再拼接存入double_string里,然后通过strncpy函数将左旋的结果放入原字符串中。代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include&l

2022-05-31 16:41:09 217

原创 深度剖析数据在内存中的存储(一)

1.1数据类型基本归类总结出来C语言的所有数据类型可分以下几大家族整型家族 char类型在内存中实际存储的是Ascll码值,也就是整数。为什么分为unsigned int 和 signed int?因为无符号类型存储大于或等于0的数字,用来表示身高、体重、长度这些信息。而有符号类型可以存储负数,像表示温度、盈亏等。浮点数家族浮点数可以存储有小数的数据float的精度低,存储范围较小,double的精度高,存储的数据范围更大构造类型指针类型指针...

2022-05-24 21:46:16 255

原创 C语言实现基于命令行终端的三子棋游戏

C语言实现基于命令行终端的三子棋游戏一、开始菜单二、棋盘设计三、开始游戏四、玩家下棋五、电脑下棋六、胜负判断一、开始菜单当程序开始运行,首先需要输出一个开始菜单让玩家选择是否进行游戏。我们在start()方法里面完成程序的主逻辑,输出菜单让玩家选择,根据选择进行操作。//开始菜单void menu(){ printf("-------------三子棋-------------\n"); printf("| 1.开始游戏 |\n")

2022-05-19 19:16:47 553

原创 关于我重拾C语言

本人是武汉某某职业学院的一名大三准应届毕业生,专业是软件技术,大学三年浑浑噩噩的度过了,现在临近毕业,深感焦虑。在学校里主修的技术是javaweb方向,因为个人经常翘课的原因,我所掌握的技术还不算入门级别。经过社会的一番洗礼,现在下定决心,从基础开始学习,同时目前备考专升本,希望到本科院校里再用一年半时间打磨基础,修炼技术。对编程的兴趣也是在慢慢燃起,每次独立找出一个bug都小有成就感。从目前的行业状况和社会需求分析,我选择的方向依旧是javaweb。世上无难事,只要肯攀登,只要你真心想学,没有什么是学

2022-05-06 18:50:07 1477

原创 扫雷游戏(命令行界面模式)使用C语言实现

游戏设计思想:在一个row * col的棋盘上进行游戏,从键盘获取(x,y)坐标选定需要排查的位置,如果该坐标上没有雷,则显示其坐标周围一圈的雷的个数,如果该坐标上有雷,则被炸死,游戏结束。当排除掉了所有非雷的坐标后则游戏胜利。(PS:如果第一次输入的坐标上就有雷,不被炸死,标记该坐标为雷。)这里我们将使用二维数组来存放棋盘。游戏内容:游戏界面如下首先游戏开始前,我们需要一个菜单让用户选择是否开始或退出游戏我们在main函数里面完成菜单的主逻辑,代码如下://菜单界面vo

2022-05-06 17:36:31 1243

空空如也

空空如也

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

TA关注的人

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