CRCMS

高山仰止,景行行止,虽不能至,心向往之

大道至简


  1. Golang 锁的简单使用

    简述Golang中的锁机制主要包含互斥锁和读写锁 互斥锁互斥锁是传统并发程序对共享资源进行控制访问的主要手段。在Go中主要使用sync.Mutex的结构体表示。 一个简单的示例: 123456func mutex() { var mu sync.Mutex mu.Lock() fmt.Println("locked") mu.Unlock()} 或者也可以使用defer来实现,这在整个函数流程中全部要加锁时特别有用,还有一个好处就是可以防止忘记Unlock 123456f …

    于  golang, lock, sync.mutex 继续阅读

  2. 单向链表优化

    说明在 Golang 单向链表 中是通过不断修改next来实现链表本章通过一个虚拟head方法来优化链表,其原理就是,创建时直接创建head和next,head第一个值始终是nil通过head的next来作为初始值,并且对原有链表进行相关优化 实现代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666 …

    于  golang, 数据结构算法, 链表 继续阅读

  3. Golang container/list 实现 简单stack

    基础实现方法1234567891011121314151617181920212223242526272829import "container/list"type Stack struct { list *list.List}func NewStack() *Stack { return &Stack{ list: list.New(), }}func (s *Stack) Push(value interface&#123 …

    于  golang, stack, 数据结构算法 继续阅读

  4. Leetcode刷题之有效的括号#20

    题目描述给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 解题思路由’(‘,’)’,’{‘,’}’,’[‘,’]’等一一对应,想到的应该是数据栈。 左侧结构的符号入栈,遇到右侧的出栈对比,这样即可一一对应。 代码1234567891011121314151617181920212223242526272829func IsValid( …

    于 继续阅读

  5. Golang 单向链表

    基础链表123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899// 一个简单的单向链表type Node struct { value string // 下一个节点 …

    于  golang, 数据结构算法, 链表 继续阅读

  6. Golang 二分法查找

    递归二分法查找123456789101112131415161718192021222324252627282930313233343536373839404142func BinarySearch(array []int, target int, params ...int) int { length := len(array) maxPoint := length-1 var point int if len(params) == 0 { point = int(max …

    于  golang, 二分法查找, 数据结构算法 继续阅读

  7. 通过git subtree来创建自己的子仓库

    简述查看laravel/framework,就会发现其实laravel主包是由多个子包构建。每个子包又都可以独立使用,主包中相关子包的commit必须一致,同时还需要同步更新方便。如何做到这一点的呢? Subtreesubtree 是什么git subtree 可以实现一个仓库作为其他仓库的子仓库。或者说,可以实现一个主仓库包含多个子仓库。 subtree 的使用查看git subtree --help,发现命令如下: 123456git subtree add -P <prefix& …

    于  composer, git, laravel, subtree 继续阅读

  8. Laravel env 下特殊字符的坑

    简述今天在部署服务器时,线上数据库使用了特殊字符,结果导致mysql连接一直是出错的状态。通过my-cli连接却是OK,于是想到是否是帐号密码错误,打印下env或config,发现因为出现了#字符,后面被自动截断。 解决第一反应是对于特殊字符如# \,应该加上"",测试下确实得到解决。 调试首先想到肯定是在加载env,定位Bootstrap/LoadEnvironmentVariables: 12345try { $this->createDotenv( …

    于  env, laravel 继续阅读

  9. Golang Interface 基础示例一

    路径interfaces/demo.go 123456789101112package interfacestype Summationer interface { Sum(param1, param2 int) int}type Summation struct {}func (s *Summation) Sum(param1, param2 int) int{ return param1 + param2} main调用 1234 …

    于  Golang, Interface, 接口 继续阅读

  10. Gitlab+Jenkins+Bash 搭建多流水线自动部署

    简介因为涉及到的子项目非常多,为了方便统一更新部署测试等相关运行代码,所以Jenkinsfile在本项目中只是起到一个阶段挂载的作用,大部分部署代码使用的是Bash。此方法并不适合大规模集群部署。 Jenkins安装安装启动1docker-compose up -d jenkins 本环境中使用的是laradock中Jenkins进行安装,如果非Docker请参考官方文档进行安装 增加Jenkins插件在系统管理->插件管理中安装Blue Ocean和GitLab插件 在项目根目录 …

    于  gitlab, jenkins, pipeline, 自动部署 继续阅读