课程信息管理系统(javabean + Servlet + jsp)

时间:2022-08-18 00:34:40

此项目做的事一个课程管理系统,需要通过web做一个可以实现课程的增删改查的功能。

需要用到数据库,Servlet和jsp等(第一次使用Servlet和数据库连接,所以代码都比较低级,页面也比较粗糙,还没有实现Servlet处理后数据的回传,还未实现模糊查询)

程序所建的项目如下:

课程信息管理系统(javabean + Servlet + jsp)

数据表的格式:

课程信息管理系统(javabean + Servlet + jsp)

1.首先建立数据库链接

course/src/com.jdbc.util/BaseConnection.java

代码如下:

 package com.jdbc.util;

 import java.sql.Connection;
import java.sql.DriverManager; public class BaseConnection { public static Connection getConnection(){//用这个方法获取mysql的连接
Connection conn=null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/sql?characterEncoding=utf8&useSSL=true";
String user = "root";
String password = "";//此处填写数据库连接密码
try{
Class.forName(driver);//加载驱动类
conn=DriverManager.
getConnection(url,user,password);//(url数据库的IP地址,user数据库用户名,password数据库密码)
}catch(Exception e){
e.printStackTrace();
}
return conn;
} public static void main(String[] args) {
System.out.println("连接成功");
}
}

利用javabean建立一个课程类:

course/src/com.jdbc.bean/Course:

代码如下:

 package com.jdbc.bean;

 public class Course {

 private String classname;
private String teacher;
private String place; public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
} }

为了后期操作的方便我将一些增删改查的方法写到了一个类中,把他们封装为一个一个的具体的方法

course/src/com.jdbc.dao/JdbcMain.java

代码如下:

 package com.jdbc.dao;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner; import com.jdbc.bean.Course;
