自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 [Java EE] 多线程(五):单例模式与阻塞队列

阻塞队列是⼀种特殊的队列.也遵守"先进先出"的原则.阻塞队列能是⼀种线程安全的数据结构(但是像我们前面学习的普通队列和优先级队列都是线程不安全的),并且具有以下特性:• 当队列满的时候,继续⼊队列就会阻塞,直到有其他线程从队列中取⾛元素• 当队列空的时候,继续出队列也会阻塞,直到有其他线程往队列中插⼊元素阻塞队列的⼀个典型应⽤场景就是"⽣产者消费者模型".这是⼀种⾮常典型的开发模型.拓展:消息队列。

2024-04-26 20:17:38 430 6

原创 [Java EE] 多线程(四):线程安全问题(下)

假如现在没有胡建林,现在潘妮就相当于主内存与工作内存中的拷贝操作,马杰克就相当于直接从工作内存中读取的操作.如今杰弗瑞要裁员,由于马杰克的工作效率和工作能力比潘妮大上好几个数量级,裁员的时候优先裁的就是潘妮,但是现在歪打正着混进个胡建林,就相当于IO操作,由于胡建林是靠着"关系"进入的众和集团,即使胡建林干活再慢,也不可以裁掉,即然比潘妮干活慢的胡建林都裁不掉,何谈裁潘妮.他们中间的先后顺序,但凡慢了一步,或者是快了一步,都会丢失这2分.,就相当于告诉老板,裁员的时候请不要裁到大动脉!

2024-04-24 17:54:02 754 8

原创 [Collection与数据结构] PriorityQueue与堆

前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话.在这种情况下,。这种数据结构就是优先级队列(Priority Queue)。在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。

2024-04-23 17:41:58 901 2

原创 [Java EE] 多线程(三):线程安全问题(上)

如果多线程环境下代码运行的结果,则我们说存在线程安全问题,即程序存在bug,反之,不存在线程安全问题.

2024-04-21 21:42:19 668 6

原创 [MySQL数据库] 索引与事务

索引是一种特殊的文件,包含着对数据表里.可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现.

2024-04-18 22:26:18 1200 3

原创 [Java EE] 多线程(二): 线程的创建与常用方法(下)

也就是唤醒之后干什么,是可以由程序员自己决定的.显然,我们在实际开发中,最多使用的是第二种方法,第一种方法不可唤醒线程,线程会继续阻塞,会使得线程的效率大大降低。

2024-04-17 21:48:05 678 5

原创 [Java EE] 多线程(一) :线程的创建与常用方法(上)

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

2024-04-16 22:36:29 1302 5

原创 [Java EE] 计算机工作原理与操作系统简明概要

计算机分为,计算机并不单单指的是电脑,还有我们平时使用的手机,ipad,智能手表等终端设备都是计算机.还有我们用户不常见的计算机,比如服务器. 还有许多嵌入式设备(针对特定场景定制的"专用计算机"),都是计算机.

2024-04-16 00:05:56 809

原创 [Collection与数据结构] 二叉树(三):二叉树精选OJ例题(下)

上面这道题是分层式的层序遍历,每一层有哪些结点都很明确,我们先想一想普通的层序遍历怎么做这里我们通过来实现层序遍历.按照从左到右的方式依次把结点依次存入队列中.这里使用了,用来记录当前队列的大小.我们每一层都会申请一个list,把当前层数中的结点全部放入该list中,,把该层的list放入总的lists中.

2024-04-14 22:52:00 967 8

原创 [Collection与数据结构] 二叉树(二):二叉树精选OJ例题(上)

在图中我们可以看到在从根节点递归到作左树的根结点的时候,就已经遇到了不平衡,但是在传入左树的根节点的时候,还是要向下递归,这样就是多此一举的做法,我们希望。,这种做法是面试官青睐的做法.这里需要注意的一点就是需要。

2024-04-11 13:51:34 337 1

原创 [Collection与数据结构] 二叉树(一):二叉树的性质与基本操作

树是一种的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为

2024-04-09 22:01:22 953 1

原创 [MySQL数据库] 数据库基本操作(四):表的增删查改(下)

注:联合查询,只要考到sql,大多数情况下都考的是联合查询,而且联合查询也是我们学习中的难点.

2024-04-08 20:36:18 964 1

