tech点滴2009

segment 2009-07-03

Hibernate对Postgre数据库的自动自动增长列的控制(转)

首先在Hibernate映射时,对于Postgre数据库的自动增长列的类型就选择为sequence、MySQL为native,assign为手动赋值

<generator class="sequence">

     <param name="sequence">book_id_seq</param>

</generator>

 <param name="sequence">book_id_seq</param>

 这个语句设置了自动增长列的增长方法按照数据库中名为book_id_seq的序列为参考。

Postgre数据

sqlserver : identity

 

segment 2009-07-03

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

 

segment 2009-07-02

最近编程的时候,因为下面这条语句

while(it.hasNext()){

     flag = true;

 }

造成cpu占用率100%,经过debug才发现这个问题。

 

segment 2009-06-30

hql学习:

from cat

from cat as cat1

from cat cat1

查询多个类:from table1, table2

segment 2009-06-30

geronimo v2.1例子:

deploy --user system --password manager deploy --inPlace <app_home>

 

segment 2009-06-30

A widget that has an existing parent widget may not be added to the detach list answer:

1. 把<div .../>改成<div...></div>就可以了。

2. 不要用htmlpanel p = new htmlpanel();这种方式,使用simplepanel.

 

segment 2009-06-29

org.apache.geronimo.kernel.config.InvalidConfigException: Could not locate configs to start: http://default/myapp/1.0/car

at org.apache.geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java:167)

at org.apache.geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:79)

at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.main(MainConfigurationBootstrapper.java:45)

at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:67)

at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:30)

I deleted references to the erroneous modules in the file <WASCE-ROOT>/var/config/config.xml

在这个文件的最后几排。

 

 

segment 2009-06-26

geronimo:用于构建企业服务和应用程序的完全兼容的java平台。您将使用由轻量级内核引擎组装和管理的可自定义模块集创建 Geronimo 运行时环境。内核引擎是 Geronimo 模块,该模块是由类、其他模块和可序列化配置组成的集合。在启动 Geronimo 运行时实例后,Geronimo 内核将载入、装配并组织模块。装配的模块将决定 Geronimo 部署和执行环境的功能。Geronimo 运行时实例中的所有服务都被部署为模块。

Geronimo 模块在 XML 文档中称为部署计划。最终的 Geronimo 部署计划包含原始部署计划、Maven project.properties 文件和 Maven Project Object Model(POM)文件的组合。

部署计划的内容是由 XSD 文件控制的。部署计划将定义模块 ID、模块的环境属性、模块的依赖关系、模块提供的服务及模块的 Geronimo Beans(GBeans)等等。清单 1 演示了一个简单的 Geronimo 部署计划。

 

segment 2009-06-11

ext-gwt中的mvc:

1,models应该用在客户端,只能用于组合各种数据结构(包括grids),forms或者其它用户接口组件(trees,tables,combo boxes等等);

2,mvc controllers and views

3,widget包含组成应用程序的小部件;

LoginDialog widget: 

mail应用程序的主要架构被gxt的mvc实现所控制,大致流程:dispatcher把一个应用程序事件传到所有的controllers,如果一个controller能够处理这个事件,它就处理,如果不能,它就什么也不做,紧接着这个controller就执行逻辑代码,更新models,如果一个model被更新了,那么与该model相关的views就随之更新。

the dispatcher fires an application event (one of the events enumerated in /client/AppEvents.java) to all of the controllers. If the controller can handle that particular event, it does. If it can’t handle the event it doesn’t do anything. The controller is responsible for executing logic and updating any models. The views that are connected to these

controllers will update accordingly after a model is updated.

上面一段英文是我见过最易懂的mvc解释;

所有controller必须在dispatcher中注册;

For all of this to happen, the dispatcher must register the controllers to which it can fire events.

注册之后,dispatcher就可以发送事件给controllers;

At this point, we have the four controllers registered with the dispatcher. Now that the dispatcher has controllers, it can fire events to these controllers:

只有controller才能处理事件,需要在controller中注册相关事件。事件都在appevents.java这个文件中被定义了。

Only controllers that can handle the ‘Login’ event will service this event. Which controllers are that? The ones that explicitly register for this event. In the case of the mail application, the AppController is the only controller that can handle ‘Login’ events. We can tell this by looking at the constructor for the AppController:

 initialize()方法被调用;

然后是handleEvent(AppEvent event)方法,

 这里只是简单的view跳转,转到AppView.java,如果复杂一点的话,应该处理model层;

When the Login event is handled by the controller, it is processed and then forwarded to the appropriate view. This again is trivial for the sample app. In a more complicated app, processing of the models would occur here, and forwarding to the view would only be necessary for some specific view-only logic. In this case, the event is forwarded to the view,

 