import com.jdbc.util.BaseConnection; public class JdbcMain {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
// TODO 自动生成的方法存根 } public static int add(Course cour)
{
Connection conn= BaseConnection.getConnection(); String sql = "insert into course values(?,?,?)"; int b = 0;
PreparedStatement ps=null;
try{ ps= conn.prepareStatement(sql);//把写好的sql语句传递到数据库,让数据库知道我们要干什么 ps.setString(1,cour.getClassname()); ps.setString(2,cour.getTeacher()); ps.setString(3, cour.getPlace()); int a=ps.executeUpdate();//这个方法用于改变数据库数据,a代表改变数据库的条数
if(a>0){
b++;
System.out.println("添加成功"); }else{
System.out.println("添加失败"); }
}catch(Exception e){
e.printStackTrace();
}try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
} return b;
} public static int update(Course cour )
{
int b = 0; Connection conn= BaseConnection.getConnection();
PreparedStatement ps=null;
String sql="update course set place=?,teacher=? where class=?";
try{
ps=conn.prepareStatement(sql); ps.setString(1,cour.getPlace());
ps.setString(2,cour.getTeacher());
ps.setString(3,cour.getClassname());
int a=ps.executeUpdate();
if(a>0){
b++;
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
} return b;
} public static int delete(String classname) {
int b = 0;
Connection conn=BaseConnection.getConnection();
PreparedStatement ps=null;
String sql="delete from course where class =?"; try{
ps=conn.prepareStatement(sql);
ps.setString(1, classname);
int a=ps.executeUpdate();
if(a>0){
b++;
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
}
return b;
} public static Course find(String s)
{
Connection conn= BaseConnection.getConnection();
PreparedStatement ps=null; ResultSet rs = null; Course cour = new Course(); String sql="select * from course where class =?"; try {
ps=conn.prepareStatement(sql); ps.setString(1, s);
rs=ps.executeQuery();
if(rs.next()){
cour.setClassname(rs.getString("class"));
cour.setTeacher(rs.getString("teacher"));
cour.setPlace(rs.getString("place")); } } catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally{
try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
if(rs!=null)
{
rs.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
} return cour;
} }

下面建立主界面:

主界面主要就是在界面中介入了多个链接,通过对链接的点击,进行页面的跳转,实现不同的操作。

路径 /course/WebContent/admin/main.jsp

代码如下:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页面</title>
</head>
<body> <a href="javascript:location.reload()">刷新页面</a></br>
<a href="add.jsp" target="iframe_a">增加课程</a></br>
<a href="delete.jsp" target="iframe_a">删除课程</a></br>
<a href="update.jsp" target="iframe_a">修改课程</a></br>
<a href="find.jsp" target="iframe_a">查询课程</a></br>
<a href="ShowAll.jsp" target="iframe_a">显示全部课程</a> </body>
</html>

课程添加页面:

路径/course/WebContent/admin/add.jsp

代码如下:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/Manage?method=add" method="post" id="add"> 课程名称:<input name = "class" type = "text" ></br>
任课教师:<input name = "teacher" type = "text"></br>
上课地点:<input name = "place" type = "text"></br>
<input type="submit"value="保存" > </form>
</body>
</html>

删除页面:主要操作就是通过课程名称找到课程位置,输出一下他的具体信息并将其删除

路径/course/WebContent/admin/delete.jsp

代码如下:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>删除界面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/Manage?method=delete" method="post" id="delete"> 输入您要删除的课程:<input type = "text" name = "class"> <input type="submit"value="提交" >
</form>
</body>
</html>

修改页面:通过课程名称进行搜索,并对课程信息进行修改,现在还存在的问题是都是通过课程名称找到的还能修改课程名称。

路径/course/WebContent/admin/update.jsp

代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>修改课程信息</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/Manage?method=update" method="post" id="update"> 课程名称:<input name = "class" type = "text"></br>
任课教师:<input name = "teacher" type = "text"></br>
上课地点:<input name = "place" type = "text"></br> <input type="submit"value="提交" >
</form>
</body>
</html>

查找界面:现在只实现了通过课程名称查找,还没有实现模糊查询

路径/course/WebContent/admin/find.jsp

代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>查找</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/Manage?method=find" method="post" id="find"> 课程名称:<input name = "class" type = "text">
<input type="submit"value="提交" >
</form>
</body>
</html>

显示所有页面:输出数据库中的全部数据

路径/course/WebContent/admin/show.jsp

代码如下:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 <%@page import="com.jdbc.dao.JdbcMain"%>
<%@page import="com.jdbc.util.BaseConnection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Connection"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>显示全部</title>
</head>
<body>
<form name = "form6" action = "main.jsp" method = "post">
<% Connection conn= BaseConnection.getConnection();
PreparedStatement ps=null;
ResultSet rs = null;
String sql = "select * from course";
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();//执行数据库查询的方法,放到rs中 String classname = null;
String teacher = null;
String place = null;
while(rs.next()){ classname = rs.getString("class"); teacher = rs.getString("teacher");
place = rs.getString("place"); //输出结果
out.println(classname + "\t" + teacher + '\t' + place + "</br>");
} } catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}if(rs!=null)
{
rs.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
} %>
<input type = "submit" value = "返回" >
</form>
</body>
</html>

根据界面出入的数据,都将其传入Servlet中然后对其进行处理,由于不会使用数据的回传,无法通过页面的形式给出提示信息,所以就用java的提示框进行对结果的提示了

Servlet路径/course/src/servelet/Manage.java

代码如下:

 package servelet;

 import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon; import com.jdbc.bean.Course;
