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阅读
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阅读
对于CSV的读写既可以像读写txt文件似的读写/*===================读文件=======================*/
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader =
转载
2024-06-14 11:34:24
25阅读
内存屏障由于现代的操作系统都是多处理器.而每一个处理器都有自己的缓存,并且这些缓存并不是实时都与内存发生信息交换.这样就可能出现一个cpu上的缓存数据与另一个cpu上的缓存数据不一致的问题.而这样在多线程开发中,就有可能导致出现一些异常行为.而操作系统底层为了这些问题,提供了一些内存屏障用以解决这样的问题.目前有4种屏障.LoadLoad屏障:对于这样的语句Load1; LoadLoad; Loa
转载
2023-10-04 15:47:34
43阅读
230616更新,鉴于有些小伙伴反应代码运行报没找到invokeCleaner这个方法,在这里补充说明一下。本人环境是java11,而java9之后才有invokeCleaner这个方法。如果使用java9以前版本小伙伴,可以参考这篇文章 https://zhuanlan.zhihu.com/p/37325025 释放资源的时候调用Cleaner类的clean方法释放就行230111更新,之前读取
转载
2023-08-09 21:49:49
75阅读
如何打破双亲委派机制继承ClassLoader类后重写loadClass方法如何指定自定义ClassLoader中的parent默认parent是appClassLoader,可以通过ClassLoader构造方法指定存储器的层器结构为什么要缓存行对齐有多个CPU或者多个核,他们都有自己的高速缓存,但是高速缓存都是先从内存中的L3高速缓存中读数据,每次读一行也就是64字节。所以当多个CPU或者多个
转载
2024-03-11 11:12:56
22阅读
笔者最近在用多线程来计算中文文本的标点符号数目,遇到了以下问题:在Windows下,文本中汉字通常采用Unicode编码,这就导致需要随机(RandomAccessFile)读取文本时,产生乱码现象。多线程计算前(假设有2个线程),需要将文本内容尽量等分成2份,并输出到新的文件中,再进行计算。总体思路:规定一次读取的字节数,再在存储和输出时转化成GBK编码
由于RandomAccessFi
转载
2024-05-31 10:35:22
24阅读
一、IO流要明确的几点(1)明确要操作的数据是数据源还是数据目的(是读还是写) 源/读 InputStream Reader 目的/写OutputStream Writer(2)明确操作设备上的数据是字节还是文本
转载
2023-06-28 13:46:38
387阅读
对文件的内容操作主要分为两大类: 分别是:字符流字节流 字符流中有两个抽象类:writer reader 其对应的子类 FileWriter和FileReader可实现文件的读写操作BufferedWriter和BufferedReader提供缓冲区功能,用以提高读写效率字节流有连个抽象类:InputStream和OutStream其对应的子类有FileInputStream和FileOutStr
转载
2024-07-22 21:09:42
42阅读
尽量尝试使用面向字符的处理模式,如果程序代码无法编译成功,再尝试使用面向字节的的处理模式。
1.节点流和处理流的分类(包括了面向字节和面向字符)
转载
2023-07-25 10:35:25
270阅读
Java 读写文件输入流和输出流的类层次图FileInputStream该流用于从文件读取数据。我们可以使用 new 关键字来创建一个 FileInputStream 对象。FileInputStream 提供了许多构造方法:可以使用字符串类型的文件名来创建一个输入流对象来读取文件。InputStream f = new FileInputStream(“C:/java/hello”);可以使用一
转载
2023-06-25 18:34:17
205阅读
文章目录一、原子性如何保证原子性?1、使用原子类来保证线程安全2、使用synchronized 互斥锁二、可见性如何保证可见性?三、有序性如何保证有序性?1、volatile关键字2、synchronized关键字 一、原子性Java 内存模型保证了 read、load、use、assign、store、write、lock 和 unlock 操作具有原子性,例如对一个 int 类型的变量执行
转载
2023-10-09 09:39:32
61阅读
Web开发中不可避免都会涉及到Excel的操作,如批量导出数据、让前端用户按固定格式批量上传数据等,本文介绍三种Java常用的处理Excel的方法,涵盖格式为xls和xlsx的表格。JXLJExcelApi 是一个Java库,提供了对Microsoft Excel文件读、写、修改的操作。在Java工程中导入jxl库,库的官方下载地址见:JXL库官方下载地址。点击具体的版本,可以看到各种导包的方式。
转载
2023-09-08 22:23:28
60阅读
目录1. java内存屏障2.java内存屏障的使用一. java内存屏障1.1 什么是内存屏障(Memory Barrier)? 内存屏障(memory barrier)是一个CPU指令。基本上,它是这样一条指令: a) 确保一些特定操作执行的顺序; b) 影响一些数据的可见性(可能是某些指令执行后的结果)。编译器和CPU可以在保证输出结果一样的情况下对指令重排序,使性能得到
转载
2023-07-22 00:03:07
69阅读
用java开发C语言编译器上一节,我们实现了以数组的方式对指针指向的动态内存进行读写,本节,我们实现通过指针直接读写内存,完成本节代码后,我们的解释器能够解释执行下面的代码:void main() {
char *p;
char *p1;
p = malloc(2);
p1 = malloc(1);
p1[0] = 0;
*(p+0) = 1;
*(p+1) = 2;
*(p+2) = 3;
pr
转载
2023-06-19 22:11:04
141阅读
读写锁分离场景描述读写锁设计接口定义Lock接口ReadWriteLock程序实现ReadWriteLockImpl写锁读锁读写锁的使用总结Reference 场景描述在多线程的情况下访问共享资源,需要对资源进行同步操作以防止数据不一致的情况。对资源的访问一般包括两种类型的动作——读和写(更新、删除、增加等资源会发生变化的动作)。如果多个线程在某个时刻都在进行对资源的读操作,虽然有资源的竞争,但
转载
2023-08-05 01:42:00
137阅读