医疗报销|基于springBoot的医疗报销系统设计与实现(附项目源码+论文+数据库)

news2024/9/28 1:23:00

 私信或留言即免费送开题报告和任务书(可指定任意题目)

目录

一、摘要

二、相关技术

三、系统设计

四、数据库设计     

五、核心代码       

六、论文参考 

七、源码获取 


 

一、摘要

传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,报销单信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的医疗报销系统。

本医疗报销系统分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理公告信息以及公告的租赁信息,能够与用户进行相互交流等操作,用户可以查看报销单信息,可以查看公告以及查看管理员回复信息等操作。

该医疗报销系统采用的是WEB应用程序开发中最受欢迎的B/S三层结构模式,使用占用空间小但功能齐全的MySQL数据库进行数据的存储操作,系统开发技术使用到了JSP技术。该医疗报销系统能够解决许多传统手工操作的难题,比如数据查询耽误时间长,数据管理步骤繁琐等问题。总的来说,医疗报销系统性能稳定,功能较全,投入运行使用性价比很高。

关键词:医疗报销系统;MySQL数据库;SSM技术

 

二、相关技术

java、tomcat、mysql、spring、springBoot、mybatis、query、vue

 

 

三、系统设计

3.1 整体功能设计图

医疗报销系统系统在进行系统中功能模块的划分时,采用层次图来进行表示。层次图具有树形结构,它能使用矩形框来描绘数据信息。顶层代表的数据结构很完整,顶层下面的矩形框表示的数据就是子集数据,当然处于最下面的矩形框就是不能再进行细分的数据元素了,使用层次方框图描述系统功能能让用户一目了然,能够明白系统的功能,以及对应功能板块下面的子功能都可以清楚领会。医疗报销系统分为管理员和用户两部分操作角色,下面将对他们的功能进行阐述。

管理员可以管理用户的基本信息,可以管理等功能。管理员功能结构图如下:

820b6b5310b34965a2f79bb622cff5f8.png

3.2 功能具体细节设计    

1、管理员功能模块的实现 

报销单列表

如图5.1显示的就是报销单列表页面,此页面提供给管理员的功能有:查看报销单、新增报销单、修改报销单、删除报销单等。

534417b59e484ec0aea8469549755f1c.png

公告信息管理

管理员可以对前台的注册用户的基本信息进行管理,可以设置注册用户的账号为冻结或者是在用状态,管理员也能选择很多个已经失效的注册用户的信息进行批量删除操作。注册用户管理界面如图5.2所示。

0b34b5957e9842cca94bccb322fb516a.png

公告类型管理

公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。下图就是公告类型管理页面。公告类型管理界面如图5.3所示。

7b5ca8e5c7bf408c9b500e46136317ba.png

四、数据库设计     

数据库里面的数据表存放的就是各种数据记录,我们在进行系统增删改查操作时,其实也是在对应数据表里面进行的增删改查操作,一个好的数据库能够缩短信息处理时间,所以说数据库的设计工作不容小觑,数据库里面设置哪些表,表里面的字段设计以及字段类型和字段长度等信息都要考虑周到才行,比如时间这个字段,它的数据类型就不能是int型,不然在系统操作中就会弹出输入数据格式不符合要求的报错提示。下面简单介绍医疗报销系统的一些数据表。

b538501ed01e4e6f8d1df94aa87de499.png

五、核心代码       


package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 领导
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/lingdao")
public class LingdaoController {
    private static final Logger logger = LoggerFactory.getLogger(LingdaoController.class);

    @Autowired
    private LingdaoService lingdaoService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service

    @Autowired
    private CaikuaiService caikuaiService;
    @Autowired
    private YonghuService yonghuService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("财会审核人员".equals(role))
            params.put("caikuaiId",request.getSession().getAttribute("userId"));
        else if("领导".equals(role))
            params.put("lingdaoId",request.getSession().getAttribute("userId"));
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = lingdaoService.queryPage(params);