import com.jdbc.dao.JdbcMain;
import com.jdbc.util.BaseConnection; /**
* Servlet implementation class Manage
*/
@WebServlet("/Manage")
public class Manage extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public Manage() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath()); request.setCharacterEncoding("UTF-8");
String method = request.getParameter("method"); if("add".equals(method)) //添加课程
{ try {
add(request,response);
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} }else if("delete".equals(method)) //通过课程名称查找并删除对应的课程(必须是具体的课程名称,否则就显示未找到该课程,也就无法删除)
{
delete(request,response);
}else if("find".equals(method)) //查找课程信息
{
find(request,response);
}else if("update".equals(method)) //通过课程名称进行查找,并对其进行修改(由于只能通过课程查找)
{
update(request,response);
} } private void update(HttpServletRequest request, HttpServletResponse response) {
// TODO 自动生成的方法存根
Course cour = new Course(); String name = request.getParameter("class");
String teacher = request.getParameter("teacher");
String place = request.getParameter("place"); cour.setClassname(name);
cour.setTeacher(teacher);
cour.setPlace(place);
String teachers = "王建民刘立嘉刘丹王辉杨子光";
String places = "一教二教三教基教";
String pl = place.substring(0, 2); if(teachers.indexOf(teacher) != -1)
{
if(places.indexOf(pl) != -1)
{
int res=JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "提示","是否进行修改",JOptionPane.YES_NO_OPTION);
if(res==JOptionPane.YES_OPTION)
{ if (JdbcMain.update(cour)==1) { JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "成功修改", "操作成功" + name, JOptionPane.INFORMATION_MESSAGE);
response.setHeader("refresh", "0;url=admin/main.jsp"); //点击“是”后执行这个代码块
return ;
}else {
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "操作错误", "请重新操作", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/update.jsp");
return ;
}
}else
{
response.setHeader("refresh", "0;url=admin/main.jsp"); //点击“否”后执行这个代码块
return ;
}
}else
{
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "上课地点错误", "操作错误", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/update.jsp");
return ;
}
}else {
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),"没有这名教师" ,"操作错误",JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/update.jsp");
return ;
} } private void find(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
// TODO 自动生成的方法存根
request.setCharacterEncoding("UTF-8"); Course cour = new Course();
cour = JdbcMain.find(request.getParameter("class"));
if (cour.getClassname() == null) {
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "未找到相应信息", "操作错误", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/find.jsp");
}else {
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),"您要查找的是" + cour.getClassname() + cour.getTeacher() + cour.getPlace() , "操作成功", JOptionPane.INFORMATION_MESSAGE);
response.setHeader("refresh", "0;url=admin/main.jsp");
} } private void delete(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
// TODO 自动生成的方法存根
request.setCharacterEncoding("UTF-8");
String classname = request.getParameter("class");
Course cour = new Course();
cour = null;
cour = JdbcMain.find(classname);
if(cour == null)
{
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "未找到此课程", "操作错误", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/delete.jsp");
return ;
} int res=JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "请确认", "确认删除"+ cour.getClassname() + cour.getTeacher() + cour.getPlace(), JOptionPane.YES_NO_OPTION);
if(res == JOptionPane.YES_OPTION)
{
if(JdbcMain.delete(classname)==1)
{
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "操作成功", "成功删除" + cour.getClassname(), JOptionPane.INFORMATION_MESSAGE);
response.setHeader("refresh", "0;url=admin/main.jsp");
return ;
}else {
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "操作错误", "请重新操作", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/delete.jsp");
return ;
}
}else {
response.setHeader("refresh", "0;url=admin/main.jsp");
return ;
} } private void add(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException {
// TODO 自动生成的方法存根
request.setCharacterEncoding("UTF-8");
Course cour = new Course(); String classname = request.getParameter("class");
String teacher = request.getParameter("teacher");
String place = request.getParameter("place"); cour.setClassname(classname);
cour.setTeacher(teacher);
cour.setPlace(place); Connection con = BaseConnection.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from course"; try {
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
if(classname.equals(rs.getString("classname")))
{ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "课程名称重复", "操作错误", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/add.jsp"); return; } } } catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}if(con!=null){
con.close();
}if(rs!=null)
{
rs.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
} String teachers = "王建民刘立嘉刘丹王辉杨子光";
String places = "一教二教三教基教";
String pl = place.substring(0, 2); if(teachers.indexOf(teacher) != -1)
{
if(places.indexOf(pl) != -1)
{
int res=JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "您要添加的是:" + classname + teacher + place , "是否继续", JOptionPane.YES_NO_OPTION);
if(res==JOptionPane.YES_OPTION){
if (JdbcMain.add(cour) == 1) { JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "添加成功", "操作成功" + cour.getClassname(), JOptionPane.INFORMATION_MESSAGE);
response.setHeader("refresh", "0;url=admin/main.jsp");
return ;
}else
{
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "请重新操作", "操作错误", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/add.jsp");
}
//点击“是”后执行这个代码块
}else{
System.out.println("选择否后执行的代码"); //点击“否”后执行这个代码块
return;
} }else
{
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "上课地点错误", "操作错误", JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/add.jsp");
return ;
}
}else
{
JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),"没有这名教师" ,"操作错误",JOptionPane.ERROR_MESSAGE);
response.setHeader("refresh", "0;url=admin/add.jsp");
return ;
}
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

