code随手记

Practice from here


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索
close

go数组

发表于 2018-04-18   |   分类于 go   |     |   阅读次数

数组

  • 在Go语言中数组是一个值类型(value type)。是真真实实的数组,而不是一个指向数组内存起始位置的指针,也不能和同类型的指针进行转化,这一点严重不同于C语言。所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。因此,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。
  • 定义数组的格式:var [n],n>=0
  • 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型
  • 注意区分指向数组的指针和指针数组
  • 数组在Go中为值类型
  • 数组之间可以使用==或!=进行比较,但不可以使用<或>(比较的前提是数组个数相同,并且元素类型相同)
  • 可以使用new来创建数组,此方法返回一个指向数组的指针
  • Go支持多维数组
阅读全文 »

mac下安装go及环境变量配置

发表于 2018-04-04   |   分类于 go   |     |   阅读次数

以下命令都是直接在根目录下执行即可

方法一:homebrew

homebrew是Mac系统下面目前使用最多的管理软件的工具,目前已支持Go,可以通过命令直接安装Go,不过在这之前需要先安装homebrew

安装命令

1
2
$ brew update && brew upgrade
$ brew install go

安装完输入 go env 查看环境信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/qianjianeng/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/qianjianeng/go"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.10/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.10/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/vj/0nsxxzqd3cgdqnwkzqxqg6zr0000gn/T/go-build786549549=/tmp/go-build -gno-record-gcc-switches -fno-common"
阅读全文 »

PhotoBatch-图片去重(3)

发表于 2017-12-22   |   分类于 macOS   |     |   阅读次数

参考资料:http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html

很多时候,我们的文件夹里会有重复或者相似的图片,这类图片自然没有必要存在多份,我们要做的就是遍历所有图片,然后找出相似的,只保留其中一张即可。

这里的关键技术叫做”感知哈希算法”(Perceptual hash algorithm),它的作用是对每张图片生成一个”指纹”(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。

另外还找到了其他几种方法,这里是地址
http://www.ruanyifeng.com/blog/2013/03/similar_image_search_part_ii.html

第一步,缩小尺寸。

将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
在macOS,使用的是NSImage, 两者的一些操作很类似。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (NSImage *)reSizeImage:(NSImage *)image toSize:(CGSize)reSize
{
NSImage *sourceImage = image;
if (![sourceImage isValid]){
NSLog(@"Invalid Image");
} else {
NSImage *smallImage = [[NSImage alloc] initWithSize: reSize];
[smallImage lockFocus];
[sourceImage setSize: reSize];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[sourceImage drawAtPoint:NSZeroPoint fromRect:CGRectMake(0, 0, reSize.width, reSize.height) operation:NSCompositeCopy fraction:1.0];
[smallImage unlockFocus];
return smallImage;
}
return nil;
}

阅读全文 »

PhotoBatch-文件重命名(2)

发表于 2017-12-04   |   分类于 macOS   |     |   阅读次数

上一篇文章已经写了如何获取文件夹路径,今天实现photoBatch的第一个简单功能,图片批量重命名,当然也可以对任何文件进行重命名

搭建界面

搭了个简单的界面,如下图:
布局用了purelayout框架
我们需要得到重命名后的文件名前缀,以及文件格式和是否保留原文件,给这3个变量一个默认值。

文件夹处理

获取到文件路径后处理:需要对每个文件的路径进行处理,如果是以
file://开头,需要把前面的file://去掉,这种地址无法处理。这里是对文件夹路径的处理,处理完的路径再加上文件名就是完整的路径。

阅读全文 »
1…678…12
夜千寻墨

夜千寻墨

扫码关注微信公众号,及时获取文章更新

48 日志
10 分类
77 标签
RSS
GitHub Weibo 简书 instagram
© 2020 夜千寻墨
powered by Hexo
theme - Next
本站访客数人次 总访问量次