随笔分类 - Java
Java代码、工具等相关方面研究
摘要:Cold Observables === 在第一个subscriber订阅后才执行事件发送的Observables,默认普通Observables都是这个类型 Cold Observables对于每个订阅的subscriber执行一次事件发送过程的重演,每次事件实体将重新生成,尤其对于每次随机生成的
阅读全文
摘要:RxJava简介 === 本文为前段时间学习RxJava时留下的历史遗留笔记,仅作纪念,科学的大神教学帖子在这里 "给 Android 开发者的 RxJava 详解" 通过链式调用序列实现基于事件流的异步编程库。 核心思想是把一切重复化的(尤其多重嵌套异步)调用逻辑转换为基于事件(数据)流传递过程的
阅读全文
摘要:梦想还是要有的,万一实现了呢? 笔主的梦 笔主自幼有一个梦想,就是到充满二次元幻想、女仆咖啡厅、歌舞伎不夜城的肮脏凌乱不堪的霓虹国体验水深火热的外国生活,接受人生的磨练,然而苦于家境清贫一直没能实现,而在今年2015年,笔主终于凭一己之力实现了这个幼稚的梦! 来日本生活主要有两种途径:留学 or 工
阅读全文
摘要:简单说两句:笔主利用这个七夕前后两天的寂寞时光,用JAVA磨了一个简单的图像相似度计算小程序,就在刚才终于纠结完毕,输出了1.0版本,小小的满足了一下可怜的虚荣心..→_→使用最简单最基础的感知哈希算法,算法原理戳这里,绝对比笔主讲的要好:http://www.ruanyifeng.com/blog...
阅读全文
摘要:java.util.Properties extends Hashtable方便读取 键值对 格式的文本资源工具常用方法一览初始化对象newProperties();加载文件load(Reader/InputStream);loadFromXML(InputStream);获取键值getProper...
阅读全文
摘要:最近在研究Swing,被它的复杂性气的快吐血了,刚才本打算把JFrame的背景色换成白底,结果发现事情没想象中那么顺利,调用setBackground完全没有效果,猛然醒悟到JPanel本身是带不透明底色的,事情一下子变得复杂起来了,因为即便最简单的窗口布局,也是嵌套了若干层JPanel、JSpli...
阅读全文
摘要:在项目工程->Properties->Java Build Path->Libraries中导入的JRE System Library库里,给jar包添加JDK源代码包后,能够直接打开JDK的各种类文件源代码,如Object、String、HashMap等但是,在给这些源代码打断点开启debug跟踪...
阅读全文
摘要:笔主前言:众所周知,String是Java的JDK中最重要的基础类之一,在笔主心中的地位已经等同于int、boolean等基础数据类型,是超越了一般Object引用类型的高端大气上档次的存在。但是稍有研究的人就会发现,String对象是不可修改的,源代码中的String类被定义为final,即为终态...
阅读全文
摘要:最近在研究JUnit4,大部分基础技术都是通过百度和JUnit的官方wiki学习的,目前最新的发布版本是4.11,结合代码实践,发现官方wiki的内容或多或少没有更新,Theory理论机制章节情况尤为严重,不知道这章wiki对应的是第几版,笔主在4.11版本中是完全跑不通的,因为接口结构已经改变了,而百度出来的博客文档更是只有Theory的基础部分,更具实际应用价值的扩展部分完全不见踪影,本文根据笔主实际编码总结经验,详细讲述如何使用4.11版JUnit的Theory理论机制。ps. 最近发现网上有一小撮别有用心的国人转载笔主文章时,顺手丢羊把笔主文章头部标注的原文地址恶意马赛克掉,也没有在文
阅读全文
摘要:本文地址:http://www.cnblogs.com/wavky/p/JNI.html当你找到并鬼使神差地打开这个博文的时候,我敢肯定你已经知道什么是JNI,基本概念就不粘贴了。百度出来的JNI调用方法,前三页几乎毫不例外的都是几年前的资料,告诉你如何设置一大堆莫名其妙的参数、如何通过命令行加工出dll并调用出来的,遗憾的是笔主打开的那堆帖子,多少都有些操作上的出入,再一个笔主对嘿嘿的命令行窗口无爱,并且,例外的帖子笔主还木有幸看到...所以笔主狠心放下公司工作,抛弃领导的绩效奖金,花了大半天时间研究JNI的调用方法(尤其不用写命令那种),终于赶在下班的前三分钟,顺利完全通过eclipse界
阅读全文
摘要:稍微总结下弄了半个下午的egit的merge合并冲突解决方法,网上看的都是一个模板出来的,看的糊里糊涂,花了很多时间去实验整个合并流程..前提工作创建一个普通JAVA工程Test,创建一个类Test,写点东西并加入到本地git库;创建个develop分支,创建个Develop类,修改Test类的某些...
阅读全文
摘要:在Eclipse上使用egit插件通过ssh协议方式上传项目代码前戏:使用ssh方式可以不通过https协议,避免直接提供账号密码的方式上传项目到git在线服务器,如Bitbucket、GitHub,同时极其可靠的保证账号安全性。对于像笔主一样刚出道的程序员,习惯于使用eclipse的GUI界面,面对百度上搜索出来关于git操作的漫天的命令行,总有百般无奈,好不容易找到了GUI上的操作教程,按着做却一遍遍的出错,翻查git服务器的ssh支持文档,也没查到问题,也考虑过eclipse的bug问题,经过漫长探索,综合多个帖子博文的资料,终于在刚才攻破了在eclipse上使用egit插件通过ssh协
阅读全文
摘要:这方面其实设计模式里面提及到很多,但好像缺少了一种使用顺序关系的描述,目前我读到的设计模式不是很多,不拿来描述了,按自己理解整理一下自己的研究思路根据对象类的复杂度,由简至繁,可考虑依次使用以下方式进行对象实例化操作:通过构造函数实例化(最常用,参考博文:构造函数设计)通过设置Builder内部类(setter方法集合工厂)实例化(参考android.app.AlertDialog.Builder)通过设置独立静态Factory类(工厂模式,调用上面的Builder类方法)实例化通过设置抽象工厂类进行系统实例化(实例化上面的子Factory实现类,再由其执行具体类实例化过程)ps. 工厂方法命
阅读全文
摘要:构造函数是一般类对象的入口点,Java允许构造函数直接相互嵌套调用(本例中不讨论父类构造函数继承性调用问题),当设计出一个相对复杂庞大,成员变量比较多的类的时候,如何安排布局多个构造函数方法体内容,减少代码拷贝,实现优质的成员变量初始化过程,每次都会让我十分纠结,直到现在还是。也许一些优秀的框架代码或编程思想、代码之禅、编程艺术、编程匠艺、码农后花园等等这类书籍中,会蕴含关于这方面的更好的解决方案,但我目前情况看来,对优秀源代码的阅历尚浅,无法思索得出相关结论,总结一个字,懒。。最近花了一段时间,在不断整理几个类的时候,偶然觉得自己想通了一些关于这方面的设计方式,姑且总结了一下,算是模式的一种
阅读全文
摘要:final 修饰符对于类成员变量来说,具备语法上不可变的特性;对于类成员方法来说,具备语法上子类不可覆盖重写的特性(能被继承的前提下)。但 final 并不限制子类对父类被修饰声明的成员变量进行覆盖重定义能力,基类中修饰为 protected final 的成员变量,可通过子类的重新定义声明被覆盖,更改变量值。要实现基类成员变量具备语法上子类不可覆盖重写的特性,只要将该变量声明为 private ,并通过声明为 protected final 的 getter 方法进行返回即可。
阅读全文
摘要:嵌套类(内部类)方法安全引用外部方法局部变量的原理嵌套类方法引用外部局部变量,必需将声明为final,否则将出现Cannot refer to a non-final variable * inside an inner class defined in a different method 编译错误,错误的直接原因是嵌套类对象生命周期与外部方法局部变量生命周期不一致,当外部方法执行完毕,局部变量自动回收,而方法执行产生的新对象不一定会被GC回收(当该对象已被外部对象变量引用时),该对象存续期间,因调用自身方法而引用到已被回收的局部变量,会导致空指针BUG。给个简单示例: 1 publ...
阅读全文
摘要:正在做一个项目,根据以往看一些java和框架源码的印象,模仿着写了一些基础类的继承结构,用着挺顺,今早上班步行的空余时间,回想了下,发现这种结构还算比较不错,想不通为什么大学上课好像老师没提过....以前上课常说面向接口编程,讲得很抽象很肤浅,很长一段时间都以为一切都应该向借口看齐,而忽略了抽象类。逻辑上来说,实现类跟接口是has a的关系,跟抽象类是is a的关系,实际上两者的功能也差不多,很容易在写基础类的时候,不知道该选择接口还是抽象类,到现在我还是凭直觉去瞎搞的。之前看度娘说,使用接口编程能使程序代码更灵活,更强壮,但缺点是接口的扩展性受到抑制,原因是这样的:假设接口定义如下:1 pu
阅读全文
摘要:故事主角:我自称:本座爱称:wavky仔身份:小学生、全国各地电脑城所有门店老板前序:辞职了两个月,在家休养肥肉一直没搞技术,最近无聊拿起了本新买了半年没碰过的《设计模式之禅》,看了下..故事情节:(略)总结: 先说说前6章,六大设计原则,前两天刚看完,没看太懂,大致好像是这样子的: 单一职责原则(SRP)、接口隔离原则、迪米特法则(最少知识原则),分别从类、接口和类关联上阐述一个功能设计上的高内聚低耦合观点,奶奶的用了三个原则几十页文字转弯抹角讲的其实就是一句话:各家自扫门前雪,别多管闲事! 里氏替换原则:讲的是透明继承的设计理念,如果不是使用覆盖(override)刻意改写父类方法实...
阅读全文
摘要:昨晚下班回去,研究了下jocky1.0.3的使用,发现编译时提示引用类库版本不对,捣弄了半个小时后终于理解,原来是我的jdk1.7版本过高,这货是06年的版本,到现在都没更新过,支持(限制)的最高版本是5.0(1.5),对应的类文件版本号是49....通过逆向编译找了一个晚上,终于发现源代码中一段关键判断,但是又发现无法直接编译修改过的源文件(引用的类太多..),今天早上寻找了下直接编辑class文件的方法,在同事帮助下把相应的字节码段删去了,导入回包里面,测试了次,貌似运行没啥问题,混淆编译也过去了,把编译出的class文件逆向看了下,也差不多是那个样子,名称全部都变掉了,看着有点想吐。 .
阅读全文