当前位置: 首页 > 编程日记 > 正文

[零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)

MIS信息管理系统实战开发之使用MySQL实现保存
image
开发背景
image
ID、姓名、年龄为公共信息,而学生有成绩,工人有工资
定义一个抽象类Person(ID、姓名、年龄),学生是其子类,有成绩,工人是其子类有工资
ID如何定义呢?
ID最好可以自己生成,最好的方式是采用下面的编码方式:
· 标记 + 时间戳 + 三位随机数
· 例如:2009年3月22 20:10:10.345
· 学生的标记为s,工人的标记为w
· 生成的ID号: 学生 --> s20090322201010345023
                           工人 --> w20090322201010345023
因为现在的程序要满足文件和数据库的操作标准,所以此处应该定义出一个公共的标准 —— 接口
查询信息的时候可以进行排序操作,可以使用Comparable接口完成。
整个代码中牵扯到数据层的操作
· 数据层就是指真实的数据操作 --> CRUD。
· 最终结果操作的肯定是一个人(人为工人和学生)
应该进行分开,一个是全部的学生管理,一个是全部的工人管理。
数据层操作标准定义完成之后,有两种选择,一种是直接使用子类实现,但是以后的修改不是很方便,
所以此处最好使用代理设计的思路完成,做一个中间层。
代码关系:
Main --> Menu --> PersonOperate --> DAO
因为程序即要求使用文件保存,又要求使用数据库保存,所以此处可以设计出一个工厂,通过此工厂进行DAO的操作子类实例取得。
在之前程序的基础上加入数据库的功能,现在不使用文件保存了,而使用数据库进行保存。
如果现在要是把一个完整的PersonDAO接口分为StudentDAO和WorkerDAO两个接口,则调用处就不用修改代码。
image
数据库使用的是mysql,所以需要单独安装一个数据库的驱动程序
image
image  
##################Michael分割线##########################
PersonDAO.java
package org.michael.demo.dao;    
import java.util.Set;    
import org.michael.demo.vo.Person;    
// 定义具体的数据的操作方法    
public interface PersonDAO {    
        /**    
         * 插入数据的操作    
         *    
         * @param person    
         *                        插入的是一个人员信息    
         * @return 操作成功与否的提示    
         * @throws Exception    
         *                         如果有错误,则把错误抛给调用处处理    
         */
    
        public boolean doCreate(Person person) throws Exception;    
        /**    
         * 更新数据操作    
         *    
         * @param person    
         *                        更新的具体信息    
         * @return 更新成功与否的提示    
         * @throws Exception    
         *                         如果有错误,则把错误抛出    
         */
    
        public boolean doUpdate(Person person) throws Exception;    
        /**    
         * 按id删除信息    
         *    
         * @param id    
         *                        人员的编号    
         * @return 删除与否的提示    
         * @throws Exception    
         *                         如果有错误,则在调用处处理    
         */
    
        public boolean doDelete(String id) throws Exception;    
        /**    
         * 因为查询是多个,所以要返回Set集合    
         *    
         * @return 全部的查询结果,一个Set中包含了多个Person对象    
         * @throws Exception    
         */
    
        public Set<Person> findAll() throws Exception;    
        /**    
         * 按id进行查询    
         *    
         * @param id    
         *                        人员的编号    
         * @return 具体的人员信息    
         * @throws Exception    
         */
    
        public Person findById(String id) throws Exception;    
        /**    
         * 按关键字进行查询    
         *    
         * @param keyWord    
         *                        输入的关键字    
         * @return 返回一组信息    
         * @throws Exception    
         */
    
