前言:

项目是使用Java swing开发,可实现基础数据维护、图书类型管理和维护、图书信息管理和维护、注销退出、关于作者简介等功能。界面设计比较简介、适合作为Java课设设计以及学习技术使用。

引言

随着计算机及网络技术的飞速发展,Intranet 应用在全球范围内日益普及, 当今社会正快速向信息化社会前进,信息系统的作用也越来越大。图书馆在正常运营中总是面对大量的读者信息,书籍信息以及由两者相互作用产生的借书信息,还书信息。因此图书管理信息化是发展的必然趋势。用结构化系统分析与设计的方法,建立一套有效的图书信息管理系统,可以减轻工作,将工作科学化、规范化,提高了图书馆信息管理的工作质量因此根据图书馆目前实际的管理情况开发一套冬书管理系统是一分必要的。

主要技术和工具:

eclipse+JDK1..8+Navicat +swing +mysql

功能截图:

图书类型管理:

图书类型管理维护、可以根据图书类型查看图书信息、可以根据编号和信息删除修改图书类型信息

图书信息管理:

图书信息维护管理、点击图书维护可以根据图书名称、作者以及图书类型模糊查询图书信息、可以点击下面的输入框进行数据修改和删除操作

选中数据进行修改和删除操作

图书添加:

作者简介:

注销退出:

关键代码:

主入口:

package com.HPioneer.view;import java.awt.BorderLayout;
import java.awt.EventQueue;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import java.awt.GridLayout;
import javax.swing.SpringLayout;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JDesktopPane;
import java.awt.Color;
import java.awt.SystemColor;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;public class MainFrm extends JFrame {private JPanel contentPane;private JDesktopPane table = null;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {MainFrm frame = new MainFrm();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public MainFrm() {setTitle("图书管理主界面");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);JMenuBar menuBar = new JMenuBar();setJMenuBar(menuBar);JMenu menu = new JMenu("基本数据维护");menu.setIcon(new ImageIcon(MainFrm.class.getResource("/images/base.png")));menuBar.add(menu);JMenu mnNewMenu = new JMenu("图书类别管理");mnNewMenu.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookTypeManager.png")));menu.add(mnNewMenu);JMenuItem menuItem = new JMenuItem("图书类别添加");menuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {BookTypeAddInterFrm bookTypeAddInterFrm = new BookTypeAddInterFrm();bookTypeAddInterFrm.setVisible(true);table.add(bookTypeAddInterFrm);}});menuItem.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));mnNewMenu.add(menuItem);JMenuItem menuItem_2 = new JMenuItem("图书类别维护");menuItem_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {BookTypeManagerInterFrm bookTypeManagerInterFrm = new BookTypeManagerInterFrm();bookTypeManagerInterFrm.setVisible(true);table.add(bookTypeManagerInterFrm);}});menuItem_2.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));mnNewMenu.add(menuItem_2);JMenu mnNewMenu_1 = new JMenu("图书管理");mnNewMenu_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookManager.png")));menu.add(mnNewMenu_1);JMenuItem menuItem_1 = new JMenuItem("图书添加");menuItem_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {BookAddInterFrm bookAddInterFrm = new BookAddInterFrm();bookAddInterFrm.setVisible(true);table.add(bookAddInterFrm);}});menuItem_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));mnNewMenu_1.add(menuItem_1);JMenuItem mntmNewMenuItem = new JMenuItem("图书维护");mntmNewMenuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {BookManageInterFrm bookManagerInterFrm = new BookManageInterFrm();bookManagerInterFrm.setVisible(true);table.add(bookManagerInterFrm);}});mntmNewMenuItem.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));mnNewMenu_1.add(mntmNewMenuItem);JMenuItem menuItem_3 = new JMenuItem("安全退出");menuItem_3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {int result =JOptionPane.showConfirmDialog(null,"是否退出系统");}});menuItem_3.setIcon(new ImageIcon(MainFrm.class.getResource("/images/exit.png")));menu.add(menuItem_3);JMenu menu_1 = new JMenu("关于作者");menu_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/about.png")));menuBar.add(menu_1);JMenuItem mntmhpioneer = new JMenuItem("关于奥斯卡");mntmhpioneer.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HPioneer1234InterFrm hPioneer1234InterFrm = new HPioneer1234InterFrm();hPioneer1234InterFrm.setVisible(true);table.add(hPioneer1234InterFrm);}});mntmhpioneer.setIcon(new ImageIcon(MainFrm.class.getResource("/images/userName.png")));menu_1.add(mntmhpioneer);contentPane = new JPanel();contentPane.setForeground(Color.BLUE);contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(new BorderLayout(0, 0));table = new JDesktopPane();     table.setBackground(Color.WHITE);contentPane.add(table);//设置Jrame最大化this.setExtendedState(JFrame.MAXIMIZED_BOTH);}
}

