IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021.09.17 -> 正文阅读

[PHP知识库]2021.09.17

简单的仓库管理系统的实现:学校项目实验

  • 这个小项目做的也是勉强实现功能,但感觉代码有一部分太过冗余,比如修改产品可以用set方法,而我相当于直接删掉了再重新赋值商品属性,只是保留原来的产品id而已
package o0917;

public class Product {
    String productName;
    int productNums;
    double productPrice;
    int productStoreNum;
    int productIdtifies;

    @Override
    public String toString() {
        return "Product{" +
                "productName='" + productName + '\'' +
                ", productNums=" + productNums +
                ", productPrice=" + productPrice +
                ", productStoreNum=" + productStoreNum +
                ", productIdtifies=" + productIdtifies +
                '}';
    }

    public Product(){

    }

    public Product(int productIdtifies,String productName, int productNums, double productPrice, int productStoreNum) {
        this.productIdtifies = productIdtifies;
        this.productName = productName;
        this.productNums = productNums;
        this.productPrice = productPrice;
        this.productStoreNum = productStoreNum;
    }

    public int getProductIdtifies() {
        return productIdtifies;
    }
}
package o0917;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class General {
    public static void main(String[] args) {
        General general = new General();

        while (true){
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入功能编号:");
            int number = scanner.nextInt();

            if (number == 1){
                general.increment();
            }else if (number == 2){
                general.alterProduct();
            }else if (number == 3){
                general.deleteProduct();
            }else if (number == 4){
                general.showProduct();
            }else if (number == 0){
                System.out.println("Bye~");
                return;
            }else{
                System.out.println("编号有误请重新输入");
            }
        }

    }

    List<Product> list = new ArrayList<>();
    int tmpProductIdtifies = 1;

    /**
     * 查询商品
     */
    public void showProduct() {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入产品id:");
        int p_id = scanner.nextInt();

        for(int i = 0;i < list.size(); i ++){
            Product tmp = list.get(i);
            if (tmp.getProductIdtifies() == p_id){
                System.out.println(tmp.toString());
            }
        }
    }

    /**
     * 添加产品
     */
    public void increment() {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入产品名称:");
        String p_name = scanner.nextLine();

        System.out.print("请输入产品数量:");
        int p_nums = scanner.nextInt();

        System.out.print("请输入产品价格:");
        double p_price = scanner.nextDouble();

        System.out.print("请输入产品货柜:");
        int p_store = scanner.nextInt();

        list.add(new Product(tmpProductIdtifies++,p_name,p_nums,p_price,p_store));
        System.out.println("添加成功");
    }

    /**
     * 删除商品
     */
    public void deleteProduct() {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入产品id:");
        int p_id = scanner.nextInt();

        for(int i = 0;i < list.size(); i ++){
            Product tmp = list.get(i);
            if (tmp.getProductIdtifies() == p_id){
                list.remove(tmp);
            }
        }
        System.out.println("删除成功");
    }

    /**
     * 修改商品
     */
    public void alterProduct() {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入产品id:");
        int p_id = scanner.nextInt();

        for(int i = 0;i < list.size(); i ++){
            Product tmp = list.get(i);
            if (tmp.getProductIdtifies() == p_id){
                list.remove(tmp);
                Scanner scanner2 = new Scanner(System.in);

                System.out.print("请输入产品名称:");
                String p_name = scanner2.nextLine();

                System.out.print("请输入产品数量:");
                int p_nums = scanner2.nextInt();

                System.out.print("请输入产品价格:");
                double p_price = scanner2.nextDouble();

                System.out.print("请输入产品货柜:");
                int p_store = scanner2.nextInt();

                list.add(new Product(p_id,p_name,p_nums,p_price,p_store));
                System.out.println("修改成功");
            }
        }
    }
}

线程池 :实现线程管理/font>

package ksdxc.d27;

import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

public class d27 {
    public static void main(String[] args) {
        /*
        创建线程池
        newFixedThreadPool
        参数为连接池大小
         */
        ExecutorService service = Executors.newFixedThreadPool(9);
        /*
        执行
         */
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());
        /*
        关闭连接
         */
        service.shutdown();
    }
}

class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

TCP/IP协议与UDP协议:

  • TCP:用户传输协议,可以看成打电话
    连接,稳定
    三次握手,四次挥手
    客户端,服务端
    效率低,传输完成,释放连接
  • UDP:用户数据报协议,可以看成发短信
    不连接,不稳定
    不管有没有准备好,都可以发给你
    DDOS:洪水攻击(饱和攻击)
    想成定向导弹
  • 分为四层:应用层,传输层,网络层,数据链路层

