自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程—CAS

这就好⽐, 判定这个⼿机是否是翻新机, 那么就需要收集每个⼿机的数据, 第⼀次挂在电商⽹站上的⼿机记为版本1, 以后每次这个⼿机出现在电商⽹站上, 就把版本号进⾏递增. 这样如果买家不在意这是翻新机, 就买. 如果买家在意, 就可以直接略过.轮到线程2 执⾏了, 发现当前存款为 100, 和之前读到的 100 相同, 但是当前版本号为 3, 之前读到的版本号为 1, 版本⼩于当前版本, 认为操作失败.存款 100. 线程1 获取到 存款值为 100, 版本号为 1, 期望更新为 50;

2024-10-27 13:43:40 900

原创 多线程—常见锁策略及synchronized原理

悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别⼈会修改,所以每次在拿数据的时候都会上锁,这样别⼈想拿这个数据就会阻塞直到它拿到锁。乐观锁:假设数据⼀般情况下不会产⽣并发冲突,所以在数据进⾏提交更新的时候,才会正式对数据是否产⽣并发冲突进⾏检测,如果发现并发冲突了,则让返回⽤⼾错误的信息,让⽤⼾决定如何去做。举个栗⼦: 同学 A 和 同学 B 想请教⽼师⼀个问题.同学 A 认为 "⽼师是⽐较忙的, 我来问问题, ⽼师不⼀定有空解答". 因此同学 A 会先给⽼师发消息: "⽼师你忙嘛?

2024-10-27 13:43:24 877

原创 JavaEE-多线程单例模式

单例模式是校招中最常考的之⼀设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀些固定的套路. 按照套路来⾛局势就不会吃亏.软件开发中也有很多常⻅的 "问题场景". 针对这些问题场景, ⼤佬们总结出了⼀些固定的套路. 按照这个套路来实现代码, 也不会吃亏.单例模式能保证某个类在程序中只存在唯一一份实例,而不会创建出多个实例。这一点在很多场景上都需要,比如JDBC中的DataSource实例就只需要一个。

2024-10-21 15:14:50 878

原创 JavaEE-线程安全问题

wait和sleep都是控制程序执行流的工具,但它们在功能、用途和实现机制上有明显的区别。在实际编程中,根据具体需求选择使用sleep或wait是很重要的。

2024-10-18 00:00:50 759

原创 JavaEE-Thread类常见方法及线程的状态

需要给标志位上加 volatile 关键字(这个关键字的功能后⾯介绍)

2024-10-12 23:55:51 925

原创 JavaEE-进程与线程

每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运 ⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可 以说是计算机科学中最重要和最成功的概念之⼀。进程是操作系统对⼀个正在运⾏的程序的⼀种抽象,换⾔之,可以把进程看做程序的⼀次运⾏过程;同时,在操作系统内部,进程⼜是操作系统进⾏资源分配的基本单位。

2024-10-12 21:22:40 1138

原创 MySQL-事务

MySQL服务可以同时被多个客⼾端访问,每个客⼾端执⾏的DML语句以事务为基本单位,那么不同的客⼾端在对同⼀张表中的同⼀条数据进⾏修改的时候就可能出现相互影响的情况,为了保证不同的事务之间在执⾏的过程中不受影响,那么事务之间就需要要相互隔离,这种特性就是隔离性。

2024-10-03 15:43:19 1187

原创 MySQL-索引

MySQL的索引是一种数据结构,它可以帮助数据库高效地查询,更新数据表中的数据。索引通过一定的规则排列数据表中的记录,使得对表的查询可以通过对索引的搜索来加快速度。MySQL索引类似于书籍的目录,通过指向数据行的位置,可以快速定位和访问表中的数据,比如汉语字典的目录(索引)页,我们可以按照笔画,偏旁部首,拼音等排序目录(索引)快速查找到需要的字。显⽽易⻅,使⽤索引的⽬的只有⼀个,就是提升数据检索的效率,在应⽤程序的运⾏过程中,查询操作的频率远远⾼于增删改的频率。时间复杂度是O(1),查询速度非常快,但是My

2024-10-03 14:47:06 1331

原创 MySQL-联合查询

在数据设计时由于范式的要求,数据被拆分到多个表中,那么要查询⼀个条数据的完整信息,就要从多个表中获取数据,如下图所⽰:要获取学⽣的基本信息和班级信息就要从学⽣表和班级表中获取,这时就需要使⽤联合查询,这⾥的联合指的是多个表的组合。

2024-09-29 17:50:02 2401

原创 MySQL-数据库设计

