怎么使用java Poi解决导入excel表格大数据量时的内存溢出问???大神们,帮帮我。

public String admin_product_list() {
// System.out.println("myFileFileName "+myFileFileName);
String path = "";
String name = "";
String realpath = "";
String afterfilename = "";
drlogbean = new Daorulog();
int daorutiaoshu = 0;
String oldfilename = "";
int rowaccess=2;
try {
if (myFileFileName != null && !myFileFileName.equals("")) {

            oldfilename = myFileFileName;
            String b[] = oldfilename.split("\\.");
            // 设置上传文件目录

            String filePath = ServletActionContext.getServletContext().getRealPath("/upload");
            // 基于myFile创建文件输入流
            InputStream is = new FileInputStream(myFile);
            String a[] = myFileFileName.split("\\.");
            // System.out.println("上传文件名:"+a[0]+"上传文件类型:"+a[1]);
            // 设置目标文件
            DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            Date date = new Date();
            String strdf = df.format(date).toString();
            name = "upload/" + b[0] + "_" + strdf + "." + a[1];
            File toFile = new File(filePath, b[0] + "_" + df.format(date).toString() + "." + a[1]);
            path = filePath + "\\" + name;
            // System.out.println(path);
            // 创建一个输出流
            OutputStream os = new FileOutputStream(toFile);
            // OutputStream bos = new
            // FileOutputStream(filePath);//建立一个上传文件的输出流
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);// 将文件写入服务器
            }
            realpath = filePath + "\\" + b[0] + "_" + strdf + "." + a[1];
            afterfilename = b[0] + "_" + strdf + "." + a[1];
            System.out.println("realpath " + realpath);
            System.out.println("sourseTypeName " + sourseTypeName);
            InputStream is2 = new FileInputStream(realpath);
            fileRealName = realpath;
            SXSSWorkbook workbook =new SXSSFWorkbook(rowaccess);
            Sheet sheet = workbook.getSheetAt(0);
            Row row = sheet.getRow(headerRow);
            int lastCellNum = row.getLastCellNum();
            for (int i = 0; i < lastCellNum; i++) {
                if (row.getCell(i) == null || row.getCell(i).toString() == null)
                    continue;
                cellMap.put(i, row.getCell(i).toString());
            }
            //每当行数达到设置的值就刷新数据到硬盘,以清理内存
            if(i/rowaccess==0){
                System.out.println("清除缓存重新输入");
                //sheet.flushRows();
                ((SXSSFSheet)sh).flushRows();
            }
            dwzdlist = productDAO.findAlldanweizidianList();

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    malist = productDAO.findAlldanweiList();

    return "importStep2";
}

/**
 * 单位码表类型
 * 
 * @return
 */
public String admin_find_danweizidian() {
    return "danweizidian";
}

