外设购物平台

一、系统分析

二、系统设计

2.1 系统功能设计

2.2 数据库设计

三、系统实现

3.1 注册功能

3.2 登录功能

3.3 分页查询所有商品信息功能

3.4 分页条件(精确、模糊)查询商品信息功能

3.5 购物车功能

3.6 订单管理功能

四、项目总结


一、系统分析

在构建一个高效、稳定且用户友好的外设商城系统时,我们需要充分利用各种技术工具来确保系统的顺利运行。其中,HTML、CSS、JSP、Java和JDBC等技术的结合应用,为我们构建这样的系统提供了坚实的基础。

首先,HTML和CSS是构建前端界面的关键工具。它们共同协作,以呈现一个美观且易于导航的商城界面。HTML负责构建页面的基本结构,包括商品列表、详情页、购物车等关键部分的布局。而CSS则负责为这些页面添加样式,如颜色、字体、图片等,以增强用户的视觉体验。通过这些技术,我们可以为外设产品打造一个丰富多样的展示平台,吸引用户的眼球。

其次,JSP技术在动态页面生成方面发挥着重要作用。当用户点击某个商品或进行搜索时,JSP能够根据用户的请求动态生成相应的页面内容。这使得商品详情页、促销信息页等能够实时更新,展示最新的产品信息。此外,JSP还能够与数据库进行交互,获取商品数据并展示在页面上,为用户提供更加个性化的购物体验。

在后端处理方面,Java作为核心编程语言,承担着处理业务逻辑的重要任务。例如,订单管理、库存更新、用户认证等功能都需要通过Java来实现。Java具有强大的功能性和稳定性,能够确保商城系统的正常运行。同时,Java还拥有丰富的库和框架,可以帮助我们快速开发并优化系统性能。

为了实现与数据库的高效连接,我们采用了JDBC技术。JDBC提供了一种标准的方式,使Java程序能够与各种数据库进行通信。通过JDBC,我们可以方便地存储和管理外设产品数据,如商品信息、库存数量、订单记录等。这确保了商城系统的数据一致性和完整性,为用户提供了可靠的购物保障。

此外,基于MVC分层思想,我们采用了Servlet作为控制器,协调前端和后端的交互。MVC模式将应用程序划分为模型、视图和控制器三个层次,有助于实现代码的分离和复用。Servlet作为控制器,负责接收用户的请求并调用相应的业务逻辑进行处理。然后,Servlet将处理结果传递给视图层进行展示。这种分层设计使得商城系统的结构更加清晰,易于维护和扩展。

综上所述,通过HTML、CSS、JSP、Java和JDBC等技术的综合运用,我们可以构建一个功能强大、性能稳定且用户友好的外设商城系统。该系统能够为用户提供丰富的外设产品展示、便捷的购物流程和良好的购物体验,为外设销售商提供有力的支持。


系统设计

2.1 系统功能设计

本系统具备一套全面而完善的功能体系,旨在为用户提供更加便捷、高效和安全的在线购物体验。这些功能不仅丰富了系统的应用场景,还提升了用户的使用体验。

首先,本系统设置了用户注册与登录功能,以确保用户身份的合法性和安全性。用户可以通过简单的注册流程,创建自己的账号,并设置相应的密码。在登录时,系统会进行身份验证,确保只有合法的用户才能进入系统。这一功能有效地保护了用户的隐私和数据安全,让用户能够放心地使用本系统。

其次,本系统提供了分页查询所有商品信息功能。用户可以轻松浏览系统中的所有商品,通过分页的方式查看商品的详细信息,包括名称、价格、图片等。这一功能为用户提供了一个便捷的浏览平台,帮助他们快速找到自己感兴趣的商品。

除了分页查询,本系统还具备分页条件查询商品信息功能。用户可以根据精确或模糊的条件,如商品名称、价格范围、品牌等,进行商品的查找。这一功能大大提高了用户筛选商品的效率,使他们能够更精确地找到符合自己需求的商品。

