自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JunChow

阅读提升上限,实践突破下限。

  • 博客(23)
  • 资源 (8)
  • 收藏
  • 关注

原创 GO database/sql

database/sqlhttp://golang.org/pkg/database/sql/Golang提供了标准库database/sql用于和数据库交互,database/sql只是一套统一地抽象接口,真正与数据库打交道的是各个数据库对应的驱动实现,因此使用前需要先注册对应数据库的驱动,然后就可以使用SQL中定义的接口来统一地操作数据库了。go-sqlite3go-sqlit...

2021-03-31 19:22:07 301

原创 SQLite

SQLite是一款轻量级,遵守ACID事务原则的关系型数据库。SQLite可以直接嵌入到代码中,无需像MySQL、PostgreSQL需启动独立的服务才能使用。SQLite将数据存储在单一磁盘文件中,使用方便,适合学习关系型数据库。SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C编写的,体积很小。因此经常被集成到各种应用程序中,甚至在IOS和Android的Ap...

2021-03-31 19:22:02 306

原创 Go gRPC

gRPC理念:定义一个服务,指定其能够被远程调用的方法(包含参数与返回类型)。在服务端实现此接口,并运行一个gRPC服务器来处理客户端调用,而在服务端拥有一个存根能够像服务端一样的方法。gRPCrRPC默认使用Protobuf对数据继续序列化和反序列化安装protocgrpc默认使用Prortobuf,因此必须首先安装Protobuf编译器。$ protoc --version...

2021-03-31 14:31:57 105

原创 Go RPC

RPC需要解决的问题分布式系统中服务之间的调用问题远程过程调用要能够像本地调用一样,让调用者感知不到远程调用的逻辑。RPC(Remote Procedure Call)远程过程调用是一个计算机协议,该协议允许运行于一台计算机的程序调用另一台计算机的子程序,程序员无需额外地为交互作用编程。RPC允许跨机器、跨语言调用计算机程序方法。Golang中实现RPC会使用已经封装好的官方库和第三方...

2021-03-31 01:11:27 90

原创 Go atomic

原子操作是指执行过程中不能被终端的操作,即针对某个值的原子操作过程中CPU绝对不会再去进行其它操作。为实现严谨,原子操作由一个独立的CPU指令代表和完成,并由操作系统提供调用,因此在并发环境下才能保证原子操作的绝对安全。原子操作是能够保证执行期间是连续且不会被中断的,临界区只能保证访问共享数据是按顺序访问,但并不能保证访问期间不会被切换上下文。Golang提供的原子操作都是非入侵式的,由标准库...

2021-03-30 17:33:56 313

原创 Go protobuf

使用protobuf实现节点间通信、编码报文以提高传输效率protobuf全程Protocol Buffers,是Google开发的一种数据描述语言。protobuf是一种轻便高效的结构化数据存储格式。protobuf跟存储格式、语言、平台无关。protobuf可扩展可序列化protobuf以二进制方式存储,占用内存空间小。protobuf广泛地应用于远程过程调用(PRC)的二进制...

2021-03-30 17:31:15 784

原创 Go singleflight

缓存穿透、缓存击穿、缓存雪崩解决方案缓存处理缓存处理流程缓存击穿单飞缓存击穿是指缓存中没有但数据库存在的对应key的值,由于缓存中key的过期时间到期,转而去数据库读取。当并发请求多大时会引发数据库压力,瞬间倍增造成崩溃。缓存击穿是由于对于设置过期时间的key在某时刻被超高并发地访问形成“热点”,请求全部转发到数据库造成数据库压垮。并发访问使用Golang...

2021-03-28 12:38:03 294

原创 Go sync.WaitGroup

问题当main goroutine为了等待work goroutine都运行完毕,不得不在程序末尾使用time.Sleep()来休眠一段时间,等待work goroutine充分运行。$ vim ./test/goroutine_test.gopackage testimport ( "fmt" "testing" "time")func TestGoRou...

