JavaWeb10(实现结算查看订单订单详情)

news2024/11/20 3:18:51

目录

一.效果预览

二.实现思路 

2.1 实现结算

①形成订单,并赋值

②将订单插入到数据表tb_order中,同时将该订单所对应的订单项插入到数据表tb_orderitem中

2.2 查看我的订单

①底层代码

②前端绑值

2.3 查看订单详情

①页面跳转,传参

②底层代码

③前端绑值


一.效果预览

 

二.实现思路 

2.1 实现结算

①形成订单,并赋值


        //从session中拿购物车
        List<OrderItem> items =(List<OrderItem>)session.getAttribute("mycart");
        //从session中拿用户
        User user = (User)session.getAttribute("user");
        
        //形成一个订单
        Order order = new Order();
        //给订单赋值 缺少oid!!!!!!!
        order.setItems(items);
        order.calcSum();//务必先给集合赋值
        order.setUser(user);
        order.setOaddress(user.getUaddress());

    //调用增加订单的方法
        int n = iob.addOrder(order);
        if(n>0) {
            //说明结算成功
            session.setAttribute("mycart", null);
            //跳转到我的订单页面
            resp.sendRedirect("orders.do");
        }
        else {
            resp.sendRedirect("cart.jsp?index=5");
        }


        

②将订单插入到数据表tb_order中,同时将该订单所对应的订单项插入到数据表tb_orderitem中

package com.zking.entity;
/**
 * 实体类订单类
 * @author PC
 *
 */

import java.io.Serializable;
import java.util.List;

public class Order implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int oid;//订单编号
	private double osumprice;//订单总价
	private User user;//用户对象
	private String oaddress;//订单地址

	//一个订单由多个订单项组成的√
	private List<OrderItem> items=null;
	
	//计算订单总价
	public void calcSum() {
		double sum = 0;
		for (OrderItem oi : items) {
			sum+=oi.getOiprice();//累加求小计的和
		}
		this.osumprice=sum;//再计算总价
	}

	public int getOid() {
		return oid;
	}

	public void setOid(int oid) {
		this.oid = oid;
	}
	

	public double getOsumprice() {
		return osumprice;
	}

	public void setOsumprice(double osumprice) {
		this.osumprice = osumprice;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String getOaddress() {
		return oaddress;
	}

	public void setOaddress(String oaddress) {
		this.oaddress = oaddress;
	}

	public List<OrderItem> getItems() {
		return items;
	}

	public void setItems(List<OrderItem> items) {
		this.items = items;
	}
	
	public Order() {
		// TODO Auto-generated constructor stub
	}

	public Order(int oid, double osumprice, User user, String oaddress, List<OrderItem> items) {
		this.oid = oid;
		this.osumprice = osumprice;
		this.user = user;
		this.oaddress = oaddress;
		this.items = items;
	}
	
	public Order(double osumprice, User user, String oaddress, List<OrderItem> items) {
		this.osumprice = osumprice;
		this.user = user;
		this.oaddress = oaddress;
		this.items = items;
	}

	@Override
	public String toString() {
		return "Order [oid=" + oid + ", osumprice=" + osumprice + ", user=" + user + ", oaddress=" + oaddress
				+ ", items=" + items + "]";
	}
	
	
	
	
	
}
package com.zking.entity;

import java.io.Serializable;
/**
 * 实体类:订单项类
 * @author PC
 *
 */
public class OrderItem implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private int oiid;//订单项编号
	private int oid;//订单编号
