posts - 93,  comments - 2,  trackbacks - 0
 
1.新建项目
2.导入jar包(例如,log4j-1.2.15.jar,slf4j-api-1.5.2.jar,slf4j-log4j12-1.5.0.jar)见附件:/Files/ZouYonghui/log4j.rar
3.在src目录下编写log.properties文件,里面包含日志所在位置,如下所示:
#Created by JInto - www.guh-software.de
#Mon May 
27 17:12:29 CST 2013
log4j.appender.CONSOLE
=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.ImmediateFlush
=true
log4j.appender.CONSOLE.layout
=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern
=[%p] %d{dd MMM hh\:mm\:ss.SSS aa} %t  %m%n
log4j.appender.logFile
=org.apache.log4j.RollingFileAppender
log4j.appender.logFile.Append
=true
log4j.appender.lo
gFile.File=D\:/Java/logs/testHell
og4j.appender.logFile.MaxBackupIndex
loWorld.log
=100
log4j.appender.logFile.MaxFileSize
=10MB
log4j.appender.logFile.layout
=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern
=[%p] %d{dd MMM hh\:mm\:ss.SSS aa} %%m%n
log4j.appender.FILELOGER.encoding
=UTF-8
log4j.logger.com.mchange
=ERROR
log4j.logger.net.sf.ehcache
=ERROR
log4j.logger.org.apache.commons
=ERROR
log4j.logger.org.apache.cxf
=info
log4j.logger.org.apache.http
=ERROR
log4j.logger.org.apache.shiro
=ERROR
log4j.logger.org.hibernate
=ERROR
log4j.logger.org.springframework
=ERROR
log4j.rootLogger
=info,logFile,CONSOLE
4.在项目中初始化:
PropertyConfigurator.configure("log4j.properties");
5.使用
如:
private static final Logger log = LoggerFactory.getLogger(HelloWorld.class);
。。。。。。
log.debug("hello");
posted @ 2014-03-21 16:50 Terry Zou 阅读(3426) | 评论 (0)编辑 收藏
     摘要: JAVA卡介绍   JAVA卡与智能卡     什么是 JAVA 卡呢?JAVA 卡是一种可以运行 JAVA 程序的接触式微处理器智能卡。1996 年 11 月,JAVA 卡 1.0 版本的规范正式发布了。如今 JAVA&n...  阅读全文
posted @ 2014-03-14 17:48 Terry Zou 阅读(199) | 评论 (0)编辑 收藏

Hibernate 默认总共支持 13 种生成策略 : 

1. increment        2.  identity        3. sequence

4. hilo                  5. seqhilo         6. uuid

7. uuid.hex          8. guid             9. native

10. assigned       11. select         12. foreign        13. sequence-identity

 

下面介绍几个较为常用的策略 : 

① identity [ 自然递增 ]

         支持 DB2,MySQL,SQL Server,Sybase 和HypersonicSQL 数据库, 用于为 long 或 short 或 int 类型生成唯一标识。它依赖于底层不同的数据库,
       与 Hibernate 和 程序员无关。

注解示例 : 

@Id

@GenericGenerator(name = "idGenerator", strategy = "identity")

@GeneratedValue(generator = "idGenerator")

 

② sequence [ 序列 ]

支持 Oracle,DB2,PostgreSql,SAPDb 等数据库,用于为 long 或 short 或 int 类型生成唯一标识。它需要底层数据库的支持,
       并由数据库来维护这个 sequence 序列。

注解示例 : 

@Id

   @GenericGenerator(name = "idGenerator", strategy = "sequence",

parameters = {@Parameter(name = "sequence",value="seq_name")})

   @GeneratedValue(generator = "idGenerator")

注意 : 该策略要求设定序列名,否则 hibernate 将无法找到,这将引致抛出异常 :

org.hibernate.exception.SQLGrammarException: could not get next sequence value

 

③ native

         需底层数据库的支持,对于 MySQL,SQL Server 采用 identity 的生成策略,对于 Oracle,则采用 sequence 策略。

注解示例 :