添加图书:

package com.HPioneer.view;import java.awt.EventQueue;import javax.swing.JInternalFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;import com.HPioneer.dao.BookDao;
import com.HPioneer.dao.BookTypeDao;
import com.HPioneer.model.Book;
import com.HPioneer.model.BookType;
import com.HPioneer.util.DbUtil;
import com.HPioneer.util.StringUtil;
import com.mysql.jdbc.Connection;import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JTextArea;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;public class BookAddInterFrm extends JInternalFrame {private JTextField bookNameTxt;private JTextField authorTxt;private final ButtonGroup buttonGroup = new ButtonGroup();private JTextField priceTxt;private DbUtil dbUtil = new DbUtil();private BookTypeDao bookTypeDao = new BookTypeDao();private BookDao bookDao = new BookDao();private    JComboBox bookTypeJcb;private JTextArea bookDescTxt;private JRadioButton manJrb; private JRadioButton femaleJrb;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {BookAddInterFrm frame = new BookAddInterFrm();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public BookAddInterFrm() {setIconifiable(true);setClosable(true);setTitle("图书添加");setBounds(100, 100, 450, 463);JLabel lblNewLabel = new JLabel("图书名字:");bookNameTxt = new JTextField();bookNameTxt.setColumns(10);JLabel lblNewLabel_1 = new JLabel("图书作者:");authorTxt = new JTextField();authorTxt.setColumns(10);JLabel lblNewLabel_2 = new JLabel("作者性别:");manJrb = new JRadioButton("男");buttonGroup.add(manJrb);manJrb.setSelected(true);femaleJrb = new JRadioButton("女");buttonGroup.add(femaleJrb);JLabel lblNewLabel_3 = new JLabel("图书价格:");priceTxt = new JTextField();priceTxt.setColumns(10);JLabel lblNewLabel_4 = new JLabel("图书描述:");bookDescTxt = new JTextArea();JLabel lblNewLabel_5 = new JLabel("图书类别:");bookTypeJcb = new JComboBox();JButton btnNewButton = new JButton("添加");btnNewButton.setIcon(new ImageIcon(BookAddInterFrm.class.getResource("/images/add.png")));btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {bookAddActionPerformed(e);}});JButton btnNewButton_1 = new JButton("重置");btnNewButton_1.setIcon(new ImageIcon(BookAddInterFrm.class.getResource("/images/add.png")));btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {bookValueActionPerformed(e);}});btnNewButton_1.setIcon(new ImageIcon(BookAddInterFrm.class.getResource("/images/reset.png")));GroupLayout groupLayout = new GroupLayout(getContentPane());groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addGap(28).addGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addComponent(lblNewLabel_4).addPreferredGap(ComponentPlacement.RELATED).addComponent(bookDescTxt, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)).addGroup(groupLayout.createSequentialGroup().addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false).addGroup(groupLayout.createSequentialGroup().addComponent(lblNewLabel_2).addPreferredGap(ComponentPlacement.UNRELATED).addComponent(manJrb).addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(femaleJrb)).addGroup(groupLayout.createSequentialGroup().addComponent(lblNewLabel).addPreferredGap(ComponentPlacement.RELATED).addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, 91, GroupLayout.PREFERRED_SIZE))).addGap(18).addGroup(groupLayout.createParallelGroup(Alignment.LEADING).addComponent(lblNewLabel_3).addComponent(lblNewLabel_1)).addPreferredGap(ComponentPlacement.RELATED).addGroup(groupLayout.createParallelGroup(Alignment.LEADING).addComponent(authorTxt, GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE).addComponent(priceTxt, GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))).addGroup(groupLayout.createSequentialGroup().addComponent(btnNewButton).addGap(33).addComponent(btnNewButton_1)).addGroup(groupLayout.createSequentialGroup().addComponent(lblNewLabel_5).addPreferredGap(ComponentPlacement.RELATED).addComponent(bookTypeJcb, 0, 262, Short.MAX_VALUE))).addGap(80)));groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addGap(33).addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(lblNewLabel).addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addComponent(authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addComponent(lblNewLabel_1)).addGap(26).addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(lblNewLabel_2).addComponent(manJrb).addComponent(femaleJrb).addComponent(lblNewLabel_3).addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)).addGap(26).addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(lblNewLabel_5).addComponent(bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)).addGap(30).addGroup(groupLayout.createParallelGroup(Alignment.LEADING).addComponent(lblNewLabel_4).addComponent(bookDescTxt, GroupLayout.PREFERRED_SIZE, 140, GroupLayout.PREFERRED_SIZE)).addPreferredGap(ComponentPlacement.RELATED, 38, Short.MAX_VALUE).addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(btnNewButton).addComponent(btnNewButton_1)).addGap(50)));getContentPane().setLayout(groupLayout);//显示文本域边框bookDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185),1,false));fillBookType();}/*** 重置事件处理* @param e*/private void bookValueActionPerformed(ActionEvent e) {// TODO Auto-generated method stubthis.resetValue();}private void bookAddActionPerformed(ActionEvent evt) {// TODO Auto-generated method stubString bookName = this.bookNameTxt.getText();String author = this.authorTxt.getText();String price = this.priceTxt.getText();String bookDesc = this.bookDescTxt.getText();if(StringUtil.isEmpty(bookName)){JOptionPane.showMessageDialog(null,"图书名称不能为空");}if(StringUtil.isEmpty(author)){JOptionPane.showMessageDialog(null,"图书作者不能为空");}if(StringUtil.isEmpty(price)){JOptionPane.showMessageDialog(null,"图书价格不能为空");}String sex ="";if(manJrb.isSelected()){sex="男";}else{sex="女";}BookType bookType =(BookType) bookTypeJcb.getSelectedItem();int bookTypeId = bookType.getId();Book book = new Book(bookName,author,sex,Float.parseFloat(price),bookTypeId,bookDesc);Connection con = null;try{con=dbUtil.getCon();int addNum = bookDao.add(con, book);      if(addNum == 1){JOptionPane.showMessageDialog(null,"图书类别添加成功"); resetValue();}else{JOptionPane.showMessageDialog(null,"图书类别添加失败");}}catch(Exception e){e.printStackTrace();  JOptionPane.showMessageDialog(null,"图书类别添加失败");}finally{try{dbUtil.closeCon(con);}catch (Exception e) {// TODO: handle exceptione.printStackTrace();   }}}/*** 重置表单*/private void resetValue() {// TODO Auto-generated method stubthis.bookNameTxt.setText("");this.authorTxt.setText("");this.priceTxt.setText("");this.manJrb.setSelected(true);this.bookDescTxt.setText("");if(this.bookTypeJcb.getItemCount()>0){this.bookTypeJcb.setSelectedIndex(0);}}/*** 初始化图书类别下拉框*/private void fillBookType(){Connection con = null;BookType bookType = null;try{con = dbUtil.getCon();ResultSet rs = bookTypeDao.list(con, new BookType());while( rs.next() ){bookType = new BookType();bookType.setId(rs.getInt("id"));bookType.setBookTypeName(rs.getString("bookTypeName"));this.bookTypeJcb.addItem(bookType);}}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{}}
}

