自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java-集合类详解

好处:1:可以动态保存任意多个对象,使用比较方便。2:提供一系列方便的操作对象的方法:add,remove,set,get。3:使用集合添加,删除新的元素更简洁快捷。

2023-04-24 10:42:19 348

原创 Java-枚举

/自定义枚举实现//1:将构造器私有化,防止被new出来//2:去掉set方法,防止该类属性被修改//3:在该类内部创建固定的对象//4:可以加入final关键字//对外暴露对象:public final static//描述//定义四个对象:public static final Season1 SPRING=new Season1("春天","暖");public static final Season1 SUMMER=new Season1("夏天","热");

2023-04-24 10:42:10 250

原创 Java-IO流详解

1:节点流:节点流可以从一个特定的数据源读写数据,如FileReader,FileWriter。2:处理流:也叫包装流,是“连接”在已经存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,如BufferedReader,BufferedWriter。

2023-04-24 10:42:00 466

原创 Java-异常处理

基本概念:当程序中出现了某些“错误”,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。步骤:1:定义类:自定义异常类名,继承Exception或者。2:如果继承Exception是属于编译异常。3:如果继承,属于运行异常,一般来说,继承。int age=8;}else{");//自定义异常super(msg);

2023-04-24 07:10:53 214

原创 多线程-线程池的运用

我们日常工作中常见的有数据库连接池、线程池、对象池等,它们的特点都是将 “昂贵的”、“费时的” 的资源维护在一个特定的 “池子” 中,规定其最小连接数、最大连接数、阻塞队列等配置,方便进行统一管理和复用,通常还会附带一些探活机制、强制回收、监控一类的配套功能。先启动若干数量的线程,并让这些线程都处于睡眠状态,当需要一个开辟一个线程去做具体的工作时,就会唤醒线程池中的某一个睡眠线程,让它去做具体工作,当工作完成后,线程又处于睡眠状态,而不是将线程销毁。所以我们最好自己手动创建线程池。

2023-04-23 01:00:00 187

原创 生产者消费者问题:Synchronized,Lock,Condition实现

2:虚假唤醒:虚假唤醒是一种现象,它只会出现在多线程环境中,指的是在多线程环境下,多个线程等待在同一个条件 上,等到条件满足时,所有等待的线程都被唤醒,但由于多个线程执行的顺序不同,后面竞争到锁的线程在获得时 间片时。将if改为while,等待应总是发生在循环中,条件不满足时会让线程继续等待。1:问题:在没有被通知、中断或超时的情况下,线程还可以唤醒一个所谓的。,这样还是有机率,生产者唤醒生产者,消费者唤醒消费者,产生虚假唤醒。

2023-04-22 01:00:00 154

原创 线程同步-Synchronized和Lock

5:Synchronized是可重入锁,不可以中断,非公平锁;Lock是可重入锁,可以判断锁,非公平锁(可以自己设置为公平锁)。3:Synchronized会自动释放锁,Lock需要手动开启和释放锁,如果没有释放就会死锁。4:获得Synchronized锁的线程如果阻塞,其他线程便会一直等待;2:Synchronized无法判断获取锁的状态,Lock可以判断是否获取到了锁。1:Synchronized是内置的Java关键字,Lock是一个Java接口。公平锁:先来先使用原则。非公平锁:没有排队。

2023-04-21 09:35:34 73

原创 多线程经典问题:消费者与生产者问题Java代码(线程通信)

1:假设仓库里只能存一件产品,生产者(Producer)将产品生产出来放入仓库,消费者(Consumer)将产品从仓库取出消费。2:管程法里生产者和消费者可以一次性生产或者消费多个产品;2:如果仓库里没有产品,生产者将产品放入仓库;如果有,停止生产并等待,直到仓库中的产品被消费者拿完为止。3:如果仓库里有产品,消费者可以取走消费;3:消费者需要去缓冲区(同步互斥)拿数据,生产需要向缓冲区放入数据,不能同时放入和拿取。1:管程法利用容器实现,信号灯法利用标志位实现。2:消费者负责处理数据(V)

2023-04-08 14:18:37 191

原创 Java多线程-同步基础

关键字synchronized:对于静态方法来说加上synchronized关键字,这个方法就是同步的 ​ 1:synchronized关键字不能被继承。定义:线程同步就是一种等待机制,多个需要同时访问此对象的线程(并发)进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个再使用。2:请求与保持条件:一个进程因资源获取而堵塞时,对于已拥有的资源保持不放。弊端:方法里需要修改的内容才需要锁,锁的太多,浪费资源。1:互斥条件:一个资源只能一次性被一个进程使用。

2023-04-07 09:03:00 72

原创 Java多线程-线程状态及基本方法的使用

②:守护(后台)线程:虚拟机不用等待守护线程执行完毕。后台线程有一个非常明显的特征:如果所有前台线程都死亡,它就会自动死亡。join()方法:使异步执行的线程变成同步执行。使用join方法后,直到这个线程退出(执行完毕),程序才会往下执行,可以理解位插队,少用。TIEMD_WAITING:正在等待另一个线程执行动作到达指定等待时间的线程。WAITING:正在等待另一个线程执行特定动作的线程。RUNNABLE:在Java虚拟机中执行的线程。①:用户线程:虚拟机必须确保用户线程执行完毕。

2023-04-06 10:43:37 107

原创 Java多线程-基础概述及基本建立方法

Runnable接口:标识一个Java类是否可作为线程类,此接口只有一个抽象方法run()。所以一个线程类的唯一标识就是这个类是否实现了Runnable接口的run()方法。2:建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法,最后通过Thread类的start()方法建立。进程与进程之间不共享内存,而一个进程中的线程可以共享系统派给这个进程的内存空间。Callable接口是可以让线程返回值的,和线程池一起使用,常规创建线程的方法是实现Runnable接口。

2023-04-05 10:07:08 81

原创 Java 反射-基础

使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么,并且它能满足我们的要求。那些有Class对象:class,interface,[],enum,annotation,primitive type(基本数据类型),void。例如:Object-C,C#,JavaScript,PHP,Python。反射方法:1:找到实例化对象。正常方法:1:引入需要的"包类"名称。②:类的构造器的访问权限需要足够。①:类必须有一个无参数的构造器。优点:可以实现动态创建对象和编译,体现出很大的灵活性。

2023-04-04 09:03:22 80

原创 Java 注解-基础

可以在package,class,method,field等上门,相当于添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。格式:public @interface 注释名{自定义内容}1:以“@注释名”在代码种存在,还可以添加一些参数值。1:不是程序本身,可以对程序作出解释(检查,约束)。JDK5.0引进,不是必需品,是优化品。2:可以被其他程序(比如编译器)读取。使用@interface自定义注解。

2023-04-03 21:57:40 71

原创 Java里简单使用Lambda表达式

②:对于函数式接口,可以通过Iambda表达式来创建该接口的对象。函数式接口(Functional Interface):lambda使用的前提。①:任何接口只包含唯一一个抽象方法,那么它就是一个函数式接口。③:去掉一堆没有意义的代码,只留下核心逻辑代码。①:避免匿名内部类定义过多。②:可以让代码看起来更简洁。

2023-03-24 19:17:44 121

原创 JS 实现form表单登录验证并使用MD5加密

首先,我们要使用JavaScript的一个库:jQuery,jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)。这种方式可以通过CDN来使用,这种方式尽量要保持在电脑有网的情况下,无网络的时候会连接不了。该标签的value,name的作用是:在表单向服务器提交时,提供name名字相应的值。这种方式需要你提前把jQuery下载到项目里,通过项目里的路径来使用。后缀名里有min代表的是压缩版,功能一样,只是把空格,空白给删除了。