        public Set<Person> findByLike(String keyWord) throws Exception;    
}
PersonDAOImplJDBC.java
package org.michael.demo.dao.impl;    
import java.sql.PreparedStatement;    
import java.sql.ResultSet;    
import java.util.Set;    
import java.util.TreeSet;    
import org.michael.demo.dao.PersonDAO;    
import org.michael.demo.dbc.DataBaseConnection;    
import org.michael.demo.vo.Person;    
import org.michael.demo.vo.Student;    
import org.michael.demo.vo.Worker;    
public class PersonDAOImplJDBC implements PersonDAO {    
        private DataBaseConnection dbc = null;    
        private String type = null;    
        // 查询操作分为两点,要么是查询工人,要么是查询学生    
        public PersonDAOImplJDBC(String type) {    
                this();    
                this.type = type;    
        }    
        public PersonDAOImplJDBC() {    
        }    
        public boolean doCreate(Person person) throws Exception {    
                this.dbc = new DataBaseConnection();    
                boolean flag = false;    
                try {    
                        PreparedStatement pstmt = null;    
                        // 如果传入的是学生,则type为0,如果传入的是工人,则type为1    
                        String sql = null;    
                        float temp = 0.0f;    
                        if (person instanceof Student) {    
                                Student stu = (Student) person;    
                                temp = stu.getScore();    
                                sql = "INSERT INTO tperson(id,name,age,score,type) VALUES (?,?,?,?,0)";    
                        }    
                        if (person instanceof Worker) {    
                                Worker wor = (Worker) person;    
                                temp = wor.getSalary();    
                                sql = "INSERT INTO tperson(id,name,age,salary,type) VALUES (?,?,?,?,1)";    
                        }    
                        pstmt = this.dbc.getConnection().prepareStatement(sql);    
                        pstmt.setString(1, person.getId());    
                        pstmt.setString(2, person.getName());    
                        pstmt.setInt(3, person.getAge());    
                        pstmt.setFloat(4, temp);    
                        pstmt.executeUpdate();    
                        pstmt.close();    
                        flag = true;    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        // 最终无论是否发生异常,都必须关闭数据库    
                        this.dbc.close();    
                }    
                return flag;    
        }    
        public boolean doDelete(String id) throws Exception {    
                this.dbc = new DataBaseConnection();    
                boolean flag = false;    
                try {    
                        PreparedStatement pstmt = null;    
                        // 如果传入的是学生,则type为0,如果传入的是工人,则type为1    
                        String sql = null;    
                        sql = "DELETE FROM tperson WHERE id=?";    
                        pstmt = this.dbc.getConnection().prepareStatement(sql);    
                        pstmt.setString(1, id);    
                        pstmt.executeUpdate();    
                        pstmt.close();    
                        flag = true;    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        // 最终无论是否发生异常,都必须关闭数据库    
                        this.dbc.close();    
                }    
                return flag;    
        }    
        public boolean doUpdate(Person person) throws Exception {    
                this.dbc = new DataBaseConnection();    
                boolean flag = false;    
                try {    
                        PreparedStatement pstmt = null;    
                        // 如果传入的是学生,则type为0,如果传入的是工人,则type为1    
                        String sql = null;    
                        float temp = 0.0f;    
                        if (person instanceof Student) {    
                                Student stu = (Student) person;    
                                temp = stu.getScore();    
                                sql = "UPDATE tperson SET name=?,age=?,score=? WHERE id=?";    
                        }    
                        if (person instanceof Worker) {    
                                Worker wor = (Worker) person;    
                                temp = wor.getSalary();    
                                sql = "UPDATE tperson SET name=?,age=?,salary=? WHERE id=?";    
                        }    
                        pstmt = this.dbc.getConnection().prepareStatement(sql);    
                        pstmt.setString(1, person.getName());    
                        pstmt.setInt(2, person.getAge());    
                        pstmt.setFloat(3, temp);    
                        pstmt.setString(4, person.getId());    
                        pstmt.executeUpdate();    
                        pstmt.close();    
                        flag = true;    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        // 最终无论是否发生异常,都必须关闭数据库    
                        this.dbc.close();    
                }    
                return flag;    
        }    
        public Set<Person> findAll() throws Exception {    
                this.dbc = new DataBaseConnection();    
                Set<Person> newSet = new TreeSet<Person>();    
                String sql = null;    
                if ("0".equals(this.type)) {    
                        sql = "SELECT id,name,age,score FROM tperson WHERE type=?";    
                }    
                if ("1".equals(this.type)) {    
                        sql = "SELECT id,name,age,salary FROM tperson WHERE type=?";    
                }    
                PreparedStatement pstmt = null;    
                try {    
                        pstmt = this.dbc.getConnection().prepareStatement(sql);    
                        pstmt.setString(1, this.type);    
                        ResultSet rs = pstmt.executeQuery();    
                        while (rs.next()) {    
                                // 要进行判断,判断是实例化Student还是实例化Worker    
                                if ("0".equals(this.type)) {    
                                        newSet.add(new Student(rs.getString(1), rs.getString(2), rs    
                                                        .getInt(3), rs.getFloat(4)));    
                                }    
                                if ("1".equals(this.type)) {    
                                        newSet.add(new Worker(rs.getString(1), rs.getString(2), rs    
                                                        .getInt(3), rs.getFloat(4)));    
                                }    
                        }    
                        rs.close();    
                        pstmt.close();    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        this.dbc.close();    
                }    
                return newSet;    
        }    
        public Person findById(String id) throws Exception {    
                this.dbc = new DataBaseConnection();    
                Person person = null;    
                String sql = null;    
                if ("0".equals(this.type)) {    
                        sql = "SELECT id,name,age,score FROM tperson WHERE id=?";    
                }    
                if ("1".equals(this.type)) {    
                        sql = "SELECT id,name,age,salary FROM tperson WHERE id=?";    
                }    
                PreparedStatement pstmt = null;    
                try {    
                        pstmt = this.dbc.getConnection().prepareStatement(sql);    
                        pstmt.setString(1, id);    
                        ResultSet rs = pstmt.executeQuery();    
                        while (rs.next()) {    
                                // 要进行判断,判断是实例化Student还是实例化Worker    
                                if ("0".equals(this.type)) {    
                                        person = new Student(rs.getString(1), rs.getString(2), rs    
                                                        .getInt(3), rs.getFloat(4));    
                                }    
                                if ("1".equals(this.type)) {    
                                        person = new Worker(rs.getString(1), rs.getString(2), rs    
                                                        .getInt(3), rs.getFloat(4));    
                                }    
                        }    
                        rs.close();    
                        pstmt.close();    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        this.dbc.close();    
                }    
                return person;    
        }    
        public Set<Person> findByLike(String keyWord) throws Exception {    
                this.dbc = new DataBaseConnection();    
                Set<Person> newSet = new TreeSet<Person>();    
                String sql = null;    
                sql = "SELECT id,name,age,score FROM tperson WHERE type=? AND name LIKE ?";    
                PreparedStatement pstmt = null;    
                try {    
                        pstmt = this.dbc.getConnection().prepareStatement(sql);    
                        pstmt.setString(1, this.type);    
                        pstmt.setString(2, "%" + keyWord + "%");    
                        ResultSet rs = pstmt.executeQuery();    
                        while (rs.next()) {    
                                // 要进行判断,判断是实例化Student还是实例化Worker    
                                if ("0".equals(this.type)) {    
                                        newSet.add(new Student(rs.getString(1), rs.getString(2), rs    
                                                        .getInt(3), rs.getFloat(4)));    
                                }    
                                if ("1".equals(this.type)) {    
                                        newSet.add(new Worker(rs.getString(1), rs.getString(2), rs    
                                                        .getInt(3), rs.getFloat(4)));    
                                }    
                        }    
                        rs.close();    
                        pstmt.close();    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        this.dbc.close();    
                }    
                return newSet;    
        }    
}
DataBaseConnection.java
package org.michael.demo.dbc;    
import java.sql.Connection;    
import java.sql.DriverManager;    
import java.sql.SQLException;    
//数据库的连接操作类    
public class DataBaseConnection {    
        private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";    
        private static final String DBURL = "jdbc:mysql://localhost:3306/51cto";    
        private static final String DBUSER = "root";    
        private static final String DBPASSWORD = "mysqladmin";    
        private Connection conn = null;    
        public DataBaseConnection() {    
                try {    
                        Class.forName(DBDRIVER);    
                } catch (ClassNotFoundException e) {    
                        // TODO Auto-generated catch block    
                        e.printStackTrace();    
                }    
                try {    
                        this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);    
                } catch (SQLException e) {    
                        // TODO Auto-generated catch block    
                        e.printStackTrace();    
                }    
        }    
        public Connection getConnection() {    
                return this.conn;    
        }    
        public void close(){    
                try {    
                        this.conn.close() ;    
                } catch (SQLException e) {    
                        // TODO Auto-generated catch block    
                        e.printStackTrace();    
                }    
        }    
}
 
