基于JAVA+SSM+VUE+微信小程序的前后端分离的生活日用品交易平台的设计与实现

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

随着互联网的快速发展和智能移动设备的普及,电子商务成为了人们购物的主要方式之一。然而,传统的电子商务平台主要侧重于大型商品和服务的交易,对于生活日用品的交易支持相对较弱。这导致了在日常生活中,人们购买生活日用品时仍然依赖于传统的线下购物方式,面临诸如时间浪费、交通拥堵等问题。

为了解决这一问题,本研究旨在设计和实现一个基于JAVA+SSM+VUE的前后端分离的生活日用品交易平台,并结合微信小程序作为移动端的交互界面。这样的平台将充分利用互联网和移动设备的优势,提供便捷的购物体验和高效的交易服务。

JAVA作为一种强大的编程语言,具有广泛的应用领域和丰富的开发资源,能够提供稳定可靠的后端支持。SSM框架是一种常用的Java Web开发框架,具有良好的扩展性和灵活性,适用于构建中小型的电子商务平台。VUE作为一种流行的JavaScript框架,具有简洁易用的特点,可实现前端页面的快速开发和响应式设计。

通过将前后端进行分离,可以实现前后端的解耦,提高系统的可维护性和扩展性。微信小程序作为一种轻量级的移动应用开发框架,具有广泛的用户基础和良好的用户体验,能够满足用户在移动设备上进行生活日用品交易的需求。

总之,本研究的设计与实现将为人们提供一种便捷、高效的购物方式,改善传统线下购物的不便之处,推动生活日用品交易的数字化和智能化发展。

二、项目技术简介:

微信小程序

微信小程序,是一种普及型高、新型的、不需要安装就可以使用的程序,它通过搜索栏或者是扫描微信二维码,就可以使用户体验到其功能。申请微信小程序的门槛很低,各行各业的用户与组织均可以申请注册。

1、广阔的宣传范围。微信有着巨量的用户基础,为小程序提供了天然的客户基础,提高商家销售的机会,拥有了更多的曝光机会,推动了经济的持续性发展。

2、使用方便。微信小程序不用下载就可以使用,大幅度的降低了研发软件的成本,使用过以后可以在用过的小程序中再次使用,十分简便,容易上手

3、较为完善的程序设计。在进行微信小程序的关键字搜索,可以较为精准的搜索到想要的商家。与APP上的软件功能基本类似,有着完善的售后措施,保证了用户的购物体验。

Java开发工具

对于java工具的使用,有以下几种方法:1.操作系统的记事本软件 2. 集成开发环境Ide 3. 高级记事本软件4.eclipse和MyEclipse的区别:1.Eclipse是一个可扩展的开源ide,eclipse的特点是:免费,用纯java语言编写,无需安装,可扩展性强。2.MyEclipse:添加基于eclipse的功能插件,为web开发提供强大的系统架构平台。

前端开发工具

该系统的首页由hbuliderx开发。Hbuliderx是由中国dcloud公司开发的。它可以大大提高开发效率,为程序员设计出更具人文关怀的用户界面,该工具涵盖了所有语法库以及兼容各个浏览器的数据类型。开发Hbuilder工具的主要原因是为了帮助追求效率的开发者。他拥有最快的开发工具,五个助手极大的提高了代码编写的速率;并且使用软绿色作为主题,能够很好保护开发者的健康。

MYSQL数据库

Mysql现在被Oracle公司收购,虽然Oracle公司一直声称要讲Mysql变为付费软件,但到目前为止,该软件已然是免费状态。

所以,Mysql在市场上非常受欢迎,很大一个原因就是它是免费开源的,这让它成为很多中小型企业的宠儿,除此之外,Mysql相对来说部署较为简单,所需计算机性能不高,使用标准SQL语言进行操作,对软件开发人员来说,上手简单,部署方便。而且市面上有很多数据库可视化操作工具,如Navicat for Mysql,通过这个软件操作数据库,非常的简介,直观且高效。但与Oracle相比,Mysql还是存在一些弊端,首先,在安全性方面,不如Oracle稳定,并且,功能没有Oracle那么多,目前常用的操作是表结构查询,视图查询,事务操作等,而触发过程,存储器等功能远没有Oracle强大。

