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

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)

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.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 ...阅读全文

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.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内存管理(分配)

基于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语鬼

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

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

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

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...阅读全文

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

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

用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实现跨平台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

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内存管理

几个关键数据结构 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

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.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...阅读全文

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

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

golang内存清理

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

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

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 -...阅读全文

可移植像素图格式 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

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

golang写算法

最近在重温数据结构与算法知识,打算用golang将常用算法都实现一遍,主要包括:数组,单链表,双链表,队列,栈,排序算法,二分查找,二分查找扩展问题,二叉树搜索,大小堆,递归,回溯,贪心,分治,图的搜索,跳跃表,位图,缓存淘汰算法,动态规划,字符串搜索等,还有使用常用算法解决一些实际问题...阅读全文

博文 2020-09-01 10:32:40 8格雅鹿

go标准库实现---ASCII 字符包含判断

@TOCASCII 字符包含判断最近换工作,暂时离开了世界上最好的语言,成为了一名 golanger (这好象是一个 web 框架的名字),这一次打算养成良好的习惯,那就从写博客开始吧。文章背景正在琢磨自己用 go 实现一个脚本语言,写词法分析的时候,需要匹配字符串的功能,既然编译器都自己写了,这也自己写一个吧,去研究了下 go 的实现,发现设计的很巧妙,所以分享一下,美中不足的是只适用于 ascii 码源码展示type asciiSet [8]uint32 const RuneSelf = 0x80 // 判断是否包含 func (as *asciiSet)contains(c rune) bool { return (as[c>>5] & (1 << uint(c&31))) != 0 ...阅读全文

博文 2020-08-13 16:32:44 爱简单

2020-09-03:裸写算法:回形矩阵遍历。

福哥答案2020-09-03: 方法一:模拟,位图方式。 跟 方法二 一样,区别是辅助矩阵visited用位图节约空间。 方法二:模拟。 可以模拟螺旋矩阵的路径。初始位置是矩阵的左上角,初始方向是向右,当路径超出界限或者进入之前访问过的位置时,则顺时针旋转,进入下一个方向。 判断路径是否进入之前访问过的位置需要使用一个与输入矩阵大小相同的辅助矩阵visited,其中的每个元素表示该位置是否被访问过。当一个元素被访问时,将 visited 中的对应位置的元素设为已访问。 如何判断路径是否结束?由于矩阵中的每个元素都被访问一次,因此路径的长度即为矩阵中的元素数量,当路径的长度达到矩阵中的元素数量时即为完整路径,将该路径返回。 复杂度分析 时间复杂度:O(mn),其中 m 和 n 分别是输入矩阵的...阅读全文

博文 2020-09-03 22:32:42 福大大架构师每日一题