PDF文本转换工具

PDFBox 一组Java API用来获取pdf文件内容,可以直接转换为lucene可处理的document.

XPDF 一个开源工具,不是用java写的,内含一个pdftotext的命令行工具,可以把pdf转换为文本文件

pdftohtml 基于xpdf,可以把pdf转换为html

JPedal 一组java API用来获取pdf中的文本和图片

Simple Text Extractor Library 同样用来获取pdf中的文本,依赖PDFBox

starcite面试总结

写面试总结也是一件蛮意义的事情。尤其是经过这种3小时的超长面试。
因为我发现自己真的有太多不知道了。

关于servlet
“servlet里用到多少设计模式” – 我只知道template method,strategy
“servlet如何处理并发请求” – “Generally, the web container handles concurrent requests to the same servlet by concurrent execution of the service method on different threads.-Servlet Spec 2.4”
“servlet里有哪些方法“ – 基于http的请求类型,有doGet,doPost,doPut,doDelete,doHead(还应该有doOptions和doTrace
”servlet有几个实例“ – 一个。”For a servlet not hosted in a distributed environment(the default), the servlet container must use only one instance per servlet declaration. However, for a servlet implementing the SingleThrreadModel interface, the servlet container may instantiate multiple instances to handle a heavy request load and serialize requests to a particular instances. – Servlet Spec 2.4″
”servlet什么时候被创建初始化“ – 容器会在servlet在被请求时初始化,或者通过配置在容器启动时创建并初始化。
”servlet的多线程问题“ – 默认情况下,容器会发送并发的请求给servlet的service方法。程序员必须在开发service方法时考虑到这个问题。或者使用SingleThreadModel接口来避免这样的情况出现。可以使用synchronized来控制request被依次处理,但是强烈不推荐(servlet spec2.4)
request和response的实现没有保证线程安全,如果被多线程访问到这些对象,则必须使用synchronized或者使用wrapper来确保线程安全。一个好的习惯是尽量使用局部变量中,因为多线程不共享局部变量。
参考深入研究Servlet线程安全性问题
简单的说,servlet因为是单个实例被多个线程运行,所以关键就在于线程共享数据存在线程安全问题,也就是对象变量是线程不安全的,局部变量是线程安全的。

httpsession的多线程问题
我得承认从来没有考虑过这个问题,spec上也是简单几句话。在网上找到这篇文章,谈到:

HttpSession对象在用户会话期间存在,只能在处理属于同一个Session的请求的线程中被访问,因此Session对象的属性访问理论上是线程安全的。

当用户打开多个同属于一个进程的浏览器窗口,在这些窗口的访问属于同一个Session,会出现多次请求,需要多个工作线程来处理请求,可能造成同时多线程读写属性。

这时我们需要对属性的读写进行同步处理:使用同步块Synchronized和使用读/写器来解决。

其他的一些参考:
HttpSession的线程安全问题及注意事项
Servlet及JSP中的多线程同步问题
Servlet的线程安全问题 – 比较详细的介绍线程的内存共享问题

hibernate N+1的问题,居然被问了3遍,唉,谁叫咱不记得呢。

作秀与装逼

早上在第一时间看到一则新闻,干部信访办里搓麻 纪检书记怒砸麻将桌
于是各种媒体纷纷说这是“炒作,作秀”就差直接说装b了。其实这件事情也没有什么,如果真的不是什么大问题,也许这样的做法也足够给那些作风不整的人一些教训了。砸桌子这件颇具象征效果的事情,最终还是被国人国媒习惯性的标上作秀,炒作,也有点无奈了。
只能说咱还是缺乏一点轻松的生活态度,也或者是对政府公务员的行为过于敏感了。

tektronix面试总结

面试过程很简单,先是两个技术中层面试技术。主要偏重数据库方面,可能是java也不是很熟。毕竟tek的研发主要是c++和嵌入式方面。

主要问题罗列一下:

设计模式用过哪些,介绍一个最熟悉的设计模式

设计一个String类

java和c++比较有哪些不同和优缺点

在一个有name,course,grade的表里写一个sql查询“所有课程分数都是在80分以上的名单”

索引的作用,它的实现用了哪些数据结构

cursor(游标)的用法

oracle中如何开启一个事务

并没有问框架和web方面的东西,可见确实对java不是很熟悉。

面试官还是挺nice的。之后是和jack,居然还是老乡。人很和蔼,聊了一些关于职业发展方向以及兴趣点还有一些关于团队沟通的问题,比如过去的team的大小,在team中如何处理技术难题,以及自己在之前项目中所扮演的角色。都是开放性的问题。不过当得知这个职位的一些具体的事情后,我决定放弃这个职位和之后进一步的面试。jack也蛮开诚布公的表示可以理解。

如果用人公司能够更好的为可能的员工考虑关于他职业发展以及发展方向的事情,也许这个公司才会变得更吸引人。

什么是权证

权证(option)
权证,是指标的证券发行人或其以外的第三人发行的,约定持有人在规定期间内或特定到期日,有权按约定价格向发行人购买或出售标的证券,或以现金结算方式收取结算差价的有价证券。

权证是发行人与持有人之间的一种契约关系,持有人有权利在某一约定时期或约定时间段内,以约定价格向权证发行人购买或出售一定数量的资产(如股票)或权利。购买股票的权证称为认购权证,出售股票的权证叫作认售权证(或认沽权证)。权证分为欧式权证和美式权证两种。所谓欧式权证:就是只有到了到期日才能行权的权证。所谓美式权证:就是在到期日之前随时都可以行权的权证。 Continue reading “什么是权证”