不要阻挡我偷懒,你肯定喜欢的软件

朋友用了一个aText,那看着使用的舒适眼馋的不行,然后只能在Mac下使用,而且貌似还得买…然后,没了。。。 PhraseExpress(Windows) 终于无意还是有意,发现了类似的一个替代品PhraseExpress,瞬间喜欢的不行。 首先,Windows下就可以使用 然后,对个人使用是免费的 安装的话,windows下安装东西,看不懂或者不太会那就下载下来next点到底吧… 不想去找的话可以自提 密码: 87k8 简单使用步骤可以看这儿,也可以看下文另一软件介绍,两者差不多(下面偷学这个的~) 大概说下这个软件干嘛的: 简单来说,自定义的用一些词汇替换另一些东西,可以定义快捷键或者命令等等,想想自动补全… 在使用电脑中,我们经常会输入一些很频繁很无聊的东西,比如账号了,手机了,email,etc。还有很多具体用在哪块,自己用了就知道顺手了。 AutoKey(Linux) windows下用上个很方便,但是考虑到更多时候要在Linux下写东西,比如我的个人博客用GitHub托管,编译用jekyll,git,markdown,环境都是部署在Linux(Ubuntu)下,所以当然要搜寻Linux下能用的了。 幸运的是,很快找到了AutoKey,这个是开源的,来由貌似就是因为上面那个很好用,但是只能windows,然后就来了个类似的,个人初步实践两者看起来挺像。 安装步骤 sudo add-apt-repository ppa:cdekter/ppa sudo apt-get update sudo apt-get install autokey-gtk 使用 简单文本替换 右上角,点击new,创建一个Phrase,这个名字随意,就是自己看懂就行(例如 : mysite) 右上角contents部分,就是你要在输入命令后想出现的,比如我输入自己网址 点击Abbreviation后面set,进入这个页面,旁边框里面add自己需要定义的命令,或者说简写的字符(此处谢了bb,即想在输bb后直接输出 : http://www.

java中的注解(Annotation)还是要知道一些滴

注解的初识在自动生成重写诸如equals()等方法时头顶的那个@Override,还有消除那黄黄的警告线时的@SuppressWarnings,当时只是感觉可有可无的东西,对它就像只是看待一个不知道哪儿定义的一个方法而已。 之后感觉它的神奇就是在项目使用框架时了。学习框架时用的xml配置,已经感觉挺有创意了,并没有学习annotation,在一次实际项目开发中,hibernate,spring,springMVC通通注解。那简洁的xml配置和一行代码顶数句的注解更是感到神气的不行(xml与注解各有好处,非是误导注解一定强于xml),然后才对注解刮目相看,准备多学习一些。 个人信息 注解出生时间在jdk 1.5版本。地位呢,他是一个类型,地位同于class(类),interface(接口),当然还有一个平级但是和它一样不是非常常见的类型:enmu(枚举)。 项目经历 Hibernate中,用注解可以实现字段与数据库列的映射。 Spring中注解更是用着舒服,无论是Io还是AOP的配置,使用注解效率比起xml配置都是快捷很多。而且也是在框架学习时较多的使用注解,发现注解的强大。也由此觉得再使用的基础上应该有一些进一步的了解。 其他框架中如Junit 4版本开始后也是注解@Test代替了命名规则,数不胜数,相信在之后开发中,注解会被越来多的使用。 技能分类 注解有三种类型 自定义注解:顾名思义,就是自己写的注解了,具体的实现在之后说明。 内置注解: 也就是jdk中自己定义的注解,如之前所说@Override等都是。 元注解: 可以注解在注解上的注解(看起来有点绕口,不错~) 1 2 3 4 5 6 7 package java.lang; import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } 如上代码,这是源码中的@Override代码,这个其实就是个自定义注解(个人想法),只不过是jdk自己写的,所以他就是内置注解。 其中有两行

java几种方式实现斐波那契数列

