当前位置: 首页 > news >正文

财务管理系统报账和挂账分别什么区别!报销又是什么【第三期】

前言

已经写了两期
财务管理系统之saas多租户架构是什么以及分库分表以及如何选择分布式事务方案

【程序员聊业务】财务管理系统之模块分类

报账和挂账概念

报账是指企业或个人因业务需要而发生的各项费用支出,在支付后,需要将相关的票据、凭证等提交给企业的财务部门进行审核和记录的过程。报账的目的是为了确保每一笔支出都有明确的用途和合法的凭证支持,以便于企业进行成本控制和财务分析。报账流程通常包括提交报账申请、财务审核、报销支付等步骤。
挂账

挂账则是指将某些尚未结清的款项暂时记录在账上,等待后续处理的一种会计处理方式。挂账的款项可能包括应收账款、应付账款、预收账款、预付账款等。挂账的目的是为了反映企业的实际财务状况,确保账目的完整性和准确性。挂账项在未来某个时间点,当相关的交易完成或款项结清时,会进行相应的会计处理,如收款、付款或冲账等。
区别和联系

  • 目的不同:报账主要是对已经发生的费用进行审核和记录,确保费用的合理性和合法性;而挂账则是对尚未结清的交易进行临时记录,反映企业的财务状况。
  • 处理对象不同:报账处理的是具体的费用支出,需要有相应的票据和凭证;挂账处理的则是各种未结清的款项,如应收应付等。
  • 处理时机不同:报账通常在费用发生后立即进行;挂账则根据款项的结清情况,在未来某个时间点进行处理。

尽管报账和挂账在财务管理中有着不同的含义和作用,但它们都是确保企业财务管理规范、有效的重要环节。通过准确的报账和挂账处理,企业可以更好地控制成本、管理现金流,并做出合理的财务决策。

报账和挂账流程

报账流程

  1. 提交报账申请:
  • 员工通过系统界面填写报账信息,包括费用类别、金额、相关说明等,并上传相应的凭证附件。
  • 提交的报账信息将被保存到ExpenseReports表中,状态设置为“审核中”。
  1. 财务审核:
  • 财务人员在系统中查看待审核的报账申请,可以查阅ExpenseReports表中状态为“审核中”的记录。
  • 财务人员审核报账信息和凭证的真实性和合规性。审核通过后,更新ExpenseReports表中的记录状态为“已批准”,否则为“已拒绝”。
  1. 报销支付:
  • 对于审核通过的报账申请,财务人员进行报销支付操作,支付完成后可能会更新ExpenseReports表中的记录,标记为“已支付”。
  • 相关的财务凭证信息将被记录到Vouchers表中,用于财务核算和报表生成。

挂账流程

  1. 记录挂账信息:
  • 当企业发生应收或应付款项时,相关信息被录入到AccountsReceivablePayable表中。例如,对于应收账款,记录客户信息(从Partners表中获取)、金额、到期日等信息;对于应付账款,记录供应商信息、金额、到期日等。
  • 挂账记录的状态初始为“未结清”。
  1. 款项结算:
  • 当应收款项收到或应付款项支付时,财务人员在系统中更新AccountsReceivablePayable表中相应记录的状态为“已结清”。
  • 同时,记录相关的财务凭证到Vouchers表中,反映这一财务活动。
  1. 定期审查:
  • 财务人员定期审查AccountsReceivablePayable表中的挂账记录,跟踪未结清款项的状态,必要时与客户或供应商沟通,确保款项按时收付。

涉及表结构

  1. 员工信息表(Employees)
  • 用途:存储员工的基本信息,用于报账时识别报账人。
  • 字段:员工ID、姓名、部门、职位等。
  1. 费用类别表(ExpenseCategories)
  • 用途:定义各种费用的类别,如差旅费、办公费等,用于报账时分类费用。
  • 字段:类别ID、类别名称、描述等。
  1. 报账记录表(ExpenseReports)
  • 用途:存储报账的详细记录,包括报账人、报账金额、费用类别等。
  • 字段:报账ID、员工ID、报账日期、费用类别ID、金额、状态(审核中、已批准、已拒绝)、凭证附件等。
  1. 应收应付账款表(AccountsReceivablePayable)
  • 用途:记录挂账的款项,包括应收账款和应付账款。
  • 字段:记录ID、类型(应收/应付)、关联方ID、金额、到期日、状态(未结清、已结清)等。
  1. 关联方信息表(Partners)
  • 用途:存储与企业有财务往来的外部单位或个人信息,用于挂账管理。
  • 字段:关联方ID、名称、类型(客户/供应商)、联系信息等。
  1. 凭证表(Vouchers)
  • 用途:存储财务凭证信息,用于报账和挂账的财务核算。
  • 字段:凭证ID、日期、摘要、金额、借贷方向、相关账户等。

