`
cqh520llr
  • 浏览: 527323 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

jstl自定义标签-转载

 
阅读更多
开发自定义标记需要有两个组件:
1、一个是描述标记特征的标记库描述文件(TLD文件)
2、另一个是Java类,也称为标记处理器,为了完成标记的行为,JSP容器要执行标记处理器。
自定义标签实现过程:
 1、写标签处理器类:TestTag.java。
 2、写tld文档:用来指定标签的名字,标签库等。
 3、用JSP来测试(指定标签库的位置tld,指定前缀名,使用标签)。

首先编写标签处理器类,标签处理器类需要继承javax.servlet.jsp.tagext.TagSupport或者javax.servlet.jsp.tagext.BodyTagSupport,二者区别暂时不知道,如果有高手知道,请给与指导,谢谢先。一般实现doStartTag和doEndTag方法,例如:

public class ExampleTag extends TagSupport{
                 public int doStartTag(){
                    //当处理开始标记的时候调用该方法
                }
               public int doEndTag(){
                       //当处理结束标记的时候调用该方法
               }
}

doStartTag方法和doEndTag方法的返回值说明:

SKIP_BODY:跳过自定义标签间的代码;
       SKIP_PAGE:跳过在此之后的所有页面内容;
       EVAL_BODY_INCLUDE:执行自定义标签间内容;
       EVAL_BODY_AGAIN:再次执行自定义标签间内容;
       EVAL_PAGE:执行标签后页面内容;

常用的返回值为:EVAL_BODY_INCLUDE。

常用的属性有pageContex。

例如:

package com.test;
       import java.io.IOException;
       import javax.servlet.jsp.tagext.BodyTagSupport;
       public class TestAttributeTag extends BodyTagSupport {

//自定义标签支持带参数
      private String name;
      public String getName() {
                return name;
      }
      public void setName(String name) {
                this.name = name;
      }
      public int doStartTag(){
                try {
                              pageContext.getOut().print("Hello "+name);
                } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                }
                return EVAL_BODY_INCLUDE;
     }
     public int doEndTag(){
                return  EVAL_BODY_INCLUDE;
      }
}

然后讨论一下TLD文档编写,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version>1.0</tlib-version>  //标签版本
 <jsp-version>1.2</jsp-version>  //标签依赖jsp的版本
 <short-name>zl</short-name>  //默认前缀名称
 <uri>http://www.test.com</uri>  //指定标签库德uri
 <tag>
  <name>testtag</name>         //标签名称
  <tag-class>com.test.TestAttributeTag</tag-class>    //标签处理器类
  <body-content>JSP</body-content>                      //标签主体内容,一般选择JSP
  <attribute>                                                           //标签的参数name
   <name>name</name>
   <required>true</required>                                //参数是否必须,true表示必须,false反之
   <rtexprvalue>true</rtexprvalue>                       //是否支持EL表达式
   <type>java.lang.String</type>                         //参数类型
   <description>用户名称</description>             //参数描述
  </attribute>
 </tag>
</taglib>

最后用jsp页面测试自定义标签,例如:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="zl" uri="http://www.test.com" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">   
    <title>My JSP 'ZidingyiTag.jsp' starting page</title>   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head> 
  <body>
    This is my JSP page. <br>   
    <zl:testtagname="test"></zl:testtag>  
  </body>
</html>

例子比较简单,有什么不对地方,欢迎大家批评!



仅仅是个人的经验
不过希望对大家有帮助
先解释一下自定义标签的用法
网上粘来一段

自定义函数库步骤:
1.定义类和方法(方法必须是public static)
public class MyFunctions {
public static String testMyfn(String str) {
return "i am " + str;
}
}
2.编写自定义tld文件,并且将此文件放到WEB-INF目录下或WEB-INF任意子目录下
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>myfn 1.1 functions library</description>
<display-name>myfn functions</display-name>
<tlib-version>1.0</tlib-version>
<short-name>myfn</short-name>
<uri>http://hi.baidu.com/2008_pc/functions</uri>
<function>
<name>testMyfn</name>
<function-class>com.struts.functions.MyFunctions</function-class>
<function-signature>java.lang.String testMyfn(java.lang.String)</function-signature>
</function>
</taglib>
3.在页面中采用taglib指令引入自定义函数库
<%@ taglib prefix="myfn" uri="http://hi.baidu.com/2008_pc/functions" %>
4.在struts的JstlFnAction里面设置值
request.setAttribute("name", "shiyuhao");
5.调用
${myfn:testMyfn(name) }
输出结果:i am shiyuhao

好了也就是说我们写了一个类 类里有个方法为static就行了ok
简单但是也有其他的情况
A:
jstl有这样一个特性 即 某对象instance存在一个getSomeThings()的方法 那么只要调用${instance.someThings}就行了
那么 调用自定义函数的时机就很明确了
假设 我现在某对象中需要获取一个List的长度,这个很麻烦,因为List类型没有提供给我们getSize方法
那么 我们可以调用fn 也可以自己写自定义函数
但是在这种情况下没必要 因为 我们如过能获取对象的引用 那么 只需在对象中加入 getListSzie()方法就行了
那么总结出jstl的自定义函数的特性
即在需要传参后才能确定返回值的情况下 我们只好使用自定义函数 如果不要传入参数 那么 写一个getter就可以了
B:
自定义函数情况下 我们肯传入一个List<String>或者 List<自定义类>
那么看看配置文件
假设一个方法 getMax() 获取List<String>中的最小值
传入一个List<String> 返回一个最大的String
其中一句
<function-signature>java.lang.String getMax(java.util.List<java.lang.String>)</function-signature>
好吧 如果你使用eclipse 那么一个大红叉叉已经呈现在眼前了
因为<>会在xml中解释成为一个标示符
简单的跳过去就行
写成
<function-signature>java.lang.String getMax(java.util.List)</function-signature>
然后在方法里去强制转换 这就没问题了
C:
我们经常出表的时候要去计算和
当然 有人说 加和最好在sql里写好
……我记得我一跳sql本来30行就ok了 为了在sql计算 合计 小记 累计 平均 加权平均
写到了快200行
复杂的中国式表我们不去讨论 客户的要求一定得满足
那么我们怎么办
其实页面上累加是非常简单的,如果你不用jstl的话轻松点
但是代码很难看 难看的代码 我们写了干嘛
假设 我需要列出一个表中的列累加
设 行row 列col
这个表就复杂
简化为两种情况
划一下看看
12
首先 构造我们的vo 从dao里出来以后,我们的数据室这样一个对象的List
class Inner{
private String row1;
private String row2;
private double value;//这个double不对 下面再说O(∩_∩)O
}
第一种情况下 我们只要设置一个变量 去累加就行了
第二种情况很麻烦,因为合计在数据最上头 那我们数据还没列出来呢 怎么累加
我们在仅仅讨论jstl的情况下
情况1可以用<c:set >这个标签来做累加
页面中用<c:forEach>去循环 每次<c:set  value=${var+新的值 } var='var'/>
情况2 我们可以……还是用<c:forEach>去循环 每次<c:set  value=${var+新的值 } var='var'/>
然后下面条条 在循环一次就好了
不过这样到底好么 页面中如果有多个累加 就必须增加多个<c:set>这样使得页面相当不整洁
考虑效率方面 反正是循环整个list去累加
因此 使用自定义函数取累加 效率上一样的 再加上迭代器比较好写 嘿嘿 写个自定义函数 不是更好嘛
D:
实际上 上面个两个表中 还存在精度问题
如同上例
class Inner{
private String row1;
private String row2;
private double value;//就是这个
}
jstl和java一样 实际上jsp中有自定义标签的说法,我是说jsp去写一个标签的意思
(有的教程上没,那么 推荐headfirst的jsp&servlet)
java本身对数据处理很糟搞,浮点型 或者double的精度都不能满足实际数据的需求
用<c:set>就相当于request.setAttribute
这样的累加无异于
double a = 0;
double b = 1;
a = a+b;
数据精度绝对会错
先讨论jstl的简单做法,我们知道
有一个<fmt:formatNumber value= pattern=/>这个value是一个字符串,所以个人建议在页面要输出的全部值都用String类型 这个类改一下
class Inner{
private String row1;
private String row2;
private Stringvalue;
}
相加的时候 <c:set value=<fmt:formatNumber>inner.value+var</fmt:formatNumber> var=‘var’/>
这里需要注意一下 fmt的四舍五入
因为默认情况下是4舍6入5奇偶
"4舍6入5奇偶":
<fmt:formatNumber  value="${1170.5}"  pattern="#,###,###,###"/>
"4舍5入":
<fmt:formatNumber  value="${1170.5 + 0.0001}"  pattern="#,###,###,###"/>
还得加个量才行
E:
那么实际上依然存在数据的精度问题,因为累加的时候去设置大量的<c:set>使页面不整洁
除此之外,为了显示出一个四舍五入的数,需要引入大量标签
因此个人建议的方法是 使用自定义标签
BigDecimal是个好东西,可以通过一个字符串来构造一个精确的数(实际上 也只有字符串是精确的)
而自定义函传入的参数恰恰又是字符串,这样 定义自己的累加函数
假设一个稍微复杂的例子
有多个班级 1 2 3
假设列出每个班级的人数 和学费的数目
做成如下表格

这个是典型的中国是报表
我们舍去dao部分
如下代码
vo:
import java.util.ArrayList;
import java.util.List;
public class StudentList {
private List<Inner> list = new ArrayList<Inner>();
public class Inner{
private String classNumber;//班级编号
private String personNumber;//班级人数
private String price;//钱数
public String getClassNumber() {
return classNumber;
}
public void setClassNumber(String classNumber) {
this.classNumber = classNumber;
}
public String getPersonNumber() {
return personNumber;
}
public void setPersonNumber(String personNumber) {
this.personNumber = personNumber;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
public List<Inner> getList() {
return list;
}
public void setList(List<Inner> list) {
this.list = list;
}
}
request.setAttribute("vo",list);
扔到了页面后 第一行需要显示合计
写一个自定义函数
class JSTLUtils{
public static String getPersonNumberSum(List list){
List<StudentList.Inner> innerList = (List<StudentList.Inner>)list;
Iterator<StudentList.Inner> iterator = innerList.iterator();
BigDecimal resultBigDecimal = new BigDecimal(0);
while(iterator.hasNext()){
StudentList.Inner inner = iterator.next();
BigDecimal innerBigDecimal = new BigDecimal(inner.getPersonNumber());
resultBigDecimal = resultBigDecimal.add(innerBigDecimal);
}
return resultBigDecimal.toString();
}
public static String getPriceSum(List list){
List<StudentList.Inner> innerList = (List<StudentList.Inner>)list;
Iterator<StudentList.Inner> iterator = innerList.iterator();
BigDecimal resultBigDecimal = new BigDecimal(0);
while(iterator.hasNext()){
StudentList.Inner inner = iterator.next();
BigDecimal innerBigDecimal = new BigDecimal(inner.getPrice());
resultBigDecimal = resultBigDecimal.add(innerBigDecimal);
}
return resultBigDecimal.toString();
}
}
这里基本上都用了BigDecimal这个类来进行加
然后配置一下
<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.1</tlib-version>
<short-name>jstlUtils</short-name>
<uri>http://com.tool.JSTLFunctionUtils</uri>
<function>
<description>人数和</description>
<name>getPersonNumberSum</name>
<function-class>com.tool.JSTLFunctionUtils.JSTLUtils</function-class>
<function-signature>
java.lang.String getPersonNumberSum(java.util.List)
</function-signature>
</function>
    <function>
<description>钱数和</description>
<name>getPriceSum</name>
<function-class>com.tool.JSTLFunctionUtils.JSTLUtils</function-class>
<function-signature>
java.lang.String getPriceSum(java.util.List)
</function-signature>
</function>
</taglib>
页面上调用就${jstlUtils:getPersonNumberSum(vo.list)}就ok了
之后的循环 调用 <c:forEach items="${vo.list}" var="var">
去循环就好了
实际上 是解决了数据的准确性问题
那么 对于合计在最下方的情况下,为了数据的准确还是使用自定义函数比较好,因为 对于管理系统中,钱这个东西绝对不能错而jstl的fmt具体怎么加的,与其我们花一天去看源代码 不如自己写的又快又好又准确
(我没看fmt的源代码 没找到……不过 感觉上时java.text.Format的那几个,上一篇已经提过了 即使使用了FormatNumber也不是很准确的)
F:
这么多情况后 还有最后一个比较垃圾的问题,就是数据0的问题
客户的情况很多,但是对于数据0无外乎两种
一 0就别显示出来
二 没有就显示0
但是jstl就是很烦人,因为没有的情况下,我们取到的是null jstl不会将null的显示出来这样就空了
第一种情况个人建议是改写vo和自定义函数
如果返回的是0就返回“”
对于第二种情况
只能去判断了 jstl或者自定义函数 感觉上没啥区别 (个人认为)

ok 罗嗦了这么多 第一 是为了对大家有点帮助 第二 是为了自己不忘
为了您的安全,请只打开来源可靠的网址

打开网站    取消
来自: http://hi.baidu.com/zhangxia6110/blog/item/a4e2aa0093e60a93e850cd61.html 
分享到:
评论

相关推荐

    Java 最常见 200+ 面试题全解析:面试必备.pdf

    6. JavaWeb:包括了解和使用Servlet、Filter、Listener、JSP、EL表达式、JSTL标签库等Web技术。 7. 异常:覆盖了Java中的异常处理机制,包括异常类型、抛出异常、捕获异常、自定义异常等。 8. 网络:涉及基于Java...

    毕业设计物联网实战项目基于Eclipse Theia开源框架开发的物联网在线编程IDE.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    Android毕设实战项目基于Android的医院挂号系统.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于Python的KMeans和EM算法结合图像分割项目.zip

    # 基于Python的KMeans和EM算法结合图像分割项目 ## 项目简介 本项目结合KMeans聚类和EM(期望最大化)算法,实现对马赛克图像的精准分割。通过Gabor滤波器提取图像的多维特征,并利用KMeans进行初步聚类,随后使用EM算法优化聚类结果,最终生成高质量的分割图像。 ## 项目的主要特性和功能 1. 图像导入和预处理: 支持导入马赛克图像,并进行灰度化、滤波等预处理操作。 2. 特征提取: 使用Gabor滤波器提取图像的多维特征向量。 3. 聚类分析: 使用KMeans算法对图像进行初步聚类。 利用KMeans的聚类中心初始化EM算法,进一步优化聚类结果。 4. 图像生成和比较: 生成分割后的图像,并与原始图像进行比较,评估分割效果。 5. 数值比较: 通过计算特征向量之间的余弦相似度,量化分割效果的提升。 ## 安装使用步骤 ### 假设用户已经下载了项目的源码文件 1. 环境准备:

    HCIP第一次作业:静态路由综合实验

    HCIP第一次作业:静态路由综合实验

    毕设单片机实战项目基于stm32、esp8266和Android的智能家居系统-设备端.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    统计学基于Python的Johnson-SU分布参数计算与优化:数据拟合及弹性网络参数优化方法实现(复现论文或解答问题,含详细可运行代码及解释)

    内容概要:本文详细介绍了Johnson-SU分布的参数计算与优化过程,涵盖位置参数γ、形状参数δ、尺度参数ξ和伸缩参数λ的计算方法,并实现了相应的Python代码。文中首先导入必要的库并设置随机种子以确保结果的可复现性。接着,分别定义了四个参数的计算函数,其中位置参数γ通过加权平均值计算,形状参数δ基于局部均值和标准差的比值,尺度参数ξ结合峰度和绝对偏差,伸缩参数λ依据偏态系数。此外,还实现了Johnson-SU分布的概率密度函数(PDF),并使用负对数似然函数作为目标函数,采用L-BFGS-B算法进行参数优化。最后,通过弹性网络的贝叶斯优化展示了另一种参数优化方法。; 适合人群:具有Python编程基础,对统计学和机器学习有一定了解的研究人员或工程师。; 使用场景及目标:①需要对复杂数据分布进行建模和拟合的场景;②希望通过优化算法提升模型性能的研究项目;③学习如何实现和应用先进的统计分布及优化技术。; 阅读建议:由于涉及较多数学公式和编程实现,建议读者在阅读时结合相关数学知识,同时动手实践代码,以便更好地理解和掌握Johnson-SU分布及其优化方法。

    TSP问题的3种智能优化方法求解(研究生课程《智能优化算法》结课大作业).zip

    TSP问题的3种智能优化方法求解(研究生课程《智能优化算法》结课大作业).zip

    毕业设计物联网实战项目基于Rtthread和MQTT搭建的物联网网关.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    基于STM32F103C8T6的温湿度传感器(HAL库版),通过串口向电脑端反馈数据(附通过ESP8266-01s模块连接WIFI上传云平台的资料代码-固件库版本).zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    自动发布Java项目(Tomcat)Shell脚本

    自动发布Java项目(Tomcat)Shell脚本

    (源码)基于webpack和Vue的前端项目构建方案.zip

    # 基于webpack和Vue的前端项目构建方案 ## 项目简介 本项目是基于webpack和Vue构建的前端项目方案,借助webpack强大的打包能力以及Vue的开发特性,可用于快速搭建现代化的前端应用。项目不仅完成了基本的webpack与Vue的集成配置,还在构建速度优化和代码规范性方面做了诸多配置。 ## 项目的主要特性和功能 1. 打包功能运用webpack进行模块打包,支持将scss转换为css,借助babel实现语法转换。 2. Vue开发支持集成Vue框架,能使用Vue单文件组件的开发模式。 3. 构建优化采用threadloader实现多进程打包,cacheloader缓存资源,极大提高构建速度开启热更新功能,开发更高效。 4. 错误处理与优化提供不同环境下的错误映射配置,便于定位错误利用webpackbundleanalyzer分析打包体积。

    Hands-On Large Language Models - Jay Alammar 袋鼠书 《动手学大语言模型》

    Hands-On Large Language Models - Jay Alammar 袋鼠书 《动手学大语言模型》PDF

    《基于YOLOv8的舞蹈动作分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    (源码)基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统.zip

    # 基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统 ## 项目简介 本项目是一个基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统。系统通过Arduino Feather M0采集传感器数据,并通过WiFi将数据传输到Raspberry Pi。Raspberry Pi运行BalenaOS,集成了MySQL、PHP、NGINX、Apache和Grafana等工具,用于数据的存储、处理和可视化。项目适用于环境监测、物联网设备监控等场景。 ## 项目的主要特性和功能 1. 传感器数据采集使用Arduino Feather M0和AM2315传感器采集温度和湿度数据。 2. WiFi数据传输Arduino Feather M0通过WiFi将采集到的数据传输到Raspberry Pi。

    《基于YOLOv8的音响设备识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Android毕设实战项目这是一个android 图书管理系统.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于智龙2.0开发板和窄带物联网模块BC95。操作系统为RTT2.1。.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于Arduino的WiFi按钮项目.zip

    # 基于Arduino的WiFi按钮项目 ## 一、项目简介 本项目是一个基于ESP8266芯片的Arduino项目,主要实现WiFi连接、电压检测、LED灯控制以及向服务器发送POST请求等功能。通过简单的按钮操作,可以实现与服务器通信并获取相关信息,同时能检测电池电压并提示用户。 ## 二、项目的主要特性和功能 1. WiFi连接项目能够自动连接到指定的WiFi网络。 2. 电压检测通过ADC(模数转换器)检测电池电压,并在电压低于阈值时发出警告。 3. LED灯控制通过控制LED灯的亮灭来提示用户不同的状态信息(如连接成功、电压低等)。 4. 服务器通信项目可以向指定的服务器发送POST请求并处理返回的HTTP响应。 ## 三、安装使用步骤 1. 环境准备确保已安装Arduino IDE和ESP8266插件。 2. 下载源码下载项目的源码文件并解压。 3. 打开项目在Arduino IDE中打开解压后的main.cpp文件。

    scipy-0.10.1-cp26-cp26mu-manylinux1_x86_64.whl

    该资源为scipy-0.10.1-cp26-cp26mu-manylinux1_x86_64.whl,欢迎下载使用哦!

Global site tag (gtag.js) - Google Analytics