当前位置:网站首页>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;
}
}
边栏推荐
- What does it remote operation and maintenance mean? Which is the best remote operation and maintenance software?
- 信号屏蔽与处理
- Using pyqt to design gui in ABAQUS
- Sort 1-insert sort and Hill sort
- 微软100题-天天做-第16题
- PHP获取小程序码,小程序带参数跳转
- MySQL5.7及SQLyogV12安装及使用破解及常用命令
- Qt学习之Qt Designer(设计师)
- Headline article_ signature
- The local area network cannot access the Apache server
猜你喜欢

About standard IO buffers

【指针内功修炼】字符指针 + 指针数组 + 数组指针 + 指针参数(一)

IM即时通讯开发优化提升连接成功率、速度等

Configure HyperMesh secondary development environment on vs Code

ABAQUS GUI interface solves the problem of Chinese garbled code (plug-in Chinese garbled code is also applicable)

The little red book of accelerating investment, "rush to medical treatment"?

HyperMesh auto save (enhanced) plug-in instructions

QT packaging

What does it remote operation and maintenance mean? Which is the best remote operation and maintenance software?

Nowcode- learn to delete duplicate elements in the linked list (detailed explanation)
随机推荐
“蔚来杯“2022牛客暑期多校训练营3 A.Ancestor LCA+暴力计数
KubeEdge发布云原生边缘计算威胁模型及安全防护技术白皮书
egg(十九):使用egg-redis性能优化,缓存数据提升响应效率
排序3-选择排序与归并排序(递归实现+非递归实现)
Learn ABAQUS script programming script in an hour
php关于数据量大导出数据或者遍历数据导致内存溢出超时等问题
Ansa secondary development - apps and ansa plug-in management
Splash (渲染JS服务)介绍安装
有趣的 Kotlin 0x09:Extensions are resolved statically
Introduction and implementation of stack (detailed explanation)
MySQL5.7及SQLyogV12安装及使用破解及常用命令
Best Cow Fences 题解
Headline article_ signature
2021-04-02
curl无输出返回空白或者null问题解决
Early in the morning, pay Bora SMS to say that you won the "prize"? Dealing with server mining virus - kthreaddi
重置grafana登录密码为默认密码
Sort 3-select sort and merge sort (recursive implementation + non recursive implementation)
The video Number finds the golden key, and Tiktok imitates the latecomers
Use js direct OSS to store files in Alibaba cloud and solve the limitation of large file upload server