计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战

news2024/11/26 13:44:44

作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

文章目录

  • 一、前言
  • 二、开发环境
  • 三、系统界面展示
  • 四、代码参考
  • 五、论文参考
  • 六、系统视频
  • 结语

一、前言

随着零售行业的快速发展,零食批发商在供应链中扮演着越来越重要的角色。根据中国食品工业协会的数据,近年来国内零食市场规模持续扩大,年增长率保持在10%以上。然而,零食批发商在仓库管理方面面临着诸多挑战,如库存控制不准确、供应链响应速度慢、客户服务体验不佳等问题。这些问题的存在,不仅影响了零食批发商的运营效率,也制约了整个零售行业的健康发展。

现有的零食批发商仓库管理系统普遍存在一些不足之处。例如,一些系统在用户管理方面功能单一,无法满足多角色、多权限的管理需求;在供应商和客户信息管理上,信息更新不够及时,导致供应链协同效率低下;在商品分类管理上,分类不够细致,影响了库存的快速检索和调配;在零食出入库审核上,流程繁琐,缺乏自动化的审核机制,导致出入库效率低下;在零食调配管理上,缺乏有效的调配策略和工具,难以实现库存的优化配置。这些问题的存在,不仅增加了零食批发商的运营成本,也影响了客户满意度。

本课题旨在设计并实现一个便捷、智能的零食批发商仓库管理系统,通过引入先进的信息技术和管理理念,解决现有系统在用户管理、供应商和客户信息管理、商品分类管理、零食出入库审核、零食调配管理等方面存在的问题。系统将实现多角色、多权限的用户管理,提高供应链协同效率;采用自动化的审核机制,提高出入库效率;引入智能调配策略,优化库存配置。通过本课题的研究,希望能够为零食批发商提供一个更加便捷、智能的仓库管理解决方案,提升其市场竞争力。

在设计零食批发商仓库管理系统的功能模块时,管理员角色具备全局管理权限,负责用户账户的创建与维护、供应商信息的录入与更新、客户信息的整理与管理、零食信息的维护与更新、商品分类的设置与优化以及零食出入库的审核与监督,同时还需管理零食调配过程,确保库存的合理分配与流动。用户角色则能够查看供应商和客户信息,了解供应链和销售链状态,查询零食库存信息,提交零食出入库申请以调整库存量,以及发起零食调配申请以优化库存分布。整个系统通过这些功能模块的协同工作,旨在提升仓库管理的自动化水平,增强供应链的响应速度,提高客户满意度,从而为零食批发商带来更便捷的运营管理体验。

本课题的研究具有重要的理论意义和实际意义。从理论角度来看,它为仓库管理领域提供了新的研究思路,即通过信息技术的应用,实现仓库管理的自动化、智能化,这有助于推动供应链管理理论的发展和创新。从实际角度来看,该系统的应用将显著提高零食批发商的仓库管理效率,降低运营成本,提升客户服务体验,增强市场竞争力。同时,系统的推广应用也将为其他零售行业提供可借鉴的管理经验,促进整个行业的信息化、智能化发展。

二、开发环境

  • 开发语言:Java/Python
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:SpringBoot/SSM/Django/Flask
  • 前端:Vue

三、系统界面展示

  • 零食批发商仓库管理系统界面展示:
    用户-查看零食信息:
    用户-查看零食信息
    用户-提交零食入库信息:
    用户-提交零食入库信息
    用户-提交零食出库信息:
    用户-提交零食出库信息
    用户-提交零食调配信息:
    用户-提交零食调配信息
    管理员-零食出入库审核:管理员-零食出入库审核
    管理员-零食调配审核:
    管理员-零食调配审核

四、代码参考

  • Java项目实战代码参考:
@SuppressWarnings("all")
@RequestMapping("/outstore")
@RestController
public class OutStoreController {
    //注入OutStoreService
    @Autowired
    private OutStoreService outStoreService;

    //注入TokenUtils
    @Autowired
    private TokenUtils tokenUtils;