结合flowable简单梳理流程

步骤 1: 添加Flowable依赖
首先,确保你的Spring Boot项目中包含了Flowable的依赖。在pom.xml文件中添加:

<dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.6.0</version>
</dependency>

步骤 2: 定义流程
使用BPMN 2.0定义你的报账和挂账流程。你可以使用Flowable Modeler来设计流程图。流程图应包含所需的任务、网关、事件等元素。
例如,一个简单的报账流程可能包括以下步骤:

  1. 提交报账请求。
  2. 财务审核。
  3. 审核通过或拒绝
    步骤 3: 部署流程定义
    将设计好的流程定义(通常是一个.bpmn20.xml文件)放入Spring Boot项目的resources/processes目录下。Flowable会在应用启动时自动部署这些流程定义。
    步骤 4: 启动流程实例
    在你的Spring Boot应用中,你可以通过注入RuntimeService来启动一个流程实例:
@Autowired
private RuntimeService runtimeService;public void startProcess() {Map<String, Object> variables = new HashMap<>();variables.put("applicant", "user1");variables.put("amount", 1000);runtimeService.startProcessInstanceByKey("expenseProcess", variables);
}

确保"expenseProcess"与你的流程定义中的id相匹配。
步骤 5: 处理任务
根据流程的不同阶段,你可能需要查询和完成任务。这可以通过TaskService实现:
报账流程服务ExpenseReportService

@Service
public class ExpenseReportService {@Autowiredprivate RuntimeService runtimeService;@Autowiredprivate TaskService taskService;@Autowiredprivate ExpenseReportRepository expenseReportRepository;public void startExpenseReportProcess(ExpenseReport expenseReport) {ExpenseReport savedReport = expenseReportRepository.save(expenseReport);Map<String, Object> variables = new HashMap<>();variables.put("applicant", savedReport.getApplicant());variables.put("amount", savedReport.getAmount());variables.put("reportId", savedReport.getId());runtimeService.startProcessInstanceByKey("expenseReportProcess", variables);}public void reviewExpenseReport(Long reportId, boolean approved, String reviewComment) {ExpenseReport report = expenseReportRepository.findById(reportId).orElseThrow(() -> new RuntimeException("Report not found"));report.setStatus(approved ? "APPROVED" : "REJECTED");report.setReviewComment(reviewComment);expenseReportRepository.save(report);// 假设我们已经查询到了对应的任务IDString taskId = ...;Map<String, Object> taskVariables = new HashMap<>();taskVariables.put("approved", approved);taskService.complete(taskId, taskVariables);}
}

reviewExpenseReport这个术语或函数名在财务管理系统或类似应用中通常指的是“审查报销报告”的过程。它的作用是执行对一个报销报告(Expense Report)的审核操作。

这个过程可能包括以下几个方面:

  1. 验证费用:检查报销报告中列出的费用是否符合公司政策,是否有相应的凭证支持(如收据、发票等)。
  2. 审批决策:基于费用的合理性和凭证的有效性,决定是否批准这些费用的报销。这可能包括全额批准、部分批准或拒绝报销。
  3. 记录审批意见:在报销报告中记录审核过程中的任何意见或决策理由,包括为什么某些费用被批准或拒绝。
  4. 更新报销状态:根据审批结果,更新报销报告的状态,如从“待审核”更新为“已批准”、“部分批准”或“已拒绝”。
    在实际的软件系统中,reviewExpenseReport方法可能需要接收一些参数,如报销报告的ID、审批者的决策(批准或拒绝)、审批意见等,然后根据这些信息更新数据库中的报销报告记录。
    例如,在一个简化的场景中,reviewExpenseReport方法的实现可能会涉及查询数据库中的特定报销报告,检查提交的费用明细,与公司的报销政策进行对比,然后根据审核结果更新报告的状态和记录审核意见。这个过程是财务管理系统中处理报销流程的关键步骤之一。

步骤 6: 监听流程事件
你可以通过实现Flowable的事件监听器来响应流程中的各种事件,例如任务的完成或流程的结束。

@Component
public class ProcessEventListener implements FlowableEventListener {@Overridepublic void onEvent(FlowableEvent event) {switch (event.getType()) {case TASK_COMPLETED:// 处理任务完成事件break;case PROCESS_COMPLETED:// 处理流程完成事件break;// 其他事件...}}@Overridepublic boolean isFailOnException() {return false;}@Overridepublic boolean isFireOnTransactionLifecycleEvent() {return false;}@Overridepublic String getOnTransaction() {return null;}
}

报销与报账

报销通常被视为报账的一种形式。在财务管理和会计实践中,报账(Expense Reimbursement)是指个人或员工为了工作或业务目的而垫付的费用,之后向所属组织或公司申请返还这些费用的过程。报销(Reimbursement)就是这一过程的核心,即组织或公司对这些垫付费用的返还行为。
报账流程通常包括以下几个步骤:

  1. 提交报账请求:员工需要提交一份报账请求,通常包括费用的详细说明、相关的收据或发票等证明文件。
  2. 审核:相关部门(如财务部门)会审核这份报账请求,确认费用的合理性和准确性。
  3. 批准:审核通过后,报账请求会得到批准。
  4. 报销:最后,公司会将相应的费用返还给员工,这个过程就是报销。
    因此,报销是报账流程的一个重要组成部分,是实现费用返还的具体行动。在日常语言和实践中,报账和报销这两个术语有时会互换使用,但从严格意义上讲,报账是指整个费用返还的流程,而报销是指流程的最终步骤——即费用的返还。

前端vue3 画报账流程页面如何和flowable结合

将Vue 3前端应用与Flowable工作流引擎结合,主要涉及到前端界面的构建和后端API的设计,以便前端可以与Flowable交互,执行如启动流程、完成任务等操作。以下是一个基本的集成步骤概述:
步骤 1: 设计后端API
首先,你需要在Spring Boot应用中设计一组REST API,这些API将作为Vue前端和Flowable引擎之间的桥梁。这些API可能包括:
启动流程实例
查询任务列表
完成任务
查询流程状态
例如,创建一个API来启动报账流程:

@PostMapping("/api/expense/start")
public ResponseEntity<?> startExpenseProcess(@RequestBody ExpenseRequest expenseRequest) {// 调用Flowable服务启动流程实例,传入必要的流程变量// 返回流程实例ID或其他相关信息
}

步骤 2: 创建Vue 3前端页面
在Vue 3应用中,你可以创建组件来展示报账流程的各个环节,如填写报账单、显示待办任务、提交审核结果等。