2023-03-19 10:17:03 1622

原创 Caused by: java.io.FileNotFoundException: class path resource [datasourc.properties] cannot be opene

异常:Caused by: java.io.FileNotFoundException: class path resource [文件名] cannot be opened because it does not exist解决方法:我们找到Maven项目里的pom.xml文件

2022-12-14 16:54:51 12187

原创 MySQL数据库学习

从管理员cmd页面打开数据库 创建一个用户 数据库的基本操作 数据完整性 完整性约束管理 表的基本操作 判断关键字 聚合函数 多表连接查询 嵌套查询 联合查询 事务 锁 索引 视图 存储过程 函数(与存储过程类似)光标 触发器JAVA访问MySQL数据

2022-11-19 12:14:29 3614

原创 如何在IDEA创建一个Servlet

看了一些博文,很多都是要导入servlet-api.jar,但是我按照流程搞下来还是不能创建servlet,于是我用了以下方法来创建一个servlet(当然能自己手打才是最牛的)。这也算是一种方法了吧(/doge)

2022-10-24 15:48:07 3698 3

原创 基数排序(Java代码实现)

根据各个数中,各位上的值,通过对待排序数组进行若干次“存入数”和“取出数”来实现排序。n为一次“存入”,“取出”的时间复杂度,k(最高位)为要进行多少次“存入”,“取出”。简单来说就是对每个数的每个位上的数进行比较并排序,执行最高位数次存入,取出。是典型的分配类排序(还包括:计数排序,桶排序等)。n为排序数的个数,k为最高位。时间复杂度可以达到O(n)。

2022-10-22 18:41:09 735 1

原创 选择排序的两种算法(Java代码实现)

选择排序:1.简单选择排序。2.堆排序。

2022-10-18 21:37:21 3386

原创 归并排序(Java代码实现)

将两个或两个以上的有序表合并成一个有序表的过程。常用的归并为2-路归并,就是将两个有序表合为一个有序表。可以看出,归并排序分为分解和合并两个步骤。分解就是将原数组分解成只有一个数的数组。合并就是将相邻两个数组进行排序合并。可适用于大多数情况的排序。

2022-10-16 17:21:44 1588 3

原创 交换排序的两种算法(Java代码实现)

交换排序:1.冒泡排序。2.快速排序。

2022-10-10 17:40:13 1078

原创 插入排序的三种算法(Java代码实现)

插入排序:1:直接插入排序 2:折半插入排序 3:希尔排序

2022-10-08 17:26:25 7115

原创 Java Math类里的常用方法

Math类里的常用方法。

2022-10-04 21:26:01 686

原创 Java break outer和continue outer的用法

不同的continue可以通过使用不同的字符来跳转到相应的循环,如continue outer,continue kill等,break同理。但是这里要提醒大家,outer:必须是写在一个循环的前面,如下面代码所示就是错误的。kill:System.out.println("1.输入88,退出程序\n2.输入66,计算下一个年薪");}}

2022-10-03 21:17:50 1332 1

JUC并发编程,狂神说-详细笔记,含md文件

主要记录了狂神说Java里JUC那一门课的笔记,主要针对学了狂神的JUC课程的人用来复习的,我记录得还是比较详细,也自己画了不少的图,还根据弹幕大神做了一些修改,对于复习来说应该不成问题,总共有一万多字。

2023-04-07

空空如也

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

TA关注的人

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