2019年4 月月 发布的文章

BAT等技术官方博客

1. 美团技术团队博客: 地址: http://tech.meituan.com/
2. 腾讯社交用户体验设计(ISUX) 地址:http://isux.tencent.com/
3. 京东设计中心 地址:http://jdc.jd.com
4. QQ游戏设计中心 地址:http://gdc.qq.com
5. 百度搜索用户体验中心 地址:http://ued.baidu.com/
6. 一淘UX 地址:http://ux.etao.com
7. 腾讯CDC 地址:http://cdc.tencent.com
8. 腾讯ISUX 地址:http://isux.tencent.com
9. 腾讯MXD移动互联网设计中心 地址:http://mxd.tencent.com
10. UXDC 2011体验设计峰会 地址:http://www.uxdc.org
11. 视觉同盟 地址:http://www.visionunion.com
12. Tencent TG ideas 地址:http://tgideas.qq.com
13. Tencent AlloyTeam 地址:http://www.alloyteam.com
14. QQ客户端团队博客 地址:http://impd.tencent.com/
15. 阿里巴巴(中文站)UED 地址:http://www.aliued.cn
16. 支付宝官方Blog 地址:http://blog.alipay.com (不过进去是支付宝)
17. Taobao UED 地址:http://ued.taobao.com/blog/
18. 阿里巴巴国际站UED 地址:http://www.aliued.com
19. 百度MUX 地址:http://mux.baidu.com
20. 微博UDC 地址:http://udc.weibo.com
21. 搜狗UED 地址:http://ued.sogou.com
22. 搜狐MUED 地址:http://mued.sohu.com
23. 搜狐畅游VC地址:http://vc.changyou.com/index.shtml
24. 网易用户体验设计中心 地址:http://uedc.163.com/
国内外的技术博客
我也列举一些我收藏的,也经常会看的博客(排序不分先后)。
Facebook
网址:https://code.facebook.com
博客上会介绍一些Facebook在Android、iOS、前端、后端以及硬件技术遇到的问题,也包括一些他们团队研究的新技术,比如fresco等等。我最感兴趣的是他们在技术上遇到的一些问题,然后他们是怎么解决的
Square
网址:http://square.github.io/
Square应该是业界开源项目最多的公司之一了,它的github主页上列举了好多开源项目,一个做Android的如果没用过Square的开源库的话,要么你非常非常牛逼,要么你真的不关心开源项目
美团
网址:http://tech.meituan.com/
从它的博客可以看到美团大概是从2013开慢慢写的,大概是因为2013后美团不断扩大,也慢慢积累了很多技术(踩了很多坑),博客上会写各种技术的:Android、iOS、前端、运维、机器学习等等~
阿里
网址:阿里聚安全
抱歉我没有找到阿里公开的技术博客站点,之前我在阿里的时候,我在内网看到,公司内部会有很多人分享自己遇到的问题以及解决方法,公开的博客,我还没有发现
微信移动团队
这个应该没有博客,只有微信公众号:WeMobileDev
貌似也是最近才开的,博客文章的质量非常高,每一篇基本都是微信移动团队经验的总结,详细介绍了他们遇到的困难以及如何解决的。比如:提升Android客户端会话速度提升70%背后的故事、Android微信只能心跳方案、Android拆分与加载Dex的多种方案等等
每一篇都会具体到技术的细节,真正的解决每一个问题,非常赞这样的技术团队
腾讯的Bugly
网址:http://bugly.qq.com/blog/
Bugly的博客会介绍一些Android和iOS开发过程中帮助我们性能分析的方法,比如如何衡量一个App的卡顿情况呢?Bugly的博客告诉你,使用Choreographer.FrameCallback这个工具。还有很多其他的性能分析的技巧
转自:
https://www.cnblogs.com/jhj117/p/5144630.html

996又如何休息