集合迭代器以及contains源码分析

package com.base.du667;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class du667 {
    public static void main(String[] args) {
        /*
        测试Collection接口中的常用方法
        多态
        父类引用指向子类对象
        这一类集合有序可重复
         */
        Collection collection = new ArrayList();
        /*
        自动装箱 java5新特性
        Integer integer = new Integer(1201241014)
        只能存对象的内存地址
         */
        collection.add("&#106;&#105;&#110;&#97;&#104;&#115;&#117;&#97;");
        collection.add("&#104;&#117;&#97;&#101;&#114;&#106;&#105;&#114;&#115;&#104;&#105;");

        System.out.println(collection.size());

        /*
        迭代集合
         */
        Collection collection1 = new ArrayList();
        collection1.add("&#104;&#117;&#97;&#15;");
        collection1.add("&#105;&#118;&#97;&#10;");
        collection1.add("&#114;&#106;&#97;&#19;");
        collection1.add(new Object());
       /*
       拿到迭代器对象
        */
        Iterator iterator = collection1.iterator();

        while (iterator.hasNext()) {
            Object object = iterator.next();
            System.out.println(object);
        }
        /*
        思考题
         */
        ArrayList<Object> objects = new ArrayList<>();
        String x01 = new String("&#104");
        String x02 = new String("&#106");
        String x03 = new String("&#106");

        objects.add(x01);
        objects.add(x02);
        objects.add(x03);
        /*
        由于String在底层重写了equals
        contains在调用equals方法时
        比较的是内容而非内存地址
         */
        System.out.println(objects.contains(x03)); // true
    }
}

在这里插入图片描述

package com.base.du674;

import java.util.ArrayList;

public class du674 {
    public static void main(String[] args) {
        ArrayList<Object> objects = new ArrayList<>();

        User user1 = new User("cat");
        User user2 = new User("cat");

        objects.add(user1);
        System.out.println(objects.contains(user2)); // false
        /*
        User类没有重写equals方法
        contains底层调用equals方法
        实际上调用了Object上的equals方法
        而Object上的equals方法使用 == 比较对象内存地址
         */
    }
}

class User {
    private String uname;

    public User(){

    }

    public User(String uname) {
        this.uname = uname;
    }
}
class User {
    private String uname;

    public User(){

    }

    public User(String uname) {
        this.uname = uname;
    }
    /*
    alt + insert
    重写equals方法
    重写的equals方法:只要姓名一样,就表示同一个用户
    再次调用,结果为true
    所以,放在集合中的元素,需要重写equals方法
     */

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(uname, user.uname);
    }
}

集合中remove方法源码分析:

package com.base.du675;

import java.util.ArrayList;

public class du675 {
    public static void main(String[] args) {
        ArrayList<Object> objects = new ArrayList<>();

        String bbww1 = new String("bbww");
        String bbww2 = new String("bbww");

        objects.add(bbww1);

        // objects.remove(bbww2);
        System.out.println(objects.size()); // 0

        objects.add(bbww2);
        objects.remove(bbww2);
        System.out.println(objects.size()); // 0

        /*
        说明remove底层调用了equals方法
        在这里bbww1和bbww2是一样的
        查看remove源码:进入ArrayList方法集
        按ctrl + f12
        使用英文输入法进行搜索
         */
    }
}

集合迭代器重新获取:

package com.base.du677;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class du677 {
    public static void main(String[] args) {
        Collection<Object> objects = new ArrayList<>();

        /*
        如果在这里获取迭代器
        迭代器指向的是集合中没有元素状态下的迭代器
        集合结构改变需要重新获取
        否则调用next方法会报错
        java.util.ConcurrentModificationException 并发异常
         */
        // Iterator<Object> iterator = objects.iterator();

        /*
        存值
         */
        objects.add(1024);
        objects.add(1026);
        objects.add(1030);

        /*
        应该在这里获取迭代器
         */
        Iterator<Object> iterator = objects.iterator();

        while (iterator.hasNext()){
            Object object = iterator.next();
            /*
            如果这里执行删除操作
            集合结构发生改变
            直接通过集合删除元素
            没有通知迭代器
            导致迭代器的快照和原先集合状态不同
            因为迭代器会迭代集合调用iterator方法生成的快照
            快照相当于林书记集合
            遍历完一次后
            会发生并发异常
             */
            // objects.remove(object);
            /*
            如果想要执行删除操作
            应该使用迭代器删除
             */
            iterator.remove();
            System.out.println(object);
        }
    }
    System.out.println(objects.size()); // 0
}
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:45:54  更:2021-09-19 07:47:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 4:27:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计