数据库设计:

用户表:

CREATE TABLE `NewTable` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`userName`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=2
ROW_FORMAT=COMPACT
;

图书表:

CREATE TABLE `NewTable` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`bookName`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`author`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`sex`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`price`  float NULL DEFAULT NULL ,
`bookTypeId`  int(255) NULL DEFAULT NULL ,
`bookTypeName`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`bookDesc`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
FOREIGN KEY (`bookTypeId`) REFERENCES `t_booktype` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX `by` (`bookTypeId`) USING BTREE
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=3
ROW_FORMAT=COMPACT
;

图书类型表

CREATE TABLE `NewTable` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`bookTypeName`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`bookTypeDesc`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=9
ROW_FORMAT=COMPACT
;

备注:项目来于网络、作者整理优化测试、若有侵权联系作者删除

总结:

本系统是在汤蓉老师的悉心指导下顺利完成的,从系统的选题、方案的制定以及论文的撰写,每一步都倾注着我们整个团队的心血。在此,衷心感谢大家对我们这个项目整个过程的积极筹划以及出谋划策,在面对困难的时候大家共通过不放弃,通过各种办法解决各种困难在此同时感谢汤蓉和徐振明老师,缜密的逻辑,活跃的思维,敏锐的洞察力,严谨的治学态度以及民主的作风给我留下了深刻的印象,为我开阔了视野,丰富了学识,并将使我受益终身,我学习的楷模;汤蓉老师的工作态度和说教方式让我们感到很亲切与他相处的也很融洽。感谢计算机科学与技术专业、计算机系的全体老师辛勤培养和教诲!

完整源码下载地址

JavaSwing系列项目推荐:

基于JavaSwing的经典坦克大战游戏设计实现

基于JavaSwing ATM取款机系统的设计和实现

基于JavaSwing+mysql的学生社团管理系统设计和实现

打卡JavaSwing项目更新 2 / 100篇

大家可以点赞、收藏、关注、评论我啦 