购物车功能是本系统的重要组成部分。用户可以将心仪的商品添加到购物车中,方便统一管理。购物车支持修改商品数量、删除商品等操作,为用户提供了极大的便利。同时,购物车还具备自动计算总价的功能,帮助用户清晰地了解购物金额。

最后,本系统还具备订单管理功能,以保障交易流程的顺畅进行。用户可以在系统中查看自己的订单信息,包括订单状态、支付情况、发货情况等。系统还提供订单确认、支付、发货等环节的提示和提醒功能,确保用户能够及时了解订单的进展情况。

功能模块图:

图 2-1 功能图

综上所述,本系统具备完善的功能体系,旨在为用户提供全面、高效和安全的在线购物体验。通过注册与登录、分页查询、条件查询、购物车和订单管理等功能的配合,本系统能够满足用户在不同场景下的需求,提升用户的购物体验。

2.2 数据库设计

  1. address 表:包含地址相关信息,如用户编号(Userld)、街道(Street)、省份(Province)、邮政编码(PostalCode)、电话(Phone)和名称(Name)。

表2.1-1address 表

字段名

数据类型

描述

id

int

地址记录的编号

Userld

int

用户编号

Street

varchar

街道名称

Province

varchar

省份名称

PostalCode

varchar

邮政编码

Phone

varchar

电话号码

Name

varchar

名称

  1. commoditys 表:有关商品的信息,包括编号(id)、标题(Title)、企业(Enterprise)、出版商编号(Publisherld)、出版日期(PublishDate)、国际标准书号(ISBN)、目录(TOC)、类别编号(Categoryld)等。

表2.1-2commoditys 表

字段名

数据类型

描述

id

int

商品编号

Title

varchar

商品标题

Enterprise

varchar

企业名称

Publisherld

int

出版商编号

PublishDate

日期型

出版日期

ISBN

varchar

国际标准书号

TOC

varchar

目录

Categoryld

int

商品类别编号

Clicks

整数型

点击量

  1. pics 表:可能与图片相关,有公司编号(firm ld)和名称(Name)。

表2.1-3pics 表

字段名

数据类型

描述

firm ld

int

公司编号

Name

varchar

公司名称

  1. manufacturer 表:记录制造商的信息,如编号(ld)和名称(Name)。

表2.1-4manufacturer 表

字段名

数据类型

描述

ld

int

制造商编号

Name

varchar

制造商名称

  1. ordercommodity 表:涉及订单商品的详情,包括编号(Id)、订单编号(OrderlD)、商品编号(CommoditylD)、数量(Quantity)、单价(UnitPrice)。

表2.1-5ordercommodity 表

字段名

数据类型

描述

Id

int

订单商品记录编号

OrderlD

int

订单编号

CommoditylD

int

商品编号

Quantity

int

数量

UnitPrice

float

单价

  1. orders 表:关于订单的表,包含订单编号(id)、订单日期(OrderDate)、用户编号(Userld)、总价(TotalPrice)。

表2.1-6orders 表

字段名

数据类型

描述

id

int

订单编号

OrderDate

日期型

订单日期

Userld

int

用户编号

TotalPrice

float

订单总价

表2.1-7userroles 表

字段名

数据类型

描述

ld

int

用户角色编号

Name

varchar

用户角色名称

  1. users 表:用户的详细信息,如编号(id)、登录名(Loginld)、登录密码(LoginPwd)、名称(Name)、地址(Address)、电话(Phone)、邮件(Mail)、用户角色编号(UserRoleld)、用户状态编号(UserStateld)。

表2.1-8users 表

字段名

数据类型

描述

id

int

用户编号

Loginld

varchar

登录名

LoginPwd

varchar

登录密码

Name

varchar

用户名称

Address

varchar

地址

Phone

varchar

电话

Mail

varchar

邮箱

UserRoleld

int

用户角色编号

UserStateld

int

