- 浏览: 11837 次
- 性别:
- 来自: 上海
-
最新评论
文章列表
For ibus:
1.ibus-table-createdb -s vissible-ibus.txt
2.sudo cp vissible-ibus.db /usr/share/ibus-table/tables
3.sudo cp vissible.gif /usr/share/ibus-table/icons
4.restart ibus and add it in preferences
For scim:
1.scim-make-table vissible-scim.txt -b -o vissible.bin
2.sudo cp vissible.bin / ...
添加指令:
locale-gen zh_CN.UTF-8
更新字符集:
sudo locale-gen
设置当前用户编码:
export LANG=zh_CN.UTF-8
设置系统编码:
在/etc/profile末尾添加一行
export LANG=zh_CN.UTF-8
快速排序原理:快排采集分治法的思想,根据排序基准值把待数据分成两份,左边的数据比基准值小,右边的数据比基准值大,然后左右两边数据再按照各自己基准值划分...直至分解已排序的小数组,最终得到已排序数组。
关于基准值位置查找
微缩:最左边的设为基准值,从后往前找小的,找到移到前面,再从前往后找大的,再找到移到后面...直到找不到为止。
啰嗦:把最前面的数值当做基准值,然后从数组的右边位置向左找比基准值小的数据,没找到说明最前面的位置就是基准值位置;找到就移到最前面,然后从前面位置开始往后找比基准值大的数据,没找到说明前一个比基准值小的数据的原始位置就是基准值位置,把基准值放入该位置; ...
归并排序原理:将数组二分,然后对二分后的数组继续使用归并排序...当分解后数组元数足够小时(为1),说明每个数组已经排序好,然后将二分的数组通过某个算法合并成已经排好序的数组,直至整个数组都排序好序。
时间复杂度:最优O(n),最坏O(nlogn),平均O(nlogn)
归并排序jdk源码优化方案:
1. 当分解后的数组元素个数小于7时,改用插入排序
2. 当二分后的已经排好序的两个数组,左边的最大值小于等于右边最小值时,不需要再合并
3. 复制一份源数组,在归并两个已排序数组时,只要将源数据按顺序移到目标数组中,可以避免在同一个数组整体移动产生开销,达到线性时间,以空 ...
选择排序原理:从数组中查找最大值,然后与队首交换,然在剩下的数据中查找最大值,与余下队首交换…最后完成排序。
时间复杂度:O(n^2),稳定
public static <T extends Comparable<T>> int compare(T a, T b) {
if (a == null){
return b == null ? 0 : -1;
}
if (b == null){
return 1;
}
return a.compareTo(b);
}
...
插入排序原理:从左往右依次将数据插入到前面已排序好的数组中。
时间复杂度:最优O(n),最坏O(n^2),平均O(n^2)
数据已经正序排好的情况最优,倒序最坏
public static <T extends Comparable<T>> int compare(T a, T b) {
if (a == null){
return b == null ? 0 : -1;
}
if (b == null){
return 1;
}
return a.comp ...
冒泡排序原理:从后往前,把小的数与前一个数交换,直到把最小的数交换到首位;首位后移,重复上述操作,得到有序数组。
时间复杂度:最优O(n),最坏O(n^2),平均O(n^2)
数据已经正序排好的情况最优,倒序最坏
public static <T extends Comparable<T>> int compare(T a, T b) {
if (a == null){
return b == null ? 0 : -1;
}
if (b == null){
return 1; ...
希尔排序原理:对指定步长的数据进行插入排序,然后减小步长进行插入排序,直到步长为1时进行插入排序,最终完成所有数据的排序。
步长:具体的步长视数组长度而定,本例简单以len >>> k为步长,其中len为数组长度,k为1, 2, 3 ...
时间复杂度:最好O(nlog2n),最坏O(n^2)
最好最坏取绝于步长。
/**
* @description 希尔排序
* 减少增量的插入排序
* @param data
*/
public static <T extends Comparable<T>> v ...
堆排序原理:从最后一个树叉结点开始往前,将每个树叉结点所在树修复成大根堆,然后将堆的根结点(最大值)与末尾结点交换,去掉末尾结点,再将余下节点修复成大根堆,再将根结点与末尾结点交换...最后得到由小到大的已排数组。完全二叉树父子结点索引公式:父结点=i,左孩子=i*2-1,右孩子=i*2大根堆:父结点大于子节点的完全二叉树
时间复杂度:O(nlogn),稳定
public static <T extends Comparable<T>> int compare(T a, T b) {
if (a == null){
return ...
1. jdk 8安装官方下载链接:jdk8安装到目录:G:\java\jdk1.8.0右键-我的电脑-属性-高级-环境变量添加JAVA_HOME属性,值为G:\java\jdk1.8.0添加path属性,在值的为前方添加%JAVA_HOME%/bin;window + R键打开运行窗口,输入cmd指令,进入命令行� ...
Markdown是一种轻量级标记语言,使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML或者HTML文档。
喜欢动手实践的人就自己下工具一步步安装插件吧,工具和插件地址:
IDE:sublime
插件:sublime-markdown-extended、sublimetext-markdown-preview
比较懒的人就直接下附件解压使用,已经集成markdown插件及样式:
iteye附件最大只支持10M,文件后缀只能为zip格式,请下载附件后将Sublime_Text_2.z01.zip更名为Sublime_Text_2.z01,右键解压即可使用
默认样式:
sub ...
今天公司内部局域网突然不能访问公司外网地址,导致公司的maven仓库、外网地址检出的svn项目等都不能访问,项目不能更新提交,那个急呀!
使用代理可以解决上述问题。电脑上已经装了翻"墙"利器goagent,默认代理地址127.0.0.1:8087,接下来给maven和svn配置配置。
MAVEN代理设置:
进入配置文件 ~/.m2/setting.xml,添加代理设置
<settings>
...
<proxies>
<proxy>
&l ...
官方的pinyin4j虽然强大,能够支持音标转换,但硬伤在于不支持词组。就此特地将pinyin4j的词库提取出来,研究了下,发现多音字有2000多,去掉音标就1000多,常用字也就500左右。然后估摸着一周左右的时间应该能够把常用多音字词库给整出来,于是就开干。从在线新华字典、汉典和百度词典等网站提取各种多音字词组,苦逼一周后终于算是完成了,虽然词库不够完美,但也能够解决97%以上多音节词组了。接下来是编码实现的事情,为了方便就把2个字以上的词组截掉(极少词组会受影响),具体实现自己看源码吧!
本作用于学习交流,有什么疑问或BUG请及时提出,以便于修正。
附上个使用 ...