    /**
     * 添加出库单的url接口/outstore/outstore-add
     *
     * @RequestBody OutStore outStore将添加的出库单信息的json数据封装到参数OutStore对象;
     * @RequestHeader(WarehouseConstants.HEADER_TOKEN_NAME) String token
     * 将请求头Token的值即客户端归还的token赋值给参数变量token;
     */
    @RequestMapping("/outstore-add")
    public Result addOutStore(@RequestBody OutStore outStore,
                              @RequestHeader(WarehouseConstants.HEADER_TOKEN_NAME) String token){

        //获取当前登录的用户
        CurrentUser currentUser = tokenUtils.getCurrentUser(token);
        //获取当前登录的用户id,即添加出库单的用户id
        int createBy = currentUser.getUserId();
        outStore.setCreateBy(createBy);

        //执行业务
        Result result = outStoreService.saveOutStore(outStore);

        //响应
        return result;
    }
    //注入StoreService
    @Autowired
    private StoreService storeService;

    /**
     * 查询所有仓库的url接口/outstore/store-list
     */
    @RequestMapping("/store-list")
    public Result storeList(){
        //执行业务
        List<Store> storeList = storeService.queryallStore();
        //响应
        return Result.ok(storeList);
    }
    /**
     * 分页查询出库单的url接口/outstore/outstore-page-list
     *
     * 参数Page对象用于接收请求参数页码pageNum、每页行数pageSize;
     * 参数OutStore对象用于接收请求参数仓库id storeId、商品名称productName、
     * 是否出库isOut、起止时间startTime和endTime;
     *
     * 返回值Result对象向客户端响应组装了所有分页信息的Page对象;
     */
    @RequestMapping("/outstore-page-list")
    public Result outStorePageList(Page page, OutStore outStore){
        //执行业务
        page = outStoreService.outStorePage(page, outStore);
        //响应
        return Result.ok(page);
    }

    /**
     * 确定出库的url接口/outstore/outstore-confirm
     *
     * @RequestBody OutStore outStore将请求传递的json数据封装到参数OutStore对象;
     */
    @RequestMapping("/outstore-confirm")
    public Result confirmOutStore(@RequestBody OutStore outStore){
        //执行业务
        Result result = outStoreService.confirmOutStore(outStore);
        //响应
        return result;
    }
    /**
     * 导出数据的url接口/store/exportTable
     *
     * 参数Page对象用于接收请求参数页码pageNum、每页行数pageSize;
     * 参数Store对象用于接收请求参数仓库名称storeName、仓库地址storeAddress、
     * 联系人concat、联系电话phone;
     *
     * 返回值Result对象向客户端响应组装了当前页数据的List;
     */
    @RequestMapping("/exportTable")
    public Result exportTable(Page page, OutStore outStore){
        //分页查询仓库
        page = outStoreService.outStorePage(page, outStore);
        //拿到当前页数据
        List<?> resultList = page.getResultList();
        //响应
        return Result.ok(resultList);
    }
}
@RequestMapping("/product")
@RestController
public class ProductController {
    @Autowired
    private StoreService storeService;
    @Autowired
    private BrandService brandService;

    @Autowired
    private SupplyService supplyService;
    @Autowired
    private ProductTypeService productTypeService;

    @Autowired
    private UnitService unitService;

    @Autowired
    private PlaceService placeService;
    //注入ProductService
    @Autowired
    private ProductService productService;


    @RequestMapping("/store-list")
    public Result queryStoreList() {
        List<Store> stores = storeService.queryallStore();
        return Result.ok(stores);
    }

    @RequestMapping("brand-list")
    public Result brandList() {
        List<Brand> brands = brandService.queryAllBrand();
        return Result.ok(brands);
    }

    @RequestMapping("/category-tree")
    public Result productTypeList() {
        List<ProductType> productTypes = productTypeService.allProductTypeTree();
        return Result.ok(productTypes);
    }

    @RequestMapping("/supply-list")
    public Result supplylist() {
        List<Supply> supplys = supplyService.queryAllSupply();
        return Result.ok(supplys);
    }

    @RequestMapping("/place-list")
    public Result placeList() {
        //执行业务
        List<Place> placeList = placeService.queryAllPlaces();
        //响应
        return Result.ok(placeList);
    }

    @RequestMapping("/unit-list")
    public Result unitlist() {
        //执行业务
        List<Unit> Units = unitService.queryAllUnits();
        //响应
        return Result.ok(Units);
    }

