财务管理系统|基于Springboot开发实现公司财务管理系统

news2024/11/7 15:24:36

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-XX-169

2022年疫情期间带队开发的一套企业财务管理系统,成功交付,下面展示一下系统的相关功能说明与实现。

一,项目简介

当今社会,随着软硬件技术的急速发展,计算机在我们生活中的方方面面都发挥着越来越重要的作用。企业的管理模式也随着科技进步逐渐智能化,人性化。随着企业规模越来越庞大,部门越来越多,公司财务的管理越来越复杂,以前古老的人工财务管理已经远远无法满足现代企业的财务管理的需求,财务审核各种报销审批,工资结算时效率低下,还特别容易出错,同时很多账目都难以查询,而且纸质账目容易丢失损坏,对于账目的保存也特别麻烦。而作为财务管理工作的核心就是最简单的资金流通,如果想要在资金的流通与使用过程中更好的应用并且合理的调配是离不开一个好的财务管理系统的。

本次设计的公司财务系统不仅可以管理资金,它还能进行企业财务帐目、企业资金帐户、企业收支状况等方面的管理。各部门领导也可通过此系统提交部门年度预算,审核员工的报销,更好的把公司各个部门的资金流动贯穿起来,使资金流动更加透明,更加容易查询。通过各部门的严格审批,也同时防止了资金的去向不明等情况的发生,使公司能更快更平稳的发展。

本系统是基于SpringBoot的公司财务系统,初步分为四个部分。管理员,财务,部门领导以及普通员工。系统有着完备的用户角色权限管理功能,可以自主分配用户角色和功能,具体功能权限可以具体到菜单级别的CRUD操作。

财务:

报销管理:财务可修改报销种类供员工报销,当部门领导审核普通员工报销后,财务进行二审,财务可根据实际情况通过或驳回报销请求。报销审核通过后,可通过报销号添加报销凭证。

员工工资管理:财务可以通过员工工资管理界面查看员工工资明细,确认情况属实后可发放员工工资。

收支管理:财务可以添加每天的收入和支出详情。

预算管理:财务可以通过审批界面查看各部门领导的部门年度预算,财务可根据实际情况通过或驳回预算请求。 

各部门领导:

提交部门年度预算:部门领导通过对该部门一年规划的研究,制定了年度预算的方案,提交年度的部门预算,财务审核通过后方能提交成功。

审核员工报销:员工提交的各种报销需要其部门领导审核,部门领导可根据实际情况通过或驳回该员工的报销,审核成功后交给财务二审,财务通过后即可给员工报销。

普通员工:

查看系统公告:员工登录后可查看系统公告。

提交报销:员工关于公司的各种花销都可提交报销单,等待部门领导和财务进行审核,审核成功后方可报销。

管理员:

(1)用户管理:管理所有用户,可为所有用户分配角色,设置权限,当用户离职时也可以删除用户,忘记密码时管理员也可以重置密码。

(2)权限管理:管理员可管理所有用户的权限。

(3)部门管理:管理员可以增加,修改,删除部门信息。

(4)登录日志:查看所有用户的登录日志,方便查看。

(5)系统公告:管理员可以添加和编辑系统公告,供用户查看。

 

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前端开发技术:Layui+Jquery+Html

三,系统展示

后台管理主菜单

 

工资管理:财务可以通过员工工资管理界面查看员工工资明细,情况属实后可发放员工工资

 报销种类管理:添加各类报销种类信息供员工选择

 报销审核:当部门领导一审通过后,由财务最终审核报销申请

 添加凭证:当审核通过时,财务可为该报销添加凭证

预算审核:当部门领导提交部门年度预算时,由财务审核

 

 收支管理:财务添加公司收入和支出的详细信息

统计报表:由财务的收入和支出详情生成收支统计对比表

 

 部门管理:管理员可管理公司部门信息,删除部门时必须无子部门或没有用户在该部门

 

 

权限管理:管理员可以管理用户所有功能权限

角色管理:管理员可为用户添加新角色,可为每个角色分配权限

 

 用户管理:管理所有用户,可为所有用户分配角色,设置权限,当用户离职时也可以删除用户,忘记密码时管理员也可以重置密码