休息,光靠睡觉就行?错!
对于体力劳动者来说,睡眠的确是一种比较有效的休息方式,它能有效地放松我们的身体;
但脑力劳动者在一天可以睡满8小时的情况下,还是觉得非常累、非常疲惫的话,那就不是因为“缺觉”了。
脑力劳动者的大脑皮层经常处于高度兴奋状态,而身体肌肉却处于低兴奋状态,如果想要好好放松的话,最好试试“转移”自己的注意力,而不是去床上睡一觉。
脑力劳动者,得学会让大脑休息
我们睡觉的时候,大脑不能休息,那怎么样才能让大脑休息一下呢?
大脑不同的区域掌管我们不同的活动,虽然不可能让大脑完全“关机”,但是改变一下活动的内容,让大脑的一个区域休息,另一个区域开始运转,这样就能达到放松的效果。
周一到周五在办公室坐了5天,每天都想着企划案、报表,到了周六、周日就可以去参加一些活动,像是打一小时篮球,上上烘焙课,做做十字绣,浇浇花,逗弄逗弄宠物,都能帮助我们放松大脑,这比“睡一天”可好用多了。

基于规则的中文地址分词与匹配方法

研究背景及意义

随着地理信息系统(GIS)的不断发展和其在各行业的广泛应用,人们对信息共享
的要求也越来越迫切。例如在城市管网、交通导航、工商管理、公共卫生、灾害管理等
领域,地理信息系统作为信息共享的平台,其应用越来越广泛。城市各行业的数据库都
保存着大量和地理位置有关的非空间数据。但是这些行业建设的 GIS 系统并没有足够的
空间位置数据进行支撑,因为地址数据并不能够批量、准确地转化为空间化的信息。这
些数据大多都没有空间位置坐标,无法对应到电子地图上,也就无法进行空间分析和管
理决策。
地址匹配技术正是这一问题的解决方法。地址匹配技术就是把自然语言描述的地理
位置信息转换成地理坐标的过程。通过地址匹配技术,可以把城市各个行业的非空间
信息数据进行空间化,进而运用到 GIS 实际应用中,实现信息的集成与数据共享。
GIS    例如,百度地图
引入一些地址组成的基本概念:
(1)地址串:就是一般的地址,日常的通信地址。例如:青岛市黄岛区前湾港路 579 号。
(2)地址要素:组成地址串的若干词组,如上面的地址就是由 4 个地址要素组成的,分别是“青岛市”、“黄岛区”、“前湾港路”和“579 号”,每个地址要素相对独立。
(3)地址通名:顾名思义,就是地址要素中通用的那些字段。例如:地址要素 “黄岛区”中“区”为地址通名, “前湾港路”中“路”为地址通名。
(4)地址专名:例如:“黄岛区”中“黄岛”为地址专名。地址要素中去掉地址通名后剩余的部分就称为地址专名。
 
Key technologies on Address matching
 
 
Standard address model
 
标准地址模型举例
中文分词方法:
1.基于字典的分词方法
1)正向最大匹配法
2)逆向最大匹配法
3)最少切分词方法
4)逐词遍历法
2.基于理解的分词方法
3.基于统计的分词方法

在人工智能的自然语言处理(NLP)领域也会用到中文分词技术。

正向最大匹配法:
它的基本思想是:首先创建一个用于自动分词的中文词典,可以得知词典中的最长词条的汉字个数,假设个数为 n。然后,取待切分句子的前 n 个字符作为匹配字段,在分词词典中进行字段的查询匹配。如果词典中有这样的字段,则匹配成功。这样,由 n个字符组成的字段被切分出来,作为一个词。如果词典中不存在这样的字段,则匹配失败,将字段末尾去一个汉字,剩下的 n-1 个字符作为新的字段,再进行匹配,如此重复,直到匹配成功为止。
例如句子“我们是中华人民共和国的公民”,假设字典的最长词长为 7,它的正向最
大匹配法的分词流程如下表 所示。
 
分词过程实例
Process of segmentation
标准数据库的创建:
建立地址标准数据库系统是地址匹配的前提工作,需要将采集的城市地址按照确定
的标准地址模型进行标准化。
在创建的标准地址库中,分别存储地址的行政区划部分和详细街道地址部分。
 
中文地址的组成复杂多样,对比标准地址模型,可能存在地址表达不完整、残缺的情况。(设定:1道路名,2门牌号,3住宅小区,4楼牌号,5建筑物。)例如地址址武汉市青山区工业一路21号,是1(道路名)+2(门牌号)的模式,没有3、4、5三种地址要素。因此需要定义规则以便于后面地址匹配的进行。如下表所示。
 
 
 
 
地址匹配规则树
Geocoding rule tree
 