    /**
     * 分页查询商品的url接口/product/product-page-list
     * <p>
     * 参数Page对象用于接收请求参数页码pageNum、每页行数pageSize;
     * 参数Product对象用于接收请求参数仓库id storeId、商品名称productName、
     * 品牌名称brandName、分类名称typeName、供应商名称supplyName、产地名称
     * placeName、上下架状态upDownState、是否过期isOverDate;
     * <p>
     * 返回值Result对象向客户端响应组装了所有分页信息的Page对象;
     */
    @RequestMapping("/product-page-list")
    public Result productPageList(Page page, Product product) {
        //执行业务
        page = productService.queryProductPage(page, product);
        //响应
        return Result.ok(page);
    }

    /**
     * 将配置文件的file.upload-path属性值注入给控制器的uploadPath属性,
     * 其为图片上传到项目的目录路径(类路径classes即resources下的static/img/upload);
     */
    @Value("${file.upload-path}")
    private String uploadPath;


    /**
     * 上传图片的url接口/product/img-upload
     * <p>
     * 参数MultipartFile file对象封装了上传的图片;
     *
     * @CrossOrigin表示该url接口允许跨域请求;
     */
    @CrossOrigin
    @RequestMapping("/img-upload")
    public Result imgUpload(MultipartFile file) {

        try {
            //拿到图片上传到的目录(类路径classes下的static/img/upload)的File对象
            File uploadFile = ResourceUtils.getFile(String.valueOf(file));
            //拿到图片上传到的目录的磁盘路径
            File absoluteFile = uploadFile.getAbsoluteFile();
            //拿到图片的文件名
            String originalFilename = file.getOriginalFilename();
            //拿到图片保存到的磁盘路径
            String uploadPath = absoluteFile + "\\" + originalFilename;
            file.transferTo(new File(uploadPath));
            //成功响应
            return Result.ok("图片上传成功!");

        } catch (Exception e) {
            //失败响应
            return Result.err(Result.CODE_ERR_BUSINESS, "图片上传失败!");

        }
    }

    //注入TokenUtils
    @Autowired
    private TokenUtils tokenUtils;

    /**
     * 添加商品的url接口/product/product-add
     *
     * @RequestBody Product product将添加的商品信息的json串数据封装到参数Product对象;
     * @RequestHeader(WarehouseConstants.HEADER_TOKEN_NAME) String token
     * 将请求头Token的值即客户端归还的token赋值给参数变量token;
     */
    @RequestMapping("/product-add")
    public Result addProduct(@RequestBody Product product,
                             @RequestHeader(WarehouseConstants.HEADER_TOKEN_NAME) String token) {

        //获取当前登录的用户
        CurrentUser currentUser = tokenUtils.getCurrentUser(token);
        //获取当前登录的用户id,即添加商品的用户id
        int createBy = currentUser.getUserId();
        product.setCreateBy(createBy);
        //响应
        return productService.saveProduct(product);
    }

    /**
     * 修改商品上下架状态的url接口/product/state-change
     *
     * @RequestBody Product product用于接收并封装请求json数据;
     */
    @RequestMapping("/state-change")
    public Result changeProductState(@RequestBody Product product){
        //执行业务
        Result result = productService.updateProductState(product);
        //响应
        return result;
    }

    /**
     * 删除商品的url接口/product/product-delete/{productId}
     */
    @RequestMapping("/product-delete/{productId}")
    public Result deleteProduct(@PathVariable Integer productId){
        //执行业务
        //响应
        return productService.deleteByPrimaryKey(productId);
    }

    /**
     * 修改商品的url接口/product/product-update
     *
     * @RequestBody Product product将请求传递的json数据封装到参数Product对象;
     * @RequestHeader(WarehouseConstants.HEADER_TOKEN_NAME) String token
     * 将请求头Token的值即客户端归还的token赋值给参数变量token;
     */
    @RequestMapping("/product-update")
    public Result updateProduct(@RequestBody Product product,
                                @RequestHeader(WarehouseConstants.HEADER_TOKEN_NAME) String token){

        //获取当前登录的用户
        CurrentUser currentUser = tokenUtils.getCurrentUser(token);
        //获取当前登录的用户id,即修改商品的用户id
        int updateBy = currentUser.getUserId();
        product.setUpdateBy(updateBy);

        //执行业务
        Result result = productService.updateProduct(product);

        //响应
        return result;
    }


