- 博客(30)
- 收藏
- 关注
原创 生产者消费者模型(能看懂文字就能明白系列)
理解什么是阻塞队列,阻塞队列与普通队列的区别理解什么是生产者消费者模型生产者消费者模型的主要作用举个生活中的例子,比如有A B C三个人,每个人分别负责做饺子皮,包饺子,但是做饺子皮的工具只有一个,A在做饺子皮的时候,别人只能看着A干活,这时候效率是不高的,我们可以让A专门只负责做饺子皮这一工作,B和C两人负责包饺子,这种干活模式就不会设计到“工具”的竞争,这时候A就会不停的生产饺子皮,B和C会不停的消耗饺子皮。而A生产出的饺子皮必须要有一个地方存放着,这个“地方”就叫做阻塞队列。
2024-09-07 14:39:33
991
27
原创 【我与Java的成长记】之String类详解
String 类是 Java 中用于表示字符串的核心类之一。它提供了丰富的方法来操作字符串,包括连接、拆分、替换、查找、截取等,使得字符串处理变得简单和高效。理解String为什么具有不可变性StringBuffer、StringBuilder和String的区别为什么StringBuilder比StringBuffer总是快了一毫秒模拟简单String类方法的实现为什么StringBuilder和StringBuffer比String快那么多呢?
2024-02-08 11:26:46
4281
59
原创 【我与Java的成长记】之封装,继承详解(一)(能看懂文字就能明白系列)
面向对象的三大基本特征,分别是封装,继承,多态。封装继承多态都是重点。
2024-01-09 12:54:00
3846
62
原创 【我与Java的成长记】之面向对象的初步认识
了解什么是面向对象,与面向过程的区别掌握类的定义方式以及对象的实例化掌握类中的成员变量和成员方法的使用大家都知道Java是一种面向对象的开发语言,那么什么是面向对象呢?所谓面向对象,其实是指软件工程中的一类编程风格,面向对象是众多编程风格中的一种。除了面向对象,还有面向过程,指令式编程和函数式编程等。面向过程(Procedure Oriented)是一种以过程为中心的编程思想,是一种自顶而下的编程模式。比如经典的C语言就属于这种面向过程的语言。
2023-12-26 13:30:06
5475
67
原创 C语言指针详解(2)(能看懂文字就能明白系列)
前面有篇文章简单的介绍了指针及其一些简单的运算和野指针,指针提供了一种以符号形式使用地址的方法。因为计算机的指令非常依赖地址,指针在某种程度上把程序员想要传达的指令以更接近机器的方式表达。因此,使用指针的程序更有效率。尤其是指针能有效地处理数组。数组表示法其实是在变相地使用指针。
2023-12-17 23:27:20
1536
57
原创 深入理解数据在计算机中如何存储之浮点数(能看懂文字就能明白系列)
在前面的文章中,我们了解了整型的存储方式,那浮点数是否和整型的存储方式是否一样,如果不一样,那浮点数到底是如何存储的呢理解浮点数在内存中是如何存储的,和整型存储的方式有什么区别。
2023-12-16 23:55:02
1264
39
原创 C语言中6个常见的动态内存的错误详解(能看懂文字就能明白系列)
前面的文章介绍了C语言的动态内存开辟,本文重点讲述常见的动态内存的错误各位要对上面常见的动态内存开辟有一个清晰的认知,并避免这些问题的出现,今天的笔记到此结束啦。
2023-12-13 23:46:11
2070
61
原创 C语言动态内存分配详解(能看懂文字就能明白系列)
C语言提供了一个动态内存开辟的函数(malloc):原型:该函数接受一个参数:所需的内存字节数。malloc()函数会找到合适的空闲内存块,这样的内存时匿名的。也就是说,malloc()分配内存,但是不会为其赋名,而是返回动态内存分配内存块的首字节地址。因此,我们可以把该地址赋给一个指针变量,并使用指针访问这块内存。int* pst;解释:以上代码为10个int类型的值请求空间,并用一个指针pst指向该位置。注意。
2023-12-10 23:49:24
1688
25
原创 深入理解数据在内存中是如何存储的,位移操作符如何使用(能看懂文字就能明白系列)文章超长,慢慢品尝
理解数据在计算机中以什么样的方式表现,又用什么方式存储的,各种进制之间如何转换,数据在内存中的表现形式,左移操作符和右移操作符如何移,四个位操作符的计算规则本文内容比较多,只要掌握了使用二进制数来表示信息的方法及其运算机制,也就自然能够了解程序的运行机制了。
2023-12-07 14:07:22
2133
84
原创 C语言枚举详解,typedef简介(能看懂文字就能明白系列)
什么是枚举,顾名思义就是列举,把可能的取值一一列举出例如,月份有12个月,可以一一列举,一星期有七日,可以一一列举,常见的颜色有红黄橙绿青蓝紫等等。认识枚举是什么及其优点,掌握枚举类型的使用,对typedef有一个初步的认识都是重点与#define不同,typedef创建的符号名只受限于类型,不能用于值。// 使用 #define 的方式100。
2023-12-05 10:07:09
2578
45
原创 C语言联合体详解(能看懂文字就能明白系列)文章很长,慢慢品尝
前面两篇文章已经将结构体介绍的差不多了,那么本文将会介绍C语言中的联合体,它与结构体有什么区别呢?请接着往下看像结构体一样,联合体是一种数据类型,也是由一个或者多个成员构成,这些成员可以是不同的类型,它能在内存空间中存储不同的类型数据(注意:不是同时存储)。编译器只为最大的成员分配足够大的内存空间。联合体的特点是所有成员共用一块内存空间。共用体(感觉这个词更贴切一点)给联合体其中一个成员赋值,其他成员的值也跟着变化。典型用法是,设计一种表以存储既无规律,事先不知道顺序的混合类型。
2023-12-04 14:39:30
1712
18
原创 C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝
结构体对齐规则主要有以下几点:结构体的第一个成员对齐和结构体变量起始位置偏移量为0地址处。其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数=编译器默认的一个对齐数与该成员变量大小的较小值 注意:VS默认的值为8 Linux中gcc没有默认对齐数,对齐数就是成员自身的大小结构体总大小为最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大的)的整数倍。
2023-12-03 15:16:26
1295
33
原创 C语言结构体详解(一)(能看懂文字就能明白系列)
引子:假如我们要设计一个程序来打印一份图书目录,打印每本书的各种信息:书名、作者、出版社、版权日期、页数和价格等。其中的一些项目(书名,作者)可以存储在字符数组中,其他项目需要一个int数组或者float数组来存储(价格,页数)。这样用七个不同的数组分别记录每一项的内容比较麻烦,且需要开辟许多空间,特别是要创建多份列表的时候。所以,我们需要一种既可以包含字符串又能包含数字的数据形式,而且还要保持各信息的独立,C语言中的结构体就能满足你的需求,接下来让我来介绍结构体是什么,有什么用,怎么用。
2023-12-02 18:23:55
1389
45
原创 《计算机中的程序》(灵魂六问)
程序是指令和数据的组合体,例如,C语言中,“printf("你好");”这个简单的程序中,printf是指令,“你好”是数据。一般所说的程序,譬如运动会,音乐会的程序等,指的是“做一件事情的先后顺序”,计算机程序也是一样的道理。计算机的构成元件中,根据程序的指令来进行数据运算,并控制整个计算机的设备称为cpu。内存中保存命令和数据的场所,通过地址来标记和指定。硬盘和磁盘等媒介上保存的程序被复制到内存后才能运行。6、计算机的构成元件中,负责程序的解释和运行是哪个?2、程序是由什么组成的?3、什么是机器语言?
2023-11-23 23:17:04
996
13
原创 手把手教你用C语言写出“走迷宫”小游戏(能看懂文字就会自己敲系列)
这次教大家编写一个简单的“走迷宫”小游戏,我们可以通过键盘上的‘W’、‘S’、‘A’、‘D’四个键来控制一个“小球”向上,下,左,右移动,目的就是让这个“小球”从起点走出迷宫。
2023-11-18 15:35:53
3369
35
原创 C语言指针详解(1)(能看懂字就能明白系列)文章超长,慢慢品尝
指针?什么是指针?从根本上,指针(pointer)是一个值为内存地址的变量(或者数据对象)。比如char类型变量的值是字符,int类型变量的值是整数,指针变量的值是地址。
2023-11-17 22:39:03
376
11
原创 C语言:简单的用二维数组打印杨氏三角
杨辉三角,又称帕斯卡三角,是一个数学上的规律图形。下面附一个草图,同学们可以自己画画,然后就可以写出来啦。
2023-11-15 23:35:19
1066
25
原创 除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢
其实用scanf()和getchar()来读取一个字符时,首先是将输入的字符接受到缓存区,缓冲区是一块为用户的输入预留的内存区域,缓冲区不会自动释放,直到用户按下回车键,缓冲区内的字符才会被释放,让我们的程序收到。我们希望在按下一个键之后,计算机就能马上做出反应,而不再需要按下多余的“enter”键。没错,使用scanf()和getchar()都可以读取一个字符,但是当用户输入一个字符之后,程序不会继续往下执行,直到用户按下“Enter”键,程序才会认为刚才的输入已经结束,然后继续执行余下的内容。
2023-11-11 23:20:11
563
14
原创 C语言函数递归详解(能看懂文字就能明白系列)
当函数是第一级递归调用时,会创建一个变量n,然后在该函数中药要调用Fib()两次,在第二级递归调用要分别创建两个变量n,这两次调用中的每次调用又会进行两次调用,因而在第三级递归中要创建4个名为n的变量。另外,递归不方便阅读和维护。函数不返回,函数对应的栈帧空间就一直占用,所以如果函数调用中存在递归调用的话,每一次递归函数调用都会开辟属于自己的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。结束递归是使用递归的难点,因为如果递归代码中没有终止递归的条件测试部分,一个调用自己的函数会无限递归。
2023-11-05 13:41:57
6159
9
原创 C语言函数详解(能看懂文字就能明白系列)文章很长,慢慢品尝
其实自定义函数和库函数是一样的,形式如下:ret_type fun_name(形式参数)这里ret_type 是函数返回类型,fun_name 是函数名,括号中放的是形式参数,{}括起来的是函数体1、函数名是自定义的,根据实际情况起名字2、参数的个数也是根据实际情况来确定,可以有0个参数,也可以有多个参数3、函数的返回值:函数可以返回值,也可以不返回,要根据实际的情况来写,函数不返回值的时候,返回类型写void。
2023-10-28 22:33:25
917
18
原创 C语言数组详解,终极版本(能看懂文字就能明白系列)文章很长,慢慢品尝
简单来说,数组就是一组相同元素的集合。数组中存放的是一个或者多个数据,但。
2023-10-26 13:46:48
1526
12
原创 猜数字游戏详解(C语言)
按照题目要求生成随机数,需要一个rand函数(需要包含头文件#include),rand函数会返回一个伪随机数,所谓的伪随机数就是⼀次运⾏中产⽣的5个数字是相对随机的,但是下⼀次运⾏程序⽣成的结果和上⼀次⼀模⼀样,例如以下运行结果。C语言中提供了一份srand函数,它用来初始化随机数的生成器,调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。
2023-10-24 10:50:26
390
5
原创 初学C语言中,else悬空的问题(各位大哥们,刚开始学C语言,人生第一次写文章,多多指教和支持)
在上述的的代码中,第一个if和else语句对齐,使我们误以为两者之间是匹配的,当第一个if语句不成立的时候(也就是a不等于一),就会去执行else语句。实际上第二个if和else才是匹配的,if......else是嵌套在第一个if语句中的,当第一个if语句不满足条件时,后面的if和else也就不会去执行,最后啥也不会打印。可能很多人初学的直接上来就看if的判断语句中,a为零,不等于一,那就执行else子句,打印“nihao”,结果去运行程序的时候,输出结果是啥也不输出。
2023-10-23 14:14:06
628
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人