• 这里只放部分片段的代码
    java中使用二维数组生成表格非常方便,但是每一维的数组都需要排好序,而且,在java中所谓的二维数组,三维数组等,其实都是多个一维数组组成的
 /*** 添加子女教育规划表。* @param name 子女姓名* @param educationItems 某个孩子的教育规划的二维数组,每列依次是:学程阶段、年数、费用支出(元)/年、年增长率* @param spacing* @throws DocumentException* @throws IOException*/
private void addEducationTable(String name, String[][] educationItems, float spacing) throws DocumentException, IOException{addParagraphText(name + "的教育支出规划如下:", getMainTextFont(), 0, SPACING_5, LEADING_MULT);//标题字段//以下是表头float[] colWidth = new float[] { mm2px_width(34f), mm2px_width(34f), mm2px_width(34f), mm2px_width(34f), mm2px_width(34f) };String[] colName = { "学程阶段", "年数", "规划值(首次)","发生值(首次)", "年增长率" };//表头列的一维数组int[] colAlignment = {Element.ALIGN_LEFT, Element.ALIGN_RIGHT, Element.ALIGN_RIGHT, Element.ALIGN_RIGHT, Element.ALIGN_RIGHT }; //表头有几列就写几个对齐方式float[] colPaddingLeft = { 3f, 3f, 3f, 3f, 3f };float[] colPaddingRight = { 3f, 3f, 3f, 3f, 3f };Font[] colFont = { getTabCellTextFont(), getTabCellTextFont(), getTabCellTextFont(), getTabCellTextFont(), getTabCellTextFont() };//字体及颜色的设置educationItems=swap(educationItems, 3, 4);//这是排序二维数组,把第4列换到第3行(从0开始计数)PdfPTable table = tableTemplate(educationItems, colWidth, colName, colAlignment, colPaddingLeft, colPaddingRight, colFont);//生成表格table.setSpacingAfter(mm2px_height(spacing)); this._document.add(table);//生成到PDF去,代码就不贴了}/*** @param items 二维数组表示的表* @param colWidth 各列的宽度(像素)* @param colName 各列的名称* @param colAlignment 各列的水平对齐方式* @param colPaddingLeft 各列的左padding* @param colPaddingRight 各列的右padding* @param colFont 各列的字体* @return* @throws DocumentException* @throws IOException*/private PdfPTable tableTemplates(String[][] items, float[] colWidth, String[] colName, int[] colAlignment,float[] colPaddingLeft, float[] colPaddingRight, Font[] colFont) throws DocumentException, IOException{PdfPTable intTable = new PdfPTable(colWidth.length); intTable.setTotalWidth(colWidth);intTable.setLockedWidth(true);intTable.getDefaultCell().setLeading(mm2px_height(LEADING_CELL_TEXT), 1f); //单元格内文字行间距intTable.getDefaultCell().setBorderColor(COLOR_CELL_BORDER); //边框颜色intTable.setHeaderRows(1); //第一行做表头,跨页再现表头//单元格可以跨页intTable.setSplitLate(false);intTable.setSplitRows(true);/*********************************************************************************************//***********************************以下是表头标题栏*******************************************/float headerHeight = mm2px_height(TABLE_HEADER_HEIGHT);intTable.getDefaultCell().setFixedHeight(headerHeight); //行高intTable.getDefaultCell().setBorder(Rectangle.NO_BORDER); //无边框for(int i = 0; i < colName.length; i++){intTable.getDefaultCell().setBackgroundColor(COLOR_TAB_HEADER); //表头背景intTable.getDefaultCell().setHorizontalAlignment(colAlignment[i]);intTable.getDefaultCell().setPaddingLeft(colPaddingLeft[i]);intTable.getDefaultCell().setPaddingRight(colPaddingRight[i]);intTable.addCell(new Paragraph(colName[i], getTabHeaderTextFont()));}/*********************************************************************************************//***********************************以下是表格每行*********************************************/float rowHeight = mm2px_height(TABLE_ROW_HEIGHT);intTable.getDefaultCell().setMinimumHeight(rowHeight); //单元格内文字不确定,不能设置成固定行高  intTable.getDefaultCell().setBackgroundColor(COLOR_CELL_BACK_WHITE);for(int i = 0; i < items.length; i++){if(i == items.length - 1) //最后一行有合并单元格{intTable.getDefaultCell().setColspan(6);//设置具体合并哪一列intTable.getDefaultCell().setHorizontalAlignment(colAlignment[0]);intTable.getDefaultCell().setPaddingLeft(colPaddingLeft[0]);intTable.getDefaultCell().setPaddingRight(colPaddingRight[0]);intTable.getDefaultCell().setBorder(Rectangle.LEFT | Rectangle.RIGHT  | Rectangle.BOTTOM); intTable.addCell(new Paragraph(items[i][0], colFont[0]));}else{for(int j = 0; j < items[i].length; j++){if(j == 0)intTable.getDefaultCell().setBorder(Rectangle.LEFT | Rectangle.RIGHT  | Rectangle.BOTTOM);else intTable.getDefaultCell().setBorder(Rectangle.RIGHT  | Rectangle.BOTTOM); if(j < colAlignment.length){   intTable.getDefaultCell().setHorizontalAlignment(colAlignment[j]);intTable.getDefaultCell().setPaddingLeft(colPaddingLeft[j]);intTable.getDefaultCell().setPaddingRight(colPaddingRight[j]);intTable.addCell(new Paragraph(items[i][j], colFont[j]));}}}}/*********************************************************************************************/return intTable;}/*
*二维数组根据指定列排序到指定位置的方法,f2要大于f1
*/
public String[][] swap(String[][] data,int f1,int f2){for (int i = 0; i < data.length; i++) {String tamp=data[i][f2];for (int j = f2; j >f1; j--) {data[i][j]=data[i][j-1];}data[i][f1]=tamp;}return data;}/*** @return 获取表头标题栏字体。* @throws DocumentException* @throws IOException*/private static Font getTabHeaderTextFont() throws DocumentException, IOException{return getFont(GDM.getUrlString(GDM.FONT_SIMHEI), FONT_SIZE_TAB_HEADER_TEXT, Font.NORMAL, COLOR_TAB_HEADER_TEXT);}/*** @return 获取单元格文字字体。* @throws DocumentException* @throws IOException*/private static Font getTabCellTextFont() throws DocumentException, IOException{return getFont(GDM.getUrlString(GDM.FONT_SIMHEI), FONT_SIZE_TAB_CELL_TEXT, Font.NORMAL, GDM.COLOR_666666);}/*** @return 获取标题字体。* @throws DocumentException* @throws IOException*/private static Font getTitleFont() throws DocumentException, IOException{return getFont(GDM.getUrlString(GDM.FONT_HEADER_CH), FONT_SIZE_TITLE, Font.NORMAL, GDM.COLOR_333333);}   /*** @return 获取标题字体(小)。* @throws DocumentException* @throws IOException*/private static Font getTitleFont_Small() throws DocumentException, IOException{return getFont(GDM.getUrlString(GDM.FONT_HEADER_CH), FONT_SIZE_TITLE - 1f, Font.NORMAL, GDM.COLOR_333333);}/*** @return 获取正文字体。* @throws DocumentException* @throws IOException*/private static Font getMainTextFont() throws DocumentException, IOException{return getFont(GDM.getUrlString(GDM.FONT_NORMAL), FONT_SIZE_MAINTEXT, Font.NORMAL, GDM.COLOR_666666);}

加一个生成pdf常用的格式工具类

import java.io.IOException;
import java.net.MalformedURLException;import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;public class FinPlan
{protected Document _document; //文档对象protected PdfWriter _writer; //pdf文档输出器public FinPlan(Document document, PdfWriter writer) {super();this._document = document;this._writer = writer;}/*** 像素到毫米的转换(高度)* @param px 纵向像素* @return*/public static float px2mm_height(float px){return px * GDM.PAGE_HEIGHT / PageSize.A4.getHeight();}/*** 在指定位置写入文字* @param text 需要写入的文字* @param xPoint 距左边位置(毫米)* @param yPoint 距底边位置(毫米)*/protected void writeOnSpLocation(float xPoint, float yPoint, String text, Font font){PdfContentByte pcb = this._writer.getDirectContent();xPoint = mm2px_width(xPoint);yPoint = mm2px_height(yPoint);Paragraph prg = new Paragraph(text, font);ColumnText.showTextAligned(pcb, PdfContentByte.ALIGN_LEFT, prg, xPoint, yPoint, 0);}/*** 添加标题。* @param title 标题* @param font 标题字体* @param spacingBefore 标题前的空白(毫米)* @throws DocumentException* @throws IOException*/protected void addTitle(String title, Font font, float spacingBefore) throws DocumentException, IOException{addTitle(title, font, spacingBefore, 0f);}/*** 添加标题。* @param title 标题* @param font 标题字体* @param spacingBefore 标题前的空白(毫米)* @param spacingAfter 标题后的空白(毫米)* @throws DocumentException* @throws IOException*/protected void addTitle(String title, Font font, float spacingBefore, float spacingAfter) throws DocumentException, IOException{Paragraph prg = new Paragraph(title, font);spacingBefore = mm2px_height(spacingBefore);prg.setSpacingBefore(prg.getLeading() * -1 + prg.getFont().getSize() * 0.8f + spacingBefore);//prg.setSpacingAfter(spacingAfter);this._document.add(prg);addSpan(spacingAfter);}/*** 添加标题。* @param title 标题* @param font 标题字体* @param spacingBefore 标题前的空白(毫米)* @param spacingAfter 标题后的空白(毫米)* @param alignment 标题的对齐方式(居中用Element.ALIGN_CENTER)* @throws DocumentException* @throws IOException*/protected void addTitle(String title, Font font, float spacingBefore, float spacingAfter, int alignment) throws DocumentException, IOException{Paragraph prg = new Paragraph(title, font);spacingBefore = mm2px_height(spacingBefore);prg.setSpacingBefore(prg.getLeading() * -1 + prg.getFont().getSize() * 0.8f + spacingBefore);prg.setAlignment(alignment);//prg.setSpacingAfter(spacingAfter); 改用下面的 addSpan(spacingAfter);this._document.add(prg);addSpan(spacingAfter);}/*** 添加段落文本。* @param text 段落文本* @param font 字体* @param spacingBefore 段落前的空白(毫米)* @param leadingMult 文本行间距倍数* @throws DocumentException*/protected void addParagraphText(String text, Font font, float spacingBefore, float leadingMult) throws DocumentException{  addParagraphText(text, font, spacingBefore, 0f, leadingMult);}/*** 添加段落文本。* @param text 段落文本* @param font 字体* @param spacingBefore 段落前的空白(毫米)* @param spacingAfter 段落后的空白(毫米)* @param leadingMult 文本行间距倍数* @throws DocumentException*/protected void addParagraphText(String text, Font font, float spacingBefore, float spacingAfter, float leadingMult) throws DocumentException{Paragraph prg = new Paragraph(text, font); //.trim()spacingBefore = mm2px_height(spacingBefore);//spacingAfter = mm2px_height(spacingAfter);prg.setLeading(prg.getLeading() * leadingMult);prg.setSpacingBefore(prg.getLeading() * -1f + prg.getFont().getSize() * 0.8f + spacingBefore); //prg.setSpacingAfter(spacingAfter);//prg.setFirstLineIndent(prg.getFont().getSize() * 2f); //首行缩进prg.setAlignment(Element.ALIGN_LEFT); //对齐方式this._document.add(prg);addSpan(spacingAfter);}/*** 添加跨页后不再起作用的间隔。* @param gap 间隔大小(毫米)* @throws DocumentException*/protected void addSpan(float gap) throws DocumentException{PdfPTable spanTable = new PdfPTable(1);spanTable.setTotalWidth(this._document.right() - this._document.left());spanTable.setLockedWidth(true);spanTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);spanTable.setSpacingAfter(mm2px_height(gap)); //表后面的间隔,跨页之后不再起作用,要的就是这个效果     spanTable.addCell("");this._document.add(spanTable);}/*** 添加每一章的头部文字。* @param headerCH 头部中文* @param headerEN 头部英文* @throws DocumentException* @throws IOException*/protected void addChapterHeader(String headerCH, String headerEN) throws DocumentException, IOException{Font fontCH = getFont(GDM.getUrlString(GDM.FONT_HEADER_CH), GDM.FONT_SIZE_HEADER_CH, Font.NORMAL, GDM.COLOR_GOLD);Font fontEN = getFont(GDM.getUrlString(GDM.FONT_HEADER_EN), GDM.FONT_SIZE_HEADER_EN, Font.NORMAL, GDM.COLOR_GOLD);Phrase phrase = new Phrase();Chunk chunkCH = new Chunk(headerCH, fontCH);phrase.add(chunkCH);phrase.add(Chunk.NEWLINE);Chunk chunkEN = new Chunk(headerEN, fontEN);phrase.add(chunkEN);Paragraph prg = new Paragraph(phrase);        prg.setSpacingAfter(mm2px_width(GDM.SPACING_AFTER_HEADER));this._document.add(prg);}/*** 添加小节的头部图片* @param imgFilename 含路径的图片文件名* @throws MalformedURLException* @throws IOException* @throws DocumentException*/protected void addSectionHeader(String imgFilename) throws MalformedURLException, IOException, DocumentException{  Paragraph prg = new Paragraph("");prg.setLeading(0);this._document.add(prg);//在新开页中,上面段落的行间距会影响图片的位置float width = GDM.PAGE_WIDTH - GDM.MARGIN_LEFT - GDM.MARGIN_RIGHT;float height = GDM.HEIGHT_SECTIONHEADER;addImage(imgFilename, width, height);} /*** 添加图片。* @param imgFilename 含路径的图片文件名* @param width 图片宽度(毫米)* @param height 图片高度(毫米)* @throws MalformedURLException* @throws IOException* @throws DocumentException*/protected void addImage(String imgFilename, float width, float height) throws MalformedURLException, IOException, DocumentException{Image img = Image.getInstance(imgFilename);addImage(img, width, height);}/*** 添加图片。* @param imgByte 图片内存数组* @param width 图片宽度(毫米)* @param height 图片高度(毫米)* @throws MalformedURLException* @throws IOException* @throws DocumentException*/protected void addImage(byte[] imgByte, float width, float height) throws MalformedURLException, IOException, DocumentException{Image img = Image.getInstance(imgByte);addImage(img, width, height);}/*** 添加图片。    * @param img 图片* @param width 图片宽度(毫米)* @param height 图片高度(毫米)* @throws DocumentException*/private void addImage(Image img, float width, float height) throws DocumentException{img.setAlignment(Image.ALIGN_LEFT);width = mm2px_width(width);height = mm2px_height(height);img.scaleAbsolute(width, height);this._document.add(img);}/*** 在指定位置添加图片。* @param imgFilename 含路径的图片文件名* @param width 图片宽度(毫米)* @param height 图片高度(毫米)* @param xPoint 距左边位置(毫米)* @param yPoint 距底边位置(毫米)* @throws MalformedURLException* @throws IOException* @throws DocumentException*/protected void addImageOnSpLocation(String imgFilename, float width, float height, float xPoint, float yPoint) throws MalformedURLException, IOException, DocumentException{Image img = Image.getInstance(imgFilename);img.setAlignment(Image.ALIGN_LEFT);width = mm2px_width(width);height = mm2px_height(height);img.scaleAbsolute(width, height);xPoint = mm2px_width(xPoint);yPoint = mm2px_height(yPoint);img.setAbsolutePosition(xPoint, yPoint);this._document.add(img);}/*** 画线。* @param beginX 开始X坐标(毫米)* @param beginY 开始Y坐标(毫米)* @param endX 终止X坐标(毫米)* @param endY 终止Y坐标(毫米)* @param lineWidth* @param color*/protected void drawLint(float beginX, float beginY, float endX, float endY, float lineWidth, BaseColor color){PdfContentByte cb = _writer.getDirectContent();cb.setLineWidth(lineWidth);cb.setColorStroke(color);beginX = mm2px_width(beginX);beginY = mm2px_height(beginY);endX = mm2px_width(endX);endY = mm2px_height(endY);cb.moveTo(beginX, beginY);cb.lineTo(endX, endY);cb.stroke();}/*** 添加新的页面*/protected void newPage(){this._document.newPage();//this._writer.setPageEmpty(false); //fasle-页内容为空依然显示; true-页内容为空不会显示}/*** 获取字体。* @param fontname 字体名称(含路径)* @param fontsize 字体大小* @param fontstyle 字体风格* @param color 字体颜色* @return 字体* @throws DocumentException* @throws IOException*/    public static Font getFont(String fontname, float fontsize, int fontstyle, BaseColor color) throws DocumentException, IOException{BaseFont bfont = BaseFont.createFont(fontname, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);return new Font(bfont, fontsize, fontstyle, color);}/*** 像素到毫米的转换(宽度)* @param px 横向像素* @return*/public static float px2mm_width(float px){return px * GDM.PAGE_WIDTH / PageSize.A4.getWidth();}/*** 毫米到像素的转换(宽度)* @param mm 横向毫米* @return*/public static float mm2px_width(float mm){return mm * PageSize.A4.getWidth() / GDM.PAGE_WIDTH; //A4纸宽210毫米}/*** 毫米到像素的转换(高度)* @param mm 纵向毫米* @return*/public static float mm2px_height(float mm){return mm * PageSize.A4.getHeight() / GDM.PAGE_HEIGHT; //A4纸高297毫米}/*** 添加法律声明、我们的观点、假设和依据、资产配置策略。* @version 2017-03-30* @param segments 文字或图片* @param font 字体* @param spacingBefore 段落前的空白(毫米)* @param leadingMult 行间距* @throws MalformedURLException* @throws IOException* @throws DocumentException*/protected void addPdfWord(Object[] segments, Font font, float spacingBefore, float leadingMult) throws MalformedURLException, IOException, DocumentException{for(Object obj : segments){if(obj instanceof byte[]){Image img = Image.getInstance((byte[])obj);addImageTab(img);}else if(obj instanceof String){addParagraphText((String)obj, font, spacingBefore, px2mm_height(font.getSize()) * leadingMult, leadingMult);}   }}/*** 以表格的方式添加图片。* @version 2017-04-19* @param img 图片* @throws DocumentException*/protected void addImageTab(Image img) throws DocumentException{      float imgWidth = img.getWidth();float imgHeight = img.getHeight();float docWidth = this._document.right() - this._document.left();float docHeight = this._document.top() - this._document.bottom() - 5f * 2;float scalePercent_w = 100f;if(imgWidth > docWidth) scalePercent_w = docWidth * 100f / imgWidth;float scalePercent_h = 100f;if(imgHeight > docHeight) scalePercent_h = docHeight * 100f / imgHeight;float scalePercent = Math.min(scalePercent_w, scalePercent_h);float fixedHeight = imgHeight * scalePercent / 100f;img.setAlignment(Image.ALIGN_LEFT);img.scalePercent(scalePercent);PdfPTable table = new PdfPTable(1); table.setWidthPercentage(100f);PdfPCell imgCell = new PdfPCell(img);imgCell.setPadding(0f);imgCell.setFixedHeight(fixedHeight);imgCell.setBorder(Rectangle.NO_BORDER);table.addCell(imgCell);table.setHorizontalAlignment(Element.ALIGN_CENTER);table.setSpacingAfter(5f);table.setSpacingBefore(5f);table.keepRowsTogether(0);this._document.add(table);}/*** 根据所在区域的宽高对图片进行不变形缩放。* @param imgByte 图片* @param scaleWidth 所在区域宽度* @param scaleHeight 所在区域高度* @return* @throws BadElementException* @throws MalformedURLException* @throws IOException*/protected Image scaledImage(byte[] imgByte, float scaleWidth, float scaleHeight) throws BadElementException, MalformedURLException, IOException{Image img = Image.getInstance(imgByte);        float imgWidth = img.getWidth();float imgHeight = img.getHeight();  float scalePercent_w = 100f;if(imgWidth > scaleWidth) scalePercent_w = scaleWidth * 100f / imgWidth;float scalePercent_h = 100f;if(imgHeight > scaleHeight) scalePercent_h = scaleHeight * 100f / imgHeight;float scalePercent = Math.min(scalePercent_w, scalePercent_h);img.setAlignment(Image.ALIGN_LEFT);img.scalePercent(scalePercent);  return img;}/*** 获取文档可操作区域的宽度(像素)。* @return*/protected float getDocWidth(){return this._document.right() - this._document.left();}}

java后端生成pdf模板合并单元格表格相关推荐

  1. word课程表设置符号与编号_用WORD设计一个课程表 ,标题使用艺术字生成 ,要包含合并单元格、边框、底纹、字体样式、背景图片,包含自己的学号和姓名。提交到锦城在线上。_学小易找答案...

    [其它]课程论文要求: ( 1 )本课程的要点及重难点分析.( 200 字以上) ( 2 )对课程内容的小结和认识.( 300 字以上) ( 3 )对课程内容增.删或修改建议.(至少一条, 100 字 ...

  2. springboot项目导出excel 合并单元格表格

    springboot项目导出excel 合并单元格表格 导出效果 业务controller 业务数据 业务实体类 注解MyExcel.java 注解 MyExcels 导出工具类MyExcelUtil ...

  3. excel模板合并单元格(jxls 合并单元格)---工具net.sf.jxls扩展---支持合并单元格(无需代码方式合并)

    概述 excel比较常用的工具类就是poi和jxl当然后者已经停止维护很久而且只支持excel2003,不支持excel2007. 对2003版,最大行数是65536行 ,对2007以上版本,最大行数 ...

  4. java poi导出excel,合并单元格

    java导出excel一般都是2种情况,一种是依赖一个实体类进行导出,或者把数据查询出来当成一个视图,对视图进行创建实体:另一种方式就是通过数据还要计算,然后一块统计,那么就不是很好处理了,我采用的是 ...

  5. java读写Excel文件、合并单元格

    [转载]http://blog.sina.com.cn/s/blog_694448320100lxbe.html 利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sou ...

  6. java mergecells_java怎么操作excel合并单元格

    展开全部 利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载. ...

  7. Java读取Excel中的合并单元格

    本文以Java示例展示读取Excel中的合并单元格的方法. 1. Maven仓库下载导入 在pom.xml中配置maven路径,指定依赖,如下: <dependency><group ...

  8. POI 写word,添加标题,表格,图片,自动生成目录,合并单元格

    工程地址:https://github.com/zheng-chang-wei/word package com.example.demo1.poi;import org.apache.poi.xwp ...

  9. java 读取excel 合并单元格_利用java读写Excel文件、合并单元格

    一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚 java 代码publicstaticvoidsetHeader(WritableSheet dataSheet,Str ...

最新文章

  1. 高通量测序技术和序列拼接算法探析
  2. [转]软件项目版本号的命名规则及格式
  3. 第十二章:二叉查找树(1)
  4. *【POJ - 3659】Cell Phone Network (树形dp,最小支配集)
  5. ibm服务器维修站点,IBM 服务器维修
  6. python 绘图中设置颜色对比强烈的组合
  7. matlab 类型转换(类型判断)
  8. Q98:三角形网格细分Bezier曲面时,注意三角形顶点的顺序(确保其对应的法向量向外)
  9. Magento首页不显示产品
  10. 答非所问:产品质量怎样?发现了很多BUG
  11. 用户画像方法论与工程化解决方案 pdf_《用户画像》作者:赵宏田
  12. 【学习笔记】人体姿态识别
  13. 联想小新电脑摄像头黑屏、检测不到设备、指示灯不亮解决方案
  14. excel验证身份证号码是否正确
  15. 数据安全法下,企业如何平衡数据安全合规与业务性能?| 产业安全专家谈
  16. try catch 用法
  17. C++实现双人枪战游戏
  18. 题解 [SP4354][AcWing137]TWINSNOW - Snowflakes/雪花雪花雪花
  19. Unity【LOD Group】- 关于性能优化中LOD的使用与总结
  20. 2008年度回顾:决胜路由应用时代

热门文章

  1. 总结JavaScript要点
  2. 小米游戏电视 ES Pro 65 英寸 评测
  3. python经典100例下载_Python3经典100例(Python3入门习题) 含答案 doc版
  4. matlab中handles,matlab中hobject与handles的区别及使用
  5. 第一次结队作业:原型设计
  6. python:绘制五角星!
  7. Android开机启动性能优化
  8. 【流程】影视和游戏的IT基础设施详解
  9. 博主的简历: 金东升 justin.jin
  10. 拜佛与拜神有什么差别?