- 博客(284)
- 资源 (1)
- 收藏
- 关注

原创 Go 收藏积累 慢慢登记防止忘记
个人推荐:http://godeye.org/index.php?a=course&id=6http://mikespook.com/learning-go/http://coolshell.cn/articles/8460.htmlhttp://coolshell.cn/articles/8489.htmlhttps://code.google.com/p/go-zh/http://b...
2016-04-21 13:27:00
915
原创 rust 中protobuf生成与使用
由于我们的项目中没有pb的这个目录 需要手动创建一下,我们的整体结构如下。修改Cargo.toml文件 我们需要加一下 我们需要的依赖包。查看在我们刚刚创建的pb文件夹下是否有一个hello.rs文件。进入到这个文件夹中 创建我们的proto文件。新建一个hello.proto文件内容如下。然后运行cargo build 结果如下。在pb目录创建mod.rs文件 内容如下。初始化的项目结构是这个样子的。首先创建一个项目proto。执行cargo run。
2023-05-26 20:45:00
786
原创 rust 数据类型集合
指明目前Rust并没有确定扩容的策略,以后可能会改变),然后将原vec中的元素拷贝到新内存位置处,同时更新vec的胖指针中的元数据。当向vec插入新元素时,如果没有空闲容量,则会重新申请一块内存,大小为原来vec内存大小的两倍(Rust有两种字符串类型:str和String。str和String的联系和区别。vec使用枚举存储多个类型。
2023-05-25 21:00:00
15
原创 rust cargo expand报错
cargo expand 命令需要 Rust 的 Nightly 版本才能正常工作,而默认的 Rust 版本是 Stable。在 Nightly 版本中,rustc 工具支持 -Z 选项,而该选项在 Stable 版本中是禁用的,因此需要切换到 Nightly 版本,或在 Stable 版本中使用类似 cargo expand 的其他工具。
2023-05-23 21:00:00
17
原创 rust 操作符
操作符 作用 实例 + 加法、字符串拼接 1+2, "Hello " + “world!” - 减法、负数 4-1, -3 * 乘法 3*4 / 除法 10/2 % 取模运算 12%5 == 判断相等 3==5 != 判断不相等 3!=5 < 判断小于 4<5 <= 判断小于等于 4<=4 > 判断大于 5&
2023-05-11 20:30:00
6
原创 rust println!格式化输出
格式 格式说明 样例代码 输出效果 {} 将任何实现了std::fmt::Display trait的类型格式化为字符串输出 println!("Hello, {}!", "world"); Hello, world! {:?} 以调试模式打印任何实现了std::fmt::Debug trait的类型 println!("Debug: {:?}", [1, 2, 3]); Debug: [1, 2, 3] {:#?} 在调试模式下将
2023-05-09 21:30:00
467
原创 rust 中的类型与取值范围
类型 取值范围 bool true 或 false char 单个 Unicode 字符 i8 -128 到 127 i16 -32768 到 32767 i32 -2147483648 到 2147483647 i64 -9223372036854775808 到 9223372036854775807 i128 -170141183460469231731687303715884105728 到 1701411834604692
2023-05-09 21:00:00
429
原创 rust 内置关键词与作用
关键词 作用 as 类型转换 break 跳出循环 const 定义常量 crate 声明当前模块 enum 定义枚举类型 extern 定义外部模块,用于与其他语言的代码交互 fn 定义函数 for 迭代循环 impl 给一个类型实现方法或 Trait if 条件语句 in 确定循环迭代的范围 let 声明变量 loop 无限循环 match 模式匹配 mo
2023-05-09 20:45:00
10
原创 rust vscode编辑器常用插件与配置
插件的完整手册地址:https://rust-analyzer.github.io/manual.html。会实时编译和分析你的 Rust 代码,提示代码中的错误,并对类型进行标注。基于 AI 的自动补全,可以帮助你更快地撰写代码。Rust 使用 toml 做项目的配置管理。帮助你分析当前项目的依赖是否是最新的版本。插件: rust test lens。插件:rust-analyzer。插件: rust syntax。插件: better toml。搜索open user set。插件: crates。
2023-05-05 20:15:00
400
原创 GeoHash 的编码方法
在进行第一次二分区时,经度范围[-180,180]会被分成两个子区间:[-180,0) 和[0,180](左、右分区)。第一次二分区:把经度区间[-180,180]分成了左分区[-180,0] 和右分区[0,180],此时,经度值 116.37 是属于右分区[0,180],用 1 表示第一次二分区后的编码值。第三次二分区:对[90,180]进行二分区,分成[90,135]和[135, 180],经度值 116.37 落在了分区后的左分区[90, 135] 中,所以,第三次分区后的编码值就是 0。
2023-01-13 11:17:22
462
原创 golang 摄像头截图vdk版本
视频流生成图片部分 开源库使用cgo调用ffmpeg 需要安装对应的依赖软件。依赖 github.com/deepch/vdk 开源库。
2022-11-16 20:00:00
678
原创 golang gc优化积累
函数尽量不要返回map, slice对象, 这种频繁调用的函数会给gc 带来压力。小对象要合并。函数频繁创建的简单的对象,直接返回对象,效果比返回指针效果要好。避不开,能用sync.Pool 就用,虽然有人说1.10 后不推荐使用sync.Pool,但是压测来看,确实还是用效果,堆累计分配大小能减少一半以上。类型转换要注意,官方用法消耗特别大,推荐使用雨痕的方式。避免反复创建slice。...
2022-03-15 11:10:40
709
原创 golang ring buffer
package mainimport ( "errors" "fmt")func main() { rb, _ := NewRingBuffer(10) for i := 1; i < 5; i++ { rb.Write(i) } for i := 0; i < 10; i++ { fmt.Println(rb.Read()) }}type RingBuffer struct { data []int size int6.
2022-03-02 09:42:58
126
原创 golang 乘或除二 高效做法
我们遇到数值进行除2的通常写法为 xxx /2 这样的,今天看了一下golang sort.search方法实现 发现了一个新的思路上代码 对应代码目录 $GOROOT/src/sort/search.gofunc Search(n int, f func(int) bool) int { // Define f(-1) == false and f(n) == true. // Invariant: f(i-1) == false, f(j) == true. i, j := 0,...
2021-12-13 09:49:39
303
原创 golang options设计模式
日常开发接入一个新的服务通常的做法是将其封装成一个包,将api调度的逻辑统一收敛 比如重试逻辑,加密处理之类的逻辑都在这个包中实现。举例代码:package apitype Api struct { id int ak string}func NewApi(id int, ak string) *Api { api := &Api{ id: id, ak: ak, } return api}//获取服务名称func (a *Api) GetName() e
2021-12-04 22:35:14
862
原创 golang Timing Functions设计模式
该设计模式主要用途 记录方法耗时 方便确认程序运行耗时大致分布模式样例:package mainimport ( "log" "time")func main() { xiaochuan()}func xiaochuan() { defer timeFunc(time.Now(), "xiaochuan") time.Sleep(10 * time.Second)}func timeFunc(start time.Time, name string) { elap
2021-04-25 16:54:20
68
原创 mysql知识积累 慢慢登记防止忘记
MySQL 的整体架构分为如下几个部分:(1)MySQL 向外提供的交互接口(Connectors)(2)管理服务组件和工具组件(Management Service & Utilities)(3)连接池组件(Connection Pool)(4)SQL 接口组件(SQL Interface)(5)查询分析器组件(Parser)(6)优化器组件(Optimizer)(7)缓存主件(Caches & Buffers)(8)插件式存储引擎(Pluggable ..
2020-09-29 17:38:38
86
原创 golang defer操作理解
package mainimport "fmt"func test1() (x int) { //x只是返回值定义为int类型没有赋值 这个输出取的 int 类型默认值 defer fmt.Printf("in test1 defer: x = %d\n", x) x = 1 return 6}func test2() (x int) { x = 2 //x赋值为2 所...
2019-08-02 16:07:11
128
原创 golang 命令如何操作设置超时
package mainimport ( "context" "errors" "log" "os/exec" "time")//设置超时时间为 5秒var Timeout = 5 * time.Second//执行命令并添加超时检测func Command(name string, arg ...string) (string, error) { ctxt, ca...
2019-08-02 15:23:21
3895
翻译 HTTP 状态码详解
1xx 消息这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。100 Continue服务器已经接收到请求头,并且客户端应继续发...
2019-01-29 14:34:34
1526
golang中文手册
2016-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人