•数据库表的每⼀列都是不可分割的原⼦数据项,⽽不能是集合,数组,对象等⾮原⼦数据。•在关系型数据库的设计中,满⾜第⼀范式是对关系模式的基本要求。不满⾜第⼀范式的数据库就不能被称为关系数据库在满⾜第⼀范式的基础上,不存在⾮关键字段对任意候选键的部分函数依赖。存在于表中定义了复合主键的情况下。候选键:可以唯⼀标识⼀⾏数据的列或列的组合,可以从候选键中选⼀个或多个当做表的主键在满⾜第⼆范式的基础上,不存在⾮关键字段,对任⼀候选键的传递依赖1.3.2示例。

2024-09-29 17:49:39 1123

原创 MySQL-数据库约束

指定非空约束的列不能存储NULL值。

2024-09-28 22:17:41 1234

原创 MuSQL-增删改查操作(2)

使⽤GROUP BY 对结果进⾏分组处理之后,对分组的结果进⾏过滤时,不能使⽤ WHERE ⼦句,⽽要 使⽤ HAVING ⼦句。• aggregate_function:聚合函数,⽐如COUNT(), SUM(), AVG(), MAX(), MIN()准备测试表及数据职员表emp,列分别为:id(编号),name(姓名),role(⻆⾊),salary(薪⽔)去重的记录写⼊到新表中,以后查询都从新表中查,这样真实的数据不丢失,同时⼜能保证查询效。向⽇期值添加时间值(间隔),同义词 DATE_ADD()

2024-09-28 16:19:24 724

原创 MySQL-增删改查操作(1)

在select后⾯的查询列表中指定希望查询的列,可以是⼀个也可以是多个,中间⽤逗号隔开。查询时不加限制条件会返回表中所有结果,如果表中的数据量过⼤,会把服务器的资源消耗殆尽。查询中没有ORDER BY ⼦句,返回的顺序是未定义的,永远不要依赖这个顺序。AND的优先级⾼于OR,在同时使⽤时,建议使⽤⼩括号()包裹优先执⾏的部分。NULL 进⾏排序时,视为⽐任何值都⼩,升序出现在最上⾯,降序出现在最下⾯。查询同学各⻔成绩,依次按数学降序,英语升序,语⽂升序的⽅式显⽰。可以使⽤列的别名进⾏排序。

2024-09-27 21:44:14 1289 1

原创 Java—认识异常

Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构.例如, 我们实现一个用户登陆功能.if(!System.out.println("用户名错误!");return;if(!System.out.println("密码错误!");return;System.out.println("登陆成功!");

2024-05-31 18:38:28 1095

原创 认识String类

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法,其它需要用到了大家可参阅StringBuilder在线文档方法功能在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量获取index位置的字符获取字符串的长度。

2024-05-31 18:37:57 1016

原创 图书管理系统

我们采取面向对象的编程思想,将整个图书管理系统抽象出多个对象,然后通过各个对象之间的交互来完成我们的整体设计需求我们整体的设计框架如下图:对于不同的板块,我们分成3个包,一个关于书籍,一个关于用户,一个关于操作对应我们上述结构图我们如下设计: 我们应该提供书籍的相关信息: 为了体现面向对象的封装特性,我们将这些字段信息设为private,然后在通过set和get方法来实现对其进行访问书架(BookList)书架主要是用来存放书籍的,因此我们只需要提供以下俩个信息就可以:为了体现面向对象的封装性,我

2024-05-25 11:57:41 815

原创 Java继承和多态

Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑。比如:狗和猫,它们都是一个动物。通过观察上述代码会发现,猫和狗的类中存在大量重复,如下所示:那能否将这些共性抽取呢?

2024-05-19 17:17:22 687

原创 超详细Java类与对象

面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知),但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语言。在java中定义类时需要用到class关键字,具体语法如下// 创建类field;// 字段(属性) 或者 成员变量method;// 行为 或者 成员方法。

2024-05-16 18:36:11 978

原创 数据结构—带头双向循环链表

有和。一个是,指向其前一个节点;一个是,指向其后一个节点。

2024-04-18 12:06:21 747 1

原创 数据结构—单链表实现通讯录

通过以上3节内容,让我们来实现一下用单链表的方式来实现通讯录以下是我的代码仅供大家参考!

2024-04-17 09:10:08 715 1

原创 数据结构—单链表

介绍一下单链表的英文名——single linked list,我们简写成SL(区别于顺序表的SeqList或者SQL)。注意:next指针的类型是SListNode*,千万不要写成SLTDataType*,因为next指针是结构体指针,是用来指向下一个结点的}SLTNode;