基于JavaSwing+mysql的图书管理系统设计和实现相关推荐

  1. JavaSwing+mysql的图书管理系统设计实现

      本项目演示地址链接  >  前言: 项目是使用Java swing开发,可实现基础数据维护.图书类型管理和维护.图书信息管理和维护.注销退出.关于作者简介等功能.界面设计比较简介.适合作为J ...

  2. 【Java图书馆系统app】基于Vue+Vant+SSM图书管理系统设计

    源码地址:[Java图书馆系统app]基于Vue+Vant+SSM图书管理系统设计.zip_java条码管理系统-Android文档类资源-CSDN下载具体运行截图见项目说明:https://blog ...

  3. 基于javaweb+mysql的就业管理系统设计和实现(java+springboot+ssm)

    基于javaweb+mysql的就业管理系统设计和实现(java+springboot+ssm) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/s ...

  4. 基于RFID的简易图书管理系统设计与实现

    本次开发主要做了从串口分别获取读者卡号和图书卡号,实现图书管理,图书借阅,读者管理等功能.开发语言是C#,开发环境使用Visual Studio 2015.数据库采用sql Server. RFID选 ...

  5. 基于JavaSwing的学生考勤管理系统设计与实现

    目录 前言 7 一.系统开发环境及相关技术 8 (一)系统设计思想及处理流程 8 (二)运行环境 8 (三)开发技术及开发工具简介 8 三.需求分析 10 (一)学生用户需求 10 (二)老师用户需求 ...

  6. 基于C#+MySQL的停车场管理系统设计与实现

    目录 1绪论 2 1.1内容简介及意义 2 1.2开发工具及技术介绍 2 2总体设计 4 2.1系统总体架构 4 2.2登录模块总体设计 6 2.3主界面模块总体设计 7 2.4停车证管理模块总体设计 ...

  7. java实训答辩ppt_基于JavaSwing的工作考勤管理系统设计与实现毕业论文+开题报告+实习报告+实习日历+答辩PPT+项目源码...

    工作考勤管理系统 摘    要 考勤管理员的考勤的工作不仅工做量大,而且时效性强.在过去,企业多采用签到和报表式进行管理,效率和透明度较差.计算机技术特别是数据库技术的发展为企业建立管理信息系统,对改 ...

  8. 基于JavaSwing+Mysql的仓库管理系统设计和实现

    前言:           本项目是使用Java swing开发,可实现仓库管理系统登陆/注册/重置.登录后可以进行系统管理.原料管理.成品管理.管理记录以及注销退出等几大模块.界面设计比较简介.适合 ...

  9. 基于Mysql+JavaSwing的超市商品管理系统设计与实现

    文章来源: 学习通http://www.bdgxy.com/ 目录 1.功能介绍 2.关键代码 2.1 主页功能 2.2 添加商品信息 2.3 数据库设计 商品表 前言: 随着小超市规模的发展不断扩大 ...

最新文章

  1. Castle.MVC框架介绍
  2. Js选择框脚本 移动操作select 标签中的 option 项的操作事项
  3. 真正理解 MySQL 的四种隔离级别
  4. 只用一次+ 求三个整数之和
  5. frontend badi
  6. 【渝粤题库】国家开放大学2021春3938管理英语2题目
  7. 【CSU - 1980 】不堪重负的树(树上区间dp)
  8. cppcheck的安装和使用
  9. SQL Server 2005远程连接连不上的解决办法收藏 Microsoft给的方法
  10. mysql 绕过权限检查_跳过权限检查,强制修改mysql密码
  11. 海龟交易法则01_玩风险的交易者
  12. c++标准程序库:STL容器之map
  13. 位说法的由来_南方土地庙有榕树的原因,为何会有榕树不容人的说法?
  14. java简单入门教程_史上最快速最简单的java入门教程
  15. 三峡大学本科毕业论文答辩PPT模板
  16. 转录组学分析之基因芯片的预处理
  17. Altium-Designer6.9安装报错Application Error
  18. 去除加粗的css,CSS去掉b加粗和strong加粗标签样式
  19. Java小白常问的问题大全
  20. 连接本地数据库,mysql提示Can‘t connect to MySQL server on localhost (10061)解决办法

热门文章

  1. java变量用来干嘛_Java
  2. mysql数据库表名批量改为小写,MySQL 批量修改表名
  3. foreach lambda写法_Java8新特性之forEach+Lambda 表达式遍历Map和List
  4. android 打开系统相册_这5款常用Android手机自动化测试工具你要收藏
  5. 2 s锁是什么_《演员请就位》:一场戏拿了2张S卡,任敏凭什么打败老戏骨?
  6. thinkphp v5.0.11漏洞_ThinkPHP5丨远程代码执行漏洞动态分析
  7. 制表符空格数设置(阿里巴巴使用4个空格)
  8. IPv4地址和IPv6地址的比较,IPv6地址及其表示
  9. MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)
  10. python实现监控增量_python 日志增量抓取实现方法