<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangqiang9x的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangqiang9x</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangqiang9x]]></copyright><item><title><![CDATA[程序员悟道]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/90409507</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/90409507</guid><author>wangqiang9x</author><pubDate>Tue, 21 May 2019 20:39:20 +0800</pubDate><description><![CDATA[走过了十年的程序员生涯，做过很多项目，也担任过很多角色，经历过成功的喜乐也历经过失败时的悲伤。如果有人在我的职业路上给我些许指引或许我的人生会大不同。下面我总结一下我的个人感悟，希望对大家带来帮助。
了解并认同你的企业文化
只有一群志趣相投的人在一起才能共同成就一翻事业，有帮人怎么能志趣相投呢？这肯定是以企业文化为核心的，需要大家去契合、去认可、去努力。
开心的团队才能做好事，做好创新
所以日常工...]]></description><category></category></item><item><title><![CDATA[HTTPS原理]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/90381961</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/90381961</guid><author>wangqiang9x</author><pubDate>Mon, 20 May 2019 20:45:35 +0800</pubDate><description><![CDATA[先说一下http吧，这是传输数据没有经过任何处理的明文传输形式，等于是让你的数据在网络上裸奔，如果私密信息被非法盗用后果不堪设想。
所以https就出现了，它是怎么工作的呢？
先说它的工作流程：
1、客户端对服务端发起请，并带上客户端生成的随机数以及客户端支持的加密套件
2、服务端收到后生成服务端证书，并返回在服务端生成的随机数据与服务端证书
3、客户端根据之前客户端生成的随机数+服务端生成的随机...]]></description><category></category></item><item><title><![CDATA[使用nginx防盗链]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/90244647</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/90244647</guid><author>wangqiang9x</author><pubDate>Wed, 15 May 2019 20:46:40 +0800</pubDate><description><![CDATA[1、防盗链目的
防止资源被非法盗用
2、防盗链设置思路
首要任务是区别哪些请求是非法请求
3、基于http refer防盗链配置模块
打开nginx的conf配置文件，并按下面说明做配置
none : 允许没有http_refer的请求访问资源；
blocked : 允许不是http://开头的，不带协议的请求访问资源；
10.100.9.78 : 只允许指定ip来的请求访问资源；
locatio...]]></description><category></category></item><item><title><![CDATA[技术团队管理]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/90180556</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/90180556</guid><author>wangqiang9x</author><pubDate>Mon, 13 May 2019 21:00:33 +0800</pubDate><description><![CDATA[管理并非千篇一律，不同企业甚至不同团队都有着不同的风格和文化，所谓的管理就是让项目推进更加顺畅、让团队越来越牛、让公司的代码底蕴越来越雄厚。
   整个团队就像是一个不停运转着的机器，每个队员都是其它的一个齿轮，做为管理者就是要让每个齿轮运转的都很顺畅，要留意着团队运转时的卡点并及时的为团队解决障碍。

程序员特点
对技术是有追求的
有点骄傲的
多数程序员是不善于表达和沟通的
他们是需要加班...]]></description><category></category></item><item><title><![CDATA[缓存头Cache-Control的含义与使用]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89884409</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89884409</guid><author>wangqiang9x</author><pubDate>Mon, 06 May 2019 15:43:43 +0800</pubDate><description><![CDATA[缓存头是指：response的返回结果可被中间经过的各代理服务器以及请求浏览器缓存
缓存的意义是我不需要每次都到业务服务器去请求数据，只需要在中间缓存中获取即可，提升了获取数据效率及响应速度，当然数据变化频率很快的场景并不适合开启Cache-Control。
可缓存参数：public 、private 、no-cache
public : 可被中间经过的各代理服务器以及请求浏览器缓存
privat...]]></description><category></category></item><item><title><![CDATA[http跨域]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89881457</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89881457</guid><author>wangqiang9x</author><pubDate>Mon, 06 May 2019 14:08:00 +0800</pubDate><description><![CDATA[什么是跨域？
所有支持Javascript的浏览器都会使用同源策略这个安全策略。
同源策略，它是由Netscape提出的一个著名的安全策略。
现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指，域名，协议，端口相同。
当一个浏览器的两个tab页中分别打开百度和谷歌的页面
当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于哪个页面的
即检查是否同源，只有和百度同源的脚本才会...]]></description><category></category></item><item><title><![CDATA[HTTP报文格式]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89854925</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89854925</guid><author>wangqiang9x</author><pubDate>Sun, 05 May 2019 20:47:28 +0800</pubDate><description><![CDATA[报文格式在这里分两部分来说，分别是请求报文与响应报文。
请求报文




请求报文




首行 ：  http方法 -&gt; GET  url -&gt; /api/test/aaa.text http协议 -&gt; http/1.1


header : Accept : text/*  Accept-Language : en,fr






响应报文




首行 ： http协议 ...]]></description><category></category></item><item><title><![CDATA[http3次握手]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89682679</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89682679</guid><author>wangqiang9x</author><pubDate>Mon, 29 Apr 2019 20:51:41 +0800</pubDate><description><![CDATA[首先要创建http连接需要先与服务器建立一个tcp connection。
对与http来说它是应用层的协义，它只有请求和响应，不存在连接的，它们都是数据包，所以这时需要建立一个tcp connection来做网络上的数据包传输。 tcp connection本质上是可以一直连接着的，对与http的不同版本，对这个机制的用法不一样。 比如http1.0里用一次就关闭，http1.1时主可以做保持连...]]></description><category></category></item><item><title><![CDATA[http1.0与2.0的区别]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89575914</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89575914</guid><author>wangqiang9x</author><pubDate>Mon, 29 Apr 2019 09:47:22 +0800</pubDate><description><![CDATA[说http1.0之前先说一下http0.9
http0.9
只有get请求，也没有header的概念，因为那个时候的需求很简单。 随着信息化的发展只有get这样的简单的功能定义显示是不够用的，所以http1.0出现了。
http1.0
除get请求外还增加了post/head
增加了status code和header
多字符集支持、多部分发送、权限、缓存等
http1.1
除get/post/h...]]></description><category></category></item><item><title><![CDATA[中台战略]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89538200</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89538200</guid><author>wangqiang9x</author><pubDate>Fri, 26 Apr 2019 11:33:29 +0800</pubDate><description><![CDATA[“大中台小前台”这个词不断的引领着新一代的服务理念，它之所以牛是因为它解决了很多实实在在的问题。
大中台：把很多公共的服务给集中管理，统一提供优质的服务
小前台：前台应用服务在大中台的支撑下，做的事情越来越小，所以叫做小前台，可以快速的响应服务的变化。
为什么出现大中台的概念
当一个企业的业务线越来越多，很多新的服务也就随之出现了，每个服务都要面临重复造轮子的尴尬局面，轮子造的越多花费的人力越多，...]]></description><category></category></item><item><title><![CDATA[nginx采用的多路复用epoll]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89396716</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89396716</guid><author>wangqiang9x</author><pubDate>Fri, 19 Apr 2019 11:37:32 +0800</pubDate><description><![CDATA[什么是epoll模型？
是一个linux的内核模块，是新的比较高效的IO复用的内核模型，epoll模型就是用来实现IO复用的。
什么是IO复用？
如果一个线程只能处理一个i/o流，那么要处理多个i/o流就需要多个线程或多个进程，这样显然是不够高效的。 那么一个线程能处理多个i/o流的模式就是i/o复用模式。
i/o复用模式解决了并发的情况下i/o阻塞的问题，要尽量让你的程序是非阻塞的，这样会更通畅...]]></description><category></category></item><item><title><![CDATA[反向代理名词解释]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89378265</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89378265</guid><author>wangqiang9x</author><pubDate>Thu, 18 Apr 2019 14:35:00 +0800</pubDate><description><![CDATA[不愿意带着疑惑向前走的同学，初次听到反向代理的同学都会有各种疑惑，比如说nginx为什么是反向代理？哪里反了？怎么个反法？
其实这个概念并没那么高深，和正向代理对比一下就一目了然了。
正向代理（客户端代理）：代表客户端，比如我们用的翻墙服务器代理就是正向代理，代表着客户端向服务器发出请求。
反正代理（服务端代理）：代表服务端，比如nginx， 就代理着服务器，客户发送请求到nginx，再由ngin...]]></description><category></category></item><item><title><![CDATA[docker日志文件挂载]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89326554</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89326554</guid><author>wangqiang9x</author><pubDate>Tue, 16 Apr 2019 09:35:32 +0800</pubDate><description><![CDATA[为什么需要挂载
使用docker时，目录挂载功能是非常重要的，为什么呢？
如果日志存放在容器里，当重启时或删除容器后日志会丢失
这个问题用docker目录挂载功能可以很好的解决
具体步骤
第一步： 确定自己的docker容器中的日志目录
我的项目中是/logs
第二步：创建宿主机的挂载目录
我选择的是/usr/local/app/logs
第三步：运行docker
docker run -it -...]]></description><category></category></item><item><title><![CDATA[Sql注入]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89249655</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89249655</guid><author>wangqiang9x</author><pubDate>Fri, 12 Apr 2019 18:05:25 +0800</pubDate><description><![CDATA[本文转载自：https://www.jianshu.com/p/078df7a35671  感谢作者分享经验
一、Sql注入简介
Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中，再在后台 Sql 服务器上解析执行进行的攻击，它目前黑客对数据库进行攻击的最常用手段之一。
二、Web 程序三层架构
三层架构(3-tier architecture) 通常意义上就是将整个业...]]></description><category></category></item><item><title><![CDATA[MD5和Hash]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/89157231</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/89157231</guid><author>wangqiang9x</author><pubDate>Tue, 09 Apr 2019 18:10:59 +0800</pubDate><description><![CDATA[不止一次有人问我hash与MD5的区别以及如何选择使用，今天又碰到了。所以我在这里写一下吧。
首先，MD5与hash都是单向加密的算法，可以把一些信息进行单向加密成固定长度的散列码。（hash算法即常说的散列算法，也被人翻译成哈希）
其次，MD5也是hash算法的一种，常见的hash算法还有sha1,sha2等
MD5也被称为信息摘要算法，由于其算法复杂不够，容易被暴力破解的。
SHA1算法也存在...]]></description><category></category></item><item><title><![CDATA[bloom filter]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/88891732</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/88891732</guid><author>wangqiang9x</author><pubDate>Fri, 29 Mar 2019 14:26:18 +0800</pubDate><description><![CDATA[bloom filter是什么？
Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构，它具有很好的空间和时间效率，被用来检测一个元素是不是集合中的一个成员。如果检测结果为是，该元素不一定在集合中；但如果检测结果为否，该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内（可能错误）”和“不在集合内（绝...]]></description><category></category></item><item><title><![CDATA[算法_迷宫寻路算法_广度优先]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/88845790</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/88845790</guid><author>wangqiang9x</author><pubDate>Wed, 27 Mar 2019 15:19:12 +0800</pubDate><description><![CDATA[先出一个迷宫数据文件：
maze.in
6 8
0 1 0 0 0 1 1 0
0 0 0 1 0 1 1 0
0 1 0 1 0 1 1 0
1 0 0 1 0 0 0 1
0 0 1 0 1 1 0 0
1 1 0 0 0 1 1 1

这个文件描述了一个6行8列的迷宫数据，0表示路，1表示墙
接下来要做的就是要使用广度优先算法把这个迷宫给走通，下面简单介绍一下思路，细节部分直接上代码：
1、...]]></description><category></category></item><item><title><![CDATA[GO接口方法集]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/88822296</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/88822296</guid><author>wangqiang9x</author><pubDate>Tue, 26 Mar 2019 15:49:46 +0800</pubDate><description><![CDATA[interface! method! struct!
go不是面向对象的语言，它里面没有类和对象。
go是函数式的编程语言，它里面只有以interface、struct、method。
直接上段我整理过的可执行的代码，我在里面加入了注释，自己看吧：
package main

import "fmt"

type Do interface {
	Speak(content string)
}

t...]]></description><category></category></item><item><title><![CDATA[GO chan select]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/88797479</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/88797479</guid><author>wangqiang9x</author><pubDate>Mon, 25 Mar 2019 16:08:33 +0800</pubDate><description><![CDATA[select功能：
可以在select中监听多个chan，哪个chan来了就处理哪个，这样的好处是可以对多个chan进行并行处理。
下面给出一个例子，例子的功能是：
1、创建两个chan并向其中每间隔1.5秒写入一个值，chan收到值后直接写入worker chan中
2、worker chan收到值直接输出
main.go
package main

import (
	"fmt"
	"math...]]></description><category></category></item><item><title><![CDATA[GO协程间通信的同步问题]]></title><link>https://blog.youkuaiyun.com/wangqiang9x/article/details/88746455</link><guid>https://blog.youkuaiyun.com/wangqiang9x/article/details/88746455</guid><author>wangqiang9x</author><pubDate>Fri, 22 Mar 2019 17:28:29 +0800</pubDate><description><![CDATA[go语言的创作者的一句话：“不要通过共享内存来通讯，要通过通讯来共享内存”
我们已经使用过channel, 但是在前面几例中都是使用time.Sleep()方法来保障主线不被那么快的结束，从而让子协程中的fmt.print()有机会被输出。 但是这样很不友好，也不应该被使用，用channel通讯来试试吧
代码1
代码思路：
每次写入 in chan时也同时写入done chan， done cha...]]></description><category></category></item></channel></rss>