slagga 发布的文章

Goroutine + Channel 是 Go 的招牌,但必须留意被遗弃的 Channel

Goroutine 内存泄漏是产生 Go 程序内存泄漏的常见原因。在我之前的GCTT 出品 |Goroutine 泄露 - 被遗忘的发送者中,我介绍了 Goroutine 内存泄漏,并展示了许多 Go 开发人员容易犯错的例子。继续前面的内容,这篇文章提出了另一个关于 Goroutines 如何出现内存泄露的情景。
泄漏:被遗弃的接收者

在此内存泄漏示例中,您将看到多个 Goroutines 被阻塞等待接收永远不会发送的值。
文章中程序启动了多个 Goroutines 来处理文件中的一批记录。每个 Goroutine 从输入通道接收值,然后通过输出通道发送新值。
示例一

- 阅读剩余部分 -

Gitlab 自建服务器仓库(亲测)

Gitlab 自建服务器仓库(亲测)

所需操作系统

  • 在教程开始之前,是不是很多人搜索过:Windows下GitLab服务器搭建?答案是没有,GitLab只针对Unix类系统做了开发。
  • 当然,GitLab本身就是Git的衍生品,如果你非要在Windows下搭建Git服务器,那么Git的其他衍生品如Gitblit是可以完成的。

Git的优点和缺点介绍

  • 优点
    • 适合分布式开发,强调个体
    • 公共服务器压力和数据量都不会太大
    • 速度快、灵活
    • 任意两个开发者之间可以很容易的解决冲突
    • 离线可以正常提交代码和工作
  • 缺点
    • 学习周期相对而言比较长
    • 不符合常规思维
    • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

- 阅读剩余部分 -

区块链 UTXO 模型

刚刚接触比特币的朋友经常会遇到这个词,官方解释是未经使用的交易输出。只从这个定义上,你能明白是什么意思吗?反正我是困惑了很久。

我们常规的理解是,账户,余额,支出,收入。比如,银行账户,我们有1万元,收入1万,则余额为2万,支出5000,余额为1万5000元。但比特币里实际上是没有账户和余额的概念的。只有一个概念叫utxo,实际上就是你能够支配的,并且还没有被使用的btc,这些btc作为一个整体(无论比特币的数值是多少,都做为一个整体)保存在比特币系统网络里,而且这个utxo能用且只能用一次。

我们可以把utxo类比成支票。支票的数额可以是1元或者1亿元。utxo的数额可以是1聪btc,也可以是1万个btc,但都是一个整体,不可分割。

假设A有一张支票,价值1万元,需要付款给B5000元,那么,B会得到一张5000元的支票,交易费用是100元,作为一张支票给第三方,A自己得到一张支票,价值4900元。原来的1万支票已经使用过,不能再次使用,A,B,第三方分别得到一张新的支票,都是未被使用过的。三个人分别对这三张支票有使用权。

同样的,A有一个utxo,价值1万个btc,需要付款给B5000个btc,那么B会得到一个utxo(价值5000个btc),矿工得到一个utxo(矿工费1btc),A也会得到一个utxo(价值4999btc)。原来的含1万个btc的utxo被系统标记过使用过,任何人不能在使用。而A,B,矿工分别得到一个utxo。他们分别对自己名下的utxo有使用权。

- 阅读剩余部分 -

48条高效率的PHP优化写法

1 字符串
1.1 少用正则表达式

能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。

没得说,正则最耗性能。

str_replace函数要比preg_replace快得多,strtr函数又比str_replace来得快。

有没有你漏掉的好用的函数?

例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。

- 阅读剩余部分 -