![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java SE
学习javaSE中的一些基本知识
肆月拾忆.Allen
这个作者很懒,什么都没留下…
展开
-
Ajax请求和Json格式
Ajax请求和Json格式Ajax请求1.使用JavaScript的AJax 的get()请求1. 概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML 1. 异步和同步:客户端和服务器端相互通信的基础上 * 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。 * 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。 Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的原创 2020-07-29 15:20:02 · 409 阅读 · 0 评论 -
聊天室项目
聊天室项目功能包含:私聊、公聊、查询在线列表、下线、发送文件、在线/隐身、查询聊天记录等等。下载链接点击这里原创 2020-06-29 15:31:50 · 223 阅读 · 0 评论 -
JDK1.8之Stream流
JDK1.8之Stream流要使用Stream流得分三个阶段1.获取Stream流2.进行中间环节的操作。3.终止操作。获取Stream流获取stream流有三种方式1.通过集合中的方法stream()来获取一个Stream流2.通过Arrays.stream(arr)来获取一个流;3.通过Stream 这个类中的静态方法of()来获取一个流4.获取无限流的方式也有两种:(1)Stream.iterate()来获取无限流(2)Stream.generate()方法来获取无限流pub原创 2020-06-23 10:33:39 · 165 阅读 · 0 评论 -
JDK1.8之Lambda表达式,方法引用和构造引用
JDK1.8之Lambda表达式,方法引用及构造引用Lambda表达式Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。举例:在对集合中的数据进行排序时,需要一个Comparator接口的匿名内部类,这里,匿名内部类就可以用Lambda表达式进行简写public class MyTest1 { public static void main(String[] args) { Arr原创 2020-06-22 20:25:45 · 314 阅读 · 0 评论 -
JDK1.8日期时间API
JDK1.8日期时间APILocalDate、 LocalTime、 LocalDateTime类的实例是不可变的对象,不能创建对象,但是可以使用类名调用其中的静态方法,它们分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。注: ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法这些新增的日期时间API都在 java.time包下LocalDateTime类方式1通过静态方法 now();例如:LocalDateTime ldt = LocalDateTi原创 2020-06-17 09:17:25 · 257 阅读 · 0 评论 -
反射、动态代理、枚举
反射、动态代理、枚举类的加载机制1.类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载就是指将.class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。连接验证 : 是否有正确的内部结构,并和其他类协调一致准备 : 负责为类的静态成员分配内存,并设置默认初始化值解析: 把类中的符号引用转换为直接引用初始化: 就是我们以前讲过的初始化步骤2:类的加载时机创建类的实原创 2020-06-16 14:53:01 · 142 阅读 · 0 评论 -
Java中的网络编程(UDP通信、TCP通信、Socket编程)
Java中的网络编程(UDP通信、TCP通信、Socket编程)1.网络模型概述计算机网络之间以何种规则进行通信,就是网络模型研究问题。网络模型一般是指OSI七层参考模型TCP/IP四层参考模型:主机至网络层(物理层 , 数据链路层) , 网际层 , 传输层 , 应用层(应用层 , 表示层 , 会话层)上图给出了OSI七层参考模型和TCP/IP四层参考模型的对比图下面分别介绍OSI的七层参考模型中每一层的作用及用途:1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传原创 2020-06-15 16:48:48 · 499 阅读 · 0 评论 -
网络编程基础知识点总结
网络编程基础知识点总结一. 概述本文是网络编程系列的第一篇文章,所以不讲代码,主要是网络编程的一些基础知识,下面的这些知识点主要是对java网络编程这本书的归纳与整理。有兴趣的同学可以看看。我们知道计算机之间的通信要经过一系列复杂的过程,计算机之间通过传输介质、通信设施和网络通信协议互联,实现资源共享和数据传输。而我们的网络编程就是使用程序使互联网的两个(或多个)计算机之间进行数据传输。当然java语言,为了实现两个计算机之间的数据传输,提供了一系列的接口,使得开发人员可以方便的实现。二 、网络体系原创 2020-06-13 10:38:45 · 3310 阅读 · 0 评论 -
java中的各种锁详细介绍
java中的各种锁详细介绍转自:https://blog.csdn.net/axiaoboge/article/details/84335452Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的.转载 2020-06-11 21:21:16 · 107 阅读 · 0 评论 -
多线程常见面试题(二)
多线程常见面试题(二)8.什么是竞争条件?你怎样发现和解决竞争?竞争条件:在java多线程中,当两个或以上的线程对同一个数据进行操作的时候,可能会产生“竞争条件”的现象。这种现象产生的根本原因是因为多个线程在对同一个数据进行操作,此时对该数据的操作是非“原子化”的,可能前一个线程对数据的操作还没有结束,后一个线程又开始对同样的数据开始进行操作,这就可能会造成数据结果的变化未知。package com.huojg.test;public class TestThread {原创 2020-06-11 18:48:16 · 1223 阅读 · 0 评论 -
Java并发编程之CyclicBarrier详解
简介栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇集。当线程到达栅栏位置时将调用await方法,这个方法将阻塞直到所有线程都到达栅栏位置。如果所有线程都到达栅栏位置,那么栅栏将打开,此时所有的线程都将被释放,而栅栏将被重置以便下次使用。...转载 2020-06-11 10:46:30 · 157 阅读 · 0 评论 -
多线程常见面试题(一)
多线程常见面试题(一)1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用加入线程。thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。加入线程可以把并发执行的多个线程转换为串行执行比如在线程T2中调用了线程T1的Join()方法,直到线程T1执行完成后,线程T2才会执行。线程T2和线程T3 的执行同线程T1和T2.t.join(); //调用join方法,等待线程t执行完毕t.join(1000); //原创 2020-06-10 20:51:13 · 351 阅读 · 0 评论 -
第二次测试总结---Java知识点总结
第二次测试总结—Java知识点总结1.垃圾回收器GC是一种典型的守护线程 守护线程的原理:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一 个非守护线程结束时,守护线程随着JVM一同结束工作。 2.Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeE原创 2020-06-10 10:25:23 · 151 阅读 · 0 评论 -
模版设计模式、装饰模式、观察者模式
模版设计模式、装饰模式、观察者模式模版设计模式模版设计模式概述模版方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现优点和缺点a:优点:使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求b:缺点:如果算法骨架有修改的话,则需要修改抽象类public abstract class CalaClass { public void calc(){ //算法骨架 long start= System.cur原创 2020-06-08 14:23:11 · 122 阅读 · 0 评论 -
作业题:使用多个线程复制同一份文件,每个线程仅复制文件的一部分
作业题:使用多个线程复制同一份文件,每个线程仅复制文件的一部分思路:1.首先获取文件的长度,设置线程数,并计算出每个线程平均应该复制的文件大小2.计算出每个线程复制的起始位置和终止位置long start = pj * i;long end = (i + 1) * pj - 1;3.当文件的大小不能够平均分配时,此时应该再补一个线程,计算出这个线程复制剩余部分文件的起始位置和终止位置long start = threadNum * pj;long end = totalLength;4原创 2020-06-08 14:02:43 · 248 阅读 · 0 评论 -
线程间的等待唤醒机制、内存可见性问题volatile、CAS 算法、线程的状态、线程池、定时器、设计模式、简单工厂模式、单例模式之懒汉式、单例模式之饿汉式、单例模式的Java代码体现Runtime类
线程间等待唤醒机制、内存可见性问题volatile、CAS 算法、线程的状态、线程池、定时器、设计模式、简单工厂模式、工厂模式、单例模式之懒汉式及饿汉式、单例模式的Java代码体现Runtime类线程间的等待唤醒机制案例:写入学生对象,读取学生对象分别创建生产者线程和消费者线程,创建一个学生对象,接着读取一个学生对象,保证学生对象的信息不回发生错乱,使用同步代码块来保证,保证写入一个读取一个,使用等待唤醒机制来实现public class Student { public String na原创 2020-06-07 13:32:40 · 133 阅读 · 0 评论 -
线程安全问题、同步代码块、同步代码块的锁问题以及同步方法的应用和锁问题、Lock锁、死锁问题
线程安全问题、同步代码块、同步代码块的锁问题以及同步方法的应用和锁问题、Lock锁、死锁问题线程安全问题 前面讲解过电影院售票程序,从表面上看不出什么问题,但是在真实生活中, 售票时网络是不能实时传输的,总是存在延迟的情况,所以,在出售一张票以后,需要一点时间的延迟 每次卖票延迟100毫秒,此时就有可能出现同票或者负票的情况出现线程安全问题的前提条件: 是否是多线程环境 是否有共享数据 是否有多条语句操作共享数据同步代码块解决线程安全问题格式:synchron原创 2020-06-07 12:45:51 · 1035 阅读 · 0 评论 -
线程、进程、多线程、多进程、并发、并行、多进程的实现方式三种(Thread、Runnable、Callable)、休眠线程、加入线程、礼让线程、守护线程、中断线程、两个卖电影票案例
线程、进程、多线程、多进程、并发、并行、多进程的实现方式三种(Thread、Runnable、Callable)、休眠线程、加入线程、礼让线程、守护线程、中断线程、继承Thread类的方式卖电影票案例、实现Runnable接口的方式卖电影票进程通过任务管理器我们就可以看到进程的存在。进程的概念:进程就是正在运行的程序,是系统进行资源分配和调用的独立单位 。每一个进程都有它自己的内存空间和系统资源。多进程因为CPU在某个时间点上只能做一件事情,计算机是在游戏进程和音乐进程间做着频繁切换,且切换速度很原创 2020-06-02 12:01:01 · 478 阅读 · 0 评论 -
作业:将一个music.mp3文件,拆分成多个小文件,再将多个小文件,合并成一个mp3文件
作业:将一个music.mp3文件,拆分成多个小文件,再将多个小文件,合并成一个mp3文件思路:1.首先创建文件夹,文件夹中存放拆分的一个个小文件,使用字节数组,每个字节数组的长度为拆分的小文件的大小,把该mp3文件拆分成一个一个的小文件2.遍历该文件夹下的所有子文件,使用字节输入流,将所有拆分的子文件读入到一个集合中,使用迭代器,序列流迭代集合中的数据3.最后再使用字节输出流,将读取到的数据写入文件public class MyTest4 { public static void ma原创 2020-05-31 21:11:50 · 628 阅读 · 0 评论 -
作业:我有一个文本文件,我知道数据是键值对形式的,但是不知道内容是什么。请写一个程序判断是否有“lisi”这样的键存在,如果有就改变其值为100
作业:我有一个文本文件,我知道数据是键值对形式的,但是不知道内容是什么。请写一个程序判断是否有“lisi”这样的键存在,如果有就改变其值为100思路:1.首先读取文本文件中的内容,加载到Properties属性集合中,使用load方法2.遍历属性集合,判断有无lisi键,如果有的话,将其值改为1003.将Properties属性集合中的内容写入文件中,使用store方法public class MyTest4 { public static void main(String[] arg原创 2020-05-31 21:11:20 · 820 阅读 · 0 评论 -
其他流(数据输入输出流、内存操作流、打印流、序列化流、随机访问流Properties)
其他流(数据输入输出流、内存操作流、打印流、序列化流、随机访问流Properties)数据输入输出流数据输入流: DataInputStream数据输出流: DataOutputStreampublic class MyTest1 { public static void main(String[] args) throws IOException { writeData(); DataInputStream in = new DataInputStre原创 2020-05-31 20:34:26 · 135 阅读 · 0 评论 -
将两个音乐文件合并为一个音乐文件、将两个文本文件合并为一个文本文件、断点下载功能
将两个音乐文件合并为一个音乐文件、将两个文本文件合并为一个文本文件、将多个文本文件合并为同一个文本文件、断点下载功能将两个音乐文件合并为一个音乐文件public class MyTest1 { public static void main(String[] args) throws IOException { //把多首歌合并成一首歌 FileInputStream fileInputStream = new FileInputStream("许巍 - 曾经的原创 2020-05-31 17:14:20 · 158 阅读 · 0 评论 -
案例:删除单级文件夹、删除多级文件夹、复制单级文件夹、复制多级文件夹、把ArrayList集合中的字符串数据存储到文本文件,从文本文件中读取数据(每一行为一个字符串数据) 到集合中并遍历集合
案例:删除单级文件夹、删除多级文件夹、复制单级文件夹、复制多级文件夹、把ArrayList集合中的字符串数据存储到文本文件,从文本文件中读取数据(每一行为一个字符串数据) 到集合中并遍历集合删除单级文件夹public class MyTest1 { public static void main(String[] args) { //删除单级文件夹 File file = new File("C:\\Users\\Desktop\\demo");原创 2020-05-30 11:48:13 · 302 阅读 · 0 评论 -
IO字符流、String类中的编解码问题、转换流
IO字符流、String类中的编解码问题、转换流字符流出现的原因及编码表概述和常见编码表String类中的编码和解码问题编码: 就是把字符串转换成字节数组public byte[] getBytes();使用平台的默认字符集将此 String编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 public byte[] getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。原创 2020-05-30 10:47:03 · 134 阅读 · 0 评论 -
IO字节流
IO字节流IO概述及其分类IO流概述IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的对象都在IO包中 java.ioIO流分类a:按照数据流向 站在内存角度输入流 读入数据输出流 写出数据b:按照数据类型字节流 可以读写任何类型的文件 比如音频 视频 文本文件字符流 只能读写文本文件IO流基类概述 a:字节流的抽象基类: InputStream ,OutputStream。 b:字符流的抽象基类: Reader原创 2020-05-29 03:40:43 · 96 阅读 · 0 评论 -
File文件类
File文件类File类的概述文件和目录路径名的抽象表示形式这个File类可以用来表示文件,也可以用来表示目录构造方法 File(String pathname):根据一个路径得到File对象 File(String parent, String child):根据一个目录和一个子文件/目录得到File对象File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象public class MyTest { pu原创 2020-05-29 03:14:42 · 218 阅读 · 0 评论 -
IO概述、异常
IO概述、异常IO概述1.IO流概述 IO流用来处理设备之间的数据传输 上传文件和下载文件2.讲解IO流之前要先讲解异常和File类 因为File表示的是IO流将来要操作的文件,所以我们需要学习File类。 而常见操作文件无非就是上传文件和下载文件,在这个操作的过程中可能出现问题, 出现问题后,我们需要对对应的代码进行处理。所以我们需要学习异常。异常异常的概述: 异常就是Java程序在运行过程中出现的错误。异常的分类: 举例:张三骑自行车旅游异常的继承体系异常的基类:原创 2020-05-29 02:44:32 · 902 阅读 · 0 评论 -
Map集合、HashMap集合、LinkedHashMap集合、HashTable集合、TreeMap集合、Collections类
Map集合、HashMap集合、LinkedHashMap集合、HashTable集合、TreeMap集合、Collections类Map集合Map接口概述:键值映射: 键---------值* 学号--------姓名* s001-------张三* s002-------李四* s003-------王五 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值Map接口和Collection接口的不同Map是双列的,Colle原创 2020-05-20 18:38:18 · 200 阅读 · 0 评论 -
斗地主集合版
斗地主集合版实现斗地主的发牌,洗牌,看牌思路:1.生成一副牌,放在集合(牌盒)2.洗牌3.三个人斗地主,留三张底牌 发牌4.看牌 ,看谁拿了一副好牌5.对发好的牌进行排序排序版:创建索引结合,在创建一个map集合,map集合中存贮的是索引和牌盒子;发的是索引,根据索引在map中找相对应的值;public class 斗地主HashMap集合 { public static void main(String[] args) { //创建牌盒子 Has原创 2020-05-20 17:51:59 · 131 阅读 · 0 评论 -
Set集合---- HashSet集合、LinedHashSet集合、TreeSet集合
Set集合---- HashSet集合、LinedHashSet集合、TreeSet集合Set集合1.Set集合:无序(存储和取出的顺序)和唯一Set接口:的三个子类 HashSet,LinkedHashSet, TreeSetHashSet:底层数据结构是哈希表,元素无序(存的顺序和取的顺序不一致),且不允许重复元素,可以存储null元素,线程不安全,效率高!package org.westos.demo1;import java.util.HashSet;public class M原创 2020-05-20 17:20:17 · 162 阅读 · 0 评论 -
HashMap底层的哈希表原理分析,HashMap原码分析
HashMap底层的哈希表原理分析,HashMap原码分析HashMap在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理位置冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。JDK1.8之前的HashMap的数据结构如图所示,采用的是数组加单链表的结构,当计算出原创 2020-05-19 14:26:48 · 256 阅读 · 0 评论 -
ArrayList、Vector、LinkedList、泛型机制、可变参数、增强for循环
ArrayList、Vector、LinkedList、泛型机制、可变参数、增强for循环ArrayList集合1.ArrayList集合: List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素 ArrayList:底层使用使用的是数组。查询快,增删慢 注意,此实现不是同步的 线程不安全 。 效率高 元素有序的(存取顺序一致),元素编有索引 允许元素重复2.ArrayList集合特有的遍历方式: void forEach(Consu原创 2020-05-14 11:22:46 · 139 阅读 · 0 评论 -
正则表达式、常用类(Pattern类、Matcher类、Math类、System类、Random类、BigDecimal类、Date类、SimpleDateFormat类、Calendar类)
JAVA学习第十六天—正则表达式、常用类(Pattern类、Matcher类、Math类、System类、Random类、BigDecimal类、Date类、SimpleDateFormat类、Calendar类)正则表达式1.正则表达式: 正确规则的表达式 规则java给我们定的 是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。...原创 2020-05-07 16:17:39 · 255 阅读 · 0 评论 -
Java学习第十五天---StringBuffer、StringBulider、数组排序(冒泡排序、选择排序、快速排序、插入排序、希尔排序)、Arrays、基本数据类型包装类
Java学习第十五天—StringBuffer、StringBulider、数组排序(冒泡排序、选择排序、快速排序、直接插入排序、希尔排序)、Arrays、基本数据类型包装类StringBuffer1.StringBuffer简述: 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。 而StringBuffer就可以解决这个问题 线程安全的可变...原创 2020-05-06 13:42:19 · 193 阅读 · 0 评论 -
Java学习第十四天----Scanner、String类
Java学习第十四天----Scanner、String类1.Scanner概述:JDK5以后用于获取用户的键盘输入Scanner 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器 Scanner的构造方法原理 Scanner(InputStream source) 构造一个新的Scanner 它生成的值是从指定的输入流扫描的 System类下有一个静态的字段: p...原创 2020-04-30 19:12:54 · 144 阅读 · 0 评论 -
Java学习第十三天----局部内部类,匿名内部类,Object类
Java学习第十三天----局部内部类,匿名内部类,Object类1.局部内部类:定义在方法中的类 局部内部类不能在外界直接创建对象 A: 可以直接访问外部类的成员 B: 可以在方法中创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能 案例: public class MyTest { public static void main(String[] args){...原创 2020-04-27 17:46:04 · 123 阅读 · 0 评论 -
Java学习第十二天----方法参数类型以及返回值类型问题、链式编程、package包、权限修饰符、内部类、成员内部类
Java学习第十二天----方法参数类型以及返回值类型问题、链式编程、package包、权限修饰符、内部类、成员内部类1.方法参数类型:(1)类名作为形式参数:public class MyTest { public static void main(String[] args) { //参数传递 //当看到一个方法的形参,要一个类 类型 就传递一个该类...原创 2020-04-24 13:27:52 · 121 阅读 · 0 评论 -
Java学习第十一天---------抽象类,抽象类的成员特点,接口
Java学习第十一天---------抽象类,抽象类的成员特点,接口1.抽象类:在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。 抽象类的特点: a:抽象类和抽象方法必须用abstract关键字修饰 抽象类格式: abstract class 类名 {} 抽象方法格式: public abstract void eat(); ...原创 2020-04-24 12:33:38 · 164 阅读 · 0 评论 -
Java学习第十天---继承、方法重写和方法重载的区别、final关键字、多态、抽象类
Java学习第十天—继承、方法重写和方法重载的区别、final关键字、多态、抽象类1.继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。继承的定义格式: 通过extends关键字可以实现类与类的继承 class 子类名 extends 父类名 {} 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生...原创 2020-04-20 10:25:30 · 142 阅读 · 0 评论 -
Java学习第九天-----static关键字、静态变量和成员变量的区别、Math类的随机数功能、代码块
Java学习第九天-----static关键字、静态变量和成员变量的区别、Math类的随机数功能、代码块1.static关键字: a:随着类的加载而加载 b:所修饰的成员优先于对象存在 c:被类的所有对象共享 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。 d:可以通过类名调用 其实它本身也可以通过对象名调用。 推荐使用类名调用。 静态修饰的内容一般我...原创 2020-04-16 13:55:55 · 106 阅读 · 0 评论