这里java操作sqlite3数据库,用的是java编写最简单的sqlite程序的方案。
目前测试可用的方式:
statement.setBytes(i++, outputStream.toByteArray());
其他方式,比如setBlob,或者setInputStream方式,都会报告抽象方法错误(AbstractMethodError)。说明该sqlite3驱动没有支持这些方法。
那么,setBytes的缺点是,二进制数据必须作为字节数组一次性的加载到内存,增加虚拟机的内存消耗,对于大图片,很容易引起OOM。
一个需求是将其他格式文件转换为png格式,这样才能被iphone使用,据说iphone能在程序中加载的只有png格式。
代码很简单,无需使用imagemagick这样的重量级工具。
File file = new File("c:\\b.png");
BufferedImage image=ImageIO.read(file);
File pngFile=new File("c:\\b1.png");
ImageIO.write(image, "PNG", pngFile);
默认情况下,maven做package的时候,只是项目程序编译打包到一个jar文件中,其他类库,需要引用到classpath里面去,这对于桌面应用很麻烦。
maven提供了将所有类库打在一个包里面的办法。见:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>welcome.ExportConsole</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
这里还设置了程序入口,main方法的类。
sqlite是c写的,没有官方的操作sqlite的java api。如果要使用Java编写sqlite代码,只能使用第三方的类库。目前我找到的有两种:
- SQLiteJDBC,http://www.zentus.com/sqlitejdbc/,这是一个纯Java的实现,只需把类库导入就可以使用,很方便,缺点嘛,就是慢一些;
- SQLite Java Wrapper,http://www.ch-werner.de/javasqlite/,安装的时候需要本地库,比如windows下的dll文件,和SQLiteJDBC的优缺点相反。
考虑到我们项目的需求,用SQLiteJDBC就够了。很小的项目,就是将xml文件导入生成sqlite db文件,因此也就不用什么maven和ant了。
eclipse项目的结构。
适用于登录到远端的内网做限制在该内网的操作。
服务器还是ubuntu server,安装pptpd:
sudo apt-get install pptpd
需要对pptpd做一些配置:
sudo vim /etc/pptpd.conf
在该文件中加入:
localip 10.100.0.1
remoteip 10.100.0.2-10
localip表示VPN服务器端的ip地址,这个地址和服务器目前的地址无关,比如目前服务器地址是10.166.33.22,是虚拟出来的网络。
remopteip是给vpn用户连接的ip池。
有的时候,莫名其妙的主机占据了你的ip地址。怎么办呢?如果是在linux下,可以试试这两个工具:
- nbtscan
- nmap
nbtscan,可以这样:
nbtscan 10.122.22.44
可能会看到类似下面的数据:
Doing NBT name scan for addresses from 10.167.33.154
IP address NetBIOS Name Server User MAC address
——————————————————————————
10.122.22.44 MARCAS-PC <server> <unknown> 00:18:f3:d1:6f:f2
日志引用
使用squid服务器,可以改善web访问速度。官方网址见:
在ubuntu server下安装很简单:
sudo apt-get install squid
启动和关闭squid:
sudo /etc/init.d/squid restart
这是重启,关闭和启动分别是stop和start。
squid的配置文件在:
/etc/squid/squid.conf
可以根据自己需要做相应的配置,至于我现在的情况,需要修改端口的配置、监听ip地址(因为是多ip主机),做简单的基于用户名和密码的认证,防止其他不相干的人使用这个代理服务器。
确切的说,是nokia s60第三版,使用的机器具体型号是6120ci。
想搭建一个比较高效方便的开发环境(能直接on device部署和调试程序,而不是把javame程序打包再部署),使用工具也尽量用最新的版本(java6/sun javame sdk3.0/eclipse 3.5.2等)。
我这里的环境是windows xp sp3,安装了java 1.6.0_15,安装了sun javame sdk 3.0,下载地址在:
安装eclipse 3.5.2,我安装的是jee版本,因为还可能做服务器端的开发。
启动eclipse,安装eclipse javame开发插件mtj,也就是以前的eclipseme,安装办法是,
换新系统的时候没注意,因为以前都是在32位虚拟机里面开发。
结果安装的subversion在使用eclipse subclipse插件的时候报错: