Wanana's Blog

边走边唱|wanana| 技术&生活&牢骚 各种博

Category Archives: java

android下可用的pdf库

前几天想写个东西(其实因为懒已经搁置),花功夫找在手机上能用的库,用来生成pdf文件,预览等等。 google了一下,最多的是说iText,因为android不包括java标准库中的awt,肯定不能用。尝试了一个apache的,太过庞大。 到处找现成的,发现几个老外问过,但是都没有答案。有个库的作者两年前表示要改个android版,没信了。还有个人给一堆跟pdf相关的哭的开发者发信问有没有支持android的…也没有靠谱回应 最后找到了pdfbox,有一个已经改好的android版。我就试了写一句简单的话,生成pdf,在g3上实验成功。看上去不像官方版,希望能帮到些忙吧。 大小是5m,尝试了下生成的apk3m,虽然还大,凑合能接受吧。有兴趣的可以按照链接后一个回复说的,删掉一些包。 有需要的去此链接下载   https://issues.apache.org/jira/browse/PDFBOX-586

JAVA实现二分查找

两次耻辱的面试,两次都是败在二分查找上。一次是处女面,一次是工作后的处女面,简直是标志性杯具… 分析原因,一个是怯场,一个是二分查找的边界处理确实容易遗漏。在自己的blog上留个记录。 网上查了查,主要参考这里的实现 鉴于二分查找对于本身没多大实际作用(平时有很多库函数供咱调用),也就是面试的时候用用,我把泛型的处理去掉了,对于递归版本略微重构了下。 有两点要注意 1. 二分查找迭代,两边的查找范围分别是low~mid-1 mid+1~high mid位置本次递归已经处理 2. 递归算法必须具备两个部分:初始情况和递归部分。二分的初始情况为low > high。low==high的情况也不用特殊处理,原因是此时mid == low ==high,直接对mid做判断足够。 另外提一下JAVA库中Arrays.binarySearch方法的实现, 查找不到时返回的不一定是-1,而是-(low+1),也就是说,如果要查的值大于数组最大值,则返回-length,小于最小值则返回-1. 递归版 迭代版: orz yo2这个代码插件不太好使啊 空格换行tab都被吃掉了…虽说华丽丽的…

[转载]语录:101条伟大的计算机编程名言

原文链接语录:101条伟大的计算机编程名言 “人们总是害怕改变.电被发明出来的时候他们害怕电,是不是?他们害怕煤,害怕蒸汽机车.无知无所不在,并导致恐惧.但随着时间推移,人们终究会接受最新的科技.” 正如比尔盖茨曾经警告过一样,计算机已经真正成为我们的最新科技,几乎遍布我们日常生活的每一方面.所以,我们这个时代的某些最伟大的头脑开始思索起计算机和软件对于人类的重要性来了.以下就是101条有关计算机的伟大名言,并且,既然我们这个网站是一个软件开发网站,我们尤其关注编程方面的. 先把java的引出来… 70、“说Java好就好在运行于多个操作系统之上,就好像说肛交好就好在不管男女都行.” (Alanna) 71、“好吧,Java也许是编程语言的好榜样.但Java应用则是应用程序的坏榜样.” (pixadel) 72、“要是Java真的有垃圾回收的话,大部分程序在执行的时候就会把自己干掉了.” (Robert Sewell)

and then…eclipse技巧

我想要的是这个:自动完成 Edit–>Word Completion [ctrl+alt+/]直接自动完成词语,自动选择最相近的 [Alt + /]content assist 给出列表选择 瓜娃才一直不停的重复敲老长的变量呢…更瓜的娃像我,总自作聪明的加上个this来从提示里找 eg. 缩写的自动完成 输入sysout +以上快捷键,就会自动出现:System.out.println(); 。 设定Template的格式:窗口->喜好设定->Java->编辑器->模板。 唯一需要记住的快捷键:快捷键表 [ctrl+shift+L] 会弹出所有快捷键列表 纠错: 不去点左边的小叉子 [ctrl+数字1]quick fix [ctrl+2] quick assist 很有趣的功能,我没试过 过滤不想看到的文件类型: package Explorer中点右上角的小三角 选择filter …… windows–>preferences–>java–>appearences–>type filter … 关于组织干净的eclipse(插件另外存放) 等需要的时候再去找相关文章看 下面还是备份一篇老文章 大部分东西还适用。其实ve还是个漂亮干净的可视化编辑器呢…上次试用还是两年前。

[junit手记]关于EasyMock

最近一直在看《测试驱动开发-使用指南》,图书馆借了中文版,一阵惊喜,然后一激动就买了本英文影印版的收藏(中文的买不到)。这两天闲着,敲了书上的一些代码进去。准备把对EasyMock和jemmy的一点经验陆续总结在这儿。 写的好费劲啊…还是觉得完全没说清楚…先放出来再说好了 easyMock 主页&下载 关于mock的定义 “Mock 对象是一个术语,原来主要流行于eXtreme程序员和JUnit小组中。在单元测试上下文中,一个mock对象是指这样的一个对象——它能够用一些“虚 构的占位符”功能来“模拟”实现一些对象接口。在测试过程中,这些虚构的占位符对象可用简单方式来模仿对于一个组件的期望的行为和结果,从而让你专注于组 件本身的彻底测试而不用担心其它依赖性问题。” 以上概念为引用-。-。 测试的一般模式是三步: 设置前置条件 执行要测试的功能 检查后置条件是否满足 但是,编写测试的时候最好按照相反的顺序,即: 编写测试你所期望的测试结果的断言 编写要想取得那样的结果所需要的代码 设定任何前置条件(junit中可以使用setUp()来隐含完成) 即设置期待结果 如果由easyMock完成,步骤如下 简单来说是三步(EasyMock 2.3中的步骤,和TDD书中的老版本步骤完全不同>.<) 1. create a Mock Object for the interface we would like to simulate创建模拟对象 使用org.easymock.EasyMock类中的createMock(XXX.Class);或者createNiceMock(XXX.Class); 参数为一个java.lang.Class 对象 加createNiceMock 不会捕获”unexpected method calls”,即你不用指定所有期待会调用的方法及次数。 2. record the expected behavior, and //期待调用方法及参数(EasyMock会检查传入的movies跟后面实际调用的movies是否相同。使用equals方法检查。 //所以如果是自定义类型,需要至少覆盖equals方法。最好覆盖hashCode()方法。 mockView.setMovies(movies); //期待调用次数 expectLastCall().times(1); //如果需要设定返回值 expect(mockView.getNewName()).andReturn(LOST_IN_SPACE); [...]

加关注

Get every new post delivered to your Inbox.