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==省市区三级联动
省市区三级联动,不选前面的就没法选后面的 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进程控制(二)--进程等待(一)
前言:之前我们讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。 另外,进程一旦变成僵尸状态,那就刀枪不入,就连 kill -9 也无能为力࿰…...
【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即可,50是可以随便设置的,设置多少就是多少比例 <iframe src"name.pdf#zoom50" height"100%" width"100%"></iframe>...
C++之list的用法介绍
C之list的用法介绍 1)定义和初始化: #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 后,我们的大部分数据库操作都可以通过 XxxxxMapper ,同时 Mybatis-plus 在Mapper 提供基本操作方法的同时,也提供类基础的 serviceImpl 来帮助我们完成一些常见的基本操作。 使用 一般情况下,我们首先…...
yolov5 利用Labelimg对图片进行标注
首先打开yolov5-master,在data文件中新建一个文件夹来存放你需要跑的数据,例如我这次跑的是羽毛球,文件把文件取名为badminton。使用其他文件夹例如images也可以,就是跑多了以后不好整理,然后点击 选中刚刚你存放数据的…...
完整版付费进群带定位源码
看到别人发那些不是挂羊头卖狗肉,要么就是发的缺少文件引流的。恶心的一P 这源码是我付费花钱买的分享给大家,功能完整。 搭建教程 nginx1.2 php5.6--7.2均可 最好是7.2 第一步上传文件程序到网站根目录解压 第二步导入数据库(shujuk…...
华为L410上制作内网镜像模板01
原文链接:华为L410上制作离线安装软件模板01 hello,大家好啊,今天给大家带来一篇在内网搭建Apache服务器,用于安装完内网操作系统后,在第一次开机时候,为系统安装软件,今天给大家用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 设备之间速度不匹配,文件缓冲区用以…...
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套》 源码获取 源码传送入口 前言 近年来,随着移动互联网的快速发展,电子商务越来越受到…...
idea代码快捷键Mac版
1、查询任何东西 双击 Shift2、文件内查找 Command F 3、文件内替换 Command R4、全局查找(根据路径) Command Shift F5、在当前文件跳转到某一行的指定处 Command L6、退回 / 前进到上一个操作的地方 Command Option 方向键左Command Opt…...
分享76个Python管理系统源代码总有一个是你想要的
分享76个Python管理系统源代码总有一个是你想要的 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 下载链接:https://pan.baidu.com/s/1JtcEHG9m8ro4-dc29kVyDg?pwd8888 提取码:8888 项目名称 A simpl…...
Springboot养老院信息管理系统的开发-计算机毕设 附源码27500
Springboot养老院信息管理系统的开发 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,…...
在虚拟机中安装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函数语法是:SUMIF(range,criteria,sum_range) sumif函数的参数如下ÿ…...
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 (1)进入运行中的pod (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命令时,不会自动安装moduleName npm install moduleName -g 安装模块到全局,不会在项目node_modules目录中保存模块包。不会将模块依赖写入de…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
用 FFmpeg 实现 RTMP 推流直播
RTMP(Real-Time Messaging Protocol) 是直播行业中常用的传输协议。 一般来说,直播服务商会给你: ✅ 一个 RTMP 推流地址(你推视频上去) ✅ 一个 HLS 或 FLV 拉流地址(观众观看用)…...