数据库创建脚本
DROP TABLE tperson ;    
CREATE TABLE tperson    
(    
        id        VARCHAR(50)        PRIMARY KEY NOT NULL ,    
        name        VARCHAR(50)        NOT NULL ,    
        age        INT                NOT NULL ,    
        score        FLOAT ,    
        salary        FLOAT ,    
        type        INT    NOT NULL DEFAULT 0    
) ;    
-- 如果type的值为0,则表示学生,如果type的值为1则表示工人。
DAOFactory.java
package org.michael.demo.factory;    
import org.michael.demo.dao.PersonDAO;    
import org.michael.demo.proxy.PersonDAOProxyJDBC;    
public class DAOFactory {    
        public static PersonDAO getPersonDAOInstance(String path) {    
                return new PersonDAOProxyJDBC(path);    
        }    
}
FileOperate.java
package org.michael.demo.io;    
import java.io.File;    
import java.io.FileInputStream;    
import java.io.FileOutputStream;    
import java.io.ObjectInputStream;    
import java.io.ObjectOutputStream;    
import java.util.TreeSet;    
import org.michael.demo.vo.Person;    
public class FileOperate {    
        private File file = null;    
        // 在够方法处必须指定保存文件的名字    
        public FileOperate(String path) {    
                this.file = new File(path);    
                if (!this.file.exists()) {    
                        // 如果内容不存在,则认为是第一次操作,需要初始化    
                        try {    
                                this.save(new TreeSet<Person>()) ;    
                        } catch (Exception e) {    
                                e.printStackTrace();    
                        }    
                }    
        }    
        // 把对象保存在文件之中    
        public void save(Object obj) throws Exception {    
                ObjectOutputStream out = null;    
                try {    
                        out = new ObjectOutputStream(new FileOutputStream(this.file));    
                        // 写入对象    
                        out.writeObject(obj);    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        try {    
                                out.close();    
                        } catch (Exception e) {    
                        }    
                }    
        }    
        // 把对象从文件之中读进来    
        public Object load() throws Exception {    
                Object obj = null;    
                ObjectInputStream input = null;    
                try {    
                        input = new ObjectInputStream(new FileInputStream(this.file));    
                        obj = input.readObject();    
                } catch (Exception e) {    
                        throw e;    
                } finally {    
                        try {    
                                input.close();    
                        } catch (Exception e) {    
                        }    
                }    
                return obj;    
        }    
}
Main.java
package org.michael.demo.main;    
import org.michael.demo.menu.Menu;    
public class Main {    
        public static void main(String[] args) {    
                new Menu();    
        }    
}
#################Michael分割线####################
[零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](2)
[零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](3)
#################Michael分割线####################
源代码下载
#################Michael分割线####################

