<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kriszhang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kriszhang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kriszhang]]></copyright><item><title><![CDATA[Go语言学习笔记十三： Map集合]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79431973</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79431973</guid><author>kriszhang</author><pubDate>Sat, 03 Mar 2018 18:14:52 +0800</pubDate><description><![CDATA[Go语言学习笔记十三： Map集合

Map在每种语言中基本都有，Java中是属于集合类Map，其包括HashMap, TreeMap等。而Python语言直接就属于一种类型，写法上比Java还简单。 
Go语言中Map的写法比Java简单些，比Python繁琐。



定义Map



var x map[string]string
x : = make(map[string]string)

...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十一： 切片（slice）]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79431652</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79431652</guid><author>kriszhang</author><pubDate>Sat, 03 Mar 2018 17:19:08 +0800</pubDate><description><![CDATA[Go语言学习笔记十一： 切片（slice）

切片这个概念我是从python语言中学到的，当时感觉这个东西真的比较好用。不像java语言写起来就比较繁琐。不过我觉得未来java语法也会支持的。



定义切片

切片可以使用make函数来定义，也可以像变量声明一样创建个未指定大小的切片。



var x []int = make([]int, 3);
y := make([]int, 3);
z...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十： 结构体]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79377576</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79377576</guid><author>kriszhang</author><pubDate>Mon, 26 Feb 2018 15:19:08 +0800</pubDate><description><![CDATA[Go语言学习笔记十： 结构体

Go语言的结构体语法和C语言类似。而结构体这个概念就类似高级语言Java中的类。



结构体定义

结构体有两个关键字type和struct，中间夹着一个结构体名称。大括号里面写上所有的成员变量，并且指定这些变量的类型。访问这些内部成员时使用.符号。注意是结构体创建的变量，才能用点访问内部成员。 
不是直接用结构体访问。



package main

impo...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记九： 指针]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79377246</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79377246</guid><author>kriszhang</author><pubDate>Mon, 26 Feb 2018 14:57:32 +0800</pubDate><description><![CDATA[Go语言学习笔记九： 指针

指针的概念是当时学C语言时了解的。Go语言的指针感觉与C语言的没啥不同。



指针定义与使用

指针变量是保存内存地址的变量。其他变量保存的是数值，而指针变量保存的是内存地址。这个内存地址可能保存者一个基本数值。 
指针变量也是有类型的。它需要知道自己保存的内存地址指向数值的类型，因为不同的数值类型占用的空间大小是不同的。

在指针中有两个重要的符号需要了解： &amp;a...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记八： 数组]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79302048</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79302048</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 21:47:24 +0800</pubDate><description><![CDATA[Go语言学习笔记八： 数组

数组地球人都知道。所以只说说Go语言的特殊（奇葩）写法。 
我一直在想一个人参与了两种语言的设计，但是最后两种语言的语法差异这么大。这是自己否定自己么，为什么不与之前统一一下。



声明数组



var variable_name [SIZE] variable_type

例子：



var x [10] int



初始化数组



var x = [5]...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记七： 函数]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79300633</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79300633</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 17:37:50 +0800</pubDate><description><![CDATA[Go语言学习笔记七： 函数

Go语言有函数还有方法，神奇不。这有点像python了。



函数定义



func function_name( [parameter list] ) [return_types] {
   函数体
}

举个例子：



/* 函数返回两个数的最大值 */
func max(num1, num2 int) int {
   /* 声明局部变量 */
   va...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记六： 循环语句]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79299107</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79299107</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 15:45:49 +0800</pubDate><description><![CDATA[Go语言学习笔记六： 循环语句

今天学了一个格式化代码的命令：gofmt -w chapter6.go



for循环

for循环有3种形式：



for init; condition; increment {
}

// 类似while
for condition {
}

// 和for(;;)一样
for {
}

循环slice，map，数组，字符串还可以使用下面这种方式：


...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记五： 条件语句]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79298860</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79298860</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 15:23:11 +0800</pubDate><description><![CDATA[Go语言学习笔记五： 条件语句



if语句



if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}

竟然没有括号，和python很像。但是有大括号，与python又不一样。

例子：



package main

import &quot;fmt&quot;

func main() {
   var a int = 1
   if a &amp;lt; 2 {
       fmt.P...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记四： 运算符]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79298446</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79298446</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 14:52:40 +0800</pubDate><description><![CDATA[Go语言学习笔记四： 运算符

这章知识好无聊呀，本来想跨过去，但没准有初学者要学，还是写写吧。



运算符种类

与你预期的一样，Go的特点就是啥都有，爱用哪个用哪个，所以市面上的运算符基本都有。 
1. 算术运算符 
1. 关系运算符 
1. 逻辑运算符 
1. 位运算符 
1. 赋值运算符 
1. 其他运算符



算术运算符

包括：+，-， *，/, %, ++, --。



a :...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记三： 常量]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79297995</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79297995</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 14:17:24 +0800</pubDate><description><![CDATA[Go语言学习笔记三： 常量

定义常量

常量就是在声明后不能再修改的量。



const x int = 100
const y string = &quot;abc&quot;
const z = &quot;abc&quot;

看上去与变量的定义差不多，就是把var变成了const关键字。



枚举



const (
    Yellow = 1
    Red = 2
    Blue = 3
)



特殊常量iot...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记二： 变量]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79297584</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79297584</guid><author>kriszhang</author><pubDate>Fri, 09 Feb 2018 13:41:11 +0800</pubDate><description><![CDATA[Go语言学习笔记二： 变量

今天又学了一招如何查看go的版本的命令：go version。另外上一个笔记中的代码还可以使用go run hello.go来运行，只是这种方式不会生成exe文件。



定义变量

使用var关键字来定义变量。例如：



var x int = 100;

顺便说一句，go语言一行代码可以不写分号结束符。 
也分单行注释//和多行注释/* */。 
其实也可以不写...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记一： Hello World]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79292771</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79292771</guid><author>kriszhang</author><pubDate>Thu, 08 Feb 2018 18:48:05 +0800</pubDate><description><![CDATA[Go语言学习笔记一

听说Go语言又快又简单。即具有C语言的运行速度，又具有Python语言的开发效率，不知道真的假的。所以特意来学学这门“老”语言。



下载Go

先从简单的Hello world开始吧。首先从官网（https://golang.org/）下载Go。 
我下载了windows版本的go1.9.4.windows-amd64.msi文件（91M）。公司网速好快，大约花了3秒就下...]]></description><category></category></item><item><title><![CDATA[Django获取Header中的信息]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/79291313</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/79291313</guid><author>kriszhang</author><pubDate>Thu, 08 Feb 2018 16:39:38 +0800</pubDate><description><![CDATA[今天需要从header中获取一些信息，查了一些资料，需要注意一下几点：


request.META.get(“header key”) 用于获取header的信息
注意的是header key必须增加前缀HTTP，同时大写，例如你的key为username，那么应该写成：request.META.get(&quot;HTTP_USERNAME&quot;)
另外就是当你的header key中带有中横线，那么自动会...]]></description><category></category></item><item><title><![CDATA[MongoDB日志文件过大]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/78875023</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/78875023</guid><author>kriszhang</author><pubDate>Fri, 22 Dec 2017 16:55:39 +0800</pubDate><description><![CDATA[MongoDB日志文件过大MongoDB启动的时候指定了–logpath为一个日志文件。随着时间此文件会变得越来越大，达到好几个G。 
因为不想让MongoDB进程重新启动，所以不能停止进程删除此文件。解决的方法网上给方式有两种。第一种方式进入到mongo的命令行交互程序，输入：use admin
db.runCommand({logRotate: 1})经过测试发现，此种方式只能让主mongo的日]]></description><category></category></item><item><title><![CDATA[python3编译成pyc文件]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/78773285</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/78773285</guid><author>kriszhang</author><pubDate>Mon, 11 Dec 2017 15:34:54 +0800</pubDate><description><![CDATA[python3编译成pyc文件pyc是编译py之后生成的本地文件。一般当我们想发布系统的时候不想让别人看到源代码，所以要提前生成pyc文件。现今网上有很多介绍如何生成pyc的文章，但是在python3之后发现其生产pycache目录下，而不是与源文件同一目录。那么如何让python3实现生成的pyc与源代码在同一目录呢？python3 -m compileall -b .加上参数-b就可以了。所以发]]></description><category></category></item><item><title><![CDATA[Freemarker不显示对象的属性值的原因]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/78370938</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/78370938</guid><author>kriszhang</author><pubDate>Sat, 28 Oct 2017 00:33:20 +0800</pubDate><description><![CDATA[Freemarker不显示对象的属性值的原因今天使用Freemarker在springboot项目中通过模板生成一些html文件。但是发现没有显示对象的属性。 
找了很长时间，终于发现不显示对象的属性可能是两个原因造成的：
属性没有getter方法。这个比较奇葩，估计是freemarker显示属性调用的是getter方法，虽然写的是属性名称。
对象是内部类的对象。这个真的让我花了几个小时，没有任何错]]></description><category></category></item><item><title><![CDATA[django显示SQL语句]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/77683943</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/77683943</guid><author>kriszhang</author><pubDate>Tue, 29 Aug 2017 17:54:38 +0800</pubDate><description><![CDATA[django显示SQL语句有时候我们使用模型查询数据，但是并不知道具体执行的SQL语句到底对不对。那么可以通过下面的方法打印出具体执行的SQL语句。这样有助于调试：queryset = MyModel.objects.all()
queryset.query.__str__()参考：https://stackoverflow.com/questions/3748295/getting-the-sql]]></description><category></category></item><item><title><![CDATA[AngularJS国际化配置]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/76934073</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/76934073</guid><author>kriszhang</author><pubDate>Tue, 08 Aug 2017 19:53:43 +0800</pubDate><description><![CDATA[AngularJS国际化配置下载angular-translate下载zip包：https://github.com/angular-translate/bower-angular-translate/releases引入到js文件<script src="/bower_components/angular-translate-2.15.2/angular-translate.min.js"></s]]></description><category></category></item><item><title><![CDATA[Django的国际化]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/76933882</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/76933882</guid><author>kriszhang</author><pubDate>Tue, 08 Aug 2017 19:34:54 +0800</pubDate><description><![CDATA[Django的国际化Django基于python的gettext来实现国际化。其过程为安装gettext工具，然后再代码中调用指定方法，然后用gettext提供的程序来把代码中需要翻译的部分找出来写到一个po的文件中，翻译po中的内容，最后通过gettext工具编译成mo文件。安装gettext在windows上安装gettext可以自己从下面网址下载： 
http://gnuwin32.sourc]]></description><category></category></item><item><title><![CDATA[Django多进程日志文件问题]]></title><link>https://blog.youkuaiyun.com/kriszhang/article/details/76679781</link><guid>https://blog.youkuaiyun.com/kriszhang/article/details/76679781</guid><author>kriszhang</author><pubDate>Fri, 04 Aug 2017 13:27:27 +0800</pubDate><description><![CDATA[Django多进程日志文件问题最近使用Django做一个项目。在部署的时候发现日志文件不能滚动（我使用的是RotatingFileHandler），只有一个日志文件。 
查看Log发现一个错误消息：PermissionError: [WinError 32] 另一个程序正在使用此文件。因为我有一些进程需要使用Django的模型层来操作数据库。所以再这些单独的进程中引入了Django：os.envir]]></description><category></category></item></channel></rss>