<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[screenswindow的博客]]></title><description><![CDATA[个人笔记]]></description><link>https://blog.youkuaiyun.com/screenswindow</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; screenswindow]]></copyright><item><title><![CDATA[python各种虚拟环境]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/117066489</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/117066489</guid><author>screenswindow</author><pubDate>Thu, 20 May 2021 10:42:32 +0800</pubDate><description><![CDATA[pip
pip 是python的包管理工具

conda
conda 是包及其依赖项和环境的管理工具。
conda 结合了pip和virtualenv的功能.
适用语言：Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
适用平台：Windows, macOS, Linux
conda 分为anaconda和miniconda。anaconda是包含一些常用包的版本，miniconda则是精简版，需要啥装啥，所以推荐使用minicon]]></description><category></category></item><item><title><![CDATA[docker安装jenkins]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/117066164</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/117066164</guid><author>screenswindow</author><pubDate>Thu, 20 May 2021 10:35:24 +0800</pubDate><description><![CDATA[下载Jenkins的镜像
docker pull jenkins/jenkins

查看镜像
docker image ls

将镜像启动成容器。
docker run -d  \
--name jk -u root \
-p 9090:8080  \
-v /var/jenkins_home:/var/jenkins_home  \
jenkinsci/blueocean

查看启动的容器。
docker ps -a 

初入Jenkins。
浏览器打开 localhost:9090
需要输入安装后的初始]]></description><category></category></item><item><title><![CDATA[docker安装kafka和zookpeer]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/117065967</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/117065967</guid><author>screenswindow</author><pubDate>Thu, 20 May 2021 10:33:21 +0800</pubDate><description><![CDATA[Kafka &amp; ZooKeeper Docker镜像
landoop/fast-data-dev
提供了一整套包括Kafka，ZooKeeper，Schema Registry,，Kafka-Connect等在内的多种开发工具和Web UI监视系统。基本上是我见过的最强大的开发环境。尤其是对于Kafka Connect的支持，包含了MongoDB，ElasticSearch，Twitter等超过20种Connector，并且提供了通过REST API提交Connector配置的Web UI。
基本是]]></description><category></category></item><item><title><![CDATA[django启动中遇到的问题-导入模块-迁移]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/110222508</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/110222508</guid><author>screenswindow</author><pubDate>Fri, 27 Nov 2020 10:14:56 +0800</pubDate><description><![CDATA[django遇到问题

django.core.exceptions.The SECRET_KEY setting must not be empty.

在django项目settings.py 里引入模块引起的，原因是导入包位置不对。
setting中有一行定义了SECRET_KEY，因为启动项目初始化时读取setting是自上而下。
当读取你导入的包时，在SECRET_KEY上面，则会报没有定义SECRET_KEY的错


RuntimeError: Model class user.models.U]]></description><category></category></item><item><title><![CDATA[golang_day12-pprof性能调优]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054781</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054781</guid><author>screenswindow</author><pubDate>Fri, 27 Nov 2020 10:10:36 +0800</pubDate><description><![CDATA[Go内置标准库

runtime/pprof:采集工具型应用运行数据进行分析
net/http/pprof:采集服务型应用运行时数据进行分析

工具型 runtime/pprof
pprof.StartCPUProfile(w io.Writer) // 开启CPU性能分析
pprof.StopCPUProfile()  // 关闭cpu性能分析

然后会生成一个文件进行分析，使用命令
go tool pprof xxx.txt

pprof.WriteHeapProfile(w io.Writer) //]]></description><category></category></item><item><title><![CDATA[Django-错误处理exceptions]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/110222264</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/110222264</guid><author>screenswindow</author><pubDate>Fri, 27 Nov 2020 10:09:38 +0800</pubDate><description><![CDATA[settings.py中定义
REST_FRAMEWORK = {
 'common.middleware.exception.exception_handler', // 路径
}

exception

from django.core.exceptions import PermissionDenied
from rest_framework import status
from rest_framework.response import Response
from rest_framework.e]]></description><category></category></item><item><title><![CDATA[Django-模型model及属性]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/110222227</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/110222227</guid><author>screenswindow</author><pubDate>Fri, 27 Nov 2020 10:07:19 +0800</pubDate><description><![CDATA[常用的字段
1、AutoField   ---自增列 = int(11)    如果没有的话，默认会生成一个名称为 id 的列，如果要显示的自定义一个自增列，必须将给列设置为主键 primary_key=True。
2、CharField   ---字符串字段  单行输入，用于较短的字符串，如要保存大量文本, 使用 TextField。必须 max_length 参数，django会根据这个参数在数据库层和校验层限制该字段所允许的最大字符数。
3、BooleanField   ---布尔类型=tinyint]]></description><category></category></item><item><title><![CDATA[Django-中间件middleware-启用-执行-自定义]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/110222142</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/110222142</guid><author>screenswindow</author><pubDate>Fri, 27 Nov 2020 10:06:01 +0800</pubDate><description><![CDATA[如何启用中间件
将其添加到 Django 配置文件settings.py的 MIDDLEWARE 配置项列表中。
Django中可以不使用任何中间件，如果你愿意的话，MIDDLEWARE 配置项可以为空。但是强烈建议至少使用 CommonMiddleware，最好是保持默认的配置，这有助于你提高网站的安全性。
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.mid]]></description><category></category></item><item><title><![CDATA[Django-日志logger]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/110221920</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/110221920</guid><author>screenswindow</author><pubDate>Fri, 27 Nov 2020 10:03:25 +0800</pubDate><description><![CDATA[level:级别
一个记录器是日志系统的一个实体，每一个记录器是一个已经命名好的可以将消息为进程写入的“桶”。
每一个记录器都会有一个日志等级，每个等级描述了记录器即将处理的信息的严重性，


python定义了以下六个等级：




级别
值
描述




CRITICAL
50
关键错误/消息,描述已经发生的严重问题


ERROR
40
错误,描述已经发生的主要问题


WARNING
30
警告消息,描述已经发生的小问题


INFO
20
通知消息,普通的系统信息列表内容


DEBUG
10
调]]></description><category></category></item><item><title><![CDATA[golang_day11-单元测试]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054763</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054763</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:29:40 +0800</pubDate><description><![CDATA[单元测试
点击查看文档详情

需要测试的文件 + _test.go
需要测试的函数, func Test + 函数名

go test -v // 测试所有
go test -v xxx_test.go // 测试文件中所有函数
go test -v -run Test hello_test.go //测试hello_tst.go文件中所有以Test开头(正则)的函数
go test -v -run Test$ hello_test.go //只测试Test函数

func Split(str string]]></description><category></category></item><item><title><![CDATA[golang_day10-flag包]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054738</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054738</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:29:04 +0800</pubDate><description><![CDATA[flag
用来获取参数
例如：go build生成xxx.exe
gocode$ xxx.exe -name=“xsn” -age=18
	// 方法1
	name := flag.String("name", "xsn", "请输入姓名")
	age := flag.Int("age", 18, "请输入年龄")
	ct := flag.Duration("d", time.Second, "运行时间")
	
	// 方法2
	var city string
	flag.StringVar(&amp;ci]]></description><category></category></item><item><title><![CDATA[golang_day9-TCP-UDP]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054691</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054691</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:27:53 +0800</pubDate><description><![CDATA[互联网协议
OSI七层
应用层 - 表示层 - 会话层 - 传输层 - 网络层 - 数据链路层 - 物理层
OSI五层
应用层 - 传输层 - 网络层 - 数据链路层 - 物理层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShbQ1F5R-1602577641704)(https://www.liwenzhou.com/images/Go/socket/osi.png)]
socket编程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5]]></description><category></category></item><item><title><![CDATA[golang_day8-互斥锁-sync]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054650</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054650</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:26:48 +0800</pubDate><description><![CDATA[互斥锁
应用场景：防止同一个goroutine，对数据进行操作
var lock sync.Mutex
lock.Lock()
lock.Unlock()

读写互斥锁
应用场景：读&gt;写 的场景很多
特点：
1.读的场景，后续的goroutine来了，能读不能写
2.写的场景，厚度的goroutine来了，不管是读还是写，都需要等待
var rwLock sync.RWMutex
rwLock.RLock() // 读锁
rwLock.RUnlock()

rwLock.Lock()
rwLock.U]]></description><category></category></item><item><title><![CDATA[golang_day7-goroutine-channel]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054629</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054629</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:26:15 +0800</pubDate><description><![CDATA[并发之goroutine
并发和并行的区别
goroutine的启动
将要并发执行的任务包装成一个函数，调用函数的时候，前面加上go关键字，就能够开启一个goroutine去执行该函数的任务。
goroutine对应的函数执行完，改goroutine就结束了。
程序启动的时候会自动创建一个goroutine去执行main函数
main函数结束了，那么程序就结束了，由该程序启动的所有其他goroutine也就都结束了。
goroutine的本质
goroutine的调度模型：GMP
M:N 把m个gorout]]></description><category></category></item><item><title><![CDATA[golang_day6-time-log-定时器]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054608</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054608</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:25:41 +0800</pubDate><description><![CDATA[time
2006-01-02 15:04:05.000
时间类型

time.Time: time.Now()
时间戳：
time.Now().Unix() 1970.1.1到现在的秒数  time.Now().UnixNano() 1970.1.1到现在的纳秒数

时间间隔类型

time.Duration 时间间隔类型

const {
    Nanosecond Duration = 1
    Microsecond = 1000 * Nanosecond
    Millisecond = 1]]></description><category></category></item><item><title><![CDATA[golang_day5-package-interface]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054595</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054595</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:24:54 +0800</pubDate><description><![CDATA[包
包的定义 --&gt; package关键字，包名通常是和目录名一直，不能包含-
一个文件夹就是一个包
文件夹里面放的都是.go文件
包的导入  import

包的导入路径是从$GOPATH/src后面的路径开始写起
单行导入


多行导入


为导入的包起别名
匿名导入 – 导入之后会执行init
GO不支持循环导入
包中的标识符(变量名/函数名/结构体名/接口名/常量)可见性 --&gt; 标识符首字母大写表示对外可见
init()
包导入的时候会自定执行
一个包里面只有一个init()
init]]></description><category></category></item><item><title><![CDATA[golang_day4-自定义类型-类型别名-结构体和方法]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054552</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054552</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:24:18 +0800</pubDate><description><![CDATA[自定义类型和类型别名
type MyInt int // 自定义类型
type newInt = int // 类型别名
类型别名只在代码编写过程中有效，编译完成之后就不存在，内置的byte和rune都属于类型别名。

结构体
基本数据类型：
变成是代码解决现实生活中的问题：
var name = "CYW"

结构体是一种数据类型，可以保存多个维度数据的类型
type Addr struct {
    city string
}

type person struct {
    name string]]></description><category></category></item><item><title><![CDATA[golang_day2-运算符-数组-切片-指针-map]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054512</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054512</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:23:26 +0800</pubDate><description><![CDATA[运算符
算数运算符
+ - * /

逻辑运算符
|| &amp;&amp; !

位运算符
| &amp; &gt;&gt; &lt;&lt; ^

赋值运算符
+= -= = ……
++ 和 -- 是独立的语句，不是运算符

比较运算符
&gt; &gt;= &lt; &lt;= == != ……

数组 array
var age [30]int
var age = [3]int{1,2,3}
var names [20]string
数组包含元素的类型和个数，元素的个数(长度)属于数组的一部分
数组]]></description><category></category></item><item><title><![CDATA[day1-go安装-基本数据类型-for循环]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/109054416</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/109054416</guid><author>screenswindow</author><pubDate>Tue, 13 Oct 2020 16:21:36 +0800</pubDate><description><![CDATA[go安装
go env
go命令
go build: 编译GO程序
go build -o “xx.exe”：编译成xx.exe文件
go run main.go：像执行脚本一样执行main.go文件
go install：先编译后拷贝
go语言文件基础语法
存放go源代码文件后缀名：.go
文件第一行：package关键字声明包名
如果要编译可执行文件，必须要有main包和main函数(入口函数)
// 单行注释
/*
多行注释
*/

go语言的函数外，必须以关键字开始
函数内部定义的变量，必须使用
变]]></description><category></category></item><item><title><![CDATA[nginx例子]]></title><link>https://blog.youkuaiyun.com/screenswindow/article/details/76246948</link><guid>https://blog.youkuaiyun.com/screenswindow/article/details/76246948</guid><author>screenswindow</author><pubDate>Fri, 28 Jul 2017 12:50:20 +0800</pubDate><description><![CDATA[一个简单的负载均衡的示例，把www.domain.com均衡到本机不同的端口，也可以改为均衡到不同的地址上.

http {
: upstream myproject {
: server 127.0.0.1:8000 weight=3;
: server 127.0.0.1:8001;
: server 127.0.0.1:8002;
: server 127.0.0.1:8003;
: }]]></description><category></category></item></channel></rss>