JIRA的默认自带数据库是hsql,下面来了解一下hsql是个什么东东
HSQL 数据库引擎
开放源码的数据库引擎―HSQL是基于Thomas Mueller的Hypersonic SQL项目。它完全是由Java是编写的同时也是一种广泛用于嵌入式的数据库。它被包含在许多J2EE应用服务器中。在移动设备上,HSQL运行在PersonalJava和FP/PP平台上。HSQL是完全免费的。你能自由地将它重新部署到你的应用程序中,这对移动应用程序来说是容易的。
HSQL提供一个支持%95JDBC接口和所有JDBC数据类型的JDBC驱程。它支持事务,外键甚至Java存储过程。在HSQL中的表能寄存在内存中和保存在磁盘文件中。HSQL只有少于160-KB的存储器足迹footprint。它也为PersonalJava设备发布了一个数据库管理控制台(经过Sharp Zaurus上的测试)
然而,HSQL缺少一些商业移动数据库上所需的高级性能和安全功能。更重要的是,HSQL不能提供任何同步解决方案。它也缺少一个为MIDP设备的解决方案。
一、简介:
hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议。
相对其他数据库来说,其体积小,才563kb。
仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作等内容。
下载地址:http://hsqldb.org/
二、使用hsql数据库:
1、hsql数据库引擎有几种服务器模式:常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-On­ly数据库。
2、最为常用的Server模式:
1)首先却换到lib文件夹下,运行java -cp hsqldb.jar
org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
执行命令后,将会在db文件夹下创建一个数据库mydb,别名(用于访问数据库)是xdb,如果存在mydb数据库,将会打开它。
2)运行数据库界面操作工具:java -cp hsqldb.jar
org.hsqldb.util.DatabaseManager
在Type选项里选上相应的服务器模式,这里选择HSQL
Database Engine
Server模式;Driver不用修改;URL修改为jdbc:hsqldb:hsql://localhost/xdb
(主要这里xdb就是上面我们设置的别名);user里设置用户名,第一次登录时,设置的是管理员的用户名,password设置密码。然后点击Ok。
3)第一次运行数据库引擎,创建数据库完毕。好了,你可以打开db文件夹,会发现里面多了几个文件。
mydb.properties文件:是关于数据库的属性文件。
mydb.script:hsql主要保存的表(这里按hsql的说法是Memory表,就是最为常用的),里面的格式都是文本格式,可以用文本查看,里面的语­句都是sql语句,熟悉sql语句的话,你也可以手动修改它。每次运行数据库引擎的话都是从这里加载进内存的。
mydb.lck表示数据库处于打开状态。
其他的请参看hsqldb包里的手册。
3、WebServer模式和Server运行模式基本一样,只是支持了Http等协议,主要用于防火墙,默认端口是9001。启动Server,java
-cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。
4、Servlet模式可以允许你通过Servlet容器来访问数据库,请查看hsqlServlet.java的源代码,和WebServer类似。
5、另一个值得思考的模式是Standalone模式:不能通过网络来访问数据库,主要是在一个JVM中使用,那样的话,访问的速度会更加快。虽然文档里面提到­主要是用于开发时使用,但是我们可以假设一下,该方法不需要一个引擎类的东西,而类似于打开文件的方式,返回一个Connection对象:
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb",
"sa", "");
将会在当前目录找到mydb数据库相关文件,打开并返回一个Connection对象。该方式有点好处就是可以不使用引擎,在需要的时候操作数据。所以那些对数­据库不是特别有要求的,但又需要一个操作数据库的方式的话,可以使用这种方法。对于那些不想额外在数据库引擎花费金钱的话,可以使用这种方法。但是不推荐使用该­方法。记得Hibernate里SessionFactory可以使用openSession(Connecttion
c)来获得一个Session对象的,因此,在测试或者实际应用的话都可以这样使用。
6、Memory-Only
数据库:顾名思义,主要是内存中使用,不用于保存数据。可以用于在内存中交换数据。
上面是关于hsqldb的一些基本信息的介绍,可以看到它的一些优势和特性。
我们可以把hsqldb内置在web程序中,除考虑Standalone模式外,最好是采用最为常用的Server模式。
那么Server模式如何和web程序合理搭配使用呢。
可以采用两种方式:
1)采用上面提到的方法,运行java -cp hsqldb.jar
org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
来启动db,通过设置的URL:jdbc:hsqldb:hsql://localhost/xdb
以达到在程序中访问hsql数据库的
(注:设置URL等信息,可以通过hibernate来配置,例如:
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:hsql://localhost/xdb )
2)为了省去第一种方法的琐碎,可以在启动web容器的过程中同时启动hsqldb。具体做法如下:编写一个有关hsql的Listener类,扩展javax­.servlet.ServletContextListener,可以在配置文件中设置dbPath、dbName、port等等hsqldb的信息,启动h­sqldb。
在web.xml中配置
com.iplan.portal.framework.web.HsqlListener</listener-class­>
</listener>
这样在启动web容器的时候,同时启动了hsqldb,关闭容器的时候同时也shutdown掉hsqldb。
还有一点说明的是:在单体或是结合测试的时候,可以采用Memory-Only
数据库,这样可以保证原有数据库中数据的完整性,这也是比较好的一个功能。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1934995
首先解答自己一直以来的一个疑惑,这个用户数限制是什么,看看下面这个讨论,结合我的使用经验,可以判断是“用户的并发连接数”
用户数不同,价格就不同。所以请教专家,在购买软件时用户数如何确定?
是否真的有多少数据库的用户就需要购买多少用户数,还是以Session的数量确定,
是否通过数据库连接池就可以购买少量的用户数?那么OS呢?
问题点数:20、回复次数:2
针对这个问题,有人居然提出了解决方案,难道可以修改?
解决Oracle XE允许连接的用户数不足问题 作者: Mayer
关键字: Oracle
在数据库服务器上运行 sqlplus system/password@xe (其中 system 是数据库用户无需改变;password 是数据库密码应指定为实际密码;xe 是数据库实例名称) ,然后执行:
alter system set session_cached_cursors=200 scope=spfile; alter system set session_max_open_files=200 scope=spfile; alter system set sessions=20 scope=spfile; alter system set license_max_sessions=200 scope=spfile; alter system set license_sessions_warning=200 scope=spfile; alter system set processes=200 scope=spfile;
执行后,重启 Oracle XE 数据库实例即可。要重启 Oracle XE 数据库实例:
1. 如安装于 Windows 上,先运行 net stop oracleservicexe,再运行 net start oracleservicexe 即可。也可通过“服务”管理控制台重启 OracleServiceXE 服务。 2. 如安装于 Linux 上,先运行 /etc/init.d/oracle-xe start,再运行 /etc/init.d/oracle-xe stop 即可。
此时,可以支持 179 个额外的连接会话。
|
今天修改jira的日期格式时遇到这样的日期定义:查阅资料后达到目的。
# jira.date.picker.java.format = d/MMM/yy #修改js中的日期格式 20080117
jira.date.picker.java.format = yyyy/MM/dd
# jira.date.picker.javascript.format = %e/%b/%y #修改js中的日期格式 20080117
jira.date.picker.javascript.format = %Y/%e/%d
date 命令可以用来显示和设置系统的日期和时间。其后可以带表示显示数据格式的参数,这些参数可以让你灵活的显示当前的时间格式:
%a:星期中每日名字的缩写
%A:星期中每日名字的全拼
%b:月份名的缩写
%B:月份名的全拼
%c:针对具体国家的日期和时间格式
%d:月中的某天,取值为01-31
%D:以格式%m%d%y表示的日期
%e:月中的某天,取值为1-31
%h:月份名的缩写(%b的别名)
%H:小时,取值为00-23
%I:小时,取值为01-12
%j:一年中的某天,取值为001-366
%m:一年中的某月,取值为01-12
%M:分钟,取值为00-59
%n:插入一个换行符
%p:包含午前或午后指示符的字符串(默认值为AM或PM)
%r:时间,格式为%I:%M:%S:%p
%R:时间,格式为%H:%M
%S:秒,取值为00-59
%t:插入一个制表符
%T:时间,格式为%H:%M:%S
%U:一年中的某星期(星期天为每星期的第一天),取值为00-53
%w:一年中的某天,星期天用0表示
%W:一年中的某星期(星期一为每星期的第一天),取值为00-53
%x:针对具体国家的日期格式
%X:针对具体国家的时间格式
%y:一个世纪中的某年,取值为0-99
%Y:年,其格式为ccyy(4个数字)
%Z:时区名
for example: #date '+DATE:%m/%d/%y%nTIME:%H:%M:%S'
显示为:DATE:05/17/04
TIME:09:32:02
今天遇到一个中文问题,从1.jsp传参数到2.jsp,中文显示乱码,查阅资料后解决,使用了下面文章中
public String toGb(String uniStr)函数的内容: 解决tomcat下中文乱码问题
Tomcat |
|
解决tomcat下中文乱码问题
(一) JSP页面上是中文,但是看的是后是乱码: 解决的办法就是在JSP页面的编码的地方<%@ page language="java" contentType="text/html;charset=GBK" %>,因为Jsp转成Java文件时的编码问题,默认的话有的服务器是ISO-8859-1,如果一个JSP中直接输入了中文,Jsp把它当作ISO8859-1来处理是肯定有问题的,这一点,我们可以通过查看Jasper所生成的Java中间文件来确认
(二) 当用Request对象获取客户提交的汉字代码的时候,会出现乱码: 解决的办法是:要配置一个filter,也就是一个Servelet的过滤器,代码如下: import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.UnavailableException;
/** * Example filter that sets the character encoding to be used in parsing the * incoming request */ public class SetCharacterEncodingFilter implements Filter {
/** * Take this filter out of service. */ public void destroy() { } /** * Select and set (if specified) the character encoding to be used to * interpret request parameters for this request. */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
request.setCharacterEncoding("GBK");
// 传递控制到下一个过滤器 chain.doFilter(request, response); }
public void init(FilterConfig filterConfig) throws ServletException { } } 配置web.xml <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>SetCharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 如果你的还是出现这种情况的话你就往下看看是不是你出现了第四中情况,你的Form提交的数据是不是用get提交的,一般来说用post提交的话是没有问题的,如果是的话,你就看看第四中解决的办法。 还有就是对含有汉字字符的信息进行处理,处理的代码是: package dbJavaBean;
public class CodingConvert { public CodingConvert() { // } public String toGb(String uniStr){ String gbStr = ""; if(uniStr == null){ uniStr = ""; } try{ byte[] tempByte = uniStr.getBytes("ISO8859_1"); gbStr = new String(tempByte,"GB2312"); } catch(Exception ex){ } return gbStr; }
public String toUni(String gbStr){ String uniStr = ""; if(gbStr == null){ gbStr = ""; } try{ byte[] tempByte = gbStr.getBytes("GB2312"); uniStr = new String(tempByte,"ISO8859_1"); }catch(Exception ex){ } return uniStr; } } 你也可以在直接的转换,首先你将获取的字符串用ISO-8859-1进行编码,然后将这个编码存放到一个字节数组中,然后将这个数组转化成字符串对象就可以了,例如: String str=request.getParameter(“girl”); Byte B[]=str.getBytes(“ISO-8859-1”); Str=new String(B); 通过上述转换的话,提交的任何信息都能正确的显示。 (三) 在Formget请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用问题是出在处理参数传递的方法上:如果在servlet中用doGet(HttpServletRequest request, HttpServletResponse response)方法进行处理的话前面即使是写了: request.setCharacterEncoding("GBK"); response.setContentType("text/html;charset=GBK"); 也是不起作用的,返回的中文还是乱码!!!如果把这个函数改成doPost(HttpServletRequest request, HttpServletResponse response)一切就OK了。 同样,在用两个JSP页面处理表单输入之所以能显示中文是因为用的是post方法传递的,改成get方法依旧不行。 由此可见在servlet中用doGet()方法或是在JSP中用get方法进行处理要注意。这毕竟涉及到要通过浏览器传递参数信息,很有可能引起常用字符集的冲突或是不匹配。 解决的办法是: 1) 打开tomcat的server.xml文件,找到区块,加入如下一行: URIEncoding=”GBK” 完整的应如下: <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
2)重启tomcat,一切OK。 需要加入的原因大家可以去研究 $TOMCAT_HOME/webapps/tomcat-docs/config/http.html下的这个文件就可以知道原因了。需要注意的是:这个地方如果你要是用UTF-8的时候在传递的过程中在Tomcat中也是要出现乱码的情况,如果不行的话就换别的字符集。
(四) JSP页面上有中文,按钮上面也有中文,但是通过服务器查看页面的时候出现乱码: 解决的办法是:首先在JSP文件中不应该直接包含本地化的消息文本,而是应该通过<bean:message>标签从Resource Bundle中获得文本。应该把你的中文文本放到Application.properties文件中,这个文件放在WEB-INF/classes/*下,例如我在页面里有姓名,年龄两个label,我首先就是要建一个Application.properties,里面的内容应该是name=”姓名” age=”年龄”,然后我把这个文件放到WEB-INF/classes/properties/下,接下来根据Application.properties文件,对他进行编码转化,创建一个中文资源文件,假定名字是Application_cn.properties。在JDK中提供了native2ascii命令,他能够实现字符编码的转换。在DOS环境中找到你放置Application.properties的这个文件的目录,在DOS环境中执行一下命令,将生成按GBK编码的中文资源文件Application_cn.properties:native2ascii ?encoding gbk Application.properties Application_cn.properties执行以上命令以后将生成如下内容的Application_cn.properties文件:name=u59d3u540d age=u5e74u9f84,在Struts-config.xml中配置:<message-resources parameter="properties.Application_cn"/>。到这一步,基本上完成了一大半,接着你就要在JSP页面上写<%@ page language="java" contentType="text/html;charset=GBK" %>,到名字的那个label是要写<bean:message key=”name”>,这样的化在页面上出现的时候就会出现中文的姓名,年龄这个也是一样,按钮上汉字的处理也是同样的。 (五) 写入到数据库是乱码: 解决的方法:要配置一个filter,也就是一个Servelet的过滤器,代码如同第二种时候一样。 如果你是通过JDBC直接链接数据库的时候,配置的代码如下:jdbc:mysql://localhost:3306/workshopdb?useUnicode=true&characterEncoding=GBK,这样保证到数据库中的代码是不是乱码。 如果你是通过数据源链接的化你不能按照这样的写法了,首先你就要写在配置文件中,在tomcat 5.0.19中配置数据源的地方是在C:Tomcat 5.0confCatalinalocalhost这个下面,我建立的工程是workshop,放置的目录是webapp下面,workshop.xml的配置文件如下: <!-- insert this Context element into server.xml -->
<Context path="/workshop" docBase="workshop" debug="0" reloadable="true" >
<Resource name="jdbc/WorkshopDB" auth="Container" type="javax.sql.DataSource" />
<ResourceParams name="jdbc/WorkshopDB"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>maxActive</name> <value>100</value> </parameter> <parameter> <name>maxIdle</name> <value>30</value> </parameter>
<parameter> <name>maxWait</name> <value>10000</value> </parameter>
<parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value></value> </parameter>
<!-- Class name for mm.mysql JDBC driver --> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value><![CDATA[jdbc:mysql://localhost:3306/workshopdb?useUnicode=true&characterEncoding=GBK]]></value> </parameter> </ResourceParams>
</Context> 粗体的地方要特别的注意,和JDBC直接链接的时候是有区别的,如果你是配置正确的化,当你输入中文的时候到数据库中就是中文了,有一点要注意的是你在显示数据的页面也是要用<%@ page language="java" contentType="text/html;charset=GBK" %>这行代码的。需要注意的是有的前台的人员在写代码的是后用Dreamver写的,写了一个Form的时候把他改成了一个jsp,这样有一个地方要注意了,那就是在Dreamver中Action的提交方式是request的,你需要把他该过来,因为在jsp的提交的过程中紧紧就是POST和GET两种方式,但是这两种方式提交的代码在编码方面还是有很大不同的,这个在后面的地方进行说明。3
以上就是我在开发系统中解决中文的问题,不知道能不能解决大家的问题,时间匆忙,没有及时完善,文笔也不是很好,有些地方估计是词不达意。大家可以给我意见,希望能共同进步。
|
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=925532
OEM:是给计算机厂商随着计算机贩卖的,也就是随机版。
RTM:是给工厂大量压片的版本,内容跟正式版是一样的,不过RTM.也有出120天评估版。
RVL:是正式上架零售版。
OEM=RVL:只是它的安装内容的内定值不一样,所以会有分别。随机版——能从全新的硬盘内安装,不支持升级式的安装升级版 ——用升级式的安装,不支持全新的安装零售版——则两种安装方式都支持,这也是为什么零售版的价格最贵至于安装后的东西都一样,差别只是在支持的安装方式而己!软件版本小知识
Alpha版(内部测试版):一般只在软件开发公司内部运行,不对外公开。主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致。
Beta版(外部测试版):软件开发公司为对外宣传,将非正式产品免费发送给具有典型性的用户,让用户测试该软件的不足之处及存在问题,以便在正式发行前进一步改进和完善。一般可通过Internet免费下载,也可以向软件公司索取。
Demo版(演示版):主要是演示正式软件的部分功能,用户可以从中得知软件的基本操作,为正式产品的发售扩大影响。如果是游戏的话,则只有一两个关卡可以玩。该版本也可以从Internet上免费下载。
Enhace版(增强版或加强版):如果是一般软件,一般称作“增强版”,会加入一些实用的新功能。如果是游戏,一般称作“加强版”,会加入一些新的游戏场景和游戏情节等。这是正式发售的版本。
Free版(自由版):这一般是个人或自由软件联盟组织的成员制作的软件,希望免费给大家使用,没有版权,一般也是通过Internet免费下载。
Full Version版(完全版):也就是正式版,是最终正式发售的版本。
Shareware版(共享版):有些公司为了吸引客户,对于他们制作的某些软件,可以让用户通过Internet免费下载的方式获取。不过,此版本软件多会带有一些使用时间或次数的限制,但可以利用在线注册或电子注册成为正式版用户。
Release版(发行版):不是正式版,带有时间限制,也是为扩大影响所做的宣传策略之一。比如Windows Me的发行版就限制了只能使用几个月,可从Internet上免费下载或由公司免费奉送。
Uprgade版(升级版):当你有某个软件以前的正式版本时,可以购买升级版,将你的软件升级为最新版。升级后的软件与正式版在功能上相同,但价格会低些,这主要是为了给原有的正版用户提供优惠。
软件版本号命名规则为了维护软件项目, 我们提出了对版本进行管理控制的要求. 而对于用户来说, 版本直接体现在版本号的命名上. 那么, 如何对版本号进行命名呢?
让我们看一下比较普遍的 3 种命名格式:
GNU 风格的版本号命名格式:
主版本号 . 子版本号 [ . 修正版本号 [ . 编译版本号 ] ]
英文对照:
Major_Version_Number . Minor_Version_Number [ . Revision_Number [ . Build_Number ] ]
示例: 1.2.1,2.0, 5.0.0 build-13124
Windows 风格的版本号命名格式:
主版本号 . 子版本号 [ 修正版本号 [ . 编译版本号 ] ]
英文对照:
Major_Version_Number . Minor_Version_Number [ Revision_Number [ . Build_Number ] ]
示例: 1.21, 2.0
.Net Framework 风格的版本号命名格式:
主版本号 . 子版本号 [ . 编译版本号 [ . 修正版本号 ] ]
英文对照:
Major_Version_Number . Minor_Version_Number [ . Build_Number [ . Revision_Number ] ]
官方说明参考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemVersionClassTopic.asp
说明:
GNU 风格的版本号管理策略当项目初版本时, 版本号可以为 0.1 或 0.1.0, 也可以为 1.0 或 1.0.0, 如果你为人很低调, 我想你会选择那个主版本号为 0 的方式;当项目在进行了局部修改或 bug 修正时, 主版本号和子版本号都不变, 修正版本号加 1;当项目在原有的基础上增加了部分功能时, 主版本号不变, 子版本号加 1, 修正版本号复位为 0, 因而可以被忽略掉;当项目在进行了重大修改或局部修正累积较多, 而导致项目整体发生全局变化时, 主版本号加 1;另外, 编译版本号一般是编译器在编译过程中自动生成的, 我们只定义其格式, 并不进行人为的控制.
Windows 下的版本号管理策略当项目初版时, 版本号为 1.0 或 1.00;当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变, 修正版本号加 1;当项目在原有的基础上增加了部分功能时, 主版本号不变, 子版本号加 1, 修正版本号复位为 0, 因而可以被忽略掉;当项目在进行了重大修改或局部修正累积较多, 而导致项目整体发生全局变化时, 主版本号加 1;另外, 编译版本号一般是编译器在编译过程中自动生成的, 我们只定义其格式, 并不进行人为的控制.另外, 还可以在版本号后面加入 Alpha, Beta, Gamma, Current, RC (Release Candidate), Release, Stable 等后缀, 在这些后缀后面还可以加入 1 位数字的版本号.对于用户来说,如果某个软件的主版本号进行了升级,用户还想继续那个软件,则发行软件的公司一般要对用户收取升级费用;而如果子版本号或修正版本号发生了升级,一般来说是免费的。