yanmin

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  16 随笔 :: 1 文章 :: 9 评论 :: 0 Trackbacks

2012年7月12日 #

     摘要:   阅读全文
posted @ 2012-07-12 16:48 yanmin 阅读(482) | 评论 (0)编辑 收藏

2011年5月20日 #

最近做一个项目,里面很多特殊字符,引发了一些问题,解决后很开心,特别来分享。
特殊字符:
Jörg Ranau
Sigutė Jakštonytė
Côte d'Ivoire

数据库手工导入数据

1 先检查数据库的字符集和客户端字符集是否一致。 采用的是UTF8
查看语句:
select * from nls_database_parameters

2 若是采用DOS 下的SQLPLUS 导入数据,需要set NLS_LANG=AMERICAN_AMERICA.UTF8
windows:    set NLS_LANG=AMERICAN_AMERICA.UTF8
unix:    NLS_LANG=AMERICAN_AMERICA.UTF8

3:   检查导入的数据的文件格式,格式采用: UTF8 without BOM, 
可以用NOTEPAD++, CONVER TO UTF8 without BOM
也可以用txt , 转换成UTF8.

第3点非常重要,之前忽略了,发现插入导入数据库后,数据显示不对。

验证你导入的数据是否正确可以用ORACLE DUMP 命令。
select dump(country_desc),country_desc  from tb_test  where testcode='1';
Typ=1 Len=14: 67,195,180,116,101,32,100,39,73,118,111,105,114,101        Côte d'Ivoire


数据库脚本中遇到特殊字符:
1:  单引号‘ , oracle 脚本需要写成 两个单引号
UPDATE pi_portal_nday SET ND_CTY='Côte d'‘Ivoire' WHERE ND_ID IN (152,162);

2: 特殊字符&, oracle 表示需要的参数, 若是数据中有这个有2个方法:
第1 种: set define off;

第2种:
set escape on;
然后将所有的&, 替换成/&。

3: 空行
用<br> 代替。


JAVA 代码导入数据:

要导入的数据都放在TXT 类型的文件里,通过batch job 导入数据库。 
检查导入的数据的文件格式,格式采用: UTF8 without BOM, 
可以用NOTEPAD++, CONVER TO UTF8 without BOM

java 代码:
1 读文件的时候采用 UTF8格式。

InputStreamReader read = new InputStreamReader (new FileInputStream(file),"UTF-8");
BufferedReader inBuf=new BufferedReader(read); 

2 检查所用开发工具的文件ENCODING 字符。
这个就是会为什么导致没发现 读文件错误,在开发工具中打出的LOG 欺骗了我们的眼睛。

我的开发工具BEA JAVA 文件默认ENCODING cp1252, 改成UTF8 就好了。这个特别容易忽略,当在控制台看LOG的时候,发现读过来的文件里的内容打出来都正确,就忽略了JAVA的源文件。认为是从unicode转换 utf8 有问题,特别将字符又做了处理,发现插入数据库还是不正确。 修改了ENCODING 字符字符后发现读入文件就不对了。这样轻松就解决了。 所以只要修改了读文件的时候采用 UTF8格式就可以啦。


JAVA 代码中直接赋值的或是页面录入的。
1: 页面的就很简单了,JSP 或是HTML ,里面加入字符是UTF8的就OK
2: 代码里面的,需要转换:
byte[] byteArr1 = columnValueBe.getBytes("UTF-8");
columnValue = new String(byteArr1, "UTF-8");













posted @ 2011-05-20 18:29 yanmin 阅读(1849) | 评论 (1)编辑 收藏

2008年1月3日 #

     用了这么多年计算机, 发现很多计算机的快捷命令都不知道, 汗啊,  从网上搜寻下一些,COPY 在这是没用的,打下来用的时候就看:

这些命令都是从开始——运行处进行的(windows键+R)

       'cmd'     这个命令是调用类似dos的命令窗口的命令,在这里你可以像操作DOS一样操作Windows.

       'inetmgr'   这个命令相信做过网站的都知道,对了这就是调用IIS的快捷命令。

       'mstsc'     这个是用来启动远程桌面连接的快捷命令,相信搞过网络的人对此不会陌生。

       'regedit'   这个命令大家都很熟悉,是用来调用注册表的。

       'appwiz.cpl'     进入添加和删除程序的快捷命令

       'control userpasswords2'         进入用户账户设置界面的命令

       'cleanmgr'                       磁盘垃圾清理快捷命令

      'command.com'               调用的则是系统内置的 NTVDM,一个 DOS虚拟机。它完全是一个类似 Virtual PC 的 虚拟环

