编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法

详情可参考以下链接:

一、相关的软件下载和环境配置

1、下载并配置JDK。

2、下载eclipse。

3、下载并配置apache-tomcat(服务器)。

4、下载MySQL(数据库)。

5、下载Navicat for MySQL(数据库可视化工具),方便对数据库的操作。

6、下载jdbc用来实现eclipse中的项目与数据库实现连接。

二、代码

在 WebContent 文件夹下,新建如下图中的JSP文件,Login.jsp和signinerror.jsp是用来登陆的,这里不必建立。

(1)head.jsp

pageEncoding="UTF-8"%>

.headdiv{

background-color:#3F51B5;

width:100%;

height:130px;

}

.headdiv P{

font-family:YouYuan;

font-size:20px;

color:#E8EAF6;

position:relative;

left:20px;

top:45px;

}

ec-web课程信息综合管理平台

(2)left.jsp

pageEncoding="UTF-8"%>

.leftMenu{

background-color:#7986CB;

width:250px;

height:600px;

position:relative;

top:0px;

}

.menuParent{

background-color:#BBDEFB;

}

课程信息管理

课程信息录入
课程信息修改
删除课程信息
查询课程信息

(3)index.jsp

pageEncoding="UTF-8"%>

这是小主页

(4)main.jsp

pageEncoding="UTF-8"%>

课程信息管理系统

.headframe{

width:100%;

height:130px;

border:0;

}

.leftframe{

float:left;

width:250px;

height:600px;

border:0;

}

.mainframe{

float:right;

width:1200px;

height:600px;

border:0;

}

在WebContent文件夹下建立名为USEJSP的文件夹,在USEJSP文件夹下,建立如下图的JSP文件

(1)add.jsp

pageEncoding="UTF-8"%>

.butn{

display:inline-block;

padding: 8px 35px;

background-color:#32CD32;

color:white;

border:none;

text-align:center;

text-decoration:none;

border-radius:5px;

position:absolute;

left:40px;

top:95px;

}

课程名称

任课教师

上课地点

function check() {

var cname = document.getElementById("icname");

var teacher = document.getElementById("iteacher");

var place = document.getElementById("iplace");

var placestr = place.value.substring(0,2);

//非空

if(cname.value == '') {

alert('课程名称为空');

cname.focus();

return false;

}

if(teacher.value == '') {

alert('教师为空');

teacher.focus();

return false;

}

if(place.value == '') {

alert('上课地点为空');

place.focus();

return false;

}

//教师

if(teacher.value != '王建民' && teacher.value != '王辉' && teacher.value != '刘丹' && teacher.value != '刘立嘉' && teacher.value != '杨子光'){

alert('教师名称错误');

return false;

}

//教室

if(!/^基教/.test(placestr) && !/^一教/.test(placestr) && !/^二教/.test(placestr) && !/^三教/.test(placestr)) {

alert('上课地点错误');

return false;

}

return true;

}

(2)addnameerror.jsp

pageEncoding="UTF-8"%>

.butn{

display:inline-block;

padding: 8px 35px;

background-color:#32CD32;

color:white;

border:none;

text-align:center;

text-decoration:none;

border-radius:5px;

position:absolute;

left:40px;

top:95px;

}

课程名称

任课教师

上课地点

function check() {

var cname = document.getElementById("icname");

var teacher = document.getElementById("iteacher");

var place = document.getElementById("iplace");

var placestr = place.value.substring(0,2);

//非空

if(cname.value == '') {

alert('课程名称为空');

cname.focus();

return false;

}

if(teacher.value == '') {

alert('教师为空');

teacher.focus();

return false;

}

if(place.value == '') {

alert('上课地点为空');

place.focus();

return false;

}

//教师

if(teacher.value != '王建民' && teacher.value != '王辉' && teacher.value != '刘丹' && teacher.value != '刘立嘉' && teacher.value != '杨子光'){

alert('教师名称错误');

return false;

}

//教室

if(!/^基教/.test(placestr) && !/^一教/.test(placestr) && !/^二教/.test(placestr) && !/^三教/.test(placestr)) {

alert('上课地点错误');

return false;

}

return true;

}

function alt() {

alert('课程名称重复');

}

(3)delete.jsp

pageEncoding="UTF-8"%>

.butn{

display:inline-block;

padding: 8px 35px;

background-color:#32CD32;

color:white;

border:none;

text-align:center;

text-decoration:none;

border-radius:5px;

position:absolute;

left:40px;

top:95px;

}

