java
ldh1222
这个作者很懒,什么都没留下…
展开
-
手写单链表
首先创建Node类包括数据和指针package list2;/** * 单链表的一个节点 */public class Node { Object data; Node next; public Node() { } public Node(Object data, Node next) { this.data = data; this.next = next; } public Node(原创 2022-02-04 21:55:49 · 272 阅读 · 0 评论 -
手写ArrayList代码
对ArrayList的add功能进行手写@Override public void add(Object e) { //如果数组已满需要先扩容 if (size == elementData.length) { grow(); } //添加元素到最后 elementData[size]=e; //size++ size++; } private原创 2022-02-04 16:38:51 · 231 阅读 · 0 评论 -
使用socket实现网络TCP连接(多线程)
套接字Socket我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。 套接字就像传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或接收远程发来数据;而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次的工作。 Socket实际是传输层供给应用层的编程接口。传输层则在网络层的基础上提供进程到进程问的原创 2021-12-28 20:24:43 · 2381 阅读 · 0 评论 -
运行程序时出现“NotSerializableException”解决方法
是由于创建的类使用输入输出流或者进行网络通信没有使用序列化接口什么时候需要序列化?将对象写入硬盘或者传到网络上去时需要序列化。实现序列化接口就可以改变:Serializablepublic class User implements Serializable...原创 2021-12-28 17:51:23 · 1710 阅读 · 0 评论 -
工作窃取算法
一个大任务拆分成多个小任务,为了减少线程间的竞争,把这些子任务分别放到不同的队列中,并且每个队列都有单独的线程来执行队列里的任务,线程和队列一一对应。但是会出现这样一种情况:A线程处理完了自己队列的任务,B线程的队列里还有很多任务要处理。A是一个很热情的线程,想过去帮忙,但是如果两个线程访问同一个队列,会产生竞争,所以A想了一个办法,从双端队列的尾部拿任务执行。而B线程永远是从双端队列的头部拿任务执行。注意:线程池中的每个线程都有自己的工作队列(PS,这一点和ThreadPoolExe.原创 2021-12-26 17:40:56 · 377 阅读 · 0 评论 -
线程池ThreadPoolExecutor
线程池ThreadPoolExecutor创建好多个线程,放入线程池中,使用时直接获取引用,不使用时放回池中。可以避免频繁创建销毁、实现重复利用 线程池中只有1个线程,省去了创建和关闭的时间:newSingleExecutor(); ExecutorService pool1 = Executors.newSingleThreadExecutor(); 线程池中有固定数量的线程:newFixedThreadPool ExecutorService pool2 = Executors原创 2021-12-26 11:48:25 · 237 阅读 · 0 评论 -
java中Condion
Condition是在Java1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition1的await()、signal()这种方式实现线程间协作更加安全和高效。它的更强大的地方在于:能够更加精细的控制多线程的休眠与唤醒。对于同一个锁,我们可以创建多个Condition,在不同的情况下使用不同的Condition一个Condition包含一个等待队列。一个Lock可以产生多个Condit原创 2021-12-05 21:53:30 · 429 阅读 · 0 评论 -
多线程中sleep和Wait的区别
1.sleep()会让线程进入阻塞状态,但是不会释放同步监视器wait()会让线程进入阻塞状态,并且释放同步监视器2.进入的阻塞状态是不同的队列3.wait()只能在同步控制方法或者同步控制块中使用,而sleep()可以在任何地方使用...原创 2021-11-25 11:41:11 · 126 阅读 · 0 评论 -
Java中线程通信
线程通信是通过Object类中的方法来实现的通过wait() notify() notifyAll() 来实现 方法名 作 用 final void wait() 表示线程一直等待,直到其它线程通知 void wait(long timeout) 线程等待指定毫秒参数的时间 final void wait(long timeout,int nanos)...原创 2021-11-25 10:29:55 · 306 阅读 · 0 评论 -
Java线程基本同步方式
应用场景:多用户对同一银行账户进行取款取款线程类,每个用户对应一个线程对象多个用户共享同一个银行账户,使用Runnable解决同步代码块同步方法Lock锁原创 2021-11-24 16:54:01 · 318 阅读 · 0 评论 -
线程创建和控制
线程创建1.继承Thread类* 定义一个乌龟线程类** 1.如何定义一个线程类* 继承Thread 重写run方法** 2.如何创建线程的对象* Thread thread = new TortoiseThread();* 3.如何启动线程* 是start而不是run thread.start();//启动一个新的线程* 4.启动main方法 自动创建main线程* 5.Thread类的常用方法* run()* thread.start();//进入cpu声明周原创 2021-11-22 16:29:33 · 298 阅读 · 0 评论 -
【IO流】复制文件夹
创建文件夹dir.mkdirs();//创建文件夹复制文件夹问题1:使用字节流还是字符流 使用字节流 可能有图片、视频、音频.....等二进制文件问题2:如何提高复制速度 BufferedInputStream和BufferedOutputStream byte [] buf = new byte[1024];问题3:涉及的技能点 1.IO流 :文件的复制 2.递归:各级文件夹和文件的递归复制 3.Fil...原创 2021-11-21 18:04:13 · 480 阅读 · 0 评论 -
Java中集合的特点
存储结构 顺序 唯一 查询 添加/删除 ArrayList 顺序表 有序(添加) 不唯一 索引查询效率最高 效率低 LinkedList 双向链表 有序(添加) ...原创 2021-09-13 17:09:06 · 166 阅读 · 0 评论 -
i++与++i区别
如果有表达式 a = i++ 它等价于 a = i ; i = i + 1;如果有表达式 a = ++i 它等价于 i = i + 1; a = i;原创 2021-08-23 20:51:00 · 71 阅读 · 0 评论 -
ArrayList类(是否使用泛型的区别)
创建一个Arraylist对象 ArrayList<Integer> list = new ArrayList<Integer>();向集合中添加元素 list.add(98); list.add(Integer.valueOf(89));//自动装箱 list.add(2, 100);//在索引是2的位置添加元素 list.add(abc);//添加起来他类别的元素也可以使用迭代器输出元素.原创 2021-08-19 17:00:16 · 413 阅读 · 0 评论 -
Java中常用包装类
基本数据类型 包装类 byte Byte boolean Boolean short Short char Character int Integer long Long float Fl...原创 2021-08-19 16:29:26 · 62 阅读 · 0 评论 -
内部比较器(Comparable)和外部比较器(Comparator)、匿名内部类
内部比较器(Comparable)//接口:Comparable//实现方法: compareTo(Object o)/** * 图书类、学生类、新闻类、商品类等是不同的类,可是却都需要有比较的功能,怎么办? * 共同的父类不可以,可以定义一个比较接口Comparable, * 其中定义一个实现比较的方法compareTo(Object obj)。让各个类实现该接口即可。 * Java中就是这么来实现的,下面就来模拟实现一下Comparable接口吧。 */public i.原创 2021-08-18 17:03:55 · 1817 阅读 · 0 评论 -
java中File类
File类用来代表文件和文件夹。主要作用有两个:获取文件或者文件夹的属性; 实现对文件、文件夹的创建和删除。 文件夹:file folder 目录:directoryFile file=new File(e:/javaProjects/readme.txt)//File里面是创建file对象的路径使用File获取文件或者文件夹属性file.getName()//获取文件或者文件夹名称file.length()//获取文件内容长度file.exists()//判断文件或者文件夹是否存在.原创 2021-08-17 18:41:27 · 72 阅读 · 0 评论 -
java中枚举enum
JDK1.5引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。枚举体就是放置一些常量。定义枚举要使用enum关键字。对于性别、季节、星期几等内容,如果定义为字符串类型,是很难限制其取值的。采用枚举可以轻松解决该问题。public enum Season { 春,夏,秋,冬}public class TestSeason { public static void main(String[] args) { Season season = Sea.原创 2021-08-17 11:37:26 · 71 阅读 · 0 评论 -
Java中long数据类型的数据越界
在数字后面加上L例子:Java测试Date常用类时package wrapper;import java.util.Date;public class TestDate { public static void main(String[] args) { //Date date = new Date(0); //1000-1s //太大数会越界,在数后面加上L Date date = new Date(-1000*6原创 2021-08-15 11:40:00 · 401 阅读 · 0 评论 -
出现NullPointerException原因
所谓空指针异常,是因为用空(null)去调用属性或方法。 null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常。 <--主要有以下几种原因: 1、使用了未初始化的变量(虽然已经声明) 2、使用了未初始化的对象(虽然已经声明) 3、使用了关键字或已存在的类名作变量对象方法或类名。 当应用程序试图在需要对象的地方使用 null 时,抛出该异常。 <--这种情况包括: 调用 null对象的实例方法。 访问或修改null对象的字段。 将...转载 2021-08-14 16:32:49 · 19030 阅读 · 1 评论 -
JDK1.8的接口新特征
JDK7及其之前接口的变量都是public final static 全局静态常量,无变化 接口中都是抽象abstract方法,不能有static方法(因为abstract和static、final、private不能共存)JDK1.8及其之后接口中可以添加非抽象方法(static),实现类不能重写,只能通过接口名调用。 如果子类中定义了相同名字的静态方法,那就是完全不同的方法了,直接从属于子类。可以通过子类名直接调用接口中可以添加非抽象方法(default),实现类可以重写,只能通原创 2021-08-11 18:17:32 · 110 阅读 · 0 评论 -
Java接口
Class interface array(并列的概念)接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。2.1 接口声明格式: [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] { 常量定义; 方法定义; } ...原创 2021-08-11 16:55:27 · 115 阅读 · 0 评论 -
Java中final关键字和抽象类
1.1 finalfinal关键字的作用:修饰变量: 被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。final int MAX_SPEED = 120;修饰方法:该方法不可被子类重写。但是可以被重载!final void study(){}修饰类: 修饰的类不能被继承。比如:Math、String、System等。final class A {}public final class Maths { //常量的命名规则全部大写 priv...原创 2021-08-11 16:45:14 · 114 阅读 · 0 评论 -
Java中多态性
多态是指同一个方法调用,由于对象不同,可能会有不同的行为.例子:同样是调用人的”吃饭”的方法,张三是筷子吃,英国人是用叉子吃,印度人使用手吃编译器类型指的是”=”左边的类型,运行时类型值得时”=’右边的类型.当有继承关系时,可能发生编译器类型和运行类型不同的情况,即编译类型是父类类型,运行类型是子类类型.即父类引用指向子类对象.多态的要点:多态是方法的多态,不是属性的多态(多态与属性无关)多态存在的3个必要条件:继承,方法重写,父类引用指向子类对象父类引用指向子类对象后.用该父类原创 2021-08-11 16:30:47 · 151 阅读 · 0 评论 -
Java中重写
重写是对已有方法的重写子类可以重写父类的方法例如:对Object类中toString、equals方法的重写其中override是重写的标志(可以采用Ctrl+o快捷键进行方法的重写)package comprehensiveExercise;public class Animal extends Object{ private int age;//年龄 public Animal() { } public Animal(int age) {原创 2021-08-11 16:11:49 · 89 阅读 · 0 评论 -
Java中Object类
Java中最大的类所有的类都继承Object类里面有很多方法,例如toString、equals原创 2021-08-11 16:03:41 · 50 阅读 · 0 评论 -
重写方法的快捷键(idea)
“Ctrl+o”用鼠标或者“方向键+enter”选中要重写的方法原创 2021-08-11 15:59:06 · 7531 阅读 · 0 评论 -
重载与重写的区别
父类的方法introduce()已经无法满足子类的需求,怎么办?同理,Object类的toString()已经无法满足Anim【示例10】实现方法重写public class Animal {//extends Object protected String color;//颜色 private int age;//年龄 public Animal() { super(); } public Animal(String color, int原创 2021-08-09 18:38:26 · 40 阅读 · 0 评论 -
java中==与equals的区别
基本数据类型使用==比较的是数据* 引用数据类型==比较的地址* 引用数据类的内容的比较要使用equals* 因为object的equals比较的还是引用,无法满足子类的要求,需要子类重写在Animal类中将eaquls进行重写 public boolean equals(Object obj) { //如果obj是null,直接返回false if (obj == null) { return false; }.原创 2021-08-06 22:33:25 · 88 阅读 · 0 评论 -
Java:继承情况下构造方法的调用过程(idea 2019)
说明:构造方法的第一条语句默认室super(),含义是调用父类的无参构造方法构造方法的第一条语句可以是显式的指定为父类的有参数构造方法:super(….)构造方法的第一条语句可以是显式的指定当前类的构造方法:this(….)注意事项:每个类最好要提供无参数的构造方法构造方法的第一条语句可以是通过super或者this调用构造方法,须是第一条语句构造方法中不能够同时使用this和super调用构造方法,并不是说不能够同时使用this和super进行测试:创建Anima类原创 2021-08-06 18:40:53 · 260 阅读 · 0 评论 -
JAVA IDEA生成注释文档
首先对自己创建的类进行注释“ /** */ ”package doc;/** * 学生类 */public class Student { /** * 学号 */ private int sno; /** * 姓名 */ String name; /** * 分数 */ double score; /** * 学习 */ /** *.原创 2021-08-05 18:26:45 · 594 阅读 · 0 评论 -
package 包
为什么使用包文件太多,并且会有同名文件,计算机的硬盘需要不同级别的文件夹来存储;包机制是Java中管理类的重要手段。开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。除了以上考虑外,还和访问权限有密切关系。如何定义包我们通过package实现对类的管理,package的使用有两个要点:包名:域名倒着写即可,再加上模块名,便于内部管理类。 包名一律小写。 com.bjsxt.oop.object cn.com.sina.video.原创 2021-08-05 17:29:05 · 69 阅读 · 0 评论 -
static-静态(java)
1.1 static变量在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!! 一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。) 在static方法中不可直接访问非static的成员public class S原创 2021-08-05 17:18:45 · 156 阅读 · 0 评论 -
java程序调试(idea2019)
在程序中插入断点:点击要加入断点行号的后面小块区域即可加入断点右击点击Debug在下方出现调试的框点击类似“拐弯的箭头”,即运行下一代码点击 “Console"切换到程序台 界面...原创 2021-08-04 17:22:39 · 102 阅读 · 0 评论 -
双色球数生成-java(idea2019)
规则:前六位 红球 1-33 不能重复 升序排列最后一位 蓝球 1-16 可以和前六位重复思想:一、为了生成前6位数不重复:方法1.每生成一位随机数都与数组中现有的随机数进行比较:重复,重新生成;不重复,生成下一个随机数;方法2.先生成6位随机数,进行排序;查找是否有相同的数字:如果有,两个相同的数字一定左右相邻,将相同的两个替换一个,然后在进行排序,进行查找(感觉是递归的过程,此文章并未用递归算法);如果没有,继续相互比较,直到没有相同的数字。二、生成第7位数算法实现:原创 2021-07-29 21:38:48 · 324 阅读 · 0 评论 -
idea 2019 设置注释字体修改
今天使用idea时,发现注释写出来的是字体样式变了可以通过File-->Settings-->font进入字体设置;在font中找到Fallback font 设置字体;原创 2021-07-24 11:06:10 · 598 阅读 · 0 评论 -
java idea 常用快捷键
该文章来源于:https://www.php.cn/java/guide/478876.html更多快捷键设置可以参考其中的内容。idea快捷键有:Ctrl+F、Ctrl+R、Ctrl+Z、Ctrl+Y、Ctrl+X、Ctrl+C、Ctrl+D、Alt+`、Alt+Q、Alt+F1、Alt+F2、Alt+F3、Alt+F7、Shift+F1、Shift+F2等。Ctrl+F:当前文件进行文本查找;Ctrl + R 在当前文件进行文本替换Ctrl + Z 撤销Ctrl + D 复制光标原创 2021-07-22 21:09:02 · 2102 阅读 · 0 评论