Tomcat服务器

Tomcat服务器是一般的web应用服务器,它属于免费开源地位轻量级服务器。该服务器通常被应用与广大中小型系统,或者同时接入账户的情况。对于Java学习的初学者来说,通常是把Apache服务器放置在一台主机上,然后去是试验HTML页面的访问请求是否能够响应。事实上,能够进行独立运行的Tomacat服务器只是Apache服务器的一个扩展,因此,Tomacat的运行即是Apache独立进程运行的。

这个轻量级的Tomcat服务是众多开发者的首选。最主要的原因是在对Tomcat服务器进行操作时使用的系统资源少,同时该服务器的扩展性能良好,能够支持邮件功能、负载均衡等系统开发常用功能。对Tomcat感兴趣的程序员可以修改它并在里面添加新特性,这使得Tomcat在不断的更新优化。

三、系统功能模块介绍:

请添加图片描述

四、数据库设计:

1:‘地址’(address)

字段名类型默认值列注释
idbigintNULL主键id
useridbigintNULL用户id
addressvarcharNULL地址
namevarcharNULL收货人
phonevarcharNULL电话
isdefaultvarcharNULL是否默认地址[是/否]
addtimedatetimeNULL

2:‘购物车表’(cart)

字段名类型默认值列注释
idbigintNULL主键id
tablenamevarcharNULL商品表名
useridbigintNULL用户id
goodidbigintNULL商品id
goodnamevarcharNULL商品名称
picturevarcharNULL图片
buynumberintNULL购买数量
pricefloatNULL单价
discountpricefloatNULL会员价
addtimedatetimeNULL添加时间

3:‘客服聊天表’(chat)

字段名类型默认值列注释
idbigintNULL主键id
useridbigintNULL用户id
adminidbigintNULL管理员id
askvarcharNULL提问
replyvarcharNULL回复
isreplyintNULL是否回复
addtimedatetimeNULL添加时间

4:config(config)

字段名类型默认值列注释
idbigintNULL
namevarcharNULL
valuevarcharNULL

5:‘公告信息评论表’(discussgonggaoxinxi)

字段名类型默认值列注释
idbigintNULL主键id
refidbigintNULL关联表id
useridbigintNULL用户id
nicknamevarcharNULL用户名
contenttextNULL评论内容
replytextNULL回复内容
addtimedatetimeNULL添加时间

6:‘商品信息评论表’(discussshangpinxinxi)

字段名类型默认值列注释
idbigintNULL主键id
refidbigintNULL关联表id
useridbigintNULL用户id
nicknamevarcharNULL用户名
contenttextNULL评论内容
replytextNULL回复内容
addtimedatetimeNULL添加时间

7:‘公告信息’(gonggaoxinxi)

字段名类型默认值列注释
idbigintNULL主键id
gonggaobiaotivarcharNULL公告标题
gonggaoleixingvarcharNULL公告类型
tupianvarcharNULL图片
neirongtextNULL内容
faburiqidateNULL发布日期
addtimedatetimeNULL添加时间

8:‘会员’(huiyuan)

字段名类型默认值列注释
idbigintNULL主键id
yonghumingvarcharNULL用户名
mimavarcharNULL密码
xingmingvarcharNULL姓名
xingbievarcharNULL性别
touxiangvarcharNULL头像
shoujivarcharNULL手机
moneyfloatNULL余额
addtimedatetimeNULL添加时间

9:‘新闻资讯’(news)

字段名类型默认值列注释
idbigintNULL主键id
titlevarcharNULL标题
introductiontextNULL简介
picturevarcharNULL图片
contenttextNULL内容
addtimedatetimeNULL添加时间

10:‘订单’(orders)

