<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Pre_wen]]></title><description><![CDATA[　]]></description><link>https://blog.youkuaiyun.com/zyw0713</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zyw0713]]></copyright><item><title><![CDATA[Tomcat的作用]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/125222786</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/125222786</guid><author>zyw0713</author><pubDate>Fri, 10 Jun 2022 15:44:00 +0800</pubDate><description><![CDATA[Tomcat是运行java的网络服务器，底层是一个socket的程序，同时Tomcat也是JSP和Serlvet的容器.那么为什么我们要用Tomcat呢？
一般情况下，如果我们使用HTML/CSS/JS编写了一个网页，这个网页只能由我们本地打开，别的人无法通过远程访问这个页面。那么Tomcat就解决了这个问题，让其他人也可以访问我们写的页面...]]></description><category></category></item><item><title><![CDATA[7.Node.js EventEmitter]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/124915011</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/124915011</guid><author>zyw0713</author><pubDate>Sun, 22 May 2022 19:53:44 +0800</pubDate><description><![CDATA[Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。

Node.js 里面的许多对象都会分发事件：一个 net.Server 对象会在每次有新连接时触发一个事件， 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。

EventEmitter 类

events 模块只提供了一个对象： events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器.]]></description><category></category></item><item><title><![CDATA[6.Node.js事件循环]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/124914623</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/124914623</guid><author>zyw0713</author><pubDate>Sun, 22 May 2022 19:14:16 +0800</pubDate><description><![CDATA[Node.js 是单进程单线程应用程序，但是因为V8引擎提供的异步执行回调接口，通过这些接口可以处理大量的并发，所以性能非常高。

Node.js 几乎每一个API都是支持回调函数的。

Node.js基本上所有的时间机制都是用设计模式中观察者模式实现

Node.js单线程蕾丝进入一个while(true)的事件循环，直到没有事件观察者退出，每个异步事件都生成一个事件观察者，如果有事件发生就调用该回调函数。

事件驱动程序

Node.js 使用事件驱动模型，当web server接收到请求，就把它关闭.]]></description><category></category></item><item><title><![CDATA[5.Node.js 回调函数]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/124914529</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/124914529</guid><author>zyw0713</author><pubDate>Sun, 22 May 2022 18:51:49 +0800</pubDate><description><![CDATA[Node.js 异步编程的直接体现就是回调。

异步编程依托于回调来实现，但不能说使用了回调后程序就异步化了。

回调函数在完成任务后就会被调用，Node 使用了大量的回调函数，Node 所有 API 都支持回调函数。

例如，我们可以一边读取文件，一边执行其他命令，在文件读取完成后，我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能，可以处理大量的并发请求。

回调函数一般作为函数的最后一个参数出现：


function fo]]></description><category></category></item><item><title><![CDATA[4.Node.js REPL(交互式解释器)]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/124913152</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/124913152</guid><author>zyw0713</author><pubDate>Sun, 22 May 2022 17:11:02 +0800</pubDate><description><![CDATA[Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境，类似 Windows 系统的终端或 Unix/Linux shell，我们可以在终端中输入命令，并接收系统的响应。

Node 自带了交互式解释器，可以执行以下任务：


	读取- 读取用户输入，解析输入的 Javascript 数据结构并存储在内存中。
	
	
	执行- 执行输入的数据结构
	
	
	打印- 输出结果
	
	
	循环- 循环操作以上步骤直到用户两次按下ctrl-c按钮退出。
...]]></description><category></category></item><item><title><![CDATA[2.Node.js 创建第一个应用]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/124908500</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/124908500</guid><author>zyw0713</author><pubDate>Sun, 22 May 2022 11:44:29 +0800</pubDate><description><![CDATA[在我们创建 Node.js 第一个 "Hello, World!" 应用前，让我们先了解下 Node.js 应用是由哪几部分组成的：


	引入 required 模块：我们可以使用require指令来载入 Node.js 模块。
	
	
	创建服务器：服务器可以监听客户端的请求，类似于 Apache 、Nginx 等 HTTP 服务器。
	
	
	接收请求与响应请求服务器很容易创建，客户端可以使用浏览器或终端发送 HTTP 请求，服务器接收请求后返回响应数据。
	
创建 Node.js 应用

步骤...]]></description><category></category></item><item><title><![CDATA[1.Node.js安装教程]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/124907837</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/124907837</guid><author>zyw0713</author><pubDate>Sun, 22 May 2022 10:40:48 +0800</pubDate><description><![CDATA[一.安装配置
]]></description><category></category></item><item><title><![CDATA[RESTful  HTTP中对POST，PUT，PATCH的区别]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/85617828</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/85617828</guid><author>zyw0713</author><pubDate>Wed, 02 Jan 2019 15:28:00 +0800</pubDate><description><![CDATA[经常会混淆HTTP的POST/PUT方法，因为这两个方法似乎都可以用来创建或更新一个资源。

区别是细微但清楚的：

POST 方法


用来创建一个子资源，如 /api/users，会在users下面创建一个user，如users/1；
POST方法不是幂等的，多次执行，将导致多条相同的用户被创建（users/1，users/2 ...
而这些用户除了自增长id外有着相同的数据，除非你的系统实现...]]></description><category></category></item><item><title><![CDATA[rails restful 总结]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/85162347</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/85162347</guid><author>zyw0713</author><pubDate>Sun, 23 Dec 2018 14:02:41 +0800</pubDate><description><![CDATA[1.什么是rest?

首先解释一下什么是rest，rest全称：Representational State Transfer, 中文意思是表述（编者注：通常译为表征）性状态转移。REST指的是一组架构约束条件和原则。&quot; 如果一个架构符合REST的约束条件和原则，我们就称它为RESTful架构。(解释来自百度百科)

REST有主要有两个核心精神：1. 使用Resource来当做识别的资源，也就...]]></description><category></category></item><item><title><![CDATA[安装pip报错，No local packages or download links found for pip]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/84316929</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/84316929</guid><author>zyw0713</author><pubDate>Wed, 21 Nov 2018 12:36:09 +0800</pubDate><description><![CDATA[情景： 安装pip报错No local packages or download links found for pip



这是因为pip版本太旧了，需要升级到9.0.3版本。或者是因为pip路径放的不对，找不到地方，

解决方法：（安装下面3步）


curl 'https://bootstrap.pypa.io/get-pip.py' &amp;gt; get-pip.py

sudo pytho...]]></description><category></category></item><item><title><![CDATA[python安装pip, 报错command not found: pip]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/84316803</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/84316803</guid><author>zyw0713</author><pubDate>Wed, 21 Nov 2018 12:16:07 +0800</pubDate><description><![CDATA[遇见情景： mac os 系统

执行：pip install requests

报错：command not found: pip

解决办法：（运行Python的安装工具，安装pip）


sudo easy_install pip

输入管理密码，等待下载好，即可


安装成功后最后会显示
Installed /Library/Python/2.7/site-packages/pip-9....]]></description><category></category></item><item><title><![CDATA[Python NameError: name 'requests' is not defined]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/84316362</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/84316362</guid><author>zyw0713</author><pubDate>Wed, 21 Nov 2018 11:51:41 +0800</pubDate><description><![CDATA[遇见情景：mac os 系统，Python小白，想起一个Python项目，引入 requests 库时，

后台报错显示 &quot; NameError: name 'requests' is not defined &quot; 



解决方法：


//install requests 
pip install requests

延展：报错command not found: pip ，查看https://...]]></description><category></category></item><item><title><![CDATA[创建一个没有数据库的rails项目]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/83056838</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/83056838</guid><author>zyw0713</author><pubDate>Mon, 15 Oct 2018 11:55:06 +0800</pubDate><description><![CDATA[方法一：

创建的时候，跳过创建数据库，跳过bundle等等。。什么都没有，自己写项目的时候，自己再做，一个真正干干净净，从零开始的项目。


rails new --skip-active-record --skip-bundle --skip-yarn --skip-spring --skip-listen 【项目名】

记得改变Gemfile，bundle install ,  Gemfil...]]></description><category></category></item><item><title><![CDATA[CSS 垂直居中的11种方式]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82909535</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82909535</guid><author>zyw0713</author><pubDate>Sun, 30 Sep 2018 15:10:20 +0800</pubDate><description><![CDATA[11种实现方式分别如下：

1. 使用绝对定位和负外边距对块级元素进行垂直居中

html代码：


&amp;lt;div id=&quot;box&quot;&amp;gt;
    &amp;lt;div id=&quot;child&quot;&amp;gt;我是测试DIV&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

复制代码：


#box {
    width: 300px;
    height: 300px;
    background: ...]]></description><category></category></item><item><title><![CDATA[css设置最小高度 然后自适应]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82909511</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82909511</guid><author>zyw0713</author><pubDate>Sun, 30 Sep 2018 14:54:31 +0800</pubDate><description><![CDATA[用css设置某个div最小height，然后再自适应height，这里有个不错的解决办法。

看代码先：


min-height:400px; //（解决ie8.9.ff.chrome） 
*+height:100%; //（解决ie7） 
_height:400px; //（解决ie6） ie6超出自动溢出

代码都有注释，只为了大家能看的更清晰更明白，因为有写同学不太了解hack的处理方式。...]]></description><category></category></item><item><title><![CDATA[JS设置仅在微信浏览器中打开h5界面]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82909380</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82909380</guid><author>zyw0713</author><pubDate>Sun, 30 Sep 2018 14:50:35 +0800</pubDate><description><![CDATA[对浏览器的UserAgent进行正则匹配，不含有微信独有标识的则为其他浏览器

主要是对适配的时候进行操作，

判断是微信浏览器（想区别谷歌和safari浏览器），但是注意这组正则匹配微信浏览器的（mobile和pc端），所以做好浏览器的自适应十分重要。


function userAgentWx() {
 var useragent = navigator.userAgent;
 if (us...]]></description><category></category></item><item><title><![CDATA[@media only screen 手机端适配判断]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82909065</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82909065</guid><author>zyw0713</author><pubDate>Sun, 30 Sep 2018 14:40:36 +0800</pubDate><description><![CDATA[ 

做好屏幕自适应，一般只需要注意iPhone5，x，plus,等问题，注意使用absolute，relative

/*iphone 6,7,8plus screen-width:414px */


@media (min-device-width : 414px) and (max-device-width : 736px) and (-webkit-min-device-pixel-ra...]]></description><category></category></item><item><title><![CDATA[rails cap production deploy 进行第一次部署]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82895788</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82895788</guid><author>zyw0713</author><pubDate>Sat, 29 Sep 2018 17:57:39 +0800</pubDate><description><![CDATA[一：一个新项目部署服务器，先写配置

1.创建config/deploy/sandbox文件，并写配置内容

capistrano的API，有方法介绍 

https://github.com/capistrano/capistrano  


bundle exec cap install

config/deploy/production.rb  配置如下


role :app, %w{pr...]]></description><category></category></item><item><title><![CDATA[rails production secret_key的设置]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82887357</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82887357</guid><author>zyw0713</author><pubDate>Fri, 28 Sep 2018 17:56:00 +0800</pubDate><description><![CDATA[nginx配置的时候报错： 


Missing secret_key_base for 'production' environment, set this value in config/secrets.yml


rails 的安全机制需要一个秘钥，在rails 4.x版本中， 秘钥的设置在 RAILS_ROOT/config/secrets.yml, 这文件一般形如:


developm...]]></description><category></category></item><item><title><![CDATA[nginx 服务器配置]]></title><link>https://blog.youkuaiyun.com/zyw0713/article/details/82701074</link><guid>https://blog.youkuaiyun.com/zyw0713/article/details/82701074</guid><author>zyw0713</author><pubDate>Fri, 28 Sep 2018 16:38:09 +0800</pubDate><description><![CDATA[ 

1.在完成rails项目部署后，进行NGINX配置

2. 登录服务器

1.which nginx

注：ubuntu的目录结构和说明

ps:其他系统目录结构可能不一样,但是配置文件都是一样通用的,这里简单说一下ubuntu的目录结构

如果是使用apt-get安装的nginx,配置文件目录在: 


/etc/nginx/

cd到这个目录之后,ls查看所有文件:


nginx.co...]]></description><category></category></item></channel></rss>