境,和系统本身联系不大。当我们在命令提示符下运行 DOS 程序时,实际上也 是自动转移到 NTVDM虚拟机下,和 CMD

本身没什么关系。

      'calc'           启动计算器

      'chkdsk.exe'                 磁盘检查

      'compmgmt.msc'           计算机管理

      'devmgmt.msc'               设备管理器

      diskmgmt.msc              磁盘管理实用程序

      'dfrg.msc '                      磁盘碎片整理程序

      'drwtsn32'             系统医生

      'dvdplay'                Windows Media Player

      'explorer'               资源管理器

      'dxdiag'                   DirectX Diagnostic Tool

      'gpedit.msc'           组策略编辑器

      'gpupdate /target:computer /force'              强制刷新组策略

      'eventvwr.exe'                       事件查看器

      'logoff'                    注销命令

      'lusrmgr.msc'            本地用户和组   

      'msinfo32'                   系统信息

      'msconfig'                   系统配置实用程序

      'net start (servicename)'        启动该服务

      'net stop (servicename)'停止该服务

      'notepad'           记事本

     'nusrmgr.cpl'       同control userpasswords,打开用户帐户控制面板

     'Nslookup'           IP地址侦测器

     'oobe/msoobe /a'             检查XP是否激活

     'perfmon'                计算机性能监视器

     'regedit'                   系统注册表

     'regedt32'                 注册表编辑器

     'regsvr32 /u *.dll'      停止dll文件运行

     'route print'             查看路由表

     'rononce -p'             15秒快速关机

     'rsop.msc'               组策略结果集

     'rundll32.exe rundll32.exe %Systemroot%\System32\shimgvw.dll,ImageView_Fullscreen'    启动一个空白的Windows 图

片和传真查看器

     ' secpol.msc'             本地安全策略

     'services.msc'            本地服务设置

     'sfc /scannow'          启动系统文件检查器

     'sndrec32'               录音机

     'taskmgr'                 任务管理器

     'tsshutdn'               60秒倒记时关机命令

     'winchat'                  winxp自带局域网聊天

     'winmsd'                  系统信息

     'winver'                  显示About Windows 窗口

     'wupdmgr'                 update

     'firewall.cpl'             防火墙

     'magnify'                  放大镜

     'sysdm.cpl'               系统属性

     'sysdm.cpl'               windows系统安全工具

     'write'                     写字板

     'tourstart'                Windows XP 漫游

     'utilman'                   辅助工具管理器

    'spider'                     蜘蛛牌游戏

    'sysedit'                   系统配置编辑器

    系统文件检查工具(立即扫描) sfc /scannow

   系统文件检查工具(下次启动时扫描) sfc /scanonce

   系统文件检查工具(每次启动时扫描) sfc /scanboot

   系统文件检查工具(返回默认设置) sfc /revert

   系统文件检查工具(清除文件缓存) sfc /purgecache

   系统文件检查工具(设置缓存大小=x) sfc /cachesize=x

   'cliconfg'                SQL Client客户端网络实用工具

   'mmsys.cpl'             声音和音频设备属性       

  'shutdown'               关闭windows

  'fsmgmt.msc'           共享文件夹

   'wscui.cpl'              Windows安全中心

   'control schedtasks'       任务计划

   'sticpl.cpl'               扫描仪与相机

    'ntmsmgr.msc'         可移动存储

    'intl.cpl'             区域的语言选择

    'eudcedit'          TrueType造字程序

    'control printers'    打印机和传真

   'powercfg.cpl'          电源选项属性

   'telephon.cpl'      电话与调制解调器选项

    'osk'           屏幕键盘

    'odbccp32.cpl'           ODBC数据源管理器

    'packager'              对象包装程序

    'ncpa.cpl' /'control netconnections'            网络连接

    'netsetup.cpl'        网络连接向导

    'main.cpl' /'control mouse'         鼠标属性

    'winmine'                 扫雷游戏

    'secpol.msc'            本地安全设置

    'control keyboard'         键盘属性

   IP配置实用程序(显示连接配置) ipconfig /all
  IP配置实用程序(显示DNS缓存内容) ipconfig /displaydns
  IP配置实用程序(删除DNS缓存内容) ipconfig /flushdns
  IP配置实用程序(释放全部(或指定)适配器的由DHCP分配的动态IP地址) ipconfig /release
  IP配置实用程序(为全部适配器重新分配IP地址) ipconfig /renew
  IP配置实用程序(刷新DHCP并重新注册DNS) ipconfig /registerdns
  IP配置实用程序(显示DHCP Class ID) ipconfig /showclassid
  IP配置实用程序(修改DHCP Class ID) ipconfig /setclassid

  'inetcpl.cpl'                internet属性

   'ciadv.msc'                  索引服务

  'winver'                      检查windows版本号

  'mplayer2'                  简易widnows media player

   'mspaint'                     画图板

   'mem.exe'                显示内存使用状况

   'compmgmt.msc'               计算机管理

   'wmimgmt.msc'                   打开windows管理体系结构(WMI)

   'ntbackup'                          系统备份与还原

  'narrator'                         屏幕“讲述人”

  'netstat  -an'                   (TC)命令检查接口

  'syncapp'                     创建一个公文包

   'sigverif'                       文件签名验证程序

    'certmgr.msc'               证书管理实用程序

   'iexpress'                     木马捆绑工具,系统自带

    'access.cpl'                   辅助功能选项

    'fsquirt'                  Bluetooth文件传送向导

    'dcomcnfg'                     组件服务

     'timedate.cpl'                 日期时间属性

     'ddeshare'                         DDE共享

     'control desktop'             显示属性

     'desk.cpl'                        显示属性

     'control.cpl'                  显示属性的外观选项卡

     'sigverif'                     文件签名验证 

    快速查找 findfast.cpl

   文件夹选项 control folders

   字体文件夹 control fonts

   字体文件夹 fonts

    'freecell'         空档接龙游戏 

    'joy.cpl'              游戏控制 

