自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 文件IO操作

是指存储在硬盘上的数据,以文件为单位进行组织。常见的就是普通的文件(如文本文件,视频,图片,可执行文件等)文件夹是一种特殊的文件,也叫做目录操作系统要负责软硬件资源的管理,而操作系统往往会把这些都统一的抽象为“文件”来经行管理。例如网卡:就是把网卡这个设备抽象成一个文件,创建出一个特殊的文件,表示网卡。从网卡接受到的数据,就读进这个文件。往网卡里发送数据,就写入这个文件。键盘:从键盘读取数据,也是把键盘抽象成一个文件(stdin),读设个文件就能读到用户输入的按键内容了。

2024-04-24 22:54:31 894

原创 线程池(ExecutorService)

线程的存在就是因为进程再创建和销毁的时候申请和释放内存资源比较低效。线程创建后就能共享内存资源不用重复申请新的资源。但如果线程创建的速率变得频繁,此时线程的开销也不能忽略!此时就可以使用线程池优化这里的速度!创建线程,是要在操作系统的内核中完成的。涉及到用户态->内核态的切换操作。这个操作有一定的开销。线程池就是创建很多线程,当需要执行任务的时候,就不需要创建线程了,直接从池子里取个现成的。用完了也不需要释放线程,直接还回线程池中。此处创建线程池并没有像正常创建实

2024-04-17 17:35:37 338 1

原创 定时器(Timer)

顾名思义,定时器就是闹钟。代码中的定时器,就是设定多长时间后,执行某个动作。

2024-04-16 21:48:40 461

原创 Java——阻塞队列

阻塞队列是一种特殊的队列。与普通的队列相比:1.线程安全的2.带有阻塞功能a)如果队列满,继续入队列,入队列操作就会阻塞,直到队列不满,入队列才能完成,b)如果队列空,继续出队列,出队列操作也会阻塞,直到队列不空,出队列才能完成.

2024-04-09 21:23:41 161

原创 Java——单例模式

如果t1按照1 3 2 的顺序执行,可能t1执行1 3后,t2先调用了getInstance。这样t1就会得到不完全的对象(只有内存,内存上的数据是无效的)。可以看出,t2线程经行Load的时候,t1可能还没修改完。所以,外部类使用Singleton的实例,直接getInstance就好。所以,如果整个代码没人调用getInstance,就可以把构造实例的过程省下来。在饿汉模式下,new实例只需要读数据,不涉及到修改,所以多线程是安全的。但是在懒汉模式中,创建实例涉及到读和修改,多线程的情况下就不安全!

2024-04-08 14:49:10 365

原创 线程安全——内存可见(volatile)

所以这时编译器就只执行一次load,后续CMP就不用重新读内存了(编译器优化)。而运行到t2的时候,count已经变成了我们输入的值,此时内存已经被修改了。volatile禁止了编译器优化,避免了直接读取CPU中寄存器(工作内存)中缓存的数据,而是每次都重新读内存(主内存)编译器优化可能会导致不是每次都真的读取主内存,而是直接取工作内存中的缓存数据。所以volatile 起到的效果, 就是保证每次读取内存都是真的从主内存重新读取~正常程序执行的过程中,会把主内存的数据,先加载到工作内存中,再进行计算处理。

2024-04-06 23:09:01 391 1

原创 线程安全——原子性(synchronized)

synchronized()里面填的东西就是你要针对那个对象加锁(锁对象)我这里用this就以为这谁调用increase方法谁就是this。进行的 count ++ 操作,底层是三条 指令 在 CPU 上完成的!在加锁和解锁之间,进行修改,这个时候别的线程想要修改,不好意思,修改不了!本来count=2的它给搞个1,这就说明有bug了。因为并发的关系,线程之间的调度顺序不确定,而且是两个线程修改一个变量。所以两个线程执行这些操作时就可能有多种执行的顺序。除了前两种”串行执行“的情况,其他都是有问题的!

2024-04-06 19:41:09 255 1

原创 线程——Thread类

这是一段用lambda表达式创建的线程。

2024-04-03 09:41:10 660 1

原创 线程——start()与run()的区别

