Aug 31
前言,一切都是对象,
0.1 用引用操作对象,如遥控器遥控电视
0.2 用new创建对象


1. 每个对象都有一个接口  obj.xxx

2.每个对象都提供服务
xxx 肯定做了什么事

3.隐藏具体实现
xxx 用 private等进行权限控制

4.复用具体实现
obja 有方法xxx,objb 有方法 xxx.

5.继承
obja 是obj的一个子类

6.多态
obja.xxx和 objb.xxx是不一样的

7.单根继承
obja 和 objb 都是继承自obj

8. 容器(集合)

9.生命周期
对象创建-撤销

10.异常的处理

11.并发编程
Aug 31
高效面试的20个经典问题
1.请你做一下自我介绍
  -- 一切面试的引路石
2.请说一下你以前的工作职责
  -- 晒晒以前的工作经验
3.工作中,你取得的最大成就是什么
  -- 识别应聘者的分析决策能力
4.你为何要跳槽
  -- 选出忠诚度高的人才
5.你为什么选择我们公司
  -- 认同企业,才能乐业敬业
6.你怎么看待我们这个行业(市场)
  -- 找到有工作见识,有发展潜力的人才
7.你认为这份工作中最重要的是什么
  -- 团队意识高于一切
8.你缺乏经验,如何能胜任这份工作
  -- 学习能力决定你的提升空间
9.我们为什么要录用你
  -- 看看他的心理承受力
10.对这项工作,你有哪些可预见的困难
  -- 性格决定工作态度
11.你希望与什么样的上级共事
  -- 灵活应变,才能适应职场
12.在工作中,如果你的意见与上级不一样,你会怎么样
  -- 好员工善于沟通
13.在心情不好的时候,你是怎么自我调节的
  -- 智商高,不如情商高
14.你认为自己有哪些缺点和不足
  -- 自知者智,知人者明
15.请举一个你人生中最失败的经历
  -- 我们需要积极乐观的人
16.你有什么业余爱好
  -- 识别应聘者的性格类型
17.你的职业规划是什么
  -- 定位越早,工作业绩越好
18.你的座右铭是什么
  -- 洞察一个人的内心世界
19.薪水和工作,哪个对你更重要
  -- 多种答案,一个目的
20.请问你还有什么问题要问嘛?
  -- 最后的面试冲刺
Aug 31
##############################
#    swftools的安装     #
##############################
1.安装所需的库和组件
yum install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel

2.下载并编译安装SWFTOOLS  
-- 注:需要的文件在source/swftools/swftools-0.9.1.tar.gz

wget http://www.swftools.org/swftools-0.9.1.tar.gz
tar vxzf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure --prefix=/usr/local/swftools
make
make install

3、设置swftools环境变量,使pdf2swf成为一个可执行命令

vim /etc/profile
export PATH=$PATH:/usr/local/swftools/bin/

4.安装xpdf语言包,下载xpdf-chinese-simplified.tar.gz文件,解压到/usr/local下,编辑add-to-xpdfrc文件,如下:
-- 注:需要的文件在source/swftools/xpdf-chinese-simplified.tar.gz 和source/swftools/simhei.ttf

vim /usr/local/xpdf-chinese-simplified/add-to-xpdfrc
fontDir /usr/share/fonts/win
displayCIDFontTT Adobe-GB1 /usr/share/fonts/win/simhei.ttf

5、最后使用如下转换命令测试:
-- 注:1.pdf在 source/swftools/1.pdf

//转化为swf
pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 "/opt/123.pdf" -o "/opt/test/1.swf"

//转化为txt纯文本
pdftotext -q "/opt/lampp/htdocs/sociax/1.pdf" "/opt/lampp/htdocs/sociax/1.txt"


##############################
#    openoffice的安装     #
##############################
1.安装OpenOffice
yum install openoffice.org-writer  
yum install openoffice.org-calc  
yum install openoffice.org-draw openoffice.org-impress   www.cit.cn

--注:文件安装在 /usr/lib/libreoffice/program 下面
启动openoffice服务

/usr/lib/libreoffice/program/soffice --accept="socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" --nologo --headless --nofirststartwizard --display :2 &

如果报错,则虚拟一个x桌面
Xvfb :2 -screen 0 800x600x24 2> /dev/null &

上面命令可能不执行,需要安装一个server
yum install xorg-x11-server-Xvfb

导入环境变量

export DISPLAY=localhost:2.0



2.安装OpenOffice SDK3.3
-- wget http://ftp.nluug.nl/office/openoffice/stable/3.3.0/OOo-SDK_3.3.0_Linux_x86-64_install-rpm_en-US.tar.gz
wget http://ftp.nluug.nl/office/openoffice/stable/3.3.0/OOo-SDK_3.3.0_Linux_x86_install-rpm_en-US.tar.gz
tar -zxvf OOo-SDK_3.3.0_Linux_x86_install-rpm_en-US.tar.gz
cd OOO330_m20_native_packed-1_en-US.9567/RPMS/
rpm -ivh *.rpm --nodeps

3.1 安装unoconv
wget http://pkgs.repoforge.org/unoconv/unoconv-0.5-1.el6.rf.noarch.rpm
rpm -ivh unoconv-0.4-1.el6.rf.noarch.rpm  --nodeps --force

测试:
unoconv -help --nogpgcheck
//!!! 将某个txt转化为pdf !!!
unoconv -f pdf test.txt

上面有可能会报key错误,下载并导入key
cd /etc/pki/rpm-gpg
wget http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

3.2 不使用unoconv 使用 jodconverter
java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /opt/lampp/htdocs/filecv/1.txt /opt/lampp/htdocs/filecv/text.pdf





