工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2018年06月的文章

redigo的redis.Pool 配置参数调优

 

配置场景

再来看下主要参数

  • MaxIdle 
    • 表示连接池空闲连接列表的长度限制
    • 空闲列表是一个栈式的结构,先进后出
  • MaxActive 
    • 表示连接池中最大连接数限制
    • 主要考虑到服务端支持的连接数上限,以及应用之间”瓜分”连接数
  • IdleTimeout 
    • 空闲连接的超时设置,一旦超时,将会从空闲列表中摘除
    • 该超时时间时间应该小于服务端的连接超时设置

区分两种使用场景:

  1. 高频调用的场景,需要尽量压榨redis的性能: 
    • 调高MaxIdle的大小,该数目小于maxActive,由于作为一个缓冲区一样的存在,扩大缓冲区自然没有问题
    • 调高MaxActive,考虑到服务端的支持上限,尽量调高
    • IdleTimeout由于是高频使用场景,设置短一点也无所谓,需要注意的一点是MaxIdle设置的长了,队列中的过期连接可能会增多,这个时候IdleTimeout也要相应变化
  2. 低频调用的场景,调用量远未达到redis的负载,稳定性为重: 
    • MaxIdle可以设置的小一些
    • IdleTimeout相应地设置小一些
    • MaxActive随意,够用就好,容易检测到异常
  3. https://blog.csdn.net/xiaohu50/article/details/51606349

golang web xss攻击预防

 从上面访问的结果发现。我们这边的< 之类的符号已经被转义成html 特殊符

上面的方法也是可以进行简化的

 

package main  import ( 	"fmt" 	"html/template" 	"log" 	"net/http" )  func main() { 	//绑定路由 讲访问 / 绑定给  Handler 方法进行处理 	http.HandleFunc("/", Handler) 	http.ListenAndServe(":8080", nil) }  func Handler(w http.ResponseWriter, req *http.Request) { 	err := req.ParseForm() 	//如果解析失败 直接退出 输出对应的错误原因 	if err != nil { 		log.Fatal(nil) 	} 	//获取 传递的name 参数 	user_pro := req.FormValue("name") 	fmt.Fprintf(w, "%s", xss_hander(user_pro))  } func xss_hander(s string) string { 	return template.HTMLEscapeString(s) }https://blog.csdn.net/liangguangchuan/article/details/54617685

beego orm 调用多次sql的事物同步

 https://blog.csdn.net/easternunbeaten/article/details/72456240

 
https://beego.me/docs/mvc/model/transaction.md

Redis 5种主要数据类型和命令

 https://www.cnblogs.com/mingtianct/p/6291593.html

https://www.cnblogs.com/youxin/p/3833817.html

golang中map并发读写问题及解决方法

 https://blog.csdn.net/qq_17612199/article/details/79601222

 
https://blog.csdn.net/skh2015java/article/details/60334091

map按key和按value排序

 https://studygolang.com/articles/10530

 

--------------

可以把k,v组织为一个struct的成员,把其用slice存放后,按照自己的排序方式对slice进行排序。

这种思想可以实现你想要的任意排序。

golang基础-排序、二分查找、map、map排序反转

 https://blog.csdn.net/u013210620/article/details/78344771

正则表达式(括号)、[中括号]、{大括号}的区别小结 通用所有语言 系统

 正则表达式的() [] {}有不同的意思。

() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。

(\s*)表示连续空格的字符串。

[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。

{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。

(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。

[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。

————————————————————————————————————————————————————————————

 

圆括号()是组,主要应用在限制多选结构的范围/分组/捕获文本/环视/特殊模式处理
示例:
1、(abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致
2、(abc)?,表示这一组要么一起出现,要么不出现,出现则按此组内的顺序出现
3、(?:abc)表示找到这样abc这样一组,但不记录,不保存到$变量中,否则可以通过$x取第几个括号所匹配到的项,比如:(aaa)(bbb)(ccc)(?:ddd)(eee),可以用$1获取(aaa)匹配到的内容,而$3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)匹配到的内容,因为前一对括号没有保存变量
4、a(?=bbb) 顺序环视 表示a后面必须紧跟3个连续的b
5、(?i:xxxx) 不区分大小写 (?s:.*) 跨行匹配.可以匹配回车符

方括号是单个匹配,字符集/排除字符集/命名字符集
示例:
1、[0-3],表示找到这一个位置上的字符只能是0到3这四个数字,与(abc|bcd|cde)的作用比较类似,但圆括号可以匹配多个连续的字符,而一对方括号只能匹配单个字符
2、[^0-3],表示找到这一个位置上的字符只能是除了0到3之外的所有字符
3、[:digit:] 0-9 [:alnum:] A-Za-z0-9

——————————————————————————————————————————————————————————————————————

()和[]有本质的区别
()内的内容表示的是一个子表达式,()本身不匹配任何东西,也不限制匹配任何东西,只是把括号内的内容作为同一个表达式来处理,例如(ab){1,3},就表示ab一起连续出现最少1次,最多3次。如果没有括号的话,ab{1,3},就表示a,后面紧跟的b出现最少1次,最多3次。另外,括号在匹配模式中也很重要。这个就不延伸了,LZ有兴趣可以自己查查
[]表示匹配的字符在[]中,并且只能出现一次,并且特殊字符写在[]会被当成普通字符来匹配。例如[(a)],会匹配(、a、)、这三个字符。
所以() [] 无论是作用还是表示的含义,都有天壤之别,没什么联系

https://www.cnblogs.com/signheart/p/20a396bdbdeb9aa446663395eea4e3c4.html

Records:18123