- 浏览: 169645 次
- 性别:
文章分类
最新评论
-
18335864773:
推荐用 pageoffice 导出 word ,不需要另存 x ...
java导出含图片的word -
lfyssm:
GOOD
JAVA 调用SAP端接口 -
yixi2166:
写的真好 有帮助
JAVA 调用SAP端接口 -
QQ1145306946:
能不能加你的QQ呢?有几个问题想问你的,呵呵
回答“QQ1145306946”提的问题“jsp 勾选数据添加到另一个页面” -
康敏栋:
QQ1145306946 写道请问最后的代码function ...
回答“QQ1145306946”提的问题“jsp 勾选数据添加到另一个页面”
网上找了很多拼成的,自己也添加了一些东西,所以此处就不将转载的链接地址拷出来。
首先如果项目用到了struts,那么在web.xml和jsp中都加上.servlet,如果不加的话它会看成是.action的形式,所以到时候会显示不出图片,待会代码中会注明这点。
以下代码自己测试通过、
1.后台BarChartDemo,其中getDataSet2方法里面注释的是原作者的代码,此处将我加的代码及导入的包去掉就行。此处直接运行一下在D盘和E盘就可以生成图片,两种方法在ganarateFruitChart()中写了
2.jsp页面,将jsp:directive.page 导入换成自己路径
3.web.xml加上以下,里面DisplayChart也得加上servlet,和jsp里面一致
如果是用的tomcat,那么所生成的临时图片都在tomcat目录中temp文件中,每次点击进入页面就会生成图片,时间一久tomcat中那这些没用的图片就会很多。得想办法删了,114行我注释的这句话session.removeAttribute("JFreeChart_Deleter");//将tomcat中temp的统计图片删除
这个就是删除生成的临时图片,但也局限性,就如这jsp中如果有三个统计,分开了每次跑后台,那么在后台每次都执行session.removeAttribute("JFreeChart_Deleter"),这样就会每次将前面的所生成的图片删除,那么三次跑后台到最后就只有最后一张图片了,所以尽量只走一次后台,或者后台整合到一个方法中,前台页面就一个url.如果确实得分开来用几个统计,那可用bat脚本将temp里面的临时图片删除(个人推荐这种方法),见http://liangjie5305579-126-com.iteye.com/admin/blogs/1743824.
首先如果项目用到了struts,那么在web.xml和jsp中都加上.servlet,如果不加的话它会看成是.action的形式,所以到时候会显示不出图片,待会代码中会注明这点。
以下代码自己测试通过、
1.后台BarChartDemo,其中getDataSet2方法里面注释的是原作者的代码,此处将我加的代码及导入的包去掉就行。此处直接运行一下在D盘和E盘就可以生成图片,两种方法在ganarateFruitChart()中写了
package com.jw.magicbpm.action.officebusinessmanage; import java.awt.Color; import java.awt.Font; import java.awt.RenderingHints; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.http.HttpSession; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartRenderingInfo; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.entity.StandardEntityCollection; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.servlet.ServletUtilities; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import com.jw.magicbpm.basecommon.db.DbSessionFactory; import com.jw.magicbpm.model.officebusinessmanage.B_V_Ufp_PeopleAgeStatistics; public class BarChartDemo { /** * 饼状图 */ public static String generatePieChart(HttpSession session, PrintWriter pw, int w, int h) { String filename = null; handleGarbledAndFont();//设置乱码和字体 PieDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题 dataset, // 数据集 true, // 是否显示图例 false, // 是否生成工具 false // 是否生成URL链接 ); chart.setBackgroundPaint(Color.pink); try { /*------得到chart的保存路径----*/ ChartRenderingInfo info = new ChartRenderingInfo( new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, w, h, info, session); /*------使用printWriter将文件写出----*/ ChartUtilities.writeImageMap(pw, filename, info, true); pw.flush(); } catch (IOException e) { e.printStackTrace(); } return filename; } /** * 柱状图 * @throws Exception */ public static String generateBarChart(HttpSession session, PrintWriter pw, int w, int h) throws Exception { String filename = null; handleGarbledAndFont();//设置乱码和字体 CategoryDataset dataset = getDataSet2(); JFreeChart chart = ChartFactory.createBarChart3D("干部年龄统计图", // 图表标题 "年龄", // 目录轴的显示标签 "人数", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); Font labelFont = new Font("SansSerif", Font.BOLD, 9); CategoryPlot categoryplot = (CategoryPlot) chart.getPlot(); CategoryAxis domainAxis = categoryplot.getDomainAxis(); domainAxis.setLabelFont(labelFont);// X轴的标题文字字体 domainAxis.setTickLabelFont(labelFont);//X轴坐标上数值字体 // 设置距离图片左端距离 domainAxis.setLowerMargin(0.01); // 设置距离图片右端距离 domainAxis.setUpperMargin(0.01); try { /*------得到chart的保存路径----*/ ChartRenderingInfo info = new ChartRenderingInfo( new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, w, h, info, session); /*------使用printWriter将文件写出----*/ ChartUtilities.writeImageMap(pw, filename, info, true); pw.flush(); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return filename; } /** * 折线图 */ public static String generateLineChart(HttpSession session, PrintWriter pw, int w, int h) { String filename = null; // session.removeAttribute("JFreeChart_Deleter");//将tomcat中temp的统计图片删除 handleGarbledAndFont();//设置乱码和字体 CategoryDataset dataset = getDataSet3(); JFreeChart chart = ChartFactory.createLineChart("水果产量图", // 图表标题 "水果", // 目录轴的显示标签 "产量", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/ chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); /*------------配置图表属性--------------*/ // 1,设置整个图表背景颜色 chart.setBackgroundPaint(Color.pink); /*------------设定Plot参数-------------*/ CategoryPlot plot = chart.getCategoryPlot(); // 2,设置详细图表的显示细节部分的背景颜色 // plot.setBackgroundPaint(Color.PINK); // 3,设置垂直网格线颜色 plot.setDomainGridlinePaint(Color.black); // 4,设置是否显示垂直网格线 plot.setDomainGridlinesVisible(true); // 5,设置水平网格线颜色 plot.setRangeGridlinePaint(Color.blue); // 6,设置是否显示水平网格线 plot.setRangeGridlinesVisible(true); try { /*------得到chart的保存路径----*/ ChartRenderingInfo info = new ChartRenderingInfo( new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, w, h, info, session); /*------使用printWriter将文件写出----*/ ChartUtilities.writeImageMap(pw, filename, info, true); pw.flush(); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return filename; } /** * 获取一个饼状图的简单数据集对象 * * @return */ private static PieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("苹果", 100); dataset.setValue("梨子", 200); dataset.setValue("葡萄", 300); dataset.setValue("香蕉", 400); dataset.setValue("荔枝", 500); return dataset; } /** * 获取一个柱状图数据集对象 * * @return * @throws Exception */ private static CategoryDataset getDataSet2() throws Exception { List<B_V_Ufp_PeopleAgeStatistics> list_B_V_Ufp_PeopleAgeStatistics1=PeopleAgeStatisticsAction.searchGovernmentLevelList(DbSessionFactory.getOracleSession()); List<B_V_Ufp_PeopleAgeStatistics> list_B_V_Ufp_PeopleAgeStatistics2=PeopleAgeStatisticsAction.searchTownLevelList(DbSessionFactory.getOracleSession()); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getUnderthirty(), "正局", "30周岁及以下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getThirtyonetothirtyfive(), "正局", "31-35周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getThirtysixtoforty(), "正局", "36-40周岁下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getFortyonetofortyfive(), "正局", "41-45周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getFortysixtofifty(), "正局", "46-50周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getFiftyonetofiftyfive(), "正局", "51-55周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(0).getFiftysixtosixty(), "正局", "56-60周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getUnderthirty(), "正科级", "30周岁及以下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getThirtyonetothirtyfive(), "正科级", "31-35周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getThirtysixtoforty(), "正科级", "36-40周岁下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getFortyonetofortyfive(), "正科级", "41-45周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getFortysixtofifty(), "正科级", "46-50周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getFiftyonetofiftyfive(), "正科级", "51-55周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics1.get(1).getFiftysixtosixty(), "正科级", "56-60周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getUnderthirty(), "副局级", "30周岁及以下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getThirtyonetothirtyfive(), "副局级", "31-35周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getThirtysixtoforty(), "副局级", "36-40周岁下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getFortyonetofortyfive(), "副局级", "41-45周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getFortysixtofifty(), "副局级", "46-50周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getFiftyonetofiftyfive(), "副局级", "51-55周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(0).getFiftysixtosixty(), "副局级", "56-60周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getUnderthirty(), "其他", "30周岁及以下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getThirtyonetothirtyfive(), "其他", "31-35周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getThirtysixtoforty(), "其他", "36-40周岁下"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getFortyonetofortyfive(), "其他", "41-45周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getFortysixtofifty(), "其他", "46-50周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getFiftyonetofiftyfive(), "其他", "51-55周岁"); dataset.addValue(list_B_V_Ufp_PeopleAgeStatistics2.get(1).getFiftysixtosixty(), "其他", "56-60周岁"); // dataset.addValue(100, "北京", "苹果"); // dataset.addValue(500, "北京", "荔枝"); // dataset.addValue(400, "北京", "香蕉"); // dataset.addValue(200, "北京", "梨子"); // dataset.addValue(300, "北京", "葡萄"); // dataset.addValue(500, "上海", "葡萄"); // dataset.addValue(600, "上海", "梨子"); // dataset.addValue(400, "上海", "香蕉"); // dataset.addValue(700, "上海", "苹果"); // dataset.addValue(300, "上海", "荔枝"); // dataset.addValue(300, "广州", "苹果"); // dataset.addValue(200, "广州", "梨子"); // dataset.addValue(500, "广州", "香蕉"); // dataset.addValue(100, "广州", "葡萄"); // dataset.addValue(400, "广州", "荔枝"); return dataset; } /** * 获取一个折线图数据集对象 * * @return */ private static CategoryDataset getDataSet3() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "北京", "一月"); dataset.addValue(200, "北京", "二月"); dataset.addValue(100, "北京", "三月"); dataset.addValue(400, "北京", "四月"); dataset.addValue(300, "北京", "五月"); dataset.addValue(500, "北京", "六月"); dataset.addValue(90, "北京", "七月"); dataset.addValue(700, "北京", "八月"); dataset.addValue(800, "北京", "九月"); dataset.addValue(1000, "北京", "十月"); dataset.addValue(300, "北京", "十一月"); dataset.addValue(700, "北京", "十二月"); dataset.addValue(1200, "上海", "一月"); dataset.addValue(1100, "上海", "二月"); dataset.addValue(1000, "上海", "三月"); dataset.addValue(900, "上海", "四月"); dataset.addValue(800, "上海", "五月"); dataset.addValue(700, "上海", "六月"); dataset.addValue(600, "上海", "七月"); dataset.addValue(500, "上海", "八月"); dataset.addValue(400, "上海", "九月"); dataset.addValue(300, "上海", "十月"); dataset.addValue(200, "上海", "十一月"); dataset.addValue(100, "上海", "十二月"); dataset.addValue(600, "武汉", "一月"); dataset.addValue(500, "武汉", "二月"); dataset.addValue(400, "武汉", "三月"); dataset.addValue(300, "武汉", "四月"); dataset.addValue(200, "武汉", "五月"); dataset.addValue(100, "武汉", "六月"); dataset.addValue(200, "武汉", "七月"); dataset.addValue(300, "武汉", "八月"); dataset.addValue(400, "武汉", "九月"); dataset.addValue(500, "武汉", "十月"); dataset.addValue(600, "武汉", "十一月"); dataset.addValue(700, "武汉", "十二月"); return dataset; } /** * 处理乱码和字体 * @throws IOException */ public static void handleGarbledAndFont(){ //创建主题样式 StandardChartTheme standardChartTheme=new StandardChartTheme("CN"); //设置标题字体 standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20)); //设置图例的字体 standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15)); //设置轴向的字体 standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15)); //应用主题样式 ChartFactory.setChartTheme(standardChartTheme); } /** * 在本地生成图片文件 * @throws Exception * @throws IOException */ public static void ganarateFruitChart() throws Exception{ CategoryDataset dataset = getDataSet2(); JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题 "月份", // 目录轴的显示标签 "产量(公斤)", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); FileOutputStream fos_jpg = null; try { fos_jpg = new FileOutputStream("D:\\fruit.jpg");//将图片保存到d盘 ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400, 300, null); //将图片保存到E盘(另外一种写法) ChartUtilities.saveChartAsPNG(new File("E:/BarChart3D.png"), chart, 800, 500); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fos_jpg.close(); } catch (Exception e) { } } } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { ganarateFruitChart(); } }
2.jsp页面,将jsp:directive.page 导入换成自己路径
<%@ page contentType="text/html;charset=GBK"%> <%@ page import="java.io.PrintWriter"%> <jsp:directive.page import="com.jw.magicbpm.action.officebusinessmanage.BarChartDemo"/> <html> <head> <title> </title> <% //饼状图 String fileNamePie=BarChartDemo.generatePieChart(session,new PrintWriter(out),580,250); //如果用了strut的话此处为DisplayChart.servlet,不能DisplayChart,原因上面说了 String graphURLPie = request.getContextPath() + "/servlet/DisplayChart.servlet?filename=" + fileNamePie; //柱状图 String fileNameBar=BarChartDemo.generateBarChart(session,new PrintWriter(out),580,250); String graphURLBar = request.getContextPath() + "/servlet/DisplayChart.servlet?filename=" + fileNameBar; //折线图 String fileNameLine=BarChartDemo.generateLineChart(session,new PrintWriter(out),580,250); String graphURLLine = request.getContextPath() + "/servlet/DisplayChart.servlet?filename=" + fileNameLine; %> </head> <body bgcolor="#ffffff"> <table align="center" width="580" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <img src="<%= graphURLPie %>"width=580 height=250 border=0 > </td> </tr> <tr> <td> <img src="<%= graphURLBar %>"width=580 height=250 border=0 > </td> </tr> <tr> <td> <img src="<%= graphURLLine %>"width=580 height=250 border=0 > </td> </tr> </table> </body> </html>
3.web.xml加上以下,里面DisplayChart也得加上servlet,和jsp里面一致
<servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class> org.jfree.chart.servlet.DisplayChart </servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart.servlet</url-pattern> </servlet-mapping>
如果是用的tomcat,那么所生成的临时图片都在tomcat目录中temp文件中,每次点击进入页面就会生成图片,时间一久tomcat中那这些没用的图片就会很多。得想办法删了,114行我注释的这句话session.removeAttribute("JFreeChart_Deleter");//将tomcat中temp的统计图片删除
这个就是删除生成的临时图片,但也局限性,就如这jsp中如果有三个统计,分开了每次跑后台,那么在后台每次都执行session.removeAttribute("JFreeChart_Deleter"),这样就会每次将前面的所生成的图片删除,那么三次跑后台到最后就只有最后一张图片了,所以尽量只走一次后台,或者后台整合到一个方法中,前台页面就一个url.如果确实得分开来用几个统计,那可用bat脚本将temp里面的临时图片删除(个人推荐这种方法),见http://liangjie5305579-126-com.iteye.com/admin/blogs/1743824.
发表评论
-
Oracle手工修改JOB属性(转载mark)
2017-05-18 16:01 744转载地址:http://blog.itpub.net/2913 ... -
将Oracle 11g改为密码大小写不敏感的方法
2014-03-10 15:41 891转载地址:http://blog.sina.com.cn/s/ ... -
鼠标移动显示层
2013-12-24 15:56 942转自csdn中一个朋友的回答答案http://bbs.csdn ... -
java解析xml字符串(用dom4j)
2013-12-10 12:12 27479转自:http://blog.chinaunix. ... -
StringUtils的isBlank与isEmply
2013-05-16 14:00 930转载地址:http://www.cnblogs.com/Xia ... -
java高并发解决方案
2013-03-20 17:06 893转载地址:http://www.juzik ... -
jrebel在Myeclipse中的使用
2013-03-05 18:23 4978JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在 ... -
Weblogic的那些端口
2013-02-22 09:31 2100转载地址:http://blog.sina.com.cn/s/ ... -
oracle wm_concat(column)函数的使用
2013-02-01 17:18 1032转载地址:http://database.51cto.com/ ... -
oracle根据分隔符将字符串分割成数组函数
2013-01-16 10:29 10683--创建表类型 create or replace type ... -
javascript:window.open 打开最大化窗口设置及详解
2013-01-15 16:22 1983转载地址:http://www.cnblogs.com/yun ... -
离开页面执行 onbeforeunload与onunload事件区别
2013-01-06 11:24 1357onunload,onbeforeunload都是在刷新或关闭 ... -
Oracle中NVARCHAR2与VARCHAR2的相互转换
2013-01-05 13:22 14662转载地址:http://adamxgl.blog.163.co ... -
jfreechart属性设置
2012-12-03 16:51 1194转载地址:http://syc001.iteye.com/bl ... -
sun.misc.BASE64Encoder找不到jar包的解决方法 .
2012-10-26 18:04 1049地址:http://blog.csdn.net/jbxiaoz ... -
js添加、删除select
2012-10-26 14:29 955地址:http://www.xwqy.com/news_det ... -
POI HSSF 操作MS Excel简述
2012-09-07 10:31 1362文章转自http://java.mblogge ... -
java的HashCode方法 (转载)
2012-07-18 18:29 811文章出自http://www.cnblogs.com/baty ...
相关推荐
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
数通系列ospf学习思维导图
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
VBA复制指定路径文件待粘贴【可用于自动发微信文件】.xlsm 有时候我们需要复制指定路径的文件,然后到指定的位置或软件进行粘贴 所有我们可根据指定的路径文件进行复制,待粘贴
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
● 数据集介绍:零售食品 LOGO 检测数据集,真实零售食品 LOGO 高质量商品图片数据,数据集含常见零售食品 LOGO 图片,包括饮料类、酒类、调味品类、膨化饼干类、巧克力类、常见零食类等等。数据集类别丰富,标注标签包含 1500 个商品商标类别; ● 适用实际项目应用:零售食品 LOGO 检测项目,以及作为通用新零售场景商品目标检测数据集场景数据的补充; ● 标注说明:采用 labelimg 标注软件进行标注,标注质量高,提供 VOC(xml)、COCO (json)、YOLO (txt) 三种常见目标检测数据集格式,可以直接用于如 YOLO 等的算法训练; 注意:由于数据集资源超过 1G,所以托管在我的百度网盘,所以这里的资源格式是 PDF,内附数据集基本情况介绍以及数据集获取方式!
12121212132323232323
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
断指(肢)再植术护理规定(医院规章制度管理文件).docx
燃油消耗统计表.docx
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
外固定支架患者健康教育学习培训资料(心理指导、饮食指导、休息、运动或体位指导、功能锻炼 ).docx
chromedriver-win64_118.0.5940.0.zip
在 Qt 框架中,要在 QTableWidget的表头中添加复选框,可以通过继承 QHeaderView 并重写 paintSection 方法来实现。 介绍一种继承 QHeaderView的方法分别实现QTableWidget中添加复选框,可全选/全不选/部分选。
未来差异化SDP零信任的技术创新点 - AI的结合思路及技术落地方案 ;探讨AI与SDP零信任结合的技术创新点 - 当前网络安全形势与挑战 - 传统安全架构的局限性 - SDP和零信任的兴起背景
环境因素及控制措施表.docx
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。