  1. 报账单提交页面:创建一个表单,让用户输入报账信息,如费用明细、金额等,并提供一个提交按钮。
  2. 待办任务列表:展示当前用户的待办任务列表,可以使用Flowable的API查询到这些任务,并在前端展示。
  3. 任务处理页面:对于每个任务,提供相应的操作界面,如审批报账单,用户可以批准或拒绝,并填写评论。
    步骤 3: 前端调用后端API
    在Vue组件中,使用Axios或Fetch API等HTTP客户端库来调用后端API,以执行流程操作。
reviewExpenseReport的触发手动触发
  1. 用户操作:在Vue 3应用中,用户完成报账单的审核操作,选择批准或拒绝,并可能填写一些审批意见。
  2. 调用API:用户操作触发一个事件,前端应用通过HTTP请求调用后端的reviewExpenseReport API,传递用户的决策和其他相关信息。
  3. 后端处理:
    后端接收到请求,解析用户的决策和意见。
    执行业务逻辑,如更新报账单的状态,记录审批意见等。
    调用Flowable API来完成流程中的相应任务,推进流程到下一步。
  4. 反馈结果:后端处理完成后,向前端返回操作结果,前端根据结果更新界面,如显示操作成功的消息,刷新任务列表等。
reviewExpenseReport的触发时机 如何与flowable结合(自动触发)

通常是基于流程定义和流程引擎的状态管理。例如,当报销流程进入到“财务审核”环节时,流程引擎会根据流程定义自动调用相应的服务任务(可能就是执行reviewExpenseReport方法)来进行审核处理。这种方式更多地依赖于流程引擎的自动化管理,减少了人工干预,适用于流程较为固定和自动化程度高的场景。

<bpmn2:process id="expenseProcess" name="Expense Process" isExecutable="true"><!-- 其他流程定义 --><bpmn2:serviceTask id="reviewExpenseTask" name="Review Expense Report"><bpmn2:extensionElements><flowable:field name="reportId"><flowable:string><![CDATA[${reportId}]]></flowable:string></flowable:field><flowable:field name="approved"><flowable:string><![CDATA[${approved}]]></flowable:string></flowable:field><flowable:field name="reviewComment"><flowable:string><![CDATA[${reviewComment}]]></flowable:string></flowable:field></bpmn2:extensionElements><bpmn2:implementation>org.flowable.engine.impl.bpmn.behavior.JavaDelegate</bpmn2:implementation><bpmn2:operationRef>reviewExpenseOperation</bpmn2:operationRef></bpmn2:serviceTask><!-- 其他流程定义 -->
</bpmn2:process>

在这个示例中,serviceTask元素定义了一个服务任务,用于调用reviewExpenseReport方法。extensionElements部分可以用来传递参数给这个方法,例如报销报告的ID、审核结果(批准或拒绝)以及审核意见。这些参数通过流程变量(如 r e p o r t I d 、 {reportId}、 reportId{approved}、${reviewComment})传递。
实现JavaDelegate
为了让服务任务能够执行reviewExpenseReport方法,你需要在Java中实现一个JavaDelegate接口,并在服务任务中引用这个实现。例如:

public class ReviewExpenseDelegate implements JavaDelegate {@Autowiredprivate ExpenseReportService expenseReportService; // 假设这是你的服务类@Overridepublic void execute(DelegateExecution execution) {Long reportId = (Long) execution.getVariable("reportId");boolean approved = (Boolean) execution.getVariable("approved");String reviewComment = (String) execution.getVariable("reviewComment");expenseReportService.reviewExpenseReport(reportId, approved, reviewComment);}
}

在这个ReviewExpenseDelegate类中,execute方法会从流程执行上下文中获取变量,并调用ExpenseReportService中的reviewExpenseReport方法。
配置服务任务
最后,确保在你的bpmn20.xml文件中正确引用了这个Java类。这通常通过设置服务任务的class属性来实现,指向你的JavaDelegate实现

<flowable:serviceTask id="reviewExpenseTask" name="Review Expense Report"flowable:class="com.example.workflow.delegate.ReviewExpenseDelegate"/>

相关文章:

财务管理系统报账和挂账分别什么区别!报销又是什么【第三期】

前言 已经写了两期 财务管理系统之saas多租户架构是什么以及分库分表以及如何选择分布式事务方案 【程序员聊业务】财务管理系统之模块分类 报账和挂账概念 报账是指企业或个人因业务需要而发生的各项费用支出&#xff0c;在支付后&#xff0c;需要将相关的票据、凭证等提交…...

最少刷题数

最少刷题数 题目分析 对于每一名同学计算还需要再刷多少题才能保证刷题数比他多的人数不超过刷题数比他少的学生人数。我们可以考虑统计每一个分数的前缀和数组&#xff0c;sum[i]表示当前学生中&#xff0c;刷题数小于等于i的人数。那么对于学生i的刷题数a[i]&#xff0c;su…...

Python刘诗诗

写在前面 刘诗诗在电视剧《一念关山》中饰演了女主角任如意&#xff0c;这是一个极具魅力的女性角色&#xff0c;她既是一位有着高超武艺和智慧的女侠士&#xff0c;也曾经是安国朱衣卫前左使&#xff0c;身怀绝技且性格坚韧不屈。剧中&#xff0c;任如意因不满于朱衣卫的暴行…...

探索ChatGPT在软件架构师工作中的应用

随着人工智能技术的不断发展&#xff0c;自然语言处理模型如OpenAI的ChatGPT已经成为了解决各种实际问题的强大工具之一。在软件架构师这个领域&#xff0c;ChatGPT也有着广泛的应用。本文将探讨软件架构师如何有效地利用ChatGPT来解决问题和提高工作效率。 ChatGPT简介 Chat…...

pytest--allure报告中添加用例详情

前言 前面介绍了如何生成allure的报告&#xff0c;看着allure的页面非常好看&#xff0c;但是感觉少了一些内容&#xff0c;allure还可以增加一些用例详情内容&#xff0c;这样让我们的报告看着更加绚丽。 allure增加用例详情 我们可以在报告测试套件中增加用例详情内容。 …...

【深度学习笔记】9_5 多尺度目标检测

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 9.5 多尺度目标检测 在9.4节&#xff08;锚框&#xff09;中&#xff0c;我们在实验中以输入图像的每个像素为中心生成多个锚框。这些…...

Linux--vim

一.什么是vim Vim&#xff08;Vi IMproved&#xff09;是一种文本编辑器&#xff0c;通常在Linux和其他类Unix操作系统中使用。它是Vi编辑器的增强版本&#xff0c;提供了更多的功能和定制选项。Vim具有强大的文本编辑和编程功能&#xff0c;支持语法高亮、代码折叠、宏录制、…...

FreeRTOS操作系统学习——中断管理

中断管理介绍 嵌入式实时系统需要对整个系统环境产生的事件作出反应。这些事件对处理时间和响应时间都有不同的要求。事件通常采用中断方式检测&#xff0c;中断服务例程(ISR)中的处理量应当越短越好。ISR是在内核中被调用的&#xff0c; ISR执行过程中&#xff0c;用户的任务…...

DHCP中继实验(思科)

华为设备参考&#xff1a;DHCP中继实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 DHCP中继&#xff0c;可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段&#xff0c;则客户机可以正确地获得动态分配的IP…...

基于SpringBoot的“心灵治愈交流平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“心灵治愈交流平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能界面图 登录、用户注册界面图 心灵专…...

【SpringBoot】自定义工具类实现Excel数据新建表存入MySQL数据库

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …...

Retelling|Facebook1

录音 Facebook 1 Retelling|Facebook1 复述转写 Today Im totally going to talk about Facebook. The aspects of this (its)rising fame and fortune, and the rise (小停顿)in(rising) fame and fortune of s founder Mark Zuckerberg, Mark Zuckerberg created this plat…...

【2024-03-12】设计模式之模板模式的理解

实际应用场景&#xff1a;制作月饼 过程描述&#xff1a; 一开始&#xff0c;由人工制作月饼&#xff0c; 第一个&#xff1a;根据脑子里面月饼的形状&#xff0c;先涅出月饼的形状&#xff0c;然后放入面粉和馅料把开口合并起来。 第二个&#xff1a;根据脑子里面月饼的形状&…...

Transformer模型引领NLP革新之路

在不到4 年的时间里&#xff0c;Transformer 模型以其强大的性能和创新的思想&#xff0c;迅速在NLP 社区崭露头角&#xff0c;打破了过去30 年的记录。BERT、T5 和GPT 等模型现在已成为计算机视觉、语音识别、翻译、蛋白质测序、编码等各个领域中新应用的基础构件。因此&#…...

【Kotlin】运算符函数、解构函数、中缀函数

1 一元运算符 1.1 符号和函数 符号函数aa.unaryPlus()-aa.unaryMinus()!aa.not()aa.dec()a--a.inc() 1.2 案例 fun main() {var stu Student("Tom", 13)println(-stu) // 打印: [moT, 31] }class Student(var name: String, var age: Int) {operator fun unaryM…...

springboot268码头船只货柜管理系统

码头船只出行和货柜管理系统的设计与实现 摘要 针对于码头船只货柜信息管理方面的不规范&#xff0c;容错率低&#xff0c;管理人员处理数据费工费时&#xff0c;采用新开发的码头船只货柜管理系统可以从根源上规范整个数据处理流程。 码头船只货柜管理系统能够实现货柜管理…...

Java面试题11MySQL之执行计划到事务及慢查询

你对MySQL执行计划怎么看 执行计划就是SQL的执行查询的顺序&#xff0c;以及如何使用索引查询&#xff0c;返回的结果集的行数 在MySQL中&#xff0c;我们可以通过explain命令来查看执行计划。其语法如下&#xff1a; EXPLAIN SELECT * FROM table_name WHERE conditions;在…...

算法时空复杂度分析:大O表示法

文章目录 前言大O表示法3个时间复杂度分析原则常见的时间复杂度量级空间复杂度参考资料 前言 算法题写完以后&#xff0c;面试官经常会追问一下你这个算法的时空复杂度是多少&#xff1f;&#xff08;好像作为一名算法工程师&#xff0c;我日常码代码的过程中&#xff0c;并没…...

threejs简单创建一个几何体(一)

1.下包引入 //下包 npm install three yarn add three//引入 import * as THREE from three2.创建场景,摄像机 // 1.创建场景const scene new THREE.Scene()// 2.创建摄像机//第一个参数是视角,一般在60-90之间,第二个参数是场景的尺寸,一般取显示器的宽高,第三个参数是开始位…...

msfconsole数据库连接不了的问题【已解决】

msfconsole数据库连接 1.msf数据库端口 msf使用的是postgresql&#xff0c;这个数据库默认端口是5432 单个模块的使用可以不需要数据库&#xff0c;但是模块与模块之间需要沟通的时候就会用到数据库。 2.查看msf数据库连接状态 db_status #msf内部查看systemctl status p…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...