自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程安全问题产生的原因和解决方案

这段代码的意思是通过两个线程把count加到10000,可是运行结果总是小于10000的,这就是因为抢占式执行带来的线程安全问题。3.原子性:如果修改的操作是原子的,没有问题。如果修改的操作非原子的,出现问题的概率就非常高。编译器觉得你写的代码太Ljl了,就把你的代码自作主张的调整了,保持逻辑不变的情况下,进行调整,从而加快程序的执行效率。①把内存中的值读取到CPU的寄存器中。1.根本原因:线程的抢占式执行,随机调度。这三个操作是在CPU上执行的机器指令。解决原子性问题和解决抢占式问题一样。

2022-12-26 11:01:52 213

转载 java线程的几种状态和切换

线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。③其他阻塞:通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时,join()等待线程终止或者超时,或者I/O处理完毕时,线程重新转入就绪状态。2.2.运行状态(Running):线程获取CPU权限进行执行,需要注意的是,线程只能从就绪状态进入到运行状态。4.死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

2022-12-25 11:45:17 263

原创 Thread基本用法总结

方法一:继承Thread类,重写run方法方法二:实现Runnable类,重写run方法方法三:和方法一一样,不过用内部类实现方法四:和方法二一样,也是内部类实现方法五:lambda方法实现。

2022-12-24 11:54:43 156

转载 进程和线程的联系和区别

线程是指进程内的一个执行单元,也是进程内的可调度实体。④系统开销:在创建或撤销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销。③拥有资源:进程是拥有资源的一个独单位,线程不拥有系统资源,但可以访问隶属于进程的资源。①一个线程只能属于一个进程,而一个进程可以有多个进程,但至少有一个线程。②并发性:不仅进程之间可以并发执行,同一进程的多个线程之间也可以并发执行。②资源分配给进程,同一进程的所有线程共享进程的所有资源。③处理机分给线程,即真正在处理机上运行的是线程。

2022-12-21 14:11:23 143

原创 进程调度的基本过程

一个跑起来的程序就是一个“进程”,没有跑起来的叫“程序”。通过查看任务管理器可以看到跑起来的“进程”,快捷键“Ctrl + Alt + Del”。

2022-12-20 14:04:17 141

原创 初始java和对java数据类型的总结

JDK(JavaDevelopmentKit)java开发工具包,提供给java和程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jjstack等。JER(JavaRuntimeEnvironment)Java运行时环境,还包含了JVM、java基础类库。对于short,byte这种比4个字节小的类型,会先提升为4个字节的int类型,再运算。大的类型不能转小的类型,小的能转大的(隐式),但是可以强制类型转换(显示)。...

2022-07-26 20:37:47 152

原创 c语言的预处理

c语言的每生成可执行程序(后缀.exe的文件)时都要经过2个过程编译和链接。编译把c语言代码转换成汇编代码,(语法分析,词法分析,符号汇总,语法分析)预处理1.头文件的包含2.#define定义符号的替换3.注释的删除。汇编把汇编代码转换成二进制指令,形成符号表(编译时的符号汇总)__FILE__//进行编译的源文件。__DATE__//文件被编译的日期。__TIME__//文件被编译的时间。##号的作用可以把位于它两边的符号合成一个符号。...

2022-07-22 20:58:16 965

原创 c语言的文件操作小结

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及当前的位置等)。每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。而是应用于当文件读取结束的时候,判断是读取失败结束,还是读到文件尾结束。接下来就可以通过文件指针来关联相应的文件了,对文件进行操作了。...

2022-07-22 18:23:44 639

原创 动态内存开辟

情况二,原内存空间后面没有足够的内存空间,realloc函数会在堆区寻找一块足够大小空间,并把原来的内容拷贝过,返回新的地址。2.3返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自情况来决定。之间的不同点是,malloc不会设置内存为零,而calloc会设置分配的内存为零。情况一,是原内存空间后面还要足够的内存空间,调整增大内存下,直接在后面扩容。2.5如果参数ptr指向不是动态开辟的,那free函数的行为是未定义的。...

2022-07-15 15:48:04 195

原创 结构体+枚举+联合体

4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。而且枚举中每一元素都是有指的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。3.结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。2.其他成员变量要对齐到某个数字(对齐数)得整数倍得地址处。S1的大小为12个字节,S2的大小为8个字节。联合的大小至少是最大成员的大小。..

2022-07-15 14:59:00 122

原创 关于c语言字符串函数和内存函数

字符串函数:strlen求字符串长度,strcpy字符串拷贝,strcat字符串追加,strcmp字符串比较,strstr字符串查找字串内存函数memcpy内存拷贝,memmove内存拷贝升级

2022-07-09 21:13:43 154

原创 c语言函数的传参

传参

2022-07-02 16:28:10 569

原创 复制含有随机指针的节点的链表

单链表中只有一个next指针,而这里的多了一个rand指针,rand指针是随机任意节点的指针。

2022-06-29 15:00:59 103

原创 二叉树求后继

中序遍历中一个结点的下一个结点,就是后继结点。

2022-06-29 09:35:55 236

原创 判断是不是 平衡二叉树(AVL)

平衡二叉树的判断条件任何节点的子树的高度差都小于等于1采用的分而治之的方法

2022-06-28 22:21:03 403

原创 二叉树的遍历(java实现)

二叉树的实现

2022-06-28 21:46:44 88

原创 完全二叉树的判断

什么是完全二叉树?一棵深度为k的有n个结点的 二叉树 ,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与 满二叉树 中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树(百度)判断是不是完全二叉树条件有两点第一点:任意结点,有右无左,就不是完全二叉树第二点:在第一点不违规的情况下,如果遇到了第一个左右子树不全的结点,后序皆是叶结点private static boolean isBST(Node head){ if(h.

2022-05-27 11:22:05 186

原创 c语言中浮点数在内存中的存储

首先怎么保留小数点?c语言规定%后面跟想要保存的小数点有时候你想保留几位小数点并且四舍五入输出。

2022-05-26 11:39:28 151

原创 c语言二进制的源码,反码,补码

在计算机中所有的数据都是以二进制形式存储的。但是它是怎样存储在内存中的呢?是以补码的形式存储的。什么是补码呢?在弄清楚什么是补码之前先得了解“符号位”和“源码”和“反码”什么是符号位?int a = 10;int b = -10;它们对应的二进位是a: 00000000 00000000 00000000 00001010b: 10000000 00000000 00000000 00001010可以看到除了第一位其它位都一样第一位为0就是正数,第一位为1就是负数

2022-05-24 21:29:03 644 2

原创 关于我学习编程

关于我学习编程

2022-04-01 13:03:53 749 2

空空如也

空空如也

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

TA关注的人

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