字段名类型默认值列注释
idbigintNULL主键id
orderidvarcharNULL订单编号
tablenamevarcharNULL商品表名
useridbigintNULL用户id
goodidbigintNULL商品id
goodnamevarcharNULL商品名称
picturevarcharNULL商品图片
buynumberintNULL购买数量
pricefloatNULL价格/积分
discountpricefloatNULL折扣价格
totalfloatNULL总价格/总积分
discounttotalfloatNULL折扣总价格
typeintNULL支付类型
statusvarcharNULL状态
addressvarcharNULL地址
addtimedatetimeNULL添加时间

11:‘商品分类’(shangpinfenlei)

字段名类型默认值列注释
idbigintNULL主键id
fenleivarcharNULL分类
addtimedatetimeNULL添加时间

12:‘商品信息’(shangpinxinxi)

字段名类型默认值列注释
idbigintNULL主键id
shangpinmingchengvarcharNULL商品名称
fenleivarcharNULL分类
biaoqianvarcharNULL标签
tupianvarcharNULL图片
guigevarcharNULL规格
pinpaivarcharNULL品牌
xiangqingtextNULL详情
clicktimedatetimeNULL最近点击时间
clicknumintNULL点击次数
pricefloatNULL价格
addtimedatetimeNULL添加时间

13:‘收藏表’(storeup)

字段名类型默认值列注释
idbigintNULL主键id
useridbigintNULL用户id
refidbigintNULL收藏id
tablenamevarcharNULL表名
namevarcharNULL收藏名称
picturevarcharNULL收藏图片
addtimedatetimeNULL添加时间

14:‘token表’(token)

字段名类型默认值列注释
idbigintNULL主键id
useridbigintNULL用户id
usernamevarcharNULL用户名
tablenamevarcharNULL表名
rolevarcharNULL角色
tokenvarcharNULLtoken
expiratedtimedatetimeNULL过期时间
addtimedatetimeNULL新增时间

15:‘用户表’(users)

字段名类型默认值列注释
idbigintNULL主键id
usernamevarcharNULL用户账号
passwordvarcharNULL密码
rolevarcharNULL用户类型
addtimedatetimeNULL添加时间

五、功能模块:

登录注册:登录注册

c99d13cebddff8d8168a238e382a5a4

0fe688e9ffd30722b985ea788817a73

系统首页:用户在首页页面可看到商品轮播图、精选主题、最近新品等信息

2

公告信息:关键字搜索公告,查看公告详情

f8df9b05ef74b62e6f733002e00d329

商品信息:查看商品详情,加入购物车,立即订购,添加地址信息,手动输入,地图选点,立即支付

c447714bcd41c8e55cc2bbbb7da4b34

31d129c83418e407457be34ee68a930

477e04c1c2601e0e7267d3f01c8d137

d3c3ec3a2dba3e16914a02e16f6c574

e499d1a6779be21c2433440e385a15d

我的:我的信息可以修改个人信息,查看公告信息,查看商品信息,给账户进行充值,与客服进行聊天,查看购物车和订单信息

ed9727bc387a8bc48bc9e49f777dfc5

d6eebda1fac891a1536a4873fd1029d

6a1a978a7540f1ac700fa4a29107406

c99d13cebddff8d8168a238e382a5a4

管理端个人信息管理:

16c18e09edfcb7737315465bda5e82e

59e6577773a2d1b4058cb9addfcd45b

公告信息管理:

302463a184bb51f5247ba34941e3579

4e3d03e23d023d0d1064be199ba0814

商品分类管理:

94fb2e06a0e932735fcdd22a51641c6

商品信息管理:

0a79291a9cf4070490a5c30314513ad

会员信息管理:

4d8355a3d4981f04fb73253d46e7b51

轮播图信息管理:

07017ee18e432012144a0877e0b04b9

新闻咨询管理:

cb2efa3490430a706056edff1d4155f

订单信息管理:

ef19b2346f1d72fc1c26d5a504375f7

六、代码示例:

