<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[changhuzhao的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/changhuzhao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; changhuzhao]]></copyright><item><title><![CDATA[Redis发布订阅机制]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/79362140</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/79362140</guid><author>changhuzhao</author><pubDate>Sat, 24 Feb 2018 15:21:50 +0800</pubDate><description><![CDATA[1. 什么是RedisRedis是一个开源的内存数据库，它以键值对的形式存储数据。由于数据存储在内存中，因此Redis的速度很快，但是每次重启Redis服务时，其中的数据也会丢失，因此，Redis也提供了持久化存储机制，将数据以某种形式保存在文件中，每次重启时，可以自动从文件加载数据到内存当中。  Redis的架构包括两个部分：Redis Client和Redis Server。Redis客户端负...]]></description><category></category></item><item><title><![CDATA[ImportError: No module named MySQLdb]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/79203385</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/79203385</guid><author>changhuzhao</author><pubDate>Tue, 30 Jan 2018 11:07:15 +0800</pubDate><description><![CDATA[pycharm python开发环境配置

因为python版本升级导致开发环境不能使用了，重新配置。在重新配置过程中遇到了一些小问题，整理一下。

主要的问题在于
ImportError: No module named MySQLdb

网上查了很多的方法，有一个方法是最接近成功的：网上下载MySQL-python 1.2.5，运行安装。

但是这个方法需要找到与python]]></description><category></category></item><item><title><![CDATA[看完离编写高性能的JavaScript又近了一步]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78792750</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78792750</guid><author>changhuzhao</author><pubDate>Wed, 13 Dec 2017 15:50:40 +0800</pubDate><description><![CDATA[副标题： 常见的JavaScript内存泄露


这是关于JavaScript内存泄露相关的序列文章中一篇。由于时间有限更新进度会有点慢，但会持续更新的。自己也在学习中，难免对某些知识点的理解不是很正确，所以才将文章放置 github上，一是想与大家分享，二是方便持续更新，三是便于实时修正错误点。也希望看本文的各位同学能多提issues，我会根据提的意见不断完善文章。最后希望各位能从文章中有]]></description><category></category></item><item><title><![CDATA[electron cookie实现记住密码]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78773279</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78773279</guid><author>changhuzhao</author><pubDate>Mon, 11 Dec 2017 15:38:06 +0800</pubDate><description><![CDATA[使用electron开发时，实现记住密码功能。这个功能使用比较常见，electron也提供了session的模块来支持。当然session模块还有更多的用处。关于更多的session模块的使用，请查看Electron文档。还有很多其他的实现方式，比如使用一个json文件来存放用户名密码等。]]></description><category></category></item><item><title><![CDATA[DOMException: Failed to execute 'insertBefore' on 'Node']]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78739857</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78739857</guid><author>changhuzhao</author><pubDate>Thu, 07 Dec 2017 12:27:03 +0800</pubDate><description><![CDATA[问题：使用vue开发时，抛出如下异常：DOMException: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.
经资料查询发现，导致上述异常是因为在html中使用了v-if来控制局部显隐导致的。]]></description><category></category></item><item><title><![CDATA[electron 完整项目构建过程]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78684967</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78684967</guid><author>changhuzhao</author><pubDate>Fri, 01 Dec 2017 17:14:48 +0800</pubDate><description><![CDATA[前段时间因为项目需要，简单了解了一下electron，加入了electron的开发群组，偶尔能在群里帮助小伙伴解决一些问题，觉得很开心。 
但同时也发现小伙伴们的问题有几个比较常见，而官方文档又比较生涩且没有例子可参考，因此抽出时间整理了一篇文章，希望能够帮助入坑的小伙伴！]]></description><category></category></item><item><title><![CDATA[Napajs demo-多个生产者/消费者]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78422336</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78422336</guid><author>changhuzhao</author><pubDate>Thu, 02 Nov 2017 10:45:33 +0800</pubDate><description><![CDATA[生产者/消费者问题
多生产者和多消费者

多个生产者向一个缓冲区中存入数据，多个生产者从缓冲区中取数据。这是有界缓冲区问题，队列改写，生产者之间、消费者之间、生产者消费者之间互相互斥。 共享缓冲区作为一个环绕缓冲区，存数据到尾时再从头开始。


我们使用一个互斥量保护生产者向缓冲区中存入数据。由于有多个生产者，因此需要记住现在向缓冲区中存入的位置。
使用一个互斥量保护缓冲区中消息的数]]></description><category></category></item><item><title><![CDATA[Napajs demo-单个生产者/消费者]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78420811</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78420811</guid><author>changhuzhao</author><pubDate>Thu, 02 Nov 2017 08:51:26 +0800</pubDate><description><![CDATA[生产者/消费者问题

也叫缓存绑定问题（bounded- buffer），是一个经典的、多进程同步问题。
单生产者和单消费者

即有两个进程：一组生产者进程和一组消费者进程共享一个初始为空、固定大小为n的缓存（缓冲区）。生产者的工作是制造一段数据，只有缓冲区没满时，生产者才能把消息放入到缓冲区，否则必须等待，如此反复; 同时，只有缓冲区不空时，消费者才能从中取出消息，一次消费一段数据（即]]></description><category></category></item><item><title><![CDATA[API Namespace metric]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78410156</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78410156</guid><author>changhuzhao</author><pubDate>Wed, 01 Nov 2017 08:57:07 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/blob/master/docs/api/metric.md



Namespace metric
Table of Contents


Introduction
C++ API


Interface Metric
Interface MetricProvider
Function ]]></description><category></category></item><item><title><![CDATA[API Namespace memory]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78399339</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78399339</guid><author>changhuzhao</author><pubDate>Tue, 31 Oct 2017 08:51:46 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/blob/master/docs/api/memory.md

Namespace memory
Table of Contents


API


Type Handle
Interface Shareable
Interface Allocator


allocator.alloca]]></description><category></category></item><item><title><![CDATA[API Namespace store]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78389813</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78389813</guid><author>changhuzhao</author><pubDate>Mon, 30 Oct 2017 09:06:35 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/blob/master/docs/api/store.md

Namespace store



Table of Contents

IntroductionAPI 

create(id: string): Storeget(id: string): StoregetOrCreate(id:]]></description><category></category></item><item><title><![CDATA[API Namespace transport]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78370008</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78370008</guid><author>changhuzhao</author><pubDate>Fri, 27 Oct 2017 22:31:50 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/blob/master/docs/api/transport.md


Namespace transport
Table of Contents



Introduction


Transportable types
Constructor ID
Transport context
]]></description><category></category></item><item><title><![CDATA[API  Namespace zone]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78361249</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78361249</guid><author>changhuzhao</author><pubDate>Fri, 27 Oct 2017 09:41:25 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/blob/master/docs/api/zone.md
Table of Contents



Introduction


Multiple workers vs Multiple zones
Zone types
Zone operations


API


create(i]]></description><category></category></item><item><title><![CDATA[API References-global]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78349449</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78349449</guid><author>changhuzhao</author><pubDate>Thu, 26 Oct 2017 09:37:49 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/blob/master/docs/api/napa-globals.md
# Napa.js 特有global变量

该文档描述了Napa.js的特定global变量，了解Node.js的global变量请查看[该文档](https://github.com/Microsoft/napajs/blob/mast]]></description><category></category></item><item><title><![CDATA[Napa.js简介]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78336914</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78336914</guid><author>changhuzhao</author><pubDate>Wed, 25 Oct 2017 08:48:38 +0800</pubDate><description><![CDATA[原文链接：https://github.com/Microsoft/napajs/wiki/introduction

介绍


该文章介绍的概念对于理解Napa.js如何工作非常重要。想了解它的起源可以读这篇文章。
Zone

在Napa.js中，与多线程相关的工作都围绕Zone概念展开，它是定义策略和执行JavaScript代码的基本单元。一个程序包含多个zone，每一个zon]]></description><category></category></item><item><title><![CDATA[Napa.js 中文文档]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78331552</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78331552</guid><author>changhuzhao</author><pubDate>Tue, 24 Oct 2017 16:53:44 +0800</pubDate><description><![CDATA[JavaScript多线程]]></description><category></category></item><item><title><![CDATA[bootstrap Maximum call stack size exceeded]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78133390</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78133390</guid><author>changhuzhao</author><pubDate>Fri, 29 Sep 2017 14:20:16 +0800</pubDate><description><![CDATA[原文名称为：


bootstrap弹窗里面再弹窗

开发一个小功能，90%的时间都耗在前台bootstrap弹窗上了，功能需要在弹窗里面再弹窗，浏览器console报错：Uncaught RangeError: Maximum call stack size exceeded，导致页面上一些奇怪的错误。 
最后终于发现这也许是bootstrap多层弹窗导致的。搜了一下果然如此，我用了]]></description><category></category></item><item><title><![CDATA[echarts.js的几个实用点]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/78042544</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/78042544</guid><author>changhuzhao</author><pubDate>Wed, 20 Sep 2017 16:39:47 +0800</pubDate><description><![CDATA[百度的echarts是一个非常全面好用的图表类插件，唯一被诟病的就是其文档，虽然对API和配置有作说明，但是却不够详细或者说的不清晰。]]></description><category></category></item><item><title><![CDATA[富文本编辑器防xss攻击]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/72472025</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/72472025</guid><author>changhuzhao</author><pubDate>Thu, 18 May 2017 15:48:03 +0800</pubDate><description><![CDATA[富文本编辑器防xss攻击在平时的开发中，有时需要引入富文本编辑器，由用户来输入信息并保存入数据库。而这也给项目留下了潜在的隐患，如果不在开发时就做好防范，则很容易受到相应的攻击。 
对于常见的web安全问题，可以参考 web安全（入门篇）现在针对富文本编辑器如何防止xss攻击，给出几点建议，也供自己以后查找：
推荐使用UEditor
使用ESAPI]]></description><category></category></item><item><title><![CDATA[防御XSS攻击的七条原则]]></title><link>https://blog.youkuaiyun.com/changhuzhao/article/details/72461261</link><guid>https://blog.youkuaiyun.com/changhuzhao/article/details/72461261</guid><author>changhuzhao</author><pubDate>Thu, 18 May 2017 11:29:04 +0800</pubDate><description><![CDATA[本文将会着重介绍防御XSS攻击的一些原则，需要读者对于XSS有所了解，至少知道XSS漏洞的基本原理，如果您对此不是特别清楚，请参考这两篇文章：《Stored and Reflected XSS Attack》《DOM
 Based XSS》

攻击者可以利用XSS漏洞向用户发送攻击脚本，而用户的浏览器因为没有办法知道这段脚本是不可信的，所以依然会执行它。对于浏览器而言，它认为这段脚本是来自可]]></description><category></category></item></channel></rss>