用户状态编号

  1. userstates 表:定义用户状态,有编号(ld)和状态名称(Name)。

表2.1-9userstates 表

字段名

数据类型

描述

ld

int

用户角色编号

Name

varchar

状态名称


三、系统实现

3.1 注册功能

用户通过填写必要信息进行注册,系统进行有效性验证后完成注册流程。

网页截图:

图3-1注册

3.2 登录功能

文字描述:用户输入账号密码进行登录,通过验证后进入系统,并利用 cookie 和 session 保持登录状态,同时通过过滤器进行登录权限验证。

网页截图:

图3-2登录

3.3 分页查询所有商品信息功能

文字描述:能够分页展示所有商品信息,方便用户逐页查看。

网页截图:

3.4 分页条件(精确、模糊)查询商品信息功能

文字描述:用户可根据具体条件进行精确或模糊分页查询商品。

网页截图:

图3-4查询

3.5 购物车功能

文字描述:用户可将商品添加到购物车,对购物车中的商品进行管理和操作。

网页截图:

图3-5购物车

3.6 订单管理功能

文字描述:包括订单生成、跟踪和处理等功能。

网页截图:

图3-6订单


四、项目总结

使用本项目的优势在于它为广大用户提供了一个便捷、高效的外设购物平台。通过本项目,用户可以轻松浏览、选择并购买各类外设产品,无需再耗费大量时间和精力在实体店或其他线上平台中进行挑选。此外,本项目还具备一系列较为全面的功能,如智能推荐、实时客服等,旨在提升用户的购物体验。

在功能方面,智能推荐系统能够根据用户的浏览历史和购买记录,为用户推荐符合其需求的外设产品,从而提高了用户的购物效率。同时,实时客服服务能够为用户提供及时、专业的解答,帮助用户解决在购物过程中遇到的问题。

然而,需要指出的是,尽管本项目在提供便捷的外设购物体验方面取得了一定的成绩,但我们也认识到在某些方面仍存在不足。首先,在个性化服务方面,本项目尚未提供针对用户的个性化定制服务,这使得部分追求个性化的用户可能无法完全满足其需求。其次,在某些复杂场景下,如大量用户同时在线购物或处理大量订单时,项目的性能还有待进一步提升。此外,界面设计方面虽然整体简洁明了,但仍有待进一步优化,以提供更美观、易用的购物界面。

针对以上不足,我们将采取一系列措施进行优化和改进。在个性化服务方面,我们将积极探索并引入个性化定制功能,以满足用户对个性化外设的需求。在性能优化方面,我们将加大技术研发投入,提升项目的处理能力和稳定性,确保在高峰时段也能为用户提供流畅、稳定的购物体验。同时,我们还将对界面设计进行持续改进,注重色彩搭配和布局合理性,以提供更加美观、易用的购物界面。

总之,本项目在提供便捷的外设购物体验方面已经取得了显著的成果,但仍需不断优化和改进,以更好地满足用户的需求和期望。我们将继续努力提升项目的功能和性能,并不断完善用户体验,以打造一个更加优秀、专业的外设购物平台。

完整源码:

@WebServlet("/commodityservlet")public class commodityservlet extends HttpServlet {//定义一个commodityService作为属性,以便调用相关方法commodityService commodityService = new commodityServiceImpl();protected void queryByTitle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String bname = request.getParameter("value");commodityServiceImpl service = new commodityServiceImpl();List<commoditys> searchBList = new ArrayList<commoditys>();searchBList = service.getcommoditysByTitle(bname);//封装成分页对象PageBean<commoditys> Pager = new PageBean<commoditys>(1, 5, searchBList);request.getSession().setAttribute("searchcommoditys", Pager);response.sendRedirect("search.jsp");}protected void queryByPublish(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String bname = request.getParameter("value");commodityServiceImpl service = new commodityServiceImpl();List<commoditys> searchBList = new ArrayList<commoditys>();searchBList = service.getcommoditysByPublishName(bname);//封装成分页对象PageBean<commoditys> Pager = new PageBean<commoditys>(1, 5, searchBList);request.getSession().setAttribute("searchcommoditys", Pager);response.sendRedirect("search.jsp");}protected void queryByCategoryName(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String bname = request.getParameter("value");commodityServiceImpl service = new commodityServiceImpl();List<commoditys> searchBList = new ArrayList<commoditys>();searchBList = service.getcommoditysByCategoryName(bname);//封装成分页对象PageBean<commoditys> Pager = new PageBean<commoditys>(1, 5, searchBList);request.getSession().setAttribute("searchcommoditys", Pager);response.sendRedirect("search.jsp");}}Dao 层代码示例:package dao.impl;import bean.commoditys;import dao.commodityDao;import utils.JDBCUtilsByDruid;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanListHandler;public class commodityDaoImpl implements commodityDao {private QueryRunner qr = new QueryRunner();@Overridepublic List<commoditys> getcommoditysByTitle(String title) {String sql = "SELECT * FROM commoditys WHERE title LIKE?";try {return qr.query(JDBCUtilsByDruid.getConnection(), sql, new BeanListHandler<commoditys>(commoditys.class), "%" + title + "%");} catch (Exception e) {throw new RuntimeException(e);}}@Overridepublic List<commoditys> getcommoditysByPublishName(String publishName) {String sql = "SELECT * FROM commoditys WHERE publish_name LIKE?";try {return qr.query(JDBCUtilsByDruid.getConnection(), sql, new BeanListHandler<commoditys>(commoditys.class), "%" + publishName + "%");} catch (Exception e) {throw new RuntimeException(e);}}@Overridepublic List<commoditys> getcommoditysByCategoryName(String categoryName) {String sql = "SELECT * FROM commoditys WHERE category_name LIKE?";try {return qr.query(JDBCUtilsByDruid.getConnection(), sql, new BeanListHandler<commoditys>(commoditys.class), "%" + categoryName + "%");} catch (Exception e) {throw new RuntimeException(e);}}}service 层代码示例:package service.impl;import bean.PageBean;import bean.commoditys;import dao.commodityDao;import dao.impl.commodityDaoImpl;import service.commodityService;public class commodityServiceImpl implements commodityService {private commodityDao commodityDao = new commodityDaoImpl();@Overridepublic PageBean<commoditys> getcommoditysByTitle(String title, int pageNo, int pageSize) {//根据商品名获取商品列表List<commoditys> blist = commodityDao.getcommoditysByTitle(title);//计算总记录数int totalRow = blist.size();//计算总页数int pageTotalCount = totalRow / pageSize;if (totalRow % pageSize > 0) {pageTotalCount++;}//根据分页参数获取当前页的商品列表List<commoditys> pageItems = blist.subList((pageNo - 1) * pageSize, Math.min(pageNo * pageSize, totalRow));//创建分页对象PageBean<commoditys> Pager = new PageBean<commoditys>(pageNo, pageSize, totalRow, pageTotalCount, pageItems);return Pager;}@Overridepublic PageBean<commoditys> getcommoditysByPublishName(String publishName, int pageNo, int pageSize) {//根据店铺名称获取商品列表List<commoditys> blist = commodityDao.getcommoditysByPublishName(publishName);//计算总记录数int totalRow = blist.size();//计算总页数int pageTotalCount = totalRow / pageSize;if (totalRow % pageSize > 0) {pageTotalCount++;}//根据分页参数获取当前页的商品列表List<commoditys> pageItems = blist.subList((pageNo - 1) * pageSize, Math.min(pageNo * pageSize, totalRow));//创建分页对象PageBean<commoditys> Pager = new PageBean<commoditys>(pageNo, pageSize, totalRow, pageTotalCount, pageItems);return Pager;}@Overridepublic PageBean<commoditys> getcommoditysByCategoryName(String categoryName, int pageNo, int pageSize) {//根据分类名称获取商品列表List<commoditys> blist = commodityDao.getcommoditysByCategoryName(categoryName);//计算总记录数int totalRow = blist.size();//计算总页数int pageTotalCount = totalRow / pageSize;if (totalRow % pageSize > 0) {pageTotalCount++;}//根据分页参数获取当前页的商品列表List<commoditys> pageItems = blist.subList((pageNo - 1) * pageSize, Math.min(pageNo * pageSize, totalRow));//创建分页对象PageBean<commoditys> Pager = new PageBean<commoditys>(pageNo, pageSize, totalRow, pageTotalCount, pageItems);
serlvet 层代码示例:@WebServlet("/OrderServlet")public class OrderServlet extends HttpServlet {private OrderService orderService = new OrderServiceImpl();protected void saveOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Cart cart = (Cart) req.getSession().getAttribute("cart");//如果cart为null,说明没有买任何东西,直接转发到首页if (null == cart) {req.getRequestDispatcher("/index.jsp").forward(req, resp);return;}//获取当前登录的memberIdMember member = (Member) req.getSession().getAttribute("member");if (null == member) {//说明用户没有登陆,转发到登陆页面req.getRequestDispatcher("/views/member/login.jsp").forward(req, resp);return;}//生成订单String orderId = orderService.saveOrder(cart, member.getId());req.getSession().setAttribute("orderId", orderId);resp.sendRedirect(req.getContextPath() + "/views/order/checkout.jsp");}}Dao 层代码示例:package dao.impl;import bean.Order;import dao.OrderDAO;import utils.JDBCUtilsByDruid;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;public class OrderDAOImpl implements OrderDAO {private QueryRunner qr = new QueryRunner();@Overridepublic int saveOrder(Order order) {String sql = "INSERT INTO `order`(member_id, total_price) VALUES(?,?)";Object[] params = {order.getMemberId(), order.getTotalPrice()};return update(sql, params);}}service 层代码示例package service.impl;import bean.Cart;import bean.Member;import bean.Order;import dao.OrderDAO;import dao.impl.OrderDAOImpl;import service.OrderService;public class OrderServiceImpl implements OrderService {private OrderDAO orderDAO = new OrderDAOImpl();@Overridepublic String saveOrder(Cart cart, int memberId) {//创建订单对象Order order = new Order();order.setMemberId(memberId);order.setTotalPrice(cart.getTotPrice());//保存订单到数据库orderDAO.saveOrder(order);//返回订单idreturn order.getId();}}  serlvet 层代码示例:@WebServlet("/OrderServlet")public class OrderServlet extends HttpServlet {private OrderService orderService = new OrderServiceImpl();protected void saveOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Cart cart = (Cart) req.getSession().getAttribute("cart");//如果cart为null,说明没有买任何东西,直接转发到首页if (null == cart) {req.getRequestDispatcher("/index.jsp").forward(req, resp);return;}//获取当前登录的memberIdMember member = (Member) req.getSession().getAttribute("member");if (null == member) {//说明用户没有登陆,转发到登陆页面req.getRequestDispatcher("/views/member/login.jsp").forward(req, resp);return;}//生成订单String orderId = orderService.saveOrder(cart, member.getId());req.getSession().setAttribute("orderId", orderId);resp.sendRedirect(req.getContextPath() + "/views/order/checkout.jsp");}}Dao 层代码示例:package dao.impl;import bean.Order;import dao.OrderDAO;import utils.JDBCUtilsByDruid;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;public class OrderDAOImpl implements OrderDAO {private QueryRunner qr = new QueryRunner();@Overridepublic int saveOrder(Order order) {String sql = "INSERT INTO `order`(member_id, total_price) VALUES(?,?)";Object[] params = {order.getMemberId(), order.getTotalPrice()};return update(sql, params);}}service 层代码示例package service.impl;import bean.Cart;import bean.Member;import bean.Order;import dao.OrderDAO;import dao.impl.OrderDAOImpl;import service.OrderService;public class OrderServiceImpl implements OrderService {private OrderDAO orderDAO = new OrderDAOImpl();@Overridepublic String saveOrder(Cart cart, int memberId) {//创建订单对象Order order = new Order();order.setMemberId(memberId);order.setTotalPrice(cart.getTotPrice());//保存订单到数据库orderDAO.saveOrder(order);//返回订单idreturn order.getId();}}  

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

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

相关文章

单细胞|MEBOCOST·细胞间代谢通讯

概述 在代谢活跃的细胞中&#xff0c;表达的代谢酶催化代谢反应生成许多代谢物。这些代谢物中的一些可以扩散到细胞外空间并作为信号分子发挥作用。某些细胞外代谢物可以与空间上邻近细胞的感应蛋白结合。我们将分泌代谢物的细胞称为发送细胞&#xff0c;而表达感应蛋白的细胞称…

借助 NGINX 对本地的 Kubernetes 服务进行自动化的 TCP 负载均衡

原文作者&#xff1a;Chris Akker - F5 技术解决方案架构师&#xff0c;Steve Wagner - F5 NGINX 解决方案架构师 原文链接&#xff1a;借助 NGINX 对本地的 Kubernetes 服务进行自动化的 TCP 负载均衡 转载来源&#xff1a;NGINX 中文官网 NGINX 唯一中文官方社区 &#xff0c…

苹果AI跳票,国产手机厂商们的机会终于来了

“Hi,I’m a Mac” “And I’m a PC” 如果你看过苹果在2006年发布的经典广告《Get a Mac》系列&#xff0c;也许会对这句广告语以及背后的PC和Mac之争印象深刻。 从最开始的《1984》&#xff0c;到之后的《Think Different》&#xff0c;乔布斯在他主导的66部商业广告中向大…

NAT、代理服务、内网穿透

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 NAT 前面我们说过&#xff0c;NAT技术解决了IP地址不足的问题&#xff0c;它能够将私有IP对外通信时转换为全局IP。 NAT转换过程 在私有IP向外通信时&#xff0c;源IP会一直被替换&#xff0c;直到被替换为全局IP&#xff…

java之接口和抽象类的综合案例以及如何用接口优化代码

//定义一个类,这个类里因为有抽象方法,所以我们要把这个类定义为抽象类 public abstract class Sports {private String name;private int age;//空参public Sports() {}//有参public Sports(String name, int age) {this.name name;this.age age;}//定义get和set方法public …

Java数据结构和算法中文版(第2版)详细教程

前言 数据结构是指数据在计算机存储空间中(或磁盘中)的安排方式。算法是指软件程序用来操作这些结构中的数据的过程。几乎所有的计算机程序都使用数据结构和算法&#xff0c;即使最简单的程序也不例外。比如设想一个打印地址标签的程序&#xff0c;这个程序使用一个数组来存储…

如何使用git拉取gitee上面的项目/代码?(超简单)

一、下载git软件 下载地址&#xff1a;git官网地址 1.点击右边小电脑上的按钮下载 2.选择自己电脑对应的系统 3.基本都是默认&#xff0c;这里需要勾一下就ok 4.正在安装 2.使用git软件 1.如何打开git 找到你想要操作的文件夹&#xff0c;右击open git bash here就可以…

内衣洗衣机多维度测评对比,了解觉飞、希亦、鲸立哪款内衣洗衣机更好

想要代替手洗内衣物&#xff0c;那么一台内衣专用的小型洗衣机就必不可少啦&#xff0c;不仅能够为我们节约更多的时间以及精力&#xff0c;还能大大提高内衣物的卫生&#xff0c;面对于市面上各种各样的小型内衣洗衣机&#xff0c;相信很多小伙伴都无从下手&#xff01; 为一…

英飞凌 TC3XX单片机HSM内核开发-Secure Boot(五)

ROM固件和启动过程 AURIX 芯片&#xff0c;带有硬件安全模块 (HSM) 的芯片&#xff0c;包含两个 ROM 固件&#xff1a;TriCore(CPU0) 的启动软件 (SSW) 和 HSM 的启动系统 (BOS)。这些固件不共享相同的指令集架构 (ISA)。 1. 芯片启动 AURIX芯片冷启动和热启动时的启动顺序受…

线程池和进程池,输出有区别吗?

from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor def fn(name):for i in range(1000):print(name,i)if __name__ __main__:with ThreadPoolExecutor(10) as t:for i in range(100):t.submit(fn,namef"线程{i}")with ProcessPoolExecutor(10…

Linux第七节课gcc与g++

一、补充权限 普通用户无法执行sudo&#xff1a; 通过sudo执行后显示不在sudoers file中&#xff01;&#xff08;张三不被信任&#xff01;&#xff09; 需要修改配置文件&#xff08;白名单&#xff01;&#xff09; 配置文件位于以下目录&#xff1a; ls /etc/sudoers -…

如何在 Odoo 16 网站中创建高级选择字段

Odoo 在后端用户界面中包含各种小部件&#xff0c;用于执行各种活动&#xff0c;例如 one2many、many2many、many2many_tags 等&#xff0c;这简化并简化了 Odoo 中选择字段的操作。因此&#xff0c;当我们创建包含 one2many 或 many2many 字段的表单时&#xff0c;很难在没有外…

如何在linux中安装搜狗输入法

参考网址&#xff1a;搜狗输入法linux-安装指导 sudo apt-get install fcitx 1.更新源&#xff1a;在终端输入 sudo apt update 2.安装fcitx输入法框架&#xff1a; sudo apt install fcitx 3.设置fcitx开机自启动 sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/aut…

航空航天混合动力(1)全权限数字发动机控制器(FADEC)

航空航天混合动力&#xff08;1&#xff09;全权限数字发动机控制器&#xff08;FADEC&#xff09; 1.概况2.什么是全权限数字发动机控制器&#xff08;FADEC&#xff09;&#xff1f;2.1核心技术2.2应用场景2.3国内FADEC供应商2.4近期进展2.5数字发动机控制和全权数字发动机控…

开放式耳机什么牌子的好?看这6大品牌就够了

移动互联网时代&#xff0c;听歌、追剧、网课、短视频……这几年全球青年人对于耳机和耳朵的依赖程度&#xff0c;可谓前所未有的提升。但选择一款好的耳机&#xff0c;也不是一件容易的事&#xff0c;入耳式耳机戴久了耳道会疼&#xff0c;还可能引起一系列不必要的炎症&#…

彻底搞清楚SSR同构渲染的首屏

作为.NET技术栈的全干工程师&#xff0c;Blazor、Vue/Nuxt.js和React/Next.js都会接触到。它们&#xff08;准确的说是Blazor、Nuxt和Next&#xff09;&#xff0c;都实现了SSR同构渲染。要了解同构渲染&#xff0c;需要从服务端渲染开始。 传统的服务端渲染 如下图所示&…

孟德尔随机化、R语言,报错,如何解决?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

喜讯|华院计算Uni-law法律大模型成功入选《2024中国数据智能产业AI大模型先锋企业》

7月24日&#xff0c;“2024企业数智化转型升级发展论坛——暨AI大模型趋势论坛”在北京圆满落幕。此次论坛由数据猿主办&#xff0c;IDC协办&#xff0c;新华社中国经济信息社、上海大数据联盟、上海市数商协会及上海超级计算中心作为支持单位。大会以“数智新质力拓未来”为主…

世界上速度最快的超级计算机推导出超级BC8钻石配方

BC8 超级钻石比任何已知材料都要坚硬&#xff0c;但它们很可能只存在于巨型系外行星的内核中。现在&#xff0c;世界上最强的超级计算机"前沿"已经揭开了它们形成的秘密&#xff0c;这一发现可能会导致在地球上生产它们。 钻石不仅是夺人眼球的珠宝&#xff0c;而且在…