购物车相关业务逻辑
/**
     * 查询
     */
    @RequestMapping("/query")
    public R query(CartEntity cart){
        EntityWrapper< CartEntity> ew = new EntityWrapper< CartEntity>();
 		ew.allEq(MPUtil.allEQMapPre( cart, "cart")); 
		CartView cartView =  cartService.selectView(ew);
		return R.ok("查询购物车表成功").put("data", cartView);
    }
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        CartEntity cart = cartService.selectById(id);
        return R.ok().put("data", cart);
    }
    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        CartEntity cart = cartService.selectById(id);
        return R.ok().put("data", cart);
    }
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody CartEntity cart, HttpServletRequest request){
    	cart.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(cart);
    	cart.setUserid((Long)request.getSession().getAttribute("userId"));
        cartService.insert(cart);
        return R.ok();
    }
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody CartEntity cart, HttpServletRequest request){
    	cart.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(cart);
        cartService.insert(cart);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody CartEntity cart, HttpServletRequest request){
        //ValidatorUtils.validateEntity(cart);
        cartService.updateById(cart);//全部更新
        return R.ok();
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        cartService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		Wrapper<CartEntity> wrapper = new EntityWrapper<CartEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}
		int count = cartService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
订单相关业务逻辑
/**
     * 查询
     */
    @RequestMapping("/query")
    public R query(OrdersEntity orders){
        EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
 		ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
		OrdersView ordersView =  ordersService.selectView(ew);
		return R.ok("查询订单成功").put("data", ordersView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody OrdersEntity orders, HttpServletRequest request){
    	orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(orders);
    	orders.setUserid((Long)request.getSession().getAttribute("userId"));

        ordersService.insert(orders);
        return R.ok();
    }
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody OrdersEntity orders, HttpServletRequest request){
    	orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(orders);
        ordersService.insert(orders);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody OrdersEntity orders, HttpServletRequest request){
        //ValidatorUtils.validateEntity(orders);
        ordersService.updateById(orders);//全部更新
        return R.ok();
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        ordersService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
				Wrapper<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}
		int count = ordersService.selectCount(wrapper);
		return R.ok().put("count", count);
	}

七、论文参考:

论文参考···论文参考图

八、项目总结:

该平台通过使用SSM框架、微信小程序开发、MYSQL数据库等技术,发掘了该系统的可行性,实现了组建的基于微信小程序的生活日用品商城,通过对此平台的的学习和研究,学习了目前炙手可热的小程序开发技术,通过这次的实践,明确的意识到了常动手操作的重要性,需要在开发过程中深入的探索与认识各功能的作用,认识到每一个步骤的逻辑联系与操作方法,才能最好的去掌握它。

该系统前台是微信小程序,运行在微信服务器上,安全性毋庸置疑,并且可以上传多版本,应用升级迭代很方便,也支持很多UI框架,整体很完善。系统后台使用java编写,使用SSM框架完成,使各个模块松耦合,模块的修改与升级互不影响,维护方便。当然,在此之前必须要熟悉微信框架以及熟练地使用css来调样式。对于CSS,个人觉得比较难调的就是定位和布局了。学习新的框架就是两个过程:熟悉框架和上手项目。当然,当你已经熟悉了框架之后,你就会显得得心应手。

渐渐的微信小程序进入大家的生活,点开即用无需下载的方便大家都有体会,随着5G的普及,以及微信官方对其不断升级,相信小程序会代替大多数中小型软件。该小程序解决了客户在网络上购物的问题,它在日后的发展过程中会逐渐变为一个综合性服务平台,这样才能让你的微信小程序开发工作更加明确。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻

基于微信小程序的生活日用品商城,通过对此平台的的学习和研究,学习了目前炙手可热的小程序开发技术,通过这次的实践,明确的意识到了常动手操作的重要性,需要在开发过程中深入的探索与认识各功能的作用,认识到每一个步骤的逻辑联系与操作方法,才能最好的去掌握它。

该系统前台是微信小程序,运行在微信服务器上,安全性毋庸置疑,并且可以上传多版本,应用升级迭代很方便,也支持很多UI框架,整体很完善。系统后台使用java编写,使用SSM框架完成,使各个模块松耦合,模块的修改与升级互不影响,维护方便。当然,在此之前必须要熟悉微信框架以及熟练地使用css来调样式。对于CSS,个人觉得比较难调的就是定位和布局了。学习新的框架就是两个过程:熟悉框架和上手项目。当然,当你已经熟悉了框架之后,你就会显得得心应手。