原创 [Collection与数据结构] Stack与Queue(二):队列与Queue

所以要让队尾的元素露出来.

2024-04-07 20:02:47 866

原创 [MySQL数据库] 数据库基本操作(三):表的增删查改(中)

如果说包含不可加和对象,则不会计入总和中.原理就是:在MySQL拿到一个不可直接运算的类型的时候,如字符串类型,sql会先尝试转化为double类型数据,若转换失败,则该数据不参与运算,并报出警告.在使用having限制的时候,是对分组之后的结果进行过滤,比如上面的例子,而使用where是对分组之前的结果进行遍历.下面来举一个where的例子.创建班级表student , 一个学生对应一个班级,一个班级对应多个学生,使用id为主键,在这里,我们可以看到,我们指定student的班级id为2,

2024-04-05 20:01:33 762 1

原创 [Collection与数据结构] Stack与Queue(一): 栈与Stack

栈:一种特殊的,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,。出栈:栈的删除操作叫做出栈。。

2024-04-04 22:58:13 1117

原创 [MySQL数据库] 数据库基本操作(二):表的增删查改(上)

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写,就是数据库基本操作中。

2024-04-03 23:28:11 1121 1

原创 [MySQL数据库] 数据库基本操作(一):数据库的认识与基本操作

专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。

2024-04-03 18:44:43 746

原创 [Collection与数据结构] 链表与LinkedList(四):双向无头非循环链表的实现与LinkedList的使用

下面我们给出一个接口,接口中的这些方法就是待实现的方法[注意事项]

2024-04-02 13:20:58 1400 6

原创 [Collection与数据结构] 链表与LinkedList(三):链表精选OJ例题(下)

整体思路:创建一个新的链表,把这个新的链表用x分段,遍历原链表,根据条件把结点放入新链表,之后把前面一段链表和后面一段链表连接起来.[注意事项]动态演示分割链表。

2024-03-31 15:39:38 961 2

原创 [Collection与数据结构] 链表与LinkedList(二):链表精选OJ例题(上)

这个题我们在上一篇博客中实现单向链表中展示过,这里不再赘述.

2024-03-30 00:04:01 811 1

原创 [Collection与数据结构] 链表与LinkedList (一):链表概述与单向无头非循环链表实现

上篇文章我们已经对顺序表进行了实现,并且对ArrayList进行了使用,我们知道ArrayList底层是使用数组实现的.由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此:java集合中又引入了LinkedList,即链表结构。

2024-03-27 23:27:09 1170 5

原创 [Collection与数据结构] 顺序表与ArrayList

说明]ArrayList是以泛型的方式实现的,使用时必须先实例化.ArrayList的底层是一段连续的存储空间,并且可以动态扩容,是一个动态类型的顺序表.

2024-03-26 20:19:37 674 4

原创 [Collection与数据结构] 数据结构预备知识(二):包装类与泛型

一般的类和方法,只能使用具体的类型,要不是基础类型,要不是引用类型,要不是自定义类型,如果需要编写多种类型都可以应用的代码,这种编程方式就会特别刻板.于是在jdk1.5中就引入了新的语法,就是泛型:通俗讲,就是适用于多种类型.从代码上讲,就是把类型作为一种参数来传递,实现的是类型的参数化.

2024-03-23 21:30:29 692 2

原创 [Collection与数据结构] 数据结构预备知识(一) :集合框架与时间空间复杂度

在计算机科学中,算法的时间复杂度是一个数学函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

2024-03-21 23:15:54 1003 4

原创 [Java SE] 认识异常 (Java SE完结篇)

程序先执行 try 中的代码如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.如果找到匹配的异常类型, 就会执行 catch 中的代码如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).如果上层调用者也没有处理的了异常, 就继续向上传递.

2024-03-17 23:32:20 946 1

原创 [Java SE] String类 (三) : StringBuilder, StringBuffer与OJ例题

上述例子可以看出: String和StringBuilder最大的区别就是==String内容无法修改,而StringBuilder的内容可以修改,==频繁修改字符串考虑使用StringBuilder.去修改,那么现在我们引入StringBuilder和StringBuffer类. 在用这两个类建立对象的时候,,这两个大类的部分功能是相同的.这里介绍一些常用的方法,要是用到其他方法,大家可参考jdk帮助手册.在上一篇博客我们提到,String类具有不可变性,在每次修改字符串的时候都是。

