Go语言中文网 为您找到相关结果 23

Golang 使用FreeType-go进行字体

FreeType库(http://www.freetype.org/)是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。 freetype-go就是用go语言实现了FreeType驱动。它的项目地址: https://code.google.com/p/freetype-go 下面是使用它绘制的一个字体效果图: 相关代码: 1: package main 2: 3: import ( 4: "code.google.com/p/freetype-go/freetype" 5: "fmt" ...阅读全文

博文 2014-10-04 19:26:12 ghj1976

go 位图(bitmap)的实现

## 位图 [github地址](https://github.com/xiaomeng79/go-algorithm) https://github.com/xiaomeng79/go-algorithm ### 概念 在一个结构中,用一个比特位来描述一个数据的状态,这种结构就称为位图。位图实际上是哈希表的一种变形 ### 位图可以干什么 - 大数据滤重 - 数据排序 ### 为什么使用 - 节省内存 - 可以位操作,更快 ### 代码 ``` package bitmap import "fmt" //位图 type BitMap struct { bits []byte max int } //初始化一个BitMap //一个byte有8位,可代表8个数字,取余后加1为存放最大数所需的...阅读全文

博文 2019-03-01 12:22:53 xiaomeng

Go语言实现位图排序(bitmap)

Go语言提供了byte类型,一个byte对应8个位,所以转换一下就可以实现位图了。 代码: package main //author:xcl //date:2014-1-25 import ( "fmt" ) func main() { arrInt32 := [...]uint32{5, 4, 2, 1, 3, 17, 13} var arrMax uint32 = 20 bit := NewBitmap(arrMax) for _, v := range arrInt32 { bit.Set(v) } fmt.Println("排序后:") for i := uint32(0); i < arrMax; i++ { if k := bit.Test(i); k == 1 { fmt.P...阅读全文

博文 2015-06-17 23:01:27 xcltapestry

RobotGo v0.46.0 发布, 修复重要 bug

RobotGo v0.46.0 发布了,Golang 跨平台控制鼠标、键盘、位图、屏幕、窗口句柄以及全局事件监听。 更新: go get -u github.com/go-vgo/robotgo 主要变更: - 增加 robot 分支 - 增加 ActivePID - 增加 FindBit 更新: - 更新 examples 和文档 - 更新 FindIds - 更新 README.md 和 clipboard 修复: - 修复 MoveMouseSmooth 参数错误 - 修复 name 错误 - 修复 FindBitmap 错误 项目地址:https://github.com/go-vgo/robotg...阅读全文

RobotGo v0.44.0 发布,Go 桌面自动化

RobotGo v0.44.0 发布了,Golang 跨平台控制鼠标、键盘、位图、屏幕、窗口句柄以及全局事件监听。 主要变更: - 增加 CHANGELOG.md - 格式化代码 - 增加 fedora 依赖文档 更新: - 更新 Test - 更新 Guidelines - 更新 godoc 和 docs - 更新并分割 examples - 更新并整理 README.md 修复: - 修排版和MD显示错误 - 修复 fedora 添加事件内存问题 - 修复 doc.md 和 README.md 显示问题 安装: - go get -u github.com/go-vgo/robotgo 项目地址: Githu...阅读全文

RobotGo v0.41.1 发布,祝大家新年快乐

RobotGo v0.41.1 发布了,Golang跨平台控制鼠标、键盘、位图、屏幕、窗口句柄以及全局事件监听; 主要变更: - 增加停止全局事件监听api - 增加SetHandle - 增加代码示例 - 降级Capture_Screen - 增加BCaptureScreen - 增加Version - 增加Go Report - 增加godoc和更新 link - 简化部分API - 清除打印改为返回 - 更新文档 - 更新代码符合golint标准 - 添加弃用API警告 修复BUG: - 修复AddEvent鼠标值为null与键盘冲突问题 安装: - go get github.com/go-vgo/robotgo ...阅读全文

Go:内存管理与内存清理

![](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20191109-Go-Memory-Management-and-Memory-Sweep/01.png)

Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.

*这篇文章基于 Go 1.13 版本。有关内存管理的讨论在我的文章 ”[Go:内存管理与分配](https://medium.com/a-journey-with-go/go-memory-man...阅读全文

博文 2020-03-12 21:14:10 shiluo

RobotGo v0.20.0,Golang跨平台控制鼠标键盘位图屏幕,增加全局事件监听

RobotGo v0.20.0 发布了。v0.20.0 是针对RobotGo v0.10.0优化完善的版本,用于自动化测试工具等场景。 主要变更: 增加全局事件监听 例子: mleft := robotgo.LEvent("mleft") if mleft == 0 { Println("you press...", "mouse left button") } 增加图片格式转换方法 更新CaptureScreen方法,可以不传参数 更新GetPixelColor方法 更新测试 更新文档 完善bitmap 修复BUG: 修复CaptureScreen参数问题 修复MouseToggle...阅读全文

用go实现跨平台Autoit/AutoHotkey和按键精灵功能示例代码

Robotgo v0.40.0对鼠标键盘操作进行了大幅度的完善,由于跨平台切换测试麻烦(合并几个平台的代码到对比上传代码都浪费了不少时间)和C代码生产效率与Go和JavaScript不在一个级别上,没有支持窗口和进程对应窗口的选择以及窗口Bounds,将在下一个版本完善,键盘操作可能在某些输入法上有些问题请切换到系统输入法(目前优先完成窗口句柄的问题,后面会解决该问题). 项目地址:https://github.com/go-vgo/rob... 下面整理本机测试部分的代码,将会在以后版本陆续完善,并附上注释(请看清代码再运行): package main import ( . "fmt" "github.com/go-vgo/robotgo" ) func main() { //键盘控制 ...阅读全文

博文 2017-02-10 10:30:20 vway

探索Go内存管理(分配)

基于1.8.3版本,64位Linux操作系统 1、概述 Go内存管理基于tcmalloc,使用连续虚拟地址,以页(8k)为单位、多级缓存进行管理; 在分配内存时,需要对size进行对齐处理,根据best-fit找到合适的mspan,对未用完的内存还会拆分成其他大小的mspan继续使用 在new一个object时(忽略逃逸分析),根据object的size做不同的分配策略: 极小对象(size<16byte)直接在当前P的mcache上的tiny缓存上分配; 小对象(16byte <= size <= 32k)在当前P的mcache上对应slot的空闲列表中分配,无空闲列表则会继续向mcentral申请(还是没有则向mheap申请); 大对象(size>32k)直接通过mheap申请。 2、数...阅读全文

博文 2017-09-14 03:34:51 Love语鬼

Go1.5的垃圾回收

Go1.5的垃圾回收 2015-06-30 Go1.5的垃圾回收是一个非分代,非移动的,并发的,三色的标记清扫垃圾回收。 简单解释一下,非分代是指Go1.5的垃圾回收没有使用分代垃圾回收算法,非移动是指没有做内存的整理和紧缩,这里的"并发"是指在垃圾回收的时候,用户代码可以同时运行。三色标记清扫是一个经典的垃圾回收算法,更多基础知识相关可以看另一篇博客,本文假设读者对于垃圾回收有一些基本的了解。 Go1.5垃圾回收的实现被划分为五个阶段: GCoff 垃圾回收关闭状态 GCscan 扫描阶段 GCmark 标记阶段,write barrier生效 GCmarktermination 标记结束阶段,STW,分配黑色对象 GCsweep 清扫阶段 从比较宏观的角度,描述Go1.5的GC流程: 从...阅读全文

博文 2016-07-20 13:26:07 zenlife

GC垃圾回收机制: 浅析与理解

GC垃圾回收机制: 浅析与理解 对垃圾回收进行分析前,我们先来了解一些基本概念 基本概念 内存管理:内存管理对于编程语言至关重要。汇编允许你操作所有东西,或者说要求你必须全权处理所有细节更合适。C 语言中虽然标准库函数提供一些内存管理支持,但是对于之前调用 malloc 申请的内存,还是依赖于你亲自 free 掉。从C++、Python、Swift 和 Java 开始,才在不同程度上支持内存管理。 内存压缩:对内存碎片进行压缩。(和win10的那个“内存压缩”不太一样啦) win10内存压缩:物理内存已经见底,将一部分不常使用的内存数据打包压缩起来,等到有程序需要访问那些数据的时候,再解压缩出来。 引用与指针: 引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。 不能有NULL ...阅读全文

博文 2017-02-09 08:22:15 言己

用go实现跨平台Autoit和按键精灵功能示例代码

Robotgo v0.40.0对鼠标键盘操作进行了大幅度的完善,由于跨平台切换测试麻烦(合并几个平台的代码到对比上传代码都浪费了不少时间)和C代码生产效率与Go和JavaScript不在一个级别上,没有支持窗口和进程对应窗口的选择和Bounds,将在下一个版本完善,键盘操作可能在某些输入法上有些问题请切换到系统输入法(目前优先完成窗口句柄的问题,后面会解决该问题). 项目地址:https://github.com/go-vgo/robotgo OSC@GIT:https://git.oschina.net/veni0/robotgo 下面整理本机测试部分的代码,将会在以后版本陆续完善,并附上注释(请看清代码再运行,运行产生的影响概负责): package main import ( . "f...阅读全文

博文 2016-11-24 11:00:01 vWay

golang内存管理

几个关键数据结构 mspan 由mheap管理的页面,记录了所分配的块大小和起始地址等 mcache 与P(可看做cpu)绑定的线程级别的本地缓存 mcenter 全局空间的缓存,收集了各种大小(67种)的span列表 mheap 分配内存的堆分配器,以8kb进行页管理 fixalloc 固定尺寸的堆外对象空闲列表分配器,用来管理分配器的存储 内存分配逻辑 如果object size>32KB, 则直接使用mheap来分配空间; 如果object size<16Byte, 则通过mcache的tiny分配器来分配(tiny可看作是一个指针offset); 如果object size在上面两者之间,首先尝试通过sizeclass对应的分配器分配; 如果mcache没有空闲的span, 则向mc...阅读全文

博文 2019-08-09 00:32:55 SuperGopher

RobotGo v0.46.6 发布, 大幅度优化 bitmap

RobotGo v0.46.6 发布了,Golang 跨平台控制鼠标、键盘、位图、屏幕、窗口句柄以及全局事件监听。 更新: ``` go get -u github.com/go-vgo/robotgo ``` 主要变更: - 增加 getcolor - 增加 .travis.yml - 增加 bitmap from string - 增加 find some color - 增加 find the every bitmap - 增加 robot: add no bitmap in master 更新: - 更新 examples 和文档 - 更新 README.md 和 clipboard - 更新 findbit api 到 findbi...阅读全文

golang内存清理

一、清理 当垃圾标记完成后,接着就以内存块(span)为单位进行清理操作;其实这里会带来一个疑问:是不是要挨个检查所有的内存单元,然后在一一清理。在理解这个东西之前需要看看mspan的结构 type mspan struct{ // 代表一个内存块 //... gcmarkBits *gcBits // 标记位图; 对应的object标记为垃圾 等待清理 allocBits *gcBits // 分配位图; 对应的内存块object使用情况 //... } 通过上面的源码可以看到有一个垃圾标记位图(gcmarkBits),垃圾回收器以此标记出可回收,也就是可被复用的内存位置(golang分配的内存块当在进行垃圾回收时,并不会直接归还给操作系统,而是完成清理后归还给central中间部件,以便...阅读全文

博文 2019-01-08 19:34:46 神奇的考拉

Robotgo v0.49.0 发布了, Go 桌面自动化, 更多特性

Robotgo v0.49.0 Olympus Mons 发布了,Golang 跨平台控制鼠标、键盘、位图、屏幕、窗口句柄以及全局事件监听。 项目地址: https://github.com/go-vgo/robotgo ### Add - [NEW] Add get image size func - [NEW] Add linux type string utf-8 support - [NEW] Add scroll mouse support x, y - [NEW] Add AddEvent() "esc" support fix #105 - [NEW] Add AddEvent "space" fix #110 - [NEW] Add clipb...阅读全文

可移植像素图格式 PPM,灰度图格式 PGM,位图格式 PBM 的介绍 -- 视频和图像编程基础之一

可移植像素图格式 PPM,灰度图格式 PGM,位图格式 PBM 的介绍 简介 可移植像素图格式(PPM),可移植灰度图格式(PGM)和可移植位图格式(PBM)是便于跨平台的图像格式。有时候也被统称为 PNM 格式 文件格式描述 这三种格式其实是一样的描述方法,只不过 PBM 是单色,PGM 是灰度图,PPM 使用 RGB 颜色。每个文件的开头两个字节(ASCII 码)作为文件描述符,指出具体格式和编码形式。 Type Magic number Extension Colors ASCII Binary Portable BitMap P1 P4 .pbm 0–1 (white & black) Portable GrayMap P2 P5 .pgm 0–255 (gray scale) Po...阅读全文

博文 2018-09-18 17:34:41 harriszh

vscode搭建GO环境工作去设置问题求解答

提示true值不对看了下 给出的值没有true 还提示一个设置无效。翻阅了很多文档都是这么设置的 具体的请看图片。刚入坑配置go插件配了好几天好不容易翻墙弄好了 设置有不对 头大呀![新建位图图像.jpg](https://static.studygolang.com/180331/4512b6c67e6c667c773384633f78aba2.jpg)![新建位图图像.jpg...阅读全文

Robotgo v0.48.0 发布了, 支持 utf-8, 增加 ActiveName 和更多特性, Go 桌面自动化

RobotGo v0.48.0 本尼维斯山发布了,Golang 跨平台控制鼠标、键盘、位图、屏幕、窗口句柄以及全局事件监听。 项目地址: https://github.com/go-vgo/robotgo ### 增加 - [NEW] 增加通过标题激活窗口方法 ActiveName - [NEW] 增加 TypeString 支持 utf-8 增加方法 CharCodeAt, UnicodeType, PasteStr 并更新 TypeStr, TypeString - [NEW] 增加 count of bitmap func CountBitmap - [NEW] 增加方法 SaveCapture 和例子 - [NEW] 增加方法 Sleep -...阅读全文

Redis慢查询、Pipeline、发布订阅、Bitmap、HyperLogLog、GEO快速了解

Redis慢查询 1.用于查看Redis慢日志。 Redis pipeline 1.用于批量操作 发布订阅 1.角色:发布者和订阅者、频道。2.模型:类似生产者和消费者。3.API publish: publish channel message subscribe: subscribe channel unsubscribe: unsubscribe channel psubscribe: 模式订阅。 punsubscribe: 退订指定的模式。 pubsub channels: 列出至少有一个订阅者的频道。 pubsub numsub:列出给定频道的订阅者数量。 pubsub numpat:列出被订阅模式的数量。 4.和消息队列的区别:消息队列只有一个订阅者可以收到,而发布订阅都可以收到...阅读全文

博文 2020-01-16 20:32:39 xx19941215