posted @ 2008-01-03 10:00 yanmin 阅读(174) | 评论 (1)编辑 收藏

2007年10月29日 #

     toad 中的中文显示“靠”

本来就超级忙,被迫重装了系统,重新建了库,一切都OK的时候,发现用TOAD连接ORACLE 数据库,里面的中文字都显示“靠”, 第一个反映,遭了,数据库文字设置不对,要是数据库重装,那又要浪费2天!!

幸好,用其他机器的TOAD,中文字显示正确; 明白了是自己新装的操作系统的原因。 网上查到解决办法, 解决了,心又落回来了!!

    在环境变量中设置系统环境变量:

   NLS_lANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

posted @ 2007-10-29 11:45 yanmin 阅读(607) | 评论 (1)编辑 收藏

2007年10月19日 #

最近狂多的面试,发现自己的基础知识和理论都弱了很多,为了不误人子弟,开始恶补:

一.Enterprise Beans
  在EJB(Enterprise Java Beans)中定义了两种不同类别的Enterprise Bean :
  *会话 Bean (Session Bean)
  *实体Bean (Entity Bean)
  
  1. 会话 Bean (Session Bean)
  会话 Bean 是调用它的客户端代码要完成的工作。当客户端与服务器建立联系,那么一个会话 Bean 就建立起来了。根据会话 Bean 的状态不同有分为:
  A. 状态会话 Bean (Stateful Session Bean)
  B. 无状态会话 Bean (Stateless Session Bean)
  1.1 状态会话 Bean (Stateful Session Bean)
  当客户机和服务器建立连接之后,状态会话 Bean (Stateful Session Bean) 将一直在客户机和服务器之间保持着用户的某个状态。例如:用户使用银行的ATM时,经过验证之后,用户可以连续执行多次操作,在这个过程当中,用户的合法状态将一直被保留,直到她将信用卡取出,结束这次操作。这时,状态会话 Bean (Stateful Session Bean) 也就被销毁。
  1.2无状态会话 Bean (Stateless Session Bean)
  当客户机和服务器建立连接之后,无状态会话 Bean (Stateless Session Bean)处理单一的用户请求或商务过程。无状态会话 Bean (Stateless Session Bean)不需要从以前的请求中提取任何状态。例如,用户的用户密码确认。用户输入密码后,发送请求。组件返回真或假来确认用户,一旦过程完成,无状态会话 Bean (Stateless Session Bean) 也宣告结束。
  2. 实体Bean (Entity Bean)
  实体Bean (Entity Bean)只是数据模型,它不包括商务逻辑。实体Bean (Entity Bean)可以将关系/对象数据库的数据映射到内存中供其它组件使用。实体Bean (Entity Bean)是一直存在的,而且具有很高的容错性能。实体Bean (Entity Bean)能供允许多用户同时访问。
  
  二. 会话 Bean (Session Bean)
  Ejb的执行过程是被放在一个EJB容器中进行的,所以客户端不会直接调用我们写好的Enterprise Bean ,而是调用EJB容器生成的一个EJBObject (EJB对象)来实现。那么,我们在编写服务器端的Enterprise Bean 时,就要考虑这点。既然客户端不能直接访问,就由EJBObject来代劳,所以在编写服务器端时,就要编写服务器端的一个接口(Remote)用来与客户机联系,实力化EJBObject。要生成EJBObject 就要调有Home 接口,来建立这个实力。
  
  以下是会话 Bean 的代码分析:
  A.Enterprise Bean 类:sailorsy.class
  1.setSessionContext(SessionContext ctx)方法
  它是EJB容器和Enterprise Bean互相作用的关口。
  
  import java.rmi.*;
  import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  public voic setSessionContext(SessionContext ctx)//setSessionContext
  }//class sailorsy
  
  2.ejbCreate(…)方法
  它可以初始化Enterprise Bean ,可以定义不同的ejbCreate(…)方法,每个方法所带的参数不同。但是,必许要存在至少一种。
  
   import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  public voic setSessionContext(SessionContext ctx)//setSessionContext
      public void ejbCreate() //ejbCreate
  }//class sailorsy
  
  3.ejbPassivate()方法
  如果初始化的Enterprise Bean 过多,EJB容器将其中的一些挂起(passivate),释放他们所占用的空间。
  
   import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  
  public voic setSessionContext(SessionContext ctx)//setSessionContext
  
      public void ejbCreate() //ejbCreate
      public void ejbPassivate() //ejbPassivate
  
  }//class sailorsy
  
  4.ejbActivate()方法
  和ejbPassivate正好相反,它将被挂起的Bean从新调回。
  
  import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  
  public voic setSessionContext(SessionContext ctx)//setSessionContext
  
      public void ejbCreate() //ejbCreate
      public void ejbPassivate() //ejbPassivate
      
      public void ejbActivate() //ejbActivate
  
  }//class sailorsy
  
  5.ejbRemove()方法
  它可以清除EJB容器中的Bean。
  
   import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  
  public voic setSessionContext(SessionContext ctx)//setSessionContext
  
      public void ejbCreate() //ejbCreate
  
      public void ejbPassivate() //ejbPassivate
      
      public void ejbActivate() //ejbActivate
  
      public void ejbRemove() //ejbRemove
     
       public String showname(){
       return "Hello,my name is sailorsy";
      }//自己的商务方法
  }//class sailorsy
  
  以上这些是EJB必需的回调方法,我们可以在里面加入自己的方法,加入自己的商务逻辑。
  B.Home 接口: sailorsyHome
  
    import java.rmi.*;
  import javax.ejb.*;
  
  public interface sailorsyHome extends EJBHome {
   public sailorsyRemote create() throws RemoteException, CreateException;
  }
  
  C. Remote接口:sailorsyRemote
  import java.rmi.*;
  import javax.ejb.*;
  
  public interface sailorsyRemote extends EJBObject {
   public java.lang.String showname() throws RemoteException;
  }
  
  三.调用会话 Bean:sailorsyTestClient1
   [code]    import javax.naming.*;
  import javax.ejb.*;
  import javax.rmi.PortableRemoteObject;
  import java.rmi.*;
  
  public class sailorsyTestClient1 {
   private sailorsyHome sailorsyHomeObject = null;
  
   //Construct the EJB test client
   public sailorsyTestClient1() {
    try {
     //以下是客户端使用JNDI定位Home对象。
     Context ctx = new InitialContext();
  
     //look up jndi name
     Object ref = ctx.lookup("sailorsy");
  
     //cast to Home interface
     sailorsyHomeObject = (sailorsyHome) PortableRemoteObject.narrow(ref, sailorsyHome.class);
  
    }
    catch(Exception e)
   }
  
   //----------------------------------------------------------------------------
   // Utility Methods
   //----------------------------------------------------------------------------
  
   public sailorsyHome getHome() {
    return sailorsyHomeObject;
   }
   //Main method
  
   public static void main(String[] args) throws Exception{
    sailorsyTestClient1 client = new sailorsyTestClient1();
    sailorsyRemote sr=client.getHome() .create()
    String s=sr.showname()
    System.out.print(s);
    // Use the getHome() method of the client object to call Home interface
    // methods that will return a Remote interface reference. Then
    // use that Remote interface reference to access the EJB.
   }
  }[/code]
  
  以上的EJB在win2000+jbuilder5/jbuilder6+BAS4.5经过测试。
  
  以下是整个EJB的执行过程:
  1. 客户端通过JNDI检索Home对象的引用;
  2. JNDI返回Home对象的引用;
  3. 请求创建一个新的EJB对象;
  4. 创建EJB对象;
  5. 返回EJB对象;
  6. 调用商务方法;
  7. 调用Enterprise Bean.
