Wanana's Blog
边走边唱|wanana| 技术&生活&牢骚 各种博
Tag 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都被吃掉了…虽说华丽丽的…
让人又爱又恨的ruby
断断续续的接触了一段时间的ruby 真是爱恨交加 都说ruby易学、易用, 在我的角度上来看不见得。 至少对于一个Java程序员来说, ruby远比不上Python那么容易接受——太不像JAVA了!但是人就是贱——容易到手的就不愿意珍惜——一个让人摸不透的女人会时时带给你惊喜。 说说我的感触,不涉及具体语法的比较。 首先说几句抱怨,其中有些几乎导致我不再想玩ruby——当然后来还是抵抗不了诱惑: 1. 我的机子运行不了最简单的tk helloworld图形界面。运行后毫无反应,也不结束。报的错是windows的,至今无法解决,只好改用别的图形库。 2. 想要在终端打印出一个中文字符串,方法比较别扭。即使是用utf-8也别扭。升级到ruby1.9了也别扭。(小插曲 ruby官网上windows平台的ruby1.9连接是无效的…) 3. 网上搜索个问题,只有寥寥几页是相关的,还大部分是只有题没有答案的无头尸。 4. 发展了这么多年,没有活跃的中文社区么?找来找去倒是javaEye资源丰富些。网上大量的初学者日记,到底国内有多少人真正在用ruby呢。 5. end没有{}优雅(别争论,我就是这么认为的) 6. 语法奇特,一时难以接受。一开始,对于代码块,||、symbol这些概念,很是理解了一阵。甚至调用方法时参数列表不需要写在括号里这点都一度让我认为那是变量声明…结果其实ruby里不需要声明变量。 7.没有了编译时的检查 很多时候变量名都会写错…. ————————————————————————— 接下来说说优点: 1. 做同样的事情,写出来的代码就是比Java短,而且一般至少是1/4长度,非常拉风,同事会用星星眼看着我发出崇拜之声。 2. 脚本语言带来的新的思路。 脚本是命令行的良好伴侣,特别是在没有好的IDE的情况下,会不知不觉的去使用命令行和脚本语言结合完成任务。把文件名作为命令行参数传入可比做个文件选择框容易,用起来还要少点很多次鼠标。 另外,不知道算不算个例,用ruby会让你不知不觉的把一个目标分成几个脚本来写,每个脚本都能完成单独的任务,也可以连在一起使用,中间配合简单的命令行操作并输出几个中间文件,可以节省大量代码,组合起来还可以做多种用途。 3. ruby特殊语法带来的… ruby的语法,实在是非常有趣。随便说两个感触颇深的 方法加代码块,读起来就像连续的一句话。”对a里的每个东西做XX事情”,而不是”对a循环,对第i个东西做XX事情”。更甭提还有select、reject、collect方法这种东西, 比如array.each.collect{|item| boring?(item)},就是”收集array里那些讨人厌的东西!”,多有意思~~ 方法名加上问号,读起来就有了语气。def boring? (a)就是”a烦人吗”?如果用java写,会是 boolean isBoring(Object a), 读起来是:”这是不是烦人的东西”。感觉无趣多了。 4. 提供大量的库函数,有些可以说是相当有趣,有些简直是匪夷所思。对于日常的java开发提供了思路,”这些东西可以提成工具类?”,”原来还可以这样!”。 5. rails是一种思想,舍弃一部分灵活性而选择制定大量的规矩,或者说严格的”约定”,大家都必须这样做,代码统一、易读、写起来也方便。 6. 不用编译! 改了之后直接执行,少写一句话。 未完待续
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); [...]
8.5日干了些啥
早上起床~ 吃饭~ 想要在ubuntu上试着配tomcat mysql myeclipse之类 然后是午饭~ 找东西玩 发现仙剑四不卡了~! 于是开着两个机子 一个装作学习 一个用来玩游戏 下午包饺子捣蒜 晚上被老爸说懒 于是擦地 中间夹杂着甜蜜什么的…… ================================================================ myeclipse的官方网站提供适合各种操作系统的版本 其中manual版解压之后就是feature plugin两个文件夹,干净利落 跨所有平台,复制到eclipse的安装文件夹 启动即可 序列号网上找的就可以用 但是eclipse还是那么慢 并且在ubuntu的环境下很多小bug 用起来很不顺手 mysql直接用apt-get装 为了和hibernate的连接不出错需要修改/etc/my.cnf modify my.cnf to solve the problem forever. In my.cnf, add the line “default-character-set=utf8″ in both [mysqld] and [client] sections: [client] default-character-set=utf8 [mysqld] default-character-set=utf8 The mysql will use utf8 [...]


最新评论