// =============================2016-05-12 end
public String importPreview() {
    int introwaccess=2;//内存中缓存记录行数
    //System.out.println(kuozhan1);
    try {
        InputStream is2 = new FileInputStream(fileRealName);
         SXSSFWorkbook workbook = new SXSSFWorkbook(introwaccess);
        Sheet sheet = workbook.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        List<ResourceImport> riList = new ArrayList<ResourceImport>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for (int i = firstDataRow; i < lastRowNum+1; i++) {
            Row row = sheet.getRow(i);
            ResourceImport ri = new ResourceImport();

            // 非标准的详细地址
            String nsAddress = "";
            if (row.getCell(xiangxiaddress) != null) {
                nsAddress = row.getCell(xiangxiaddress).toString();
                ri.setYehuxiangxiaddress(nsAddress);
            }

            String nsAddressClone = nsAddress;
            ri.setLeibie(leibie.split(",")[0]);
            if (row.getCell(name) != null) {
                String nameR = row.getCell(name).toString();
                if (nameR.contains("\n")) {
                    String[] nameRA = nameR.split("\n");
                    StringBuffer sb = new StringBuffer();
                    for (int k = 0; k < nameRA.length; k++) {
                        if (k != nameRA.length - 1) {
                            sb.append(nameRA[k]);
                            sb.append(",");
                        } else {
                            sb.append(nameRA[k]);
                        }
                    }
                    ri.setYehuname(sb.toString());
                } else {
                    ri.setYehuname(nameR);
                }
            }
            if (row.getCell(tel) != null) {
                Cell cell = row.getCell(tel);
                if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {//poi导入,转换成String类型
                    DecimalFormat df = new DecimalFormat("0");//格式化实例化数字
                    ri.setYehumobilephone(df.format(cell.getNumericCellValue()));
                } else {
                    ri.setYehumobilephone(cell.toString());
                }
            }
            if (row.getCell(sex) != null)
                ri.setYehusex(row.getCell(sex).toString());
            if (row.getCell(age) != null)
                ri.setYehuage(row.getCell(age).toString());
            if (row.getCell(dateofbirth) != null)
                ri.setYehudateofbirth(row.getCell(dateofbirth).toString());
            ri.setYehuzhenjiantype(zhenjiantype);
            if (row.getCell(zhengjiancode) != null)
                ri.setYehuzhengjiancode(row.getCell(zhengjiancode).toString());



            if (row.getCell(yehujinjilinkman) != null)
                ri.setYehujinjilinkman(row.getCell(yehujinjilinkman).toString());

            if (row.getCell(yehujinjilinkmanphone) != null) {
                Cell cell = row.getCell(yehujinjilinkmanphone);
                if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {//poi导入,转换成String类型
                    DecimalFormat df = new DecimalFormat("0");//格式化实例化数字
                    ri.setYehujinjilinkmanphone(df.format(cell.getNumericCellValue()));
                } else {
                    ri.setYehujinjilinkmanphone(cell.toString());
                }
            }

1个回答

别用POI,先用数据库,将excle导入数据库,再用jdbc从数据库读。思路是这样,自己也没试过,你可以试一下。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java:导入excel并校验数据的效率问题

导入1000行的数据,第一次用windows系统下的oracle数据库,每校验一条数据执行时间为0.003秒;第二次用linux系统下的oracle数据库,每校验一条数据执行时间为0.3秒。linux系统下的数据库数据量较多,但只查一次用时0.5秒(以后999行记录不再查数据库),查询出来的结果集与windows下的结果集一样(两条数据)。这两次除上述数据库环境不同外(只改了连接数据库的配置文件),其他因素均一样(自己的机器测试,windows系统,两次执行的代码一样),为什么效率会差这么多呢?

Java用poi导入数据到excel丢失数据

很是奇怪,遍历数据时,数据显示都是完整的,可一旦打开数据导入的excel表,就没有了第一行的数据,小妹是渣渣来的,百度半天也没结果,求大神帮忙~

poi处理excel大数据量的导入会报内存溢出

XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fileName())); 就是单独执行这行代码都不行,报内存溢出,我把虚拟机都设置成最大了也溢出 差不多10万行吧

java 使用POI导出大数据,服务器内存不释放

RT,我用java 使用POI导出大数据, 数据是可以导出来。但是服务器的内存一直不释放。导一次 内存就会增加100M-2G 视数据量大小。当超过JVM设置的15G时,服务就会瘫痪掉,无法访问、 主要代码如下, ``` MapList list = db.query(SQL); String EXCELNAME = (new StringBuilder(String.valueOf(unitId))).toString(); HSSFWorkbook workbook = new HSSFWorkbook(); //createSheet(excel工作表名) HSSFSheet sheet = workbook.createSheet(EXCELNAME); //下面是设置excel表中标题的样式 HSSFCellStyle title_style = workbook.createCellStyle(); title_style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); title_style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); title_style.setBorderBottom(HSSFCellStyle.BORDER_THIN); title_style.setBorderLeft(HSSFCellStyle.BORDER_THIN); title_style.setBorderRight(HSSFCellStyle.BORDER_THIN); title_style.setBorderTop(HSSFCellStyle.BORDER_THIN); title_style.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFFont title_font = workbook.createFont(); title_font.setColor(HSSFColor.VIOLET.index); title_font.setFontHeightInPoints((short) 12); title_font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); title_style.setFont(title_font); //内容的样式 HSSFCellStyle content_style = workbook.createCellStyle(); content_style.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index); content_style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); content_style.setBorderBottom(HSSFCellStyle.BORDER_THIN); content_style.setBorderLeft(HSSFCellStyle.BORDER_THIN); content_style.setBorderRight(HSSFCellStyle.BORDER_THIN); content_style.setBorderTop(HSSFCellStyle.BORDER_THIN); content_style.setAlignment(HSSFCellStyle.ALIGN_CENTER); content_style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); HSSFFont content_font = workbook.createFont(); content_font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); content_style.setFont(content_font); //填充标题内容 HSSFRow row = sheet.createRow(0); for (int i = 0; i < TITLES.length; i++) { //设置标题的宽度自适应 sheet.setColumnWidth(i, TITLES[i].getBytes().length * 2 * 256); HSSFCell cell = row.createCell(i); cell.setCellStyle(title_style); HSSFRichTextString text = new HSSFRichTextString(TITLES[i]); cell.setCellValue(text); } for (int i = 0; i < list.size(); i++) { row = sheet.createRow( i + 1); for( int val=0;val<TITLES.length;val++){ HSSFCell cell = row.createCell(val); cell.setCellStyle(content_style); HSSFRichTextString richString = new HSSFRichTextString(list.getRow(i).get(val)); cell.setCellValue(richString); } } response.reset(); response.setContentType("application/vnd.ms-excel ;charset=" + LocaleConfig.getEncoding()); response.setHeader("Content-disposition", "attachment;filename=" +EXCELNAME + ".xls"); response.addHeader("Cache-Control", "no-cache"); response.addHeader("Cache-Control", "no-store"); OutputStream ouputStream = response.getOutputStream(); try { workbook.write(ouputStream); } catch (Exception e) { e.printStackTrace(); }finally{ if(ouputStream!=null){ ouputStream.flush(); ouputStream.close(); } } } ```

poi导出excel表数据量超过1000时候报异常,大神在哪啊。。

2016-06-28 14:35:57,294 ERROR [com.ultrapower.iam.server.action.resource.sysresource.SystemResAction] - exportSysRes 导出Excel异常 java.lang.ArrayIndexOutOfBoundsException: -32710 at java.util.ArrayList.get(ArrayList.java:323) at org.apache.poi.hssf.model.WorkbookRecordList.get(WorkbookRecordList.java:50) at org.apache.poi.hssf.model.Workbook.getExFormatAt(Workbook.java:787) at org.apache.poi.hssf.usermodel.HSSFCell.getCellStyle(HSSFCell.java:906) at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1727) at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1662) at com.ultrapower.iam.server.service.resource.sysresource.impl.SysResServiceImpl.creatResListExcel(SysResServiceImpl.java:5412) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy20.creatResListExcel(Unknown Source) at com.ultrapower.iam.server.action.resource.sysresource.SystemResAction.exportSysRes(SystemResAction.java:2622) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270) at com.ultrapower.iam.server.action.base.BaseAction.dispatchMethod(BaseAction.java:126) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.security.SecurityFilter.doFilter(SecurityFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.clientip.ClientIpFilter.doFilter(ClientIpFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.security.XSSSecurityFilter.doFilter(XSSSecurityFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.EncodingFilter.doFilter(EncodingFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.SessionCheckFilter.doFilter(SessionCheckFilter.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595)

【求助】如何使用Java批量将xlsx格式的表格导入MySQL中

如何使用Java批量将xlsx格式的表格导入MySQL中,数据量比较大,有好几十个表格, 每个表格大概2000行

如何用POI 读取excl模板,然后通过数据库写入大量数据 ,创建多个sheet,求解决!!!

![模板](https://img-ask.csdn.net/upload/201901/28/1548675614_119810.jpg) 根据记录数,自动分工作簿,每个工作簿11条记录

poi导入excel到数据库,excel中的空白行也会导入到数据库

![图片说明](https://img-ask.csdn.net/upload/201510/15/1444890842_121398.png) if条件判断也没起作用,如何才能正确判断

Java上传数据内存溢出

银行的系统,上传一个文件给其他系统,由于数据量太大,报内存溢出,急求。

关于Java批量导入节目,求思路

导入材料:节目excel(excel一行就是一个节目);Zip压缩包(节目图片)。 需求:导入的excel大概有300个节目,图片大概有900张大概2G。 ![图片说明](https://img-ask.csdn.net/upload/201801/26/1516949745_1002.png) 做个假设:一次请求,把上传的excel,zip读入内存;excel把它解析成List,一个元素对应excel的一行。zip解析为一个Map,key图片名字,value图片流。图片流和excel找到映射关系后,做裁图(特定尺寸)保存在服务器静态资源端。然后落值数据库。 思路:前台:new FormData(),multipart/form-data;charset=UTF-8的http的POST请求;后台springmvc的MultipartFile接受两数据。通过解析构造出合理的数据类型,落值一条一条的节目。 矛盾: 1.图片资源过大,考虑用户带宽,请求是通过http协议的。 2.效率问题 3.内存的压力 4.用多线程去提高效率 补充:对于批量这个概率不是太清楚;Zip包里边图片,一个节目对应三张。 前面的假设是针对不超过200M的上传数据,现在数据量增加了,想做一个新思路的解决方法,求大家给点点子,欢迎一起研究这个问题 感谢:各位大哥谢谢你们的建议,我回去整理整理,最终我用了谁的建议,我就把币给谁,币不多一点心意,莫怪莫怪。最终我会把我的实现思路共享给大家。

NPOI空间导出超过65535行Excel数据,报错问题。

NPOI2.0版本,可以支持导出excel2007的xlsx文件,xlsx支持超过65536行数据。 但是用NPOI.HSSF.UserModel.HSSFSheet.CreateRow(65536)创建新行时报错 Invalid row number (65536) outside allowable range (0..65535),程序语句如下, int rowIndex = 65536; HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); NPOI控件没法导出超过65535行数据的Excel吗?除了CreateRow,还有什么别的方法能创建新行?

大神进来帮看看,java导出excel的问题……

现在是想进行数据库查询然后导出到excel里面,但是当数据量大的时候就会报内存溢出,导出倒是没问题,就是在查询数据库获取list的时候就报内存溢出了,该如何处理,最好能给出示例,十分感谢

java+poi实现下面的格式

![图片说明](https://img-ask.csdn.net/upload/201601/25/1453692519_563496.png) 请问怎么实现框框圈起来的部分?? 我的代码如下: public class ExportToExcelServiceImpl implements ExportToExcelService { @Autowired private ExportToExcelDao exportToExcelDao; public void setExportToExcelDao(ExportToExcelDao exportToExcelDao) { this.exportToExcelDao = exportToExcelDao; } /** * 导出合作渠道 * * @param HttpServletRequest * request, HttpServletResponse response, String startData, * String endtData * @return * */ @Override public void exportChannelToExcel(HttpServletRequest request, HttpServletResponse response, String startData, String endtData) { /** * 取出渠道数据 * */ List<CooperationChannel> channelList = exportToExcelDao .exportChannelToExcel(startData, endtData); // List<CooperationChannel> channelList = exportToExcelDao // .exportChannelToExcel(); /** * 创建渠道统计的excel * */ // 下载生成的合作渠道报表到自定义的位置 try { request.setCharacterEncoding("UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } response.setCharacterEncoding("UTF-8"); response.setContentType("application/octet-stream"); // 设置生成的文件类型 String filedisplay = "合作渠道报表.xls"; try { filedisplay = URLEncoder.encode(filedisplay, "UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } response.addHeader("Content-Disposition", "attachment;filename=" + filedisplay); // 设置文件头编码方式和文件名 // 创建一个workbook 对应一个excel应用文件 HSSFWorkbook workBook = new HSSFWorkbook(); // 在workbook中添加一个sheet,对应Excel文件中的sheet CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 15); CellRangeAddress cra1 = new CellRangeAddress(1, 1, 0, 4); CellRangeAddress cra2 = new CellRangeAddress(1, 1, 5, 9); // CellRangeAddress cra3 = new CellRangeAddress(1, 1, 10, 15); HSSFSheet sheet = workBook.createSheet("合作渠道"); // 在sheet里增加合并单元格 sheet.addMergedRegion(cra); sheet.addMergedRegion(cra1); sheet.addMergedRegion(cra2); // sheet.addMergedRegion(cra3); // 获取表格样式 ExportUtil exportUtil = new ExportUtil(workBook, sheet); HSSFCellStyle titleStyle = exportUtil.getTitleStyle(); HSSFCellStyle titleStyle1 = exportUtil.getTitleStyle1(); HSSFCellStyle headStyle = exportUtil.getHeadStyle(); HSSFCellStyle bodyStyle = exportUtil.getBodyStyle(); // 构建表标题1 HSSFRow head = sheet.createRow(0); HSSFCell cell = null; String headTitle = "合作渠道数据统计表"; cell = head.createCell(0); cell.setCellStyle(titleStyle); cell.setCellValue(headTitle); // 构建表标题2 HSSFRow head1 = sheet.createRow(1); HSSFCell cell1 = null; String headTitle1= "部门:市场品牌部"; cell1 = head1.createCell(5); cell1.setCellStyle(titleStyle1); cell1.setCellValue(headTitle1); // 构建表标题2 // HSSFRow head2 = sheet.createRow(1); HSSFCell cell2 = null; String headTitle2= "日期:"; cell2 = head1.createCell(5); cell2.setCellStyle(titleStyle1); cell2.setCellValue(headTitle2); // // 构建表标题2 // HSSFRow head3 = sheet.createRow(1); // HSSFCell cell3 = null; // String headTitle3= "单位:元"; // cell3 = head3.createCell(4); // cell3.setCellStyle(headStyle); // cell3.setCellValue(headTitle3); // String[] headTitle1 = new String[] { "部门:市场品牌部", "日期:", "单位:元" }; // for (int i = 0; i < headTitle1.length; i++) { // cell = head1.createCell(i); // cell.setCellStyle(titleStyle1); // cell.setCellValue(headTitle1[i]); // } // 构建表头 HSSFRow headRow = sheet.createRow(2); String[] titles = new String[] { "序号", "渠道名称", "点击量", "下载量", "激活数", "注册数", "注册率", "实名数", "实名率", "登录数", "绑卡数", "绑卡率", "投资数", "投资率", "充值总额", "投资总额" }; for (int i = 0; i < titles.length; i++) { cell = headRow.createCell(i); cell.setCellStyle(headStyle); cell.setCellValue(titles[i]); } // 构建表体数据 if (channelList != null && channelList.size() > 0) { for (int j = 2; j < channelList.size(); j++) { HSSFRow bodyRow = sheet.createRow(j + 1); CooperationChannel cooperationChannel = channelList.get(j); // getChannel_id,并把数据写入excel中的单元格,下同。 cell = bodyRow.createCell(0); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getChannel_id()); // getChannel_name cell = bodyRow.createCell(1); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getChannel_name()); // getClick_amount cell = bodyRow.createCell(2); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getClick_amount()); // getDownload_amount cell = bodyRow.createCell(3); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getDownload_amount()); // getActivation_amount cell = bodyRow.createCell(4); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getActivation_amount()); // getRegister_amount cell = bodyRow.createCell(5); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getRegister_amount()); // getRegister_rate cell = bodyRow.createCell(6); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getRegister_rate()); // getAutonym_amount cell = bodyRow.createCell(7); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getAutonym_amount()); // getAutonym_rate cell = bodyRow.createCell(8); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getAutonym_rate()); // getLogin_amount cell = bodyRow.createCell(9); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getLogin_amount()); // getBound_card_amount cell = bodyRow.createCell(10); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getBound_card_amount()); // getBound_card_rate cell = bodyRow.createCell(11); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getBound_card_rate()); // getInvestment_amount cell = bodyRow.createCell(12); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getInvestment_amount()); // getInvestment_rate cell = bodyRow.createCell(13); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getInvestment_rate()); // getRecharge_total_amount cell = bodyRow.createCell(14); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel.getRecharge_total_amount()); // getInvestment_total_amount cell = bodyRow.createCell(15); cell.setCellStyle(bodyStyle); cell.setCellValue(cooperationChannel .getInvestment_total_amount()); } } try { // FileOutputStream fos = new FileOutputStream( // "C:\\Users\\lida\\Desktop\\testData\\fr0_markbran_001.xls"); OutputStream ops = response.getOutputStream(); workBook.write(ops); ops.flush(); ops.close(); } catch (IOException e) { e.printStackTrace(); // } finally { // try { // // fos.close(); // } catch (IOException e) { // e.printStackTrace(); // } } }

poi判断合并单元格的效率太慢了,怎么解决?

下面是网上判断合并单元格的方法,它里面加粗那段代码会循环好多遍,假设我导入4000条数据,它每一行就会循环接近4000遍才会走进去,这个方法要怎么改效率才会高点,我本地测了下4000条数据这个方法全部走完就得40秒。 private static boolean isMergedRegion(Sheet sheet, int row , int column) { int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress range = sheet.getMergedRegion(i); int firstColumn = range.getFirstColumn(); int lastColumn = range.getLastColumn(); int firstRow = range.getFirstRow(); int lastRow = range.getLastRow(); # if(row >= firstRow && row <= lastRow){**** if(column >= firstColumn && column <= lastColumn){ return true; } } } return false; } ```

使用POI导出excel时报错,发现到不了工具类中

SEVERE: Servlet.service() for servlet [springMvc] in context with path [/mjj_poi_two] threw exception [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/RichTextString] with root cause 错误如上 我的jdk1.1 poi的jar包3.10 框架是ssi

求助,怎样做Excel大文件上传,解析。

做一个通过jsp上传Excel文档,后台进行解析的功能,项目是struts2,一开始,我是这样写的: jsp: <div id="dlg2" class="easyui-dialog" style="width:400px;height:180px;padding:10px 20px" closed="true" buttons="#dlg-buttons2"> <form id="uploadForm" method="post" enctype="multipart/form-data"> <table style="width:320px;height:80px;"> <tr> <td>下载模版:</td> <td><a href="javascript:void(0)" class="easyui-linkbutton" onclick="downloadTemplate()">下载模板文件</a></td> </tr> <tr> <td>上传文件:</td> <td><input type="file" name="userUploadFile" id="selectedExcel"></td> </tr> </table> </form> </div> <div id="dlg-buttons2"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="uploadFile()">导入</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg2').dialog('close')">关闭</a> </div> js: function uploadFile(){ debugger; var fileName = $('#selectedExcel').val(); if(fileName == ""){ $.messager.alert('提示','请选择上传文件!','info'); return; } fileext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length); fileext = fileext.toLowerCase(); if (fileext == 'xls' || fileext == 'xlsx'){ $.messager.progress({title:'提示',msg:'正在导入,请稍候...'}); $("#uploadForm").form('submit',{ type : "post", url : "<%=basePath%>" + "ImportAndExport/DataImport.action?selType=" + selType + "&fileext=" + fileext, data : "", dataType : "json", success : function(result){ $.messager.progress("close"); var data = result.split("\""); $.messager.alert('提示',data[1],'info'); }, }); } else{ $.messager.alert('提示','请选择xls/xlsx格式文件!','info'); } } 后台action接收方法: public String upload() throws Exception{ try { HttpServletRequest request = ServletActionContext.getRequest(); String selType = request.getParameter("selType"); String fileext = request.getParameter("fileext"); ImportServiceImpl isi = new ImportServiceImpl(); resultTip = isi.importExcelByType(userUploadFile, selType, fileext); } catch (Exception e) { resultTip = "导入失败!请参考:" + e.getMessage(); e.printStackTrace(); } return "importResult"; } service进行解析: public String importExcelByType(File f,String type,String ext){ Workbook workbook = null; int recordNum = 0;//记录插入记录数 try { if(XLS.equals(ext)){ workbook = new HSSFWorkbook(new FileInputStream(f)); } else if(XLSX.equals(ext)){ workbook = new XSSFWorkbook(new FileInputStream(f)); } Sheet sheet = workbook.getSheetAt(0); 直接用new XSSFWorkbook(new FileInputStream(f))或new HSSFWorkbook方法,获得Workbook对象。 但是,我要解析的Excel文件数据量比较大,一般都是10万条左右,获得Workbook对象的这一步直接内存溢出,拆到一万条一个文件的时候可以跑,但是十分钟很慢,于是上网找了找其他的解析Excel方法,找到了一个号称占用小速度快的,Eclipse跑了有效: [](http://blog.csdn.net/lishengbo/article/details/40711769 "") 我把这个代码拿过来用,加了个返回值List<String[]>的readExcel方法,内容就是: public static List<String[]> readExcel(String f,int columnNum) throws Exception{ // List<String[]> list=XLSXCovertCSVReader.readerExcel("d:\\a.xlsx", "sheet1", 45); List<String[]> list = XLSXCovertCSVReader .readerExcel( // "C:\\Users\\hbkn\\Desktop\\dnbb亳州导入数据\\dnbb亳州\\中压基础数据查询结果\\中压测试.xlsx", "d:\\a.xlsx", "Sheet1", 45); return list; } 然后我高高兴兴拿过来用,修改action方法如下: public String upload() throws Exception{ InputStream is=null; OutputStream os=null; String temp="d:\\a.xlsx"; try { is = new BufferedInputStream(new FileInputStream(userUploadFile)); os = new BufferedOutputStream(new FileOutputStream(temp)); byte[] buffer = new byte[1024]; int len=0; while((len=is.read(buffer))>0){ os.write(buffer,0,len); } HttpServletRequest request = ServletActionContext.getRequest(); String selType = request.getParameter("selType"); String fileext = request.getParameter("fileext"); ImportServiceImpl isi = new ImportServiceImpl(); resultTip = isi.importExcelByType1(temp, selType, fileext); }catch(Exception e){ resultTip= "导入失败!请参考:" + e.getMessage(); e.printStackTrace(); }finally{ if(is !=null){is.close();} if(os!=null){os.close();} } return "importResult"; } 修改service方法如下: public String importExcelByType1(String f,String type,String ext){ try { String[] colArr = getColumnName(type).split(","); HashMap<String, String> colMap = new HashMap<String, String>(); for(int i = 0;i < colArr.length;i++){ colMap.put(colArr[i].split(":")[0], colArr[i].split(":")[1]); } List<String[]> readExcel = XLSXCovertCSVReader.readExcel(f, colArr.length); System.out.println(readExcel.size()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return ext; } 发现报: org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'd:\a.xlsx' at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:106) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:221) at com.ssh.effectiveCheck.util.XLSXCovertCSVReader.readerExcel(XLSXCovertCSVReader.java:451) at com.ssh.effectiveCheck.util.XLSXCovertCSVReader.readExcel(XLSXCovertCSVReader.java:480) at com.ssh.effectiveCheck.service.impl.ImportServiceImpl.importExcelByType1(ImportServiceImpl.java:45) at com.ssh.effectiveCheck.action.ImportAction.upload(ImportAction.java:72) 。。。。。 Caused by: java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:219) at java.util.zip.ZipFile.<init>(ZipFile.java:149) at java.util.zip.ZipFile.<init>(ZipFile.java:163) at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:174) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104) ... 75 more 但是我手动修改了的解析类里的需要解析的Excel文件路径,不再让它解析我上传后的Excel,而是解析本地的原本的Excel(tomcat服务安装在本地),不报这个错了,list也成功取到了。 也就是说网上找到的这个解析方法不认我上传之后的Excel文件(明明WPS一样可以打开)。 在这个过程中,我又动了歪脑筋,这个服务是单机版,以后部署也是单机,那我能不能不上传,直接让服务解析本地的Excel呢? 所以,各位高手,我想得到解决方案(任一即可), 1。通过jsp获取一个文件的本机绝对路径(我用var fileName = $('#selectedExcel').val();试了,debug显示是fileName = "C:\fakepath\中压测试1.xlsx",这个并不是真实路径)。 2.求正确的上传Excel文件的方法,能让上面链接里代码可以成功解析的那种。 3.Workbook解析Excel大文件的正确姿势,能不能做到分段,占用内存小,速度快的那种。

POI 生成Excel 分段处理问题

<p>大家好! <br><br>我在做java 生成Excel文件时,由于数据量很大(七万多条),我创建的文件扩展名是xlsx,一下不可以导入Excel中,下载做分段导入,就是在sql语句中(例如每次查询2000条),当第一次执行时,先创建Excel标题,然后把第一次查询的2000数据写入Excel中,然后一直循环,直到把全部数据写入。请问大侠们,怎么循环写入?用什么方法? <br><br>if(i == 0 ) <br>{ <br>     FileOutputStream os = new FileOutputStream(new File(“D:\\excel\a.xlsx”)); <br>     XSSFWorkbook wb = new XSSFWorkbook(); <br>// <br>     XSSFSheet sheet = (XSSFSheet) wb.createSheet("aaa"); <br>// <br>     XSSFRow row = null; <br>     XSSFCell cell = null; <br>     int row_num = 0; <br>     int cell_num = 0; <br><br>     row = sheet.createRow(row_num); <br>     row.setHeightInPoints(30); <br>     sheet.autoSizeColumn(0, true); <br><br>     cell = row.createCell(cell_num++); <br>     ExcelUtil.setFormatTitleCenter(wb, cell); <br>     cell.setCellValue("SEQ"); <br>     <br>     wb.write(os); <br>     os.close(); <br>} <br>if(list.size()&gt;0){ <br>File file = new File(StringUtil.FILE_NAME); <br><br>String fullname = file.getAbsolutePath(); <br><br>FileInputStream fs = new   FileInputStream(fullname); <br><br>XSSFWorkbook wb = new XSSFWorkbook(fs); <br><br>XSSFSheet   sheet   =   wb.getSheetAt(0); <br><br><br>PDTO dto = null; <br>Iterator itor = list.iterator(); <br>   <br>XSSFRow row = null; <br>XSSFCell cell = null; <br><br>                   while( itor.hasNext() ) <br>{ <br>dto = (PipeDTO)itor.next(); <br>i++; <br>//定义列 <br>int j=0; <br>row = sheet.createRow(i); <br>//设置行长度自动 <br>//row.setHeight((short)500); <br>row.setHeightInPoints(20); <br>//row.setZeroHeight(true); <br>sheet.autoSizeColumn(j+1, true); <br>//获得这一行的每j列 <br>cell = row.createCell(j++); <br>//给单元格设值 <br>ExcelUtil.setFormatLineRight(wb, cell); <br>cell.setCellValue(dto.getSeq); <br>} <br>FileOutputStream os = new FileOutputStream(new File(“D:\\excel\a.xlsx”)); <br>wb.write(os); <br>os.close(); <br>               } <br>               else <br>      { <br>break; <br>      } <br>这样执行是还是这样的错误, <br>[java] java.lang.ArrayIndexOutOfBoundsException: -32765 <br>[java]     at java.util.ArrayList.get(Unknown Source) <br>[java]     at org.apache.poi.xssf.model.StylesTable.getFontAt(StylesTable.java:190) <br>[java]     at org.apache.poi.xssf.usermodel.XSSFWorkbook.getFontAt(XSSFWorkbook.java:592) <br>[java]     at org.apache.poi.xssf.usermodel.helpers.ColumnHelper.getColumnWidth(ColumnHelper.java:355) <br>[java]     at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:337) <br>[java]     at dlstx.monitor.data.pipe.PipeDAO.rt_code_check_error(PipeDAO.java:688) <br>[java]     at dlstx.monitor.data.ERPMonitor.pipeCheck(ERPMonitor.java:105) <br>[java]     at dlstx.monitor.data.ERPMonitor.main(ERPMonitor.java:53) <br>请指点,有没有好点的方法,怎么修改,十分感谢!</p> <p> </p>

我这个只能导出6.5W数据,而我要导出68万,报错数据溢出,怎么处理呢,求代码

![图片说明](https://img-ask.csdn.net/upload/201705/27/1495877761_678742.png) ![图片说明](https://img-ask.csdn.net/upload/201705/27/1495877772_31159.png)

web项目在执行大量的插入语句时执行一段时间后卡死

SSH框架,在页面有一个poi 批量导入excel的功能,每读取excel一行,保存为一个实体然后循环insert到DB里。刚开始程序运行正常,但是一段时间过后,系统出现卡死,不再执行insert sql ,刷新页面也没有响应,只能重启服务器。期间程序没有报错,myeclipse也不是内存溢出导致的卡死,因为点击其他功能模块时不会出现上述所说的问题,只有在执行大量的insert sql 时才会。 因为代码没有报错我也就不贴代码了。 我自己想的不知道是不是hibernate在做insert时由于数据量大导致链接关闭,但是我设置数据库连接池断开时间是1800s,事实上也没有超过。由于不知道hibernate底层的源码是怎样执行insert的,希望有大神说说,为什么在执行少量的insert时系统不会卡死,但处理大量数据并长时间insert的就是卡死。 虚心求各位指导!谢谢大家。如果有需要我会贴出代码。感谢。 更改过后的代码,但是又有新的问题 ``` @Override public void save(List<T> list) { long begin = System.currentTimeMillis(); Session session = getSession(); try { for (int i = 0; i < list.size(); i++) { session.save(list.get(i)); if (i%50 == 0 && i != 0) { session.flush(); session.clear(); } } } catch (Exception e) { e.printStackTrace(); } finally{ session.clear(); } long end = System.currentTimeMillis(); System.out.println((end-begin)/1000.0); } ``` 这是basedao,是spring管理hibernate,加了2个属性 ``` <prop key="hibernate.jdbc.fetch_size">100</prop> <prop key="hibernate.jdbc.batch_size">50</prop> ``` 方法是根据不同的实体批量insert,虽然现在执行大量insert时不会中断,但是我有4个实体要连续执行批量insert,在insert完前2个实体后,我在第三个实体调用批量导入的方法设了断点,程序并没有停在断点上,又出现了卡死的情况。PS:不知道是不是在insert第二个实体那里就卡死了,还是说执行完第二个批量insert就卡死了,反正我在第三个批量insert方法前断点没进,并且系统卡死,只能重启。 请大家不吝赐教!感谢!

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

立即提问
相关内容推荐