    /**
     * 导出数据的url接口/store/exportTable
     *
     * 参数Page对象用于接收请求参数页码pageNum、每页行数pageSize;
     * 参数Store对象用于接收请求参数仓库名称storeName、仓库地址storeAddress、
     * 联系人concat、联系电话phone;
     *
     * 返回值Result对象向客户端响应组装了当前页数据的List;
     */
    @RequestMapping("/exportTable")
    public Result exportTable(Page page, Product product){
        //分页查询仓库
        page = productService.queryProductPage(page, product);
        //拿到当前页数据
        List<?> resultList = page.getResultList();
        //响应
        return Result.ok(resultList);
    }
}
  • Python项目实战代码参考:
class BillsView(APIView):
    @PermissionCheck('bills.view_outbound')
    def get(self, request, format=None):
        # 后续添加权限验证(总经理,仓库经理)可查看所有,其他职工只能查看自己相关的单据
        page = int(request.GET.get('page', '1'))
        size = int(request.GET.get('size', '20'))
        staff_id = request.user.staff_id
        staff = Staff.objects.get(pk=staff_id)
        if staff.role.role_id in ['4a1286cefec64c74a39b7fa18a0a6848', '4c2a53b3843e49ebadc4eb56b6f7e86b']:
            data = Bills.objects.all()
        else:
            data = Bills.objects.filter(staff_num=staff.num)
        paginator = Paginator(data, size)
        pager = paginator.page(page)
        # 模型实例化
        approve = BillsSerializer(pager.object_list, many=True)
        return Response({
            'data': approve.data,
            'total': paginator.count,
            'page': pager.number,  # page当前页号
            'pageSize': size,
            'pages': paginator.num_pages  # 总页数
        })

    @PermissionCheck('bills.add_outbound')
    def post(self, request, format=None):
        anum = request.data.get('num')
        ware_id = request.data.get('ware')
        count = request.data.get('count')
        goods_id = request.data.get('goods')
        indent_id = request.data.get('indent')
        all_st = Staff.objects.filter(role_id='4f3a5a6f63ff4606ac3d8bbb62d51997')
        index = random.randint(0, len(all_st) - 1)
        tran_st = all_st[index]
        apprs = ApprHistory.objects.filter(num=anum)
        if Inform.objects.all():
            ret = str(Inform.objects.count() + 1)
            inum = 'I' + ret.rjust(9, '0')
        else:
            inum = 'I' + '1'.rjust(9, '0')
        tran_id = uuid.uuid4().hex
        logis_id = uuid.uuid4().hex
        appr_his = None
        if apprs.exists():
            appr_his = apprs.first()
        for appr in apprs:
            if appr.appr_idea != '同意':
                return Response({'msg': '请先通过审批后在获取单据'})
        if apprs.first().appr_kind == '出库':
            # 出库类型 生成出库单和配送单
            Outbound.objects.create(out_id=uuid.uuid4().hex,
                                    num=appr_his.num,
                                    goods_id=goods_id,
                                    count=count,
                                    ware_id=ware_id,
                                    type=appr_his.appr_kind,
                                    out_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                    staff_name=Staff.objects.get(pk=appr_his.staff_id).name,
                                    staff_num=Staff.objects.get(pk=appr_his.staff_id).num)
            Bills.objects.create(bills_id=uuid.uuid4().hex, num=appr_his.num, type='出库单',
                                 bills_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                 staff_name=Staff.objects.get(pk=appr_his.staff_id).name,
                                 staff_num=Staff.objects.get(pk=appr_his.staff_id).num)
            Bills.objects.create(bills_id=uuid.uuid4().hex, num=appr_his.num, type='配送单',
                                 bills_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                 staff_name=tran_st.name, staff_num=tran_st.num)
            Transport.objects.create(transport_id=tran_id,
                                     num=appr_his.num,
                                     goods_id=goods_id,
                                     count=count,
                                     company=Indent.objects.get(indent_id=indent_id).company,
                                     transport_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                     staff_name=tran_st.name,
                                     staff_num=tran_st.num,
                                     signer=Indent.objects.get(indent_id=indent_id).sign_name,
                                     address=Indent.objects.get(indent_id=indent_id).address)
            # 生成物流单
            Logistics.objects.create(log_id=logis_id,
                                     indent_id=indent_id,
                                     transport_id=tran_id,
                                     status='等待配送')
            Logdet.objects.create(logdet_id=uuid.uuid4().hex,
                                  log_id=logis_id,
                                  status='等待配送')
            Inform.objects.create(inform_id=uuid.uuid4().hex,
                                  num=inum,
                                  staff_name=tran_st.name,
                                  staff_num=tran_st.num,
                                  time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                  event='新的配送单,请尽快配送',
                                  status='未读')
        else:
            # 入库类型 生成入库单
            Enter.objects.create(enter_id=uuid.uuid4().hex,
                                 num=appr_his.num,
                                 goods_id=goods_id,
                                 count=count,
                                 ware_id=ware_id,
                                 type=appr_his.appr_kind,
                                 enter_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                 staff_name=Staff.objects.get(pk=appr_his.staff_id).name,
                                 staff_num=Staff.objects.get(pk=appr_his.staff_id).num)
            Bills.objects.create(bills_id=uuid.uuid4().hex, num=appr_his.num, type='入库单',
                                 bills_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                 staff_name=Staff.objects.get(pk=appr_his.staff_id).name,
                                 staff_num=Staff.objects.get(pk=appr_his.staff_id).num)
            Inform.objects.create(inform_id=uuid.uuid4().hex,
                                  num=inum,
                                  staff_name=Staff.objects.get(pk=appr_his.staff_id).name,
                                  staff_num=Staff.objects.get(pk=appr_his.staff_id).num,
                                  time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                                  event='有新的货品需要入库,请及时入库',
                                  status='未读')
        return Response({'msg': '单据生成成功'})


