posts - 93,  comments - 2,  trackbacks - 0
 
1.流程
2.规范化
3.命名合理
posted @ 2014-01-14 09:26 Terry Zou 阅读(149) | 评论 (0)编辑 收藏
     摘要: oracle中imp命令详解命令: exp 源库usr/源库pwd@源库连接符 tables=dp_zyt_dgi,dp_zyt_file,dp_zyt_card file=d:\test2.dmp full=n; imp 目标库usr/目标库pwd@目标库连接符 file=test.dmp log=test_imp.log...  阅读全文
posted @ 2014-01-13 20:04 Terry Zou 阅读(207) | 评论 (0)编辑 收藏

   SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。

这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和 J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面,那么这些设置最后就可以 通过Preferences来保存,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。当然,如果你愿意保存其他的东西,也没有什么限制。只是在性能上不知道会有什么问题。

在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目录下。
    下面举个例子如何高效的应用该类,比如QQ登录
   

public class SharePreferenceUtil {
 private SharedPreferences sp;
 private SharedPreferences.Editor editor;

 public SharePreferenceUtil(Context context, String file) {
  sp = context.getSharedPreferences(file, context.MODE_PRIVATE);
  editor = sp.edit();
 }

 // 用户的密码
 public void setPasswd(String passwd) {
  editor.putString("passwd", passwd);
  editor.commit();
 }

 public String getPasswd() {
  return sp.getString("passwd", "");
 }

 // 用户的id,即QQ号
 public void setId(String id) {
  editor.putString("id", id);
  editor.commit();
 }

 public String getId() {
  return sp.getString("id", "");
 }

 // 用户的昵称
 public String getName() {
  return sp.getString("name", "");
 }

 public void setName(String name) {
  editor.putString("name", name);
  editor.commit();
 }

 // 用户的邮箱
 public String getEmail() {
  return sp.getString("email", "");
 }

 public void setEmail(String email) {
  editor.putString("email", email);
  editor.commit();
 }

 // 用户自己的头像
 public Integer getImg() {
  return sp.getInt("img", 0);
 }

 public void setImg(int i) {
  editor.putInt("img", i);
  editor.commit();
 }

 // ip
 public void setIp(String ip) {
  editor.putString("ip", ip);
  editor.commit();
 }

 public String getIp() {
  return sp.getString("ip", Constants.SERVER_IP);
 }

 // 端口
 public void setPort(int port) {
  editor.putInt("port", port);
  editor.commit();
 }

 public int getPort() {
  return sp.getInt("port", Constants.SERVER_PORT);
 }

 // 是否在后台运行标记
 public void setIsStart(boolean isStart) {
  editor.putBoolean("isStart", isStart);
  editor.commit();
 }

 public boolean getIsStart() {
  return sp.getBoolean("isStart", false);
 }

 // 是否第一次运行本应用
 public void setIsFirst(boolean isFirst) {
  editor.putBoolean("isFirst", isFirst);
  editor.commit();
 }

 public boolean getisFirst() {
  return sp.getBoolean("isFirst", true);
 }
}


应用如下所示:
mAccounts = (EditText) findViewById(R.id.lgoin_accounts);
  mPassword = (EditText) findViewById(R.id.login_password);
  if (mAutoSavePassword.isChecked()) {
   SharePreferenceUtil util = new SharePreferenceUtil(
     LoginActivity.this, Constants.SAVE_USER);
   mAccounts.setText(util.getId());
   mPassword.setText(util.getPasswd());
  }

posted @ 2014-01-11 12:51 Terry Zou 阅读(154) | 评论 (0)编辑 收藏
public static void hel(int[] a,int[] b,int[] c){
      System.arraycopy(a, 0, c, 0, a.length);
      System.arraycopy(b, 0, c, a.length, b.length);
 }
 public void testabc(){
      int[] str = new int[4];
      int[] a = new int[]{1,2};
      int[] b = new int[]{3,4};
      hel(a,b, str);
      for(int i=0;i<str.length;i++){
           System.out.println(str[i]);
      }
 }
posted @ 2013-12-25 11:39 Terry Zou 阅读(146) | 评论 (0)编辑 收藏
1.字节数组取反
public static byte[] backByte(byte[] buff){
  
for (int i=0;i<buff.length;i++){
            
int b=0;
            
for (int j=0;j<8;j++){
                
int bit = (buff[i]>>j&1)==0?1:0;
                b 
+= (1<<j)*bit;
            }

            buff[i]
=(byte)b;
        }

  
return buff;
 }
 