Aug 31
#### 一.服务器端支持 ####

1. openoffice.org3.0 + jodconverter + swftools



原理:开启openoffice监听,利用jodconverter调用oo3的转换脚本将 office文件转换成pdf文件。

          再通过swftools将pdf文件转换为swf文件



前提:安装OpenOffice,安装OpenOffice SDK3.3,jodconverter及swftools,并开启openoffice监听

环境变量:

export PATH=$PATH:/usr/local/swftools/bin/




shell下命令:



第一步:开启openoffice监听 8100端口

export DISPLAY=localhost:2.0

Xvfb :2 -screen 0 800x600x24 2> /dev/null &

/usr/lib/libreoffice/program/soffice --accept="socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" --nologo --headless --nofirststartwizard --display :2 &



第二步:通过jodcconverter转换文档成pdf

java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /opt/lampp/htdocs/sociax/1.txt /opt/lampp/htdocs/sociax/text.pdf



第三步:将pdf转化为swf、txt文件

//转化为swf -- 展示用
pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=72 -s flashversion=9 "/opt/123.pdf" -o "/opt/test/1.swf"
pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=30 -p 1 -s flashversion=9 "/opt/123.pdf" -o "/opt/test/1.swf"



//转化为txt纯文本 -- sphinx搜索用

pdftotext -q "/opt/lampp/htdocs/sociax/1.pdf" "/opt/lampp/htdocs/sociax/1.txt"







#### 二. java程序 ####



说明:通过计划任务定时执行java程序,通过java程序执行文档转化命令,转化文档。

注:如果能实现java程序内部监听,不需要服务器端计划任务配置,则为更佳的方案。





java程序结构



1. sociax.java

方法:main()

实现://伪代码



     loadConfig ()                    // 载入配置 conf/sociax.xml

     startTransformListener ()   // 调用转化(监听)程序,文件名称 :src/SociaxTransAdmin.java





2. conf/sociax.xml

要求:

能配置sociax数据库信息,包括host,port,database,username,password, prefix (表前缀)

转化信息:limit 单次转化的文件个数上限, filedir:文件路径前缀

能配置转化命令:(由于不同服务器安装的环境可能有区别)

com_file2pdf:java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar $fileoffice $filepdf

com_pdf2swf: pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 "$filepdf" -o "$fileswf"

com_pdf2txt:pdftotext -q "$filepdf" "$filetxt"





mysql
127.0.0.1
3306
root
123456
sociax
sociax_



20
/usr/data



java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar $fileoffice $filepdf
pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 "$filepdf" -o "$fileswf"
pdftotext -q "$filepdf" "$filetxt"



实现可参考:pdf2swf/conf/sociax.xml



3.sociaxTransAdmin.java

方法:startTransformListener()



参数:无

实现://伪代码



    initData();           //初始化数据将需要转化的内容导入到转换缓冲表

    trans_list =  getData();           //获取需要转化的数据 ,最多limit个,并保存到转换队列 变量 trans_list 中

    doTrans(trans_list);           //执行转化





方法:initData();

参数:无

实现:需要执行下面的sql:注意将里面的sociax_替换为配置的表前缀

String sql = "insert into  `sociax_document_cache` (aid,status,cTime)

select attach_id,0,ctime from sociax_doc where attach_id > ( select IFNULL(max(aid),0) from `sociax_document_cache` ) ";



参考:CrawlingFile.java 里面的 insertNoneTransformDoc函数



方法:getData();

参数: 自己定义

实现:需要执行下面的SQL,并返回结果,其中config.limi为配置的单次最多转化数

String sql="select doc.id,doc.aid,CONCAT(attach.save_path,'',attach.save_name) as outputFile from sociax_document_cache as doc left join sociax_attach as attach on  attach.attach_id = doc.aid where doc.status='0' limit 0,"+config.limit;





方法:  doTrans(trans_list);

参数:无

实现:伪代码

if( empty(trans_list) ){ return false;} //如果转化队列为空,则不执行转化操作

start();                                          //开始转化服务 -- 可能需要开启一些服务之类的,待调试

trans_ids = array();                        //转换的文件的id集合  

//开始对转换队列进行转化操作

for(i=0; i
     transfile(file);                           //单个文件的转化操作          

     ids []

}

updateDataBase(trans_ids);           //通过trans_ids集合将缓存表里面的status更新为1

stop();                                          //停止转化服务 -- 可能需要关闭一些服务之类的,待调试





方法:transfile(file)

参数:file,要转化的源文件

实现:伪代码

filepdf = file+'.pdf'   //新的pdf文件地址



if(file_exsit(filepdf)){ //判断新的pdf文件是否存在,存在则不继续下面操作 -- 不知道java里面怎么实现,交给你研究

     return false;

}



//判断是否为pdf文件,如果不是则执行转化命令,将文件转化成pdf,否则直接复制一份文件到pdf

if( !ispdf(file) ){

     do_commond = com_file2pdf; //转化成pdf的命令处理,注意源文件和目标文件

     xx.runcommend(do_commond);

}else{

     xx.runcommend('cp '+file+' '+filepdf);     //直接拷贝

}



//由于转化pdf需要一定时间,在转化成swf前要判断是否已经转化完了

//判断上一个执行操作是否结束 -- 不知道怎么实现的 看小鹏的ServiceAdmin.java: 里面有个isDone

if(xx.isDone()){

     do_commond =com_pdf2swf

     //将文件转化称swf

      xx.runcommend(do_commond);

     //将文件转化称txt 可以和