<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Jack的博客]]></title><description><![CDATA[The more you know, the more you don't understand]]></description><link>https://blog.youkuaiyun.com/windy135</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; windy135]]></copyright><item><title><![CDATA[nginx配置之proxy_pass路径加斜杠/以及包含路径的区别]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/121352428</link><guid>https://blog.youkuaiyun.com/windy135/article/details/121352428</guid><author>windy135</author><pubDate>Tue, 16 Nov 2021 11:36:24 +0800</pubDate><description><![CDATA[nginx配置看似简单，但一些细节配置经常被大家忽略。
在proxy_pass中
1.proxy_pass包含路径如 http://127.0.0.1:8080/abc 和http://127.0.0.1:8080规则都有区别。
2.proxy_pass结尾加斜杠/和不加斜杠的有区别
下面四种情况分别用http://192.168.10.1/proxy/test.html 进行访问。
第一种(末尾加斜杠，proxy_pass中不包含路径）：
location  /proxy/ {
proxy_pass ht]]></description><category></category></item><item><title><![CDATA[docker部署-flask集成allure提供测试报告查看，uwsgi只能启动一个worker进程]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/107452806</link><guid>https://blog.youkuaiyun.com/windy135/article/details/107452806</guid><author>windy135</author><pubDate>Sun, 19 Jul 2020 23:17:58 +0800</pubDate><description><![CDATA[flask集成allure测试报告，提供pytest执行测试用例接口和查看allure报告接口。
pytest+allure执行和收集测试报告可支持多方方式集成，和Jenkins、gitlab集成等。与Jenkins集成解决方案往上很多，不再赘述。和gitlab集成可参考https://github.com/allure-framework/allure2/issues/891。
之前做过与Jenkins集成，但是在查看allure报告的时候有时候会遇见某个测试case结果404的情况。今天将以与flask]]></description><category></category></item><item><title><![CDATA[gitlab-ci+docker+supervisor+uwsgi部署踩坑，使用uwsgi，如何查看500错误？]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/106659155</link><guid>https://blog.youkuaiyun.com/windy135/article/details/106659155</guid><author>windy135</author><pubDate>Thu, 11 Jun 2020 08:55:48 +0800</pubDate><description><![CDATA[需求：搭建了autotest自动化工程，结合了flask，目的是将autotest中的方法开放接口出去（存在跨语言调用），并且开放了自动化测试接口出去（pytest+allure），以便可以实现调用接口跑case。
部署：gitlab-ci+docker+supervisor+uwsgi
docker和docker-compose
docker容器必须以前台进程启动
CMD 容器启动命令
这里踩了个坑，一直尝试在Dockerfile中以后台进程运行服务，结果发现容器启动了就会立马退出，所依赖的服务也不在。这]]></description><category></category></item><item><title><![CDATA[Run GitLab Runner in a container (Docker in docker)]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/103885052</link><guid>https://blog.youkuaiyun.com/windy135/article/details/103885052</guid><author>windy135</author><pubDate>Wed, 08 Jan 2020 09:37:34 +0800</pubDate><description><![CDATA[GitLab Runner 官方文档：https://docs.gitlab.com/runner/
支持一下运行环境：详情见上述文档。
Install using GitLab’s repository for Debian/Ubuntu/CentOS/RedHat (preferred).
Install on GNU/Linux manually (advanced).
Install on...]]></description><category></category></item><item><title><![CDATA[java-使用keytool信任自签证书，需要重启]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/92562923</link><guid>https://blog.youkuaiyun.com/windy135/article/details/92562923</guid><author>windy135</author><pubDate>Mon, 17 Jun 2019 09:19:52 +0800</pubDate><description><![CDATA[目前我司的技术栈是Java和Python，且都调用第三方的服务，因此需要mock第三方的服务以便开发测试使用。之前已整理过[Python requests信任自签证书的问题]。(https://blog.youkuaiyun.com/windy135/article/details/79861209)因此这次需要再Java中mock第三方服务。
java官方文档：
1、使用keytool工具生成证书，然后将c...]]></description><category></category></item><item><title><![CDATA[python进程线程详解]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/90664348</link><guid>https://blog.youkuaiyun.com/windy135/article/details/90664348</guid><author>windy135</author><pubDate>Wed, 29 May 2019 08:25:21 +0800</pubDate><description><![CDATA[如下是目录结构：
多进程 multiprocessing
进程池 Pool
子进程
进程间通信
进程小结
多线程
Lock
多核CPU
ThreadLocal
进程 vs. 线程
线程切换
计算密集型 vs. IO密集型
异步IO
分布式进程
对于操作系统来说，一个任务就是一个进程（Process），比如打开一个浏览器就是启动一个浏览器进程，打开一个记事本就启动了一个记事本进程，打开两个记事本就启...]]></description><category></category></item><item><title><![CDATA[CentOS 7 安装MongoDB详细步骤 及 supervisor 管理MongoDB踩坑]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/90261213</link><guid>https://blog.youkuaiyun.com/windy135/article/details/90261213</guid><author>windy135</author><pubDate>Thu, 16 May 2019 12:33:03 +0800</pubDate><description><![CDATA[安装MongoDB：
创建/etc/yum.repos.d/mongodb-org-4.0.repo文件，编辑内容如下：
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enable...]]></description><category></category></item><item><title><![CDATA[Supervisor 管理进程详解]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/90204224</link><guid>https://blog.youkuaiyun.com/windy135/article/details/90204224</guid><author>windy135</author><pubDate>Tue, 14 May 2019 13:14:47 +0800</pubDate><description><![CDATA[Supervisor 是一个用 Python 实现的进程管理工具，可以很方便地启动，关闭，重启，查看，以及监控进程，当进程由于某种原因崩溃或者被误杀后，可以自动重启并发送事件通知。Supervisor 可谓运维利器，使用 Supervisor 来管理进程，可以提高系统的高可用特性。
注意：supervisor管理这些进程是把他们当做自己的子进程来管理，还有supervisor不能管理以daemon...]]></description><category></category></item><item><title><![CDATA[Java HTTP 组件库选型看这篇就够了]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89761517</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89761517</guid><author>windy135</author><pubDate>Thu, 02 May 2019 14:46:49 +0800</pubDate><description><![CDATA[最近项目需要使用 Java 重度调用 HTTP API 接口，于是想着封装一个公用的 HTTP client lib. 这个库需要支持以下特性：
1、连接池管理，包括连接创建和超时、空闲连接数控制、每个 host 的连接数配置等。基本上，我们想要一个 go HTTP 标准库自带的连接池管理功能。
2、域名解析控制。因为调用量会比较大，因此希望在域名解析这一层做一个调用端可控的负载均衡，同时可以对每...]]></description><category></category></item><item><title><![CDATA[@RequestParam、@RequestBody和@ModelAttribute(application/x-www-form-urlencoded, application/json)]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89684903</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89684903</guid><author>windy135</author><pubDate>Mon, 29 Apr 2019 23:30:54 +0800</pubDate><description><![CDATA[@RequestParam
A） 常用来处理简单类型的绑定，通过Request.getParameter() 获取的String可直接转换为简单类型的情况（ 由String到 简单类型的转换操作由ConversionService配置的转换器来完成）；因为使用request.getParameter()方式获取参数，所以可以处理get 方式中queryString的值，也可以处理post方式中 b...]]></description><category></category></item><item><title><![CDATA[HttpServletRequest request 获取form参数的两种方式]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89684795</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89684795</guid><author>windy135</author><pubDate>Mon, 29 Apr 2019 23:19:05 +0800</pubDate><description><![CDATA[@RequestMapping(value="/query",method = RequestMethod.POST)
	public String buildRequest(HttpServletRequest request){
		
		// 方式一：getParameterMap()，获得请求参数map
		Map&lt;String,String&gt; parmMap=new Hash...]]></description><category></category></item><item><title><![CDATA[springboot+idea热部署]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89444661</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89444661</guid><author>windy135</author><pubDate>Mon, 22 Apr 2019 08:03:14 +0800</pubDate><description><![CDATA[spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署，提高开发者的开发效率，无需手动重启Spring Boot应用。
devtools的原理
深层原理是使用了两个ClassLoader，一个Classloader加载那些不会改变的类（第三方Jar包），另一个ClassLoader加载会更改的类，称为restart ClassLoa...]]></description><category></category></item><item><title><![CDATA[证书(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89392333</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89392333</guid><author>windy135</author><pubDate>Fri, 19 Apr 2019 07:18:12 +0800</pubDate><description><![CDATA[SSL
SSL - Secure Sockets Layer,现在应该叫"TLS",但由于习惯问题,我们还是叫"SSL"比较多.http协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协议,而https的加密是基于SSL的,它执行的是一个比较下层的加密,也就是说,在加密前,你的服务器程序在干嘛,加密后也一样...]]></description><category></category></item><item><title><![CDATA[使用spring validation完成数据后端校验]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89305527</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89305527</guid><author>windy135</author><pubDate>Mon, 15 Apr 2019 09:00:35 +0800</pubDate><description><![CDATA[简述JSR303/JSR-349，hibernate validation，spring validation之间的关系。
(1)JSR303是一项标准,JSR-349是其的升级版本，添加了一些新特性，他们规定一些校验规范即校验注解，如@Null，@NotNull，@Pattern，他们位于javax.validation.constraints包下，只提供规范不提供实现。
(2)而hiberna...]]></description><category></category></item><item><title><![CDATA[SpringBoot构建RESTful service完成Get和Post]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89305365</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89305365</guid><author>windy135</author><pubDate>Mon, 15 Apr 2019 08:41:27 +0800</pubDate><description><![CDATA[SpringBoot构建RESTful service完成Get和Post
一个基本的RESTfule service最进场向外提供的请求Method就是Get和Post。
在Get中，常用的都会在请求上带上参数，或者是路径参数。响应Json。
在Post中，常用的会提交form data或者json data作为参数，响应Json。
1. Get请求，url传参，返回json。
先准备一个请求后...]]></description><category></category></item><item><title><![CDATA[Java中int与Integer、Long与long的区别]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89136385</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89136385</guid><author>windy135</author><pubDate>Tue, 09 Apr 2019 10:16:49 +0800</pubDate><description><![CDATA[Long与long究竟有什么区别呢？
无外乎，int与Integer！
我们知道Java的数据类型分两种：
1.基本类型：long,int,byte,float,double,char …
2.对象类型（类）： Long,Integer,Byte,Float,Double,Char,String … 其它一切java提供的，或者你自己创建的类。
其中Long叫 long的包装类。Integer、B...]]></description><category></category></item><item><title><![CDATA[long（Long）与int（Integer）之间的转换]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/89136173</link><guid>https://blog.youkuaiyun.com/windy135/article/details/89136173</guid><author>windy135</author><pubDate>Tue, 09 Apr 2019 10:11:57 +0800</pubDate><description><![CDATA[1.将long型转化为int型，这里的long型是基础类型：
long   a = 10;     int b = (int)a;
2.将Long型转换为int 型的，这里的Long型是包装类型：
Long a = 10; int b=a.intValue();
3.将Long型转换为 Integer 型的，这里的Long型是包装类型：
Long a = 10;; Integer b=a.intV...]]></description><category></category></item><item><title><![CDATA[Lombok]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/88980639</link><guid>https://blog.youkuaiyun.com/windy135/article/details/88980639</guid><author>windy135</author><pubDate>Tue, 02 Apr 2019 20:36:59 +0800</pubDate><description><![CDATA[前提
项目代码中用 Lombok 的都用了，毕竟这么好的轮子要充分利用好。也可以减少一些 get/set/toString 方法的编写，虽说 IDEA 的插件可以自动生成 get/set/toString 方法，但是使用 Lombok 可以让代码更简洁。
下面看看如何在 IDEA　中如何安装 Lombok：
安装
打开 IDEA 的 Settings 面板，并选择 Plugins 选项，然后点击 ...]]></description><category></category></item><item><title><![CDATA[MongoDB删除字段]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/88413173</link><guid>https://blog.youkuaiyun.com/windy135/article/details/88413173</guid><author>windy135</author><pubDate>Tue, 12 Mar 2019 07:50:27 +0800</pubDate><description><![CDATA[使用update命令
update命令
update命令格式：
db.collection.update(criteria,objNew,upsert,multi)
参数说明：
criteria：查询条件
objNew：update对象和一些更新操作符
upsert：如果不存在update的记录，是否插入objNew这个新的文档，true为插入，默认为false，不插入。
multi：默认是fal...]]></description><category></category></item><item><title><![CDATA[Ubuntu 安装和使用 Supervisor（进程管理）]]></title><link>https://blog.youkuaiyun.com/windy135/article/details/87249394</link><guid>https://blog.youkuaiyun.com/windy135/article/details/87249394</guid><author>windy135</author><pubDate>Thu, 14 Feb 2019 08:51:26 +0800</pubDate><description><![CDATA[Supervisor 是一个用 Python 写的进程管理工具，可以很方便的对进程进行启动、停止、重启等操作。
安装命令：
$ apt-get install supervisor

安装成功后，会在/etc/supervisor目录下，生成supervisord.conf配置文件。
你也可以使用echo_supervisord_conf &amp;amp;gt; supervisord.conf命令，生成默认的...]]></description><category></category></item></channel></rss>