2.查找字节数组中字数组的位置
public static int indexOf(byte[] src,int offset,byte[] needFind){
        
for(int i=offset;i<src.length-offset-needFind.length;i++){
            
boolean isValid=true;
            
for(int j=0;j<needFind.length;j++){
                
if(src[i+j]!=needFind[j]){
                    isValid
=false;
                    
break;
                }

            }

            
if(isValid){
                
return i;
            }

        }

        
return -1;
    }



3.字节数组转换为16进制

private static final byte[] HEX_CHAR_TABLE = { (byte) '0', (byte) '1',
(
byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6',
(
byte) '7', (byte) '8', (byte) '9', (byte) 'A', (byte) 'B',
(
byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' }
;

public static String getHexString(byte[] raw, int len) {
byte[] hex = new byte[2 * len];
int index = 0;
int pos = 0;
for (byte b : raw) {
if (pos >= len)
break;
pos
++;
int v = b & 0xFF;
hex[index
++] = HEX_CHAR_TABLE[v >>> 4];
hex[index
++] = HEX_CHAR_TABLE[v & 0xF];
}


return new String(hex);
}



posted @ 2013-12-25 11:32 Terry Zou 阅读(716) | 评论 (0)编辑 收藏

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 

1.出现这个问题的原因有可能的其中一点就是spring的jar包没有被加载,有的时候没有拷spring的jar包会出现这个错误,但是当你拷了以后这个错误并没有消失的时候就说明jar包没有被加载,切记spring的jar包一定要放在工程的lib下这样才能避免这个错误的发生。
2.使用了重复的类库,且版本不一致。导致低版本的被优先使用。比如今天遇到一种情况在tomcat服务器使用了axis2.war包,当启动tomcat的时候,axis2.war包会自动解压,之后再该项目包里有相关的spring包,所以当有另外一个工程要到spring时,就有可能要到axis2的spring包,如果版本不一致就会导致该问题,解决的方法就是让该项目不受axis2项目包的影响。

posted @ 2013-07-01 11:54 Terry Zou 阅读(1086) | 评论 (0)编辑 收藏

https 双向认证配置:

1、生成服务器端密钥库 :
keytool -genkey -keyalg RSA -dname "cn=rtsm.nfcstore.com.cn,ou=a,o=a,l=a,st=a,c=cn" -alias server -keypass 123456 -keystore rhg_server.keystore -storepass 123456 -validity 365

2、导出服务端证书:

keytool -export -alias server -file nxp.crt -keystore  rhg_server.keystore -storepass 123456  -rfc 

3、生成浏览器(只能是PKCS12格式)证书
keytool -genkey -keyalg RSA -dname "cn=abc,ou=a,o=a,l=a,st=a,c=cn" -alias mock -storetype PKCS12 -keypass 123456 -keystore mock.p12 -storepass 123456 -validity 365

4. 导出浏览器证书
keytool -export -alias mock -file mock.crt -keystore  mock.p12 -storepass 123456 -storetype PKCS12 -rfc 

5、添加客户端证书到服务器中
keytool -import -v -alias mock -file mock.crt -keystore  rhg_server.keystore -storepass 123456

6、添加服务端证书到客户端中
keytool -import -v -alias server -file nxp.crt -keystore  mockTrust -storepass 123456

7. 查看证书内容
keytool -list -v -keystore rkmsTrust.keystore -storepass 123456

8. 删除证书
keytool -delete -alias xxx -keystore xxxx.keystore -storepass 123456

9. 修改keypass
keytool -keypasswd -alias xxx -keypass xxx -new 12345  -keystore xxx.keystore -storepass 123456

10. 修改storepass
keytool -storepasswd -keystore xxx.keystore -storepass 123456 -new xxx


Android BKS 证书

keytool -genkey -alias android -keypass 123456  -keyalg RSA -keysize 1024 -validity 365 -keystore android.keystore -storepass 123456 -dname "cn=android, ou=a, o=a, l=a, c=CN" -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

keytool -export -alias android -file android.crt -keystore android.keystore  -storetype BKS -storepass 123456 -provider org.bouncycastle.jce.provider.BouncyCastleProvider

keytool -import -v -alias rhgkms -file rhgkms.crt -keystore  androidTrust.keystore  -storetype BKS -storepass 123456 -provider org.bouncycastle.jce.provider.BouncyCastleProvider

posted @ 2013-07-01 09:40 Terry Zou 阅读(362) | 评论 (0)编辑 收藏
1.org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0xfa (at char #193, byte #127)

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)

org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)

javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)

com.adtech.libraryunion.filter.LoginFilter.doFilter(LoginFilter.java:54)

原因:调用接口的文件的编码方式不是UTF-8
解决:用记事本打开调用的文件,另存为UTF-8格式即可解决
2.web.xml中
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
 </context-param>时
applicationContext.xml文件的位置在tomcat6.0.35\webapps\axis2\WEB-INF\classes目录下

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
applicationContext.xml文件的位置在tomcat6.0.35\webapps\axis2\WEB-INF\目录下
posted @ 2013-06-25 17:01 Terry Zou 阅读(359) | 评论 (0)编辑 收藏
     摘要: pull解析器     xml解析器有很多种,常见的有Jdom,dom4j等,pull解析xml为android系统所用到的解析器,是android自带的解析器。 preparation     1.项目结构          2...  阅读全文
posted @ 2013-06-06 10:06 Terry Zou 阅读(196) | 评论 (0)编辑 收藏

下面这个异常导致的原因可能为:用子线程更新的UI控件的值,比如:在一个线程中执行了Toast.makeText(this,"richhouse",5000);
                                          UI控件画面的重绘(更新)是由主线程负责的,如果在子线程中更新UI控件的值,更新后的值不会重绘到屏幕上,一定要在主线程里更新UI控件的值,这样才能在屏幕上显示出来,不能在子线程中更新UI控件的值。


 CRASH: com.richhouse.nfccenter (pid 2719)

// Short Msg: java.lang.IllegalStateException

// Long Msg: java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131230759, class android.widget.ListView) with Adapter(class android.widget.HeaderViewListAdapter)]

// Build Label: HTC/m7cdwg/m7cdwg:4.1.2/JZO54K/eng.buildteam.20130530.092435:userdebug/test-keys

// Build Changelist: eng.buildteam.20130530.092435

// Build Time: 1369877182000

// java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131230759, class android.widget.ListView) with Adapter(class android.widget.HeaderViewListAdapter)]

//  at android.widget.ListView.layoutChildren(ListView.java:1734)

//  at android.widget.ListView.setSelectionInt(ListView.java:2157)

//  at android.widget.AbsListView.resurrectSelection(AbsListView.java:5608)

//  at android.widget.AbsListView.resurrectSelectionIfNeeded(AbsListView.java:5497)

//  at android.widget.ListView.commonKey(ListView.java:2319)

//  at android.widget.ListView.onKeyDown(ListView.java:2243)

//  at android.view.KeyEvent.dispatch(KeyEvent.java:2719)

//  at android.view.View.dispatchKeyEvent(View.java:7147)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1365)

//  at android.widget.ListView.dispatchKeyEvent(ListView.java:2228)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.support.v4.view.ViewPager.dispatchKeyEvent(Unknown Source)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2013)

//  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1490)

//  at android.app.Activity.dispatchKeyEvent(Activity.java:2414)

//  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1940)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.widget.TabHost.dispatchKeyEvent(TabHost.java:298)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1369)

//  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2013)

//  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1490)

//  at android.app.Activity.dispatchKeyEvent(Activity.java:2414)

//  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1940)

//  at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4093)

//  at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:4063)

//  at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3232)

//  at android.os.Handler.dispatchMessage(Handler.java:99)

//  at android.os.Looper.loop(Looper.java:155)

//  at android.app.ActivityThread.main(ActivityThread.java:5536)

//  at java.lang.reflect.Method.invokeNative(Native Method)

//  at java.lang.reflect.Method.invoke(Method.java:511)

//  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)

//  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)

//  at dalvik.system.NativeStart.main(Native Method)

posted @ 2013-06-06 09:17 Terry Zou 阅读(1279) | 评论 (0)编辑 收藏
仅列出标题
共8页: 上一页 1 2 3 4 5 6 7 8 下一页 
<2025年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

Java

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