表现与数据分离、Web语义化

表现与数据分离:

也可以说是界面与数据分离,要体现在代码上,操作数据的代码和操作界面的代码,要分开写。

优势:当页面需求发生改变,只需要改写界面的代码,并且修改的代码不能影响到操作数据访问的代码。

 

例如:

<script>
$(function () {
var Countries = function () { } //1、匿名函数 一个函数对象

Countries.prototype = { //2、*函数对象* 的原型
_items: [],
_getData:function(success){
var items = [
{ id: 0, name: '中国' },
{ id: 1, name: '日本' },
{ id: 2, name: '美国' }
];
$.extend(this._items, items);//将items对象 合并到jquery的全局对象中。
success(items);
},


on_selected: $.Callbacks(),
on_inserted: $.Callbacks(),


select: function () {
var self = this;
this._getData(function (items) {
self.on_selected.fire({
sender:self,
items:items
});
});
},
insert: function (item) {
var self = this;
this._items.push(item);
self.on_inserted.fire({ sender: self, item: item });
}
}

//==============================================================================================

//以下为界面代码,当要调整界面,改这里就行了~~

var countries = new Countries();
countries.on_selected.add(function (args) {
$('#countries').append($('<option selected = "selected">').attr('value',args.item.id).text(args.item.name));
});

var id = 10;
$("#btnAdd").click(function () {
countries.insert({id:++id,name:$('#countryName').val()});
});

countries.select();
});

//上面的代码真正做到了结构和内容分离:

//1、在数据访问的代码中,没有一行是涉及UI,不能对UI有依赖
//当界面需求发生变化,只要修改界面的代码就可以了。
</script>

Web 语义化

学术界将web语义化称为Web3.0的核心。

目标是:提高计算机和人对于web代码的可读性。

核心思想是:标注网页对象*使其对应本体中的实体,并通过逻辑等手段进行自动推理。

作用在于更好整合网络上的资源,使计算机能够处理分布于不同位置的信息,自动产生问题的解决方案

可以分为三个阶段理解:

1、原始的一些有实际含义的标签定义。浏览器和W3C组织推出的如h1~h6、thead、ul、ol的HTML标签,用于在Web页面中组织对应的内容,以达到更方便的协作及传播互联网内容。搜索引擎很好的利用了这些语义化标签抓取内容,又鉴于搜索引擎的巨大流量推荐,Web前端不得不考虑SEO,从而两者实现有益的循环,共同推进语义化标签的使用。

2、前端开发人员自定义的标签。但Web的发展超乎想象,起初定义的HTML语义标签,不足以实现对web页面各个部分的功能或位置的描述,所以web前端人员利用HTML标签的id和class属性,进一步对HTML标签进行描述,如对页脚HTML标签添加如 id=“footer” 或者 class = “footer”的属性(值),以“无声”的方式在不同的前端程序员或者前后端程序员间实现交流。

3、在第二步的推动下结合新技术出现的一些标签。W3C组织意识到了之前HTML版本的不足,推出的HTML5进一步推进了Web语义化发展,采用了诸如footer、section等语义化标签,弥补了采用id = “footer” 或者class=“footer”形式的不足。

 

一些常用的html5语义化标签:节元素标签、文本元素标签、分组元素标签

<title></title>:简短、描述性、唯一(提升搜索引擎排名)。

搜索引擎 会将title作为判断页面主要内容的指标,有效的title应该包含几个页面内容密切相关的关键字,建议将title核心内容放在前60个字符中。

 

<hn></hn>:h1~h6分级标题,用于创建页面信息的层级关系。

对于搜索引擎而言,如果标题与搜索词匹配,这些标题就会被赋予很高的权重,尤其是h1.

 

<header></header>:元素代表“网页”或“section”的页眉。

通常包含h1~h6元素或hgroup,作为整个页面或者一个内容块的标题。

也可以包裹一节的目录部分,一个搜索框,一个nav,或者任何相关logo。

整个也买你没有限制header元素的个数,可以拥有多个,可以为每个内容块增加一个header元素。

