io流 多线程

目录

一、io流

1.什么是io流

2.流的方向

i.输入流

ii.输出流

3.操作文件的类型

i.字节流

 1.拷贝

ii.字符流

​3.字符流输出流出数据

4.字节流和字符流的使用场景

5.练习

6.缓冲流

1.字节缓冲流拷贝文件

2.字符缓冲流特有的方法

1.方法

2.总结

7.转换流基本用法

8.小练习;

​编辑二、多线程

1.实现方式

i.继承Thread类的方法进行实现

ii.实现Runnable接口的方式进行实现

iii.利用Callable接口和Future接口方式实现

vi.三种方式对比

v.常见的成员方法

2.守护线程等

i.守护线程

​ii.礼让线程

iii.插入线程

vi.线程的生命周期​编辑

v.线程的安全

iv.同步方法

三、线程的锁


一、io流

1.什么是io流

io流:存储和读取数据的解决方案

2.流的方向

i.输入流

ii.输出流

字节输出流基本方法

  FileOutputStream fos=new FileOutputStream("a.txt");
        fos.write(97);
        fos.close();

3.操作文件的类型

i.字节流

 1.拷贝

ii.字符流

空参read

带参read

3.字符流输出流出数据

4.字节流和字符流的使用场景

5.练习

一:

public class Main {
    public static void main(String[] args) throws IOException {
        //拷贝一个文件夹,考虑子文件夹

        //1.创建对象表示数据源
        File src=new File("D:\\aaa\\src");
        //2.创建对象表示目的地
        File dest=new File("D:\\aaa\\dest");

        //3.调用方法开始拷贝
        copydir(src,dest);
    }
/*
作用:拷贝文件
参数一:数据源
参数二:目的地

 */


    private static void copydir(File src, File dest) throws IOException {
       dest.mkdirs();//如果不存在则创建,如果存在则创建失败
        //递归
        //1.进入数据源
        File[] files = src.listFiles();//会把所有的文件还
        // 有文件夹的路径放到数组当中给你返回好
        //2.遍历数组
        for (File file : files) {
            if (file.isFile()){
                //3.判断文件,拷贝
                FileInputStream fis=new FileInputStream(file);
                FileOutputStream fos=new FileOutputStream(new File(dest,file.getName()));
                byte[] bytes=new byte[1024];
                int len;
                while((len=fis.read(bytes))!=-1){
                    fos.write(bytes,0,len);
                }
                fos.close();
                fis.close();
            }else{
                //判断文件夹,递归
                copydir(file,new File(dest,file.getName()));
            }
        }
    }
}

二:

^异或:两边相同true两边不同false,两次同一个是原来的数据

加密:如以下代码

解密:再创一个c,将a改成b,b改成c就行了

 FileInputStream fis=new FileInputStream("D:\\java\\io流\\myio\\a.txt");
        FileOutputStream fos=new FileOutputStream("D:\\java\\io流\\myio\\b.txt");
        //加密处理
        int b;
        while((b=fis.read())!=-1){
            fos.write(b^2);
        }
        fos.close();
        fis.close();
    

三:

注意:初始文件里面不要换行否则会隐含\r\n

代码:

//读取数据
        FileReader fr=new FileReader("D:\\java\\io流\\myio\\a.txt");
        StringBuilder sb=new StringBuilder();
        int ch;
        while((ch= fr.read())!=-1){
            sb.append((char)ch);
        }
        fr.close();
        System.out.println(sb);
        //排序
        Integer[] arr = Arrays.stream(sb.toString()
                        .split("-"))
                .map(Integer::parseInt)//方法引用
                .sorted()
                .toArray(Integer[]::new);//再收集到Integer的数组里面



//写出数据

        FileWriter fw=new FileWriter("D:\\java\\io流\\myio\\a.txt",true);
        String s = Arrays.toString(arr)
                .replace(", ","-") ;
         String result= s.substring(1,s.length()-1);
         fw.write("\r\n");
        fw.write(result);
        fw.close();

6.缓冲流

1.字节缓冲流拷贝文件

更加高级的知识点

2.字符缓冲流特有的方法

1.方法
2.总结

7.转换流基本用法

8.小练习;

二、多线程

1.实现方式

i.继承Thread类的方法进行实现

打印出来的数据是一会1一会2的

ii.实现Runnable接口的方式进行实现

iii.利用Callable接口和Future接口方式实现

vi.三种方式对比

v.常见的成员方法

2.守护线程等

i.守护线程

ii.礼让线程

让其尽可能均匀

iii.插入线程

vi.线程的生命周期

v.线程的安全

eg:买票:如下代码,结果就是很多票数重复了

小细节:

也可以这样写

注意:不同的线程互斥地访问临界资源,这是互斥。所有的线程都必须等待其他线程卖了票之后才能卖票,这是同步

//重写方法快捷键:Alt+回车

iv.同步方法

ctrl+alt+m快捷创建函数键

三、线程的锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/781811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

掌握MySQL基础命令:数据更新操作详细操作(数据的增删改)

MySQL数据修改是指使用SQL语句(如UPDATE、INSERT、DELETE)对数据库表中的数据进行更改、添加或删除的操作,常见的操作包括更新表中的记录、插入新记录以及删除现有记录 。 一、数据插入 1插入完整的数据记录 2插入非完整的数据记录 3插入多…

Vulkan 学习(1)---- Vulkan 基本概念和发展历史

