HTML xmlns 属性

xmlns 属性 xmlns 属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的开始标签中。该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。 例如,如果需要使用符合 XML 规范的 XHTML 文档,则应该在文档中的<html> 标签中至少使用一个 xmlns 属性,以指定整个文档所使用的主要命名空间: <html xmlns=”http://www.w3.org/1999/xhtml”> 如果需要在一个 div 元素中显示一串数学公式,则可以为该 div 元素定义一个数学命名空间。比如这样:…

Continue Reading →

UI、UE和UX三者之间的区别?

UI:User Interface 用户界面 用户界面其实是一个比较广泛的概念,指人和机器互动过程中的界面,以车为例子,方向盘、仪表盘、换档器等都属于用户界面。 现在一般把屏幕上显示的图形用户界面(GUI :Graphic User Interface)都简单称为UI。 可能是UI这个概念比较难以被一般人理解,所以现在一般所说的UI设计师,也即是指GUI设计师。也就是图形界面设计师。 主要是负责产品或是网站的图形图标色彩搭配,总之是负责网站看起来是一个什么风格什么气质。 UE or UX: User Experience 用户体验 用户体验指用户在使用产品过程中的个人主观感受。关注用户使用前、使用过程中、使用后的整体感受,包括行为、情感、成就等各个方面。用户体验是整体感受,所以不仅仅来自于用户界面,那只是其中的一部分。 通俗的讲这是个整体的使用感受,包括受品牌影响,用户个人使用经验的影响,总之就是让用户用着爽。 IxD:Interaction design…

Continue Reading →

2018前端框架深度抉择

前端技术日新月异,最终由Angular、React、Vue三分天下。文章分四点对前端框架的选型进行深度解析:1、前端框架概览;2、公司最关心的开源许可;3、框架内部技术解析;4、选型结论; 一、前端框架 前端框架三驾马车Angular、React、Vue,参考我的另文一篇文章《2017 年比较 ANGULAR、REACT、VUE 三剑客》,里面对每个框架有详细的说明。 二、开源许可 开源许可严重关系到该软件是否开源用于商业化,引用阮一峰老师总结的开源软件许可图片进行描述,其中Angular与Vue使用较为自由的MIT许可,而React目前使用有些开源苛刻的BSD许可。 三、内部技术分析 2018年前端主要关注的技术可参考我的另一篇文章《2018前端值得关注的技术》,里面包含了2018年最主流的前端开发技术。下面对主流技术进行简短描述: 前端含前端JS与后端JS,两者都是基于ECMAScript规范。前端JS主要用来操作页面元素DOM,操作浏览器BOM。后端JS扩展出了一些服务器所需的API,如操作系统能力os、操作文件系统file、操作网络系统net、操作数据库database。后端的JS主要使用nodeJS,nodeJS会使用很多别人已经写好的JS代码,为了给引用代码统一规范,引申出了npm,npm其实就是nodeJS的包管理器。—- 引用文章 https://www.jianshu.com/p/857ef827fbd4 三种主流框架都使用相同的后端JS–nodeJS进行前端服务器开发。而前端JS也趋于一致,但目前分为两大派系:传统JS、升级版ES以及微软开发的TS。 1、传统JS与升级版ES 1995年网景浏览器首次发布浏览器脚本语言,为了趁当时Java的热度,决定命名为JavaScript,简称JS。其实两种语言本身并无关系,就比如雷锋与雷峰塔的区别。 1996年网景将JS提交给ECMA International(欧洲计算机制造商协会)进行标准化,并最终确定新的语言标准,这就是ECMAScript,简称ES。 自此ES成为了JS的基础,但现实中只称ES为标准,JS为语言。后期ES陆续地更新了几个版本,各大浏览器厂商也开始兼容这些更新的API。即使在2009年已更新到了ECMAScript5,但很多前端开发者仍在写着ECMAScript3的风格。2015 年,负责制定 ECMAScript…

Continue Reading →

JSON与XML的区别比较