2024-03-15 22:07:33 915

原创 [Java SE] String类(二):常用方法(下)

网上有的人说,不可修改是因为有String和value均有final的修饰,这种说法是错误的,数组用final修饰只是说明该不可以引用其他对象,但是其自身是可以修改的,类用final修饰只是说明该类不想被继承。在这里我们可以看到每次创建的时候都会new一个新对象,每次都是一个不同的对象,我们应该避免对String的直接修改,使用StringBuilder和StringBuffer大大提高效率,我们下一篇介绍~我们不推荐字符串直接这样修改的原因是因为,由于字符串的不可变性,所以在中间会。

2024-03-13 22:59:30 824 2

原创 [Java SE] String类(一):常用方法(上)

与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。字符串的引用方式其实和我们前面提到的数组很类似,因为底层就是数组实现的,我们下面通过画图说明。字符串的比较也是常见的操作之一,比如:字符串的排序,Java中总共提供了4种方式。需要注意的是,由于String是引用类型,虽然s1和s3相同,上述代码我们可以看到,虽然s1和s3指向的是不同的引用,但是。:这里在转化的是一个新的字符串,不是在原来的字符串上修改,,在上面的运行结果我们可以看到,s3的长度为2。

2024-03-11 22:09:04 733 2

原创 [Java SE] 抽象类与接口(三):拷贝与Object类

Object类是Java默认提供的一个类,在Java里面除了Object类,与所有的类都存在继承关系,他们都会默认继承Object类即所有的对象都可以用Object类来接收,它可以向上转所有类型的对象问题:如果所有类的默认继承了Object类,那么一个类在手动继承了一个类,就相当于继承了两个类,那么为什么不报错呢其实并不是这样的原理,是手动继承的父类已经继承了Object类,子类再去手动继承父类就相当于多层继承,这种继承方式是允许的。

2024-03-10 18:14:44 825 1

原创 [Java SE] 抽象类与接口(二):接口(下)

在这里我们给出几种更加灵活的方法,利用比较器,

2024-03-09 00:31:49 929 2

原创 [Java SE] 抽象类与接口(一):抽象类+接口(上)

在面向对象的概念中,所有的对象都是通过类来描述的,但是有时候一些类并不可以清晰地刻画一个对象,没有包含足够的信息来描绘一个具体的对象的类,那么这样的类就叫做抽象类,比如说:有一个类,这个类是一个图形,但是仅凭借这些信息,你现在完全不会在纸上描绘出一个图形,因为你不知道这个图形是一个什么样的图形,图形包括好多,有正方形,三角形等等从上面的信息,我们不难看出以下几点:在这个例子中,我们令抽象图形类为Shape,令画图形的方法为draw,则Shape类为抽象类,其中的draw方法不能实现任何的具体功能,是一个没

2024-03-07 22:01:15 635 2

原创 [Java SE] 数组的定义与使用(二):数组的应用与常用方法

有序数组分为升序和降序,如:1 2 3 4, 4 3 2 1,我们以升序数组为例。给定一个数组,我们来将这个数组排序,排列为升序或降序,假设我们要排升序。上述代码在查找上有缺陷,这种方法很慢,我们下面介绍一种比较高效的方法。Java系统中实现sort方法的底层排序方法是快速排序,我们后续介绍。二维数组在后面其实使用的比较少,我们在后面使用二维数组时一般都是通过。这种方法虽然相较顺序查找比较高效,但是也有一定的限制,这种方法只对。我们下面使用一个简单的方法实现一个自己的copyOf方法。

2024-03-03 23:07:27 715 2

原创 [Java SE] 数组的定义与使用(一):数组的认识

数组,可以看做是相同类型元素的集合。在内存中是一段连续的空间,就好像车库一样,有一块一块的空间,在这个空间中都停着同一类事物——汽车。数组存放的元素其类型相同数组的空间是连续的每个空间都有自己的编号,起始位置的编号为0。

2024-02-07 00:22:16 906 1

原创 [Java SE] 继承与多态(三):多态

3.2 规则。

2024-02-06 00:23:29 875 2

原创 [Java SE] 继承与多态(二):继承(下篇)