// private int gid;//商品编号
	private Goods goods;//商品对象 可以间接拿到其所有数据
	private int oinum;//购买数量
    private double oiprice;//小计
    
    public void calcxj() { 
    	//小计=单价*数量
    	this.oiprice=this.goods.getGprice()*this.oinum;
    	String ss = String.format("%.1f",oiprice);
    	double s = Double.parseDouble(ss);  
    	this.oiprice=s;
    }
    
	public int getOiid() {
		return oiid;
	}
	public void setOiid(int oiid) {
		this.oiid = oiid;
	}
	public int getOid() {
		return oid;
	}
	public void setOid(int oid) {
		this.oid = oid;
	}
	public Goods getGoods() {
		return goods;
	}
	public void setGoods(Goods goods) {
		this.goods = goods;
	}
	public int getOinum() {
		return oinum;
	}
	public void setOinum(int oinum) {
		this.oinum = oinum;
	}
	public double getOiprice() {
		return oiprice;
	}
	public void setOiprice(double oiprice) {
		this.oiprice = oiprice;
	}
    
    public OrderItem() {
		// TODO Auto-generated constructor stub
	}
	public OrderItem(int oiid, int oid, Goods goods, int oinum, double oiprice) {
		this.oiid = oiid;
		this.oid = oid;
		this.goods = goods;
		this.oinum = oinum;
		this.oiprice = oiprice;
	}
    
	public OrderItem(int oid, Goods goods, int oinum, double oiprice) {
		this.oid = oid;
		this.goods = goods;
		this.oinum = oinum;
		this.oiprice = oiprice;
	}
	@Override
	public String toString() {
		return "OrderItem [oiid=" + oiid + ", oid=" + oid + ", goods=" + goods + ", oinum=" + oinum + ", oiprice="
				+ oiprice + "]";
	}
   
    
}
package com.zking.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.zking.entity.Order;
import com.zking.entity.OrderItem;
import com.zking.entity.User;
import com.zking.util.DBHelper;

/**
 * 数据访问层 tb_order
 * @author PC
 *
 */
public class OrderDao implements IOrderDao {