课程名称

function check() {

var cname = document.getElementById("icname");

//非空

if(cname.value == '') {

alert('课程名称为空,请重新输入');

cname.focus();

return false;

}

return true;

}

(4)search.jsp

pageEncoding="UTF-8"%>

.butn{

display:inline-block;

padding: 8px 35px;

background-color:#32CD32;

color:white;

border:none;

text-align:center;

text-decoration:none;

border-radius:5px;

position:absolute;

left:40px;

top:95px;

}

课程名称

任课教师

上课地点

(5)update.jsp

pageEncoding="UTF-8"%>

需要修改的课程名称

输入修改信息
新课程名称 新任课教师 新上课地点 操作

function check() {

var ctempname = document.getElementById("itempcname");

var cname = document.getElementById("icname");

var teacher = document.getElementById("iteacher");

var place = document.getElementById("iplace");

var placestr = place.value.substring(0,2);

//非空

if(ctempname.value == ''){

alert('需修改课程名称为空');

teacher.focus();

return false;

}

if(cname.value == '') {

alert('课程名称为空');

cname.focus();

return false;

}

if(teacher.value == '') {

alert('教师为空');

teacher.focus();

return false;

}

if(place.value == '') {

alert('上课地点为空');

place.focus();

return false;

}

//教师

if(teacher.value != '王建民' && teacher.value != '王辉' && teacher.value != '刘丹' && teacher.value != '刘立嘉' && teacher.value != '杨子光'){

alert('教师名称错误');

return false;

}

//教室

if(!/^基教/.test(placestr) && !/^一教/.test(placestr) && !/^二教/.test(placestr) && !/^三教/.test(placestr)) {

alert('上课地点错误');

return false;

}

return true;

}

下面,生成web.xml文件(用来配置跳转路径)

在你的项目上右击,java EE Tool—》Generate Deployment Descriptor Stub

这样,在WebContent/WEB-INF文件夹下就生成了.xml文件,如下图

(1)Web.xml

curriculum_information_management_web

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

Userservlet

com.Servlet.Userservlet

Userservlet

/Servlet/Userservlet

AddCurrServlet

com.Servlet.AddCurrServlet

AddCurrServlet

/AddServlet/AddCurrServlet

SearchCurrServlet

com.Servlet.SearchCurrServlet

SearchCurrServlet

/SearchServlet/SearchCurrServlet

DeleteCurrServlet

com.Servlet.DeleteCurrServlet

DeleteCurrServlet

/DeleteServlet/DeleteCurrServlet

UpdateCurrServlet

com.Servlet.UpdateCurrServlet

UpdateCurrServlet

/UpdateServlet/UpdateCurrServlet

在项目下的 Java Resources/src 建立包,如下图

然后,在各包下建立类,如图

(1)com.Bean

package com.Bean;

public class CurrBean {

private String name;

private String teacher;

private String place;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

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;

}

}

(2)com.Dao(该包中的类是用来登录操作的,在这里只是写出来,不用实现)

package com.Dao;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

import com.DBUtil.*;

public class Userdao {

public int login(String username,String password)

{

Connection conn = DBUtil.getConn();//这里就是从DBUtil类里面得到连接

Statement state =null;

ResultSet rs = null;

int flag=0;

try

{

String sql = "select * from admin";//SQL语句

state = conn.createStatement();

rs=state.executeQuery(sql);

while(rs.next())

{

if(rs.getString("password").equals(password)&&rs.getString("username").equals(username))

{

flag=1;

}

}

}

catch(Exception e)

{

e.printStackTrace();

}

finally

{

DBUtil.close(rs, state, conn);

}

return flag;

}

}

(3)com.DBUtil建立CurrDBUtil.java文件(链接数据库)