2024-04-16 17:06:00 1104

原创 数据结构—顺序表实现通讯录

1. 能够保存用户信息:姓名,性别,年龄,电话,地址等2. 添加联系人信息3. 删除指定联系人4. 查找指定联系人5. 修改联系人信息6.显示联系人信息。

2024-04-15 13:25:35 1385 1

原创 数据结构——顺序表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。

2024-04-14 15:22:55 1089 1

原创 理解文件操作

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。函数名功能适⽤于fgetc字符输⼊函数所有输⼊流fputc字符输出函数所有输出流fgets⽂本⾏输⼊函数所有输⼊流fputs⽂本⾏输出函数所有输出流fscanf格式化输⼊函数所有输⼊流fprintf格式化输出函数所有输出流fread⼆进制输⼊文件输入流fwrite⼆进制输出文件输出流。

2024-03-22 23:36:13 796 3

原创 动态内存管理

C/C++程序内存分配的⼏个区域:1. 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。《函数栈帧的创建和销毁》2. 堆区(heap):⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。分配⽅式类似于链表。3. 数据段(静态区):(static)存放全局变量、静态数据。

2024-03-21 12:06:01 2050 3

原创 ⾃定义类型:联合和枚举

像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。输出结果:4为什么是4呢?

2024-03-20 22:08:15 946 1

原创 ⾃定义类型:结构体

位段的声明和结构是类似的,有两个不同:1. 位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以选择其他类型。2. 位段的成员名后边有⼀个冒号和⼀个数字。int _b:5;int _c:10;int _d:30;A就是⼀个位段类型。那位段A所占内存的⼤⼩是多少?

2024-03-18 20:08:29 568

原创 C语言的内存函数以及数据在内存中的存储

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。上述概念需要记住,⽅便分辨⼤⼩端。

2024-03-17 14:40:05 1098 1

原创 字符函数和字符串函数

在我们编程的时候,我们经常要处理一些字符和字符串,为了方便操作字符和字符串,c语言标准库中提供了一系列库函数,接下来我们就学习下这些函数。

2024-03-12 15:23:54 1466 5

原创 理解递归函数

递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。

2024-03-11 14:57:18 902

原创 深入了解指针(5)

在学习操作符的时候,我们学习了 sizeof , sizeof 计算变量所占内存内存空间⼤⼩的,单位是字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。

2024-03-08 20:43:55 464 1

原创 深入了解指针(4)

回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。

2024-03-07 18:56:17 712

原创 深入了解指针(3)

在指针的类型中我们知道有⼀种指针类型为字符指针 char*;代码 const char* pstr = "hello bit.";特别容易让同学以为是把字符串 hello bit 放到字符指针 pstr ⾥了,但是本质是把字符串 hello bit. ⾸字符的地址放到了pstr中。上⾯代码的意思是把⼀个常量字符串的⾸字符 h 的地址存放到指针变量 pstr 中。这样写会报错,因为hello world!是字符常量,不能改变,所以不能通过*p来改变。输出为:hello world!

2024-03-05 18:52:23 1126

原创 深入了解指针(2)

这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。 我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。这时候有同学会有疑问?数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。其实数组名就是数组⾸元素(第⼀个元素)的地址是对的,但是有两个例外:• sizeof(数组名),sizeof中单独

2024-03-04 12:00:00 1446 1

原创 深入了解指针(1)

在讲内存和地址之前,我们想有个⽣活中的案例:假设有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩,如果想找到你,就得挨个房⼦去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号,如:⼀楼:101,102,103...⼆楼:201,202,203.......有了房间号,如果你的朋友得到房间号,就可以快速的找房间,找到你。⽣活中,每个房间有了房间号,就能提⾼效率,能快速的找到房间。如果把上⾯的例⼦对照到计算机中,⼜是怎么样呢?

2024-03-03 12:37:46 1002

原创 C语言详细操作符讲解

/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化。

2024-03-02 17:40:46 1217

原创 用C语言从零开始设计属于自己的扫雷游戏

用c语言

2024-02-01 17:29:55 970 1

原创 C语言设计属于自己的扫雷游戏完整代码

以下是我设计的扫雷游戏的代码。明天将更新我的设计思路。第二部分 game.c。第一部分game.h。第三部分test.c。

2024-02-01 01:32:21 301 1

原创 C语言超详细分支循环语句介绍

C语言分支语句和循环语句详细介绍

2024-01-26 21:28:10 1212 1

空空如也

空空如也

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

TA关注的人

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