对于存在语义歧义的模糊地址,可以利用栈存储所有歧义情况,并构建一棵歧义地址树,按照深度优先原则遍历该树,直至查询到满足规则的地址记录为止。当查询失败时,可以读取栈中上一层的歧义地址继续查询。虽然一定程度上加大了查询的复杂度,但可以比较好的应对歧义模糊地址的匹配问题。
 
例如,地址“江汉墨水湖东侧12号楼B座301室”,首先,行政区划部分应该是“江汉区”,缺少地址通名“区”;“墨水湖”表述有歧义,可能是墨水湖路,也可能是墨水湖小区;另外,“东侧、B座301室”为多余信息,应该去掉。以此地址为例,算法的具体步骤如下:
1)判断字符串中是否存在行政区划。通过搜索标准地址库中行政区划表,查找到“江汉”一词与记录“江汉区”模糊匹配,将其分割出来。
2)对剩余字符串“墨水湖东侧12号楼B座301室”进行地址分词匹配。通过匹配规则树,限定了搜索字段为1(道路名)、3(住宅小区名)、5(建筑物)。调用最大正向匹配算法,查询到“墨水湖”分别与1墨水湖路和3墨水湖小区两个字段模糊匹配,因此产生语义歧义。并将1与3先后入栈,栈顶为3,故先将“墨水湖”匹配到3,查询规则库,没有满足条件的规则,故对“东侧12号楼B座301室”继续进行分词匹配。通过规则树,3后面只有4。继续调用最大匹配算法,在标准地址库中的4字段中查询剩余子串 “东侧12号楼B座301室”,无匹配结果。

故重新选取栈顶元素,将“墨水湖”匹配到1,查询规则库无满足的规则,故继续分词匹配。查询规则树并确定备选字段为2、3、4、5。搜寻字符串“东侧12号楼B座301室”,查找到“12号楼”,与4字段有一条匹配记录,将该词记入分词结果词组。此时查询规则库,找到规则三满足条件。分词匹配算法完成。
运算结果:对于模糊地址“江汉墨水湖东侧12号楼B座301室”,分词结果为“墨水湖、12号楼”,在标准地址库中找到了地址记录“墨水湖东路15号12号楼”。
 

Java实现正向最大匹配算法的分词算法

package com.demo;
import java.io.*;
import java.util.ArrayList;
/**
 * 正向最大匹配算法的分词算法.
 */
public class MM {
    String Maxlen;
    ArrayList<String> dict;
    String s;
    String subs;
    String result = "";
    public MM() {
        dict = new ArrayList<String>();
        dict.add("山西");
        dict.add("大同");
        dict.add("云冈");
        dict.add("校西街");
        dict.add("小区");
    }
    //最大正向匹配算法
    public String MMwork(int len, String sen) {
        while (sen.length() != 1) {
            while (true) {
                if (len < sen.length()) {
                    s = sen.substring(0, len);
                } else {
                    len = sen.length();
                    s = sen.substring(0, len);
                }
                if (dict.contains(s) || len == 1) {
                    result = result + s + "/";
                    break;
                } else {
                    len = len - 1;
                }
            }
            sen = sen.substring(len);
            len = 3;
        }
        result = result + sen + "/";
        return result;
    }
    public static void main(String[] args) {
        MM mm = new MM();
        System.out.println(mm.MMwork(3,"山西省大同市云冈区校西街201号"));
    }
}

参考链接:https://blog.csdn.net/yin5627/article/details/78231914

try-with-resource语法糖

JDK7及其之后的资源关闭方式

public static void main(String[] args) {
    FileInputStream inputStream = null;
    try {
        inputStream = new FileInputStream(new File("test"));
        System.out.println(inputStream.read());
    } catch (IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                throw new RuntimeException(e.getMessage(), e);
            }
        }
    }
}
public static void main(String[] args) {
    try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
        System.out.println(inputStream.read());
    } catch (IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}

1、当一个外部资源的句柄对象实现了AutoCloseable接口,JDK7中便可以利用try-with-resource语法更优雅的关闭资源,消除板式代码。
2、try-with-resource时,如果对外部资源的处理和对外部资源的关闭均遭遇了异常,“关闭异常”将被抑制,“处理异常”将被抛出,但“关闭异常”并没有丢失,而是存放在“处理异常”的被抑制的异常列表中。