四,核心代码展示

package com.test.base.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 跳转
 *
 */
@Controller
@RequestMapping("/bus")
public class BusinessController {

	/**
	 * 跳转到 工资条
	 */
	@RequestMapping("toCustomerManager")
	public String toCustomerManager() {
		return "business/customer/customerManager";
	}
	/**
	 * 跳转到 报销种类
	 */
	@RequestMapping("toProviderManager")
	public String toProviderManager() {
		return "business/provider/providerManager";
	}
	/**
	 * 跳转到申请报销
	 */
	@RequestMapping("toGoodsManager")
	public String toGoodsManager() {
		return "business/goods/goodsManager";
	}

	/**
	 * 跳转到申请审核
	 */
	@RequestMapping("toVerify")
	public String toVerify() {
		return "business/verify/verify";
	}

	/**
	 * 跳转到凭证
	 * @return
	 */
	@RequestMapping("toPinzheng")
	public String toPinzheng() {
		return "business/pinzheng/pinzheng";
	}

	@RequestMapping("toAccount")
	public String toAccount() {
		return "business/account/account";
	}

	/**
	 * 跳转到报销申请
	 */
	@RequestMapping("toBudgetManager")
	public String toBudgetManager() {
		return "business/budget/budgetManager";
	}

	/**
	 * 跳转到审核报销
	 */
	@RequestMapping("toBudgetVerify")
	public String toBudgetVerify() {
		return "business/verify/budgetVerify";
	}

	/**
	 * 跳转到收入详情
	 */
	@RequestMapping("toInCome")
	public String toInCome() {
		return "business/crmt/income";
	}

	/**
	 * 跳转到支出详情
	 */
	@RequestMapping("toPay")
	public String toPay() {
		return "business/crmt/pay";
	}

	/**
	 * 跳转到统计详情
	 */
	@RequestMapping("toEcharts")
	public String toEcharts() {
		return "business/echarts/shan";
	}
}

package com.test.base.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.test.base.domain.Customer;
import com.test.base.service.CustomerService;
import com.test.base.vo.CustomerVo;
import com.test.sys.common.DataGridView;
import com.test.sys.common.ResultObj;

/**
 * 员工 工资条 管理
 */
@RestController
@RequestMapping("/customer")
public class CustomerController {

	@Autowired
	private CustomerService customerService;

