9.7android注解支持,mysql优化,图片搜索

来源:互联网 发布:喜剧动漫 知乎 编辑:程序博客网 时间:2024/06/08 23:55

http://www.codeceo.com/article/android-support-annotations.html

Android Support Annotations注解类
可不可以空注解
@NONNULL / @NULLABLE
限定资源
@STRINGRES / @DRAWABLERES等
编译不混淆
@KEEP

http://www.codeceo.com/article/mysql-performance-10-tips.html

优化重建数据库CREATE TABLE mydb.mytablenew LIKE mydb.mytable;INSERT INTO mydb.mytablenew SELECT * FROM mydb.mytable;ALTER TABLE mydb.mytable RENAME mydb.mytablezap;ALTER TABLE mydb.mytablenew RENAME mydb.mytable;DROP TABLE mydb.mytablezap;

数据预热
echo “select username,password from users;” > /var/lib/mysql/upcache.sql
使用内存磁盘:

mkdir -p /mnt/ramdisksudo mount -t tmpfs -o size=4000M tmpfs /mnt/ramdisk/mv /var/lib/mysql /mnt/ramdisk/mysqlln -s /tmp/ramdisk/mysql /var/lib/mysqlchown mysql:mysql mysql

显示图片搜索:
http://www.codeceo.com/article/like-image-1.html

原理
第一步,缩小尺寸。

将图片缩小到8×8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。

第二步,简化色彩。

将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。

第三步,计算平均值。

计算所有64个像素的灰度平均值。

第四步,比较像素的灰度。

将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。

第五步,计算哈希值。

将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

= = 8f373714acfcf4d0
代码:

#!/usr/bin/pythonimport globimport osimport sysfrom PIL import ImageEXTS = 'jpg', 'jpeg', 'JPG', 'JPEG', 'gif', 'GIF', 'png', 'PNG'def avhash(im):    if not isinstance(im, Image.Image):        im = Image.open(im)    im = im.resize((8, 8), Image.ANTIALIAS).convert('L')    avg = reduce(lambda x, y: x + y, im.getdata()) / 64.    return reduce(lambda x, (y, z): x | (z << y),                  enumerate(map(lambda i: 0 if i < avg else 1, im.getdata())),                  0)def hamming(h1, h2):    h, d = 0, h1 ^ h2    while d:        h += 1        d &= d - 1    return hif __name__ == '__main__':    if len(sys.argv) <= 1 or len(sys.argv) > 3:        print "Usage: %s image.jpg [dir]" % sys.argv[0]    else:        im, wd = sys.argv[1], '.' if len(sys.argv) < 3 else sys.argv[2]        h = avhash(im)        os.chdir(wd)        images = []        for ext in EXTS:            images.extend(glob.glob('*.%s' % ext))        seq = []        prog = int(len(images) > 50 and sys.stdout.isatty())        for f in images:            seq.append((f, hamming(avhash(f), h)))            if prog:                perc = 100. * prog / len(images)                x = int(2 * perc / 5)                print '\rCalculating... [' + '#' * x + ' ' * (40 - x) + ']',                print '%.2f%%' % perc, '(%d/%d)' % (prog, len(images)),                sys.stdout.flush()                prog += 1        if prog: print        for f, ham in sorted(seq, key=lambda i: i[1]):            print "%d\t%s" % (ham, f)
0 0
原创粉丝点击