相关文章:

【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

近期学了学数论&#xff0c;来写一波总结吧。 &#xff08;1&#xff09;排列组合&#xff0c;比较基础的东西了吧。//只写个概念吧,(逃&#xff1a; 概念&#xff1a;就是从n个不同元素中&#xff0c;任取m(m≤n)个元素并成一组&#xff0c;叫做从n个不同元素中取出m个元素的一…

遍历Treeview每个节点并初始化(C#)

搞了好久&#xff0c;哎&#xff0c;C#的一些控件用起来还没习惯&#xff0c;所以折腾啊。 TreeView的形成&#xff0c;必然要初始化&#xff0c;数据记录是从数据库中取得的&#xff0c;那么要先取再遍历。介绍下心得吧。 首先&#xff0c;数据预期显示结果如下 其次&#xff…

codeforces3A

Shortest path of the king CodeForces - 3A 棋盘上的国王被单独放置。尽管他是孤独的&#xff0c;但并未伤心&#xff0c;因为他有事关全局的重要性。例如&#xff0c;他必须正式访问方格 t 。由于国王不习惯于浪费自己的时间&#xff0c;因此他想用最小的移动步数&#xff0…

for...in和 for...of

在对数据或者对象进行遍历时&#xff0c;经常使用的两种方法是 for...in和 for...of&#xff0c;那么这两种方法有什么区别呢&#xff1f; for…in for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。 语法&#xff1a; for (variable in object) {// statem…

J2EE复习(二)XML

2019独角兽企业重金招聘Python工程师标准>>> XML&#xff08;eXtensible Markup Language&#xff09;简介XML 可扩展标记语言XML是一种您可以用来创建自己的标记的标记语言。XML由万维网协会&#xff08;W3C&#xff09;创建 XML和Html比较比较内容 …

Angular 路由

Angular 路由 简单路由配置 每个带路由的 Angular 应用都有一个Router&#xff08;路由器&#xff09;服务的单例对象。 当浏览器的 URL 变化时&#xff0c;路由器会查找对应的 Route&#xff08;路由&#xff09;&#xff0c;并据此决定该显示哪个组件。 路由器需要先配置才…

leecode第二十题(有效的括号)

class Solution { public:bool isValid(string s) {int start0,ends.size()-1;if(end-1)//万万没想到&#xff0c;他把空字符串当成true了return true;int ss[end1];//歪方法&#xff0c;把左括号全部<0&#xff0c;右括号都>0&#xff0c;且同类型符号绝对值一样for(int…

开始Hibernate介绍

1.介绍 一个框架 一个Java领域内的持久化框架 一个ORM框架 2.持久化 和数据库相关的各种操作 保存 更新 删除 查询 加载&#xff1a;根据特定的OID&#xff0c;把一个对象从数据库加载到你内存中。 OID&#xff1a;为了在系统中找到所需的对象&#xff0c;需要为每一个对象分配…

STL容器[06]

Linux文件锁学习笔记 转载于:https://www.cnblogs.com/motadou/archive/2009/11/25/1610328.html

ASP.NET 2.0在SQL Server 2005上自定义分页

这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页。对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法。如果需要&#xff0c;这篇文章会补上这里讲到的内容。 出处&#xff1a;http://aspnet.4guysfromrolla.com/demos/printPag…

简单安装与使用composer

1、下载composer.exe工具&#xff0c;然后进行安装 这一步需要找到你使用的php版本文件 2、windowsr cmd 输入composer 安装中国镜像&#xff0c;提高使用效率 https://pkg.phpcomposer.com/ 赋值到cmd中执行即可。 1、找到自己的php环境地址并进入&#xff0c;如&#xf…

[推荐]C#快速开发3d游戏工具--Unity3d

最近有幸接触了一点Unity3d的东西&#xff0c;和大家分享一下。 Unity3d 简介 是一款可视化的&#xff0c;3d游戏开发软件。可以进行手动绘制3d场景&#xff0c;自己添加摄像机角度&#xff0c;3d模型设计&#xff0c;事件触发&#xff0c;对于园子里大家很感兴趣的地方在于&am…

Angular 可观察对象(Observable)

可观察对象(Observable) 可观察对象支持在应用的发布者和订阅者之间传递消息。 可观察对象是声明式的 —— 即定义的用于发布值的函数&#xff0c;在有消费者订阅它之前&#xff0c;这个函数不会实际执行。 可观察对象可能会发出的三种通知&#xff1a; 通知类型说明next必要…

select框高度问题

<div class"article-start-box"> <span class"categery">分类栏目</span> <select style"position: absolute;z-index: 1;margin-left: 40px;" class"choose" οnmοusedοwn"if(this.options.length>6)…

c#技巧教程(连载)

c#技巧教程系列_1 http://www.rayfile.com/files/e03d922e-2418-11de-858a-0019d11a795f/ 转载于:https://www.cnblogs.com/manwu2008/archive/2009/04/08/1431823.html

JavaScript 数据拷贝

JavaScript 数据类型 基本数据类型&#xff1a;字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、对空&#xff08;Null&#xff09;、未定义&#xff08;Undefined&#xff09;、Symbol。引用数据类型&#xff1a;对象( Object )、数组( Array ) 和 方法…

Java链表和递归

删除链表的指定元素&#xff1a; public class ListNode {public int val;public ListNode next;public ListNode(int x){valx;}//链表节点的构造函数//使用arr为参数&#xff0c;创建一个链表&#xff0c;当前的ListNode为链表头节点public ListNode(int arr[]){if(arrnull||a…

设计模式笔记(9)---组合模式(结构型)

Gof定义 将对象组合成树形结构以表示“部分--整体”的层次结构。Composite使得用户对单个对象和组合对象使用具有一致性。 在面向对象系统中&#xff0c;我们经常会遇到一类具有”容器“特征的对象---即他们在充当对象的同时&#xff0c;又是其他对象的容器。比如在一些管理系统…

npm install出现的错误

在使用cnpm 安装node依赖包的时候&#xff0c;出现上述错误&#xff0c;网上搜索&#xff0c;说是有两个解决方案&#xff1a; 虽然提示不适合Windows&#xff0c;但是问题好像是sass loader出问题的。所以只要执行下面命令即可&#xff1b; 方案一&#xff1a; cnpm rebuild n…

射频放大器芯片3阶截点计算与芯片选择

在选用射频放大器芯片时&#xff0c;除了需要考虑增益、噪声指数等指标外&#xff0c;线性指标也是必须关注的参数。在射频或微波多载波通讯系统中&#xff0c;三阶交调截取点IP3&#xff08;Third-order Intercept Point&#xff09;是一个衡量线性度或失真的重要指标。交调失…

Python-接口自动化(二)

python基础知识&#xff08;二&#xff09; &#xff08;二&#xff09;常用控制流 1、控制语句 分支语句&#xff1a;起到一个分支分流的作用&#xff0c;类似马路上的红绿灯 循环语句&#xff1a;for while 可以使代码不断重复的执行 2、判断语句&#xff1a;关键字是if..eli…

Angular CLI在线安装和离线安装

Angular CLI 安装方式 默认已经安装了 Node.js 和 npm 包管理器。 1. 在线安装 可以使用外网的情况下&#xff0c;可以使用在线安装的方式。 要使用 npm 命令全局安装 CLI&#xff0c;请打开终端/控制台窗口&#xff0c;输入如下命令&#xff1a; npm install -g angular/…

近来工作和面试一些人的感受(原)

最近公司招聘&#xff0c;面试了很多人&#xff0c;有牛人 - 无所不能的&#xff0c;自认为没必要再提高的牛人&#xff0c;有硕士&#xff0c;有啥都不懂乱投简历的&#xff0c;有简历项目经验写几十个的各种技术都精通的&#xff0c;还有水平一般却要求薪水很高的&#xff0c…

关于vue+webpack的一点配置

开发环境跨域访问&#xff1a; config/index.js 增加proxyTable里的内容&#xff0c;然后可以在config/dev.env.js中设置访问地址的origin为"/api" 本地图片访问问题&#xff1a; 一般&#xff0c;放在static下&#xff0c;图片访问地址设置成‘./static/....’ js等…

2.5Gb/s混合集成光发射机

0、引言<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />在信息呈爆炸式发展的今天&#xff0c;光纤通信已成为现代信息网络的主要传输手段&#xff0c;近几年国家干线网大部分仍采用2.5Gb/s系统, 10Gb/s系统正积极研制开发&…

laravel5.8的使用

首先&#xff0c;确定电脑已经安装了composer。最好是全局安装 然后打开phpstorm的控制台&#xff1a; composer create-project --prefer-dist laravel/laravel blog另外一种方式步骤多。然后中间配置的地方又多&#xff0c;不推荐。 artisan 在Laravel根目录下运行&#xff1…

npm install 报错 npm ERR! code Z_BUF_ERROR 问题解决

问题描述&#xff1a; 使用npm install命令安装依赖时&#xff0c;出现错误&#xff0c;报错信息如下&#xff1a; npm ERR! code Z_BUF_ERROR npm ERR! errno -5 npm ERR! zlib: unexpected end of file解决方式&#xff1a; 使用如下命令安装淘宝镜像后&#xff0c;重新执…

BZOJ——1202: [HNOI2005]狡猾的商人

http://www.lydsy.com/JudgeOnline/problem.php?id1202 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4075 Solved: 1958[Submit][Status][Discuss] Description 刁姹接到一个任务&#xff0c;为税务部门调查一位商人的账本&#xff0c;看看账本是不是伪造的。账本上记录…

ASP.NET禁用视图状态

1、站点禁用视图状态<configuration> <system.web> <pages enableViewState"false"/> </system.web> </configuration>2、页面禁用视图状态<% Page EnableViewState"false" %>转载于:https://www.cnb…

Virtual PC磁盘的最佳压缩方式

随着vpc不断的使用,vpc的磁盘就会一天一天的增大,于是你试着去把那些在vpc上面的软件都删除了,可是发现体积仍然没有什么改观,我还尝试过将系统都格式化了,仍然没有什么太大的变化. 经过苦苦搜寻还是得到了大数人提供的解决办法:首先启动虚拟机进到系统,然后装载母机vpc安装目录…