让我们先考虑下面这情况:var a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
var b = [ "foo", "bar", "baz", "bam", "bun", "fun" ];很显然最简单的结合结果应该是:[
1, 2, 3, 4, 5, 6, 7, 8, 9,
"foo", "bar", "baz", "bam" "bun&qu
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。本文介绍 HTTP 协议的历史演变和设计思路。一、HTTP/0.9HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET。GET /index.html
上面命令表示,TCP 连接(connection)建立后,客户端向服务器请求(request)网页index.html。协议规定,服务器只能回应HTML格式的字符串,不能回应别的格
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的对象字面量语法,但是独立于语言,许多编程语言都有解析JSON数据的能力。JSON主要被用于在客户端和服务端之间传递数据,比如在Web应用中Ajax请求的响应数据常常是JSON格式。
基本概念
JSON有两种结构:对象和数组。
对象:在JSON中,一个对象以{}括起来,包含一系列键值对。每个键值对之间用逗号分隔,键必须是字符串且用双引号包围,值可以是字符串、数字、布尔值、数组、对象或者null。
示例:
{
"name":
querySelector 和 querySelectorAll 方法是 W3C Selectors API 规范中定义的。他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素。目前几乎主流浏览器均支持了他们。包括 IE8(含) 以上版本、 Firefox、 Chrome、Safari、Opera。querySelector 和 querySelectorAll 在规范中定义了如下接口:module dom { [Supplemental, NoInterfaceObject] interface NodeSelector { Element querySelector(i
项目地址:https://github.com/oneuijs/You-Dont-Need-jQuery前端发展很快,现代浏览器原生 API 已经足够好用。我们并不需要为了操作 DOM、Event 等再学习一下 jQuery 的 API。同时由于 React、Angular、Vue 等框架的流行,直接操作 DOM 不再是好的模式,jQuery 使用场景大大减少。本项目总结了大部分 jQuery API 替代的方法,暂时只支持 IE10+ 以上浏览器。Query Selector常用的 class、id、属性 选择器都可以使用 document.querySelector 或 docum
一,起步用 Vue.js + Vue Router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 Vue Router 添加进来,我们需要做的是,将组件 (components) 映射到路由 (routes),然后告诉 Vue Router 在哪里渲染它们。下面是个基本例子: div id="app"
h1 Hello App! /h1
p
!-- 使用 router-link 组件来导航. --
!-- 通过传入 `to` 属性指定链接. --
!-- router-link 默认会被渲染
第一种:循环检查替换//供使用者调用
function trim(s){
return trimRight(trimLeft(s));
}
//去掉左边的空白
function trimLeft(s){
if(s == null) {
return "";
}
var whitespace = new String(" \t\n\r");
var str = new String(s);
if (whitespac
document.ready和onload的区别——JavaScript文档加载完成事件页面加载完成有两种事件:一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件);二是onload,指示页面包含图片等文件在内的所有元素都加载完成。1、Dom Ready用jQ的人很多人都是这么开始写脚本的: $(function(){
// do something
});例如:$(function() {
$("a").click(function() {
alert("Hello world!&qu
首先要明确一点:REST 实际上只是一种设计风格,它并不是标准。(所以你可以看到网上一大堆的各种最佳实践,设计指南,但是没有人说设计标准)。 说说几个重要的概念: 1、REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露。URI 的设计只要负责把资源通过合理方式暴露出来就可以了。对资源的操作与它无关,操作是通过 HTTP动词来体现,所以REST 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。比如:左边是错误的设计,而右边是正确的。GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗
GET /rest
镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):
1.通过config命令npm config set registry https://registry.npmmirror.comnpm info underscore (如果上面配置正确这个命令会有字符串response)
2.命令行指定npm --registry https://registry.npm.taobao.org info underscore
3.编辑 ~/.npmrc 加入下面内容registry = https://registry.npmmirror.com
查看配置
定义和用法DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。语法DATE_FORMAT(date,format)date 参数是合法的日期。format 规定日期/时间的输出格式。可以使用的格式有:格式 描述%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%
date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' ) - 20071120 mysql SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' ) - 2007年11月20 UNIX_TIMESTAMP()是与之相对正好相反的时间函数 UNIX_TIMESTAMP(), UNIX_TIMESTA
合并两个数据表,而被合并的表的列必须完全相同,也就是:列的数量一致,列的名字一致,列的顺序一致,列的类型一致。
两者的区别:
union合并表之后,重复的行数据会被化作一条数据,而后者union all将所有数据行都显示,重复的时候依然保持重复。
union使用方法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
union all使用方法:
SELECT column_name(s) FROM table_name
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。算法步骤:1 从数列中挑出一个元素,称为 “基准”(pivot),2 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准
在安装一个php程序,执行mysql数据库sql文件时,一直报错,出现“1366 - Incorrect integer value: '' for column 'ID' at row 1 ”。出现错误的原因是没有给自增ID赋值,尽管之前的版本可以不赋值,自动增加,但是在新版本的msyql(mysql 5.X以上版本)中需要为其赋值NULL。下面这个sql插入就会出现“1366 - Incorrect integer value: '' for column 'ID' at row 1”INSERT INTO `test` (
var arr = new Array();
arr[0] = '123';
arr[1] = '456';
console.log(arr.length);
var arr1 = new Array();
arr1['x0sdfdsfd'] = '123';
arr1['xsdfsd1'] = '456';
console.log(arr1.length);输出:20[Finished in 0.2s]
RequireJS是一个JS文件,主要的功能是优化页面JS的载入,在平时我们在html页面使用的是script标签来载入JS,如下示例: script src="1.js" /script
script src="2.js" /script
script src="3.js" /script 这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块
首先项目中,需要安装mysql模块:npm install --save-dev mysql然后就可以使用一下代码了:var mysql = require('mysql');
var database = {
host: '127.0.0.1',
user: 'root',
password: 'root',
database: '8081', // 前面建的user表位于这个数据库中
port: 3306
Express 是一个基于 Node.js 的 web 应用程序框架,它提供了一系列强大特性来简化 web 应用的开发,其中路由系统是其核心组件之一。Express 的路由允许你定义如何响应客户端对不同 URL 和 HTTP 方法(如 GET、POST 等)的请求。下面是一些基础概念和使用示例:
基础路由设置
在 Express 中,你可以直接在应用级别定义路由,或者通过 express.Router 创建模块化的、可重用的路由处理器。
应用级别路由
const express = require('express');
const app = express();
// 定义一个 GET
如果你想不使用Express生成器从零开始手动创建一个Express应用,这也是完全可以的。下面是一个基本的手动设置步骤:
1. 初始化项目和安装Express
首先,在你希望存放项目的文件夹下,打开终端或命令提示符,初始化一个新的Node.js项目,并安装Express作为依赖:
mkdir myManualExpressApp
cd myManualExpressApp
npm init -y
npm install express
2. 创建服务器
在项目根目录下,创建一个名为app.js的文件,这将是你的应用程序的主要入口点。打开这个文件,然后输入以下代码来设置一个基本的Expre
所有标签