@Id

   @GenericGenerator(name = "idGenerator", strategy = "native")

   @GeneratedValue(generator = "idGenerator")

 

④ increment [ 自然递增 ]

       与 identity 策略不同的是,该策略不依赖于底层数据库,而依赖于 hibernate 本身,用于为 long 或 short 或 int 类型生成唯一标识。
       主键计数器是由 hibernate 的一个实例来维护,每次自增量为 1,但在集群下不能使用该策略,
       否则将引起主键冲突的情况,该策略适用于所有关系型数据库使用。

注解示例 :

       @Id

   @GenericGenerator(name = "idGenerator", strategy = "increment")

   @GeneratedValue(generator = "idGenerator")

 

⑤ uuid [ 32位16进制数的字符串 ]

         采用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。
       uuid 最终被编码成一个32位16进制数的字符串,
       占用的存储空间较大。用于为 String 类型生成唯一标识,适用于所有关系型数据库。

注解示例 :

       @Id

   @GenericGenerator(name = "idGenerator", strategy = "uuid")

   @GeneratedValue(generator = "idGenerator")

 

⑤ assigned [ 手工分配主键ID值 ]

       该策略要求程序员必须自己维护和管理主键,当有数据需要存储时,程序员必须自己为该数据分配指定一个主键ID值,
       如果该数据没有被分配主键ID值或分配的值存在重复,则该数据都将无法被持久化且会引起异常的抛出。

注解示例 :

       @Id

   @GenericGenerator(name = "idGenerator", strategy = "assigned")

   @GeneratedValue(generator = "idGenerator")





   [ 随笔均原创,转载请注明出处:http://www.blogjava.net/fancydeepin ]
 
posted @ 2014-03-06 16:13 Terry Zou 阅读(206) | 评论 (0)编辑 收藏
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。然后我们注意到这个函数有一个int的返回值,这篇文章就是简单地讲讲int返回值的作用。
从Android官方文档中,我们知道onStartCommand有4种返回值:

START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。

START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。

START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。


START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。


可能导致异常如下
java.lang.RuntimeException: Unable to start service serviceName with null: java.lang.NullPointerException
 at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3221)
 at android.app.ActivityThread.access$2100(ActivityThread.java:156)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:157)
 at android.app.ActivityThread.main(ActivityThread.java:5872)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:515)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1069)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
 at com.ag.rhg.download.DownloadPassService.onStart(Unknown Source)
 at android.app.Service.onStartCommand(Service.java:450)
 at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3187)
 ... 10 more


解决办法:在Service onStart方法中做判断
if (null != intent) {
    。。。。。。。
}
posted @ 2014-02-26 15:50 Terry Zou 阅读(891) | 评论 (0)编辑 收藏
    在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。可以通过intent.getDataString()获得所安装的包名。当卸载程序时系统发android.intent.action.PACKAGE_REMOVED广播。同样intent.getDataString()获得所卸载的包名。
第一、 新建监听类:BootReceiver继承BroadcastReceiver
    
public class BootReceiver extends BroadcastReceiver {    
   
