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

easyexcel==省市区三级联动

省市区三级联动,不选前面的就没法选后面的

package com.example.demoeasyexcel.jilian2;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddressList;
import com.alibaba.excel.write.handler.SheetWriteHandler;import java.util.List;
import java.util.Map;public class CascadeWriteHandler2 implements SheetWriteHandler {private List<String> provinceList; // 省份列表private Map<String, List<String>> cityMap; // 省份与城市的映射private Map<String, List<String>> districtMap; // 城市与区的映射public CascadeWriteHandler2(List<String> provinceList, Map<String, List<String>> cityMap, Map<String, List<String>> districtMap) {this.provinceList = provinceList;this.cityMap = cityMap;this.districtMap = districtMap;}@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {// 此处代码在创建Sheet前,通常为空}@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Workbook workbook = writeWorkbookHolder.getWorkbook();Sheet sheet = writeSheetHolder.getSheet();// 创建一个隐藏的Sheet存放省市区数据Sheet hideSheet = workbook.createSheet("siteInfo");workbook.setSheetHidden(workbook.getSheetIndex(hideSheet), true);// 设置省份数据int rowNum = 0;Row provinceRow = hideSheet.createRow(rowNum++);provinceRow.createCell(0).setCellValue("省份列表");for (int i = 0; i < provinceList.size(); i++) {provinceRow.createCell(i + 1).setCellValue(provinceList.get(i));}// 设置城市数据for (String province : provinceList) {List<String> cities = cityMap.get(province);Row cityRow = hideSheet.createRow(rowNum++);cityRow.createCell(0).setCellValue(province);for (int i = 0; i < cities.size(); i++) {cityRow.createCell(i + 1).setCellValue(cities.get(i));}Name cityRangeName = workbook.createName();cityRangeName.setNameName(province);String cityRange = getRange(1, rowNum, cities.size());cityRangeName.setRefersToFormula("siteInfo!" + cityRange);}// 设置区数据for (String city : cityMap.values().stream().flatMap(List::stream).toArray(String[]::new)) {List<String> districts = districtMap.get(city);Row districtRow = hideSheet.createRow(rowNum++);districtRow.createCell(0).setCellValue(city);for (int i = 0; i < districts.size(); i++) {districtRow.createCell(i + 1).setCellValue(districts.get(i));}Name districtRangeName = workbook.createName();districtRangeName.setNameName(city);String districtRange = getRange(1, rowNum, districts.size());districtRangeName.setRefersToFormula("siteInfo!" + districtRange);}// 设置数据验证DataValidationHelper dvHelper = sheet.getDataValidationHelper();DataValidationConstraint provinceConstraint = dvHelper.createExplicitListConstraint(provinceList.toArray(new String[0]));CellRangeAddressList provinceRangeAddressList = new CellRangeAddressList(1, 999, 0, 0);setValidation(sheet, dvHelper, provinceConstraint, provinceRangeAddressList);// 城市数据验证for (int i = 2; i < 1000; i++) {DataValidationConstraint cityConstraint = dvHelper.createFormulaListConstraint("INDIRECT($A$" + i + ")");CellRangeAddressList cityRangeAddressList = new CellRangeAddressList(i - 1, i - 1, 1, 1);setValidation(sheet, dvHelper, cityConstraint, cityRangeAddressList);}// 区数据验证for (int i = 2; i < 1000; i++) {DataValidationConstraint districtConstraint = dvHelper.createFormulaListConstraint("INDIRECT($B$" + i + ")");CellRangeAddressList districtRangeAddressList = new CellRangeAddressList(i - 1, i - 1, 2, 2);setValidation(sheet, dvHelper, districtConstraint, districtRangeAddressList);}}private void setValidation(Sheet sheet, DataValidationHelper helper, DataValidationConstraint constraint, CellRangeAddressList addressList) {DataValidation validation = helper.createValidation(constraint, addressList);validation.setErrorStyle(DataValidation.ErrorStyle.STOP);validation.setShowErrorBox(true);validation.setSuppressDropDownArrow(true);sheet.addValidationData(validation);}public String getRange(int offset, int rowId, int colCount) {char start = (char) ('A' + offset);if (colCount <= 25) {char end = (char) (start + colCount - 1);return "$" + start + "$" + rowId + ":$" + end + "$" + rowId;} else {char endPrefix = 'A';char endSuffix = 'A';if ((colCount - 25) / 26 == 0 || colCount == 51) {// 26-51之间,包括边界(仅两次字母表计算)if ((colCount - 25) % 26 == 0) {// 边界值endSuffix = (char) ('A' + 25);} else {endSuffix = (char) ('A' + (colCount - 25) % 26 - 1);}} else {// 51以上if ((colCount - 25) % 26 == 0) {endSuffix = (char) ('A' + 25);endPrefix = (char) (endPrefix + (colCount - 25) / 26 - 1);} else {endSuffix = (char) ('A' + (colCount - 25) % 26 - 1);endPrefix = (char) (endPrefix + (colCount - 25) / 26);}}return "$" + start + "$" + rowId + ":$" + endPrefix + endSuffix + "$" + rowId;}}
}
package com.example.demoeasyexcel.jilian2;import com.alibaba.excel.EasyExcel;
import com.example.demoeasyexcel.jilian.CascadeVO;import java.io.File;
import java.util.*;public class Test22 {public static void main(String[] args) {List<CascadeVO> dataList = new ArrayList<>();/// 准备省市aqu测试数据List<String> provinceList = Arrays.asList("apro1", "apro2", "apro3");Map<String, List<String>> cityMap = new HashMap<>();cityMap.put("apro1", Arrays.asList("acity11", "acity12"));cityMap.put("apro2", Arrays.asList("acity21", "acity22"));cityMap.put("apro3", Arrays.asList("acity31", "acity32"));Map<String, List<String>> districtMap = new HashMap<>();districtMap.put("acity11", Arrays.asList("aqu111", "aqu112"));districtMap.put("acity12", Arrays.asList("aqu121", "aqu122"));districtMap.put("acity21", Arrays.asList("aqu211", "aq212"));districtMap.put("acity22", Arrays.asList("aqu221", "aqu222"));districtMap.put("acity31", Arrays.asList("aqu311", "aqu312"));districtMap.put("acity32", Arrays.asList("aqu321", "aqu322"));// 创建写入的SheetFile file = new File("D:\\data\\test.xlsx");EasyExcel.write(file, CascadeVO.class).sheet("sheet1").registerWriteHandler(new CascadeWriteHandler2(provinceList, cityMap, districtMap)).doWrite(dataList);}
}

再添加第四列,第四列的下拉不受到级联的影响

package com.example.demoeasyexcel.jilian3;import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import com.alibaba.excel.write.handler.SheetWriteHandler;import java.util.List;
import java.util.Map;public class CascadeWriteHandler3 implements SheetWriteHandler {private List<String> provinceList; // 省份列表private Map<String, List<String>> cityMap; // 省份与城市的映射private Map<String, List<String>> districtMap; // 城市与区的映射private String[] contactTypes = new String[]{"手机", "座机", "呼机"}; //public CascadeWriteHandler3(List<String> provinceList, Map<String, List<String>> cityMap, Map<String, List<String>> districtMap) {this.provinceList = provinceList;this.cityMap = cityMap;this.districtMap = districtMap;}@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {// 此处代码在创建Sheet前,通常为空}@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Workbook workbook = writeWorkbookHolder.getWorkbook();Sheet sheet = writeSheetHolder.getSheet();// 创建一个隐藏的Sheet存放省市区数据Sheet hideSheet = workbook.createSheet("siteInfo");workbook.setSheetHidden(workbook.getSheetIndex(hideSheet), true);// 设置省份数据int rowNum = 0;Row provinceRow = hideSheet.createRow(rowNum++);provinceRow.createCell(0).setCellValue("省份列表");for (int i = 0; i < provinceList.size(); i++) {provinceRow.createCell(i + 1).setCellValue(provinceList.get(i));}// 设置城市数据for (String province : provinceList) {List<String> cities = cityMap.get(province);Row cityRow = hideSheet.createRow(rowNum++);cityRow.createCell(0).setCellValue(province);for (int i = 0; i < cities.size(); i++) {cityRow.createCell(i + 1).setCellValue(cities.get(i));}Name cityRangeName = workbook.createName();cityRangeName.setNameName(province);String cityRange = getRange(1, rowNum, cities.size());cityRangeName.setRefersToFormula("siteInfo!" + cityRange);}// 设置区数据for (String city : cityMap.values().stream().flatMap(List::stream).toArray(String[]::new)) {List<String> districts = districtMap.get(city);Row districtRow = hideSheet.createRow(rowNum++);districtRow.createCell(0).setCellValue(city);for (int i = 0; i < districts.size(); i++) {districtRow.createCell(i + 1).setCellValue(districts.get(i));}Name districtRangeName = workbook.createName();districtRangeName.setNameName(city);String districtRange = getRange(1, rowNum, districts.size());districtRangeName.setRefersToFormula("siteInfo!" + districtRange);}// 设置数据验证DataValidationHelper dvHelper = sheet.getDataValidationHelper();DataValidationConstraint provinceConstraint = dvHelper.createExplicitListConstraint(provinceList.toArray(new String[0]));CellRangeAddressList provinceRangeAddressList = new CellRangeAddressList(1, 999, 0, 0);setValidation(sheet, dvHelper, provinceConstraint, provinceRangeAddressList);// 城市数据验证for (int i = 2; i < 1000; i++) {DataValidationConstraint cityConstraint = dvHelper.createFormulaListConstraint("INDIRECT($A$" + i + ")");CellRangeAddressList cityRangeAddressList = new CellRangeAddressList(i - 1, i - 1, 1, 1);setValidation(sheet, dvHelper, cityConstraint, cityRangeAddressList);}// 区数据验证for (int i = 2; i < 1000; i++) {DataValidationConstraint districtConstraint = dvHelper.createFormulaListConstraint("INDIRECT($B$" + i + ")");CellRangeAddressList districtRangeAddressList = new CellRangeAddressList(i - 1, i - 1, 2, 2);setValidation(sheet, dvHelper, districtConstraint, districtRangeAddressList);}// 新增联系方式的数据验证DataValidationConstraint contactTypeConstraint = dvHelper.createExplicitListConstraint(contactTypes);CellRangeAddressList contactTypeRangeAddressList = new CellRangeAddressList(2, 999, 3, 3);setValidation(sheet, dvHelper, contactTypeConstraint, contactTypeRangeAddressList);}private void setValidation(Sheet sheet, DataValidationHelper helper, DataValidationConstraint constraint, CellRangeAddressList addressList) {DataValidation validation = helper.createValidation(constraint, addressList);validation.setErrorStyle(DataValidation.ErrorStyle.STOP);validation.setShowErrorBox(true);validation.setSuppressDropDownArrow(true);sheet.addValidationData(validation);}public String getRange(int offset, int rowId, int colCount) {char start = (char) ('A' + offset);if (colCount <= 25) {char end = (char) (start + colCount - 1);return "$" + start + "$" + rowId + ":$" + end + "$" + rowId;} else {char endPrefix = 'A';char endSuffix = 'A';if ((colCount - 25) / 26 == 0 || colCount == 51) {// 26-51之间,包括边界(仅两次字母表计算)if ((colCount - 25) % 26 == 0) {// 边界值endSuffix = (char) ('A' + 25);} else {endSuffix = (char) ('A' + (colCount - 25) % 26 - 1);}} else {// 51以上if ((colCount - 25) % 26 == 0) {endSuffix = (char) ('A' + 25);endPrefix = (char) (endPrefix + (colCount - 25) / 26 - 1);} else {endSuffix = (char) ('A' + (colCount - 25) % 26 - 1);endPrefix = (char) (endPrefix + (colCount - 25) / 26);}}return "$" + start + "$" + rowId + ":$" + endPrefix + endSuffix + "$" + rowId;}}
}

再添加个表头

package com.example.demoeasyexcel.jilian3;import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import com.alibaba.excel.write.handler.SheetWriteHandler;import java.util.List;
import java.util.Map;public class CascadeWriteHandler3 implements SheetWriteHandler {private List<String> provinceList; // 省份列表private Map<String, List<String>> cityMap; // 省份与城市的映射private Map<String, List<String>> districtMap; // 城市与区的映射private String[] contactTypes = new String[]{"手机", "座机", "呼机"}; //public CascadeWriteHandler3(List<String> provinceList, Map<String, List<String>> cityMap, Map<String, List<String>> districtMap) {this.provinceList = provinceList;this.cityMap = cityMap;this.districtMap = districtMap;}@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {// 此处代码在创建Sheet前,通常为空}@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Workbook workbook = writeWorkbookHolder.getWorkbook();Sheet sheet = writeSheetHolder.getSheet();// 创建标题行并合并单元格Row titleRow = sheet.createRow(0); // 创建第一行作为标题行titleRow.setHeightInPoints(2 * sheet.getDefaultRowHeightInPoints()); // 设置行高为默认的两倍Cell titleCell = titleRow.createCell(0); // 在第一行第一个单元格中设置标题titleCell.setCellValue("人员信息\n完整的"); // 设置标题内容,并添加换行// 设置单元格样式为左对齐并自动换行CellStyle titleStyle = workbook.createCellStyle();titleStyle.setAlignment(HorizontalAlignment.LEFT); // 设置水平对齐为左对齐titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置垂直对齐为居中titleStyle.setWrapText(true); // 设置自动换行titleCell.setCellStyle(titleStyle); // 应用样式到单元格// 合并标题行的单元格sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));// 设置列标题Row headerRow = sheet.createRow(1);headerRow.createCell(0).setCellValue("省");headerRow.createCell(1).setCellValue("市");headerRow.createCell(2).setCellValue("区");headerRow.createCell(3).setCellValue("联系方式");// 设置列宽以便显示标题sheet.setColumnWidth(0, 256 * 16); // 设置"省"的列宽sheet.setColumnWidth(1, 256 * 16); // 设置"市"的列宽sheet.setColumnWidth(2, 256 * 16); // 设置"区"的列宽sheet.setColumnWidth(3, 256 * 16); // 设置"联系方式"的列宽// 创建隐藏的Sheet存放省市区数据Sheet hideSheet = workbook.createSheet("siteInfo");workbook.setSheetHidden(workbook.getSheetIndex(hideSheet), true);// 省份列表处理逻辑int rowNum = 0;Row provinceRow = hideSheet.createRow(rowNum++);provinceRow.createCell(0).setCellValue("省份列表");for (int i = 0; i < provinceList.size(); i++) {provinceRow.createCell(i + 1).setCellValue(provinceList.get(i));}// 城市列表处理逻辑for (String province : provinceList) {List<String> cities = cityMap.get(province);Row cityRow = hideSheet.createRow(rowNum++);cityRow.createCell(0).setCellValue(province);for (int i = 0; i < cities.size(); i++) {cityRow.createCell(i + 1).setCellValue(cities.get(i));}Name cityRangeName = workbook.createName();cityRangeName.setNameName(province);String cityRange = getRange(1, rowNum, cities.size());cityRangeName.setRefersToFormula("siteInfo!" + cityRange);}// 区列表处理逻辑for (String city : cityMap.values().stream().flatMap(List::stream).toArray(String[]::new)) {List<String> districts = districtMap.get(city);Row districtRow = hideSheet.createRow(rowNum++);districtRow.createCell(0).setCellValue(city);for (int i = 0; i < districts.size(); i++) {districtRow.createCell(i + 1).setCellValue(districts.get(i));}Name districtRangeName = workbook.createName();districtRangeName.setNameName(city);String districtRange = getRange(1, rowNum, districts.size());districtRangeName.setRefersToFormula("siteInfo!" + districtRange);}// 省份数据验证DataValidationHelper dvHelper = sheet.getDataValidationHelper();DataValidationConstraint provinceConstraint = dvHelper.createExplicitListConstraint(provinceList.toArray(new String[0]));CellRangeAddressList provinceRangeAddressList = new CellRangeAddressList(2, 1000, 0, 0);setValidation(sheet, dvHelper, provinceConstraint, provinceRangeAddressList);// 城市数据验证for (int i = 3; i <= 1000; i++) {DataValidationConstraint cityConstraint = dvHelper.createFormulaListConstraint("INDIRECT($A$" + i + ")");CellRangeAddressList cityRangeAddressList = new CellRangeAddressList(i - 1, i - 1, 1, 1);setValidation(sheet, dvHelper, cityConstraint, cityRangeAddressList);}// 区数据验证for (int i = 3; i <= 1000; i++) {DataValidationConstraint districtConstraint = dvHelper.createFormulaListConstraint("INDIRECT($B$" + i + ")");CellRangeAddressList districtRangeAddressList = new CellRangeAddressList(i - 1, i - 1, 2, 2);setValidation(sheet, dvHelper, districtConstraint, districtRangeAddressList);}// 联系方式数据验证DataValidationConstraint contactTypeConstraint = dvHelper.createExplicitListConstraint(new String[]{"手机", "座机", "呼机"});CellRangeAddressList contactTypeRangeAddressList = new CellRangeAddressList(2, 1000, 3, 3);setValidation(sheet, dvHelper, contactTypeConstraint, contactTypeRangeAddressList);}// 其他辅助方法和类成员不变private void setValidation(Sheet sheet, DataValidationHelper helper, DataValidationConstraint constraint, CellRangeAddressList addressList) {DataValidation validation = helper.createValidation(constraint, addressList);validation.setErrorStyle(DataValidation.ErrorStyle.STOP);validation.setShowErrorBox(true);validation.setSuppressDropDownArrow(true);sheet.addValidationData(validation);}public String getRange(int offset, int rowId, int colCount) {char start = (char) ('A' + offset);if (colCount <= 25) {char end = (char) (start + colCount - 1);return "$" + start + "$" + rowId + ":$" + end + "$" + rowId;} else {char endPrefix = 'A';char endSuffix = 'A';if ((colCount - 25) / 26 == 0 || colCount == 51) {// 26-51之间,包括边界(仅两次字母表计算)if ((colCount - 25) % 26 == 0) {// 边界值endSuffix = (char) ('A' + 25);} else {endSuffix = (char) ('A' + (colCount - 25) % 26 - 1);}} else {// 51以上if ((colCount - 25) % 26 == 0) {endSuffix = (char) ('A' + 25);endPrefix = (char) (endPrefix + (colCount - 25) / 26 - 1);} else {endSuffix = (char) ('A' + (colCount - 25) % 26 - 1);endPrefix = (char) (endPrefix + (colCount - 25) / 26);}}return "$" + start + "$" + rowId + ":$" + endPrefix + endSuffix + "$" + rowId;}}
}
package com.example.demoeasyexcel.jilian3;import com.alibaba.excel.EasyExcel;
import com.example.demoeasyexcel.jilian.CascadeVO;
import com.example.demoeasyexcel.jilian2.CascadeWriteHandler2;import java.io.File;
import java.util.*;public class Test33 {public static void main(String[] args) {List<CascadeVO> dataList = new ArrayList<>();/// 准备省市aqu测试数据List<String> provinceList = Arrays.asList("apro1", "apro2", "apro3");Map<String, List<String>> cityMap = new HashMap<>();cityMap.put("apro1", Arrays.asList("acity11", "acity12"));cityMap.put("apro2", Arrays.asList("acity21", "acity22"));cityMap.put("apro3", Arrays.asList("acity31", "acity32"));Map<String, List<String>> districtMap = new HashMap<>();districtMap.put("acity11", Arrays.asList("aqu111", "aqu112"));districtMap.put("acity12", Arrays.asList("aqu121", "aqu122"));districtMap.put("acity21", Arrays.asList("aqu211", "aq212"));districtMap.put("acity22", Arrays.asList("aqu221", "aqu222"));districtMap.put("acity31", Arrays.asList("aqu311", "aqu312"));districtMap.put("acity32", Arrays.asList("aqu321", "aqu322"));// 创建写入的SheetFile file = new File("D:\\data\\test.xlsx");EasyExcel.write(file).sheet("sheet1").registerWriteHandler(new CascadeWriteHandler3(provinceList, cityMap, districtMap)).doWrite(dataList);}
}

相关文章:

easyexcel==省市区三级联动

省市区三级联动&#xff0c;不选前面的就没法选后面的 package com.example.demoeasyexcel.jilian2; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; import org.apache.poi.ss.use…...

Linux进程控制(二)--进程等待(一)

前言&#xff1a;之前我们讲过&#xff0c;子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内存泄漏。 另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;就连 kill -9 也无能为力&#xff0…...

【C++】C++11常用特性梳理

C11特性梳理 1. 列表初始化2. auto & decltype3. 右值引用3.1. 左右值引用比较3.2. 右值引用的意义3.3. 万能引用与完美转发3.4. 移动构造与移动赋值 4. default & delete5. 可变参数模板6. push_back 与 emplace_back7. lambda表达式7.1. 捕捉列表 8. function包装器8…...

修改iframe生成的pdf的比例

如图想要设置这里的默认比例 在iframe连接后面加上#zoom50即可&#xff0c;50是可以随便设置的&#xff0c;设置多少就是多少比例 <iframe src"name.pdf#zoom50" height"100%" width"100%"></iframe>...

C++之list的用法介绍

C之list的用法介绍 1&#xff09;定义和初始化&#xff1a; #include <list> std::list<int> my_list; // 定义一个整数类型的list std::list<std::string> my_other_list {"apple", "banana", "cherry"}; // 初始化一个…...

Mybatis-plus 内部提供的 ServiceImpl<M extends BaseMapper<T>, T> 学习总结

作用 当集成Mybatis-Plus 后&#xff0c;我们的大部分数据库操作都可以通过 XxxxxMapper &#xff0c;同时 Mybatis-plus 在Mapper 提供基本操作方法的同时&#xff0c;也提供类基础的 serviceImpl 来帮助我们完成一些常见的基本操作。 使用 一般情况下&#xff0c;我们首先…...

yolov5 利用Labelimg对图片进行标注

首先打开yolov5-master&#xff0c;在data文件中新建一个文件夹来存放你需要跑的数据&#xff0c;例如我这次跑的是羽毛球&#xff0c;文件把文件取名为badminton。使用其他文件夹例如images也可以&#xff0c;就是跑多了以后不好整理&#xff0c;然后点击 选中刚刚你存放数据的…...

完整版付费进群带定位源码

看到别人发那些不是挂羊头卖狗肉&#xff0c;要么就是发的缺少文件引流的。恶心的一P 这源码是我付费花钱买的分享给大家&#xff0c;功能完整。 搭建教程 nginx1.2 php5.6--7.2均可 最好是7.2 第一步上传文件程序到网站根目录解压 第二步导入数据库&#xff08;shujuk…...

华为L410上制作内网镜像模板01

原文链接&#xff1a;华为L410上制作离线安装软件模板01 hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇在内网搭建Apache服务器&#xff0c;用于安装完内网操作系统后&#xff0c;在第一次开机时候&#xff0c;为系统安装软件&#xff0c;今天给大家用WeChat举例&a…...

linuxC语言缓冲区及小程序的实现

文章目录 1.文件缓冲区1.1介绍1.2缓冲文件系统1.3冲刷函数fflush1.4认识linux下的缓冲区 2.linux小程序的实现2.1 回车\r和换行\n2.2倒计时程序2.3进度条小程序sleep/usleep代码运行结果 1.文件缓冲区 1.1介绍 为缓和 CPU 与 I/O 设备之间速度不匹配&#xff0c;文件缓冲区用以…...

MySQL数据库基本操作-DDL 数据库基础知识

目录标题 1、数据库操作1-1 查询所有数据库1-2 创建数据库1-3 选择使用那个数据库1-4 删除数据库 2、数据库表操作2-1 创建数据库表2-2 查看当前数据库所有表名称2-3 查看指定某个表的创建语句2-4 查看表结构2-5 删除表 3、修改表结构格式3-1 修改表添加列3-2 修改列名和类名3-…...

基于JavaWeb+SpringBoot+Vue摩托车商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue摩托车商城微信小程序系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 近年来&#xff0c;随着移动互联网的快速发展&#xff0c;电子商务越来越受到…...

idea代码快捷键Mac版

1、查询任何东西 双击 Shift2、文件内查找 Command F 3、文件内替换 Command R4、全局查找&#xff08;根据路径&#xff09; Command Shift F5、在当前文件跳转到某一行的指定处 Command L6、退回 / 前进到上一个操作的地方 Command Option 方向键左Command Opt…...

分享76个Python管理系统源代码总有一个是你想要的

分享76个Python管理系统源代码总有一个是你想要的 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 下载链接&#xff1a;https://pan.baidu.com/s/1JtcEHG9m8ro4-dc29kVyDg?pwd8888 提取码&#xff1a;8888 项目名称 A simpl…...

Springboot养老院信息管理系统的开发-计算机毕设 附源码27500

Springboot养老院信息管理系统的开发 摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;…...

在虚拟机中安装vim和net-tools,mysql

首先在虚拟机中创建vim目录 sudo mkdir -p /home/user/tools/vim然后开始进行安装 yum install vim -yyum install net-toolsmysql参考链接 安装mysql在虚拟机中...

【Excel】函数sumif范围中符合指定条件的值求和

SUMIF函数是Excel常用函数。使用 SUMIF 函数可以对报表范围中符合指定条件的值求和。 Excel中sumif函数的用法是根据指定条件对若干单元格、区域或引用求和。 sumif函数语法是&#xff1a;SUMIF(range&#xff0c;criteria&#xff0c;sum_range) sumif函数的参数如下&#xff…...

k8s上对Pod的管理部分详解

目录 一.Pod结构介绍 1.user container 2.pause 二.Pod工作形式介绍 1.自主式pod 2.控制器管理下的pod 三.对Pod的操作介绍 1.run/apply -f/create -f运行pod 2.get查看pod信息 3.exec操作运行中的pod &#xff08;1&#xff09;进入运行中的pod &#xff08;2&…...

4.4.2 结构可以将 string类作为成员吗

// structure template { }; 4.4.2 结构可以将 string类作为成员吗 可以将成员name指定为string类对象而不是字符数组吗?即可以像下面这样声明结构吗? #include <string> struct inflatable std :: string name; float volume; double price; 大体上说,答案是肯定的。实…...

npm install 安装总结

npm install moduleName 会把moduleName 包安装到node_modules目录中不会修改package.json之后运行npm install命令时&#xff0c;不会自动安装moduleName npm install moduleName -g 安装模块到全局&#xff0c;不会在项目node_modules目录中保存模块包。不会将模块依赖写入de…...

CN3166 符合 JEITA 标准可用太阳能供电的锂电池充电管理芯片

概述&#xff1a; CN3166是可以用太阳能供电的单节锂电池充电管理芯片。该器件内部包括功率晶体管&#xff0c;不需要外 部的电流检测电阻和阻流二极管。内部的充电电流自适应模块能够根据输入电源的电流输出能力 自动调整充电电流&#xff0c;用户不需要考虑最坏情况&#xff…...

行业词典融入:提升gte-base-zh在垂直领域的语义理解

行业词典融入&#xff1a;提升gte-base-zh在垂直领域的语义理解 最近在做一个金融领域的智能问答项目&#xff0c;用到了gte-base-zh这个中文通用文本嵌入模型。模型本身效果不错&#xff0c;但一遇到“量化宽松”、“M2增速”、“同业存单”这类专业术语&#xff0c;语义抓取…...

从零构建数据可视化大屏:SpringBoot后端与ECharts前端的交互实践

1. 环境准备与项目初始化 第一次接触数据可视化大屏开发时&#xff0c;我被各种技术名词绕得头晕。后来发现&#xff0c;其实只要把SpringBoot和ECharts这两个核心工具准备好&#xff0c;后面的路就顺畅多了。这里我分享下最省心的环境搭建方案。 开发工具我强烈推荐IntelliJ I…...

移相全桥变换器原理及优缺点

一、引言在中大功率 DC-DC 变换领域&#xff08;100W~10kW&#xff09;&#xff0c;移相全桥&#xff08;Phase-Shifted Full-Bridge, PSFB&#xff09;变换器凭借软开关特性、高效率、高功率密度、低电磁干扰等优势&#xff0c;成为当之无愧的主流拓扑。它完美解决了硬开关全桥…...

Context Engineering:比Prompt Engineering更重要的AI任务构建秘籍!

Context Engineering是一门设计和构建动态系统的学科&#xff0c;旨在为LLM提供适时、适格、适切的信息和工具&#xff0c;以高效完成任务。它与Prompt Engineering的区别在于&#xff0c;后者关注提示词编写&#xff0c;前者则侧重完整的信息供给系统构建。Context Engineerin…...

GBase数据库助力某大型再保险机构核心系统替换案例介绍

保险行业的关联交易、档案管理、数据服务&#xff0c;背后都离不开数据库的稳定支撑。某大型再保险机构原本采用开源数据库搭建核心系统&#xff0c;随着业务发展和安全要求提升&#xff0c;决定全面替换为国产数据库。南大通用基于共享存储的数据库集群GBase 8s&#xff08;gb…...

如何用roop-unleashed快速制作高质量AI换脸视频:完整入门指南

如何用roop-unleashed快速制作高质量AI换脸视频&#xff1a;完整入门指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要在几分钟内制作出专业级AI换脸…...

Unity学习90天-第7天-学习委托与事件(简化版)

欢迎回来&#xff01; 今天我们来搞定理解委托和事件的核心概念&#xff0c;用"受伤、得分、游戏结束"三个游戏场景掌握解耦思路&#xff01;一、为什么要用事件&#xff1f;先看"耦合"的痛点假设玩家受伤时&#xff0c;需要同时做三件事&#xff1a;、玩家…...

5分钟免费解锁Cursor AI Pro完整功能:开发者必备的高效解决方案

5分钟免费解锁Cursor AI Pro完整功能&#xff1a;开发者必备的高效解决方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached…...

3分钟完成系统优化:Winhance让你的Windows电脑重获新生

3分钟完成系统优化&#xff1a;Winhance让你的Windows电脑重获新生 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-z…...