<header>

      <hgroup>

            <h1>网站标题</h1>

            <h1>网站副标题</h1>

      </hgroup>

</header>

 

footer元素

footer元素代表“网页”或“section”的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。

如果footer元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似信息。

<footer>

     COPYRIGHT@小贝

</footer>

 

hgroup元素

代表“网页”或“section”的标题,当元素有多个层级时,该元素可以将h1到h6元素放在其内,譬如文章的主标题和副标题的组合。

<hgroup>

     <h1>这是一篇介绍HTML5语义化标签和更简洁的结构</h1>

    <h2>html5</h2>

</hgroup>

说明:如果有连续多个标题和其他文章数据,h1~h6标签就用hgroup包住,和其他文章元数据一起放入<header>标签。

 

nav元素:

nav元素代表页面的导航链接区域。规范上说,用于定义页面的*主要导航部分*。

但是有些地方也会有使用到,例如侧边栏上目录,面包屑导航,搜索样式,或者下一篇上一篇文章。

<nav>

        <ul>

             <li>HTML 5</li>

             <li>CSS35</li>

             <li>JavaScript</li>

        </ul>

</nav>

 

section元素:章节

section元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照*主题的分段*;“节”可以是指一个页面里的分组。

section通常还带标题,虽然html5中section会自动给标题h1~h6降级,但是最好手动降级。如下:

<section>

       <h1>section是啥</h1>

       <article>

               <h2>关于section</h2>

                <p>section的介绍</p>

                <section>                  

                       <h2>关于section</h2>

                        <p>section的介绍</p>

                 </section>

        </article>

</section>

注:section使用时,一张页面可以用section划分为简介、文章条目和联系信息。

不过在文章内页,最好用article。section一般是容器元素,如果想作为样式展示和脚本便利,可以用div。

 

article元素:是个特殊的section

article元素最容易跟section和div混淆,其实article代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。

主要用于譬如:论坛的帖子,博客上的文章,一篇用户的评论,一个互动的widget小工具。

<article>

        <h1>一篇文章</h1>

        <p>文章内容……</p>

        <footer>

                <p><small>版权:htmljscss网所属,作者:小贝</small></p>

        </footer>

</article>

说明:如果在article内部再嵌套article,那就代表内嵌的article是与外部的内容有关联,例如博客下面的评论,与博客内容是有关联的。

<article>

    <header>
        <h1>一篇文章</h1> <p><time pubdate datetime="2012-10-03">2012/10/03</time></p> </header> <p>文章内容..</p> <article> <h2>评论</h2> <article> <header> <h3>评论者: XXX</h3> <p><time pubdate datetime="2012-10-03T19:10-08:00">~1 hour ago</time></p> </header> <p>哈哈哈</p> </article> <article> <header> <h3>评论者: XXX</h3> <p><time pubdate datetime="2012-10-03T19:10-08:00">~1 hour ago</time></p> </header> <p>哈?哈?哈?</p> </article> </article> </article>

因为文章内section 部分虽然也是独立的部分,但是它们只能算是组成整体的一部分,从属关系,article是大主体,section是构成这个大主体的一部分。本网站的全部文章都是article嵌套一个个section章节,这样能让浏览器更容易区分各个章节所包括的内容。

section还可以嵌套article,如下:

<section>
    
    <h1>介绍: 网站制作成员配备</h1> <article> <h2>设计师</h2> <p>设计网页的...</p> </article> <article> <h2>程序员</h2> <p>后台写程序的..</p> </article> <article> <h2>前端工程师</h2> <p>给楼上两位打杂的..</p> </article> </section>

总结:如果是自身独立,用article

           是相关内容,用section

           没有语义,用div

 

 

aside元素:

aside 元素被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等。()也是特殊的section

在article元素之外使用作为页面或站点全局的附属信息部分。

最典型的是:侧边栏 其中的内容可以是日志串连,其他组的导航,甚至是广告,这些内容相关的页面。

<article>
    <p>内容</p> <aside> <h1>作者简介</h1> <p>小北,前端一枚</p> </aside> </article>