目录 Vulkan及其演化史Vulkan 基本概念基本术语 Vulkan 的原理Vulkan应用程序Vulkan的编程模型硬件初始化窗口展示表面资源设置流水线设置描述符和描述符缓冲池基于SPIR-V的着色器流水线管理指令的记录队列的提交 Vulkan及其演化史 目前主流的图形渲染API有OpenGL、OpenGL ES、…

应急响应--网站(web)入侵篡改指南

免责声明:本文... 目录 被入侵常见现象: 首要任务: 分析思路: 演示案例: IIS&.NET-注入-基于时间配合日志分析 Apache&PHP-漏洞-基于漏洞配合日志分析 Tomcat&JSP-弱口令-基于后门配合日志分析 (推荐) Webshell 查杀-常规后门&…

ThinkPHP定时任务是怎样实现的?

接到一个需求:定时检查设备信息,2分钟没有心跳的机器,推送消息给相关人员,用thinkphp5框架,利用框架自带的任务功能与crontab配合来完成定时任务。 第一步:分析需求 先写获取设备信息,2分钟之…

Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

场景 Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类: Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客 上面使用HttpClient调用post接口时使用的HttpCon…

卷积神经网络基础篇

文章目录 1、卷积层1.1、激活函数1.3、sigmoid1.4、Tanh1.5、ReLU1.6、Leaky ReLU1.7、误差计算 2、池化层3、全连接层4、CNN训练 参考链接1 参考链接2 1、卷积层 卷积层(Convolutional layer),这一层就是卷积神经网络最重要的一个层次&…

spRAG框架学习小结

spRAG是什么 spRAG是一个针对非结构化数据的检索引擎。它特别擅长处理对密集文本的复杂查询,比如财务报告、法律文件和学术论文。有两种关键方法用于提高性能,超越了普通的RAG系统: 自动上下文(AutoContext)&#xff…

几款电脑端能够运行的AI大模型聊天客户端

Ollama Ollama 是一个用于在本地运行和管理大型语言模型的工具。它支持多种流行模型的下载和本地运行,包括 LLaMA-2、CodeLLaMA、Falcon 和 Mistral 。Ollama 提供了一个简单、轻量级和可扩展的解决方案,使得用户可以以最简单快速的方式在本地运行大模型…

中霖教育:二级建造师未注册还需要继续教育吗?

关键词:中霖教育怎么样,中霖教育口碑 如果通过了二级建造师考试但是没有注册,还用继续教育吗? 1. 未注册的二级建造师 二级建造师在其证书获取后三年内没有进行注册时,在申请初始注册之前必须完成规定的本专业继续教育课程。 …

计算样本之间的相似度

文章目录 前言一、距离度量1.1 欧几里得距离(Euclidean Distance)1.2 曼哈顿距离(Manhattan Distance)1.3 切比雪夫距离(Chebyshev Distance)1.4 闵可夫斯基距离(Minkowski Distance&#xff09…

Java里的Arrary详解

DK 中提供了一个专门用于操作数组的工具类,即Arrays 类,位于java.util 包中。该类提供了一些列方法来操作数组,如排序、复制、比较、填充等,用户直接调用这些方法即可不需要自己编码实现,降低了开发难度。 java.util.…

时序预测 | Matlab实现TCN-Transformer的时间序列预测

时序预测 | Matlab实现TCN-Transformer的时间序列预测 目录 时序预测 | Matlab实现TCN-Transformer的时间序列预测效果一览基本介绍程序设计 效果一览 基本介绍 基于TCN-Transformer模型的时间序列预测,可以用于做光伏发电功率预测,风速预测,…

XSS平台的搭建

第一步:安装MySQL 数据库 因为xss平台涉及到使用mysql 数据库,在安装之前,先使用docker 安装mysql 数据库。 docker run --name mysqlserver -e MYSQL_ROOT_PASSWORD123 -d -i -p 3309:3306 mysql:5.6 第二步:安装xssplatform…

机械键盘如何挑选

机械键盘的选择是一个关键的决策,因为它直接影响到我们每天的打字体验。在选择机械键盘时,有几个关键因素需要考虑。首先是键盘的键轴类型。常见的键轴类型包括蓝轴、红轴、茶轴和黑轴等。不同的键轴类型具有不同的触发力、触发点和声音。蓝轴通常具有明…

「多模态大模型」解读 | 突破单一文本模态局限

编者按:理想状况下,世界上的万事万物都能以文字的形式呈现,如此一来,我们似乎仅凭大语言模型(LLMs)就能完成所有任务。然而,理想很丰满,现实很骨感——数据形态远不止文字一种&#…

2024年06月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…

GESP C++一级真题

PDF图片1-7 点赞❤️关注😍收藏⭐️ 互粉必回🙏🙏🙏

【Linux】打包命令——tar

打包和压缩 虽然打包和压缩都涉及将多个文件组合成单个实体,但它们之间存在重要差异。 打包和压缩的区别: 打包是将多个文件或目录组合在一起,但不对其进行压缩。这意味着打包后的文件大小可能与原始文件相同或更大。此外,打包…

上位机图像处理和嵌入式模块部署(mcu项目1:假设用51单片机实现)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 到目前位置,我们借助于qt和apm32 mcu芯片,实现了大多数功能。大家如果回过头来看,其实这些功能并不复杂。从固件…

现场Live震撼!OmAgent框架强势开源!行业应用已全面开花

第一个提出自动驾驶并进行研发的公司是Google,巧的是,它发布的Transformer模型也为今天的大模型发展奠定了基础。 自动驾驶已经完成从概念到现实的华丽转变,彻底重塑了传统驾车方式,而大模型行业正在经历的,恰如自动驾…