segment 2009-06-02

gwt和hibernate集成心得:同时集成了gilead;

1. gwt.xml文件中需要加入    <inherits name='net.sf.gilead.Adapter4Gwt15'/>;

2. 加入模型类,继承自LightEntity;

3. 加入hibernate.cfg.xml和hbm.xml,

4.服务端代码继承自persistentremoteservice,并且定义hibernatecontext.java文件;

 

segment 2009-05-22

基于REST的web服务:

代表性状态传输(Representational State Transfer,REST)在 Web 领域已经得到了广泛的接受,是基于 SOAP 和 Web 服务描述语言(Web Services Description Language,WSDL)的 Web 服务的更为简单的替代方法。下面介绍设计一个rest web service的时候,其具体实现应该遵循四个基本设计原则:

  • 显式地使用 HTTP 方法。
  • 无状态。
  • 公开目录结构式的 URI。
  • 传输 XML、JavaScript Object Notation (JSON),或同时传输这两者。

 

REST 要求开发人员显式地使用 HTTP 方法,并且使用方式与协议定义一致。 这个基本 REST 设计原则建立了创建、读取、更新和删除(create, read, update, and delete,CRUD)操作与 HTTP 方法之间的一对一映射。 根据此映射:

  • 若要在服务器上创建资源,应该使用 POST 方法。
  • 若要检索某个资源,应该使用 GET 方法。
  • 若要更改资源状态或对其进行更新,应该使用 PUT 方法。
  • 若要删除某个资源,应该使用 DELETE 方法。

 

segment 2009-05-22

把gwt的服务端和spring,springmvc集成起来:

1. Add the Spring MVC DispatcherServlet to your web.xml, as shown in Figure 1。配置web.xml

2.To handle the case of a GWT client calling a GWT service, modify your [name of DispatcherServlet]-servlet.xml file as follows (see Figure 4 for sample code):

  1. Use a HandlerMapping of your choice to map a URL to the GWTController, and
  2. inject the GWT service into GWTController, and at the same time inject any non-GWT services into the GWT service.

针对gwt客户端调用service,配置 [name of DispatcherServlet]-servlet.xml ,实现下面的功能:使用HandlerMapping ,把url映射到gwtcontroller,把gwt services 注入到gwtcontroller中去,同时把任何non-gwt services注入到gwt services中去;

3.For each additional GWT client and service, repeat the previous step。针对每个gwt客户端和service,重复上面的操作;

4.Create the Spring controller GWTController (see Figure 5 for the full source code)。创建gwtcontroller

 

 

segment 2009-05-22

服务端代码(GWT RPC)必须在web.xml中配置,DynaTable例子使用rpc从服务端请求数据,为了使rpc能成功返回数据,服务端组件必须可用才行。

如果单独开发widget,并且覆盖了widget.onbrowserevent()方法,一定要覆盖super.onBrowserEvent(),

 

segment 2009-05-18

fb应用程序开发:

两个主要的区域分别被称作应用程序的画布页面和剖面盒,除此之外,还有大量的辅助集成点。

画布页面:left nav右下边,页面的主要显示区域;

剖面盒:

剖面行为链接:

请求:

News Feed 和 Mini-Feed

fbml:facebook标记语言;

fbjs:facebook javascript;

fql:facebook查询语言;

使用客户机程序库:提供了一个 Facebook 客户机 API 对象,它是一个将我们的方法调用转换为向 Facebook 服务器的请求的一个代理对象。

fql:

 

segment 2009-05-18

使用gwt开发iphone应用程序: 使用gwt为iphone写应用程序与平时的开发没有不同,但是用户接口与桌面应用程序却有所不同,因为每个手机设备都不一样,应用程序需要与之进行优化来满足用户的使用习惯。所以即使你的应用程序可以再iphone上运行,但是也需要结合移动设备本身进行优化。

 应用程序,工具箱(即api),框架;

 OO原则:

1,开-闭原则:Software entities(模块) should be open for extension,but closed for modification;工厂模式是对具体产品进行扩展,有的项目可能需要更多的扩展性,要对这个"工厂"也进行扩展,那就成了"抽象工厂模式"。

2,里氏代换原则;java继承的一个原则,子类override方法的访问权限不能小于父类对应方法的访问权限。

3,合成复用原则;少用继承,多用合成,在Java中,应尽量针对Interface编程,而非实现类。

4,依赖倒转原则;要针对接口编程,而不是针对实现编程。

 

segment 2009-05-15

客户端编码:

任何客户端程序最终都会转换成javascript,因此使用gwt支持的java代码才能顺利完成这个转换;

创建EntryPoint类;

编写入口方法:onModuleLoad()

一般来说,这个方法主要处理:创建新的用户接口组件;处理事件;修改dom;

和java库的兼容:

 

segment 2009-05-13

javascript overlay types:

如果在gwt模块中使用jsni 调用javascript代码,但是jsni只能在单个方法中工作。在一些情景下需要你综合使用javascript和javascript对象,dom和json编程只是单独的处理,这个时候最好能让javascript对象像java对象一样使用;

javascript overlay types能把javascript对象集成到gwt工程中。

 

segment 2009-05-13

云计算:计算和数据资源迁移到web上的过程描述。

云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。

 

segment 2009-05-13

检索json数据;

1. 创建一个json数据源:在本文中,将创建一个servlet 来产生json格式的数据,然后客户端通过http调用获得这些数据。

a,建立一个servlet,

b,在gwt模块中包含服务端代码,

c,测试从服务端检索json数据;

2.在客户端代码中操作json数据;

得到json格式的数据之后,下面将编写get请求。第一步是主要在服务端返回的json编码的文本之上工作,有两种方式:JSNI, gwt overlay types。

首先使用javascript的eval()函数把寄送字符串转化成javascript对象。

然后编写方法来读取这些对象。

a,把json转化成javascript对象;

首先需要把服务端的json文本转化成javascript对象,最简单的办法是使用javascript内置的eval()函数,它可以正确的解析合适的json文本,并产生合适的对象。

但是,因为eval()能执行任何javascript代码,不仅仅是json数据,这个方法有一些安全隐患。确保服务端是可信的,因为它能够执行任何的javascript代码。在这个例子中,因为你正在使用servlet容器来存取机器上的数据,那不是问题。

