Java基础学习总结
文章平均质量分 84
Vaingloryss
日拱一卒,不期速成。
展开
-
Java基础学习总结:网络编程之(四)TCP与UDP的区别及常见的网络协议(转)
TCP和UDP的区别原文:https://blog.csdn.net/li_ning_/article/details/521174631、TCP与UDP基本区别基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较简单 流模式(TCP)与数据报模式(UDP); TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,U...转载 2019-08-17 08:18:06 · 1330 阅读 · 0 评论 -
Java基础学习总结:JUC之(二)原子变量和CAS算法
一、原子变量1、i++的原子性什么是原子性:简单的可以理解为:操作是不可再分割的,比如:int i=0;但是 i++ 却是可以再分的。i++的操作实际上分为三个步骤: "读-改-写",i++可拆分为:int temp1=i;int temp2=temp+1;i=temp2;测试:代码:package basis.stuJUC.stuAto...原创 2019-08-15 14:20:03 · 170 阅读 · 0 评论 -
Java基础学习总结:多线程之(四)多线程通信
一、常规的线程通信参考博文:https://www.cnblogs.com/Wenxu/p/7979023.html1、为什么要线程通信?多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据。 当然如果我们没有使用线程通信来使用多线程共同操...原创 2019-08-11 16:26:53 · 163 阅读 · 0 评论 -
Java基础学习总结:多线程之(三)多线程同步
一、线程同步1、问题线程同步,解决多线程访问临界资源时的数据安全问题 。我们使用多线程实现一个需求:四个窗口共同卖100张票。线程类(票类Ticket_1):package basis.StuThread.Ticket_1;import java.util.concurrent.TimeUnit;public class Ticket_1 implements Run...原创 2019-08-11 14:24:21 · 207 阅读 · 0 评论 -
Java基础学习总结:JUC之(一)volatile关键字
参考博文:https://www.hollischuang.com/archives/2648一、volatile简介Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、以及JUC包等。volatile这个关键字,不仅仅在Java语言中有,在很多语言中都有的,而且其用法和...原创 2019-08-15 10:34:47 · 144 阅读 · 0 评论 -
Java基础学习总结:NIO之(四)IO总结:BIO、NIO、AIO
一、IO 介绍我们通常所说的 BIO 是相对于 NIO 来说的,BIO 也就是 Java 开始之初推出的 IO 操作模块,BIO 是 BlockingIO 的缩写,顾名思义就是阻塞 IO 的意思。1.1 BIO、NIO、AIO的区别BIO 就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻...原创 2019-08-15 09:00:41 · 446 阅读 · 0 评论 -
Java基础学习总结:NIO之(三)NIO网络编程与Selector
一、使用NIO实现阻塞式网络编程java.nio中与网络编程(TCP、UDP)相关的类有 ServerSocketChannel、SocketChannel 和 DatagramChannel。1、ServerSocketChannel和SocketChannel(1)ServerSocketChannel:Java NIO 中的 ServerSocketChannel 是一个...原创 2019-08-15 08:45:24 · 156 阅读 · 0 评论 -
Java基础学习总结:多线程之(二)线程类、接口以及常用方法
在总结(一)中,并没有对Thread类、Runnable和Callable接口做介绍,这里简单补充说明一下。然后,主要介绍了多线程中常用的方法。原创 2019-08-11 10:46:35 · 264 阅读 · 0 评论 -
Java基础学习总结:NIO之(二)Channel
Channel(管道)1、简介基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:JAVA NIO中的一些主要Channel的实现:FileChannel DatagramChannel SocketChannel Server...原创 2019-08-14 20:22:44 · 238 阅读 · 0 评论 -
Java基础学习总结:JUC之(三)同步工具类
在JUC包中为我们提供了一个很有用的同步工具类:CountDownLatch:闭锁 CyclicBarrier:屏障 Semaphore:信号量1、CountDownLatch(闭锁)(1)简介CountDownLatch(闭锁)是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。闭锁可以延迟线程的进度,直到其到达终止状态,闭锁可以用来确保...原创 2019-08-15 15:51:26 · 166 阅读 · 0 评论 -
Java基础学习总结:JUC之(四)并发集合
一、并发集合1、普通集合的并发问题前面学习了List(ArrayList|LinkedList)、Set(HashSet|TreeSet)、Map(HashMap|TreeMap)集合,这些集合只适合在单线程情况下使用。如果在多线程环境中,多个线程操作一个集合会出现问题:代码示例:package basis.stuJUC.stuSyncCollection;import ...原创 2019-08-15 19:22:50 · 503 阅读 · 0 评论 -
Java基础学习总结:多线程之(八)读写锁
读写锁参考博文:https://www.jianshu.com/p/ab836f5e501e一、引言锁(Lock)是java一个很重要的同步组件,Lock提供了跟 synchronized 关键字一样的功能,相比synchronized更加灵活,但是实现也更加复杂。锁的分类:锁主要分为排他锁和读写锁。排他锁:在同一时刻只允许一个线程进行访问,其他线程等待; 读写锁:在同...原创 2019-08-13 19:19:22 · 177 阅读 · 0 评论 -
Java基础学习总结:多线程之(七)定时任务
Java定时任务参考博文:https://www.cnblogs.com/chenssy/p/3788407.html在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK1.3诞生的 Timer 定时任务类来实现。下面就其原理、实例以及Timer缺陷三个方面介绍java Timer定时器。一、简介在java中一个完整定时任务需要由Timer、Ti...原创 2019-08-13 11:12:47 · 284 阅读 · 0 评论 -
Java基础学习总结:网络编程之(一)基础
网络编程基础一、基础知识1.1、计算机网络 所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据、软件等资源。网络分类 :按照地理范围:广域网( Internet) ,城域网( 一个城市、多个城市,长城宽带),局域网(机房)。1.2 网络编程 所谓网络编程(不是网站...原创 2019-08-15 22:02:16 · 148 阅读 · 0 评论 -
Java基础学习总结:网络编程之(三)UDP编程
一、UDP编程1、UDP简介在 TCP/IP 协议的传输层除了一个 TCP 协议之外,还有一个 UDP 协议。UDP (User Datagram Protocol)协议是用户数据报协议的简称,也用于网络数据的传输。虽然 UDP 协议是一种不太可靠的协议,但有时在需要较快地接收数据并且可以忍受较小错误的情况下,UDP 就会表现出更大的优势。UDP的特点:不安全 无连接 效率...原创 2019-08-16 20:02:19 · 200 阅读 · 0 评论 -
Java基础学习总结:多线程之(六)线程池
参考博文:https://www.cnblogs.com/dolphin0520/p/3932921.html前文讲过,使用线程的时候就手动创建并启动一个线程,使用完后线程被销毁,这样就会有一个问题:如果并发的线程数量非常多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁的创建线程就会大大降低系统的效率,因为频繁的创建线程和销毁线程都需要时间。那么有没有一种办法使得线程可以服...原创 2019-08-12 18:00:01 · 165 阅读 · 0 评论 -
Java基础学习总结:网络编程之(二)TCP编程
TCP编程一、TCP概念TCP,Transmission Control Protocol,传输控制协议,基于字节流的传输层通信协议。特点: 安全、可靠 面向连接 传输数据大小限制,一旦连接建立,双方可以按统一的格式传输大的数据 效率低TCP的三次握手客户端向服务端发送一个请求 服务端收到请求后,回客户端一个响应 客户端向收到服务端的响应后,回服务端一个确认信息...原创 2019-08-16 19:05:35 · 214 阅读 · 0 评论 -
Java基础学习总结:JUC之(五)Lock接口
JUC.locks包中的Lock接口中的内容,比较常用的我在之前的博客中已经介绍的不少了,所以此篇博客仅仅是为了提醒自己Lock接口也是JUC中非常重要的一块内容,别被自己遗忘了。locks包中,重要接口:Lock Condition ReadWriteLock重要类:ReentrantLock ReentrantReadWriteLock关于ReentrantLock:...原创 2019-08-15 19:34:02 · 147 阅读 · 0 评论 -
Java基础学习总结:多线程之(五)Callable、Future、FutureTask
主要介绍了Callable接口、Future接口和FutureTask类,以及这些接口和类的简单使用。原创 2019-08-12 11:13:29 · 157 阅读 · 0 评论 -
Java基础学习总结:多线程之(一)线程的三种创建方式与比较
主要介绍了并行和并发、线程和进程的区别,以及多线程的三种创建方法和比较,最后用多线程实现一个 四个窗口个卖一百张票的多线程程序。原创 2019-08-10 16:28:47 · 198 阅读 · 0 评论 -
Java基础学习总结:集合之(二)Map、HashMap、TreeMap
Java集合框架(容器)总结(二):所有双列集合的父接口 Map ,Map 的两个重要实现类:HashMap 和 TreeMap。原创 2019-08-09 16:45:46 · 284 阅读 · 0 评论 -
Java基础学习总结:使用Calendar实现一个万年历
1、题目:使用Calendar完成一个万年历 要求:键盘输入一个年份和月份,控制台输出当月的日历刚开始没什么思路,在网上看了别人的代码,都感觉实现很麻烦。读完别人的代码后找到了自己的思路,于是就开始自己试着写一个。2、自己动手首先,我们需要定义一个 MyCalendar 类,该类中有两个方法,calender(int year,month) 和 display(int []) ...原创 2019-08-20 11:21:30 · 1043 阅读 · 0 评论 -
Java面试题汇总之正则表达式
一、正则表达式(Regular Expression)正则表达式就是一个验证字符串格式是否满足要求的字符串。 使用一个字符串匹配一组字符串,这个字符串就是正则表达式(模式) (1)字符类:元符集 解释 a 字符a [abc] 匹配a、b、c [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a 到 z 或 A 到...原创 2019-08-02 20:34:10 · 1714 阅读 · 0 评论 -
Scanner中nextLine问题
在java中使用扫描器Scanner时,有一个很有趣的现象:如果在nextline之前使用了next、nextInt等基本类型(companion)时,会出现不能输入的情况。例如:Scanner s = new Scanner(System.in);String str = s.next();System.out.println("空一行");String str2 = s.n...原创 2019-07-17 22:03:36 · 333 阅读 · 0 评论 -
Java基础学习总结:集合之(一)分类、Collection、List、ArrayList、LinkedList
Java 集合框架(容器)总结(一):集合的分类,所有单例集合的父接口 Collection ,以及其一个重要分支: LIst 接口 ,List集合的两个重要实现类:ArrayList 和 LinkedList。原创 2019-08-09 16:43:13 · 223 阅读 · 0 评论 -
Java基础学习总结:String.intern方法
String 的intern() 方法用来返回常量池中的某字符串,如果常量池中已经存在该字符串,则直接返回常量池中该对象的引用。否则,在常量池中加入该对象,然后返回引用。intern()方法判断这个常量是否存在于常量池:如果存在,判断存在内容是引用还是常量,如果是引用,返回引用地址指向堆空间对象的引用,如果是常量,直接返回常量池中该常量的引用。如果不存在,将当前对象的引用复制到常量池,...原创 2019-08-02 17:58:47 · 156 阅读 · 0 评论 -
Java基础学习总结:集合之(三)Set、HashSet、TreeSet
Java集合框架(容器)总结(三):单列集合的另一个重要分支 Set 接口 ,以及 Set 接口的两个重要实现类:HashSet 和 TreeSet。原创 2019-08-09 16:46:19 · 200 阅读 · 0 评论 -
Java基础学习总结:IO之(三)常用的字符集、记事本BOM头
主要是开发过程中常见的字符集的简单介绍,以及记事本特有的 BOM(Byte Order Mark,即字节序列标记)头的简单介绍。原创 2019-08-09 17:42:43 · 292 阅读 · 0 评论 -
Java基础学习总结:IO之(五)对象流与序列化
主要是对对象流,包括对象输入流(ObjectOutputStream)和对象输出流(ObjectInputStream),的简单介绍,以及一些使用对象流进行对象序列化的一些简单用法。以及一些序列化多个对象的方法。原创 2019-08-09 22:57:18 · 283 阅读 · 0 评论 -
Java基础学习总结:IO之(二)字节输入输出流、字符输入输出流以及转换流的使用
流的简单分类,字节输入输出流(InputStream、OutputStream)和 字符输入输出流(Reader、Writer)的简单使用,以及转换流的用法,还有两个联系题:递归遍历文件夹和文件复制。原创 2019-08-09 17:38:09 · 488 阅读 · 0 评论 -
Java基础学习总结:NIO之(一)初识NIO和Buffer
一、NIO1、简介java.nio全称Java non-blocking IO或Java New IO,是从jdk1.4 开始引入的一套新的 IO api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。(1)IO操作的模式:PIO(Programing IO): 所有的IO操作由CPU处理,CPU占用率比较...原创 2019-08-14 08:10:25 · 171 阅读 · 0 评论 -
Java基础学习总结:IO之(一)File类
File 类:对文件或目录的常用操作(新建、删除、获取等),以及文件过滤器 FilenameFilter 的使用。原创 2019-08-09 17:31:55 · 165 阅读 · 0 评论 -
Java基础学习总结:IO之(六)RandomAccessFile类、Properties类
RandomAccessFile类 和 Properties类的简单介绍 和 使用方法。原创 2019-08-10 12:12:52 · 381 阅读 · 0 评论 -
Java基础学习总结:IO之(四)缓冲流、内存流、标准输入输出流
主要针对字节缓冲流 (BufferedInputStream 、BufferedOutputStream )和字符缓冲流(BufferedReader、BufferedWriter)以及标准输入输出流(System.in、System.out)的简单介绍和使用。原创 2019-08-09 21:24:16 · 427 阅读 · 0 评论 -
Java基础学习之javap命令
参考博文:https://www.jianshu.com/p/6a8997560b05javap是jdk自带的反编译工具。它的作用就是根据class字节码文件,反编译出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。当然这些信息中,有些信息(如本地变量表、指令和代码行偏移量映射表、常量池中方法的参数名称等等)需要在使用javac编译成class文件...原创 2019-07-18 17:35:58 · 280 阅读 · 0 评论