class BillsDetailView(APIView):
    @PermissionCheck('bills.view_outbound')
    def get(self, request, pk, format=None):
        bill = Bills.objects.get(pk=pk)
        if bill.type == '出库单':
            data = OutboundSerializer(Outbound.objects.get(num=bill.num), many=False)
        elif bill.type == '配送单':
            data = TransportSerializer(Transport.objects.get(num=bill.num), many=False)
        elif bill.type == '入库单':
            data = EnterSerializer(Enter.objects.get(num=bill.num), many=False)
        else:
            return Response({'msg': '未找到该单据'})
        return Response({'data': data.data})

class BillsimgView(APIView):
    def get(self,request,pk,format=None):
        bill = Bills.objects.get(pk=pk)
        if bill.type == '入库单':
            enter = Enter.objects.get(num=bill.num)
            price = int(enter.goods.retail * 0.8 * enter.count)
            dir_path = r'F:\python_code\djangoapps\jiuyun'
            img_path = r'%s\media\enter\%s.png' % (dir_path, enter.num)
            print('-->img_path', img_path)
            content = loader.render_to_string('enter.html', locals(), request)
            tmp_file_path = os.path.join(BASE_DIR, 'tmp.html')
            with open(tmp_file_path, 'w', encoding='utf-8') as f:
                f.write(content)
            from xmlrpc.client import ServerProxy
            sp = ServerProxy('http://localhost:9800')
            sp.save_image(tmp_file_path, img_path)

            return redirect(f'/media/enter/{enter.num}.png')
        elif bill.type == '出库单':
            outbound = Outbound.objects.get(num=bill.num)
            price = int(outbound.goods.retail * 0.8 * outbound.count)
            dir_path = r'F:\python_code\djangoapps\jiuyun'
            img_path = r'%s\media\outbound\%s.png' % (dir_path, outbound.num)
            print('-->img_path', img_path)

            content = loader.render_to_string('outbound.html', locals(), request)
            tmp_file_path = os.path.join(BASE_DIR, 'tmp.html')
            with open(tmp_file_path, 'w', encoding='utf-8') as f:
                f.write(content)

            from xmlrpc.client import ServerProxy
            sp = ServerProxy('http://localhost:9800')
            sp.save_image(tmp_file_path, img_path)

            return redirect(f'/media/outbound/{outbound.num}.png')
        else:
            transport = Transport.objects.get(num=bill.num)
            price = int(transport.goods.retail * 0.8 * transport.count)

            dir_path = r'F:\python_code\djangoapps\jiuyun'
            img_path = r'%s\media\transport\%s.png' % (dir_path, transport.num)
            print('-->img_path', img_path)

            content = loader.render_to_string('transport.html', locals(), request)
            tmp_file_path = os.path.join(BASE_DIR, 'tmp.html')
            with open(tmp_file_path, 'w', encoding='utf-8') as f:
                f.write(content)

            from xmlrpc.client import ServerProxy
            sp = ServerProxy('http://localhost:9800')
            sp.save_image(tmp_file_path, img_path)

            return redirect(f'/media/transport/{transport.num}.png')