posted @ 2007-10-19 15:57 yanmin| 编辑 收藏

2006年9月23日 #

实现java1.4中的split()函数功能的代码- -

                                      

split()函数是分隔字符串的函数,在JDK1.4以后才有的.

在以前的版本里要用这个函数时,需要自己去写.

lotus r6中的JDK是1.3的,写JAVA代理时也需要自己写这个函数


import java.util.*;
public class test
{
  public static void main(String args[])
    {
      Vector v = new Vector();
      test t = new test();
      v = t.splitString("b","aaabccccbddddbeeeeee");
      System.out.println(v.size());
      for (int i = 0;i<v.size();i++)
      {
       System.out.println(v.get(i));
       }
     }
     
     
   public Vector splitString(String sign, String sourceString)
   {
        Vector splitArrays = new Vector();
        int i = 0;
        int j = 0;
        if (sourceString.length()==0) {return splitArrays;}
        while (i <= sourceString.length()) {
               j = sourceString.indexOf(sign, i);
               if (j < 0) {j = sourceString.length();}
               splitArrays.addElement(sourceString.substring(i, j));
               i = j + 1;
        }
        return splitArrays;
  }
 
}
posted @ 2006-09-23 17:15 yanmin| 编辑 收藏

2006年9月15日 #

<bean:define id="oe" name="<%=org.apache.struts.taglib.html.Constants.BEAN_KEY%>"/>
     <td class='ssCell' width="6.8%" align="center">
      <%
   String mrnString = "";
   com.phs.ihis.pm.PatientBarInfoModel pbInfoModel = (com.phs.ihis.pm.PatientBarInfoModel)oe; 
   if (pbInfoModel.getMrnString() != null && !"".equals(pbInfoModel.getMrnString())){
    mrnString = pbInfoModel.getMrnString()+"*"; 
   }else{
    if (pbInfoModel.getPatientNo() != null && !"".equals(pbInfoModel.getPatientNo())){
     mrnString = pbInfoModel.getPatientNo();
    }
   } 
     %>
     <a href="javascript: clickPick(
       '<%=pbInfoModel.getKey()%>')">
       <%=mrnString%>
     </a>
    </td>