关于斐波那契数列: 指的是这样一个数列 0, 1, 1, 2, 3, 5, 8 ... - 第0项是0,第1项是第一个1 - 从第2项开始,每一项都等于前两项之和 数学与生活关于斐波那契数列的且不谈,在程序语言学习中学习递归时,总会以此为经典示例 java实现几种方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 /** * @author nonefly * 2015年8月27日 */ public class Gcd { /** * 解法零 * 暴力尝试 * 选一个较小的数开始尝试,直到试到2,两者都能除尽时终止 */ public static int gcd0(int a, int b) { if(a < 0 || b < 0) return -1; for (int i = a > b ?

再多一点理解java中的equals()

equals()这个方法,在学习的时候总是用来和 == 作以区分: equals()用来比较对象的值,==用来比较地址。 如此来说当然算不上错,只是有局限性。虽然equals()方法被用来比较值,但不是它的实质。 那equals()的实质是什么? 是一个所有对象的一个方法…这不是废话么?好吧,equals()就是==,前提你没动她,她还是当初的她… equals()方法在Object中定义,而所有的类的都最终继承了Object,因此Object类中的equals()才是原有的面貌: 1 2 3 public boolean equals(Object obj) { return (this == obj); } 就这样,就是用==比较的。 那么为什么还要equals() 既然equals()就是==,那么为什么还要equals()? 其实equals()个人觉得可以理解为对==的重写。不同于c++中可以重写操作符,java中的操作符是不能重写的,而==的比较很单纯,就是比较直接"看到"的东西是否一样。西红柿==番茄输出就是false,才不会管你是不是指的同一类东西。就是这么任性,不服?不服你用equals()啊。 因为我们当然不可能服了,因此我们就用equals()了,用equals()的原因就是我们可以自己定义比较规则,想让谁平等地位就能~ equals()该怎么用 先打一段"官腔",引用下API中的定义… equals 方法在非空对象引用上实现相等关系: 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 对称性:对于任何非空引用值 x 和 y,当且仅当 y.

理解Ajax

关于Ajax 全称(Asynchronous JavaScript and XML/异步的JavaScript和XML),这不是什么新的编程语言或或技术,而是对于多种技术的综合应用。 要之何用? 如果用过早期的浏览器就该有过一种‘忧伤’:注册一个账户,姓名年龄昵称密码等等填完了,点击注册,用户名已存在,瞬间泪奔。 当然,这只戳中一个泪点。那这与Ajax有什么关系?之前的情况是因为提交信息是整个页面提交, 所以所有信息完整后才会去注册,顺便刷新下页面~。难道就不能写了名字就去查询有没有被用吗?当然可以。Ajax,可以在不用提交整个页面的情况下访问服务器。 可以看出,Ajax作用就是在不影响正在浏览页面的情况下‘独自’去向服务端发送请求、获得数据。 这是什么? 那到底Ajax是什么?怎么做到的?那就要推出一个神奇控件:手机,额,不对,是XMLHttpRequest。 先想想一个场景:自己正在介绍自己个人信息,然后突然忘了父母生日什么的。几十年前我们的做法是回家问了再来,现在呢?一边继续填写其他信息一边,打电话或者发短信问下家里,等回短信或电话了再填写刚才漏的。 OK,这里的手机便可以大胆理解为XMLHttpRequest,这个就是页面的电话。 怎么使用? 手机打电话也许简单,XMLHttpRequest呢?功能一样,用起来其实也差不多了… 1. 首先,获得XMLHttpRequest对象 打电话当然的有手机了,所以先创建XMLHttpRequest对象。只是注意的是为了兼容各种浏览器,XMLHttpRequest有所不同,老版本IEXMLHttpRequest叫做ActiveX 2. 发送请求 有手机了就该问家里需要的信息了。 open(请求方式, 请求地址, 是否异步) 请求方式:GET或者POST,手机还分发短信和打电话呢。这里也有两种方式,也就是HTTP协议中两种请求方式。 请求地址:手机获得消息需要手机号吗,XMLHttpRequest也要服务器地址了。 是否异步:true或false即发短信时候傻傻等着(false)回复呢,还是同时做后面的事(true)~ 这里值得注意的是POST请求时需要设置请求头setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 而GET则不必须 3. 设置回应 接受回应主要分两点: 根据回应不同状态判断什么时候成功? 成功接受回应后怎么处理? 4. 请求数据