java基础
一曲烟雨行舟太缓慢
这个作者很懒,什么都没留下…
展开
-
线程-安全发布对象(六)
1.发布与逃逸states被发布出去,可以进行修改了对象溢出2.安全发布对象的四种方法安全示例:单例:原创 2021-04-25 17:19:14 · 116 阅读 · 0 评论 -
线程-线程安全(五)
一.原子性,可见性,有序性1.如何理解线程安全问题1:代码示例:运行中未打印子线程的结果如图代码运行,主线程会修改stop的值,但是子线程不会中断,因为stop值在主线程中进行了修改,对子线程不可见问题2: 原子性问题示例代码:这个incro()对应三个指令:结果不是: 1000问题3: 有序性问题二.java如何解决可见性有序问题1.JMM2.Synchronized的作用:范围:对象锁:synchronized(this)两个线程调用同一个对象的普通原创 2021-04-25 17:01:25 · 135 阅读 · 0 评论 -
线程-线程的基本操作和原理(四)
一. Thread.join的使用及原理1.代码:运行结果可能为1,也可能为4,原因: t1,t2,start后来年各个线程都处于就绪状态,cpu分配时间片给两个线程的机率是随机的,线程执行的优先级相等,所以可能先执行t1,也可能先执行t22.使用thread.join这样执行的结果就会始终为43.Thread.join的原理可见调用在主线程中调用子线程的join()方法会让主线程阻塞,直到该子线程运行完,主线程才被唤醒,继续运行。在上述代码中: t1.join()执行时,主线程就不会执行原创 2021-04-25 14:06:43 · 133 阅读 · 0 评论 -
线程-线程的生命周期(三)
1.线程从创建到销毁,一共经历6个状态,在实际中并不一定都会经历。2.图示3.示例代码:然后可以在日志中看到各种状态:原创 2021-04-25 11:08:11 · 120 阅读 · 0 评论 -
线程-线程在java中的创建方式(二)
1.java中使用分三类2.Thread2.Runnable3.Callble 带返回值其中future.get()会阻塞,直到有返回值才会执行原创 2021-04-25 10:51:40 · 63 阅读 · 0 评论 -
线程-线程概念(一)
1.什么是线程2.进程的执行逻辑3.为什么有线程简言之:4.线程价值5.线程的应用场景6.总结原创 2021-04-25 10:44:34 · 93 阅读 · 0 评论 -
NIO-selector选择器(七)
1.什么是Selecto原创 2021-04-24 21:36:47 · 166 阅读 · 0 评论 -
NIO-SocketChannel与SockerServerChannek(六)
之前第四篇都是磁盘上的NIO,接下来是网络上的NIO服务端:客户端:让客户端连接不断,加上System.in.read():服务端仍然是阻塞的,改进:此时的服务端是,连接非阻塞了,但是IO阻塞还没解决。客户端改进:...原创 2021-04-24 13:20:48 · 116 阅读 · 0 评论 -
NIO-缓冲区内部细节与零拷贝原理(五)
1.Buffer的本质capacity: 初始状态: 第一次读取数据:调用flip,将读转为写调用flip position置为0,limit重置为原来的位置2.零拷贝原理1): IO通信原理2)IO流程改进:代码(此时channel也可以在直接使用):...原创 2021-04-24 12:54:20 · 94 阅读 · 0 评论 -
NIO-Channel和Buffer(四)
1.Channel的实现2.什么是Buffer读取案例:写:循环读写完所有数据:在这里插入图片描述原创 2021-04-24 11:42:53 · 75 阅读 · 0 评论 -
NIO-NIO的概述及应用(三)
1.什么是NIO2.NIO新特性3.核心组件4.demo示例:5.IO和NIO的区别,面向磁盘和面向缓存原创 2021-04-24 00:04:24 · 60 阅读 · 0 评论 -
NIO-5种IO模型(二)
1.阻塞模型:2.非阻塞IO3.IO复用,非阻塞虽然可以在数据未准备好的时候干其他事,但是也需要不断轮询去访问直到数据准备好,这样会带来系统资源不断消耗。IO复用则是一种改进4.mmap:5.异步IO...原创 2021-04-23 23:51:19 · 105 阅读 · 0 评论 -
NIO-阻塞与非阻塞(一)
通新机制:同步:异步:调用方发起请求处于的状态:阻塞: 客户在没有获得结果之前,什么都不能做非阻塞: 在获得结果之前可以做其他事原创 2021-04-23 23:32:57 · 78 阅读 · 0 评论 -
IO-网络IO(七)
1.socket主要分为服务端和客户端:案例1:客户端:服务端:案例二:服务端:上述需要加换行,不加则客户端还没读取完,io就关闭了客户端:Socket通信流程:2.协议分析:请求发送:3.网络io通信原理4.扩展: 上述案例二服务端只能处理处理一个连接,如果是多个,可以加一个while循环,表示可以按顺序处理多个连接,但是这样效率非常低下,加入有1000个同时连接,则可以想象时间耗时。方法中的accept表示阻塞等待。这也就是所说的BIOBIO:阻塞是阻塞acc原创 2021-04-23 14:22:36 · 88 阅读 · 0 评论 -
IO-对象流(六)
1.序列化与反序列化序列化演示:磁盘上user文件内容,变成了16的数据信息反序列化:序列化可以让一个对象的存活时间远远大于其在jvm中的存活时间。注意这里序列化的对象需要实现Serializable接口...原创 2021-04-23 13:39:30 · 63 阅读 · 0 评论 -
IO-缓冲流与字符流输入输出(五)
(一)缓冲流1.缓冲流概述:2.缓冲流是一个高级流,使用时需要套低级流。(将低级流传给高级流,在基本流的基础上增强功能)缓冲区默认是8kb演示:flush方法: 当写出的内容总大小小于缓存区大小时,不会触发写的io操作,可以加flush方法当然close方法也会触发:(二)字符流1.字节流问题当文本文件mic.txt中存在中文时,采用如下代码,则控制台会打印乱码,原因: utf-8编码中,中文占3个字节,英文占1个字节,下面是一个字节一个字节读取的。解决方式1: 一次读取多个字原创 2021-04-23 11:23:11 · 58 阅读 · 0 评论 -
IO-inputstream的read方法与基于内存的字节流输入输出(四)
1.流主要就是建立一个管道,让数据像水一样在里面有方向的流动,且水量的大小可以控制。演示:使用byte[] buffer时,定义每次读取3个字节,“hello world” 加上中间的空格一共是11个字节, 但实际读取会独12个, 3*4 ,结果就是 h e l l o w o r l d r ,多了一个r,先然不符合实际,所以讲读取的方法转为一下:...原创 2021-04-23 10:38:38 · 163 阅读 · 0 评论 -
IO-本地磁盘文件操作之File类与基于文件的字节流输入输出(三)
1.概述: File类是Java中为文件创建,删除,重命名,移动等操作设计的一个类,位于java.io包下2.File类的基本操作四个构造方法:使用:3.基于字节流操作文件(字节流可以操作图片,音频,文件等,不仅仅是文本),将磁盘上的一个图片读入并写出改进: 上述是读取的一个字节,加入有1000个字节,则需要和磁盘交互1000次,现在一次性读取多个字节,可以减少交互次数,这是一种优化。同样可以达到目的注意点: 流一定要关闭。原因: 不关闭流或造成相应读取的资源被一直占用。jdk1.7自动关原创 2021-04-23 10:12:10 · 173 阅读 · 0 评论 -
IO-IO流的数据来源及操作api(二)
硬盘,内存,键盘,网络1.从磁盘读取:2.从内存中读取定义的字符串str是在内存中的,将其转换为字节数组流3.键盘4.网络这个一般是指socket相关,后续会详细介绍原创 2021-04-23 09:39:30 · 92 阅读 · 0 评论 -
IO-Java中的IO体系(一)
1.概述: java中的I/O流操作的类很多,实际核心只有5个,File文件类,InputStream字节输入流(以内存为参照,从磁盘或网络中写入内存为输入,反之为输出),OutputStream字节输出流,Reader字符输入流,Writer字符输出流。2.分类特征: 其中字节流可以处理所有文件,范围更广,字符流只能处理文本。每种流大部分都是成对的有输出和输入。带stream的都是字节流,带reader或writer都是输出流。字节流: 操作的数据都是单元8位的字节,InputStream,Out原创 2021-04-23 09:31:50 · 92 阅读 · 0 评论 -
java高级基础之-泛型
Java泛型generics是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制。该机制允许 我们在编译时监测到非法的数据结构 优势1.编译器检查 2.减少错误类型转换 本质:类型参数化最佳实践代码地址: https://gitee.com/dengdengkai/reflection_basis.git一.泛型类、接口一) 语法 class 类名<泛型标识 ,泛型标识...原创 2020-03-27 18:16:25 · 159 阅读 · 0 评论 -
Java基础/内部类
原地址:https://s2.uczzd.cn/webview/news?app=uc-iflow&aid=8050077437924933506&cid=100&zzd_from=uc-iflow&uc_param_str=dndsfrvesvntnwpfgic内部类分为四种:非静态内部类、静态内部类、匿名内部类、本地类。一、非静态内部类非静态内部类 Ba...原创 2020-03-27 17:56:48 · 289 阅读 · 0 评论