posted @ 2006-09-15 10:08 yanmin| 编辑 收藏

2006年9月6日 #

 myCheckBoxArray.value !=undefined
posted @ 2006-09-06 19:56 yanmin 阅读(265) | 评论 (0)编辑 收藏


这段是放在bodyonload ();刚才做的action :
document.OTNotesForm.action = contextPath + "/ot/SearchCareproviderOTNotesAction.do?setter="+setter+"&"+type+"="+ParamEncode(value)+"&CareProviderType="+ParamEncode(careproviderType);

在JSP上的JAVA巧调用javascript 方法
用的: out.println("javascript 方法(参数1,参数2);");
  



<%
  if(request.getAttribute("PopupCareProviderSearch") != null){
   String setter = request.getParameter("setter");
   String careProviderCode = request.getParameter("CareProviderCode");
   String careProviderName = request.getParameter("CareProviderName");
   String careProviderType = request.getParameter("CareProviderType");
   careProviderCode = careProviderCode == null? "": careProviderCode;
   careProviderName = careProviderName == null? "": careProviderName;
   out.println("popupCareProvider('"+setter+"','"+careProviderCode+"','"+careProviderName+"','"+careProviderType+"',true);");
  }
  if(request.getAttribute("RefreshPatientBar") != null){
   out.println("top.refreshPatientBar();");
  }  
  if(request.getAttribute("PopupOrderItemSearch") != null){
   String setter = request.getParameter("setter");
   String itemCode = request.getParameter("searchCode");
   String itemName = request.getParameter("searchDesc");
   itemCode = itemCode == null? "": itemCode;
   itemName = itemName == null? "": itemName;
   out.println("popupOrderItemSearch('"+setter+"','"+itemCode+"','"+itemName+"',true);");
  }
  String y = request.getParameter("y");
  if(y != null){
   out.println("document.body.scrollTop="+y+";");
  }  
 %>
posted @ 2006-09-06 19:45 yanmin 阅读(1786) | 评论 (1)编辑 收藏

2006年9月1日 #

get :  userId
byte[] userId = (byte[])session.getUserMstrPK().getPrimaryKey();
posted @ 2006-09-01 17:15 yanmin 阅读(127) | 评论 (0)编辑 收藏

仅列出标题  下一页