nio(new io) 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API)。&
转载
2024-01-05 19:14:21
24阅读
对象的存储和读取对象的存储和读取使用ObjectOutputStream和ObjectInputStream,这两个读写流是成对出现的。/*
对象的存储和读取
对象存储时使用ObjectOutputStream,当读取时,只能使用ObjectInputStream读取。
*/
import java.io.*;
class ObjectStreamDemo
{
public static
转载
2023-11-13 15:04:35
7阅读
内存屏障由于现代的操作系统都是多处理器.而每一个处理器都有自己的缓存,并且这些缓存并不是实时都与内存发生信息交换.这样就可能出现一个cpu上的缓存数据与另一个cpu上的缓存数据不一致的问题.而这样在多线程开发中,就有可能导致出现一些异常行为. 而操作系统底层为了这些问题,提供了一些内存屏障用以解决这样的问题.目前有4种屏障.LoadLoad屏障:对于这样的语句Load1; LoadLoad
转载
2023-12-14 17:09:36
44阅读
内存屏障由于现代的操作系统都是多处理器.而每一个处理器都有自己的缓存,并且这些缓存并不是实时都与内存发生信息交换.这样就可能出现一个cpu上的缓存数据与另一个cpu上的缓存数据不一致的问题.而这样在多线程开发中,就有可能导致出现一些异常行为.而操作系统底层为了这些问题,提供了一些内存屏障用以解决这样的问题.目前有4种屏障.LoadLoad屏障:对于这样的语句Load1; LoadLoad; Loa
转载
2023-10-04 15:47:34
43阅读
对于CSV的读写既可以像读写txt文件似的读写/*===================读文件=======================*/
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader =
转载
2024-06-14 11:34:24
25阅读
1. 背景 我们一般应用对
数据库
而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案, 其中一个是主库,负责写入数据,我们称之为:写库; 其它都是从库,负责读取数据,我们称之为:读库;
第一中方式:定义2个数据库连接,一个是MasterDataSource,另一个是SlaveDataSource。更新数据时我们读取MasterDataSource,查询数据时我们读取SlaveDataSource该示例是基于spring提供的AbstractRoutingDataSource,实现了一个动态数据源的功能,在spring配置中定义多个数据库分为主、从数据库,实现效果为当进行保存和修改
转载
2023-06-14 16:31:01
76阅读
为什么会有内存屏障每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一个变量的缓存值不同。用volatile关键字修饰变量可以解决上述问题,那么volatile是如何做到这一点的呢?那就是内存屏障,内存屏障是硬件层的概念,不同的硬件平台实现内存屏障的手段并不
转载
2023-06-09 16:06:41
95阅读
一、IO流要明确的几点(1)明确要操作的数据是数据源还是数据目的(是读还是写) 源/读 InputStream Reader 目的/写OutputStream Writer(2)明确操作设备上的数据是字节还是文本
转载
2023-06-28 13:46:38
387阅读
笔者最近在用多线程来计算中文文本的标点符号数目,遇到了以下问题:在Windows下,文本中汉字通常采用Unicode编码,这就导致需要随机(RandomAccessFile)读取文本时,产生乱码现象。多线程计算前(假设有2个线程),需要将文本内容尽量等分成2份,并输出到新的文件中,再进行计算。总体思路:规定一次读取的字节数,再在存储和输出时转化成GBK编码
由于RandomAccessFi
转载
2024-05-31 10:35:22
24阅读
如何打破双亲委派机制继承ClassLoader类后重写loadClass方法如何指定自定义ClassLoader中的parent默认parent是appClassLoader,可以通过ClassLoader构造方法指定存储器的层器结构为什么要缓存行对齐有多个CPU或者多个核,他们都有自己的高速缓存,但是高速缓存都是先从内存中的L3高速缓存中读数据,每次读一行也就是64字节。所以当多个CPU或者多个
转载
2024-03-11 11:12:56
22阅读
230616更新,鉴于有些小伙伴反应代码运行报没找到invokeCleaner这个方法,在这里补充说明一下。本人环境是java11,而java9之后才有invokeCleaner这个方法。如果使用java9以前版本小伙伴,可以参考这篇文章 https://zhuanlan.zhihu.com/p/37325025 释放资源的时候调用Cleaner类的clean方法释放就行230111更新,之前读取
转载
2023-08-09 21:49:49
75阅读
3、 盘面、磁道、柱面和扇区 硬盘的读写是和扇区有着紧密关系的。在说扇区和读写原理之前先说一下和扇区相关的”盘面”、“磁道”、和“柱面”。 1. 盘面
硬盘的盘片一般用铝合金材料做基片,高速硬盘也可能用玻璃做基片。硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面
对文件的内容操作主要分为两大类: 分别是:字符流字节流 字符流中有两个抽象类:writer reader 其对应的子类 FileWriter和FileReader可实现文件的读写操作BufferedWriter和BufferedReader提供缓冲区功能,用以提高读写效率字节流有连个抽象类:InputStream和OutStream其对应的子类有FileInputStream和FileOutStr
转载
2024-07-22 21:09:42
42阅读
文章目录一、原子性如何保证原子性?1、使用原子类来保证线程安全2、使用synchronized 互斥锁二、可见性如何保证可见性?三、有序性如何保证有序性?1、volatile关键字2、synchronized关键字 一、原子性Java 内存模型保证了 read、load、use、assign、store、write、lock 和 unlock 操作具有原子性,例如对一个 int 类型的变量执行
转载
2023-10-09 09:39:32
61阅读
Java 读写文件输入流和输出流的类层次图FileInputStream该流用于从文件读取数据。我们可以使用 new 关键字来创建一个 FileInputStream 对象。FileInputStream 提供了许多构造方法:可以使用字符串类型的文件名来创建一个输入流对象来读取文件。InputStream f = new FileInputStream(“C:/java/hello”);可以使用一
转载
2023-06-25 18:34:17
205阅读
尽量尝试使用面向字符的处理模式,如果程序代码无法编译成功,再尝试使用面向字节的的处理模式。
1.节点流和处理流的分类(包括了面向字节和面向字符)
转载
2023-07-25 10:35:25
270阅读
读写分离:主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。简单的说就是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据
转载
2023-08-06 10:14:37
147阅读
IO 与 NIO 区别Java IOJava IO 工作流程NIOJava NIO 工作流程总结: Java IOIO 面向字节流,是阻塞的。Java IO 中读取数据和写入数据都是面向流(Stream),即当从流中读取、写入数据的同时也将数据写入流,流的含义在于没有缓存。如果需要获取某个数据的前一项或后一项数据,就必须主动地去缓存数据,无法直接从流中获取(面向流意味着当前只拥有一个数据流的切面
转载
2023-07-20 17:33:23
53阅读
前言java中io流一直是一个令人头疼的东西,主要是各种流,各种缓冲器太多,不好记忆,所以感觉学起来很费劲,选择起来也比较烦恼。本文主要针对java的io流读取数据使用io流读取文件和向文件中写数据,并根据个人经验讲解应该怎么选择和使用。 需要的知识点:1.字节流和字符流选择字节流:字节流读取的时候,读到一个字节就返回一个字节; 主要用于读取图片,MP3,AVI视频文件。字符
转载
2023-08-09 12:08:06
67阅读