课程信息管理系统(javabean + Servlet + jsp)的更多相关文章

  1. 从零开始,编写简单的课程信息管理系统(使用jsp&plus;servlet&plus;javabean架构)

    一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并配置apache-tomcat(服务器). 4.下载MySQL(数据库). 5.下载Navicat for M ...

  2. javaweb课程信息管理系统

    1.DBUtil包连接数据库 2.Bin包设计成员函数及方法 3.Dao包设计sql语句 4.servlet包增删改查方法 5.service连接servlet 6.设计jsp增删改查页面 7.连接各 ...

  3. Java之从头开始编写简单课程信息管理系统

    编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法 详情可参考以下链接: https://www.cnblogs.com/dream0-0/p/10090828.h ...

  4. Javabean&plus;servlet&plus;JSP&lpar;html&rpar;实例应用

    大家都知道Javabean+servlet+JSP是最简单的MVC模式.的确,在一个小型的项目中,这个模式完全够用. 它优雅并且简洁.加上jQueryui的完美展示效果,让这个模式看起来非常合适.当然 ...

  5. 石家庄铁道大学课程信息管理系统(javaWeb&plus;servlet&plus;Mysql)

    实现网页版的课程管理系统,具有增删改查的功能. 1.首先连接数据库,具体数据库的使用及如何连接eclipse,参考     https://blog.csdn.net/lrici/article/de ...

  6. javabean&plus;servlet&plus;jsp实现分页

    前端实现用ligerUI实现分页,感觉用框架确实简单,闲着无聊,模拟着liger的分页界面实现了一遍(只要是功能,样式什么无视) 这里用基础的三层架构+servlet+jsp实现,思路很简单,把所有分 ...

  7. JavaBean&plus;servlet&plus;jsp——&gt&semi;对数据进行增删改查

    1.开始页面(查询数据) <%@page import="com.zdsofe.work.Student"%> <%@page import="java ...

  8. javabean&plus;servlet&plus;jsp程序&lowbar;个人辛苦探索

    主要介绍主流的java web编程技术.设计模式和框架,以及如何利用Eclipese开发Web应用程序. 要点:1.Java Web编程的主要组件技术: 2.MVC设计模式: 3.用Eclipse构建 ...

  9. 项目(1)----用户信息管理系统&lpar;5&rpar;---&lpar;剩余jsp界面)

    完成剩余jsp界面 首页界面前面我写了,接下来还有就是一个显示所有用户界面 1:注册界面 2:显示所有用户信息界面 1:注册界面 <%@ page language="java&quo ...

随机推荐

  1. Eclipse ndk fix插件开发

    一. 手工修复ndk环境bug Eclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如 ①. 头文件不识别 ②. 头文件识别了, 类型不识别 针对这一的bug,我们一般按照如 ...

  2. Lucene中几种常用的Query

    看完图之后在来详细说明一下. 1.phrasequery是用来查询短语的.注意他只针对英文,对中文并没有什么用处. 核心用法: @Test public void test02(){ //新建查询 P ...

  3. PowerDesigner从Physical Data Model转Excel

    参考资料:http://www.cnblogs.com/hggc/archive/2013/10/15/3369857.html 由于有把ER图转Excel的需求,幸运地找到一个可用脚本,稍做修改完成 ...

  4. 在&lowbar;Layout模版中使用&commat;Styles&period;Render&lpar;&rpar;没有效果

    刚才有测试一个功能,就是在_Layout母版中使用了@Styles.Render()时行Render样式文件,所有在此母版下的视图均没有应用到样式,没有效果.是什么原因? 经查证资料,原来Insus. ...

  5. Bson

    https://en.wikipedia.org/wiki/BSON BSON /ˈbiːsɒn/ is a computer data interchange format used mainly ...

  6. python成长之路【第一篇】:python简介和入门

    一.Python简介 Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言. 二.安装python windows: 1.下载安装包 https://www.pyt ...

  7. Project Euler 85 :Counting rectangles 数长方形

    Counting rectangles By counting carefully it can be seen that a rectangular grid measuring 3 by 2 co ...

  8. Centos7 如何减少&sol;home分区,扩大&sol;root分区

    把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home:tar cvf /tmp/home.tar /home #备份/home umount /hom ...

  9. python日常碎碎念--PIL

    昨天在处理网站相关图片的时候,发现图片都大小不一样,虽然一下就能想起PIL这个库,但是用法却不记得了. 简单记录一下用法. 可以直接用 Image.open 来打开图片,PIL库为这个文件对象提供了各 ...

  10. rabbitmq集群几个比较好的文章

    以下几个链接可作为搭建rabbitmq集群是的参考,个人觉得写的很详细很好 1.RabbitMQ 高可用集群搭建及电商平台使用经验总结 http://www.cnblogs.com/wangiqngp ...