	/**
	 * 查询  工资条
	 */
	@RequiresPermissions(value = {"customer:view"})
	@RequestMapping("loadAllCustomer")
	public DataGridView loadAllCustomer(CustomerVo customerVo) {
		IPage<Customer> page = new Page<>(customerVo.getPage(), customerVo.getLimit());
		QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
		queryWrapper.like(StringUtils.isNotBlank(customerVo.getCustomername()), "customername",
				customerVo.getCustomername());
		queryWrapper.like(StringUtils.isNotBlank(customerVo.getPhone()), "phone", customerVo.getPhone());
		queryWrapper.like(StringUtils.isNotBlank(customerVo.getConnectionperson()), "connectionperson",
				customerVo.getConnectionperson());
		this.customerService.page(page, queryWrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}

	/**
	 * 添加
	 */
	@RequiresPermissions(value = {"customer:create"})
	@RequestMapping("addCustomer")
	public ResultObj addCustomer(CustomerVo customerVo) {
		try {
			this.customerService.save(customerVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}

	/**
	 * 修改
	 */
	@RequiresPermissions(value = {"customer:update"})
	@RequestMapping("updateCustomer")
	public ResultObj updateCustomer(CustomerVo customerVo) {
		try {
			this.customerService.updateById(customerVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}

	/**
	 * 删除
	 */
	@RequiresPermissions(value = {"customer:delete"})
	@RequestMapping("deleteCustomer")
	public ResultObj deleteCustomer(Integer id) {
		try {
			this.customerService.removeById(id);
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}

	/**
	 * 批量删除
	 */
	@RequiresPermissions(value = {"customer:batchdelete"})
	@RequestMapping("batchDeleteCustomer")
	public ResultObj batchDeleteCustomer(CustomerVo customerVo) {
		try {
			Collection<Serializable> idList = new ArrayList<Serializable>();
			for (Integer id : customerVo.getIds()) {
				idList.add(id);
			}
			this.customerService.removeByIds(idList);
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}
}
package com.test.base.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.test.base.domain.InCome;
import com.test.base.service.IncomeService;
import com.test.base.vo.*;
import com.test.sys.common.DataGridView;
import com.test.sys.common.ResultObj;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.io.Serializable;
import java.util.*;

/**
 * 收入详情
 */
@RestController
@RequestMapping("/income")
public class IncomeController {

    @Autowired
    private IncomeService incomeService;

    /**
     * 查询
     */
    @RequestMapping("loadAllIncome")
    public DataGridView loadAllIncome(IncomeVo incomeVo) {
        IPage<InCome> page = new Page<>(incomeVo.getPage(), incomeVo.getLimit());
        QueryWrapper<InCome> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(incomeVo.getTitle()), "title", incomeVo.getTitle());
        queryWrapper.like(StringUtils.isNotBlank(incomeVo.getPayway()), "payway", incomeVo.getPayway());
        this.incomeService.page(page, queryWrapper);
        List<InCome> records = page.getRecords();
        return new DataGridView(page.getTotal(), records);
    }

    /**
     * 添加
     */
    @RequestMapping("addIncome")
    public ResultObj addIncome(IncomeVo incomeVo) {
        try {
            incomeVo.setTime(new Date());
            this.incomeService.save(incomeVo);
            return ResultObj.ADD_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.ADD_ERROR;
        }
    }

    /**
     * 修改
     */
    @RequestMapping("updateIncome")
    public ResultObj updateIncome(IncomeVo incomeVo) {
        try {
            incomeVo.setTime(new Date());//更新时间字段否则该字段为空,会报错
            this.incomeService.updateById(incomeVo);
            return ResultObj.UPDATE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.UPDATE_ERROR;
        }
    }

    /**
     * 删除
     */
    @RequestMapping("deleteIncome")
    public ResultObj deleteIncome(Integer id) {
        try {
            this.incomeService.removeById(id);
            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }

    /**
     * 批量删除
     * @return
     */
    @RequestMapping("batchDeleteIncome")
    public ResultObj batchDeleteCustomer(IncomeVo incomeVo) {
        try {
            Collection<Serializable> idList = new ArrayList<Serializable>();
            for (Integer id : incomeVo.getIds()) {
                idList.add(id);
            }
            this.incomeService.removeByIds(idList);
            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }

    /**
     * 收入统计
     * @return
     */
    @RequestMapping("/sumIncome")
    @ResponseBody
    public Double[] sumIncome(){
        List<String> list = Arrays.asList("2022-01","2022-02","2022-03","2022-04","2022-05","2022-06","2022-07","2022-08","2022-09","2022-10","2022-11","2022-12");
        Double[] inter = new Double[12];
        for (int i = 0;i < list.size(); i++){
            QueryWrapper<InCome> queryWrapper = new QueryWrapper<>();
            queryWrapper.select("IFNULL( sum(money),0) as sumIncome");
            queryWrapper.like(StringUtils.isNotBlank(list.get(i)), "time", list.get(i));
            InCome income = incomeService.getOne(queryWrapper);
            Double sum = income.getSumIncome();
            if(sum==null){
                inter[i] = 0.0;
            }else{
                inter[i] = sum;
            }
        }
        return inter;
    }
}
package com.test.sys.controller;


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.test.base.domain.Provider;
import com.test.sys.common.Constast;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.test.sys.common.DataGridView;
import com.test.sys.common.ResultObj;
import com.test.sys.common.TreeNode;
import com.test.sys.domain.Dept;
import com.test.sys.service.DeptService;
import com.test.sys.vo.DeptVo;

@RestController
@RequestMapping("/dept")
public class DeptController {

	@Autowired
	private DeptService deptService;
	/**
	 * 加载部门管理左边的部门树的json
	 */
	@RequestMapping("loadDeptManagerLeftTreeJson")
	public DataGridView loadDeptManagerLeftTreeJson(DeptVo deptVo) {
		List<Dept> list = this.deptService.list();
		List<TreeNode> treeNodes=new ArrayList<>();
		for (Dept dept : list) {
			Boolean spread=dept.getOpen()==1?true:false;
			treeNodes.add(new TreeNode(dept.getId(), dept.getPid(), dept.getTitle(), spread));
		}
		return new DataGridView(treeNodes);
	}

	/**
	 * 查询
	 */
	@RequiresPermissions(value = {"dept:view"})
	@RequestMapping("loadAllDept")
	public DataGridView loadAllDept(DeptVo deptVo) {
		IPage<Dept> page=new Page<>(deptVo.getPage(), deptVo.getLimit());
		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.like(StringUtils.isNotBlank(deptVo.getTitle()), "title", deptVo.getTitle());
		queryWrapper.like(StringUtils.isNotBlank(deptVo.getAddress()), "address", deptVo.getAddress());
		queryWrapper.like(StringUtils.isNotBlank(deptVo.getRemark()), "remark", deptVo.getRemark());
		queryWrapper.eq(deptVo.getId()!=null, "id", deptVo.getId()).or().eq(deptVo.getId()!=null,"pid", deptVo.getId());
		queryWrapper.orderByAsc("ordernum");
		this.deptService.page(page, queryWrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}

	/**
	 * 加载最大的排序码
	 */
	@RequestMapping("loadDeptMaxOrderNum")
	public Map<String,Object> loadDeptMaxOrderNum(){
		Map<String, Object> map=new HashMap<String, Object>();

		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.orderByDesc("ordernum");
		IPage<Dept> page=new Page<>(1, 1);
		List<Dept> list = this.deptService.page(page, queryWrapper).getRecords();
		if(list.size()>0) {
			map.put("value", list.get(0).getOrdernum()+1);
		}else {
			map.put("value", 1);
		}
		return map;
	}
	/**
	 * 添加
	 * @param deptVo
	 * @return
	 */
	@RequiresPermissions(value = {"dept:create"})
	@RequestMapping("addDept")
	public ResultObj addDept(DeptVo deptVo) {
		try {
			deptVo.setCreatetime(new Date());
			this.deptService.save(deptVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}


	/**
	 * 修改
	 * @param deptVo
	 * @return
	 */
	@RequiresPermissions(value = {"dept:update"})
	@RequestMapping("updateDept")
	public ResultObj updateDept(DeptVo deptVo) {
		try {
			this.deptService.updateById(deptVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}


	/**
	 * 查询当前的ID的部门有没有子部门
	 */
	@RequestMapping("checkDeptHasChildrenNode")
	public Map<String,Object> checkDeptHasChildrenNode(DeptVo deptVo){
		Map<String, Object> map=new HashMap<String, Object>();

		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq("pid", deptVo.getId());
		List<Dept> list = this.deptService.list(queryWrapper);
		if(list.size()>0) {
			map.put("value", true);
		}else {
			map.put("value", false);
		}
		return map;
	}

	/**
	 * 删除
	 * @param deptVo
	 * @return
	 */
	@RequiresPermissions(value = {"dept:delete"})
	@RequestMapping("deleteDept")
	public ResultObj deleteDept(DeptVo deptVo) {
		try {
			this.deptService.removeById(deptVo.getId());
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}

	/**
	 * 加载所有可用的部门
	 */
	@RequestMapping("loadAllDeptForSelect")
	public DataGridView loadAllDeptForSelect() {
		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
		List<Dept> list = this.deptService.list(queryWrapper);
		return new DataGridView(list);
	}
}

五,项目总结

财务管理系统正是财务信息化的系统,它不仅对企业的财务计划,财务控制方面有一定作用,在企业的财务运用、财务监督方面也起了很大作用,每个单位里都少不了一个这样的信息化管理系统。一个企业发展的成功与否,同企业内部财务管理的好坏有关。现今,在企业的现实运作中,资金运转贯穿在企业的整个生产经营过程,所以在企业的各项工作中财务管理同样贯穿其中。通过加强企业内部核算,节支降耗才可能实现。财务管理系统是企业信息管理的有效延伸,能更好的把个性化、规范化服务有机的融入到财务管理中去,能推动企业发展。财务管理系统大大方便了企业对财务整理和评估,提高了公司的效率。鉴于体系结构的各种优势,所以此次对企业财务管理系统的开发是十分合适并且有帮助的。同时,该系统的设计思想以经济学的观点作为需求指导,将经济知识和软件开发技术进行有机的结合,它使用方便,方便管理,在数据整合和账目管理方面尤为出色,减轻了财务系统人员的工作负担,也可以在一定程度上帮助公司节省人手,加快工作效率,减少开支。

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

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

相关文章

知识库软件应该具备的7个基本功能

SaaS公司最大的业务挑战是&#xff1a;如何留住客户&#xff0c;客户与你达成合作关系后&#xff0c;如何让其与你继续合作&#xff0c;达成长期合作关系。对于SaaS产品&#xff0c;丢失客户的成本是很昂贵的&#xff0c;赢得一个新客户的成本是留住现有客户的5到25倍&#xff…

Vue脚手架的使用

一、通过命令行使用vue-cli的指令创建 1. 安装&#xff1a;npm i -g vue/cli-init 2. 创建Vue项目&#xff08;Vue2.0项目&#xff09;&#xff1a; ​ &#xff08;1&#xff09;创建文件夹&#xff1a;vue2-demo ​ &#xff08;2&#xff09;进入文件夹&#xff1a;cd v…

[Leetcode] 相交链表

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。图示两个链表在节点 c1 开始相交&#xff1a;题目数据保证整个链式结构中不存在环。注意&#xff0c;函数返回结果后&#xf…

【 java 集合】Set 接口及常用实现类总结

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

JavaEE【Spring】:Spring事务和事务传播机制

文章目录前言一、Spring 中事务的实现1、MySQL 中的事务使用2、Spring 编程式事务&#xff08;了解&#xff09;3、Spring 声明式事务&#xff08;自动&#xff09;① Transactional 作用范围② Transactional 参数说明③ 注意事项Ⅰ. 抛出异常Ⅱ. 手动回滚④ Transactional ⼯…

2022年亚太地区大学生数学建模竞赛/2022年亚太杯1月加赛E题思路

问题1. 基本数据分析数据集中的OWID_WRL是什么&#xff1f;一般是指世界world。a) 哪些国家曾经拥有过核武器&#xff1f;现拥有核武器的国家有9个&#xff0c;分别为&#xff1a;美国、俄罗斯、英国、法国、中国、印度、巴基斯坦、以色列&#xff0c;朝鲜。曾经拥有核武的国家…

【python】导入同级、下级、上级目录中的模块

不想把代码都堆到一个文件里面&#xff0c;希望写的分层次&#xff0c;但又不是web框架&#xff0c;有入口文件和目录规则&#xff0c; 这个时候就要自己分包了&#xff0c;会遇到这个问题&#xff0c;明明ide智能追踪可以定位到包引用&#xff0c;但是却报错module undefine&a…

5G NR标准 第15章 上行功率和定时控制

第15章 上行功率和定时控制 上行链路功率控制和上行链路时序控制是本章的主题。 功率控制用于控制干扰&#xff0c;主要是针对其他小区的干扰&#xff0c;因为同一小区内的传输通常是正交的。 时序控制确保不同的设备以相同的时序接收&#xff0c;这是保持不同传输之间正交性…

Nacos设置为windows自启动服务

序言 众所周知&#xff0c;在 Windows 环境下想要启动 nacos 需要运行 bin 目录下的 startup.cmd。这样的启动方式需要保证 cmd 窗口一直开着&#xff0c;只要把这个窗口关掉&#xff0c;nacos 服务就停了。 所以为了避免人为的误关窗口&#xff0c;把 nacos 注册成一个 wins…

【可视化】无法理解PCA,条件概率,最小二乘回归?可视化帮你!

主成分分析PCA2D示例首先&#xff0c;只考虑两个维度的数据集&#xff0c;比如高度和重量。这个数据集可以绘制成平面上的点。但如果想要整理出变量&#xff0c;PCA会找到一个新的坐标系&#xff0c;其中每个点都有一个新的(x,y)值。坐标轴实际上没有任何物理意义。它们是高度和…

【JavaScript】如何转换blob数据与file文件还有url

大家好&#xff0c;关于blob对象和file对象有了解多少呢&#xff0c;它们都是一种文件的表示形式&#xff0c;文件之间是可以互相转换的&#xff0c;顺带一提&#xff0c;还有经常用到的临时文件路径tempFileURL。 文章目录文件类型Blob对象File对象URL临时路径文件类型 首先&…

c++ -- STL容器--vector

STL中最常用的容器为Vector&#xff0c;可以理解为数组#include <iostream> #include <vector> #include <algorithm> using namespace std;void myPrint(int val) {cout <<val<<endl; }//vector容器存放内置数据类型void test01() {//创建了一个…

数据库(tidb、clickhouse、hive)概念笔记

目录 1、有哪些分布式数据库 2、OLAP、OLTP、HTAP 3、TIDB、clickhouse、hive 一、TIDB 1. TiDb 核心特性&#xff1a; 2. TiDb 整体架构&#xff1a; 3.TiDB 存储&#xff1a; 二、clickhouse 三、hive 1.什么是 Hive&#xff1f; 2.Hive 架构和如何运作&#xff1…

KMP -- 代码求解next数组

代码求解next数组 1. KMP相关概念 前缀&#xff1a;包含首位字符但不包含末位字符后缀&#xff1a;包含末位字符但不包含首位字符next数字&#xff1a;主串与模式串不匹配时&#xff0c;模式串需要回退的位置next[j]&#xff1a;第 j 位字符前面的j-1位字符组成的字串的前后缀…

QGIS查看属性和选择要素

目录1. 查看属性和选择要素2. 调整图层样式&#xff0c;添加自动标注1. 查看属性和选择要素 #pic_center x400 暂时移除&#xff0c;不是删除&#xff0c;它还是存在它本来的位置&#xff0c;用的时候再次添加即可。 选择工具 点完工具后&#xff0c;点击图中一个点&#xf…

c++ -- STL容器--stack容器

5. stack容器5.1 简介① stack是一种先进后出的容器&#xff0c;它只有一个出口。② 栈中只有顶端的元素才可以被外界使用&#xff0c;因此栈不允许有遍历行为。③ 栈中进入数据称为&#xff1a;入栈 push④ 栈中弹出数据称为&#xff1a;出栈 pop5.2 常用接口① 功能描述&…

蓝桥杯STM32G431RBT6学习——GPIO

蓝桥杯STM32G431RBT6学习——GPIO GPIO外设分布 国信长天开发板使用的STM32G431RBT6为LQFP64的封装&#xff0c;可用的GPIO为49个&#xff0c;包括如下&#xff1a; PA0~PA15 PB0~PB15 PC0~PC15 PD2&#xff0c;PF0&#xff0c;PF1&#xff0c;PG10 其中PF0与PF1用于连接外部…

前端入门笔记 02 —— CSS

CSS标签通常要配合html或者js使用 CSS本身的构造 p{color : red}/*color 属性 red 值*//*p选择器 括号内内容 生命*/配合html <style>p{color : red}<\style>或者直接引入整个css文件 <head><style type text/css>import "1.3.css";<…

【vue组件之间的数据传递和组件的生命周期】一.组件之间的通信;二.组件的声明周期

目录 一.组件之间的通信 1.组件之间的关系&#xff1a;父子关系、兄弟关系、跨级关系 2.父子组件之间的通信&#xff08;数据传递&#xff09;&#xff1a; &#xff08;1&#xff09;父组件----》子组件&#xff1a;使用props &#xff08;2&#xff09;子组件----》父组件…

为什么互联网公司不欢迎中年人?

除开几个“越老越值钱”的岗位&#xff08;如医生、教师、建筑师&#xff09;外&#xff0c;大多数公司就是不欢迎中年人的。 你很难见到30岁的地推、40岁的销售、50岁的文员&#xff0c;但是20岁的年轻小伙一抓一大把&#xff0c;我们的互联网经济&#xff0c;就是建立在人口密…