自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络基础原理

协议分层类似于打电话时,定义不同的层次的协议:在这个例⼦中,我们的协议只有两层;但是实际的⽹络通信会更加复杂,需要分更多的层次。

2024-08-05 10:49:51 583

原创 Java中操作文件

我们先来看看File 类中的常⻅属性、构造⽅法和⽅法。

2024-08-03 15:29:29 804

原创 cas 和 synchronized 优化过程

CAS:全称Compareandswap,字⾯意思:”⽐较并交换“,⼀个CAS涉及到以下操作: 我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。1. ⽐较A与V是否相等。(⽐较)2. 如果⽐较相等,将B写⼊V。(交换)3. 返回操作是否成功。下⾯写的代码不是原⼦的,真实的CAS是⼀个原⼦的硬件指令完成的.这个伪代码只是辅助理解CAS的⼯作流程.

2024-07-27 21:24:33 763

原创 java线程池

ThreadPoolExecutor提供了更多的可选参数,可以进⼀步细化线程池⾏为的设定.• corePoolSize:正式员⼯的数量.(正式员⼯,⼀旦录⽤,永不辞退)• maximumPoolSize:正式员⼯+临时⼯的数⽬.(临时⼯:⼀段时间不⼲活,就被辞退).• keepAliveTime:临时⼯允许的空闲时间.• unit:keepaliveTime的时间单位,是秒,分钟,还是其他值.• workQueue:传递任务的阻塞队列。

2024-07-25 21:05:54 287

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

a. 不需要写共享资源的模型b. 使⽤不可变对象。

2024-07-24 19:13:23 524

原创 Java 线程的几种状态

• NEW:安排了⼯作,还未开始⾏动• RUNNABLE:可⼯作的.⼜可以分成正在⼯作中和即将开始⼯作.• BLOCKED:这⼏个都表⽰排队等着其他事情• WAITING:这⼏个都表⽰排队等着其他事情• TIMED_WAITING:这⼏个都表⽰排队等着其他事情• TERMINATED:⼯作完成了.

2024-07-17 18:56:27 279

原创 Thread 类的基本用法

继承 Thread 来创建⼀个线程类.创建 MyThread 类的实例调⽤ start ⽅法启动线程t.start();

2024-07-17 16:10:11 127

原创 进程与线程

⼀个线程就是⼀个"执⾏流".每个线程之间都可以按照顺序执⾏⾃⼰的代码.多个线程之间"同时"执⾏ 着多份代码.还是回到我们之前的银⾏的例⼦中。之前我们主要描述的是个⼈业务,即⼀个⼈完全处理⾃⼰的业 务。我们进⼀步设想如下场景: ⼀家公司要去银⾏办理业务,既要进⾏财务转账,⼜要进⾏福利发放,还得进⾏缴社保。如果只有张三⼀个会计就会忙不过来,耗费的时间特别⻓。

2024-07-14 22:23:09 262

原创 进程调度的基本过程

每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运 ⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可 以说是计算机科学中最重要和最成功的概念之⼀。

2024-06-03 21:50:15 918

原创 HashMap和HashSet

2.创建一个新节点cur让其等于head(就是映射关系中的Key),遍历一遍链表.每次遍历都创建一个新节点node为拷贝后的节点(就是映射关系中的Val),这样我们cur和node就形成了映射关系.用put()方法,将Key与Val对应的对象存入map.比如:Key存第一个节点即head,Val存储第一个节点的拷贝.那么Key里面存在head这个完整的节点,而Val存的也是这个节点拷贝,但是目前里面只有val的值,random与next都为空.因此只要表中有一半的空位置,就不会存在表满的问题。

2024-05-09 18:21:25 589 1

原创 TreeMap及TreeSet

Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不 能重复。

2024-05-06 21:32:35 1003

原创 PriorityQueue

Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线 程不安全的,PriorityBlockingQueue是线程安全的。关于PriorityQueue的使用要注意:1. 使用时必须导入PriorityQueue所在的包,即:2. PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出 ClassCastException异常。

2024-04-12 22:37:25 922 1

原创 java二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 有一个特殊的结点,称为根结点,根结点没有前驱结点 除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti (1 又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继 树是递归定义的。例如:E节点不能同时连接B节点和C节点。

2024-04-11 17:46:25 1011 1

原创 JAVA栈与队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头 (Head/Front)// 3. 队列中有多个元素---链表中有多个节点----将第一个节点删除。// 2. 队列中只有一个元素----链表中只有一个节点---直接删除。// 获取队头元素---获取链表中第一个节点的值域。// 获取栈中有效元素个数---> 4。

2024-04-03 16:01:31 823 1

原创 JAVA实现图书管理器(简略版)

回到Main,书接上回我们写到了选择进入管理员系统还是用户系统,现在我们把选择的结果加上去,选择进入管理员系统就应该打印出管理员的操作菜单,所以通过new一个adminUser来进入操作系统,然后返回所选择的操作,用户同理。然后通过for循环,一本一本进行比对。先查找书籍,并用j记录查找的书籍下标,然后我们选用删除书籍的方法是:从删除书籍后方的书籍依次往前移到一个位置(为什么j的初始值为-1,因为数组下标没有-1)。结果就是被覆盖掉的书籍的下标对应的被覆盖掉的书籍的下标的下一位对应的书籍。

2024-03-16 22:44:16 861 1

原创 JAVA中的继承

继承机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。共性的抽取,实现代码复用。1.2怎么继承在Java中如果要表示类之间的继承关系,需要借助extends关键字,具体如下:修饰符class父类// ...修饰符class子类extends父类// ...比如:publicStringname;int。

2024-03-05 22:22:18 810 1

原创 JAVA类和对象

主要描述该实体对象具有哪些属性外观尺寸等,哪些功能用来干 啥),描述完成后计算机就可以识别了。比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。属性:产品品牌,型号,产品重量,外观尺寸,颜色...功能:洗衣,烘干、定时....