    @Override   
    
public void onReceive(Context context, Intent intent) {    
        
//接收广播:系统启动完成后运行程序    
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {    
             Intent newIntent 
= new Intent(context, WatchInstall.class);    
             newIntent.setAction(
"android.intent.action.MAIN");       
             newIntent.addCategory(
"android.intent.category.LAUNCHER");     
             newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);       
             context.startActivity(newIntent);    
        }
    
        
//接收广播:设备上新安装了一个应用程序包后自动启动新安装应用程序。    
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {    
            String packageName 
= intent.getDataString().substring(8);    
            System.out.println(
"---------------" + packageName);    
            Intent newIntent 
= new Intent();    
            newIntent.setClassName(packageName,packageName
+ .MainActivity");    
            newIntent.setAction("android.intent.action.MAIN");             
            newIntent.addCategory(
"android.intent.category.LAUNCHER");             
            newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
            context.startActivity(newIntent);    
        }
    
        
//接收广播:设备上删除了一个应用程序包。    
        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {    
            System.out.println(
"********************************");    
            DatabaseHelper dbhelper 
= new DatabaseHelper();    
            dbhelper.executeSql(
"delete from users");    
        }
    
    }
   

第二、 修改AndroidManifest.xml配置文件 
<?xml version="1.0" encoding="UTF-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
     package="org.me.watchinstall">  
    <application>  
        <receiver android:name=".BootReceiver"  
                  android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.BOOT_COMPLETED"/>  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
            <intent-filter>  
             <action android:name="android.intent.action.PACKAGE_ADDED" />  
             <action android:name="android.intent.action.PACKAGE_REMOVED" />  
              <data android:scheme="package" />  
<!--[color=red] 注意!! 这句必须要加,否则接收不到BroadCast  [/color] -->
            </intent-filter>  
        </receiver>  
        <activity android:name=".WatchInstall" android:label="WatchInstall">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN"/>  
                <category android:name="android.intent.category.LAUNCHER"/>  
            </intent-filter>  
        </activity>  
    </application>  
    <uses-permission android:name="android.permission.INTERNET" />  
    <uses-permission android:name="android.permission.RESTART_PACKAGES"/>  
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>  
</manifest>
posted @ 2014-02-14 14:37 Terry Zou 阅读(179) | 评论 (0)编辑 收藏
1.new->Java Card Project
2.new->Java Card Applet Class->AID Settings
编写卡内程序

public class HelloApplet extends Applet {

 public static void install(byte[] bArray, short bOffset, byte bLength) {
  // GP-compliant JavaCard applet registration
  new HelloApplet().register(bArray, (short) (bOffset + 1),
    bArray[bOffset]);
 }

 public void process(APDU apdu) {
  // Good practice: Return 9000 on SELECT
  if (selectingApplet()) {
   return;
  }
  
  byte[] buf = apdu.getBuffer();
  short offset = ISO7816.OFFSET_CDATA;
  switch (buf[ISO7816.OFFSET_INS]) {
  case (byte) 0xE2:
   buf[offset++] = 0x01;
   buf[offset++] = 0x02;
   buf[offset++] = 0x03;
   buf[offset++] = 0x04;
   buf[offset++] = 0x05;
   buf[offset++] = 0x06;
   
   apdu.setOutgoingAndSend(ISO7816.OFFSET_CDATA, (short)(offset-ISO7816.OFFSET_CDATA));
   break;
  case (byte) 0xE3:
   buf[offset++] = 0x11;
   buf[offset++] = 0x12;
   buf[offset++] = 0x13;
   buf[offset++] = 0x14;
   buf[offset++] = 0x15;
   buf[offset++] = 0x16; 
    
   apdu.setOutgoingAndSend(ISO7816.OFFSET_CDATA,(short) (offset-ISO7816.OFFSET_CDATA));
   break;
   default:
    ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
  }
 }

}


3.右键项目->Run Configurations...->Java Card Application右键选择new->选择新建的Applet->package Upload->aid

4.新建卡外项目java project
编写卡内程序如下:

public class TestHelloWorld {
 
 protected static RFCSMXIO smxio = null;
 @Before
 public void setUp() throws Exception {
  smxio = SMXIOFactory.createJDKSMXIO();
 }
 
