工作遇到问题与解决办法(二)

弹出确认框

this.$confirm('确定删除全部添加的数据吗?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {// 确定操作this.addYpslTempList=[];this.isSelect=false;//删除状态this.addMultiple = true;this.$message({type: 'success',message: '删除成功'});}).catch(() => {// 取消操作this.$message({type: 'info',message: '已取消'})});

表格内搜索

定义搜索条件

yYpmc:"",

搜索列

<el-table-columnlabel="药品名称"width="180px"><template slot="header" slot-scope="scope">药品名称<el-inputv-model="searchYpmc"size="mini"placeholder="输入药品关键字搜索"/></template><template slot-scope="scope"><span>{{scope.row.yYpmc}}</span></template></el-table-column>

表格使用

 <el-table v-loading="ykLoading":data="ykList.filter(data => !searchYpmc || data.yYpmc.includes(searchYpmc))"@row-click="handleCurrent" height="400px">

批量添加

返回成功添加个数

elementui form 表单点击重置自动重置

<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"><el-form-item label="处方" prop="hLxbm"><el-select  placeholder="请选择处方"v-model="queryParams.hLxbm" clearable><el-optionv-for="item in dict.type.CFLX":key="item.value":value="item.value":label="item.label"/></el-select></el-form-item><el-form-item label="药品种类" prop="yZlbm"><el-select  placeholder="请选择药品种类"v-model="queryParams.yZlbm" clearable><el-optionv-for="item in dict.type.YP_ZLBM":key="item.value":value="item.value":label="item.label"/></el-select></el-form-item><el-form-item><el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button><el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button></el-form-item></el-form>

form v-model绑定数据与el-form-item的props属性值对应

queryParams: {pageNum: 1,pageSize: 10,hLxbm: null,yZlbm: null,bh: null,},
<el-form :model="queryParams"        
<el-form-item label="处方" prop="hLxbm">

重置方法

    /** 重置按钮操作 */resetQuery() {this.resetForm("queryForm");  //与ref="queryForm" 对应},

表格单元格的值-根据不同值显示不同颜色背景

<el-table-column label="标识" width="160" align="center" prop="dbbz" ><template slot-scope="scope"><el-tagv-if="scope.row.dbbz == '0'"type="warning"disable-transitions>调拨中</el-tag><el-tagv-if="scope.row.dbbz == '1'"type="success"disable-transitions>调拨完成</el-tag><el-tagv-if="scope.row.dbbz == '2'"type="danger"disable-transitions>退回</el-tag></template></el-table-column>

报错不允许从数据类型 varbinary 到 datetime2 的隐式转换。请使用 CONVERT 函数来运行此查询

**原因:**批量添加时,添加时间字段为空

**解决:**把数据库字段类型由datatime2改为datatime,xml文件的SQL参数中增加jdbcType = TIMESTAMP,例如:#{item.time, jdbcType = TIMESTAMP}。可行(适用于精度要求不那么高的情况)

SQLserver datatime 和datetime2区别
DateTime字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fff ,3个f,精确到1毫秒(ms),示例 2014-12-03 17:06:15.433 。

DateTime2字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fffffff ,7个f,精确到0.1微秒(μs),示例 2014-12-03 17:23:19.2880929 。

如果用SQL的日期函数进行赋值,DateTime字段类型要用 GETDATE() ,DateTime2字段类型要用 SYSDATETIME() 。

el-table 合计列

定义合计列

方法

getSummaries(param) {const { columns, data } = param;const sums = [];columns.forEach((column, index) => {if (index === 0) {sums[index] = '总计';return;}const values = data.map(item => Number(item[column.property]));if (column.property === "hCrdj" || column.property === "yCrjj") {sums[index] = values.reduce((prev, curr) => {const value = Number(curr);if (!isNaN(value)) {return prev + curr;} else {return prev;}}, 0);sums[index] += '元';}});return sums;},

使用合计

<el-table v-loading="loadingDetil":data="crkListDetil.filter(data => !searchDetailYpmc || data.yYpmc.includes(searchDetailYpmc))":summary-method="getSummaries"show-summaryheight="400px" >

el-table 使用字典

引入字段

export default {name: "Crk",dicts: ['KSBM','Y_CDBM'],

数据表使用

        <el-table-column label="产地" width="200px" align="center" prop="yCdbm" ><template slot-scope="scope"><dict-tag :options="dict.type.Y_CDBM" :value="scope.row.yCdbm"/></template></el-table-column>

js与vue使用字典

引入字段

export default {name: "Crk",dicts: ['KSBM','Y_CDBM'],

js

this.dict.type.YP_ZLBM

element ui 时间范围

vue

<el-date-pickervalue-format="yyyy-MM-dd HH:mm:ss"v-model="queryParams.dateScope"type="datetimerange"start-placeholder="开始日期"end-placeholder="结束日期":default-time="['12:00:00']"></el-date-picker>

js

if(this.queryParams.dateScope==null || this.queryParams.dateScope==""){this.queryParams.startDate=null;this.queryParams.endDate=null;}else{this.queryParams.startDate=this.queryParams.dateScope[0];this.queryParams.endDate=this.queryParams.dateScope[1];}

后端java 实体类

    //起始时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date startDate;//结束时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date endDate;

**注意:**时间格式对应到 前端就能传入时间格式

数据库

行变化列

SELECT m.ysxm,sum(m.H) H
FROM
(SELECT t.ysbm,u.nick_name as ysxm,CASE WHEN t.fylb='H' THEN t.m_sfje  ELSE 0 END AS 'H',CASE WHEN t.fylb='N' THEN t.m_sfje  ELSE 0 END AS 'N',CASE WHEN t.fylb='1' THEN t.m_sfje  ELSE 0 END AS '1'
FROM m_brfy as t
LEFT JOIN sys_user as u on u.user_id=t.ysbm and u.dept_id='101'
where t.m_tkbs='0' and t.dept_id = '101' ) m
where m.ysbm='11'
GROUP BY m.ysxm

动态表格

实体类

package com.qlh.yhis.mz.mzsf.vo;//门诊收费对应的类型
public class FyLbVo {//费用编码private String fylb;//费用名称private String fymc;//一个医生对应该费用总收费private Float sumFy;public String getFylb() {return fylb;}public void setFylb(String fylb) {this.fylb = fylb;}public String getFymc() {return fymc;}public void setFymc(String fymc) {this.fymc = fymc;}public Float getSumFy() {return sumFy;}public void setSumFy(Float sumFy) {this.sumFy = sumFy;}
}
package com.qlh.yhis.mz.mzsf.vo;import com.fasterxml.jackson.annotation.JsonFormat;import java.util.Date;
import java.util.List;//门诊收费人员
public class MzSfVo {//机构idprivate Long deptId;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date startDate;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date endDate;private String ysbm;private String ksbm;//所用项目总和的费用金额private Float sumFyje;//查询条件多选科室private String ksbms[];//查询条件多选医生private String ysbms[];//查询条件多选收费项目private String fylbs[];//表格显示private String fybms[];private List<FyLbVo> lbVoList;public Long getDeptId() {return deptId;}public void setDeptId(Long deptId) {this.deptId = deptId;}public Date getStartDate() {return startDate;}public void setStartDate(Date startDate) {this.startDate = startDate;}public Date getEndDate() {return endDate;}public void setEndDate(Date endDate) {this.endDate = endDate;}public String getYsbm() {return ysbm;}public void setYsbm(String ysbm) {this.ysbm = ysbm;}public String getKsbm() {return ksbm;}public void setKsbm(String ksbm) {this.ksbm = ksbm;}public Float getSumFyje() {return sumFyje;}public void setSumFyje(Float sumFyje) {this.sumFyje = sumFyje;}public List<FyLbVo> getLbVoList() {return lbVoList;}public void setLbVoList(List<FyLbVo> lbVoList) {this.lbVoList = lbVoList;}public String[] getKsbms() {return ksbms;}public void setKsbms(String[] ksbms) {this.ksbms = ksbms;}public String[] getYsbms() {return ysbms;}public void setYsbms(String[] ysbms) {this.ysbms = ysbms;}public String[] getFylbs() {return fylbs;}public void setFylbs(String[] fylbs) {this.fylbs = fylbs;}public String[] getFybms() {return fybms;}public void setFybms(String[] fybms) {this.fybms = fybms;}
}

mapper

 List<Map<String,Object>> listMzsfVoByMzsfVo(MzSfVo mzsfVo);

xml实现

<select id="listMzsfVoByMzsfVo" parameterType="com.qlh.yhis.mz.mzsf.vo.MzSfVo" resultType="java.util.Map">SELECT m.ysxm,<foreach item="fybm" collection="fybms" separator=",">sum(${fybm}) as ${fybm}</foreach>FROM(SELECT t.ysbm,u.nick_name as ysxm,<foreach item="fybm" collection="fybms"  separator="," >CASE WHEN t.fylb=substring(#{fybm},2,len(#{fybm})) THEN t.m_sfje  ELSE 0 END AS ${fybm}</foreach>FROM m_brfy as tLEFT JOIN sys_user as u on u.user_id=t.ysbm and u.dept_id=#{deptId}<where><if test="startDate != null "> and t.rbrq >= #{startDate}</if><if test="endDate != null "> and  #{endDate} >= t.rbrq </if>and t.m_tkbs='0' and t.dept_id = #{deptId}</where>) m<where><if test="ysbms != null ">and m.ysbm in<foreach item="ysbm" collection="ysbms" open="(" separator="," close=")">#{ysbm}</foreach></if></where>GROUP BY m.ysxm</select>

controller

加F的意思是在表中主键是int 类型,int 类型不能分组或者求和,需要转换为字符串类型

@ApiOperation("查询门诊费用医生统计费用类型")@GetMapping("/byysbm/fylb/list")public AjaxResult listfylb(MzSfVo mzSfVo){HashMap<String,String[]> result = new HashMap<>();List<FyLbVo> listFylbVo = mzsfService.listFylbByFybm(mzSfVo);//表头String names[] =new String[listFylbVo.size()+2];//表数据String vals[] = new String[listFylbVo.size()+2];names[0]="医生姓名";vals[0]="ysxm";//每一行的合计names[listFylbVo.size()+1]="合计";vals[listFylbVo.size()+1]="sumRow";for (int i = 0; i < listFylbVo.size(); i++) {names[i+1]=listFylbVo.get(i).getFymc();vals[i+1]="F"+listFylbVo.get(i).getFylb();}result.put("name",names);result.put("val",vals);return success(result);}@ApiOperation("查询门诊费用医生统计")@GetMapping("/byysbm/list")public TableDataInfo listVoByYsbm(MzSfVo mzSfVo){startPage();//需要的列List<FyLbVo> listFylbVo = mzsfService.listFylbByFybm(mzSfVo);String fylb[] = new String[listFylbVo.size()];//表格显示String fybms[] = new String[listFylbVo.size()];for (int i = 0; i < listFylbVo.size(); i++) {fylb[i]=listFylbVo.get(i).getFylb();fybms[i]="F"+listFylbVo.get(i).getFylb();};mzSfVo.setFylbs(fylb);mzSfVo.setFybms(fybms);List<Map<String,Object>> list = mzsfService.listMzsfVoByMzsfVo(mzSfVo);for (int i = 0; i < list.size(); i++) {Map<String,Object> temp = list.get(i);float sum = 0.00f;for (Map.Entry<String, Object> entry : temp.entrySet()) {if(entry.getKey().substring(0,1)=="F"||"F".equals(entry.getKey().substring(0,1)))sum += new Float(entry.getValue()+"") ;}temp.put("sumRow",sum);}return getDataTable(list);}

vue前端

动态表格

<template><div class="app-container"><ta-card title="条件搜索" :bordered="false" :showExpand="false" style="margin-bottom: 18px;"><el-form :model="queryParams"ref="queryform"size="small"@submit.native.prevent:inline="true"label-width="80px"><el-form-item label="查询时间" prop="dateScope"><el-date-pickervalue-format="yyyy-MM-dd HH:mm:ss"v-model="queryParams.dateScope"type="datetimerange"start-placeholder="开始日期"end-placeholder="结束日期":default-time="['12:00:00']"></el-date-picker></el-form-item><el-form-item label="医生" prop="ysbms"  width="70px"><el-select v-model="queryParams.ysbms"  multiple clearable placeholder="请选择医生" filterable ><el-optionv-for="item in dict.type.SYS_USER":key="item.value":label="item.label":value="item.value"></el-option></el-select></el-form-item><el-form-item label="费用类型" prop="fylbs"  width="70px"><el-select v-model="queryParams.fylbs"  multiple clearable placeholder="请选择费用类别" filterable ><el-optionv-for="item in dict.type.FYLB":key="item.value":label="item.label":value="item.value"></el-option></el-select></el-form-item><el-form-item :style="isCollapse?'position: absolute;right: 4.8%;':'position: absolute;right: 1.1%;'"><el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button><el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button></el-form-item></el-form></ta-card><ta-card title="门诊收费统计-医生统计" :bordered="false" :showExpand="false">//动态表格<el-table :data="tableData" stripe><el-table-columnv-for="(item, index) in tableHeader":key="index":prop="item.val":label="item.name"></el-table-column></el-table><pagination:total="total":page.sync="queryParams.pageNum":limit.sync="queryParams.pageSize"@pagination="getList"/></ta-card></div>
</template><style lang="less">
.el-table .exit-row{background: #f6f68b;
}
.el-table .success-row{background: #d4f6c1;
}
</style><script>
import { listMzsfByYsbm,listMzsfFylbByYsbm } from '@/api/analysis/mz/mzsf'
export default {name: 'ysbm',dicts: ['SYS_USER','FYLB'],data () {return {// 总条数total: 0,//表格数据加载状态loading: false,queryParams: {pageNum: 1,pageSize: 10,dateScope:null,startDate:null,endDate:null,ysbms:null,fylbs:null,},tableData: [],  // 获取到的表格数据tableHeader: []  // 表头数据}},created() {this.getList();},methods:{/** 搜索按钮操作 */handleQuery() {this.queryParams.pageNum = 1;this.getList();},/** 重置按钮操作 */resetQuery() {this.resetForm("queryform");this.queryParams.yTjpzh=null;this.handleQuery();},//初始化查询getList(){this.loading=true;if(this.queryParams.dateScope==null || this.queryParams.dateScope==""){this.queryParams.startDate=null;this.queryParams.endDate=null;}else{this.queryParams.startDate=this.queryParams.dateScope[0];this.queryParams.endDate=this.queryParams.dateScope[1];}//查询表格数据listMzsfByYsbm(this.queryParams).then(response => {this.tableData = response.rows;this.total = response.total;});//获取表头设置表头的name(key)-val(表头名字)listMzsfFylbByYsbm(this.queryParams).then(response => {//每次刷新表头为空this.tableHeader=[];let headNameArr=response.data.name; //表头名let headValArr=response.data.val; //表头对应的字段名,也就是Java实体类对应的属性// 转化表头数据headNameArr.forEach((item, index) => {this.tableHeader.push({val: headValArr[index], // 表头对应的表头名name: item // 表中要显示的数据})})console.log(this.tableHeader);});this.loading = false;},/** 导出按钮操作 */handleExport() {this.download('/mz/mzrctjbb/byysbm/export', {...this.queryParams}, `yptj_${new Date().getTime()}.xlsx`)},}
}</script>

滑动开关效果

在这里插入图片描述

前端页面代码

<el-table-column label="状态" align="center" prop="stop" ><template v-slot="{row}" ><el-switch  v-model="row.stop"@change="handleDelete(row)"style="display: block"active-color="#13ce66"inactive-color="#ff4949"active-text="使用"inactive-text="停止":active-value='0':inactive-value='1'></el-switch></template></el-table-column>

触发方法

/** 删除按钮操作 */handleDelete(row) {const fkmc = row.fkmc;const stop = row.stop;if(stop==1){this.$confirm('是否确认停止付款方式为"' + fkmc + '"的数据项?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {var fkfs = row;fkfs.stop = 1;updateFkStop(fkfs).then(response =>  {if(response.code=200){this.$message({type: 'success',message: '停止成功'});}else{this.$message({type: 'error',message: '停止失败'});}});}).catch(() => {// 取消操作this.$message({type: 'info',message: '已取消'})row.stop=0;});}else{this.$confirm('是否确认启用付款方式为"' + fkmc + '"的数据项?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {var fkfs = row;fkfs.stop = 0;updateFkStop(fkfs).then(response =>  {if(response.code=200){this.$message({type: 'success',message: '启用成功'});}else{this.$message({type: 'error',message: '启用失败'});}});}).catch(() => {// 取消操作this.$message({type: 'info',message: '已取消'})row.stop=1;});}},

组件传值

父组件

<medicalCoverCanJt :zBahData="singleJson" />

子组件

props: {zBahData: {type: Object,default: () => {return {};},},},created() {// 查询病案数据getData(this.zBahData.zBah).then((res) => {this.detailData = res.data;});},//监听watch: {zBahData(newVal, oldVal) {this.zBahData=newVal;getData(this.zBahData.zBah).then((res) => {this.detailData = res.data;});},},

传递时间

前端时间范围

导入

import moment from 'moment'; //引入js日期处理类库

事件转换为字符串类型

this.queryParams.startDateString=moment(this.queryParams.dateScope[0]).format("YYYY-MM-DD HH:mm:ss");

后端接收时间字符串,转换为时间类型

if(null!=yyhztjbbVo.getStartDateString()||""!=yyhztjbbVo.getStartDateString()||!"".equals(yyhztjbbVo.getStartDateString())){SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = null;try {date = formatter.parse(yyhztjbbVo.getStartDateString());} catch (ParseException e) {throw new RuntimeException(e);}yyhztjbbVo.setStartDate(date);}

点击表格某一行某行颜色发生变化

el-table

<el-table v-loading="tjloading":data="jkbTjList"v-model="selectedRows":row-style="selectedstyle"highlight-current-row@row-click="rowClick">

重写 highlight-current-row

<style scoped>/* 用来设置当前页面element全局table 选中某行时的背景色*/
::v-deep .el-table__body tr.current-row>td{background-color: #6ee558 !important;color: #fff;
}</style>

页面初始化第一行颜色

el-table

<el-table v-loading="tjloading":data="jkbTjList"v-model="selectedRows":row-style="selectedstyle"highlight-current-row

js

data(){returen{getIndex:null,}
} ,
created() {this.lastTjList();},
methods: {//页面初始展示上次提交lastTjList(){this.zJkpz=XXX;},selectedstyle ({row, rowIndex}) {if (this.zJkpz == row.zJkpz ) {return {	"background-color": "#6ee558" };}},//点击左边表格,右边表格发生变化rowClick (val) {this.zJkpz=val.zJkpz;},
}

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

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

相关文章

MySQL InnoDB存储引擎中的索引结构解析

目录 常见的几种数据结构1、二叉树2、红黑树3、B树4、B树5、总结 索引结构1、聚簇索引和非聚簇索引2、Hash索引3、总结 常见的几种数据结构 1、二叉树 特点&#xff1a; 每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。通常不是自平衡的&#xff0c;可能…

漫谈:exception比goto强在哪?还不如if else呢!

最近对异常处理比较气愤。因为引发了一些BUG…… “异常处理不是用来避免BUG的吗&#xff1f;”&#xff0c;他们这样说的&#xff0c;但是异常处理确实引发了BUG。 目录 如果代码需要优雅&#xff0c;你为什么不去跳芭蕾&#xff1f; 看看下面的代码&#xff1a; try{Stream…

Mac中nvm切换node版本失败

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切换版本之后。 关闭终端&#xff0c;再次打开&#xff0c;输入 node -v 还是得到之前的 node 版本。 原因&#xff1a; 在这里这个 default 中有个 node 的版本号&#xff0c;使用 nvm use 时&a…

spring boot 实现直播聊天室(二)

spring boot 实现直播聊天室(二) 技术方案: spring bootnettyrabbitmq 目录结构 引入依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.96.Final</version> </dependency>Si…

芯知识 | 什么是OTP语音芯片?唯创知音WTN6xxx系列:低成本智能语音解决方案

什么是OTP语音芯片&#xff1f; OTP&#xff0c;即一次性可编程&#xff08;One-Time Programmable&#xff09;&#xff0c;语音芯片是一类具有独特编程特性的嵌入式语音存储解决方案。与可重复擦写&#xff08;Flash型&#xff09;语音芯片不同&#xff0c;OTP语音芯片一经烧…

安装DevEco Studio

下载 首先进入鸿蒙开发者官网&#xff0c;顶部导航栏选择开发->DevEco Studio 根据操作系统下载不同版本&#xff0c;其中Mac(X86)为英特尔芯片&#xff0c;Mac(ARM)为M芯片。 安装 下载完毕后&#xff0c;开始安装。 点击Agree 首次使用&#xff0c;请选择Do not impor…

Vue 详细教程

Vue实战 1. Vue 引言 渐进式 JavaScript 框架 --摘自官网 官网地址&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js # 渐进式 1. 易用 html css javascript 2. 高效 开发前端页面 非常高效 3. 灵活 开发灵活 多样性 # 总结 Vue 是一个javascript 框架 js 简化页面js操作…

Pr自动从视频脚本剪辑视频FirstCut插件免费下载

FirstCut 插件将自动从视频脚本中剪辑视频&#xff0c;在例如新闻、采访、自媒体视频等带有配音或字幕内容的视频制作中提高了粗剪效率。 使用 FirstCut&#xff0c;大大缩短了粗剪的时间&#xff0c;而不是转到每个视频文件并找到 IN 点和 OUT 点&#xff0c;然后将其插入到序…

jmeter,读取CSV文件数据的循环控制

1、构造csv数据 保存文件时需要注意文件的编码格式 id,name,limit,status,address,start_time 100,小米100,1000,1,某某会展中心101,2023/8/20 14:20 101,小米101,1001,1,某某会展中心102,2023/8/21 14:20 2、在线程组下添加【CSV数据文件设置】元件 3、CSV文件数据的循环控…

数据库动态视图和存储过程报表数据管理功能设计

需求&#xff1a;需要将ERP的报表数据挪到OA中&#xff0c;但是OA表单设计不支持存储过程动态传参&#xff0c;所以需要设计一个系统&#xff0c;可以手动配置&#xff0c;动态显示原本ERP的报表数据&#xff0c;ERP报表是存在数据库的视图和存储过程中 思路&#xff1a;因为E…

c#按照时间进行数据存储(不用数据库)

概要介绍 按照日期生成文件夹&#xff0c;按照时间生成文件名&#xff0c;存储字符串。 可以用于简单数据记录&#xff08;如果数据存储考虑格式文本&#xff0c;保存为csv格式&#xff09; 实现效果 调用方法 SaveText.saveStr("测试字符串"DateTime.Now.ToStrin…

恒创科技:有哪些免费的CDN加速服务

CDN加速技术已经成为提升网站性能和用户体验的重要手段之一。许多网站都使用CDN来加速内容传输&#xff0c;提高网站的响应速度和可用性。然而&#xff0c;对于许多小型企业和个人网站来说&#xff0c;使用CDN服务需要支付一定的费用。那么&#xff0c;有没有免费的CDN加速服务…

高效排队,紧急响应:RabbitMQ Priority Queue全面指南【RabbitMQ 九】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 高效排队&#xff0c;紧急响应&#xff1a;RabbitMQ Priority Queue全面指南 引言前言第一&#xff1a;初识RabbitMQ Priority Queue插件插件的背景和目的&#xff1a;为什么需要消息优先级&#xff1…

我的NPI项目之Android 安全系列 -- Google Wallet and Secure Element(SE)

随着电子支付的兴起&#xff0c;越来越多的支付方式出现在我们的生活中。其中就有基于NFC的“碰一碰”的支付&#xff0c;支付宝的“扫一扫”支付&#xff0c;我们还知道有Google Pay(Wallet), Apple Pay(Wallet)。作为Android BSP的开发者&#xff0c;我比较关心的是Google Pa…

AI助力DevOps新时代

根据2023年Gitlab全球DevSecOps报告&#xff0c;62%使用AI和ML的开发人员表示他们正在使用AI来检查代码&#xff0c;而2022年这一比例只有51%。 人工智能在 DevOps 中的作用 虽然今年年初&#xff0c;随着GPT的爆火&#xff0c;AI技术逐渐深入人心&#xff0c;但在很早以前&…

maven常用命令

Maven (mvn) 是一个用于构建和管理 Java 项目的强大工具。以下是一些常见的 Maven 命令&#xff1a; mvn clean: 清理项目&#xff0c;删除 target 目录及其内容。 mvn compile: 编译项目源代码。 mvn test: 运行项目的单元测试。 mvn package: 打包项目&#xff0c;生成 J…

洛谷题单【算法1-7】搜索

P1135 奇怪的电梯 一开始以为深搜肯定没问题&#xff0c;从a点出发&#xff0c;衍生出一个二叉树&#xff0c;遍历所有情况就好了&#xff0c;但是会重复&#xff0c;所以加了一个vis防止重复&#xff0c;但是只拿了64pts&#xff0c;因为有可能某个点并不是最短被到达的&…

Processon的使用以及流程图的绘制

目录 一、ProcessOn 1.2 官方网站 门诊流程图 会议OA流程图 药库采购入库流程图 ​住院流程图 二、Axure自定义元件库 2.1 新建元件库 2.2 自定义元件 2.3 添加元件库 一、ProcessOn ProcessOn是一款在线的流程图、思维导图、组织结构图、网络拓扑图等多种图表类型…

Android Studio(Flutter)常用快捷键

快捷键说明Ctrl Alt M抽取方法Ctrl Alt W抽取组件Alt Enter包裹组件Shift F6重命名Ctrl Alt L代码格式化Ctrl Alt O删除无用importCtrl X删除光标所在行Ctrl D复制一行代码Ctrl C复制Ctrl V粘贴Ctrl Z撤销Ctrl /注释一行代码Ctrl Shift /注释一段代码Ctrl S…

2020年第九届数学建模国际赛小美赛A题自由泳解题全过程文档及程序

2020年第九届数学建模国际赛小美赛 A题 自由泳 原题再现&#xff1a; 在所有常见的游泳泳姿中&#xff0c;哪一种最快&#xff1f;哪个冲程推力最大&#xff1f;在自由泳项目中&#xff0c;游泳者可以选择他们的泳姿&#xff0c;他们通常选择前面的爬行。然而&#xff0c;游泳…