当前位置:网站首页>Simple addition, deletion, modification and query of commodity information
Simple addition, deletion, modification and query of commodity information
2022-07-28 16:46:00 【Royal shadow time】
1. The main page <%@ 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>
<a href="${pageContext.request.contextPath }/showAll"> Click to query all product information </a>
</body>
</html>2. Query all pages
<%@ 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 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>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/imagetable.css">
<script type="text/javascript">
function add(){
location.href="${pageContext.request.contextPath}/findClist"
}
</script>
</head>
<body>
<table border="1" width="40%" class="imagetable" align="center">
<tr>
<th> List of goods </th>
</tr>
</table>
<hr/>
<table border="1" width="100%" class="imagetable">
<tr>
<th colspan="6" align="right">
<input type="button" value=" Add the goods " οnclick="add()"/>
</th>
</tr>
<tr>
<th> Item number </th>
<th> Name of commodity </th>
<th> Commodity images </th>
<th> commodity price </th>
<th colspan="2"> Commodity Description </th>
</tr>
<c:if test="${not empty plist}">
<!-- Make a judgment , Prevent null pointer exception -->
<!-- Traverse settings -->
<!-- Here is el expression , Be careful !!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<c:forEach items="${plist }" var="product" varStatus="con">
<tr>
<td>${con.count }</td>
<td>${product.pname}</td>
<td>
<img src="${pageContext.request.contextPath }/${product.pimage }" width="100%">
</td>
<td>${product.shop_price }</td>
<td>${product.pdesc }</td>
<!-- Save from request Medium product obtain pid object , And through the way of formal parameter transmission , Transfer the past -->
<td><a href="${pageContext.request.contextPath}/update?pid=${product.pid}"> Modify the goods </a>
<a href="${pageContext.request.contextPath}/delete?pid=${product.pid}"> Delete item </a>
</td>
</tr>
</c:forEach>
</c:if>
</table>
</body>
</html>3. Add a page
<%@ 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 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>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/imagetable.css">
</head>
<body>
<table border="1" width="40%" class="imagetable" align="center">
<tr>
<th> Add the goods </th>
</tr>
</table>
<hr/>
<!-- Add product information page -->
<form action="${pageContext.request.contextPath }/add" method="post">
<table border="1" width="100%" class="imagetable">
<tr>
<td> Name of commodity </td>
<td>
<input type="text" name="pname" />
</td>
</tr>
<tr>
<td> The price of the goods </td>
<td>
<input type="text" name="shop_price" />
</td>
</tr>
<tr>
<td> Commodity images </td>
<td>
<input type="text" name="pimage" />
</td>
</tr>
<tr>
<td> Commodity Description </td>
<td>
<textarea name="pdesc"></textarea>
</td>
</tr>
<tr>
<td> Classification of goods </td>
<td>
<select name="cid">
<c:if test="${not empty clist }">
<c:forEach items="${clist }" var="c">
<option value=${c.cid }>${c.cname }</option>
</c:forEach>
</c:if>
</select>
</td>
</tr>
<tr>
<td></td>
<td >
<input type="submit" value=" Add the goods "/>
</td>
</tr>
</table>
</form>
</body>
</html>4. Modify page
<%@ 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 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>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/imagetable.css">
</head>
<body>
<table border="1" width="40%" class="imagetable" align="center">
<tr>
<th> Modify the goods </th>
</tr>
</table>
<hr/>
<!-- Add product information page -->
<form action="${pageContext.request.contextPath }/modify" method="post">
<!-- Set a hidden property , Put the pid Keep the information -->
<input type="hidden" name="pid" value="${product.pid}"/>
<table border="1" width="100%" class="imagetable">
<tr>
<td> Name of commodity </td>
<td>
<input type="text" name="pname" value="${product.pname }"/>
</td>
</tr>
<tr>
<td> The price of the goods </td>
<td>
<input type="text" name="shop_price" value="${product.shop_price }"/>
</td>
</tr>
<tr>
<td> Commodity images </td>
<td>
<input type="text" name="pimage" value="${product.pimage }"/>
</td>
</tr>
<tr>
<td> Commodity Description </td>
<td>
<textarea name="pdesc">${product.pdesc }${product.pid }</textarea>
</td>
</tr>
<tr>
<td> Classification of goods </td>
<td>
<select name="cid">
<c:if test="${not empty clist }">
<c:forEach items="${clist }" var="c">
<option value="${c.cid }"
<c:if test="${c.cid==product.category.cid }">selected="selected"</c:if>
>${c.cname }</option>
</c:forEach>
</c:if>
</select>
</td>
</tr>
<tr>
<td></td>
<td >
<input type="submit" value=" Modify the goods "/>
</td>
</tr>
</table>
</form>
</body>
</html>5. Tool class
package com.yynh.store.product.utils;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Utils {
// Connection pool is defined And the loading configuration is completed
// Named configuration
// private static DataSource dataSource=new ComboPooledDataSource("itcast");
// The default configuration
private static DataSource dataSource = new ComboPooledDataSource();
// c3p0+DBUtils
// DBUtils When using , Need to get dataSource object
public static DataSource getDataSource() {
return dataSource;
}
/**
* Get the link method
*/
public static Connection getConnection() {
Connection con = null;
try {
con = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException();
}
return con;
}
public static void main(String[] args) throws SQLException {
for (int i = 0; i < 40; i++) {
Connection con = C3p0Utils.getConnection();
System.out.println(" Acquired " + con);
// Will not close con object ,C3P0 Has helped me to enhance Connection close Method
con.close();
}
}
}
package com.yynh.store.product.utils;
import java.util.UUID;
public class UUIDUtils {
public static String getUUID() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
}
6.javaBean
package com.yynh.store.product.domain;
import java.io.Serializable;
public class Category implements Serializable {
private String cid;
private String cname;
// First create category, A primary key
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}
package com.yynh.store.product.domain;
import java.io.Serializable;
import java.util.Date;
public class Product implements Serializable {
/**
* pid varchar(32) NOT NULL,1111111111 pname varchar(50) DEFAULT NULL,1111111111 market_price double DEFAULT NULL, shop_price double DEFAULT NULL,1111111111 pimage varchar(200) DEFAULT NULL,11111111 pdate date DEFAULT NULL, 11111111 is_hot int(11) DEFAULT NULL, pdesc varchar(255) DEFAULT NULL, 11111111 pflag int(11) DEFAULT NULL, cid varchar(32) DEFAULT NULL,11111111
*/
private String pid;
private String pname;
private double shop_price;
private String pimage;
private Date pdate;
private String pdesc;
// Create foreign key constraints
private Category Category;
public Product() {
super();
// TODO Auto-generated constructor stub
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public double getShop_price() {
return shop_price;
}
public void setShop_price(double shop_price) {
this.shop_price = shop_price;
}
public String getPimage() {
return pimage;
}
public void setPimage(String pimage) {
this.pimage = pimage;
}
public Date getPdate() {
return pdate;
}
public void setPdate(Date pdate) {
this.pdate = pdate;
}
public String getPdesc() {
return pdesc;
}
public void setPdesc(String pdesc) {
this.pdesc = pdesc;
}
public Category getCategory() {
return Category;
}
public void setCategory(Category category) {
Category = category;
}
@Override
public String toString() {
return "Product [pid=" + pid + ", pname=" + pname + ", shop_price=" + shop_price + ", pimage=" + pimage + ", pdate=" + pdate + ", pdesc=" + pdesc + ", Category=" + Category + "]";
}
}
7.servlet
package com.yynh.store.product.servlet;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.yynh.store.product.domain.Category;
import com.yynh.store.product.domain.Product;
import com.yynh.store.product.service.ProductService;
import com.yynh.store.product.service.ProductServiceIml;
import com.yynh.store.product.utils.UUIDUtils;
/**
* Servlet implementation class AddProduct
*/
public class AddProduct extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// Add the realization of commodity function
// To obtain parameters , Encapsulate entity
// Prevent confusion code
request.setCharacterEncoding("utf-8");
Product product = new Product();
Map<String, String[]> map = request.getParameterMap();
// Encapsulated data
BeanUtils.populate(product, map);
// Manually encapsulate foreign keys
Category category = new Category();
String cid = request.getParameter("cid");
category.setCid(cid);
product.setCategory(category);
// add to pdate and pid(pid Use an arbitrary string as the primary key )
product.setPid(UUIDUtils.getUUID());
product.setPdate(new Date());
// call service Method , Deal with business
ProductService service = new ProductServiceIml();
service.add(product);
// The echo data
// Redirect to query all pages
response.sendRedirect(request.getContextPath() + "/showAll");
} catch (Exception e) {
// Prevent confusion code
response.setContentType("text/html;charset=utf-8");
// Display in the browser when an error occurs
response.getWriter().print("<h5> The program is busy </h5>");
}
}
}
package com.yynh.store.product.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yynh.store.product.service.ProductService;
import com.yynh.store.product.service.ProductServiceIml;
/**
* Servlet implementation class Delete
*/
public class Delete extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// To obtain parameters , Encapsulated object
String pid = request.getParameter("pid");
// call service Deal with business
ProductService service = new ProductServiceIml();
service.del(pid);
// Echo data
response.sendRedirect(request.getContextPath() + "/showAll");
} catch (Exception e) {
response.setContentType("text/html;charset=utf-8");
response.getWriter().print(" There is an error in deleting ");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
package com.yynh.store.product.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yynh.store.product.domain.Category;
import com.yynh.store.product.service.ProductService;
import com.yynh.store.product.service.ProductServiceIml;
public class FindClist extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// obtain category Of list Of servlet
// No parameters
// call service Method
ProductService service = new ProductServiceIml();
List<Category> clist = service.findClist();
// Echo data
request.setAttribute("clist", clist);
// The request is forwarded to the add page
request.getRequestDispatcher("/save.jsp").forward(request, response);
} catch (Exception e) {
// Prevent confusion code
response.setContentType("text/html;charset=utf-8");
// Display in the browser when an error occurs
response.getWriter().print("<h5> The program is busy </h5>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
package com.yynh.store.product.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.yynh.store.product.domain.Category;
import com.yynh.store.product.domain.Product;
import com.yynh.store.product.service.ProductService;
import com.yynh.store.product.service.ProductServiceIml;
/**
* Servlet implementation class Modify
*/
public class Modify extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
request.setCharacterEncoding("utf-8");
// Modify submit servlet
// Access to resources , Encapsulate entity
// System.out.println(request.getParameter("pid"));
String pid = request.getParameter("pid");
Product product = new Product();
BeanUtils.populate(product, request.getParameterMap());
// Manual encapsulation cid
String cid = request.getParameter("cid");
Category category = new Category();
category.setCid(cid);
product.setCategory(category);
// call service
ProductService service = new ProductServiceIml();
service.modify(product);
// Echo data
// Redirect to query all pages
response.sendRedirect(request.getContextPath() + "/showAll");
} catch (Exception e) {
// Prevent confusion code
response.setContentType("text/html;charset=utf-8");
// Display in the browser when an error occurs
response.getWriter().print("<h5> The program is busy </h5>");
}
}
}
package com.yynh.store.product.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yynh.store.product.domain.Product;
import com.yynh.store.product.service.ProductService;
import com.yynh.store.product.service.ProductServiceIml;
public class ShowAll extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// get data , Seal the entity
// call service object , Deal with business
ProductService service = new ProductServiceIml();
List<Product> plist = service.showAll();
// The echo data
request.setAttribute("plist", plist);
// Request forwarding does not require an item name
System.out.println(" Ha ha ha ");
request.getRequestDispatcher("/plist.jsp").forward(request, response);
} catch (Exception e) {
// Prevent confusion code
response.setContentType("text/html;charset=utf-8");
// Display in the browser when an error occurs
response.getWriter().print("<h5> The program is busy </h5>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
package com.yynh.store.product.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yynh.store.product.domain.Category;
import com.yynh.store.product.domain.Product;
import com.yynh.store.product.service.ProductService;
import com.yynh.store.product.service.ProductServiceIml;
/**
* Servlet implementation class Update
*/
public class Update extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// Modify the servlet
// get data , Encapsulate entity
// Get the saved in the hyperlink pid
String pid = request.getParameter("pid");
Product product = new Product();
// take pid Package to bean in
product.setPid(pid);
// Call function service Handle
ProductService service = new ProductServiceIml();
// Call function method , Will be packaged bean Transfer the past
Product result = service.showById(product);
request.setAttribute("product", result);
List<Category> clist = service.findClist();
// Echo data
request.setAttribute("clist", clist);
// The request is forwarded to the add page
request.getRequestDispatcher("/update.jsp").forward(request, response);
} catch (Exception e) {
// Prevent confusion code
response.setContentType("text/html;charset=utf-8");
// Display in the browser when an error occurs
response.getWriter().print("<h5> The program is busy </h5>");
}
}
}
8.service
package com.yynh.store.product.service;
import java.util.List;
import com.yynh.store.product.dao.ProductDao;
import com.yynh.store.product.dao.ProductDaoIml;
import com.yynh.store.product.domain.Category;
import com.yynh.store.product.domain.Product;
public class ProductServiceIml implements ProductService {
/**
* @author yynh_ Delete item
*/
public void del(String pid) {
ProductDao pd = new ProductDaoIml();
pd.del(pid);
}
/**
* @author yynh_ Modify product information
*/
public void modify(Product product) {
ProductDao pd = new ProductDaoIml();
pd.modify(product);
}
/**
* @author yynh_ according to id pick up information
*/
public Product showById(Product product) {
ProductDao pd = new ProductDaoIml();
Product p = pd.showById(product);
return p;
}
/**
* @author yynh_ Inquire about category List of categories
*/
public List<Category> findClist() {
ProductDao pd = new ProductDaoIml();
List<Category> clist = pd.findClist();
return clist;
}
/**
* @author yynh_ Add product features
*/
public void add(Product product) {
ProductDao pd = new ProductDaoIml();
pd.add(product);
}
/**
* @author yynh_ Query all product functions
*/
public List<Product> showAll() {
ProductDao pd = new ProductDaoIml();
List<Product> plist = pd.showAll();
return plist;
}
}
9.dao
package com.yynh.store.product.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import com.yynh.store.product.domain.Category;
import com.yynh.store.product.domain.Product;
import com.yynh.store.product.utils.C3p0Utils;
public class ProductDaoIml implements ProductDao {
/**
* Delete item
*/
public void del(String pid) {
QueryRunner run = new QueryRunner(C3p0Utils.getDataSource());
String sql = "delete from product where pid=?";
Object[] param = { pid };
try {
run.update(sql, param);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
/**
* Modify the selected product information
*/
public void modify(Product product) {
QueryRunner run = new QueryRunner(C3p0Utils.getDataSource());
String sql = "update product set pname=?,shop_price=?,pimage=?,pdesc=?,cid=? where pid=?";
Object[] param = { product.getPname(), product.getShop_price(), product.getPimage(), product.getPdesc(), product.getCategory().getCid(), product.getPid() };
try {
run.update(sql, param);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* Get the selected product information
*/
@Override
public Product showById(Product product) {
QueryRunner run = new QueryRunner(C3p0Utils.getDataSource());
String sql = "select * from product where pid=?";
Object[] param = { product.getPid() };
try {
// In order to get produt in category The classification of , All information must be obtained
Map<String, Object> map = run.query(sql, new MapHandler(), param);
Category category = new Category();
// take category The data in is encapsulated
BeanUtils.populate(category, map);
Product product2 = new Product();
// take product The data needed in is encapsulated
BeanUtils.populate(product2, map);
// take category Encapsulated as a foreign key into product in
product2.setCategory(category);
return product2;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* obtain category Classification information of
*/
public List<Category> findClist() {
List<Category> result = new ArrayList<Category>();
// obtain dbutils
QueryRunner run = new QueryRunner(C3p0Utils.getDataSource());
String sql = "select * from category";
try {
result = run.query(sql, new BeanListHandler<Category>(Category.class));
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return result;
}
/**
* Add the goods
*
*/
public void add(Product product) {
// obtain dbutils Core objects of
QueryRunner run = new QueryRunner(C3p0Utils.getDataSource());
String sql = "insert into product values(?,?,?,?,?,?,?,?,?,?)";
// Set properties
Object[] param = { product.getPid(), product.getPname(), null, product.getShop_price(), product.getPimage(), product.getPdate(), null, product.getPdesc(), null, product.getCategory().getCid() };
try {
run.update(sql, param);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public List<Product> showAll() {
/**
* Check all items
*
*/
List<Product> result = new ArrayList<Product>();
// obtain dbutils
QueryRunner run = new QueryRunner(C3p0Utils.getDataSource());
// Sort
String sql = "select * from product order by pdate desc";
try {
result = run.query(sql, new BeanListHandler<Product>(Product.class));
} catch (SQLException e) {
// Throw the exception out
throw new RuntimeException(e);
}
return result;
}
}
边栏推荐
- laravel
- Debugging methods of USB products (fx3, ccg3pa)
- Applet: get element node information
- Redis series 4: sentinel (sentinel mode) with high availability
- 【指针内功修炼】字符指针 + 指针数组 + 数组指针 + 指针参数(一)
- "Wei Lai Cup" 2022 Niuke summer multi school training camp 3 j.journey 0-1 shortest path
- "Wei Lai Cup" 2022 Niuke summer multi school training camp 3 acfhj
- I can only sell the company after the capital has been "cut off" for two years
- Geodetic coordinate system to Martian coordinate system
- Rosen's QT journey 102 listmodel
猜你喜欢

Leetcode learn to insert and sort unordered linked lists (detailed explanation)

在abaqus中使用PyQt设计GUI

Ansa secondary development - two methods of drawing the middle surface

egg(十九):使用egg-redis性能优化,缓存数据提升响应效率

Applet: get element node information

有趣的 Kotlin 0x07:Composition

laravel

排序5-计数排序

MySQL5.7及SQLyogV12安装及使用破解及常用命令

About the web docking pin printer, lodop uses
随机推荐
小程序:获取元素节点信息
HyperMesh自动保存(增强版)插件使用说明
Qt学习之Qt Designer(设计师)
Detailed record of steps to configure web server (many references)
HyperMesh auto save (enhanced) plug-in instructions
Microsoft question 100 - do it every day - question 16
Sort 5-count sort
Qt学习第一天
Leetcode daily practice - 160. Cross linked list
日常开发方案设计指北
Ansa secondary development - build ansa secondary development environment on Visual Studio code
Redis source code optimization -- binding core
IM即时通讯开发优化提升连接成功率、速度等
关于web对接针式打印机问题,Lodop使用
学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难
Hdu1847 problem solving ideas
“蔚来杯“2022牛客暑期多校训练营3 H.Hacker SAM+线段树/DP/分治(不带修查区间最大子段和)
大地坐标系转换火星坐标系
Sort 2 bubble sort and quick sort (recursive and non recursive explanation)
Pop up layer prompt in the background