五、论文参考

  • 计算机毕业设计选题推荐-零食批发商仓库管理系统论文参考:
    计算机毕业设计选题推荐-零食批发商仓库管理系统论文参考

六、系统视频

零食批发商仓库管理系统项目视频:

计算机毕业设计选题推荐-零食批发商仓库管理系统-项目实战

结语

计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:⬇⬇⬇

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

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

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

相关文章

LocalDateTime的序列化和反序列化

背景 最近定位出一个LocalDateTime序列化相关的问题&#xff0c;简单记录一下。本文重点介绍Jackson对LocalDateTime的序列化和反序列化&#xff0c;并结合Spring应用场景进行介绍。 1.LocalDateTime与字符串转换 可以通过DateTimeFormatter实现LocalDateTime与字符串的相互…

Windows远程桌面无法拷贝文件问题

场景说明 Winwdows远程桌面&#xff0c;相比Linux方便一点就是&#xff0c;同是windows连接&#xff0c;其中复制粘贴功能&#xff0c;可以在两个windows无缝切换。 但最近笔者远程一台测试windows服务器时&#xff0c;发现无法在服务器上复制内容到本地&#xff0c;也无法从…

西门子s7第三方(S7netplus)读写操作

和西门子PLC通讯需要使用S7netplus​​这个包&#xff0c;可以在NuGet​​上搜索下载&#xff0c;下载后引入命令空间using S7.Net;​​ 创建PLC对象进行连接使用Write Read进行读写操作即可不需要在发请求帧 //创建Plc对象Plc plc; //西门子设备是s7-1200//参数1 CPu类型//参…

微信小程序+JAVA实现微信支付

时隔两年再次回归 本文主要讲的是小程序实现微信支付功能&#xff0c;后台采用JAVA。 一.准备工作 1.小程序 2.微信商户号 1.商户号申请 这里对小程序的申请不做赘述。 如果没有微信商户号的同学&#xff0c;点击该链接https://pay.weixin.qq.com/&#xff0c;按照下属步骤…

低代码与人工智能的融合:加速应用开发的未来趋势

什么是低代码&#xff0c;它是如何工作的&#xff1f; 低代码是一种软件开发概念&#xff0c;它通过最小化手工编码的方式&#xff0c;为开发和部署定制化应用提速。低代码平台具备模型驱动、沙盒多环境、可编程的可视化开发方式等&#xff0c;能用于开发包含有用户界面、业务逻…

二叉树——链式结构的实现

首先是分为三个文件进行实现&#xff1a;tree.h、tree.c、test.c tree.h 用链表来表示⼀棵⼆叉树&#xff0c;即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成&#xff0c;数据域和左右指针域&#xff0c;左右指针分别用来给出该结点左孩⼦和右孩⼦所在…

基于Springboot + vue + mysql 校友社交管理系统 设计实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 1.1 研究背景 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; E-R表 4.2.2数据库逻辑结构设计 &#x1f4da; 系统功能的具体实现 系统功能模块 系统首页 校友会信息 校友活动 …

仿RabbitMQ实现消息队列———整体框架