使用总结:

aside在article内表示主要内容的附属信息,

在article之外则可做侧边栏,没有article与之对应,最好不用。

如果是广告,其他日志链接或者其他分类导航也可以用

 

html5其他结构元素标签:

html5 节元素标签包括:body article nav aside section header footer hgroup 还有h1~h6 address。

* address 代表区块容器,必须是作为联系信息出现,邮编地址、邮件地址等等,一般出现在footer。

* h1~h6 因为hgroup,section 和 article 的出现,h1~h6定义也发生了变化,允许一张页面出现多个h1.

 

<main></main>:页面主要内容,一个页面只能使用一次。如果是web应用,则包围其主要功能。

<small></small>:与<strong>相反   通常用于指定*细则*,输入免责声明、注解、署名、版权。(只适用于短语,不要用来标记“使用条款”、“隐私政策”等长的法律声明)

<strong></strong>:加粗  表示内容重要性。

<em></em>:斜体 (强调唯一元素,而strong强调重要程度。)

<figure></figure>:创建图(默认有40px左右的margin)。

<figcaption></figcaption>:figure的标题,必须是figure内嵌的第一个或者最后一个元素。

<cite></cite>:指明引用或者参考,如图书的标题,歌曲、电影、等的名称,演唱会、音乐会、规范、报纸、或法律文件等。

        只用于参考源本身,而不是从中引述。

        <blockquoto></blockquoto>:引述文本,默认新的一行显示。

        <q></q>:短的引述(跨浏览器问题,尽量避免使用)。

         可以对blockquoto和q元素使用cite属性(不是cite元素!),对搜索引擎自动化工具有用。cite=“URL”引述来源地址。

 

        <time></time>:标记时间。datetime属性遵循特定格式,如果忽略此属性,文本内容必须是合法的日期或者时间格式。     
        不再相关的时间用s标签。

 

        <abbr></abbr>:解释缩写词。使用title属性可提供全称,只在第一次出现时使用就ok。

        abbr[title]{ border-bottom:1px dotted #000; }

 

        <dfn></dfn>:定义术语元素,与定义必须紧挨着,可以在描述列表dl元素中使用。

 

        <address></address>:作者、相关人士或组织的联系信息(电子邮件地址、指向联系信息页的链接)。

        如果提供整个页面的作者联系信息,一般放在页面级footer里。不能包含文档或者文档等其他内容。

 

        <del></del>:移除的内容。

        <ins></ins>:添加的内容。

        少有的既可以包围块级,又可以包围短语内容的元素。

 

        <code></code>:标记代码。包含示例代码或者文件名 (< &lt;  > &gt;)

        <pre></pre>:预格式化文本。保留文本固有的换行和空格。

 

        
        <meter></meter>:表示分数的值或者已知范围的测量结果。如投票结果。

        例如:<meter value="0.2" title=”Miles“>20%completed</meter>

 

        <progress></progress>:完成进度。可通过js动态更新value。

 

参考链接:http://blog.csdn.net/u010543271/article/details/50855363

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Network, CNN)是一种专门针对图像、视频等结构数据设计的深度学习模型,它在计算机视觉、语音识别、自然语言处理等多个领域都有广泛应用。CNN的核心设计理念源于对生物视觉系统的模拟,尤其是大脑皮层中视觉信息处理的方式,其主要特点包括局部感知、权重共享、多层级抽象以及空间不变性。以下是CNN技术的详细介绍: ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重进行逐元素乘法后求和,生成一个输出值。这一过程强调了局部特征的重要性,因为每个滤波器仅对一小部分相邻像素进行响应,从而能够捕获图像中的边缘、纹理、颜色分布等局部特征。 ### **2. 权重共享** 在CNN中,同一滤波器在整个输入图像上保持相同的权重(参数)。这意味着,无论滤波器在图像的哪个位置应用,它都使用相同的参数集来提取特征。这种权重共享显著减少了模型所需的参数数量,增强了模型的泛能力,并且体现了对图像平移不变性的内在假设,即相同的特征(如特定形状或纹理)不论出现在图像的哪个位置,都应由相同的滤波器识别。 ### **3. 池操作** **池层**通常紧随卷积层之后,用于进一步降低数据维度并引入一定的空间不变性。常见的池方法有最大池和平均池,它们分别取局部区域的最大值或平均值作为输出。池操作可以减少模型对微小位置变的敏感度,同时保留重要的全局或局部特征。 ### **4. 多层级抽象** CNN通常包含多个卷积和池层堆叠在一起,形成深度网络结构。随着网络深度的增加,每一层逐渐提取更复杂、更抽象的特征。底层可能识别边缘、角点等低级特征,中间层识别纹理、部件等中级特征,而高层可能识别整个对象或场景等高级语义特征。这种层级结构使得CNN能够从原始像素数据中自动学习到丰富的表示,无需人工设计复杂的特征。 ### **5. 激活函数与正则** CNN中通常使用非线性激活函数(如ReLU、sigmoid、tanh等)来引入非线性表达能力,使得网络能够学习复杂的决策边界。为了防止过拟合,CNN常采用正则技术,如L2正则(权重衰减)来约束模型复杂度,以及Dropout技术,在训练过程中随机丢弃一部分神经元的输出,以增强模型的泛性能。 ### **6. 应用场景** CNN在诸多领域展现出强大的应用价值,包括但不限于: - **图像分类**:如识别图像中的物体类别(猫、狗、车等)。 - **目标检测**:在图像中定位并标注出特定对象的位置及类别。 - **语义分割**:对图像中的每个像素进行分类,确定其所属的对象或背景类别。 - **人脸识别**:识别或验证个体身份。 - **图像生成**:通过如生成对抗网络(GANs)等技术创建新的、逼真的图像。 - **医学影像分析**:如肿瘤检测、疾病诊断等。 - **自然语言处理**:如文本分类、情感分析、词性标注等,尽管这些任务通常结合其他类型的网络结构(如循环神经网络)。 ### **7. 发展与演变** CNN的概念起源于20世纪80年代,但其影响力在硬件加速(如GPU)和大规模数据集(如ImageNet)出现后才真正显现。经典模型如LeNet-5用于手写数字识别,而AlexNet、VGG、GoogLeNet、ResNet等现代架构在图像识别竞赛中取得突破性成果,推动了CNN技术的快速发展。如今,CNN已经成为深度学习图像处理领域的基石,并持续创新,如引入注意力机制、残差学习、深度可分离卷积等先进思想。 综上所述,卷积神经网络通过其独特的局部感知、权重共享、多层级抽象等特性,高效地从图像数据中提取特征并进行学习,已成为解决图像和视频处理任务不可或缺的工具,并在众多实际应用中取得了卓越的效果。
点云数据语义分割是一种将点云数据中的点分为不同的类别的方法,以实现场景理解和三维物体识别的目的。这项技术在工业、医学、自动驾驶和机器人等领域都被广泛应用。 点云数据语义分割的理论和方法主要包括以下几个方面: 首先是点云数据的预处理。由于点云数据密度不均匀,质量不一,需要先进行清洗和滤波,去除噪声和异常点,提高数据质量。 其次是特征提取。由于点云数据没有像二维图像一样的坐标系和颜色信息,因此需要通过特征提取来获得关键特征。目前常用的特征提取方法包括基于滤波、基于局部区域和基于全局形状的方法等。 然后是语义分割模型的建立。常用的语义分割模型包括传统的基于机器学习和深度学习的方法,如随机森林、支持向量机、卷积神经网络等。随着深度学习的发展,基于深度学习的语义分割方法已成为主流。 最后是训练和测试。在训练时,先利用标注好的点云数据进行模型训练,使其具有分割不同类别的能力。在测试时,用训练好的模型对新的点云数据进行预测和分类,以完成语义分割的任务。 总之,点云数据语义分割的理论和方法是一个涉及到多个方面的综合性问题,需要通过数据预处理、特征提取、模型建立和训练测试等步骤来实现。但这一技术的应用前景广泛,具有重要的商业和社会价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值