渐渐的微信小程序进入大家的生活,点开即用无需下载的方便大家都有体会,随着5G的普及,以及微信官方对其不断升级,相信小程序会代替大多数中小型软件。该小程序解决了客户在网络上购物的问题,它在日后的发展过程中会逐渐变为一个综合性服务平台,这样才能让你的微信小程序开发工作更加明确。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Web框架的三强之争:Flask、Django和FastAPI

JetBrains 公布 2022 Python 开发者调查结果。 完整报告地址&#xff1a;https://lp.jetbrains.com/zh-cn/python-developers-survey-2022/ 这是由 Python 软件基金会 (PSF) 和 JetBrains 共同开展的第六次官方年度 Python 开发者调查&#xff0c;回复于 2022 年 10 月至 12 …

国外客户要求免费样品?我来教你如何应对

这一次的问题对外贸业务员来说是非常重要。无论你是做什么行业&#xff0c;无论你是做什么产品我相信这个问题对你来说超级有用。 关于发样品给客户我有四个方案来跟大家分享&#xff0c;我希望你能够喜欢希望你很认真的思考一下&#xff1a; 方法一【样品费及运费一起收】&am…

【网络编程】简述TCP通信程序,三次握手,四次挥手

文章目录 &#x1f384;TCP通信程序⭐打印字符串✨中文乱码问题&#x1f388;解决方法 &#x1f33a;TCP三次握手&#x1f33a;TCP四次挥手&#x1f6f8;其他 &#x1f38a;专栏【网络编程】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386…

腾讯云标准型S5云主机性能评测_CPU内存_带宽系统盘测评

腾讯云服务器CVM标准型S5实例具有稳定的计算性能&#xff0c;CVM 2核2G S5活动优惠价格280.8元一年自带1M带宽&#xff0c;15个月313.2元、2核4G配置748.2元15个月&#xff0c;CPU内存配置还可以选择4核8G、8核16G等配置&#xff0c;公网带宽可选1M、3M、5M或10M&#xff0c;腾…

buildAdmin 后端控制器的代码分析

buildAdmin的代码生成&#xff0c;很像是 fastadmin 的生成模式&#xff0c;当我们利用数据库生成了一个控制器的时候&#xff0c;我们可以看到&#xff0c; 它的生成代码很简洁 <?phpnamespace app\admin\controller\askanswer;use app\common\controller\Backend;/*** 回…

2023.11.19使用flask制作一个文件夹生成器

2023.11.19使用flask制作一个文件夹生成器 实现功能&#xff1a; &#xff08;1&#xff09;在指定路径上建立文件夹 &#xff08;2&#xff09;返回文件夹的路径和建立成功与否的提示 main.py import os from flask import Flask, request, jsonify, render_templateapp F…

archery修改为不能自提自审核上线SQL

目录 背景修改代码效果参考 背景 我和同事都可以提交上线SQL&#xff0c;但是不能自己提交的SQL自己去审核通过。目前的情况是可以自提自审。 修改代码 找到/opt/archery/sql/utils/workflow_audit.py文件 ...省略...# 判断用户当前是否是可审核staticmethoddef can_revie…

VScode调试没有反应

点击调试按钮后没反应 有可能是vscode中安装的python插件版本问题 可以通过重新安装比较旧一点的python尝试解决此问题 步骤如下&#xff1a; 然后从中选择比当前版本更低的版本即可 安装完成后需重启vscode

【从入门到起飞】JavaSE—多线程(1)(实现方式,成员方法)

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;进程&#x1f33a;线程&#x1f384;并发&am…

线性表但是是Java中数组实用使用

线性表定义&#xff1a; 由n (n≥0)个数据特性相同的元素构成的有限序列称为线性表&#xff0c;(n0)的时候被称为空表。 线性表的顺序表示 线性表的顺序存储又被称为顺序表 优点 无需为表示表中元素之间的逻辑关系而增加额外的存储空间可以随意读取任意位置的元素 缺点 插入…