直接调用run并没有创建线程,只是在原来的线程(main)中运行代码。但是,如果把t.start换成t.run可以发现运行结果是一样的。首先用继承Thread重写run方法创建一个线程。为了便于区分,我们在main函数中再写一个while。这下就能看出区别了!

2024-04-01 22:48:57 179

原创 多线程详解

线程可以理解为轻量级的进程。它在创建,销毁线程的开销要比进程小。所以线程是包含在进程中的。一个进程可以有一个或多个线程(默认是一个)。每个线程都是一个"执行流",可以单独的在CPU上进行调度,同一个进程中的这些线程,共用同一份系统资源(内存+文件)。

2024-03-27 23:35:42 634

原创 进程基础知识

先来了解何为进程。进程也叫做任务,可以理解为一个跑起来的程序。上图中steam.exe叫做可执行文件(静态的),是一个存储在硬盘上的文件。当你双击这个.exe文件时,操作系统就会把这个文件中的核心数据加载到内存中。同时在系统中生成一个进程。进程就是操作系统分配资源的基本单位。

2024-03-26 21:11:17 906

原创 JAVA-内部类

其实也可以定义。不过这个静态的成员因该是final修饰的。如上面第九行代码因改为public static final int data6 = 6;真的不行。不要问为什么,语法。

2023-03-26 10:24:52 73

原创 JAVA-代码块

使用 {} 定义的一段代码称为代码块。实例代码块定义在类的内部,方法的外部。构造代码块一般用于初始化实例成员变量。使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。3、如果没有实例化对象,那么只会执行静态的。定义在方法中的代码块,用法不多(没有什么意义)。(加载了类就会被执行)实例数据(有多个实例 要看定义的顺序)。2、如果有多个静态的,那么看定义顺序。1、普通代码块(本地代码块)2、构造块(实例代码块)

2023-03-25 19:46:20 75

原创 JAVA-static成员

首先设计一个学生类这时我们发现,张三和李四都是3班的。同设计的角度来想,在每个对象都在堆上存一个classes有点浪费。怎么样把他们存为一份呢?这时候就要用到static。也就是把“public String classes;”改为“public static String classes;”.这样,classes这个成员变量就不会存到对象里,而是直接存到方法区。在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对 象,是所有对象所共享的。

2023-03-22 21:33:07 82

原创 JAVA-类与对象

在学C语言的时候,我们会经常听老师讲C语言是个面向过程的语言,而何为面向过程老师则并没有细说,现在我们来了解一下。首先,就是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。而是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。这个解释太官方我们拿洗衣服来举例。

2023-03-22 21:25:51 132

原创 实训1——输出不多于4位数的正整数的位数和逆序

任务声明:输入一个不多于4位的正整数,编写完成如下2项任务的程序(1) 求出它的位数并输出;(2) 按逆序输出它的每一位数码。(第一行代码只在vs2019上使用,其他的请无视!#define _CRT_SECURE_NO_WARNINGS是vs2019上要使用scanf函数的话就要使用,并且必须在代码的第一行)#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int a, t, f, d, p;

2022-01-04 20:40:09 1968

原创 实训1——商场打折

任务说明:商场打折,打折规则如下:购买商品总金额5000元以上含5000元打5折,4000元以上含4000元打6折,3000元以上含3000元打7折,2000元以上含2000元打8折,其他情况不打折,从键盘输入购买商品金额,计算出实际应付金额并输出,使用三种方式实现商场打折主要用到的是选择结构。(我用的是visual stdio 2019,如果你不是这个的话就把scanf_s改成scanf)1.if else语句#include<stdio.h>int main(){ f..

2022-01-04 20:22:39 6992

原创 C语言——循环

最近学校刚把循环将完,我也分享一下我学循环的感悟吧循环一共有4种语句。因为goto语句比较废所以我们不讲他,其他的我们依次展开说一下while语句在学习循环的时候流程图真的有大作用!!!(网上找了半天还是书上的图更好哈哈)图的意思就是首先计算表达式的值,若表达式的值非0(真),则执行while语句中的循环体语句,然后再回来计算表达式的值;若表达式为非0值,则还是执行循环体语句;依次循环,直到表达式的值为0(假)时,结束循环(写循环体语句的时候最好用大括号括起来,这样子看着更简洁).

2021-11-13 20:08:54 2315 1

空空如也

空空如也

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

TA关注的人

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