目录 一、项目简介 需求分析 AMQP 特点&#xff1a; AMQP 模型&#xff1a; 交换机类型 持久化 网络通信 二、服务端模块 1、交换机数据管理 2、队列数据管理 3、绑定数据管理 4、消息数据管理 5、虚拟机数据管理 6、路由匹配管理 7、消费者管理 8、信道管理 …

智源发布三款BGE新模型,再次刷新向量检索最佳水平

近期&#xff0c;以大语言模型&#xff08;LLM&#xff09;为基础的向量模型&#xff08;embedding model&#xff09;变得愈发流行。得益于大语言模型强大的语义理解能力&#xff0c;相关模型在下游任务中的检索精度得到了显著的提升。然而&#xff0c;当前基于大模型的向量模…

leetcode 1555 银行账号概要(postgresql)

需求 用户表&#xff1a; Users --------------------- | Column Name | Type | --------------------- | user_id | int | | user_name | varchar | | credit | int | --------------------- user_id 是这个表的主键。 表中的每一列包含每一个用户当前的额度信息。 交易表&…

Nginx反向代理实战

使用反向代理代理服务 假设我们有三台服务器提供不同的服务 nginx作为代理服务器 代理服务器&#xff1a; 192.168.101.23 其余三台服务器 服务器1 192.168.101.18 服务器2 192.168.101.87 服务器3 192.168.101.20 代理服务器的nginix配置 server {listen 8085;ser…

【机器学习基础】机器学习概述与实践基础

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

Docker中使用自定义网络方式实现Redis集群部署与测试流程

场景 Docker中Docker网络-理解Docker0与自定义网络的使用示例&#xff1a; Docker中Docker网络-理解Docker0与自定义网络的使用示例-CSDN博客 参考上面的流程实现自定义网络的实现。 下面记录其应用实例&#xff0c;使用Docker的自定义网络实现redis集群部署。 注&#xf…

IP地址https证书的优势与申请途径

一、IP地址SSL证书的优势 无需域名&#xff1a;对于一些内部系统或者专用设备而言&#xff0c;它们可能不具有域名&#xff0c;但仍需保障通信安全。IP地址SSL证书正好满足这一需求。简化管理&#xff1a;对于拥有大量设备的企业来说&#xff0c;维护每个设备的域名可能是一个…

tomato-靶机渗透

tomato-靶机 一、安装靶机环境 下载双击.ova文件&#xff0c;写文件名路径导入 打开虚拟机用NAT模式 编辑–>虚拟网络编辑器查看IP段 二、信息收集 1.御剑端口扫描查找该虚拟机的IP 访问网站 扫目录 dirb http://192.168.30.130 收集到目录 /server-status /antibot_im…

成为git砖家(9): git checkout <commit> <file> 的含义

文章目录 1. 目的2. 官方文档解释3. Tower 的解释4. References 1. 目的 git checkout 命令承载了非常多的功能&#xff0c; 想要一次全弄懂&#xff0c;不太现实&#xff1b; 这次白鱼带领大家学习 git checkout <file> 的用法。 老规矩&#xff0c;先查看 git checko…

鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇

一、概述 云数据库是一款基于对象模型的数据库&#xff0c;采用存储区、对象类型和对象三级结构。 数据模型 存储区 存储区是一个独立的数据存储区域&#xff0c;多个数据存储区之间相互独立&#xff0c;每个存储区拥有完全相同的对象类型定义 --类似于关系型数据库中的da…

如何有效管理众多账号密码:选择适合你的密码管理工具

在如今的数字化时代&#xff0c;我们的生活几乎离不开各种互联网应用和服务。从社交媒体到在线银行&#xff0c;从购物网站到工作平台&#xff0c;每个应用都要求我们注册账号并设置密码。 随着账号数量的不断增加&#xff0c;管理这些密码成为了一个令人头疼的问题。幸运的是…

AMEYA360:上海雷卯电子CAN BUS芯片静电浪涌击穿整改方案

在现代电子系统中&#xff0c;CAN Bus(Controller Area Network Bus&#xff0c;控制器局域网络总线)作为一种常用的通信协议&#xff0c;标准CAN通常指的是CAN 2.0A和CAN 2.0B协议&#xff0c;其最大通讯速率为1Mbps。而高速CAN通常指的是CAN FD(CAN Flexible Data-rate)协议&…