        //字典表数据转换
        List<LingdaoView> list =(List<LingdaoView>)page.getList();
        for(LingdaoView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        LingdaoEntity lingdao = lingdaoService.selectById(id);
        if(lingdao !=null){
            //entity转view
            LingdaoView view = new LingdaoView();
            BeanUtils.copyProperties( lingdao , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody LingdaoEntity lingdao, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,lingdao:{}",this.getClass().getName(),lingdao.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");

        Wrapper<LingdaoEntity> queryWrapper = new EntityWrapper<LingdaoEntity>()
            .eq("username", lingdao.getUsername())
            .or()
            .eq("lingdao_phone", lingdao.getLingdaoPhone())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LingdaoEntity lingdaoEntity = lingdaoService.selectOne(queryWrapper);
        if(lingdaoEntity==null){
            lingdao.setCreateTime(new Date());
            lingdao.setPassword("123456");
            lingdaoService.insert(lingdao);
            return R.ok();
        }else {
            return R.error(511,"账户或者领导手机号已经被使用");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody LingdaoEntity lingdao, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,lingdao:{}",this.getClass().getName(),lingdao.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
        //根据字段查询是否有相同数据
        Wrapper<LingdaoEntity> queryWrapper = new EntityWrapper<LingdaoEntity>()
            .notIn("id",lingdao.getId())
            .andNew()
            .eq("username", lingdao.getUsername())
            .or()
            .eq("lingdao_phone", lingdao.getLingdaoPhone())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LingdaoEntity lingdaoEntity = lingdaoService.selectOne(queryWrapper);
        if("".equals(lingdao.getLingdaoPhoto()) || "null".equals(lingdao.getLingdaoPhoto())){
                lingdao.setLingdaoPhoto(null);
        }
        if(lingdaoEntity==null){
            lingdaoService.updateById(lingdao);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"账户或者领导手机号已经被使用");
        }
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        lingdaoService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<LingdaoEntity> lingdaoList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            LingdaoEntity lingdaoEntity = new LingdaoEntity();
//                            lingdaoEntity.setUsername(data.get(0));                    //账户 要改的
//                            //lingdaoEntity.setPassword("123456");//密码
//                            lingdaoEntity.setLingdaoName(data.get(0));                    //领导姓名 要改的
//                            lingdaoEntity.setLingdaoPhone(data.get(0));                    //领导手机号 要改的
//                            lingdaoEntity.setLingdaoPhoto("");//详情和图片
//                            lingdaoEntity.setSexTypes(Integer.valueOf(data.get(0)));   //性别 要改的
//                            lingdaoEntity.setLingdaoEmail(data.get(0));                    //电子邮箱 要改的
//                            lingdaoEntity.setCreateTime(date);//时间
                            lingdaoList.add(lingdaoEntity);


                            //把要查询是否重复的字段放入map中
                                //账户
                                if(seachFields.containsKey("username")){
                                    List<String> username = seachFields.get("username");
                                    username.add(data.get(0));//要改的
                                }else{
                                    List<String> username = new ArrayList<>();
                                    username.add(data.get(0));//要改的
                                    seachFields.put("username",username);
                                }
                                //领导手机号
                                if(seachFields.containsKey("lingdaoPhone")){
                                    List<String> lingdaoPhone = seachFields.get("lingdaoPhone");
                                    lingdaoPhone.add(data.get(0));//要改的
                                }else{
                                    List<String> lingdaoPhone = new ArrayList<>();
                                    lingdaoPhone.add(data.get(0));//要改的
                                    seachFields.put("lingdaoPhone",lingdaoPhone);
                                }
                        }

                        //查询是否重复
                         //账户
                        List<LingdaoEntity> lingdaoEntities_username = lingdaoService.selectList(new EntityWrapper<LingdaoEntity>().in("username", seachFields.get("username")));
                        if(lingdaoEntities_username.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(LingdaoEntity s:lingdaoEntities_username){
                                repeatFields.add(s.getUsername());
                            }
                            return R.error(511,"数据库的该表中的 [账户] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                         //领导手机号
                        List<LingdaoEntity> lingdaoEntities_lingdaoPhone = lingdaoService.selectList(new EntityWrapper<LingdaoEntity>().in("lingdao_phone", seachFields.get("lingdaoPhone")));
                        if(lingdaoEntities_lingdaoPhone.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(LingdaoEntity s:lingdaoEntities_lingdaoPhone){
                                repeatFields.add(s.getLingdaoPhone());
                            }
                            return R.error(511,"数据库的该表中的 [领导手机号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        lingdaoService.insertBatch(lingdaoList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }


    /**
    * 登录
    */
    @IgnoreAuth
    @RequestMapping(value = "/login")
    public R login(String username, String password, String captcha, HttpServletRequest request) {
        LingdaoEntity lingdao = lingdaoService.selectOne(new EntityWrapper<LingdaoEntity>().eq("username", username));
        if(lingdao==null || !lingdao.getPassword().equals(password))
            return R.error("账号或密码不正确");
        //  // 获取监听器中的字典表
        // ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
        // Map<String, Map<Integer, String>> dictionaryMap= (Map<String, Map<Integer, String>>) servletContext.getAttribute("dictionaryMap");
        // Map<Integer, String> role_types = dictionaryMap.get("role_types");
        // role_types.get(.getRoleTypes());
        String token = tokenService.generateToken(lingdao.getId(),username, "lingdao", "领导");
        R r = R.ok();
        r.put("token", token);
        r.put("role","领导");
        r.put("username",lingdao.getLingdaoName());
        r.put("tableName","lingdao");
        r.put("userId",lingdao.getId());
        return r;
    }

    /**
    * 注册
    */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody LingdaoEntity lingdao){
//    	ValidatorUtils.validateEntity(user);
        Wrapper<LingdaoEntity> queryWrapper = new EntityWrapper<LingdaoEntity>()
            .eq("username", lingdao.getUsername())
            .or()
            .eq("lingdao_phone", lingdao.getLingdaoPhone())
            ;
        LingdaoEntity lingdaoEntity = lingdaoService.selectOne(queryWrapper);
        if(lingdaoEntity != null)
            return R.error("账户或者领导手机号已经被使用");
        lingdao.setCreateTime(new Date());
        lingdaoService.insert(lingdao);
        return R.ok();
    }

    /**
     * 重置密码
     */
    @GetMapping(value = "/resetPassword")
    public R resetPassword(Integer  id){
        LingdaoEntity lingdao = new LingdaoEntity();
        lingdao.setPassword("123456");
        lingdao.setId(id);
        lingdaoService.updateById(lingdao);
        return R.ok();
    }


    /**
     * 忘记密码
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request) {
        LingdaoEntity lingdao = lingdaoService.selectOne(new EntityWrapper<LingdaoEntity>().eq("username", username));
        if(lingdao!=null){
            lingdao.setPassword("123456");
            boolean b = lingdaoService.updateById(lingdao);
            if(!b){
               return R.error();
            }
        }else{
           return R.error("账号不存在");
        }
        return R.ok();
    }


    /**
    * 获取用户的session用户信息
    */
    @RequestMapping("/session")
    public R getCurrLingdao(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        LingdaoEntity lingdao = lingdaoService.selectById(id);
        if(lingdao !=null){
            //entity转view
            LingdaoView view = new LingdaoView();
            BeanUtils.copyProperties( lingdao , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }
    }


    /**
    * 退出
    */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }





}

六、论文参考 

84da5d5f98094d2ea09e6ef4a61fdce2.png

七、源码获取 

点赞、收藏、关注、评论啦。

联系即送开题报告和任务书,欢迎咨询

👇🏻获取联系方式在文章末尾👇🏻

 

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

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

相关文章

知识竞赛活动舞台搭建要多少钱

每次举办活动&#xff0c;舞台搭建总是让人头疼的一部分&#xff0c;尤其是费用问题。今天就来揭开活动舞台搭建费用的神秘面纱。 活动舞台搭建的费用主要包括舞台结构、设备、音响、灯光、舞美装饰等各方面的成本。具体来说&#xff1a; 1.舞台结构&#xff1a;包括舞台平台…

vscode 中 python 代码跳转不生效 ctrl加单击不跳转

目录 网友的解决方法&#xff1a; 我的解决方法 vscode 中 python 代码跳转不生效 ctrl加单击不跳转 网友的解决方法&#xff1a; vscode 中 python 代码跳转不生效_vscode python 代码无法跳转-CSDN博客 解决方法 后来发现vs code初次远程连接服务器时&#xff0c;需要…

带你0到1之QT编程:十一、掌握Containers容器艺术,一网打尽开发利器

此为QT编程的第十一谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; …

C++类与对象(二)

目录 1.类的6个默认成员函数 2..构造函数 2.1概念 2.2 特征 3.析构函数 3.1 概念 3.2 特性 4.拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载函数 5.1 运算符重载&#xff08;是否重载这个运算符是看这个运算符对这个类是否有意义&#xff09; 5.2 赋值运算符重…

Vue3 + Echarts 实现中国地图

基本概念 echarts是一个基于JavaScript的开源可视化库&#xff0c;用于创建和展示各种交互式图表和图形。它可以用于数据分析、数据可视化、数据探索和数据报告等方面。我们一般使用echarts来实现数据可视化&#xff0c;本文我们使用vue3 echars来实现中国地图。 准备echarts…

Node.js 多版本安装与切换指南

一.使用nvm的方法 1. 卸载nodejs 如果你的电脑有安装nodejs&#xff0c;需要先卸载掉&#xff1b;若没有请直接下一步。 2. 前往官网下载nvm nvm&#xff1a;一个nodejs版本管理工具&#xff01; 官网地址&#xff1a;nvm文档手册 - nvm是一个nodejs版本管理工具 - nvm中文…

智能数据体系,新突破?

智能数据体系&#xff0c;新突破&#xff1f; 前言智能数据体系 前言 我们正处于一个数智融合的新时代&#xff0c;数据的价值和作用日益凸显。如何更好地理解和利用数据&#xff0c;构建先进的智能数据体系&#xff0c;成为了摆在我们面前的重要课题。 在这个背景下&#xf…

归并排序(Merge Sort)

什么是归并排序 归并排序&#xff08;Merge Sort&#xff09;是一种经典的排序算法&#xff0c;它采用分治法&#xff08;Divide and Conquer&#xff09;策略&#xff0c;将一个大数组分为两个小数组&#xff0c;分别进行排序&#xff0c;然后将这两个已排序的小数组合并成一个…

Cortex-M3架构学习:异常

异常类型 Cortex-M3 在内核水平上搭载了一个异常响应系统&#xff0c;支持为数众多的系统异常和外部中断。其 中&#xff0c;编号为 1&#xff0d;15 的对应系统异常&#xff0c;大于等于 16 的则全是外部中断。 Cortex-M3支持的中断源数目为 240 个&#xff0c;做成芯片后&…

docker进入容器运行命令详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 在 Docker 中&#xff0c;进入容器并运行命令是常见的操作&#xff0c;尤其是当你想要调试、检查日志或手动运行某些程序时。Docker 提供了几种方式来进入容器和执行命令。 前提条件 确保你的 Docker 容器…

C++基础面试题 | 什么是C++中的虚继承?

文章目录 回答重点菱形继承问题虚继承解决菱形继承问题虚继承的二义性解决 虚继承总结拓展知识&#xff1a;virtual关键字的用法1. 虚函数 (Virtual Function)2. 纯虚函数 (Pure Virtual Function)3. 虚析构函数 (Virtual Destructor)4. 虚继承 (Virtual Inheritance)5. 虚函数…

一篇文章带你入门机器学习 Part1 -->Machine Learning from Scratch

学习网站&#xff1a;Machine Learning from Scratch Machine Learning from Scratch (Part1神经网络&#xff09; 神经网络——Neural Networks神经网络是如何工作的&#xff1f;训练神经网络 神经网络——Neural Networks 在人工神经网络的背景下&#xff1a;一个神经元是一…

046全排列

题意 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 提示&#xff1a; 1 < nums.length < 6 -10 < nums[i] < 10 nums 中的所有整数 互不相同 难度 中等 示例 示例 1&#xff1a; 输入&#xff1…

uniapp+若依 开发租房小程序源码分享

1、使用Uniapp开发的前台&#xff0c;基于 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、Web&#xff08;响应式&#xff09;、以及各种小程序 2、基于SpringBoot的权限管理系统&#xff0c;易读易懂、界面简洁美观。 核心…

WordBN字远笔记!更新1.2.2版本|Markdown编辑器新增高亮功能,界面新增深色模式

WordBN字远笔记1.2.2版本更新描述 WordBN字远笔记在1.2.2版本中进行了多项重要的更新与改进&#xff0c;旨在提升用户的编辑体验和视觉舒适度。 以下是本次更新的两大亮点&#xff1a;Markdown编辑器新增高亮功能以及界面新增深色模式。 1. Markdown编辑器新增高亮功能 在1…

零倾覆力矩点(ZMP)

系列文章目录 前言 在机器人学中&#xff0c;零倾力矩点&#xff08;ZMP&#xff09;是一个特征点&#xff0c;主要用于足式运动。在下文的一些假设中&#xff0c;我们将看到&#xff0c;它非正式地代表了一个系统接触反作用力的结果点。例如&#xff0c;下图中的刚体处于静态平…

leetcode:布尔运算(动态规划版)

最近又要考试&#xff0c;勉励自己复习一些之前学过的&#xff01;&#xff01;&#xff01; 开始使用的是DFS&#xff0c;遍历所有可能的情况&#xff0c;发现超时&#xff01; 下面的是动态规划的一个模板&#xff0c;dp[i][j][result]表示从s的第i个元素到第个元素&#xf…

Auracast认证:蓝牙广播音频的革新之旅

低功耗音频&#xff08;LE Audio&#xff09;技术的突破&#xff0c;为蓝牙世界带来了前所未有的广播音频功能。Auracast™&#xff0c;作为蓝牙技术联盟精心打造的音频广播解决方案&#xff0c;正引领着一场全新的音频分享革命。它不仅革新了传统蓝牙技术的局限&#xff0c;更…

HuggingFace Embedding 转为 Ollama Embedding

Ollama 是基于 LlamaCpp 开发的 CPU 上的推理引擎&#xff0c;通过 LlamaCpp 提供的脚本可以将大语言模型装换为 gguf 的二进制跟是文件&#xff0c;从而通过 Ollama 就行推理。Ollama 支持HuggingFace 大多开源模型&#xff0c;例如 Llama、Qwen、Gemma 和 Phi3 等等。 GGUF …

【Leetcode:2848. 与车相交的点 + 模拟计数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…