1.定义介绍 (1)XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 (2)JSON定义 JSON(JavaScript Object…

Continue Reading →

常用正则表达式汇总—(数字匹配/字符匹配/特殊匹配)

1. 校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$…

Continue Reading →

正则表达式速成

本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门。当然,如果你是超人,那自然得另当别论。 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难。当然,如果你看完了这篇教程之后,发现自己明白了很多,却又几乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的人在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本的原理,以后你还需要多练习,多使用,才能熟练掌握正则表达式。 除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说,这个目标还是完成得不错的——你看,我自己也没能把所有的东西记下来,不是吗? 文本格式约定:专业术语 元字符/语法格式 正则表达式 正则表达式中的一部分(用于分析) 用于在其中搜索的字符串 对正则表达式或其中一部分的说明清除格式 正则表达式到底是什么? 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。 正则表达式是用于进行文本匹配的工具,所以本文里多次提到了在字符串里搜索/查找,这种说法的意思是在给定的字符串中,寻找与给定的正则表达式相匹配的部分。有可能字符串里有不止一个部分满足给定的正则表达式,这时每一个这样的部分被称为一个匹配。匹配在本文里可能会有三种意思:一种是形容词性的,比如说一个字符串匹配一个表达式;一种是动词性的,比如说在字符串里匹配正则表达式;还有一种是名词性的,就是刚刚说到的“字符串中满足给定的正则表达式的一部分”。 入门 学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。 假设你在一篇英文小说里查找hi,你可以使用正则表达式hi。 这是最简单的正则表达式了,它可以精确匹配这样的字符串:由两个字符组成,前一个字符是h,后一个是i。通常,处理正则表达式的工具会提供一个忽略大小写的选项,如果选中了这个选项,它可以匹配hi,HI,Hi,hI这四种情况中的任意一种。 不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等。用hi来查找的话,这里边的hi也会被找出来。如果要精确地查找hi这个单词的话,我们应该使用/bhi/b。 /b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格或标点符号或换行来分隔的,但是/b并不匹配这些单词分隔符中的任何一个,它只匹配一个位置。(如果需要更精确的说法,/b匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在)/w) 假如你要找的是hi后面不远处跟着一个Lucy,你应该用/bhi/b.*/bLucy/b。 这里,.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,不过它代表的不是字符,也不是位置,而是数量——它指定*前边的内容可以连续重复出现任意次以使整个表达式得到匹配。因此,.*连在一起就意味着任意数量的不包含换行的字符。现在/bhi/b.*/bLucy/b的意思就很明显了:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。 如果同时使用其它的一些元字符,我们就能构造出功能更强大的正则表达式。比如下面这个例子:…

Continue Reading →

springboot(二):web综合开发

上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门、了解实践Spring boot特性;本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源技术本文也会介绍),对了这里只是一个大概的介绍,特别详细的使用我们会在其它的文章中来展开说明。 web开发 spring boot web开发非常的简单,其中包括常用的json输出、filters、property、log等 json 接口开发 在以前的spring 开发的时候需要我们提供json接口的时候需要做那些配置呢 添加 jackjson 等相关jar包 配置spring controller扫描 对接的方法添加@ResponseBody…

Continue Reading →

跨域的那些事

前言 最近做项目的时候遇到了一些跨域问题,虽然网上对于跨域的问题分享还挺多的。不过当我实际遇到的时候还是有点懵。趁项目刚上线完,写篇文章总结下。 造成跨域的两种策略 浏览器的同源策略会导致跨域,这里同源策略又分为以下两种 DOM同源策略:禁止对不同源页面DOM进行操作。这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的。 XmlHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。 只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。 为什么要有跨域限制 了解完跨域之后,想必大家都会有这么一个思考,为什么要有跨域的限制,浏览器这么做是出于何种原因呢。其实仔细想一想就会明白,跨域限制主要是为了安全考虑。 AJAX同源策略主要用来防止CSRF攻击。如果没有AJAX同源策略,相当危险,我们发起的每一次HTTP请求都会带上请求地址对应的cookie,那么可以做如下攻击: 用户登录了自己的银行页面 http://mybank.com,http://mybank.com向用户的cookie中添加用户标识。 用户浏览了恶意页面 http://evil.com。执行了页面中的恶意AJAX请求代码。 http://evil.com向http://mybank.com发起AJAX HTTP请求,请求会默认把http://mybank.com对应cookie也同时发送过去。 银行页面从发送的cookie中提取用户标识,验证用户无误,response中返回请求数据。此时数据就泄露了。 而且由于Ajax在后台执行,用户无法感知这一过程。 DOM同源策略也一样,如果iframe之间可以跨域访问,可以这样攻击: 做一个假网站,里面用iframe嵌套一个银行网站 http://mybank.com。 把iframe宽高啥的调整到页面全部,这样用户进来除了域名,别的部分和银行的网站没有任何差别。 这时如果用户输入账号密码,我们的主网站可以跨域访问到http://mybank.com的dom节点,就可以拿到用户的输入了,那么就完成了一次攻击。…

Continue Reading →