摘要: Lock和synchronized的选择 总结来说,Lock和synchronized有以下几点不同: 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现; 2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死 阅读全文
posted @ 2018-06-21 11:50 hirampeng 阅读(2492) 评论(1) 推荐(1) 编辑
摘要: 在写查询语句时,一定要注意性能问题。 下面是我收集的一些提高性能的一些方法,不全之处望多多指点。 1.对查询进行优化,一定避免全表扫描,首先考虑在 where 及 order by 涉及的列上建立索引。 2.避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表 阅读全文
posted @ 2018-06-16 00:04 hirampeng 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 作者: 听风,原文地址: https://www.cnblogs.com/huchong/p/10219318.html。 <! TOC 数据库命令规范 数据库基本设计规范 1. 所有表必须使用 Innodb 存储引擎 2. 数据库和表的字符集统一使用 UTF8 3. 所有表和字段都需要添加注释 4 阅读全文
posted @ 2019-10-15 23:00 hirampeng 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 前言 在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录),这种是软链接; 另一种则是透过文件系统的 inode 连结来产生新档名,而不是产生新文件!这种称为硬链接 (hard link)。 这两种玩意儿是完全不一样的东西呢!现 阅读全文
posted @ 2019-10-06 15:58 hirampeng 阅读(3192) 评论(0) 推荐(0) 编辑
摘要: ``` func getLocalIPv4Address() (ipv4Address string, err error){ //获取所有网卡 addrs, err := net.InterfaceAddrs() //遍历 for _, addr := range addrs { //取网络地址的网卡的信息 ipNet, isIpNet := addr.(*net.IPNet) //是网卡并且不 阅读全文
posted @ 2019-09-07 00:43 hirampeng 阅读(1561) 评论(0) 推荐(0) 编辑
摘要: 首先了解一下什么是一致性哈希,这里推荐一篇博客: http://blog.csdn.net/cywosp/article/details/23397179/ 在分布式应用中,扩容和收缩是一个半自动化的过程,在此期间,应用基本上是可用的,所以不能发生大规模动荡的意外,为了最小化潜在的影响,这时候需要使 阅读全文
posted @ 2019-08-02 01:33 hirampeng 阅读(1944) 评论(0) 推荐(0) 编辑
摘要: 转自原文链接 https://www.golangtc.com/t/50d07e11320b521f59000012 闭包虽然在开发中用得不多,但是理解意义还是对于编程有帮助的 版本1: package main import "fmt" func main() { var fn [10]func( 阅读全文
posted @ 2019-07-31 23:37 hirampeng 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 用广度优先算法求解迷宫的最短路径 迷宫如下:0代表可以通过的路径,1代表墙 思路 + 你可以想象你就在迷宫中,你每走的一步的是未知的,例如你走第二步的时候,如果周围都没有墙,你的路径就是这样: + 下一步就是这样: + 走到3步: 所以我们要用一个队列保存上次已经探索的位置,并用相同大小的矩阵记录步 阅读全文
posted @ 2019-07-23 01:25 hirampeng 阅读(1825) 评论(1) 推荐(0) 编辑
摘要: 用go语言操作redis go语言使用redis需要去下载官方redis工具包 在go_path路径下执行: go get github.com/garyburd/redigo/redis 如果没安装git 你可以去后面那个链接下载一个zip包,然后解压到本地gopath路径下就可以了 gopath 阅读全文
posted @ 2019-07-21 13:27 hirampeng 阅读(233) 评论(0) 推荐(0) 编辑
摘要: ``` package main import "fmt" //type LinkedNode struct { // val interface{} // next *LinkedNode //} // //func NewLinkedNode(val interface{}) *LinkedNode { // return &LinkedNode{ // val:val, // } //... 阅读全文
posted @ 2019-07-21 13:11 hirampeng 阅读(638) 评论(0) 推荐(0) 编辑
摘要: ``` package main import "fmt" / add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的 阅读全文
posted @ 2019-07-21 10:43 hirampeng 阅读(957) 评论(0) 推荐(0) 编辑
摘要: ``` package main import ( "fmt" "reflect" "testing" ) type Call struct { Num1 int Num2 int } func (call Call) GetSub(name string){ fmt.Printf("%v 完成了减法运算,%v - %v = %v \n", name, call.Num1, ca... 阅读全文
posted @ 2019-07-17 23:47 hirampeng 阅读(6493) 评论(0) 推荐(0) 编辑