自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(60)
  • 收藏
  • 关注

原创 修复在子对象中修改this.$global.version的问题

目前我们的代码结构: God(这是一个母对象)专门负责:1、加工传入的业务对象。2、把重要属性让业务对象可访问。3、把一些属性密封起来业务子对象,约定通用的data()方法和methods子对象。 可以有n个业务子对象。这样做的目的?让我们的业务对象具备较强的可编程性、可扩展性、规范性。前面我们完成了子对象中通过this.$global来访问母对象God中的属性,但是这其中还有一个问题,就是$g

2016-12-30 16:07:18 796

原创 对象的"可枚举"到底有啥用?

可枚举属性有什么作用?用在什么场景下,什么业务下?var God = { extends(name, obj){ /* * 我们约定对象中必须有 data和methdos2个属性 * 并且data是函数,methods是对象 * */ if('data' in obj && 'methods' in obj &&

2016-12-30 15:06:07 1695

原创 iOS多线程 - NSOperation介绍

NSOperation实际是GCD的封装。 两种使用方式 1.NSInvocationOperation和NSBlockOperation 2.自定义类继承NSOperation。相关概念: 1.NSOperationQueue,队列,可以认为是一个线程池。addOperation #添加到队列setMaxConcurrentOperationCount #设置线程池中最大变化数2.状态r

2016-12-29 09:20:57 268

原创 iOS多线程 - GCD_Group

iOS多线程 - GCD_Group在我们的实际项目当中,经常会有这样的需求:在多个任务异步处理之后,我们需要统一的一个回调通知,来告诉我所有的任务都已经结束了。 这个时候我们就可以用到dispatch_group。它有个作用就是,当所有任务完成之后会调用“ NSLog(@"执行GCD"); // 创建一个并行的queue dispatch_queue_t queue = di

2016-12-28 15:01:57 508

原创 iOS多线程 - GCD介绍

iOS多线程 - GCD介绍GCD是苹果为了多核并行运算,而提出的一套解决方案。 能够自动的管理线程的生命周期,比如创建线程、任务调度、销毁线程等,都不用开发者管理, 我们只需要告诉GCD干什么就行了。#pragma mark - GCD- (void)clickGCD{ NSLog(@"执行GCD"); dispatch_async(dispatch_get_global_

2016-12-28 10:57:34 368

原创 iOS多线程 - NSThread锁的使用(多线程资源共享的问题)

之前已经了解了NSThread如何创建线程,以及线程当中的2个属性。 现在我们用一个购票案例,来模拟一下线程当中资源共享的问题。1.创建一个售票类//// TicketManager.h// TestThread#import <Foundation/Foundation.h>@interface TicketManager : NSObject// 开始卖票- (void)star

2016-12-27 20:36:21 414

原创 iOS多线程 - NSThread介绍

多线程实现技术方案pThread、NSThread、GCD、NSOperationNSThread NSThread是经过苹果封装后的,面向对象的,我们可以直接来操控线程对象。我们创建一个iOS项目来演示//// ViewController.m// TestThread//#import "ViewController.h"@interface ViewController ()@en

2016-12-27 16:36:32 320

原创 iOS多线程介绍

进程广义上讲,进程是系统中正在运行是一个应用程序。每个进程之间都是独立的,这就意味着一个进程是不能访问另一个进程。 进程在处理器上是交替运行的,进程的状态也是不断在发生变化。 iOS线程介绍-线程是进程的基本执行单元; -进程的所有任务都在线程中执行。换句话说,就是一个进程要想执行任务必须有一个线程,这个线程我们通常称之为“主线程”。在iOS应用开发中,我们也称之为“UI线程”。 通常情

2016-12-26 20:28:10 390

原创 工厂模式、单例模式、注册树模式

三种基本设计模式 1、工厂模式:工厂方法或者类生成对象,而不是在代码中直接new 2、单例模式:使某个类的对象仅允许创建一个 3、注册模式:全局共享和交换对象工厂模式:<?phpnamespace IMooc;class Factory{ static function createDatabase() { $db = new Database();

2016-12-26 16:01:32 969

原创 类自动载入、开发一个PSR-0的基础框架

类自动载入最早的php项目都是通过手动include或者require来载入依赖的文件的,当项目越来越大,依赖越来越多,这样开发就很不方便了。<?phprequire 'Test1.php';require 'Test2.php';Test1::test();Test2::test();PHP5.2就提供了类的自动载入功能。<?phpTest1::test();Test2::test();f

2016-12-26 14:51:45 391

原创 反复训练之建立object的“外包装”

var news = { data(){ return {id:101, title:'新闻标题'}; }, methods:{ show(){ alert(this.id); } }};// 然后我们可以这样访问Object.assign(news.methods, news.data());

2016-12-26 13:20:18 347

原创 object的“偷梁换柱”

今天我们来设计一个业务类 还是那个news类,为了规范和业务代码统一性,我们往往胡要求做一些约定,比如有这样一个news类:var news = { data(){ return {id:101, title:'新闻标题'}; },};// 然后我们可以这样访问alert(news.data().id);这个data()是强制规定的,是我们的一个规范。var

2016-12-26 12:03:44 454

原创 从零开始打造自己的框架 - 路由类

在core目录下,新建一个名为lib的子目录,然后把我们前面写个route.php这个文件移动到这个目录下。 因为route类文件路径修改,所以在实例化的时候:new \core\lib\route();然后我们来完善route.php:<?phpnamespace core\lib;class Route{ public $controller; // 控制器 publi

2016-12-26 11:24:39 837

原创 Socket学习 - 开启Socket学习之旅

socket(注入tcp协议)IP地址 + 协议(TCP/UDP) + 端口 == 我们称之为套接字有了“套接字”,我们就能区分谁是谁。 我们要注意几点: 1、首先我们的网要通。宽带欠费了,你还想连接到外面去那是不可能的。 2、就像刚才打电话那样。不管你是接电话的人(服务端),还是打电话的人(客户端),你都得有个“电话机”(很多人以为只要服务端有电话机) 3、接电话的人(服务端)可以同时

2016-12-26 09:47:04 2881 3

原创 从零开始打造自己的框架 - 类的自动加载

接下来我们希望完成一个“自动加载类”的动能,我们把这个功能放到Imooc这个基础类当中。 core\imooc.php:<?phpnamespace core;class Imooc{ public static $classMap = array(); static public function run() { p('ok'); $

2016-12-25 20:54:51 1841

原创 从零开始打造自己的框架 - 入口文件

首先来了解一下框架的运行流程:入口文件 -> 定义常量 -> 引入函数库 -> 自动加载类 -> 启动框架 -> 路由解析 -> 加载控制器 -> 返回结果入口文件index.php:<?php/*入口文件1.定义常量2.加载函数库3.启动框架*/// 定义当前框架所在的根目录define('IMOOC', __DIR__);// 定义框架核心文件所在的目录define('CORE'

2016-12-24 17:04:54 1870

原创 SOCKET编程初探

客户端client.php<?phpset_time_limit(0);$socket = socket_create(AF_INET,SOCK_STREAM,0);socket_connect($socket,'127.0.0.1',8888);while(true){ $data = readline(); socket_write($socket,$data,strlen($da

2016-12-22 10:47:25 338

原创 Promise.prototype.then()和Promise.prototype.catch()

Promise.prototype.then()Promise实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的。它的作用是为Promise实例添加状态改变时的回调函数。then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。getJSON('/posts

2016-12-21 12:06:54 3558

原创 特殊用途的句子 - 虚拟

1.什么是虚拟? 非真实,这事不是真的,不太可能成真的。 2.怎么表示虚拟? 改变谓语动词的时态 3.虚拟常用语?if虚拟条件句(虚拟语气) (1)假设现在 if从句 主句假设现在 did(were) could/should + do例句:If I were you,I would do it now.(2)假设过去

2016-12-21 10:46:53 455

原创 Promise对象的含义和基本用法

1.Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理更强大。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件 (通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。Promise对象有以下2个特点: 1.对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pen

2016-12-20 13:43:31 42674 5

原创 特殊用途的句子 - 强调/倒装

强调句句式:It is/was ... that ...比如:I want to go to America this summer.#强调“美国”It is America that I want to go to this summer.倒装句一个句子正常的顺序应该是先主后谓(主谓宾、主系表),如果要是把一个句子正常的顺序颠倒过来,就是倒装。 全部倒装:谓语动词全部都挪到了主语前面 部分

2016-12-20 10:09:58 536

原创 状语从句

我们之前学过,如果多件事不一样重要,连在一块,就连成了“复合句”。1.状语从句的含义一个句子作状语,表达“描述性”的信息。 描述时间、地点、条件、原因、结果…状语从句的写法状语从句的写法,和宾语从句、定语从句很像,都可以写成一个陈述句前面加上一个连接的词。但是状语从句后面的陈述句,是一个完整的陈述句,不缺成分。前面这连接词是用来表示这个句子是描述什么的,比如描述时间的,就是时间连接词。 所以状语

2016-12-19 14:14:14 2329

原创 ES2015函数扩展 - 函数参数的默认值

基本用法在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法function log(x, y){ y = y || 'world'; console.log(x, y);}log('Hello'); // Hello worldlog('hello', 'china'); // hello chinalog('hello', ''); // hello world这

2016-12-19 10:18:15 2096

原创 定语从句

如果多件事不一样重要,连接在一块,就可以连接成“主从复合句”。 主要的事写成主句,次要的事写成从句。前面我们已经学习了“名词性从句”,也就是主、宾、表、同位,这4种从句。 现在我们学习“定语从句”定语从句含义:一个句子作定语。去修饰、限定名词。 写法: 推导过程This is the (我梦想很多年的) job.#先写成2个句子This is [the job].I have drea

2016-12-16 11:00:34 1265

原创 天翻地覆:object+异步调用实战训练

前面我们弄了一个new对象,然后从对象里获取数据。 http://blog.csdn.net/github_26672553/article/details/53637525 其中getList()函数每次获取都会被调用。现在,我们给加入“数据缓存”的概念。保证getList只会调用一次(比如,第二次调用getOne()的时候不会再去调用getList)。在ECMAScript 5.1开始,Ob

2016-12-15 15:50:29 373

原创 iOS开发中的HTTPS

官方文档: https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html 高手博文: https://zhuanlan.zhihu.com/p/22749689

2016-12-14 17:29:12 547

原创 宾语从句

前面我学过了”把一样重要的多件事用并列连词连接在一起就构成了并列句”。 那么,多件事不一样重要,有主要的,有次要的,这个时候连接在一块就变成了“主从复合句”。复合句 = 多件事不一样重要(主句+从句)虽然主句是主要表达的意思,但是我们学习的重点是从句。因为主语没有什么变化,而从句有很多变化。 从句又可以分成3类:名词性从句、定语从句、状语从句。名词性从句一个从句当做名词来用。 我们知道主语、

2016-12-14 14:21:51 1522

原创 天启之object的实战训练

在JavaScript中,Object可以接受所有的对象。var me = new Object("字符串");var me = new Object(123);var me = new Object(true);var me = new Object({"name":"zhangsan"});var me = new Object(function(){ this.name = "jac

2016-12-14 12:50:46 326

原创 并列句

n. + v.如果只是想表示一件事,写个简单句,一主一谓就可以了。如果想表示多件事,就写多个简单句,然后把它们连接在一起。 英语是形合的语言,必须要在形式上加上连接的词,才能够连接句子。 那一般加什么连接词呢?取决于关系。 多个句子连接在一块之后,就不是简单句了,这个时候就叫做“并列句/复合句“。并列句:多件事一样重要的前提下,我们就可以把它连接成并列句。 并列句的构成:多个简单句,加上并列

2016-12-13 16:19:04 1231

原创 ES2015数组拓展 - Array.of()

Array.of方法用于将一组值,转换为数组Array.of(3,11,8) // [3,11,8]Array.of(3) // [3]Array.of(3).length // 1这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为差异。Array() // []Array(3) // [,,,]Array(3,11,8) // [3

2016-12-13 09:05:34 745

原创 简单句的补充

前面我们学习了“简单句的核心构成”,也就是一主一谓。 后面还可以接上宾语、表语… 简单句的核心构成当中有一些变化,比如说,主语、宾语、表语可以变成名词/代词/doing/to do。 谓语动词一共有4种核心变化:3态+1否。(时态、情态、语态,否定)简单句的核心是保证把一件事写对了,简单句的补充是帮助把一件事写的更好,写的更充分。 如果要把一件事描述的充分具体,我们就需要加入补充的成分。

2016-12-12 17:08:14 605

原创 ES2015数组扩展 - Array.from()

Array.from方法用于把两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。下面是一个类似数组的对象,Array.from将它转为真正的数组let arrayLike = {"0":"a","1":"b","2":"c",length:3};// ES5的写法var arr1 = [].sl

2016-12-12 09:55:45 1778

原创 情态动词

“情态”顾名思义,就是表达情绪和态度。情态动词 + 动词原形一般情况下,情态动词不能单独用,需要在后面搭配一个动词原形。 这种变化跟时态和语态不一样了,时态和语态都是把这个动词变成各种各样不同的形式。情态动词没有人称的变化一般普通的动词都有第三人称单数,但是情态动词没有。情态动词时态的变化也很有限情态动词最多就2种时态:一般现在时、一般过去时。现在时 过去时must 无

2016-12-10 11:09:23 3329

原创 ES2015字符串的扩展

includes()、startsWith()、endsWith()传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。 ES6又提供了三种新方法includes():返回布尔值,表示是否找到了参数字符串startsWith():返回布尔值,表示参数字符串是否在源字符串的头部endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部va

2016-12-10 10:04:40 1469

原创 ElementUI之表单验证、数据绑定、路由跳转

1.新建表单组件el-form.vue<template> <div class="form"> <el-form ref="form" :model="UserForm" :rules="this.$store.state.userinfo.CheckRules" label-position="left" label-width="180px">

2016-12-09 16:35:22 64413 1

原创 变量解构赋值的用途

变量解构赋值用途很多 1.交换变量的值[x,y] = [y,x];2.从函数返回多个值 函数只能返回一个值,如果要返回多个值,只能把它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便了。// 返回一个数组function f(){ return [1,2,3];}var [a,b,c] = f();// 返回一个对象function f(){ return {foo:1

2016-12-09 11:45:25 1746

原创 对象的解构赋值

解构不仅可以用于数组,还可以用于对象var {foo,bar} = {foo:"aaa",bar:"bbb"};foo // "aaa"bar // "bbb"对象的解构和数组有一个重要的不同。数组的元素是按此排序的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。var {bar,foo} = {foo:"aaa",bar:"bbb"};foo // "

2016-12-09 11:07:44 6276

原创 数组的解构赋值

基本用法ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这被称之为解构(Destructuring)// 以前为变量赋值,只能直接指定值var a = 1;var b = 2;var c = 3;// ES6允许写成这样var [a,b,c] = [1,2,3];本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。 下面是一些使用嵌套数组

2016-12-09 10:45:29 3492

原创 顶层对象、global对象

顶层对象顶层对象,在浏览器环境指的是window对象,在Node指是的global对象。ES5之前中,顶层对象的属性与全局变量是等价的。window.a = 1;a // 1a = 2;window.a // 2上面的代码中,顶层对象的属性赋值和全局变量的赋值,是同一件事。ES6规定,var命令和function命令声明的全局变量,依旧是顶层对象的属性;let命令、const命令、class命令

2016-12-09 10:09:25 2915

原创 const命令

const声明一个只读的常量。一旦声明,常量的值就不能改变。const PI = 3.1415;PI // 3.1415PI = 3; // TypeError: Assignment to constant variable.上面的代码表明改变常量的值会报错。const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。const foo; // Synt

2016-12-09 09:11:49 455

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除