商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法

一、介绍 商品管理与推荐系统。本系统使用Python作为主要开发语言&#xff0c;前端采用HTML、CSS、BootStrap等技术搭建显示界面&#xff0c;后端采用Django框架处理用户的请求响应。 创新点&#xff1a;使用协同过滤算法&#xff0c;以用户对商品的评分作为依据&#xff0c;在…

[C国演义] 第二十二章

第二十二章 不同的子序列交错字符串 不同的子序列 力扣链接 两个数组的dp问题 (子序列 && 子数组(子串)) ⇒ 分区间来讨论 ⇒ dp[i][j] -- 在s数组的[0, i]区间内, 去寻找t数组在[0, j]这段子串的个数 状态转移方程 遍历顺序 初始化 需要使用左上角的情况 ⇒ dp…

筒仓料位监测|敢不敢对“精度”下狠手!您家筒仓料位测得准吗?

您家是不是还在人工敲仓估算&#xff1f; 您能精确知道料位和库存吗&#xff1f; 您能实时看到库存盈亏吗&#xff1f; 筒仓里装了什么&#xff1f;用了多少&#xff1f; 什么时候进料最划算&#xff1f; 您家的筒仓管理方式可靠吗&#xff1f; 上海思伟筒仓料位监测方案 看…

亚马逊出口电热毯日本PSE认证需要什么资料解析

电热毯出口日本需要办理PSE认证&#xff0c;电热毯&#xff0c;又名电褥&#xff0c;是一种接触式电暖器具。 PSE认证介绍是日本强制性认证&#xff0c;包含安全及EMI&#xff0c;用以证明电子电气等产品符合日期电气用品安全法或国际IEC标准的要求。日本电气用品安全法规定&am…

vue-waterfall2 实现瀑布流,及总结的问题

注意&#xff1a;引入需要在主界面引入&#xff0c;直接在组件中引用会有问题 1.安装 npm install vue-waterfall21.8.20 --save &#xff08;提示&#xff1a;一定要安装1.8.20&#xff0c;最新版会有一部分问题&#xff09; 2.打开main.js文件 import waterfall from v…

解析SOLIDWORKS教育版与企业版:选择合适版本,助力创新设计

SOLIDWORKS作为领先的三维CAD软件&#xff0c;旨在为工程设计、产品开发和创新提供全面支持。在SOLIDWORKS产品线中&#xff0c;教育版和企业版是两种常见的版本。让我们来了解一下它们之间的区别和特点。 SOLIDWORKS教育版&#xff1a;学习、探索、启发创新 面向教育和学术&…

电子邮件解决方案有哪些?邮件系统的问题?

如何选择适合的邮件解决方案&#xff1f;免费稳定企业邮箱系统&#xff1f; 电子邮件都是我们常用的工具。但是&#xff0c;随着电子邮件使用越来越普遍&#xff0c;如何有效地管理邮件也成了一个重要的问题。蜂邮EDM将介绍几种常见的电子邮件解决方案&#xff0c;帮助大家更好…

一篇文章让你彻底了解Java算法「十大经典排序算法」

✍️作者简介&#xff1a;码农小北&#xff08;专注于Android、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f449;关注✨、点赞&…

linux上安装qt creator

linux上安装Qt Creator 1 Qt Creator 的下载 下载地址为&#xff1a;http://download.qt.io/archive/qt/ 根据自己的需求选择Qt Creator版本&#xff0c;这里我下载的是5.12.9&#xff0c;如下图所示&#xff1a; 在ubuntu上可以使用wget命令下载安装包&#xff1a; wget h…

外贸ERP系统是什么?推荐的外贸管理软件?

外贸ERP管理系统有哪些&#xff1f;海洋建站管理软件的功能&#xff1f; 为了更有效地处理外贸业务&#xff0c;许多企业正在寻找先进的工具和技术。为了提高效率、降低成本并增强竞争力&#xff0c;越来越多的外贸企业正在转向外贸ERP系统。那么&#xff0c;外贸ERP系统究竟是…
最新文章