2024-03-02 11:45:05 830

原创 JAVA数据类型

1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.注意:不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节。由上面的表可以知道int型有范围,通过以下两个函数可以知道最小值与最大值。为了区分int和long类型,一般会在long类型变量初始值后面加L或l。可以先定义后赋值,也可以定义同时赋值。

2024-02-13 23:36:55 369 1

原创 C语言编译链接

编译过程就是将预处理后的⽂件进⾏⼀系列的:词法分析、语法分析、语义分析及优化,⽣成相应的。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列。接下来语法分析器,将对扫描产⽣的记号进⾏语法分析,从⽽产⽣语法树。程序必须载入内存中。静态语义分析通常包括声明和类型的匹配,类型的转换等。链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。在预处理阶段,源⽂件和头⽂件会被处理成为.i为后缀的⽂件。据汇编指令和机器指令的对照表⼀⼀的进⾏翻译,也不做指令优化。

2024-01-16 09:27:29 817 1

原创 C语言文件操作

据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据。在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显。字,文件状态及文件当前的位置等)。该结构体类型是有系统。每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,

2023-12-14 15:06:43 21 1

原创 ⾃定义类型:结构体

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

2023-12-04 22:14:38 20

原创 整数和浮点数在内存中存储

整数在内存中存储整数的2进制表⽰⽅法有三种,即 原码、反码和补码三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位 负整数的三种表示方法各不相同。原码 直接将二进制按照正负数的形式翻译成二进制就可以。 反码 将原码的符号位不变,其他位依次按位取反就可以得到了。 补码 反码+1就得到补码。正数的原、反、补码都相同。 浮点数在内存中存储根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形

2023-12-04 16:49:01 18

原创 字符串函数

我们将要想求长度的数组输入进去,用指针的形式进行接收,然后通过while循环求值。因为数组的末尾为\0,所以当*p的值等于\0时就代表*p已经到达数组的末尾。*p1++ = *p2++的计算方式是:后置++所以先把*p2的值赋给*p1然后进行++。把要目标的数组和要拷贝的数组 传入函数,先用ret记录下p1的地址,等下作为返回值。(如果p1作为返回值的话,p1经过循环后,p1的首地址已经不是刚传入时的地址了,会导致后面打印不出数组)。首先我们要先找到arr1地址的\0的位置,然后从\0的位置开始进行复制。

2023-11-30 14:44:09 42

原创 指针(一)

指针是内存中一个最小单元的编号,也就是地址,通常指的是指针变量,是用来存放内存地址的变量。概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)(取地址操作符)取出变量的内存其实地址,把地址可以存放到一个变量中,这个。总结:指针就是地址,口语中说的指针通常指的是指针变量。指针的类型决定了指针向前或者向后走一步有多大(距离)。就是一个指针变量,那它的类型是怎样的呢?指针变量,用来存放地址的变量。避免返回局部变量的地址。类型的指针是为了存放。类型的指针是为了存放。类型的指针是为了存放。

2023-11-23 13:54:17 16

原创 c语言实现9x9扫雷游戏

由上面打印的坐标可知a和b的范围是1-9即row或col,所以我们要先满足这个范围才能进行判断是否是雷,如果是,则打印“很遗憾,你被炸死了”,并且把布置雷的那张图也打印出。在text.c文件里面进行传值:为什么这是传的是row和col,我们使用的时候是不需要最外圈的那一层,最外圈只是辅助后面扫描周围有多少雷的。假设我们排查(8,6)这个坐标时,我们访问周围的⼀圈8个⻩⾊位置,统计周围雷的个数时,最下⾯的三。个坐标就会越界,为了防⽌越界,我们在设计的时候,给数组扩⼤⼀圈,雷还是布置在中间的9*9的坐。

2023-10-31 18:23:22 64 1

原创 C语言分支循环语句

C语言是结构化的程序设计语言,这⾥的结构指的是顺序结构、选择结构、循环结构,C语言是能够实。现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种。循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较。循环至少执行一次,使用的场景有限,所以不是经常使用。,就停止后期的所有的循环,直接终止循环。是用于终止本次循环的,也就是本次循环中。如果表达式的结果为真,则语句执行。语句后的语句执行,否则不执行。,用于初始化循环变量的。,用于循环条件的调整。

2023-10-23 18:22:05 16

空空如也

空空如也

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

TA关注的人

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