 @Test
 public void test() {
  try {
   byte[] aid = ByteUtil.hexToByteArray("5200413120");
   RFCIOResult result = smxio.selectApplet(aid);
   int offset = 0;
   byte[] apdu = new byte[5];
   apdu[offset] = (byte)0x80;
   apdu[offset+1] = (byte)0xE2;
   apdu[offset+2] = 0;
   apdu[offset+3] = 0;
   apdu[offset+4] = 0;
   result = smxio.exchange(apdu);
   
   System.out.println("result: "+ByteUtil.byteArrayToHex(result.getResult()));
   boolean res = RFCSMXIOHelper.processCardIOResult(result);
   byte[] b = result.getResult();
   if(res){
    System.out.println(ByteUtil.byteArrayToHex(b));
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

6.安装卡内程序
jcop debug->upload package->install applet
7.运行卡外程序
posted @ 2014-01-23 11:38 Terry Zou 阅读(183) | 评论 (0)编辑 收藏
     摘要: Hibernate 参数设置一览表  SQL方言 1、Hibernate JDBC属性  属性名 用途 hibernate.connection.driver_class jdbc驱动类 hibernate.connection.url jdbc URL hibernate.connection.username 数据库用户 ...  阅读全文
posted @ 2014-01-22 10:18 Terry Zou 阅读(154) | 评论 (0)编辑 收藏
Multiple markers at this line    
    原因1,这中情况有时候是jar包中缺少需要的类,没把需要的类打进去
    原因2,缺少default.properties文件
       从其他工程拷贝一个过来
    原因3,没有jar包,没有资源文件
       工程右键 -> Properties ->android ->选择一个android的版本,(如果已经选择好了,还是有问题,就先选择另一个,之后再换回来)

posted @ 2014-01-21 15:21 Terry Zou 阅读(170) | 评论 (0)编辑 收藏

1.缺少包commons-collections-3.1.jar
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/LRUMap
 at org.hibernate.util.SimpleMRUCache.init(SimpleMRUCache.java:71)
 at org.hibernate.util.SimpleMRUCache.<init>(SimpleMRUCache.java:55)
 at org.hibernate.engine.query.QueryPlanCache.<init>(QueryPlanCache.java:76)
 at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:239)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
 at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
 at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
 at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
 at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
 at com.rfcyber.rfcepayment.util.jpa.JPAHelper.init(Unknown Source)
 at test.TestDataPreparation.setUp(TestDataPreparation.java:52)
 at junit.framework.TestCase.runBare(TestCase.java:128)
 at junit.framework.TestResult$1.protect(TestResult.java:106)
 at junit.framework.TestResult.runProtected(TestResult.java:124)
 at junit.framework.TestResult.run(TestResult.java:109)
 at junit.framework.TestCase.run(TestCase.java:120)
 at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.LRUMap
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 ... 22 more

2.缺jta.jar

java.lang.NoClassDefFoundError: javax/transaction/SystemException
 at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:112)
 at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:107)
 at com.rfcyber.rfcepayment.util.jpa.JPAHelper.getEntityManager(Unknown Source)
 at com.rfcyber.rfcepayment.util.jpa.JPADAO.findByJPQL(Unknown Source)
 at com.richhouse.personal.service.DPZYTService.searchNextAvaiable(Unknown Source)
 at com.richhouse.personal.util.ZYTDPHandler.searchNextAvaiable(Unknown Source)
 at com.richhouse.personal.util.ZYTDataPreparation.prepareStoreData(Unknown Source)
 at test.TestDataPreparation.testOracleSearchNext(TestDataPreparation.java:91)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at junit.framework.TestCase.runTest(TestCase.java:164)
 at junit.framework.TestCase.runBare(TestCase.java:130)
 at junit.framework.TestResult$1.protect(TestResult.java:106)
 at junit.framework.TestResult.runProtected(TestResult.java:124)
 at junit.framework.TestResult.run(TestResult.java:109)
 at junit.framework.TestCase.run(TestCase.java:120)
 at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: javax.transaction.SystemException
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 ... 24 more 

posted @ 2014-01-15 10:44 Terry Zou 阅读(291) | 评论 (0)编辑 收藏
public static List<ApplicationInfo> getAllInstalledApp(Context context) {
      List<ApplicationInfo> installedPackageList = new ArrayList<ApplicationInfo>();
      List<ApplicationInfo> list = context.getPackageManager().getInstalledApplications(0);
      for (int i = 0; i < list.size(); i++) {
           installedPackageList.add(list.get(i));
      }
      return installedPackageList;
 }
posted @ 2014-01-14 16:07 Terry Zou 阅读(163) | 评论 (0)编辑 收藏
仅列出标题
共8页: 上一页 1 2 3 4 5 6 7 8 下一页 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

Java

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