最近太懒了
自定义支持markdown只会让我的VsCode越来越卡
技术性不强但是打字还慢无语了,这个打字的东西
1print(a)
强行换行
golang调度-channel
Channel
设计原理不要通过恭喜内存的方式进行通信,二十通过通信的方式共享内存。
很多主流编程语言中,多个线程传递数据方式一般情况都是共享内存,为了解决线程竞争,需要限制同一时间读写这些变量的线程数量
虽然可以通过共享内存加互斥锁进行通信,但是go提供了一种不同并发的模型,即顺序通讯进程,
Gorouting 和channel分别对应csp中实体和传递信息媒介。
gorutine通过channel传递数据
两个独立的goroutine ,一个会向channel中发送数据,另一个会从channel中读取数据,两个能独立的运行,并不存在直接关联,但是通过channel完成通讯
先入先出原则(FIFO)
先从channel读取数据的goroutine会先接受到数据
先向channel发送数据的goroutine会得到先发送的权力
这种 FIFO 的设计是相对好理解的,但是稍早的 Go 语言实现却没有严格遵循这一语义,我们能在 runtime: make sure blocked channels run operations in FIFO order 中找到关于带缓冲区的 Chan ...
以及如何使用rpc
http://doc.oschina.net/grpc?t=57966
gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。
正如其他 RPC 系统,gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型。gRPC 默认使用 protocol buffers 作为接口定义语言,来描述服务接口和有效载荷消息结构。如果有需要的话,可以使用其他替代方案。
使用 protocol buffers
PHP-深拷贝浅拷贝-_clone
深拷贝//变量复制了一份传递给另一个变量就是深拷贝,一个值改变了,另一个值不会变(直接复制)
浅拷贝//变量之间的值是地址*|&传递,这就是浅拷贝.值如果改变了两个变量的值都会改变 (引用复制,可变)
关键次 _clone
对象赋值:浅拷贝
普通类型的变量是深拷贝
php默认浅拷贝即普通赋值
例1:
1234567891011class Persion{public $age = 0;public $name = 'xiapeifus';public $obj = null;}$persion = new Persion();$xiaoming = clone $persion; //使用clone关键字复制一份$a的值,进行深拷贝.拷贝之后不会改变$a之前的值$xiaoming->age = 1;var_dump($persion->age);// 0var_dump($xiaoming->age);// 1
//例2:增加__clone ...
Git-代码提交规范
Git commit message 是Git提交的必要信息,message的信息完整度也反映了工程师对于代码提交的重视程度,不清晰的git message信息甚至会让工程师完全回忆不起自己当初做了什么调整,导致后续代码维护成本特别大。因此为了提高线上代码库的管理程度,特此制定GIT commit message规范。
一、commit message格式1、Type(必须)用于说明 git commit 的类别,只允许使用下面的标识。feat:新功能(feature)。fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。fix:产⽣diff并自动修复此问题。适合于一次提交直接修复问题to:只产⽣diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fixdocs:文档(documentation)。style:格式(不影响代码运行的变动)。refactor:重构(即不是新增功能,也不是修改bug的代码变动)。perf:优化相关,比如提升性能、体验。test:增加测试。chore:构建过程或辅助工具的变动。revert:回滚到上一个版本。 ...
前端-npm私有源加载平台
调研平台:sinopia,VerdaccioVerdaccio官方文档https://verdaccio.org/docs/en/configuration
搭建:
认证方式身份验证与您正在使用的auth 插件相关。软件包限制也由Package Access处理。
客户端:基于npm客户端登录后会生成一个配置令牌,在.npmrc中
https://docs.npmjs.com/files/npmrc
且允许匿名发布包
包发布的时候允许阻止访问和下载
服务端关于组的验证:
access: $all-> publish: $all proxy: npmjs
不同的包读取权限限制:
1234567891011121314packages: 'jquery': access: $all publish: $all 'my-company-*': access: $all publish: $authenticated '@my-local-scope/*': ac ...
其他-CRLF、CR、LF详解
很长一段时间里,对于CRLF、CR、LF的理解仅限于不同操作系统下对换行符的定义。所谓知其然需知其所以然,从学习中找到乐趣,对知识的记忆才会更加深刻。
名词解释CR:Carriage Return,对应ASCII中转义字符\r,表示回车LF:Linefeed,对应ASCII中转义字符\n,表示换行CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行众所周知,Windows操作系统采用两个字符来进行换行,即CRLF;Unix/Linux/Mac OS X操作系统采用单个字符LF来进行换行;另外,MacIntosh操作系统(即早期的Mac操作系统)采用单个字符CR来进行换行。
野史老式机械打字机(来源:视觉中国)据野史记载,在很久以前的机械打字机时代,CR和LF分别具有不同的作用:LF会将打印纸张上移一行位置,但是保持当前打字的水平位置不变;CR则会将“Carriage”(打字机上的滚动托架)滚回到打印纸张的最左侧,但是保持当前打字的垂直位置不变,即还是在同一行。
当CR和LF组合使用时,则会将打印纸张上移一行,且下一个打字位 ...
关于blog更新周期
每周 三篇基础知识文档编写
每两周一次总结工作情况
每月一次的软件使用教程记录