package com.DBUtil;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class CurrDBUtil {

public static String db_url="jdbc:mysql://localhost:3306/curriculum?useSSL=true&serverTimezone=UTC";

//这是连接数据库,userdome是数据库的名称,userUnicode=true&characterEncoding=UTF-8是将字符集设置为utf-8,避免乱码。

public static String db_user="root";//数据的用户名

public static String db_password="lty";//数据库的密码

public static Connection getConn()//获取连接,返回Connection类型,必须设置为static这样才能在其他类中使用

{

Connection conn=null;

try

{

Class.forName("com.mysql.jdbc.Driver");//加载驱动

conn=DriverManager.getConnection(db_url,db_user,db_password);//连接数据库

}

catch(Exception e)

{

e.printStackTrace();

}

return conn;

}

public static void close(Statement state,Connection conn)//关闭函数

{

if(state!=null)//只有状态和连接时,先关闭状态

{

try

{

state.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

if(conn!=null)

{

try

{

conn.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

public static void close(ResultSet rs,Statement state,Connection conn)

{

if(rs!=null)//有结果集,状态和连接时,先关闭结果集,在关闭状态,在关闭连接

{

try

{

rs.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

if(state!=null)

{

try

{

state.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

if(conn!=null)

{

try

{

conn.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

建立DBUtil.java文件(用来链接登录数据库,不必实现)

package com.DBUtil;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DBUtil {

public static String db_url="jdbc:mysql://localhost:3306/userdome?useSSL=true&serverTimezone=UTC";

//这是连接数据库,userdome是数据库的名称,userUnicode=true&characterEncoding=UTF-8是将字符集设置为utf-8,避免乱码。

public static String db_user="root";//数据的用户名

public static String db_password="lty100609";//数据库的密码

public static Connection getConn()//获取连接,返回Connection类型,必须设置为static这样才能在其他类中使用

{

Connection conn=null;

try

{

Class.forName("com.mysql.jdbc.Driver");//加载驱动

conn=DriverManager.getConnection(db_url,db_user,db_password);//连接数据库

}

catch(Exception e)

{

e.printStackTrace();

}

return conn;

}

public static void close(Statement state,Connection conn)//关闭函数

{

if(state!=null)//只有状态和连接时,先关闭状态

{

try

{

state.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

if(conn!=null)

{

try

{

conn.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

public static void close(ResultSet rs,Statement state,Connection conn)

{

if(rs!=null)//有结果集,状态和连接时,先关闭结果集,在关闭状态,在关闭连接

{

try

{

rs.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

if(state!=null)

{

try

{

state.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

if(conn!=null)

{

try

{

conn.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

(4)com.Servlet

AddCurrServlet.java  实现课程的增加

package com.Servlet;

import java.io.IOException;

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.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.Bean.CurrBean;

import com.DBUtil.*;

public class AddCurrServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{

resp.setContentType("add.jsp");

req.setCharacterEncoding("UTF-8");

String name;

String teacher;

String place;

name = req.getParameter("cname");

teacher = req.getParameter("teacher");

place = req.getParameter("place");

CurrBean currbean = new CurrBean();

currbean.setName(name);

currbean.setTeacher(teacher);

currbean.setPlace(place);

AddCurrInterface addCurrInterface = new AddCurrInterface();

@SuppressWarnings("unused")

int temp = 0;

try {

temp = addCurrInterface.addUser(currbean);

if(temp == 1) {

resp.sendRedirect(req.getContextPath()+"/index.jsp");

}else if(temp == 2) {

resp.sendRedirect(req.getContextPath()+"/USEJSP/addnameerror.jsp");

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

class AddCurrInterface extends HttpServlet{

private static final long serialVersionUID = 1L;

public int addUser(CurrBean cb) throws SQLException {

String name;

String teacher;

String place;

name = cb.getName();

teacher = cb.getTeacher();

place = cb.getPlace();

//连接数据库

Connection conn = CurrDBUtil.getConn();

PreparedStatement pstmt = null;

Statement stmt = conn.createStatement();

String selectsql = "select * from curr_info";

ResultSet rs = stmt.executeQuery(selectsql);

int tt = 0;

while(rs.next()) {

if(rs.getString("name").equals(name)) {

tt = 2;

}

}

if(tt == 0) {

String sql = "insert into curr_info (name,teacher,place) values (?,?,?)";//数据库指令

pstmt = conn.prepareStatement(sql);//发送sql语句

//下面是插入到具体的地方

pstmt.setString(1, name);

pstmt.setString(2, teacher);

pstmt.setString(3, place);

pstmt.executeUpdate();

System.out.println("添加成功!");

return 1;

}else if(tt == 2) {

return 2;

}

return 0;

}

}

DeleteCurrServlet.java  实现课程的删除

package com.Servlet;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.DBUtil.CurrDBUtil;

public class DeleteCurrServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{

resp.setContentType("delete.jsp");

req.setCharacterEncoding("UTF-8");

String name;

@SuppressWarnings("unused")

int ii = 0;

name = req.getParameter("cname");

//连接数据库

Connection conn = CurrDBUtil.getConn();

try {

Statement stmt = conn.createStatement();

String selectsql = "select * from curr_info";

ResultSet rs = stmt.executeQuery(selectsql);

while(rs.next()) {

if(rs.getString("name").equals(name)) {

ii = rs.getInt("id");

//Get output stream and writers

OutputStream out=resp.getOutputStream();

PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(out)));

//Print HTML

pw.println("

输出HTML标签");

pw.println("

pw.println("

\r\n" +

"

课程名称\r\n" +

"

任课教师\r\n" +

"

上课地点\r\n" +

"

");

pw.println("

\r\n" +

"

"+rs.getString("name")+"\r\n" +

"

"+rs.getString("teacher")+"\r\n" +

"

"+rs.getString("place")+"\r\n" +

"

");

pw.println("该课程已删除!");

pw.println("");

pw.flush();

pw.close();

}

}

String delesql="delete from curr_info where name='"+name+"' ";//生成一条sql语句

stmt.executeUpdate(delesql);//执行sql语句

} catch (SQLException e) {

e.printStackTrace();

}

}

}

SearchCurrServlet.java  实现课程的查询

package com.Servlet;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.DBUtil.CurrDBUtil;

public class SearchCurrServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{

resp.setContentType("search.jsp");

req.setCharacterEncoding("UTF-8");

String name;

String teacher;

String place;

name = req.getParameter("cname");

teacher = req.getParameter("teacher");

place = req.getParameter("place");

int temp = 0;

//连接数据库

Connection conn = CurrDBUtil.getConn();

try {

Statement stmt = conn.createStatement();

String selectsql = "select * from curr_info";

ResultSet rs = stmt.executeQuery(selectsql);

//Get output stream and writers

OutputStream out=resp.getOutputStream();

PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(out)));

//Print HTML

pw.println("

输出HTML标签");

pw.println("

pw.println("

\r\n" +

"

课程名称\r\n" +

"

任课教师\r\n" +

"

上课地点\r\n" +

"

");

while(rs.next()) {

if(rs.getString("name").equals(name) || rs.getString("teacher").equals(teacher) || rs.getString("place").equals(place)) {

pw.println("

\r\n" +

"

"+rs.getString("name")+"\r\n" +

"

"+rs.getString("teacher")+"\r\n" +

"

"+rs.getString("place")+"\r\n" +

"

");

temp++;

}

/*

else {

//Get output stream and writers

OutputStream out=resp.getOutputStream();

PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(out)));

//Print HTML

pw.println("

输出HTML标签");

pw.println("查询错误!");

pw.println("");

pw.flush();

pw.close();

}

*/

}

if(temp == 0) {

pw.println("查询错误!");

}

pw.println("");

pw.flush();

pw.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

UpdateCurrServlet.java  实现课程的修改

package com.Servlet;

import java.io.IOException;

import java.sql.Connection;

import java.sql.SQLException;

import java.sql.Statement;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.DBUtil.CurrDBUtil;

public class UpdateCurrServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{

resp.setContentType("update.jsp");

req.setCharacterEncoding("UTF-8");

String tempname;

String name;

String teacher;

String place;

tempname = req.getParameter("tempcname");

name = req.getParameter("cname");

teacher = req.getParameter("teacher");

place = req.getParameter("place");

//连接数据库

Connection conn = CurrDBUtil.getConn();

try {

Statement stmt = conn.createStatement();

String updatesql = "update curr_info set name='"+name+"',teacher='"+teacher+"',place='"+place+"' where name='"+tempname+"'";

stmt.executeUpdate(updatesql);//执行sql语句

resp.sendRedirect(req.getContextPath()+"/index.jsp");

} catch (SQLException e) {

e.printStackTrace();

}

}

}

java简单课程_Java之从头开始编写简单课程信息管理系统相关推荐

  1. C++课程设计实训_基于多态书籍信息管理系统的设计与实现、附源码、有过程截图

    C++课程设计实训_基于多态书籍信息管理系统的设计与实现.附源码,有过程截图 书籍信息管理系统的设计与实现(基于多态) 学生姓名: 学 号: 指导老师: 所 在 系: 专 业: 班 级: C++课程设 ...

  2. php写简单接口_使用PHP如何编写简单的App接口

    这篇文章主要介绍了使用PHP编写简单的App接口的一些个人的步骤以及经验总结,有需要的小伙伴可以参考下 本篇是笔记尝试写的第一个PHP接口,并在iOS开发中尝试应用测试.今天给大家分享如何自己写接口来 ...

  3. 用java创建一个学生数据库_java项目源码-数据库创建学生信息管理系统

    java项目源码-数据库创建学生信息管理系统 create data base JavaTest go use JavaTest go create table 登陆 (用户名 char(20) pr ...

  4. C语言编写学生成绩信息管理系统

    用C语言设计简单的学生成绩信息管理系统 介绍 代码 结构体数组的定义 home_page() 函数 add_infor() 函数 browse_infor() 函数 find_infor() 函数 m ...

  5. java ee学生信息管理_【全】JAVAEE_学生信息管理系统

    [实例简介] 适合学生的javaee课程设计代码,采用MVC模式开发-- [实例截图] [核心代码] JAVAEE_学生信息管理系统 └── studentSystem ├── build │   └ ...

  6. 初学Java,先搞懂第一个程序-----简易用户信息管理系统

    初学Java!!!一定要搞懂第一个程序-----简易用户信息管理系统 用户需求 ①实现用户信息添加,包括用户名.年龄.爱好.冻结状态: ②查询指定用户信息,根据用户名查询指定用户的信息是否在用户数据库 ...

  7. Java使用三层架构、JDBC连接数据库完成《试题信息管理系统》

    开发基于控制台的试题信息管理系统.具体要求如下: (1)显示试题信息管理系统主菜单,如图-1所示,包括: 1)列出所有试题信息 2)按科目查询 3)按题干模糊查询 4)添加试题 5)删除试题 6)退出 ...

  8. C语言课程设计不会做?其实各种信息管理系统都一样!

    C语言课程设计示例:歌曲信息管理系统 前言:大家在学习C语言时,最终都会面临这个"大项目":课程设计,而知识的整合与庞大的代码量总会让许多初学者手足无措.还记得我当时的课程设计,真 ...

  9. java 定时器代码_Java定时器代码的编写

    Java定时器代码的编写 在某些时候, 我们需要实现这样的`功能,某一程序隔一段时间执行一次,而这一事情由系统本身来完成,并不是人为的触发,我们一般可称此为定时器任务.其实到Java中,实现起来是非常 ...

最新文章

  1. 客快物流大数据项目(四十六):Spark操作Kudu dataFrame操作kudu
  2. Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
  3. python爬虫一般格式
  4. 视频+课件| PointDSC:基于特征匹配的点云配准方法(CVPR2021)
  5. 影像组学视频学习笔记(23)-主成分析PCA、降维和特征筛选的区别、Li‘s have a solution and plan.
  6. 信息上传服务器加速cpu处理,英特尔发布全新第二代至强可扩展处理器携手浪潮加速新型应用发展...
  7. Haar Adaboost 视频车辆检测代码和样本
  8. 小学计算机ppt课教案,小学信息技术公开课教案《让幻灯片变得更加漂亮》教学设计与反思...
  9. python random.randint未定义_学习python - 无法弄清楚random.randint
  10. 嵩天python123测试6_神华化工股票
  11. JavaScript 特殊字符
  12. 《从0到1学习Flink》—— Flink 项目如何运行?
  13. python画图matlab,matlab plot画图
  14. 精心整理了7种常用数据分析方法(建议收藏)
  15. 电磁兼容入门篇之基础知识(二)
  16. 前端50个精美登录注册模板
  17. 第七章 Scala基础——类继承
  18. 苹果电脑上几款不错的图片浏览管理工具
  19. dtim 间隔(Delivery Traffic Indication Message)
  20. 为什么计算机专业的学生要学习使用 Linux 系统?

热门文章

  1. 394. 字符串解码
  2. 几何画板演示多边形滚动动画的方法
  3. 教你用电脑把腾讯视频的qlv格式转换成mp4
  4. 嵌入式 常见的undefined reference to涉及的链接问题
  5. 甘肃政协委员:用对“领头羊”破乡村空壳合作社
  6. JS电影院在线选座简化案例
  7. 应对容器时代面临的挑战:长风破浪会有时、直挂云帆济沧海
  8. centos7 Redis单机多节点集群部署
  9. Python实现批量重命名
  10. P1914 小书童——凯撒密码题解(用c++的string对象来写)