7.12~7.13学习总结

news2024/11/26 5:29:43
 public static void main(String[] args)
    {
        File dir=new File("D:\\小花花");
        boolean flag =dir.mkdir();
        System.out.println(flag);
        File dirs=new File("D:\\小花花\\你爸爸");
        dirs.mkdirs();
       String[]a=dir.list();//列出下一级;字符串数组
        for(String s:a)
        {
            System.out.println(s);
        }
        File []file=dir.listFiles(); //下级对象
        for(File s:file)
        {
            System.out.println(s.getAbsolutePath());
        }

        //类出所有盘符;
        File[] roots=dir.listRoots();
        for(File s:roots)
        {
            System.out.println(s.getAbsolutePath());
        }
      






    }

/*
false
你爸爸
D:\小花花\你爸爸
C:\
D:\
E:\


*/

在文件里面可能会出现这个文件存在,但是指针为空的情况,可能是由于有些文件无权限1访问造成的;所以最好不要用指针为空的1情况来判断文件是否存在。

字节和字符的转换问题:

  public static void main(String[]args) throws UnsupportedEncodingException {//默认使用工程下的字符集

        String msg="性命生命使命a";
        //编码:字节数组;
        byte[]datas=msg.getBytes();
        System.out.println(datas.length);
        //可以编码成其他字符集;
        datas=msg.getBytes("UTF-8");
        System.out.println(datas.length);
        msg=new String(datas,0, datas.length,"utf8");
        System.out.println(msg);
        //如果乱码:
        // 1.字节数不够乱码;
        //2.字符集不统一


    }
/*
19
19
性命生命使命a


*/

单个字符的文件读取:

class Main
{
   public static void main(String[]args)
   {
      File src=new File("小花花");
      InputStream is=null;
       try {
           is= new FileInputStream(src);
           int temp;
           while((temp=is.read())!=-1)
           {
               System.out.println((char)temp);
           }
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }finally
       {
           if(is!=null) {
               try {
                   is.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
       }


   }
}
/*
w
e
i
 
l
i
a
n
g
 
h
u
a
 
k
a
i
 
m
e
n
g
 
q
i
n
g
 
y
a
n
g

*/
class Main
{
   public static void main(String[]args)
   {
      File src=new File("小花花");
      InputStream is=null;
       try {
           is= new FileInputStream(src);
           byte[]car=new byte[1024];
           int len;

           while((len=is.read(car))!=-1)//一段字节去读,然后编码成字符串;
           {
              String str=new String(car,0,len);
              System.out.println(str);
           }
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }finally
       {
           if(is!=null) {
               try {
                   is.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
       }


   }
}
/*

wei liang hua kai meng qing yang

*/

字符流和字节流的区别主要在于:字符流是只能处理字符,但是无法处理其他的图片声音,但是字符六处理字符可以包含中文,而且不需要编码和解码,几乎很少出现乱码问题,字节流在不同的模式下装数组的数如果没有控制好,很容易乱码,所以全字符处理建议用字符流,如果是声音图片等就只能用字节流 

//使用文件输入流和输出流达到文件的拷贝

//输入流和输出流要记得打开和关闭,先打开的后关闭
class Main
{
    public static void copy1(String file1path,String file2path)
    {
        File file1=new File(file1path);
        File file2=new File(file2path);
        InputStream is=null;
        OutputStream os=null;
        try {
            is=new FileInputStream(file1);
            os=new FileOutputStream(file2);
            byte[]flush=new byte[1024];
            int len=-1;
            while((len= is.read(flush))!=-1)
            {
               os.write(flush,0,len);

            }os.flush();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally
        {
            if(os!=null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(is!=null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }


   public static void main(String[]args)
   {
       String file1="C:\\Users\\zplaz\\Pictures\\Camera Roll\\微信图片_20230420163132.jpg";
       String file2="泥巴巴2.jpg";
       copy1(file1,file2);
   }
}

字节数组输入流,字节数组不要太大,字节数组不要释放,也就是关闭;       

装饰模式:

缓冲流直接加在要提升输入输出流上面的上面,可以提高性能

 缓冲流内部有缓冲,只有达到一定的量才会被写出,如果输入的内容太少,要记得强制刷新一下,和缓冲流放一起不需要释放,jre会自动释放缓冲区,其中包括最低层的字节流和字符流;缓冲流放到字节流和字符流的外层,而不是处理流;

数据流:先写入,后读取,并且要按照写入的数据类型顺序来读取,就算没用该数据,也要对应读出来;对象流:特点和数据流类似,多了一个读写对象,序列化:不是所有的对象都可以序列化:如果某个数据不需要序列化,可以加上关键字,transient,

实例:

public class Main
{
    public static void main(String[]args) throws IOException, ClassNotFoundException {
       FileOutputStream baos=new FileOutputStream("小花花.text");
        ObjectOutputStream dos=new ObjectOutputStream(new BufferedOutputStream(baos));
        dos.writeUTF("超级无敌想小麻子");
        dos.writeInt(18);
        dos.writeBoolean(false);
        Employee emp=new Employee("小麻子",10000);
        dos.writeObject(new Date());
        dos.writeObject(emp);

        dos.flush();




        ObjectInputStream dis=new ObjectInputStream(new BufferedInputStream(new FileInputStream("小花花.text")));
        String msg=dis.readUTF();
        int age=dis.readInt();
        boolean flag=dis.readBoolean();
        Date day= (Date) dis.readObject();
        Employee e=(Employee) dis.readObject();

        System.out.println(e.getName()+"---"+e.getSalary());

    }
}
class Employee implements java.io.Serializable
{
    private  transient String name;
    private double salary;

    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}


/*
null---10000.0

*/

打印流:打印流要记得释放资源,释放里面的字节流;

public class Main
{
    public static void main(String[]args) throws FileNotFoundException {
        PrintStream ps=System.out;
        ps.println("小麻子");//在控制台打印
        ps=new PrintStream(new BufferedOutputStream(new FileOutputStream("小花花")),true);
        ps.println("小麻子");//在文件中打印
        ps.close();
        //重定向输出端到文件
        System.setOut(ps);
        System.out.println("小麻子真的很喜欢小饺子");
        //重定向到控制台
        System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)),true));//true为是否是自动刷新
        System.out.println("小麻子爱吃草");
        
    }
}

文件分割。合并方法的封装:

public class Main
{
    //源头
    private File src;
    //目的地(文件夹)
    private String destDir;
    //所有分割后的存储路径
    private List<String> desPaths;
    //每块大小
    private int blockSize;
    //块数,多少块
    private int size;

    public Main(String srcPath, String destDir, int blockSize) {
        this.src = new File(srcPath);
        this.destDir = destDir;
        this.blockSize = blockSize;
        this.desPaths =new ArrayList<String>();
        init();
    }
    public static void main(String[]args) throws IOException {
        Main m=new Main("D:\\.txt", "dest",1024);
        m.splitDetails();
        m.merge("小花花.text");
    }
    private void init()
    {
        long len=src.length();
        //多少块
        this.size=(int)Math.ceil(len*1.0/blockSize);
        //路径
        for(int i=0;i<size;i++)
        {
            this.desPaths.add(this.destDir+"/"+i+"-"+this.src.getName());
        }
    }
    
    public void merge(String desPath) throws IOException {
        OutputStream os=new BufferedOutputStream(new FileOutputStream(desPath));
        Vector<InputStream>vi=new Vector<InputStream>();
        SequenceInputStream sis=null;
        for(int i=0;i<size;i++)
        {
            vi.add(new BufferedInputStream(new FileInputStream(desPaths.get(i))));
        }
        sis=new SequenceInputStream(vi.elements());
            byte[]flush=new byte[1024];
            int len=-1;
            while((len=sis.read(flush))!=-1) {

                os.write(flush, 0, len);

            }


        sis.close();
        os.close();



    }
    
    public void splitDetails() throws IOException {
        long len=src.length();
        int beginPos=0;
        int actualSize=(int)(blockSize>len?len:blockSize);
        for(int i=0;i<size;i++)
        {
            beginPos=i*blockSize;
            if(i==size-1)actualSize=(int)len;
            else
                actualSize=blockSize;
            len-=actualSize;
            split(i,beginPos,actualSize);
        }
    }
    //分割
   private void split(int i,int beginPos,int actualSize) throws IOException {//指定起始位置,读取其他所有内容
        RandomAccessFile raf=new RandomAccessFile(this.src,"r");
        RandomAccessFile raf2=new RandomAccessFile(this.desPaths.get(i),"rw");
        raf.seek(beginPos);
        byte[]flush=new byte[1024];
        int len=-1;
        while((len=raf.read(flush))!=-1)
        {
            if(actualSize>len)
            {
                raf2.write(flush,0,len);
                actualSize-=len;
            }
            else
            {
                raf2.write(flush,0,actualSize);
                break;
            }
        }raf2.close();raf.close();
    }
}


IOcommons环境搭建:

多线程:方法间的调用,一条路径,多线程,多条路径。

写题总结:

C - Standings

#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct
{
    int id;
    long long a;
    long long sum;


} ha;
ha h[200010];

bool cmp(ha x,ha y)
{
    if(x.a*y.sum !=y.a*x.sum)
    return x.a*y.sum > y.a*x.sum;
    else
        return x.id<y.id;
}

int main()
{
//没有转型,会超出int范围


    int n;
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {

        int j,k;
        scanf("%d %d",&j,&k);
        h[i].id=i;
        h[i].a=j;
        h[i].sum=j+k;

    }
    //Quilkll(1,n);
    sort(h+1,h+n+1,cmp);
    for(int i=1; i<=n; i++)
    {
        printf("%d ",h[i].id);
    }
    return 0;


}

这个题如果直接去套公式的话,是不可以的,double精度会爆炸,所以不要用除法,可以用乘法,吧除以某个数乘以到另一边去,然后用sort排序就可以了,反正冒泡排序会时间超限,其实这个题目里面暗含了一个条件,暗示了sort不仅要重构比较公式,更重要的是如果两个公式值相等,那么就按照原来的排序,不可以变序,如果是直接用sort并且像下面这样简单的构造的话,只可以拿到20/23;

bool cmp(ha x,ha y)
{
    return x.a*y.sum > y.a*x.sum;
}

直接上代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct
{
    int id;
    long long a;
    long long sum;


} ha;
ha h[200010];

bool cmp(ha x,ha y)
{
    if(x.a*y.sum !=y.a*x.sum)
    return x.a*y.sum > y.a*x.sum;
    else
        return x.id<y.id;
}

int main()
{
//没有转型,会超出int范围


    int n;
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {

        int j,k;
        scanf("%d %d",&j,&k);
        h[i].id=i;
        h[i].a=j;
        h[i].sum=j+k;

    }
    //Quilkll(1,n);
    sort(h+1,h+n+1,cmp);
    for(int i=1; i<=n; i++)
    {
        printf("%d ",h[i].id);
    }
    return 0;


}

注意:sum要用longlong;

A - 排序

有点开心第一次写这么简单的排序题:但是还是有坑,题目规定

 所以可以看到代码如下:

#include<stdio.h>
#include<algorithm>
using namespace std;
int a[100010];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {

        scanf("%d",&a[i]);

    }
    sort(a,a+n);

    for(int i=0;i<n;i++)
    {
        if(i==n-1)
        printf("%d\n",a[i]);
        else
            printf("%d ",a[i]);


    }
    return 0;



}

B - Medicine

刚看到这题看了一个小时才看懂题目QAQ,所以我现在最想做的就是来说一下题意:第一行,n表示药物的种类,m表示这个药物的片数,从第二行开始表示在ai天内都要吃bi片i第i种药,也就是第二行的例子表示,在接下来的6天里,都要吃第一种药8片,然后题目要求的是最早在第几天这个人吃的药的片数会小于或者这个m,我的思路是:先将这几种药的吃的天数和每天吃多少粒进行打包,然后按照它们的天数进行排序,然后从最少的天数去一一减掉,后面没过,其实一一减去里面有大量重复的情况,可以按照每一种的天数去减,这样就能减小时间复杂度:

下面来说说具体步骤:

1.将所有种类的总片数也就是一天最多吃的片数求出来;

2.将输入的出第一行外的数据两个都打包成结构体;按照天数排序;

3.然后遍历数组比较z和m从天数最少的b的片数开始减,当z开始小于或者等于m的时候,就可以将此时的天数拿出来了;

4.到那时这时候的天数是刚好满足,消耗完了,这时候的天数+1才是刚好真的没有那些减去的药了,这时候的天数才是答案;

#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct
{
    int a;
    int b;
} ha;
bool cmp(ha x,ha y)
{

    return x.a>y.a;
}
ha h[300010];
int main()
{
    int n,k;
    scanf("%d %d",&n,&k);
    long long z=0;
    for(int i=0; i<n; i++)
    {
        scanf("%d %d",&h[i].a,&h[i].b);

    }
    for(int i=0;i<n;i++)
    {
        z+=h[i].b;
    }
    sort(h,h+n,cmp);

    long long day=0;



    int i;
    for( i=n-1;i>=0;i--)
    {
        if(z<=k)break;
        z-=h[i].b;


    }
    day=h[i+1].a+1;

    printf("%d",day);
    return 0;

}

今日份心灵鸡汤已送达:即使说了那么多丧气的话,也一直在努力生活啊,表面泄气就好啦,内心一定要偷偷给自己鼓劲儿!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解 JVM - 认识垃圾回收机制与类加载过程

前言 本篇通过介绍JVM是什么&#xff0c;认识JVM的内存区域的划分&#xff0c;了解类加载过程&#xff0c;JVM中垃圾回收机制&#xff0c;从中了解到垃圾回收机制中如何找到存活对象的方式&#xff0c;引用计数与可达性分析的方式&#xff0c;再释放垃圾对象时使用的方式&…

【YOLO】yolov5的训练策略1 -- 训练热身warmup

目录 一、什么是训练热身二、常见的训练热身1. Constant Warmup2. Linner Warmup2. Cosine Warmup 三、yolov5的训练热身代码 一、什么是训练热身 众所周知学习率是一个非常重要的超参数&#xff0c;直接影响着网络训练的速度和收敛情况。通常情况下&#xff0c;网络开始训练之…

DNS 是如何影响你冲浪速度的?

本文详细介绍了 DNS 相关知识&#xff0c;包括 DNS 工作原理、如何提升域名解析速度、以及 DNS 记录与报文等内容。 1. 域名与域名服务器 在日常上网过程中&#xff0c;出于好记的原因&#xff0c;人们更喜欢在浏览器中输入网站的域名&#xff0c;而不是 IP 地址。比如想要访问…

小红书如何运营 策略方法总结

大家好&#xff0c;我是权知星球&#xff0c;今天跟大家分享一下小红书如何运营和策略方法总结。 小红书是一个生活方式和消费决策平台&#xff0c;并为用户提供入口&#xff0c;作为一个生活方式社区&#xff0c;小红书的独特之处在于其用户发布的内容都来自于真实生活&#…

MySQL-DDL-数据库操作

开发项目流程 数据库设计-DDL DDL&#xff1a;Data Definition Language&#xff0c;数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库、表&#xff09; 数据库 常见操作 查询 查询所有数据库&#xff1a;show databases&#xff1b; 查询当前数据库&#xf…

A Simple Framework for Contrastive Learning of Visual Representations(论文翻译)

A Simple Framework for Contrastive Learning of Visual Representations 摘要1介绍2 方法2.1 对比学习框架2.2 训练大批量数据2.3 评估协议 3.用于对比表示学习的数据增强3.1.数据增强操作的组合对于学习良好的表示至关重要3.2 对比学习需要更强的数据增强比有监督学习 4. 编…

STM32单片机WIFI阿里云老人智能家居语音识别定时吃药

实践制作DIY- GC00158-WIFI阿里云老人智能家居语音识别定时吃药 一、功能说明&#xff1a; 基于STM32单片机设计------WIFI阿里云老人智能家居语音识别定时吃药 二、功能说明&#xff1a; 电路组成&#xff1a;STM32F103CXT6最小系统LD3322语音识别模块LCD1602显示按键1个ULN2…

【网络安全】渗透测试工具——Burp Suite

渗透测试工具Burp Suite主要功能详解 前言一、 Proxy模块1.1 界面布局1.1.1 菜单栏&#xff08;1&#xff09; 菜单栏 Burp&#xff08;2&#xff09; 菜单栏 project&#xff08;3&#xff09; 菜单栏 Intruder&#xff08;4&#xff09; 菜单栏 Repeater&#xff08;5&#x…

微信小程序开发:必须掌握的 HTML、CSS 和 JavaScript 技术

引言 小程序是一种轻量级的应用程序&#xff0c;通过HTML、CSS和JavaScript等前端技术开发&#xff0c;可在移动设备上直接访问和使用&#xff0c;无需下载和安装。 文章目录 引言一、小程序开发的背景和重要性二、HTML、CSS和JavaScript在小程序开发中的作用三、HTML基础知识1…

一篇文章搞定《JVM的完美图解》

一篇文章搞定《JVM的完美图解》 前言常见的问题1、双亲委托机制2、类加载过程加载链接初始化 3、JVM内存结构图方法区堆栈本地方法栈程序计数器 4、对象的组成对象头示例数据对齐字节 5、JVM中怎么确定一个对象是否可以GC引用计数法&#xff08;早期策略&#xff09;可达性分析…

Java设计模式之行为型-中介者模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基础概念 中介者模式的核心思想是引入一个中介者对象&#xff0c;来封装和管理对象之间的交互关系。 对象之间不再直接交互&#xff0c;而是通过中介者间接交互。这样可以减少对象之间的依赖&…

浏览器调试技巧

浏览器调试技巧 文章将介绍几个 devtools 技巧。 缩放devtool ui 可能对于某些开发来说devtools 中的文本和按钮太小&#xff0c;使用起来不舒服。而浏览器也提供了可以缩放 devtools UI的方法。 devtools 的用户界面是使用 HTML、CSS 和 JavaScript 构建的&#xff0c;这意…

中国地图数据可视化制作,python的pyecharts模块读取excel中国着色地图可视化

数据格式如下&#xff1a; import pandas as pd from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.globals import ChartType# 读取Excel数据 data pd.read_excel(C:\\Users\\Administrator\\Desktop\\国内数据.xlsx)# 创建地图实例 m…

大学英语四六级考点听力案例-内蒙古民族大学外国语学院四六级考试听力电台

大学英语四六级考点听力案例-内蒙古民族大学外国语学院四六级考试听力电台 北京海特伟业科技有限公司发布于2023年7月13日 文/任洪卓 一、大学英语四六级考点听力广播系统用户需求 内蒙古民族大学位于内蒙古东部通辽市&#xff0c;是一所综合型民族大学&#xff0c;为内蒙古自…

电子水尺——实时监测、高精度测量

法国作家雨果说过&#xff1a;一个城市的良心是下水道。当洪水四溢时&#xff0c;城市的下水道让滔滔之水悄然排淌&#xff0c;城市回归安详。 往期&#xff0c;水位监测总是“被动”执行&#xff0c;这样的做法不仅效率低下&#xff0c;还难以做到及时调度和合理应对。 山东…

2023.7.13-输入一个整数n,输出从1开始累加到n的求和

从1累加到n的计算公式为S(1n)n/2。 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a1;int i 0;int sum 0;printf("整数n的值:");scanf("%d",&a);for (i 0; i < a; i){sum i;}printf("从…

opencv 05 彩色RGB像素值操作

opencv 05 彩色RGB像素值操作 RGB 模式的彩色图像在读入 OpenCV 内进行处理时&#xff0c;会按照行方向依次读取该 RGB 图像的 B 通道、G 通道、R 通道的像素点&#xff0c;并将像素点以行为单位存储在 ndarray 的列中。例如&#xff0c; 有一幅大小为 R 行C 列的原始 RGB 图像…

用户案例 | Apache DolphinScheduler 离线调度在自如多业务场景下的应用与实践

用户案例 | 自如 随着自如业务的快速发展&#xff0c;不断增长的调度任务和历史逾万的存量任务对平台稳定性提出了更高的要求。同时&#xff0c;众多非专业开发人员也需要一种更为“亲民”的调度平台使用体验。 如何满足这些日渐凸显的需求对自如大数据平台的开发团队来说&am…

重复值--Pandas

1. 删除重复行&#xff1a;drop_duplicate() 1.1 函数功能 返回去除重复行的DataFrame&#xff0c;不考虑索引。 1.2 函数语法 DataFrame.drop_duplicates(subsetNone, *, keepfirst, inplaceFalse, ignore_indexFalse)1.3 函数参数 参数含义subset列标签或列标签组成的列…

操作系统第四篇

C语言 第四章 C语言4.1 gcc简介4.2 C语言基础4.3 GNU Binutils 简介4.4 8086 汇编与 C 语言混合编程4.4.1 混合编程的几个问题4.4.2 混合编程的一个实例 第四章 C语言 前面章节用 x86 汇编语言写了引导记录 mbr.bin&#xff0c;并让 BIOS 引导到内存 0x07c00 处执行成功。然后用…