private final native JsArray<StockData> asArrayOfStockData(String json) /*-{

   return eval(json);

 }

json数据类型,  

b,创建一个覆盖类型

接下来要用stockdata类型代替现有的stockprice类型;

gwt overlay types让你编程的时候能够把这些json对象当成java对象。

新的stockdata类将覆盖现有的javascript数组。

3. 进行http请求;

a,指定URL;

b,异步HTTP;为了从服务端获得json文本,你将使用http客户端类,这些类的作用是进行异步http请求;

c,创建一个客户端http请求;

为了发出请求,需要创建RequestBuilder对象的实例,在构造函数中指定http方法和url。如果需要,还要设置username,password,timeout,headers这些在http请求中的参数。但是在本文中,不需要设置这些东西。

当你准备进行请求的时候,你就调用sendRequest(String, RequestCallback)

如果http调用成功的时候,requestcallback参数将处理onResponseReceived(Request, Response) 方法中的响应;如果调用失败,onError(Request, Throwable)方法被调用。

requestcallback接口在功能上等同于gwt  rpc中的asynccallback接口;

 

segment 2009-05-13

通过rpc的方式;

 在这个部分,你将使用gwt rpc调用服务端方法来获得股票数据。这些服务端代码通常被认为是一个service,rpc的行为也就是invoking a service;

gwt rpc框架使应用程序的客户端和服务端能通过HTTP交换java对象。客户端调用的服务端代码通常被称为service,一个gwt rpc service的实现基于servelet架构,在客户端代码里,你将使用自动生成的代理类来调用这个service。gwt还将处理传来传去的java对象的序列化。

gwt rpc services不是基于SOPA REST的web services,它们 仅仅是在两端交换数据的轻量级方法。

gwt rpc机制下的java组件:

当配置gwt rpc的时候,主要是考虑三个方面:运行在服务端的service,调用这个service的客户端代码,传来传去的java数据对象;服务端和客户端都有序列化和反序列化数据的能力,以使数据对象能够以普通文本的格式进行传递;

为了定义rpc接口,需要写三个组件:

a,定义一个继承了RemoteService的接口;

b,创建一个继承了RemoteServiceServlet,并且实现了上面接口的类;

c,定义一个异步接口

 

1.创建一个service;先定义一个service接口,然后实现这个service;

2.从客户端调用service;

3.序列化对象;

4.异常处理;

 

segment 2009-05-12

与服务端的通信:

所有的gwt应用程序在用户端的浏览器上作为javascript代码运行的,但是,大多数的应用程序需要和服务端通信,所以AJAX是必不可少的。

选择一个实现策略:

a,gwt RPC:如果你在服务端运行java,并且为业务逻辑创建了一个接口,gwt rpc是你最好的选择。gwt rpc是一个通过标准HTTP传递java对象的机制,你可以使用gwt rpc框架调用servlets,管理对象序列化这些东西。

b,通过HTTP检索JSON数据

如果用户端和没有servlets的服务端通信,或者使用其它数据格式比如JSON,XML等的服务端,你可以进行HTTP请求来检索数据,gwt提供了通用的http对这些数据格式进行处理。

c,进行跨网站的请求jsonp

如果你创建了一个需要从多个服务端使用数据的mashup应用程序,你不得不在sop存取限制下进行处理。在这里,你将使用jsni来写一个检索jsonp的标签;

 

segment 2009-05-11

gwt上的国际化:

1. 静态字符串国际化;

2. 动态字符串国际化;

3. 本地化接口;

功能最为强大;

对于第一种方式:

1.需要实现两个java接口;

a,第一个接口是string constants;

b,另一个是参数化信息;

2.然后创建properties文件;

gwt上的css:

1. gwt倾向于直接在css文件中定义样式,而不是在java类中定义;

2. 自动资源包含;

  • Preferred: in the module XML file (StockWatcher.gwt.xml)
  • Alternate: in the HTML host page (StockWatcher.html)

3.GWT ships with three themes: Standard, Chrome, and Dark.

 

segment 2009-05-08

在客户端上完成功能:

1. 从表中增加和删除

a,创建一种数据结构;

b,向表中添加一行;

c,增加一个按钮来删除一行;

 客户端上的事件驱动:

当创建完所有的ui接口后,gwt也是基于事件的,这意味着代码响应事件,而且事件经常被用户触发,用户一般使用鼠标或键盘与应用程序的ui接口进行交互。

1.处理事件

2. 监听事件

a,事件处理接口;

b, 处理鼠标事件;

c,处理键盘事件;

3.响应用户事件

 

创建一个GWT工程

1.选择合适的widget小部件

2.选择合适的panel面板

3.在host页面中嵌入应用程序;

stockwatcher.html就是这个工程的host页面,如果该页面的body块是空的话,Root面板就包含了整个body块,显示在浏览器中的所有东西都是动态的,基于gwt,如果你的应用层没有静态元素,你就不需要编辑这个文件。

但是,stockwatcher用到了一些静态文件和图片,就需要把gwt应用程序嵌入到浏览器页面中去。

 4. 实现widget和panel,步骤是:

a,实例化每一个widget和panel;

b,为stock数据创建一个表;

c,把各个widget放好;

d,把Main面板和Root面板关联起来;

e,把鼠标焦点放到输入框;

 gwt的eclipse插件生成的war文件里面的东西可以全部拷贝到tomcat/webapp下面新建的工程里,直接就可以运行了。比以前确实快捷多了,省却了编译,新建工程等工作。

 

segment 2009-05-07

gwt,appengine plugin for eclipse

1.gwt

提供了快速创建gwt模块,入口类和html页面的向导。

把gwt应用程序编译成javascript也变得简单,只需按一个键就可以。

增加了处理JSNI(javascript native interface)的功能,jsni是gwt中的一个特色。

jsni方法:在gwt中,使用jsni方法就可以在应用程序中加入原生javascript代码,jsni方法被定义为原生的java方法,并且在java注释中包含内联javascript代码。但是这意味着,默认情况下,eclipse把jsni方法体视为普通的java注释。但是这个插件就能够识别jsni方法,并且提供了缩进和语法颜色。

jsni方法经常引用定义在源程序中java域或者方法。

jsni方法体中的自动完成:gwt1.5中引入了javascript overlay types,这是一个java类,它起一个包裹javascript对象的作用。

2.app engine

每一个部署在app engine中的应用程序都被有一个唯一的id号和版本号。这两个号都在appengine-web.xml中有定义,可以手动修改,也可以在向导里修改。

app engine支持大多数,但不是所有的java1.6特性。

App engine支持jdo标准,

 

segment 2009-12-10

目前的可视化方法大多针对结构化或者层次化数据信息,而文本本身是非结构化的。文本可视化大多是基于词汇统计和词汇间关系,比如使用applet实现的TextArc系统,TextArc处理文本时没有进行抽取,把文中所有的词都列在了可视化图形中,按照词频的多少使用不同的颜色区分。在进行阅读的时候,可视化显示区域中计算并绘制出阅读线索,但是因为可视化区域显示东西太多,不能够形成直观的印象。

 

segment 2009-06-11

dbcpc3p0  是两个数据库连接池 这两个连接池都是Hibernate建议使用的连接池 DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat数据源使用的就是DBCP C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3jdbc2扩展规范说明的Connection Statement 池的DataSources 对象。

 

segment 2009-06-08

从一个表导入数据到另一个表中的时候,两表的字段长度应该统一。不然就会出现字符串被截断的错误。

 

segment 2009-06-02

这是最近一个很挠头的MySQL5中文乱码问题的解决方法,尝试了多位网友的建议后总算解决,短短两句话,记录如下:

1.编辑/etc/my.cnf,或者是my.ini,在[mysql]段加入default_character_set=utf8

2.在编写Connection URL时,加上?useUnicode=true&characterEncoding=utf-8参数

 

segment 2009-05-31

jsp使用jtds(配置地址池时会用)连接mssql数据库测试代码

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%

 Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

 String url="jdbc:jtds:sqlserver://192.168.0.10:1433/pubs";

String user="sa";

String password="passwd";

Connection conn=DriverManager.getConnection(url,user,password);

  Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

 String sql="select * from titles";

 ResultSet rs=stmt.executeQuery(sql);

 while(rs.next()) { %>

您的第一个字段内容为:<%=rs.getString(1)%><br>

您的第二个字段内容为:<%=rs.getString(2)%><br>

  <% } %>

  <% out.print("数据库操作成功,恭喜你"); %>

  <% rs.close();

   stmt.close();

   conn.close();

  %>

  </body>

  </html>

 

segment 2009-06-11

数据库中,定位一个表,好象有四级:

数据库名,catalog,schema,表名,

 

segment 2009-05-15

jar打包:jar  cvf  hello.jar  HelloWorld.class

编辑MANIFEST.MF文件:增加

Main-Class: HelloWorld

更新hello.jar中MANIFEST.MF文件:

jar  umf  MANIFEST.MF  app.jar

执行jar文件:java -jar hello.jar

 

segment 2009-05-14

 jQuery 中的选择过程就是一个巨大的过滤过程,页面上的每个元素都经过这个过滤器,它将返回一个匹配的对象,或一个可以遍历的匹配对象的数组。

3 种查找对象的方法是最常用的。它们通过 HTML 标记、ID 或 CLASS 查找对象。

$("").  $("# "). $(".").  $(" : ").

id和class的区别是id在 页面上唯一的,而class在页面上则不一定。

 

 

segment 2009-04-30

最近完成一个jsp开发的项目,却被中文处理的乱码问题搅得好烦,尤其是由.net转身过来的朋友,更是深有体会。

而这个问题更是中文由于ie版本的不同,所引起的特殊的奇怪问题:

表现为:ie7正常,ie6 参数就会出现中文接受信息错误。(长度为奇数时最后一个字符会出现乱码 )

原因:ie7支持UTF8编码,但是ie6支持不好。

解决方法:

1、用post发送,这个方法当然不出错了,但是,有时候必须用传参的方法,那就没则了,用第二个方法。

2、习惯把中文字符串 显示长度设置为偶数

--------------------------------------------------------

现象是:

全是汉字时,无论奇数还是偶数,都无乱码,

如果是英文中文混合,并且英文字符数是奇数时,就会出现最后有一个?号

如果是英文中文混合,并且英文字符数是偶数时,无乱码

 现在的处理逻辑是,在业务方法里进行判断,如果输入的字符个数为奇数,则给其拼接上一个全角的空格,如果是半角的空格,也会有乱码问题.

 我暂时试了这个办法, 也解决了。

 

segment 2009-04-30

今天把专利的分词功能设计完成了,很兴奋,毕竟这个我做的大家能看到的第一个ajax功能。但是现在我却面临一个选择,前段时间学了很久的dojo,现在不得不放弃学习,因为,dojo很像一门语言,真的不好用,有点难,现在我转入jquery,这是随大众的结局。还有一点,我的想法是:能把gears项目做成一个类似邮箱的应用,ajax是不二选择。

 

segment 2009-04-29

JavaScript decodeURIComponent() 函数

<script type="text/javascript">

var test1="http://www.w3school.com.cn/My first/"

document.write(encodeURIComponent(test1)+ "<br />")

document.write(decodeURIComponent(test1))

</script>

输出:

http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F

http://www.w3school.com.cn/My first/

 URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。

 

segment 2009-04-29

firefox 和ie在处理dom时有差别:

childnodes的顺序不一样,ff好像把空行也算成一个child。一般ff在元素之间只要有空格就会看成是childNode,但是ie好象很奇怪,一般元素之间的空格回车都不算text节点,只有比如img元素后面有 空格回车的算文本节点,我说的最后一个是script,是写个<script>在里面,虽然在body外面,但是ie也会把script弄进 body里面去

 

 

segment 2009-04-28

第一种方式:适合于全部HTML标签

<acronym title="World Wide Web">

WWW

</acronym>

第二种方式:IMG之类的标签例如:

<img src="#" alt="鼠标移动到上方会显示并且未加载图片时也会显示">

第三种方式:input之类的标签例如:

<input type="button" value="确定" title="鼠标移动到上方会显示并且未加载图片时也会显示">

 

segment 2009-04-27

//把ciku表中的word不重复的数据按照出现次数多少统计出来,放在ciku3中。

select word, count(word)as counts, max(patent_id) as patent_id, max(app_no) as app_no into ciku3 from ciku group by word order by count(word) asc

 程序在autohint/com/nesodic/Test11.java,这个程序可以脱离dbmanager独立运行,程序处理速度大概是25条/s,源表一共有4w多条数据,处理后有17w余条数据,经过删除重复以后,大概有5w多条数据。

 

segment 2009-04-27

SELECT INTO 语句

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

语法:SELECT column_name(s) INTO newtable [IN externaldatabase]FROM source

 制作备份复件

下面的例子会制作"Persons"表的备份复件:SELECT * INTO Persons_backup FROM Persons

 IN子句可用于向另一个数据库中拷贝表:SELECT Persons.* INTO Persons IN 'Backup.mdb'  FROM Persons

 如果我们希望拷贝某些域,可以在SELECT语句后列出这些域:SELECT LastName,FirstName INTO Persons_backupFROM Persons

 你也可以添加WHERE子句。下面的例子通过从"Persons表中提取居住在"Sandnes"的人的信息,创建了一个带有两个列的名 为"Persons_backup"的表:SELECT LastName,Firstname INTO Persons_backupFROM PersonsWHERE City='Sandnes'

 

 

segment 2009-04-27

char,nchar, varchar, nvarchar的区别:

char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。

Varchar类型:Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"

而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。

 由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

VARCHAR存储变长数据,但存储效率没有CHAR高。如 果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。

Nchar类型和Nvarchar类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文(ASCII)字符都占用2个字节,对一个汉字也占用两个字节,所有的字符都占用2个字节。

 

 

 

segment 2009-04-27

Iterator i = set.iterator();

while (i.hasNext()) {

System.out.println(i.next());

}

应该改为下面

while (i.hasNext()) {

     String ss = (String) i.next();

     System.out.println(ss);

 }都可以解决问题。

 

segment 2009-03-27

Lucene搜索学习总结:

1.先为文本类型的数据建立索引,再对索引文件进行查询;

2.采用的是反向索引(inverted index),索引中的词/短语表与相应文档进行了对应;

3.主要包:

document, :文档被封装成document对象,Field;

analysis,:对文档进行分词,在建立索引之前必须要进行分词;

index,:创建索引以及对索引进行更新,IndexWriter创建索引并添加文档到索引中,和IndexReader 删除索引中的文档;

search;对索引进行搜索,IndexSearcher在指定的索引上进行搜索,和Hits保存搜索得到的结果;

 

 

segment 2009-03-27

sqlite使用总结:

1. 建立一个数据库或者连接一个数据库: sqlite3 d:\mydb.db;

2. 建立一个表: sqlite> CREATE TABLE tbl2 (

   ...>   f1 varchar(30) primary key,

   ...>   f2 text,

   ...>   f3 real

   ...> );

sqlite>

   3. 查询sqlite_master表;sqlite数据库中的概要(schema)都存储在sqlite_master这个表里面。对这个表不能使用 DROP TABLE, UPDATE, INSERT or DELETE 等语句;

sqlite> select * from sqlite_master;

    type = table

    name = tbl1

tbl_name = tbl1

rootpage = 3

     sql = create table tbl1(one varchar(10), two smallint)

sqlite>

 

4. 带.与不带.的命令是有区别的,后者只是sqlite的内部命令;

5. 改变输出格式:

The sqlite3 program is able to show the results of a query in eight different formats: "csv", "column", "html", "insert", "line", "list", "tabs", and "tcl". You can use the ".mode" dot command to switch between these output formats.

sqlite可以有输出格式定为八种,.mode可以在这些格式之间进行转换;

sqlite> .separator ", "

sqlite> select * from tbl1;

hello, 10

goodbye, 20

sqlite>

最有用的.mode 是: .mode html,输出格式是一个表格,没有<table></table>,but all of the intervening <TR>s, <TH>s, and <TD>s are

6. 把输出结果写到文件中

sqlite> .mode list

sqlite> .separator |

sqlite> .output test_file_1.txt

sqlite> select * from tbl1;

7. 把整个数据库转换层 一个ASCII 文本文件

sqlite> .output file.sql

sqlite> .dump

 

 

segment 2009-03-27

项目总结:struts2.0.11, myeclipse6.5, jdk1.5, jsonplugin-0.32, commons-fileupload-1.2

相关页面:

index.jsp: 首页,注册,登陆功能

succ_logon.jsp: 注册,登陆成功以后的页面,包括detail,succ_logon,

admin.jsp: 管理页面,包括资源管理,分类管理,评论管理,留言管理,好友管理;

主要遇到的问题:

1.各个表之间的协同,处理了一个表之后对其它表也要进行相应的处理;

2.**.action?name=str:当str是中文的时候,需要进行编码,然后在action页面再进行处理,这是乱码问题;

3.request, session各个参数在页面之间的传递;

4.上传文件的问题;

5.ajax的问题;

6.div+css的问题;

7.富编辑端的问题;

 

 

segment 2009-03-27

1.按姓氏笔画排序:

Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as

2.数据库加密:

select encrypt('原始密码')

select pwdencrypt('原始密码')

select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同

3.取回表中字段:

declare @list varchar(1000),@sql nvarchar(1000)

select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='A'

set @sql='select '+right(@list,len(@list)-1)+' from A'

exec (@sql)

4.查看硬盘分区:

EXEC master..xp_fixeddrives

5.比较A,B表是否相等:

if (select checksum_agg(binary_checksum(*)) from A)

=

   (select checksum_agg(binary_checksum(*)) from B)

print '相等'

else

print '不相等'

6.杀掉所有的事件探察器进程:

DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses

WHERE program_name IN('SQL profiler',N'SQL 事件探查器')

EXEC sp_msforeach_worker '?'

7.记录搜索:

开头到N条记录

Select Top N * From

-------------------------------

NM条记录(要有主索引ID)

Select Top M-N * From Where ID in (Select Top M ID From ) Order by ID Desc

----------------------------------

N到结尾记录

Select Top N * From Order by ID Desc

8.如何修改数据库的名称:

sp_renamedb 'old_name', 'new_name'

9:获取当前数据库中的所有用户表

select Name from sysobjects where xtype='u' and status>=0

10:获取某一个表的所有字段

select name from syscolumns where id=object_id('表名')

11:查看与某一个表相关的视图、存储过程、函数

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

12:查看当前数据库中所有存储过程

select name as 存储过程名称 from sysobjects where xtype='P'

13:查询用户创建的所有数据库

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')

或者

select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

14:查询某一个表的字段和数据类型

select column_name,data_type from information_schema.columns

where table_name = '表名'

[n].[标题]:

Select * From TableName Order By CustomerName

[n].[标题]:

Select * From TableName Order By CustomerName

 

segment 2009-03-27

前端接收用户输入的信息,然后以JSON格式传输到后端,后端接收后,转成java对象进行处理,处理结果再以JSON格式传回前端。前端使用YUI,后端使用json-lib

 

segment 2009-03-27

JSON,一直都想搞懂这东西,今天是下定决心了;

我们可以使用eval()函数的eval()方法调用JavaScript的编译器把JSON文本转变成对象。因为JSON是JavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。

var myObject = eval('(' + myJSONtext + ')');

eval函数的执行效率很高。然而,它能够编译、执行任何的JS程序,所以这样会有安全问题。在来源可信的时候才需要使用eval,这通常是服务器提供基础页面和JSON数据的web应用程序中的情形。而很多情况中,来源是不可信的。特别是永远都不要信任客户端。

如果关心安全的话,那最好是使用JSON解析器了(js脚本中有解析功能的函数)。JSON解析器只认可JSON文本,因此它比较安全:

var myObject = myJSONtext.parseJSON();

而JSON的字符串转换器(stringifier)则作相反的工作,它将JavaScript数据结构转换为JSON文本。JSON是不支持循环数据结构的,所以注意不能把循环的结构交给字符串转换器。

var myJSONText = myObject.toJSONString();

 var obj={name:"hello world"}; 等价与 var s="{name:'hello world'}"; var obj=eval("("+s+")");如果要获取name属性的值,

只需调用obj["name"]即可。json就是把服务器端返回的文本数据,在前台利用javascript语言的特性,把文本数据转换成js对象;

 

 

segment 2009-02-11

bulk   insert   表名   from   'c:\a.txt' 

  with( 

      FIRE_TRIGGERS   , 

      FIELDTERMINATOR=','   --csv文件的字段分隔符是, 

  )

bulk insert可以对txt进行导入,导入到sqlserver2000

 针对.csv文件:

选择数据源为Microsoft Text-Treiber(*.txt,*.    csv),新建DSN数据源,,然后在文件DSN中选择刚刚新建的数据源,下一步,选择目的数据表,导出;

 

segment 2009-01-09

jdbc连接 tomcat

1\Tomcat配制

在Tomcat 5.5\conf\Catalina\localhost目录下找到与项目名同名的xml文件

在<Context></Context>之间增加如下语句

<Resource auth="Container" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" logAbandoned="false" maxActive="100" maxIdle="30" maxWait="1000" name="jdbc/DBConnection" password="123456" removeAbandoned="true" removeAbandonedTimeout="180" type="javax.sql.DataSource" url="jdbc:microsoft:sqlserver://ip:1433;DatabaseName=erip" username="dataprovider" />

 2\类的说明

common\JdbcPool.java

要修改数据源:只需把程序中"java:comp/env/jdbc/DBConnection"的"DBConnection"修改为上一步Resource中的name属性值

 3\调用说明

JSP页面中增加以下引用:

<%@page import="common.JdbcPool"%>

 通过以下语句调用

建立连接时调用:

Connection conn=JdbcPool.getConnection();

关闭连接时调用:

JdbcPool.shutdownDataSource(conn,stmt,rs);

   

segment 2009-01-09

maven 与 myeclipse 结合

maven创建一个web project

 mvn archetype:create   -DgroupId=com.lifesting  -DartifactId=test  -DarchetypeArtifactId=maven-archetype-webapp

 

 

segment 2009-01-09

rs.next();//向后滚动

rs.getRow();//得到当前行号 rs.absolute(n);//光标定位到n行 rs.relative(int n);//相对移动n行

rs.first();//将光标定位到结果集中第一行。 rs.last();//将光标定位到结果集中最后一行。 rs.beforeFirst()//将光标定位到结果集中第一行之前。

rs.afterLast();//将光标定位到结果集中最后一行之后。

 rs.moveToInsertRow();//光标移到插入行 rs.moveToCurrentRow();//光标移回到调用rs.moveToInsertRow()方法前光标所在行

 

segment 2009-01-09

create nonclustered index INXAD on T_PatentBasicInfo(Patent_AD) ON [PRIMARY]

 

segment 2009-01-09

gem -h

gem -v

gem list -local

gem update --system

gem install rails

gem update rails

rails -d mysql myapp

ruby script\server

render:text => "slslslsllslslsll"

类似如下路径看到些东西。都是rails的包文件,与ruby安装在同一目录下。

C:\ruby\lib\ruby\gems\1.8\gems

并在C:\ruby\bin下加入了rails.cmd文件。

ruby Test.rb

  生成一个product表:ruby script/generate scaffold product title:string description:text image_url:string

增加一个表或者增加一个字段:(use the verb create when a migration creates tables and add when it adds columns to an existing table.)

  向product表增加一个price字段:ruby script/generate migration add_price_to_product price:decimal

 

segment 2009-01-09

Groovy is an open source dynamic language for the Java Virtual Machine, that offers a flexible Java-like syntax all Java developers can learn easily. Many organizations have adopted Groovy as an abstraction layer for defining business rules using Domain Specific Languages.动态语言,语法近似于java,主要作为抽象层来。

Grails is an open source advanced and innovative web application framework based on Groovy, and built on proven and high performance open source platforms such as Spring, Hibernate, SiteMesh, Quartz, and Ajax libraries. Grails allows developers to use agile methodologies and principles like convention over configuration to rapidly build quality applications.:基于Groovy的一种web应用框架,基于开源平台如spring,hibernagte ,sitemesh,quartz,ajax库,敏捷开发

 

 segment 2009-01-09

 今天编程遇到一个大问题,在request和session传参的时候。都是复制粘贴惹得祸,几次想过放弃,最终还是没有放弃,坚持调试程序到了最后,这种错误的提示很搞笑,居然是用页面显示不全来提示,给人一个假象,错误在哪儿,其实错误根本都不在那儿,真正的错误在开始。JSP页面现在越来越庞大,这是个问题。

 

 

segment 2009-01-09

  sql server中写一个查询语句,如果是一个field=一个带小数点的String,会出现错误,我只好用like代替=。

 

segment 2009-01-09

我今天entered into esnips网站,在寻找ireport相关资料的时候,问题是我用的ireport3,而资料大多除了英文不说,还都是1.*版本的。报表看似简单,但是如果里面包含一些结论,那这就不是报表,而是商业分析,而且是商业智能分析,档次提升不小啊!

今天我还是第一次看到日语的对我有用的技术文档。写得不错。

猜你喜欢

转载自blog.csdn.net/nesodic/article/details/114262590