<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cyan1614的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Cyan1614</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Cyan1614]]></copyright><item><title><![CDATA[JAVA 服务端和客户端Socket通信的简单例子]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/78253177</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/78253177</guid><author>Cyan1614</author><pubDate>Mon, 16 Oct 2017 19:29:24 +0800</pubDate><description><![CDATA[服务端：
package socketTest;

import java.net.*;
import java.io.*;

public class GreetingSocket {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new Se]]></description><category></category></item><item><title><![CDATA[《C#图解教程》第5章 方法 读书笔记]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/78072623</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/78072623</guid><author>Cyan1614</author><pubDate>Sat, 23 Sep 2017 18:55:11 +0800</pubDate><description><![CDATA[5.1 方法的结构
方法是一块具有名称的代码。可以使用方法的名称从别的地方执行代码，也可以把数据传入方法并接受数据输入。
方法有两个主要部分：方法头和方法体。
方法头指定方法的特征，包括：
方法是否返回数据，如果返回，返回什么类型；
方法的名称；
哪种类型的数据可以传递给方法或从方法返回，以及应如何处理这些数据。
方法体包含可执行代码的语句序列。执行过程从方法体的第一条语句开始，一直]]></description><category></category></item><item><title><![CDATA[《C#图解教程》第4章 类的基本概念 读书笔记]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/78007749</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/78007749</guid><author>Cyan1614</author><pubDate>Sun, 17 Sep 2017 00:08:06 +0800</pubDate><description><![CDATA[4.1 类的概述
程序的数据和功能被组织为逻辑上的相关的数据项和函数的封装集合，并被称为类。
类是一个能存储数据并被执行代码的数据结构。它包含数据成员和函数成员。
数据成员：它存储与类或类的实例相关的数据。数据成员通常模拟该类所表示的现实世界事物的特性。
函数成员：它执行代码。通常会模拟类所表示的现实世界事物的功能和操作。
一个C#类可以有任意数目的数据成员和函数成员。
4.2 程序和]]></description><category></category></item><item><title><![CDATA[《C#图解教程》第3章 类型、存储和变量 读书笔记]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/77982690</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/77982690</guid><author>Cyan1614</author><pubDate>Thu, 14 Sep 2017 17:02:43 +0800</pubDate><description><![CDATA[3.1 C#程序是一组类型声明
C#程序或DLL的源代码是一组一种或多种类型声明。
对于可执行程序，类型声明中必须有一个包含Main方法的类。
命名空间是一种把相关的类型声明分组并命名的方法。既然程序是一组相关的类型声明，那么通常会把程序声明在你创建的命名空间内部。
3.2 类型是一种模板
可以把类型想象成一个用来创建数据结构的模板。模板本身并不是数据结构，但它详细说明了由模板构造的对象]]></description><category></category></item><item><title><![CDATA[《C#图解教程》第2章 C#编程概述 读书笔记]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/77939073</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/77939073</guid><author>Cyan1614</author><pubDate>Mon, 11 Sep 2017 22:52:09 +0800</pubDate><description><![CDATA[2.1 一个简单的C#程序
C#程序由一个或多个类型声明组成。using *** 声明后可使用其命名空间中定义的类。
2.2 标识符
标识符是一种字符串，用来命名如变量、方法、参数和许多后面将要阐述的其他程序结构。标识符区分大小写。
2.3 关键字
关键字是用来定义C#语言的字符串记号。关键字不能被用做变量名或任何其他形式的标识符，除非以@字符开始。所有C#关键字全部都由小写字母组成。上]]></description><category></category></item><item><title><![CDATA[《C#图解教程》第1章 C#和.NET框架 读书笔记]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/77923078</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/77923078</guid><author>Cyan1614</author><pubDate>Sun, 10 Sep 2017 16:50:04 +0800</pubDate><description><![CDATA[1.1 在.NET之前
C#编程语言是为在微软公司的.NET框架上开发程序而设计的。
1.1.1 20世纪90年代末的Windows编程
20世纪90年代末，大多数程序员在使用VB、C和C++。一些C和C++程序员在使用纯Win32 API，但大多数人在使用MFC（Microsoft Foundation Class，微软基础类库)，其他人已经转向了COM（Component Object ]]></description><category></category></item><item><title><![CDATA[ul>li*3 实现翻书动画效果]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/74625966</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/74625966</guid><author>Cyan1614</author><pubDate>Fri, 07 Jul 2017 09:26:14 +0800</pubDate><description><![CDATA[点击打开链接]]></description><category></category></item><item><title><![CDATA[关于html中的meta标签]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/74548129</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/74548129</guid><author>Cyan1614</author><pubDate>Thu, 06 Jul 2017 14:50:19 +0800</pubDate><description><![CDATA[meta中的http-equiv
类似于HTTP的头部协议
当浏览器接受服务端传送的文件时，首先接受文件的相关名称值/对，浏览器根据这些信息显示网页内容
        cache-control 
                    max-age 页面缓存时间，设置0的目的不让网页缓存，每次访问必须从服务器中读取，x秒内不去访问服务器
                    no]]></description><category></category></item><item><title><![CDATA[Node.js + express + socket 实现在线实时多人聊天室]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73715932</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73715932</guid><author>Cyan1614</author><pubDate>Sun, 25 Jun 2017 13:08:37 +0800</pubDate><description><![CDATA[项目目录结构：


前端部分：
登录页面Login部分：
login.html




    
    
    
    login
    



    
        
        LOGIN]]></description><category></category></item><item><title><![CDATA[Node.js socket.io前端后端通讯简单例子]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73692631</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73692631</guid><author>Cyan1614</author><pubDate>Sat, 24 Jun 2017 16:40:26 +0800</pubDate><description><![CDATA[前端代码：





    
        * {
            margin: 0;
            padding: 0;
        }
        html,
        body {
            width: 100%;
            height: 100%;
        }
        #box {
        ]]></description><category></category></item><item><title><![CDATA[Node.js 连接Mysql的增删改查操作简单例子]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73690139</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73690139</guid><author>Cyan1614</author><pubDate>Sat, 24 Jun 2017 13:18:18 +0800</pubDate><description><![CDATA[var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
});
connection.connect();
// var sql = 'se]]></description><category></category></item><item><title><![CDATA[Node.js GET/POST请求简单例子]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73653097</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73653097</guid><author>Cyan1614</author><pubDate>Fri, 23 Jun 2017 19:02:31 +0800</pubDate><description><![CDATA[get的请求已经在url里面，所以直接解析url就可以得到get请求的内容。
代码如下：
var http = require('http');
var url = require('url');
var util = require('util');
http.createServer(function (request, response) {
    response.writeHead]]></description><category></category></item><item><title><![CDATA[这段时间面试WEB前端的面试问题总结]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73611180</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73611180</guid><author>Cyan1614</author><pubDate>Thu, 22 Jun 2017 21:17:59 +0800</pubDate><description><![CDATA[HTML：

H5有什么新的标签
答：canvas，header，nav，article等等
H5的新特性有什么用
答：移除无用的标签，新加入的标签更加语义化，还有新加入的功能标签，例如canvas，video等等
用的比较多的H5标签
答：
sessionstorage和localstorage的区别
 
 cookie是什么





CSS:
    让背景]]></description><category></category></item><item><title><![CDATA[Node.js 路由映射和简单例子实现]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73433951</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73433951</guid><author>Cyan1614</author><pubDate>Sun, 18 Jun 2017 17:10:22 +0800</pubDate><description><![CDATA[路由就是根据提供的数据来执行相应的代码。
这也设计到了MVC设计模式，其主要思想是将业务逻辑按职责分离，主要分为以下几种。
（1）控制器(Controller)，一组行为的集合。
（2）模型(Model)，数据相关的操作和封装。
（3）视图(View)，视图的渲染。
这是目前最经典的分层模式（如下图），大致而言，它的工作模式如下说明。
（1）路由分析，根据URL寻找到对应的控制器和行为]]></description><category></category></item><item><title><![CDATA[实现基于Node.js的ajax前后端交互的简单例子]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73386351</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73386351</guid><author>Cyan1614</author><pubDate>Sat, 17 Jun 2017 22:06:58 +0800</pubDate><description><![CDATA[前端代码：




    
    
    
    ajaxtest



    button





    function ajax() {
        $.ajax({
            url: 'http://127.0.0.1:8080/',
            dataType: 'json',
            type: 'get',]]></description><category></category></item><item><title><![CDATA[关于对Node.js的“单线程非阻塞异步I/O”特点的个人理解]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73381480</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73381480</guid><author>Cyan1614</author><pubDate>Sat, 17 Jun 2017 17:28:05 +0800</pubDate><description><![CDATA[关于Node.js的运行机制的个人理解：
（1）当发起一个异步（非阻塞或阻塞）调用时，就会封装异步调用的请求对象。
（2）封装完后的对象就会放入线程池内等待执行。
（3）当线程池查询有空时就会执行请求对象里面的I/O操作，执行完之后就会把结果封装到请求对象中并通知事件循环中的I/O观察者。
（4）I/O观察者就会取出请求对象的结果（也就是回调函数）进行执行。


每个特点的体现：]]></description><category></category></item><item><title><![CDATA[Node.js 模块系统]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73380730</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73380730</guid><author>Cyan1614</author><pubDate>Sat, 17 Jun 2017 15:37:22 +0800</pubDate><description><![CDATA[创建和引用模块

创建一个fileModule.js文件，内容如下：
exports.fileModule = function (){
    console.log('fileModule');
}
再创建一个module.js文件，内容如下：

var module = require('./fileModule.js');
module.fileModule();
运行结果如]]></description><category></category></item><item><title><![CDATA[Node.js Buffer]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73333006</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73333006</guid><author>Cyan1614</author><pubDate>Fri, 16 Jun 2017 16:15:50 +0800</pubDate><description><![CDATA[由于Javascript自身只有字符串数据类型，没有二进制数据类型，但在处理像TCP流或者文件流时，必须使用到二进制数据。因此Node.js中，
定义了一个Buffer类，该类用来创建一个专门存放二进制数据的缓存区。

Buffer结构
Buffer是一个像Array的对象，但它主要用于操作字节。
Buffer是一个典型的Javascript与C++结合的模块，它将性能相关部分用C++实]]></description><category></category></item><item><title><![CDATA[Node.js 异步I/O]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73292194</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73292194</guid><author>Cyan1614</author><pubDate>Thu, 15 Jun 2017 16:18:20 +0800</pubDate><description><![CDATA[异步I/O模型的基本要素有事件循环、观察者、请求对象和I/O线程池。


事件循环：
事件循环是Node.js的自身执行模型。
在进程启动时，Node.js便会创建一个类似while(true)的循环，每执行一个循环体的过程称为Tick。
每个Tick的过程就会查看是否有事件处理，如果有，就取出事件及其相关的回调函数。如果存在关联的回调函数，就执行它们。然后进入下一个循环，如果不再有事]]></description><category></category></item><item><title><![CDATA[Node.js 回调函数]]></title><link>https://blog.youkuaiyun.com/Cyan1614/article/details/73195674</link><guid>https://blog.youkuaiyun.com/Cyan1614/article/details/73195674</guid><author>Cyan1614</author><pubDate>Tue, 13 Jun 2017 21:45:22 +0800</pubDate><description><![CDATA[Node.js的异步编程是用回调函数来实现的。
回调函数在完成任务后就会被返回调用，内容会作为参数返回。
Node.js所有的API都支持回调函数。
回到函数可以进行阻塞调用和非阻塞调用。
创建一个text.txt文本文件，内容如下：
text
阻塞调用指调用结果返回之前，当前线程会被挂起，函数只有在得到结果之后才会返回
创建一个callback.js文件，内容如下：
// 阻塞调]]></description><category></category></item></channel></rss>