当前位置: 首页 > 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…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...