在子类的构造方法中,并没有写任何关于父类的构造代码,但是在构造子类对象时,先执行了父类的构造方法,然后执行子类的构造方法,因为:子类对象中成员是有两部分组成的,基类继承下来的以及子类新增加的部分。和继承类似,组合也是一种表达类之间关系的方式,也可以实现代码的复用。我们有时不希望一个类被继承,我们希望在继承上进行限制,这时我们就需要用到。组合和继承都可以实现代码的复用,该继承还是组合,一般看实际的应用场景。父子父子,先有父再有子,即:子类对象构造时,还记得我们之前讲的代码块吗,我们简单回顾,

2024-02-04 14:34:20 1079 2

原创 [Java SE] 继承与多态(一):继承(上篇)

通过上述代码发现,猫类和狗类中有大量重复的成员,它们都有自己的名字,年龄,体重,它们都会吃,会睡觉,只有叫声是不一样的。继承的机制:这是面向对象程序设计中使代码可以复用的最重要的手段,他允许程序员在保持一个类原有特征的同时进行。在继承体系中,既然子类把父类的方法和字段都继承下来了,那子类怎样去访问父类中的成员呢?既然想要在子类中访问父类的成员,直接访问是无法做到的,这时,Java就为我们提供了。Java中使用类对现实中的事物进行描述的时候,由于世间事物错综复杂,比如:猫和狗都是动物。,这样产生的类,称为。

2024-02-03 23:34:14 921 2

原创 [Java SE] 类与对象(六):代码块

使用{}定义的一段代码称为代码块,代码块可以分为以下四种:定义在方法中的代码块,这类代码块不需要条件,一定会被执行,但是这种代码块相对少见3. 构造代码块定义在类中的代码块(不加修饰符)。也叫实例代码块。构造代码块一般用于初始化实例成员对象。还是拿我们熟悉的“学生类”来举例。4.静态代码块使用static修饰的代码块称为静态代码块,一般用于初始化静态成员变量这里可以返回去看一下上一篇文章中静态成员变量的初始化注意事项:静态代码块>实例代码块>构造方法原理解释:在代码执行的时候,先要加载出类,

2024-02-02 15:29:11 256

原创 [Java SE] 类与对象(五):static成员

我们把类中的classroom进行了封装限定,并通过公开的classbegin接口来获取到classroom,并把主函数移动到了一个不同的类当中,在主函数中使用类名来访问classbegin方法。张三和李四上课的教室是同一间教室,都是111班,这样每一次都对classroom进行初始化和每次调用classbegin方法显得过于麻烦。有一些通过类实例化出的对象,它们具有相同的特点,在实例化一个类时候,,所以我们对以上代码使用类成员进行改进。,其不属于某个具体的对象,从这段代码中,我们发现,

2024-02-02 14:43:33 486

原创 [Java SE] 类与对象(四):封装

3.3.1 基本规则在文件的最上方加上一个package语句来指定该代码在哪个包中包名需要尽量指定为唯一的名字包名和代码路径相匹配,例如创建com.by.demo1的包,对应的路径为com/byte/demo1若一个类没有package语句,则会被放到idea默认的src包下3.3.2 操作步骤在idea中新建一个包,如图所示在弹窗中命名包名3. 在包中创建类我们看到类已经被创建了,包含了package语句,路径也是对应的。

2024-02-01 23:03:24 853 1

原创 [Java SE] 类与对象(三):对象的构造及其初始化

在第一个大标题中,我们提出了两个问题,但是我们的第二个问题还没有提及,下面我们直接给出回答:成员变量在不初始化的时候,会有默认的初始值,通过前面的知识,我们知道,在Java中定义局部变量时候,必须要初始化,否者编译器就会报错。7. 大多数情况下都是用public修饰,有时候也会用private修饰,后面细说。4. 如果没有显式定义,编译器就会自动生成一个。在声明成员变量的时候,直接给出初始值。,至于初始值,注意两种类型就可以。构造方法是一个特殊的成员方法,在idea 64编译器中,这里需要注意的一点是。

2023-12-05 17:08:59 247 1

windows10画图板

windows11的画图板存在bug,什么图层问题,输入文字之后会变模糊,每次输入文字的时候都需要重置字体和字体大小等等的问题,在这里给大家一个旧版本的画图板,就是windows10的画图板,windows10的画图板还是相对好用,在我们今后学习数据结构的时候,画起图来也会非常方便,非常爽~~~.

2024-03-22

空空如也

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

TA关注的人

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