2021-03-27 14:23:06 247

原创 Go goroutine

在Java或C++中实现并发编程时,通常需要自己维护一个线程池,并需要包装一个又一个的任务去调度线程执行任务同时还需要维护上下文切换,这一切通常会耗费开发人员大量心智。能不能有一种机制,开发人员只需要定义任务,让系统去将任务分配到CPU上实现并发执行呢?Go语言的goroutine就是这种机制,goroutine的概念类似于线程,不同之处在于goroutine由Go程序运行时调度和管理。Go程序...

2021-03-27 12:12:39 238

原创 GO URL

URL全称Uniform Resource Location统一资源定位符,用于定位Internet中待访问的文档或资源。URL提供了一种定位Internet上任意资源的手段,资源可通过各种不同的方案(比如HTTP、FTP、SMTP)来访问,因此URL语法随着方案不同而不同。<schema>://<user>:<password>@<host>:...

2021-03-25 17:42:42 837

原创 GO CURL

Golang内置net/http包中http.Client结构用于实现HTTP客户端,因此无需借助第三方网络通信库(如libcurl)就可以直接使用GET或POST方式发起HTTP请求,实现远程请求页面。type Client struct { Transport RoundTripper//HTTP请求创建机制,如果为空将会使用DefaultTransport。 CheckRe...

2021-03-25 10:44:29 554

原创 Go Hash

哈希哈希(Hash)也称为散列,是把任意长度的输入通过哈希算法变换为固定长度的输出,这个输出值也就是散列值。哈希表是根据键值对(key value)而直接进行访问的数据结构,通过将键值对映射到表中一个位置来访问记录,以加快查询速度。映射函数又称为散列函数,存放记录的数组叫做哈希表。如果两个输入串的哈希函数的值相同则发生了碰撞(Collision),既然把任意较长字符串转化为固定长度且较短的字...

2021-03-23 17:44:48 1067

原创 Go Sort

二分查找顺时针查找很多语言中排序算法都是和序列数据类型关联,同时排序函数和具体类型元素关联。相比之下,Golang的sort.Sort函数不会对具体的序列和它的元素做任何假设。相反它使用了一个接口类型sort.Interface来指定通用的排序算法和可能被排序到的序列类型之间的约定。这个接口的实现由序列的具体表示和它希望排序的元素决定,序列的表示经常会是一个切片。算法sort包内部实现...

2021-03-23 15:52:47 252

原创 Consistent Hashing

哈希哈希的本质是一个长度可变的数组,哈希的时间复杂度为O(1)。哈希为什么不用在数组中遍历呢?其他类型的数据查找都需要遍历,即便是树、二叉树也要经过几次比对,才能判定查找对象的位置,时间复杂度为O(Log(n))。原因在于哈希由存储的对象本身的哈希值(HashCode)以及数组长度来决定在数组中的位置。计算出这个位置(哈希值)在各个版本中是不同的。集群一致性哈希是一种特殊的哈希算法,可用于...

2021-03-22 19:09:34 179

原创 Go reflect.DeepEqual

https://studygolang.com/pkgdocreflect.DeepEqual对于array、slice、map、struct等类型,当比较两个值是否相等时,是不能使用==运算符的。func DeepEqual(x, y interface{}) bool深度比较,反馈两个对象是否深等价。用来判断两个值是否深度一致使用reflect.DeepEqual来比较两个s...

2021-03-20 11:52:43 566

原创 Go Test

http://c.biancheng.net/view/124.htmlhttps://geektutu.com/post/geecache-day2.htmlGolang拥有一套单元测试和性能测试系统 - go test 命令单元测试(UT, unit testing)单元测试是指对软件中的最小可测试单元进行检查和验证,对于单元测试中单元的含义,一般要根据实际情况去判定其具体含...

2021-03-20 11:52:12 525

原创 Go Cache

缓存缓存最简单的莫过于存储在内存中的键值对,键值对在Golang中称之为map。使用map做内存缓存时,每次有新数据就向map中插入数据就可以了吗?这样做存在的问题是什么呢?内存不够了,怎么办?内存不够删除数据就好了,怎么来删除呢?随机删除还是按时间顺序删除呢?有没有更好的淘汰策略呢?不同数据的访问频率不同,优先删除访问频率低的数据是不是更好呢?数据访问频率可能随着时间变化,优先删除最近最...

2021-03-19 17:32:09 553

原创 Go html/template

Golang的html/template包实现了数据驱动的模板,用于生成可对抗代码注入且安全HTML输出。html/template包提供了和text/template包相同的接口,html/template是对text/template的二次封装并增加了安全性的处理。模板渲染存在跨站脚本攻击的风险,本质上是网站将用户的输入不作转义写入到生成的页面中。若用户提交一段浏览器脚本,则会在用户...

2021-03-16 17:28:03 272

原创 Go text/template

服务端渲染Golang为模板操作提供了丰富的支持,嵌套模板、导入函数、表示变量、迭代数据等都很简单。若需要比CSV数据格式更复杂的电脑关系,模板可能是一个不错的解决方案。模板的另一个 应用是网站的页面渲染。Golang内置text/template和html/template两个模板库,html/template库为HTML提供了完整的支持,包括普通变量渲染、列表渲染、对象渲染等。tex...

2021-03-16 11:49:22 1299

原创 Go FileServer

文件服务器Golang标准库net/http中提供了http.FileServer方法会返回一个使用FileSystem接口root提供文件访问服务器的HTTP处理器,可方便地实现静态文件服务器。http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path")))http.Dir()方法会返回http.Dir类型用于...

2021-03-15 19:19:05 544

原创 Go Mutex

Go语言提供了sync包和channel机制来解决并发机制中不同goroutine之间的同步和通信Go语言使用go语句开启新的goroutine,由于goroutine非常轻量除了对其分配栈空间外,所占的空间也是微乎其微的。但当多个goroutine同时处理时会遇到比如同时抢占一个资源,某个goroutine会等待等一个goroutine处理完毕某才能继续执行的问题。对于这种情况,官方并不希望依...

2021-03-04 01:06:12 291 2

原创 Redis SETNX

使用Redis的SETNX实现锁机制SETNX key valueSETNX全程Set If Not Exists,表示只有不存在的时候才设置键值对。只有在键key不存在的情况下才能将key的值设置为value若键key已经存在则SETNX命令不做任何动作SETNX设置成功则返回1表示当前进程已经获得锁SETNX设置失败则返回0表示其他进程已经获得锁,当前进程不能进入临界区,...

2021-03-03 21:07:36 342 1

原创 Git bad signature

$ git add .error: bad signature 0x00000000fatal: index file corrupt由于index file索引文件在Git中指的是.git/index这个文件,索引文件保存的是暂存区信息,可通过git ls-files --stage查看暂存区内容。$ git ls-files --stageerror: bad signature 0...

2021-03-03 21:07:18 1006 1

ThinkPHP函数详解

ThinkPHP函数详解 ThinkPHP函数详解 ThinkPHP函数详解

2013-10-03

ThinkPHP框架-模板指南

ThinkPHP模板指南

2013-10-03

ThinkPHP执行流程

ThinkPHP 执行流程

2013-10-03

ThinkPHP3.0 完全开发手册

ThinkPHP3.0 完全开发手册

2013-10-03

微软雅黑字体

程序员专用字体,属于等宽字体,Vista推出的一款使用专用字体。

2012-11-15

批量名称修改.exe

名称修改,简单小工具。 针对于多个文件进行名称的修改,或是音乐名称的修改。

2012-11-15

企业架构工具

Enterprise Archtecture 企业架构工具

2012-08-03

企业网站管理系统

企业网站管理系统

2012-07-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除