String相关类性能测试

String、StringBuffer、StringBuilder

String: String是一个不可变的对象,每次对String类的改变实质都是新生成了一个新的String,然后把指针指向新String对象。每次生成对象都会对系统性能产生影响,速度会相当慢。

StringBuffer: 在字符改变的时候,不会产生新的对象,线程安全的可变字符序列。

StringBuilder: 同StringBuffer类似,线程不安全的可变字符序列。

centos6安装redis-2.8.19

centos6安装redis-2.8.19

1、检查安装依赖程序

1
2
3
yum install gcc-c++
yum install -y tcl
yum install wget

2、获取安装文件

1
wget http://download.redis.io/releases/redis-2.8.13.tar.gz

3、解压文件

1
2
tar -xzvf redis-2.8.19.tar.gz
mv redis-2.8.19 /usr/local/redis

Lantern(灯笼)使用实例

申请Lantern

  • 首先,你需要有一个Google帐户的邮箱地址。

进入到Lantern官网 https://www.getlantern.org/ ,按照提示输入邮箱地址,索取邀请函。

接下来,你将收到顺序如下标题的两封邮件:

1 Lantern Beta Request: Please Confirm

点击邮件正文的__Yes,subscribe me to this list.__按钮

2 Lantern Beta Request: Subscription Confirmed

Android Context 到底是什么?

什么是Context?

一个Context意味着一个场景,一个场景就是我们和软件进行交互的一个过程。比如当你使用微信的时候,场景包括聊天界面、通讯录、朋友圈,以及背后的一些数据。

Android开发中一些被冷落但却很有用的类和方法

MediaMetadataRetriever

顾名思义,就是用来获取媒体文件一些相关信息的类。包括一首歌的标题,作者,专辑封面和名称,时长,比特率等等。如果是视频的话,可以获取视频的长宽,预览图。

http://developer.android.com/intl/zh-cn/reference/android/media/MediaMetadataRetriever.html

TouchDelegate`

用于更改View的触摸区域。场景:比如在RecyclerView的ItemView里包含了CheckBox组件, 然后想实现点击ItemView的时候,也可以触发CheckBox,就可以使用此类。

http://developer.android.com/intl/zh-cn/training/gestures/viewgroup.html#delegate

ArgbEvaluator

用于计算不同颜色值之间的插值,配合ValueAnimator.ofObject或者ViewPager.PageTransformer使用,可以实现不同颜色之间的平滑过渡。

http://developer.android.com/intl/zh-cn/reference/android/animation/ArgbEvaluator.html

Palette

用于提取一张图片的颜色。

http://developer.android.com/intl/zh-cn/reference/android/support/v7/graphics/Palette.html

Android Studio 的快捷键

IDE

按键                        说明
F1                            帮助
Alt+F1                    查找文件所在目录位置
Alt+1                    快速打开或隐藏工程面板
Ctrl+Alt+S                打开设置对话框
Alt+Home                跳转到导航栏
Esc                        光标返回编辑框
Shift+Esc                光标返回编辑框,关闭无用的窗口
Shift+Click                关闭标签页
F12                        把焦点从编辑器移到最近使用的工具窗口
Ctrl+Alt+Y                    同步
Ctrl+Alt+S                打开设置对话框
Alt+Shift+Inert            开启/关闭列选择模式
Ctrl+Alt+Shift+S        打开当前项目/模块属性
Alt+Shift+C                查看文件的变更历史
Ctrl+Shift+F10            运行
Ctrl+Shift+F9            debug运行
Ctrl+Alt+F12                资源管理器打开文件夹

Android 开发规范

命名规范

包命名规范

采用反域名命名规则,
包名全部小写,
连续的单词只是简单地连接起来,
不使用下划线,
一级包名为com,
二级包名为xxx(可以是公司域名或者个人命名),
三级包名根据应用进行命名,
四级包名为模块名或层级名。如:
com.weicheche.android.activity | com.weicheche.android.adapter

Google Java编程风格指南

这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。

与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。

1.1 术语说明

1
2
3
4
5
6

术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)
术语comment只用来指代实现的注释(implementation comments),我们不使用“documentation comments”一词,而是用Javadoc。
其他的术语说明会偶尔在后面的文档出现。```

1.2 指南说明

本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。 示例中的格式选择不应该被强制定为规则。```

Shadowsocks 一键安装脚本(四合一)

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
内存要求:≥128M
日期  :2018 年 02 月 07 日

关于本脚本

1、一键安装 Shadowsocks-Python, ShadowsocksR, Shadowsocks-Go, Shadowsocks-libev 版(四选一)服务端;
2、各版本的启动脚本及配置文件名不再重合;
3、每次运行可安装一种版本;
4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);
5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);
6、Shadowsocks-Python 和 ShadowsocksR 安装后不可同时启动(因为本质上都属 Python 版)。

友情提示:如果你有问题,请先阅读这篇《Shadowsocks Troubleshooting》之后再询问。

40个Java集合面试问题和答案

Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。

1.Java集合框架是什么?说出一些集合框架的优点?

每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:

(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。
(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
(3)通过使用JDK附带的集合类,可以降低代码维护成本。
(4)复用性和可操作性。

36个Android开发常用代码片段

拨打电话

public static void call(Context context, String phoneNumber) {
        context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)));
    }

跳转至拨号界面

public static void callDial(Context context, String phoneNumber) {
        context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber)));
    }

生命中的空白

时光荏苒,躲在季节的背后,做着一个不知道如何,令自己满意的自我。挣扎、喘息、挣扎……
最近,可以很安稳的休息。因为放下了太多,曾经以为生活便是蔚蓝的天空,只要不是阴天,抬头便是蓝天、白云。望望天,会令人心旷神怡。