	private Connection con = null;
	private PreparedStatement ps = null;
	private ResultSet rs = null;
	boolean flag;
	/**
	 * 根据用户拿到订单
	 * @param u 用户对象
	 * @return 订单集合
	 */
	public List<Order> getAllByUser(User u){
		List<Order> ls = new ArrayList<Order>();
		try {
			con=DBHelper.getCon();
			String sql="select * from (select * from tb_order order by oid desc) where uuid="+u.getUuid();
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()) {
				Order o =new Order();
				o.setOid(rs.getInt(1));
				String ss = String.format("%.1f",rs.getDouble(2));
		    	double s = Double.parseDouble(ss);
				o.setOsumprice(s);
				o.setUser(u);
				o.setOaddress(rs.getString(4));
				ls.add(o);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
		
	}	
	
	/**
	 * 单个查询
	 * @param oid
	 * @return
	 */
	public Order getOrder(String oid) {
		Order o = new Order();
		OrderItemDao odd = new OrderItemDao(); 
		try {
			con=DBHelper.getCon();
			String sql="select * from tb_orderitem where oid="+oid;
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			if(rs.next()) {
				o.setOid(rs.getInt(1));
				o.setOsumprice(rs.getDouble(2));
				o.setOaddress(rs.getString(4));
				//拿的该订单所对应的订单项集合
				List<OrderItem> items = odd.getAllByOid(oid);
				o.setItems(items);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return o;
	}
	
	
	
	
	/**
	 * 增加订单
	 * @param order 订单对象
	 * @return 影响行数
	 */
	public int addOrder(Order order) {
		int n =0;
		int oid = getID("tb_order", "oid");///!!!赋值  订单编号
		OrderItemDao odao = new OrderItemDao();
		try {
			con=DBHelper.getCon();
			String sql="insert into tb_order(oid,osumprice,uuid,oaddress) values(?,?,?,?)";
		    ps=con.prepareStatement(sql);
		    //给占位符赋值
		    ps.setInt(1, oid);
		    ps.setDouble(2, order.getOsumprice());
		    ps.setInt(3, order.getUser().getUuid());
		    ps.setString(4, order.getOaddress());
		    n=ps.executeUpdate();
		    if(n>0) {//说明订单下单成功
		    	//那么就把该订单所对应的订单项全部加入到数据库中
		    	//拿到该订单所对应的订单项集合
		    	List<OrderItem> items = order.getItems();
		    	//循环遍历
		    	for (OrderItem oi : items) {
					//接下来我需要将所有的oi都要进tb_orderitem表
		    		oi.setOid(oid);//关键
		    		odao.addOrderItem(oi);
		    		//把对应商品的销量+购买数量 库存-购买数量
		    		new GoodsDao().updateXL(oi.getGoods().getGid(),oi.getOinum());
				}
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		
		return n;
	}
	
	/**
	 * 删除订单
	 * @param oid
	 * @return
	 */
	public boolean deleteOrderByOid(int oid) {
		try {
			con=DBHelper.getCon();
			String sql="delete from tb_order where oid="+oid;
			ps=con.prepareStatement(sql);
			if(ps.executeUpdate()>0) {
				flag = true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return flag;
	}

	
	/**
	 * 标识列实现  ②取表的最大序号+1
	 * @param tabName 表名
	 * @param colName 列名
	 * @return
	 */
	public int getID(String tabName,String colName) {//表名 列名
		int n = 0;
		try {
			con=DBHelper.getCon();
		    String sql="select nvl(max("+colName+"),0)+1 from "+tabName;	
		    ps=con.prepareStatement(sql);
		    rs=ps.executeQuery();
		    if(rs.next()) {
		    	n=rs.getInt(1);
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return n;
		
	}


	


	


	
}

2.2 查看我的订单

①底层代码

package com.zking.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

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.servlet.http.HttpSession;

import com.zking.biz.GoodsBiz;
import com.zking.biz.IGoodsBiz;
import com.zking.biz.IOrderBiz;
import com.zking.biz.IUserBiz;
import com.zking.biz.OrderBiz;
import com.zking.biz.UserBiz;
import com.zking.entity.Goods;
import com.zking.entity.Order;
import com.zking.entity.User;

/**
 * 订单们控制器  多个订单
 * @author PC
 *
 */
@WebServlet("/orders.do")
public class OrdersServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//设置编码
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html; charset=UTF-8");
	
		//拿session和out
		HttpSession session = req.getSession();
		PrintWriter out = resp.getWriter();
		
		//从session中拿用户
	   User u =(User)session.getAttribute("user");
	
		//servlet调用biz
		IOrderBiz iob = new OrderBiz();
		//调用获取订单集合方法
		
		List<Order> ordersls = iob.getAllByUser(u);
		//存起来
		req.setAttribute("ordersls", ordersls);
	
		//转发到myorder.jsp进行绑值
		req.getRequestDispatcher("myorder.jsp?index=6").forward(req, resp);
	
	
	}
}

②前端绑值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<!DOCTYPE html>
<html lang="en">

<head>
   <title>我的订单</title>
    <!-- 支持手机端 -->
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!-- 引入CSS -->
    <link rel="stylesheet" href="CSS/bootstrap.css" />
    <!-- 引入Bootstrap图标的样式 -->
    <link rel="stylesheet" href="font/bootstrap-icons.css" />
    <style>
        .navbar-collapse {
            /*1代表弹性扩大占用父容器剩余部分   0代表不占用*/
            flex-grow: 0;
        }

        .active {
              /*加粗*/
            font-weight: bold;
        }
        .text-right  button{
                width: 120px;/*宽度*/
                height: 30px;/*高度*/
                line-height: 10px;/*行高*/
                margin-top: 10px;/*上间距*/
        }
    </style>
</head>

<body>
	
	 <!--页面包含  -->
   <jsp:include page="header.jsp"></jsp:include>

   

    <!-- 我的订单 -->
    <div class="container">
    	
    	<!--当订单集合为空时  -->
      <c:if test="${empty ordersls}">
      		<div style="margin-top: 50px;margin-bottom:50px"  class="h3 text-center text-pink">亲爱的${user.uname},订单空空如也喔<a href="index.do?index=1">快去奖励自己吧!</a></div>
     		<div class="text-center">
     		   <img width="700px" src="img/bz11.jpg">
     		</div>
      </c:if>
      
      <!--当订单集合不为空时  -->
      <c:if test="${not empty ordersls}">
    		 <!--  text-center居中 -->
        <table style="margin-top: 20px;" class="table table-hover  text-center ">
            <!-- class="bg-primary" 加颜色 -->
            <thead class="bg-primary" style="color: aliceblue;">
                <tr>
                    <th scope="col">订单编号</th>
                    <th scope="col">收货地址</th>
                    <th scope="col">订单总价</th>
                    <th scope="col">购买者</th>
                    <th scope="col">操作</th>
                </tr>
            </thead>
            <tbody>
            
              <!--绑定订单的值  -->
             <c:forEach items="${ordersls}" var="o">
             	 <tr style="height:80px;line-height: 50px">
                    <th scope="row">${o.oid}</th>
                    <td>${o.oaddress}</td>
                    <td>${o.osumprice}&yen;</td>
                    <td>${o.user.uname}</td>
                    <td>
                    <a href="deleteOrder.do?oid=${o.oid}" onclick="return confirm('确定删除嘛?(^.^)')" >删除订单 </a>&nbsp;&nbsp;&nbsp;
                    <a href="orderInfo.do?oid=${o.oid}">查看订单详情 </a>
                    </td>
                </tr>
             </c:forEach> 
            
            </tbody>
            </table>

      </c:if>
    
       
    </div>

    <!-- 引入jQuery的类库 -->
    <!-- 再引入Bootstrap的类库 -->
    <script src="js/jquery-3.6.4.js"></script>
    <script src="js/bootstrap.js"></script>
    
    
</body>

</html>

2.3 查看订单详情

①页面跳转,传参

//跳转 转发到订单详情页面进行绑值
 req.getRequestDispatcher("orderinfo.jsp").forward(req, resp);

②底层代码

package com.zking.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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.servlet.http.HttpSession;

import com.zking.biz.IOrderBiz;
import com.zking.biz.IUserBiz;
import com.zking.biz.OrderBiz;
import com.zking.biz.UserBiz;
import com.zking.entity.Order;
import com.zking.entity.User;

/**
 * 查看订单详情控制器
 * @author PC
 *
 */
@WebServlet("/orderInfo.do")
public class OrderInfoServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//设置编码
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html; charset=UTF-8");
	
		//拿session和out
		HttpSession session = req.getSession();
		PrintWriter out = resp.getWriter();
		
		//接收oid
		String oid=req.getParameter("oid");
		
		//servlet调biz层
		IOrderBiz iob = new OrderBiz();
		//调用单个查询的方法
		Order order = iob.getOrder(oid);
		//存起来
		req.setAttribute("myorder",order);//键  值
		//跳转 转发到订单详情页面进行绑值
		req.getRequestDispatcher("orderinfo.jsp").forward(req, resp);
		
		
		//两种思路
		/**
		 * select * from tb_orderitem where oid=?;
		 * 1.根据订单编号查找到对应的订单项集合  存起来  去订单详情页面绑定值
		 * 
		 * select * from tb_order where oid=?; 单个查询   在order实体类写了一个items
		 * 2.根据订单编号查找到对应的订单  把订单存起来  去订单详情界面  即可以绑定该订单的值又可以绑定订单详情的值 √
		 * 
		 * 
		 */
	
	
	}
}

③前端绑值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<!DOCTYPE html>
<html lang="en">

<head>
   <title>查看订单详情</title>
    <!-- 支持手机端 -->
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!-- 引入CSS -->
    <link rel="stylesheet" href="CSS/bootstrap.css" />
    <!-- 引入Bootstrap图标的样式 -->
    <link rel="stylesheet" href="font/bootstrap-icons.css" />
    <style>
        .navbar-collapse {
            /*1代表弹性扩大占用父容器剩余部分   0代表不占用*/
            flex-grow: 0;
        }

        .active {
              /*加粗*/
            font-weight: bold;
        }
        .text-right  button{
                width: 120px;/*宽度*/
                height: 30px;/*高度*/
                line-height: 10px;/*行高*/
                margin-top: 10px;/*上间距*/
        }
    </style>
</head>

<body>
	 

    <!-- 订单详情 -->
    <div class="container" style="margin-top: 40px">
    
    	<!--当订单为空时  -->
      <c:if test="${empty myorder}">
      	<jsp:forward page="orders.do?index=6"></jsp:forward>
      </c:if>
      
      <!--当购物车集合不为空时  -->
      <c:if test="${not empty myorder}">
    		 <!--  text-center居中 -->
        <table style="margin-top: 20px;" class="table table-hover  text-center ">
            <!-- class="bg-primary" 加颜色 -->
            <thead class="bg-primary" style="color: aliceblue;">
                <tr>
                    <th scope="col">订单项编号</th>
                    <th scope="col">订单编号</th>
                    <th scope="col">商品名称</th>
                    <th scope="col">商品价格</th>
                    <th scope="col">商品图片</th>
                    <th scope="col">购买数量</th>
                    <th scope="col">小计</th>
                </tr>
            </thead>
            <tbody>
            
            	<!--对象不能自己遍历 foreach 跟实体类一致 -->
              <!--绑对应订单项的值  -->
             <c:forEach items="${myorder.items}" var="oi">
             	 <tr style="height:80px;line-height: 50px">
                    <th scope="row">${oi.oiid}</th>
                    <td>${oi.oid}</td>
                    <td>${oi.goods.gname}</td>
                    <td>${oi.goods.gprice}元</td>
                    <td><img width="80px" src="${oi.goods.gpath}"></td>
                    <td>${oi.oinum}</td>
                    <td><span class="xx">${oi.oiprice}</span>元</td>
                </tr>
             </c:forEach> 
            </tbody>
            </table>

        <!-- 合计 -->
        <div class="text-right">
            <h2>合计:<span id="sums">229.3</span>元</h2>
           <a href="orders.do?index=6"> <button type="button" class="btn btn-success" >点击返回</button></a>
        </div>
      </c:if>
    
    </div>

    <!-- 引入jQuery的类库 -->
    <!-- 再引入Bootstrap的类库 -->
    <script src="js/jquery-3.6.4.js"></script>
    <script src="js/bootstrap.js"></script>
    
    <script type="text/javascript">
    	//加载DOM  jquery
		$(function(){
		 //统计价格
			var sum = 0.0;
			//遍历
			$(".xx").each(function(i,v){//下标  值
			//累计求和
			sum+=parseFloat(v.innerHTML);
			});
			//保留1位小数
			sum=sum.toFixed(2);
			//给span标签赋值
			$("#sums").html(sum);
		})
    
    	//即要拿id 就直接把id设置成gid
    	function myf(gid) {
			//拿文本框的数量
			var num=$("#"+gid).val();
			//跳转到servlet
			location.href="updateCart.do?gid="+gid+"&num="+num;
		}
		/* //如果仍然出现很多位小数 则采用以下方法保留1位小数
    	String s = String.format("%.1f",this.oiprice);
    	this.oiprice=Double.parseDouble(s); */
    	
		
    	
    </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试时,公司的什么表现让你一看就知道不靠谱?

01 面试的时候让你根据他们需要做方案的公司一律不靠谱&#xff0c;百分之99是套方案的。 你想如果业务负责人自己都不知道自己要干什么&#xff0c;要么他自己没想清楚&#xff0c;要不他本身是水货&#xff01;这样的leader怎么爬上来的不用说了吧&#xff0c;而且跟着他学不…

汽车EDI:如何与斯柯达Skoda建立EDI连接?

大众汽车在汽车行业具有全球销量领先、技术创新、质量标杆、多品牌战略和可持续发展方面的显著地位。作为一家具有全球影响力的汽车制造商&#xff0c;大众汽车在塑造汽车行业发展和引领未来出行方向方面扮演着重要角色。 目前我们已帮助汽车行业的客户成功对接大众汽车旗下的…

【MATLAB第35期】基于MATLAB的2023年改进的进化算法优化LSTM时间序列预测模型思路

【MATLAB第35期】基于MATLAB的2023年改进的进化算法优化LSTM时间序列预测模型思路 一、思路 拿第34期的棕熊算法举例&#xff1a; 优化途径&#xff1a; &#xff08;一&#xff09;种群初始学习改进 &#xff08;1&#xff09;反向学习(OBOA) &#xff08;2&#xff09;准反…

Electron 搭建开发环境(Windows 11系统)

目录 前言一、环境说明二、Node.js安装1.官网下载2.安装3.验证安装是否成功4.可能错误 三、开发工具1.开发工具2.VSCode 总结 前言 如果想要使用 Electron 进行桌面应用程序开发&#xff0c;首先需要搭建一个开发环境。对于初学者&#xff0c;这可能是一个绕不开的步骤。作为 …

MSP432学习笔记7:定时器A中断

型号&#xff1a;MSP432P401r 今日得以继续我的MSP432电赛速通学习之路...... 今日学习的是定时器A中断&#xff01; 目录 基础工程在此下载&#xff1a; 更改后的实验演示工程在此下载&#xff1a; 定时器A基础介绍&#xff1a; Timer_A的特性包括&#xff1a; Timer_A…

组态王使用指南|安装包|快速入门教程|含PLC与组态王网口串口通信|速查命令PDF

组态王安装包及安装方法&#xff1a; 组态王7.5 SP3下载安装授权_组态王安装包_城北许工α的博客-CSDN博客 组态王快速入门教程&#xff1a; 组态王教程(基础入门篇).pdf (book118.com) 组态王与PLC通讯&#xff1a; 网口通讯&#xff1a; 西门子1200与组态王TCP通讯 - 知…

Redis7实战加面试题-基础篇(Redis10大数据类型)

说明 刚看完尚硅谷Redis零基础到进阶&#xff0c;最强redis7教程&#xff0c;阳哥亲自带练&#xff08;附redis面试题&#xff09; 趁热打铁&#xff0c;根据脑图和视频&#xff0c;对视频中的知识点进行总结&#xff0c;方便以后复习 Redis入门概述 Remote Dictionary Serv…

国家重点研发计划“新型无液氦脑磁图系统研发”项目启动会顺利召开

2023年5月21日&#xff0c;国家重点研发计划“诊疗装备与生物医用材料”重点专项“新型无液氦脑磁图系统研发”项目启动会在京顺利召开。 该项目由北京未磁科技有限公司牵头&#xff0c;与首都医科大学附属北京天坛医院、北京航空航天大学、机械工业仪器仪表综合技术经济研究所…

九、数据仓库详细介绍(元数据)

元数据的文章&#xff0c;网上已经有很多了&#xff0c;元数据相关概念有限所以重复度很高。 我这里只是做个概念汇集&#xff0c;争取给大家介绍的全面一点。 1. 元数据定义 元数据&#xff08;Meta-data&#xff09;是描述数据的数据&#xff08;The data about data&#xf…

怎么提升品牌知名度,小红书母婴赛道分析

小红书平台自创立之初&#xff0c;便以母婴类内容为特色。今天我们来分享下&#xff0c;怎么提升品牌知名度&#xff0c;小红书母婴赛道分析。 一、妈妈用户仍是主流 我们都知道&#xff0c;小红书平台是一个女性用户为主的平台。根据去年的平台用户调查&#xff0c;可以发现&a…

PID控制逻辑基本介绍

PID控制逻辑基本介绍 1. 源由2. PID基本框图3. PID公式变换4. PID参数释义4.1 比例因子Kp4.2 比例积分Ki4.3 比例微分Kd4.4 Kp/Ki关系4.5 Kp/Kd关系 5. 总结6. 附录6.1 了解 PID 控制&#xff0c;第 1 部分&#xff1a;什么是 PID 控制&#xff1f;6.2 Anti-windup for PID con…

【pytorch损失函数(6)】Focal loss, for dense object detection再分析

之前翻译了这篇论文&#xff0c;但是理解还不深。今天借着研究rotation的计划&#xff0c;回顾这篇文章。 论文的主要贡献 Focal loss主要是为了解决目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重&#xff0c;也可理解为一种困难…

Segment Anything专题论文和代码汇总

文章目录 2023Scaling-up Remote Sensing Segmentation Dataset with Segment Anything ModelPersonalize Segment Anything Model with One ShotSegment Anything in Medical ImagesMatcher: Segment Anything with One Shot Using All-Purpose Feature MatchingCustomized Se…

【Python】mmSegmentation语义分割框架教程(1.x版本)

文章目录 0.引言1. 数据集设置1.1. dataset implementation py1.2. dataset config py 2.模型设置3.训练 0.引言 \qquad 本文是mmSegmentation语义分割框架教程&#xff08;0.x版本&#xff09;的1.x版本。不熟悉mmsegmentation是什么的读者可参考原文的引言部分&#xff0c;熟…

sqlmap命令大全(附详细扫描流程)

一、sqlmap命令大全。 -u 指定目标URL (可以是http协议也可以是https协议)-d 连接数据库--dbs 列出所有的数据库--current-db 列出当前数据库--tables 列出当前的表--columns 列出当前的列-D 选择使用哪个数据库-T 选择使用哪个表-C 选择使用哪个列--dump 获取字段中的数据--…

程序猿想考一个PMP,可以吗,怎么考呢?

我从新考纲考完下来&#xff0c;3A通过了考试&#xff0c;最开始也被折磨过一段时间&#xff0c;但是后面还是找到了方法&#xff0c;也算有点经验&#xff0c;给大家分享一下吧。 程序猿应该是考PMP里面人最多的&#xff0c;毕竟有一个30大坎&#xff0c;大部分人还是考虑转型…

rk3588 大小核启动

setenv ipaddr 10.12.1.205;setenv serverip 10.12.1.200;tftp 0x800000 bsprk3588_owl_ai_box_plus_v10_x64.bin;go 0x800000 rk3588 启动 4 核无问题&#xff0c;启动 8 核出现乱码以及死机问题。 分析代码&#xff0c;对 psci 接口进行更新&#xff0c;启动 4 核&#xf…

【服务器数据恢复】EXT3文件系统下raid数据恢复案例

服务器数据恢复环境&#xff1a; 华为OceanStor某型号存储&#xff0c;10块硬盘组成raid6磁盘阵列。 上层操作系统采用EXT3文件系统&#xff0c;划分2个lun。 服务器故障&分析&#xff1a; 在巡检中发现存储中的raid不可用&#xff0c;管理员进行了重新分配并初始化raid的操…

VS2019 error LNK2001: 无法解析的外部符号 解决方法

今天编译一个项目的时候&#xff0c;用debug模式编译时可以通过并生成exe的。 换成release模式&#xff0c;直接报链接错误&#xff0c;如下&#xff1a; 1>libeay32.lib(pem_lib.obj) : error LNK2019: 无法解析的外部符号 ___iob_func&#xff0c;函数 _PEM_def_callback…

微信小程序| AIGC之动手实现ChatGPT法律顾问小程序

一、需求背景 在资本退去后&#xff0c;现如今的互联网行情很差劲&#xff0c;很多创新业务都不得不砍除。再加上国内互联网时代进入到了一个增量犹显疲态&#xff0c;增量杀红了眼&#xff01;阶段&#xff0c;各大互联网公司均有一种断臂求生的态势&#xff01;各位互联网同…