自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程 Lock锁

锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先 获得Lock对象。ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock,可以显示加锁,释放锁。Lock是显示锁(手动开启和关闭锁,别忘记关闭锁)synchronized是隐式锁,出了作用域自动释放。使用Lock锁,JVM将花费较少的时间来调度线程,性能更好,并且具有更好的扩张性(提供更多的子类)

2023-02-05 17:06:26 185 2

原创 多线程08 线程优先级,守护线程,线程同步及三大不安全案例

Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行线程的优先级用数字表示,范围从1~10Thread.MIN_PRIORITY = 1;Thread.MAX_PRIORITY = 10;Thread.NORM_PRIORITY = 5;使用以下方式改变或获取优先级getPriority(). setPriority(int xxx)优先级的设定建议在start()调度前优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了,这都是看C

2022-12-05 13:09:37 200

原创 多线程07 休眠,礼让,强制

Thread.State.TERMINATED){ //只要线程不中止,就一直输出状态。System.out.println(Thread.currentThread().getName()+"线程启动执行了");System.out.println(Thread.currentThread().getName()+"线程停止执行了");System.out.println("线程停止");System.out.println("线程VIP"+i);

2022-11-27 17:51:55 121

原创 多线程06 Lambda表达式

lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹(见示例二中简化二)new Thread (()->System.out.println("多线程学习。//5.匿名内部类,没有类的名称,必须借助接口或者父类。对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。// //1.lambda表示简化。去掉了一堆没有意义的代码,只留下核心的逻辑。// //简化1.参数类型。// //简化2.简化括号。

2022-11-15 15:45:48 85

原创 多线程06 Lambda表达式

lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹(见示例二中简化二)new Thread (()->System.out.println("多线程学习。//5.匿名内部类,没有类的名称,必须借助接口或者父类。对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。// //1.lambda表示简化。去掉了一堆没有意义的代码,只留下核心的逻辑。// //简化1.参数类型。// //简化2.简化括号。

2022-11-15 15:44:08 101

原创 多线程05 静态代理模式

对应于代理模式中即:客户类、代理类 、委托类(被代理类)。为某一个对象(委托类)提供一个代理(代理类),用来控制对这个对象的访问。new Thread(()-> System.out.println("爱")).start();System.out.println("落花要结婚了");//代理对象可以做很多真实对象做不了的事情。//真实对象和代理对象都要实现同一个接口。//真实对象专注做自己的事情。//代理谁-->真实目标角色。//代理对象要代理真实角色。//代理角色,帮助你结婚。//真实角色,你去结婚。

2022-11-13 15:10:35 100

原创 多线程使用04 Callable接口

创建执行服务:ExecutorServrce ser = Executors.newFixedThreadPool(1);System.out.println("IO异常,dowmloader方法出现异常");提交执行:Future result1 = ser.submit(t1);System.out.println("下载了文件名为"+name);获取结果:boolean r1 = result1.get()关闭服务:ser.shutdownNow();

2022-11-11 18:39:25 128

原创 多线程使用03 龟兔赛跑

System.out.println(Thread.currentThread().getName() + "跑了" + i + "步");if (Thread.currentThread().getName().equals("兔子") && i%10==0){System.out.println("胜利者是 ==>"+wineer);new Thread(race,"兔子").start();new Thread(race,"乌龟").start();//判断比赛是否结束。// 判断是否完成比赛。

2022-11-10 16:33:42 188

原创 多线程使用02 Runnable接口

System.out.println(Thread.currentThread().getName()+"拿到了第"+ticketNums--+"张票");//创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法。new Thread(t4,"小明").start();new Thread(t4,"小红").start();new Thread(t4,"小刚").start();//创建线程对象,通过线程对象来开启我们的s线程,代理。

2022-11-10 15:30:27 107

原创 多线程使用01 Thread类

System.out.println("IO异常,downloader方法出现问题");System.out.println("我在写代码==="+i);System.out.println("我在听课==="+i);System.out.println("下载了文件名:"+name);创建线程对象,调用start()方法启动线程。//联系Thread,实现多线程同步下载图片。重写run()方法,编写线程执行体。//下载图片线程的执行体。

2022-11-09 17:03:12 62

原创 异常(如何捕获和抛出异常,自定义异常)

使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常,用户自定义异常,只需继承Exception类即可。在程序中使用自定义异常类,大体可以分为以下几个步骤创建自定义异常类在方法中通过throw关键字抛出异常对象如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throw关键字指明要抛出给方法调用者的异常,继续进行下一步操作在出现异常方法的调用者中捕获并处理异常实例​}​}}​​​。

2022-11-07 14:17:09 1681

原创 接口的定义与实现

接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能....”的思想。OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具备了抽象能力的语言(比如C++,java,C#等),就是因为设计模式多研究的,实际上就是如何合理的去抽象。//接口中的所有定义的方法其实都是抽象的 public abstract。//interface 定义的关键字,接口都需要有实现类。//类 可以实现接口 implements 接口。//实现了类的接口,就要重写类的方法。

2022-11-03 22:04:08 86

原创 多态的使用

(意思就是,new了一个对象,子类里面有继承父类的方法,方法名和参数都相同,如果父类引用指向了子类,要调用哪个取决于有没有重写,没重写就是用的父类,重写了就是用的子类)//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大,但具体执行看右边的。调用不了,因为这是子类独有的方法,父类没有。//Person 父类型,可以指向子类,但是不能调用子类独有的类型。3.如果子类中重写了父类的一个方法,那么调用这个方法的时候,将会调用子类中的方法。一个对象的实际类型是确定的,但可以指向对象的引用的类型很有限。

2022-11-01 16:51:24 146

原创 Java 继承和方法重写(简单易理解,建议收藏)

抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)//调用父类的构造器,必须要在子类构造器的第一行。继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等。调用父类的无参构造,不写为默认调用父类的无参。没有static时,b调用的是对象的方法,而b是用A类new的。//student.test("落花");有static时,b调用了B类的方法,因为b是用b类定义的。私有的可以被继承,但不能被直接访问,可以间接访问。

2022-10-31 19:08:54 2176

原创 什么是封装?简单快速上手

低耦合:仅暴露少量的方法给外部使用。//this.name和方法传进来的参数name是不同的。System.out.println("性别无效");System.out.println("男");System.out.println("女");System.out.println("年龄无效");//提供一些public 的get,set方法。de.setName("落花");de.setSex('男');//提供一些可以操作这个属性的方法。//set 给这个数据设置值。

2022-10-29 16:07:04 185

原创 面向对象07 简单小结类与对象

必须使用new 关键字创造对象,构造器 Person Tom = new Person();类是一个模板:抽象,对象是一个具体的实例。对象是通过引用来操作的:栈 ---> 堆。修饰符 属性类型 属性名 = 属性值。引用类型:基本类型(8大基本类型)对象的方法 Tom.sleep()属性:字段Field 成员变量。对象的属性 Tom.name。

2022-10-29 10:44:35 52

原创 面向对象05 Java构造器的简单理解(适合于小白)

定义有参构造之后,如果想使用无参构造,显示的 定义一个无参的构造(就是把无参的显示出来)//有参构造:一旦定义了有参构造,无参就必须显示定义。//1.使用new关键字,实际上是在调用构造器。//this.name = "落花";OK为默认有参构造,Select None为无参构造。//一个类即使什么都不写,它也会存在一个方法。//new 实例化了一个对象。快速生成构造器:Alt + insert。点第一个 Constructor。按住Shift 可以选中俩个参数。//显示的定义构造器。

2022-10-28 20:50:55 64

原创 面向对象04 类与对象的关系

使用new关键字创建的时候,除了分配内存空间之外,还会给 创建好的对象 进行默认的初始化以及对类中构造器的调用。Person类,Pet类,Car类,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为。类是一种抽象的数据类型,它是对某一类事务整体描述/定义,但是并不能代表某一个具体的事物,能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。//Tom对象就是一个Demo07类的具体实例。张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。//类:抽象的,实例化。

2022-10-28 17:39:52 56

原创 面向对象02 方法使用

/a是一个对象,指向的 ---> Person person = new Person();//三元运算符 如果a大于b,那么结果就是a,否则就是b。静态方法 (非静态可以调用非静态和静态,静态只能调用静态)//return 结束方法,返回一个结果。//对象类型 对象名 = 对象值。//实际参数和形式参数要对应!//实例化这个类 new。//引用传递:对象,本质就是传递。//定义了一个Person类。

2022-10-27 18:34:48 566

原创 面向对象01 什么是面向对象

面向对象编程 (Object-Oriented Programming, OOP)面向对象变成的本质就是:以类的方式组织代码,以对象的组织(封装)数据抽象三大特性封装继承多态从认识角度考虑是现有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象从代码运行角度考虑是先有类后有对象。类是对象的模板。

2022-10-27 17:20:47 66

原创 冒泡排序,稀疏数组的初级理解

/1. 比较数组中,俩个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置。//内层循环,比较判断俩个数,如果第一个数比第二个数大,则交换位置。当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。冒泡的代码还是相当简单的,俩层循环,外层冒泡轮数,里层依次比较,江湖人人尽皆知。把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模。//2. 每一次比较,都会产生一个最大,或者最小的数字。//遍历二维数组,将非零的值,存放到稀疏数组中。

2022-10-26 14:55:07 51

原创 Java数组的进阶使用

For-Each 循环。

2022-10-22 19:36:39 287

原创 Java基本数组

数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空降,其中的每个元素也被按照实例变量同样的方式被隐式初始化。数组长度的确定的,不可变的。其长度是确定的,数组一旦被创建,它的大小就是不可以改变的。//变量的类型 变量的名字 = 变量的值;数组的元素是通过索引访问的,数组索引从0开始。//3.给数组元素中赋值。

2022-10-21 17:36:42 49

原创 JAVA实现递归

利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型的复杂的问题层层转化为一个与原理相似的规模较小的问题来求解,递归只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码里量。递归的能力在于用有限的语句来定义对象的无限集合。递归头:什么时候不调用自身方法,如果没有头,将陷入死循环。递归就是:A方法调用A方法!A方法调用B方法,我们很容易理解!递归体:什么时候需要调用自身方法。

2022-10-20 07:48:54 791

原创 数据库应用系统开发方法考点2及真题

描述:面向将要开发的DBAS,通过了解用户实际需求,明确该系统需要实现的目标和人物,并从数据管理和数据处理的角度,确定系统中数据库软件的功能,性能范围系统规划与定义设计内容有以下几种。

2022-09-03 22:17:40 169

原创 数据库应用系统开发考点及真题

数据库系统(DBS):主要提供应用数据的组织,存储,维护,访问等数据管理功能。数据库应用系统(DBAS)为用户提供数据管理功能根据具体应用领域业务规则,通过数据库应用程序,实现了更为复杂的数据处理功能。

2022-09-03 15:59:09 169

原创 Java Break,Continue,goto关键字使用

Java Break,Continue,goto关键字使用

2022-08-19 22:21:37 155

原创 Java for循环和增强for循环

Java for循环和增强for循环

2022-08-19 19:53:13 6271

原创 Java do...while循环

do...while 循环

2022-08-18 22:03:14 107

原创 JAVA Switch多选择结构

Switch多选择结构

2022-08-17 19:12:19 105

原创 Java if选择结构

Java if选择结构

2022-08-16 18:34:15 114

原创 Java Scanner用户交互

Scanner用户交互

2022-08-16 17:20:48 125

原创 Java包机制

Java包机制

2022-08-15 14:27:20 57

原创 Java运算符

Java运算符算术运算符,逻辑运算符,位运算符,三元运算符,自减自增。。。

2022-08-15 14:05:33 36

原创 Java中变量,常量,作用域

Java中变量,常量,作用域

2022-08-14 19:30:40 41

原创 Java数据类型转换及注意点

Java类型转换

2022-08-13 20:44:15 69

原创 Java标识符注意点

Java标识符注意点

2022-08-11 20:46:59 125

原创 HelloWord

HelloWord

2022-08-11 18:38:43 89

原创 HTML部分基础

HTML

2022-06-10 01:01:12 34

原创 计算机简单上手操作

打开CMD的方式 开始+系统+命令提示符 Win键+R 输入cmd打开控制台(推荐使用) 在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令提示符 资源管理器的地址栏前面加上cmd路径 管理员方式运行:选择以管理员方式运行常用的Dos命令#盘符切换#查看当前目录下的所有文件 dir#切换目录 cd change directory#返回上一阶 cd ..#清理屏幕 cls#退出终端 exit#查看电脑的ip ipconfi.

2022-05-18 22:22:50 118

空空如也

空空如也

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

TA关注的人

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