java

7 29

在windows下使用gcc编译jni的简单教程

1、安装MinGW,这个可以为windows提供gcc编译环境。

http://sourceforge.net/projects/mingw/files/ 下载,是.exe的,在线安装,但很快。安装时选c compiler就行了,也可以把c++的也装了。安装完成后,为了方便使用最好配置一下环境变量。把MinGW/bin目录加入环境变量。

 

2、编写JAVA文件

写个最简单的:

public class Test {

static{
    System.loadLibrary("lib");
}

static native void print(int a);

public static void main (String args[]) {
    print(3);
}

}

然后编译java文件 javac Test.java

3 24

java的http请求(get/post/上传文件)(附源码下载)

使用标准http协议实现,(HttpUrlConneciton),不使用第三方包

一、get请求
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
is.read(…..
二、简单post请求
只需要将参数用 & 和 = 连接,然后用流写出去就行了。
URL url=new URL(“http://www.baidu.com/s");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream out=conn.getOutputStream();
out.write(“wd=abcdefg&wd2=hijklmn”.getBytes());
out.flush();
out.close();
InputStream is = conn.getInputStream();
is.read(…..
三、上传多文件
比如实现如下请求
参数:
name=zzp
age=23
文件:
icon=new File(file1);
music=new File(audio);
需要向服务器发送的数据如下:
首先需要定义一个boundary,一个随机字符串即可,但整个请求过程中需要是一致的。
BOUNDARY=“abcdefg”;
首先需要
conn.setRequestProperty(“Content-Type”,“multipart/form-data;boundary=abcdefg”);
全部数据请求如下(包括内容中的引号。包括所有换行与空行,换行符是\r\n)(两个横线之间的是需要发送的全部内容):
排版很麻烦。。换行总是被去掉,所以以下用[\r\n]表示换行,程序中直接往流里写\r\n就行了。


--abcdefg[\r\n]
Content-Disposition:form-data;name="name"[\r\n]
[\r\n]
zzp[\r\n]
--abcdefg[\r\n]
Content-Disposition:form-data;name="age"[\r\n]
[\r\n]
23[\r\n]
--abcdefg[\r\n]
Content-Disposition:form-data;name="icon";filename="file1其实这个是随便的"[\r\n]
Content-Type:image/png[\r\n]
[\r\n]
file1.getBytes()[\r\n]
--abcdefg[\r\n]
Content-Disposition:form-data;name="music";filename="mymusic.mp3"[\r\n]
Content-Type:audio/mpeg[\r\n]
[\r\n]
audio.getBytes()[\r\n]
--abcdefg--

源码下载:
9 17

java中怎么样对list进行排序

本文概要:在java中怎么样对一个list按自己的想法进行任意排序.比如按list中元素的name属性或按time属性.

主要用到了Collections.sort()方法,
该方法有2个重载.其中一个方法只有一个参数,即排序对象,排序方法默认(这个我没试过,你可以自己试试)

[FONT-COLOR=Red](纠错:此方法并不是默认排

9 16

java中final,finally,finalize的区别

本文概要:java中的fina  finally finalize三个关键字的用户及区别.这是个笔试常见题.今天试用期到期,考了这个题,finalize不认识…悲剧了..

在论坛转过来的,大家有用的着的收藏了吧.

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。  

7 16

禁用myeclipse的无用插件 关闭自动更新 加快启动速度

 本文概要:禁用myeclipse中不常用的各种插件,关闭自动更新。大幅度加快启动和响应速度

 

去除不需要加载的模块


windows–>perferences–>general–>startup and shutdown

关掉没用的启动项:

怎样才能知道哪些启动项有用呢?我现在把我知道的启动项用处说一下,还有很多不懂的,希望大家懂的回复在下面啊:
WTP :一个跟myeclipse差不多的东西,主要差别是 WTP 是免费的,如果使用myeclipse,这个可以取消
Mylyn:组队任务管理工具,类似于 CVS ,以任务为单位管理项目进度,没用到的可以取消
Derby:一种保存成 jar 形式的数据库,我没用到,取消
一大排以 MyEclipse EASIE 打头的启动项:myeclipse 支持的服务器,只选自己用的,其他取消,比如我只选了tomcat

取消MyEclipse在启动时自动验证项目配置文件

7 8

使用spring mvc上传文件的常见错误解决办法

本文摘要:在使用spring mvc上传文件时的常见错误的解决办法 1、 异常:org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest解决办法:在spring里面配置 重点:id一定要是mult

7 8

使用spring mvc上传文件的简单教程

本文概要:使用spring mvc进行简单的文件上传。

1、首先在spring中配置一个bean
[code=xml]
class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”>

[/code]
注意:这个bean的id一定要是multipartResolver,不然会出错

7 7

spring+hibernate最简单入门教程(事例下载)

本文摘要:刚进公司,有个项目是用spring+hibernate做的,现在要功能。但我对spring hibernate一点也不懂。
天天网上找资料,好难找。搞了将近一个星期才把这个hello world搞出来。惭愧啊 。。
现在把代码发上来,可能会有需要的人。

主要功能:
spring+hibernate整合。
使用spring mvc框架处理请求,使用hibernate操作数据库
使用到了multiactioncontroller simpleformcontroller

功能:
插入新数据

6 28

不使用struts标签显示表单验证的错误信息

本文概要:在使用struts2的表单验证的时候,会有一些信息(比如字段错误信息)返回到jsp页面中,显示给用户.
使用struts标签可以很简单的达到目的.但是struts标签却自带样式,排版起来非常不方便.这里就介绍怎么样不使用struts标签,来显示出这些信息

比如有如下网页:
[code=java]
actionerror:
actionmessage:



提交

[/java]

6 25

java中从keystore里导出证书

本文概要:在java中从证书库(keystore)文件中直接导出证书文件(.cer)

方法:
1.读取keystore文件
2.使用keystore的getCertificate方法从证书库中读取出证书
3.使用一个writer类,将证书的encoded经过base64编码后存入文件

[code=java]
package cert;

import java.io.FileInputStre

6 11

jsp中获取路径的各种方法

 本文概要:主要简单介绍jsp中获取路径的各种方法.
比如request.getRequestURI     request,getRequestURL    request.getContextPath    request.getRealpath等等

 尝试把下面的代码放到不同的站点、不同路径下运行 查看效果

 

request.getRealPath(""):<br />

...

6 10

javamail发送邮件的简单事例

 本文概要:主要简单介绍 javamail发送邮件,通过一个简单的例子,可以很容易的学会怎么样用java发送邮件.文章最后提供本事例的源代码下载

 

Test.java

 package org.zzp.mail.mine; 

public class Test { public static void main(String[] args) { MyMailSender m

6 9

java实现的简单密保卡功能

本文概要:使用java实现简单的密保卡功能:获取3个随机密保位,通过密保位获得密码.

这同样是今天笔试遇到的题目,一字没填..悲剧..

  1: package org.zzp.test;
  2: 
  3: import java.util.Random;
  4: 
  5: /**
  6:  * @author Tony 
  7:  * 本类实现动态密保卡功能 
  8:  */
  9: public class CodeCard {
 10:    private String letter = "ABCDEFGH";
 11:    private String[][] code = {
 12:          { "56", "56", "26", "89", "65", "35", "58", "69" },
 13:          { "59", "36", "22", "05", "59", "20", "56", "26" },
 14:          { "25", "39", "65", "89", "68", "57", "49", "52" },
 15:          { "56", "36", "29", "86", "59", "74", "59", "68" },
 16:          { "12", "30", "50", "26", "98", "20", "65", "20" },
 17:          { "12", "56", "95", "68", "26", "35", "16", "26" },
 18:          { "15", "26", "35", "16", "59", "35", "68", "95" },
 19:          { "11", "65", "98", "56", "26", "35", "26", "68" } };
 20: 
 21:    /**
 22:     * 输出密保卡矩阵
 23:     */
 24:    public void printCodeCard() {
 25:
System.out.println("-------输出密保卡矩阵---------");
 26:       for (int i = 0; i < 8; i++) {
 27:          for (int j = 0; j < 8; j++) {
 28:             System.out.print(code[i][j] + " ");
 29:          }
 30:          System.out.println();
 31:       }
 32:       System.out.println("-----------------------------");
 33:    }
 34: 
 35:    /**
 36:     * @return 随机获得的密保卡密保位
 37:     */
 38:    public String getTitle() {
 39:       String result = "";
 40:       Random rd = new Random();
 41:       for (int i = 0; i < 3; i++) {
 42:          int x = rd.nextInt(8);
 43:          int y = rd.nextInt(8);
 44:          char cx = letter.charAt(x);
 45:          y++;
 46:          result += cx;
 47:          result += y;
 48:       }
 49:       return result;
 50:    }
 51: 
 52:    /**
 53:     * @param title 密保位
 54:     * @return 密码
 55:     */
 56:    public String getCode(String title) {
 57:       String result = "";
 58:       title = title.toUpperCase();
 59:       int a1 = letter.indexOf(title.charAt(0));
 60:       int a2 = title.charAt(1) - 48 - 1;
 61:       int b1 = letter.indexOf(title.charAt(2));
 62:       int b2 = title.charAt(3) - 48 - 1;
 63:       int c1 = letter.indexOf(title.charAt(4));
 64:       int c2 = title.charAt(5) - 48 - 1;
 65:       String code_a = code[a1][a2];
 66:       String code_b = code[b1][b2];
 67:       String code_c = code[c1][c2];
 68: 
 69:       result = code_a + code_b + code_c;
 70: 
 71:       return result;
 72:    }
 73: 
 74:    public static void main(String[] args) {
 75:       CodeCard card = new CodeCard();
 76:       card.printCodeCard();
 77:       String title = card.getTitle();
 78:       String code = card.getCode(title);
 79:       System.out.println("密码位:" + title);
 80:       System.out.println("密码是:" + code);
 81:    }
 82: }

 

代码质量很差,将就着看看吧.

6 9

java中读取properties配置文件,并完成简单的加密解密

本文概要:读取properties文件,并对其中是值进行简单的加密,写入另一个文件.然后读取加密后的文件,进行解密操作.

这是今天去公司笔试的题目.

原题大概如下:

有一个properties文件,里面有若干个配置属性,现有一个接口, 

public interface Encode { 
    public void encode(String fileInputName,String fileOutputName) throws Exception; 
    public void decode(String fileInputName,String fileOutputName) throws Exception; 
}

encode方法功能:读取配置文件,把其中每项的值的每个字母ASCII码值+10,然后把密码后的配置文件写入fileOutputName文件中. 
decode方法功能与encode相反. 
写一个类实现这个接口,并写出main方法进行测试.

哎...悲剧的我压根儿就没用过properties文件,自然是不做啊,我直接用最原始的方法去读熟稔串进行解析的,感觉应该也没有错的.回来后在网上查了下. 
其实很简单.

6 9

java中字符与ASCII码值的转换

 本文概要:简单的介绍java中字符与ASCII码值的相互转换

今天去公司笔试,考了一道加密解密的题目,其实很简单,所有的字符ASCII码值+10即完成加密.

其实很简单,只需把char强制类型转换为int即得到了char的ASCII码值.

代码:

 

package org.zzp.test;

 

public class TestASCII {

public static void main(String[] args) {

...

 

6 9

java中操作properties属性文件的简单教程

java中常会用到properties文件作为配置文件,可以很容易的读取和设置,来对工程进行一些配置.
今天去公司笔试,考了这题,一点儿不会.我完全是按最原始的方法去读文件,写的.回来后在网上搜了下,感觉还是比较简单的,在这儿献个丑.

prop.properties文件

name=许嵩
age=21

TestProp.java文件

package org.zzp.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Properties;
public class TestProp {
   public static String get(String s){
      String result=null;
      try {
         result=new String(s.getBytes(”ISO_8859_1”),”UTF-8”);
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
      return result;
   }
   
   @SuppressWarnings(”unchecked”)
   public static void main(String[] args) {
      Properties prop=new Properties();
      try {
         FileInputStream fis=new FileInputStream(”prop.properties”);
         prop.load(fis);
         Enumeration names=prop.propertyNames();
         while(names.hasMoreElements()){
            String name=(String)names.nextElement();
            System.out.print(name);
            System.out.println(”:”+get(prop.getProperty(name)));
         }
         prop.put(”sex”, “”);
         prop.store(new FileOutputStream(”out.txt”), “commet”);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}
程序中,读取prop.properties文件,打印中其中的所有属性.然后增加了一个属性.再把配置写入到另一个文件中.
如果要修改其中一个属性的话,也很简单.只用prop.setProperty(“key”,”value”);就可以了
 

6 9

用java输出一个菱形

在学编程的循环语句时经常会遇到要输出一个特定规则图形的题目,不管是什么语言,几乎都有这样的题目.
今天去公司笔试,也遇到了这样的题目,写了好长时间,写出来了,考官也没有认真看,只是说出这道题只是考一下循环语句.
回来后我又试了下,写的程序有些问题,然后又小小改进了一下,可以了.
代码如下.

用java输出一个菱形

6 4

jsp中的自定义标签的简单教程

  今天去找工作,我说我用过jstl标签.然后他问我 有没有试过自定义标签.我说没有.后来他说他们会五天内通知我,让我回去准备一下.

上次我们班有个同学找工作,别人问个问题,他不会.回来也不管,结果去笔试又考了这个题….悲剧了.

这次我一定要吸取教训,把问过的几个问题都搞懂了.

先来看看自定义标签.

自定义标签使用方法

1、写一个类,继承TagSupport,这个类就是用来处理标签的.

类里主要有2个方法doStartTag()和doEndTag(),分别对开始闭合标签进行处理

2、写.tld标签文件

3、在web.xml中对tld文件进行配置

 

废话少说,直接看代码.下面写个显示当前时间的自定义标签

代码比较简单,大家一看就懂.

 

ShowTime.java

 

package org.zzp.tag;

 

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

 

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.TagSupport;

 

public class ShowTime extends TagSupport {

private static final long serialVersionUID = 3593807751447286551L;

 

@Override

public int doEndTag() throws JspException {

JspWriter out=pageContext.getOut();

Date date=new Date();

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

try {

out.println(sdf.format(date));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return super.doEndTag();

}

 

@Override

public int doStartTag() throws JspException {

return super.doStartTag();

}

}

 

 

MyTag.tld

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE taglib

PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.0</jsp-version>

<short-name>mytags</short-name>

<tag>

<name>time</name>

<tag-class>org.zzp.tag.ShowTime</tag-class>

</tag>

</taglib>

 


web.xml

<web-app>

 

<jsp-config>

<taglib>

<taglib-uri>/mytag</taglib-uri>

<taglib-location>/WEB-INF/MyTag.tld</taglib-location>

</taglib>

</jsp-config>

</web-app>

其中,taglib-location是tld文件的位置

 

tag.jsp

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@taglib prefix="mine" uri="/mytag" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<mine:time></mine:time>

</body>

</html>

 

 

 

 

5 25

c#与java运行效率的不科学测试

计算从1到1亿的和  得到所用时间

 

t.cs

  1: using System;
  2: 
  3: public class T{
  4:     public static void Main(){
  5:         long a=0;
  6:         DateTime   dt1   =   new   DateTime(1970,1,1); 
  7:         TimeSpan   ts1   =   DateTime.Now-   dt1;
  8:         long start=(long)ts1.TotalMilliseconds;
  9:         for(long i=0;i<=100000000;i++){
 10:             a+=i;
 11:         }
 12:         TimeSpan ts2=DateTime.Now-dt1;
 13:         long end=(long)ts2.TotalMilliseconds;
 14:         Console.WriteLine("a={0}",a);
 15:         Console.WriteLine("start={0}",start);
 16:         Console.WriteLine("ent={0}",end);
 17:         Console.WriteLine(start-end);
 18:     }
 19: }

 

T.java

  1: public class T{
  2:     public static void main(String[] args){
  3:         long a=0;
  4:         long start=System.currentTimeMillis();
  5:         for(long i=0;i<=100000000;i++){
  6:             a+=i;
  7:         }
  8:         long end=System.currentTimeMillis();
  9:         System.out.println("a="+a);
 10:         System.out.println("start="+start);
 11:         System.out.println("end="+end);
 12:         System.out.println(start-end);
 13:     }
 14: }

 

 

运行结果完全出乎我的意料

C:\Users\tony\Desktop>java T
a=5000000050000000
start=1274768647386
end=1274768647780
-394

C:\Users\tony\Desktop>t
a=5000000050000000
start=1274797449194
ent=1274797449954
-760

 

为什么 c#效率还不如java呢?。。  可能测试有问题吧。

刚开始学 c# xna

不要打击我啊 让我有信心学下去吧。。。。


5 18

在使用豆瓣api时网址里含有汉字,显示wrong encoding错误

在用java做豆瓣api应用时,发现一个问题,在搜索的时候,关键字里只能有数字和英文,含有汉字的话会出异常。 大家可以试试这个网址   http://api.douban.com/music/subjects?q=许嵩&start-index=1     用chrome可以正常打开,但ie和firefox都无法打开 。显示  wrong encoding.。。在这里深深赞chrome一个。 现在知道错误在哪儿 就好办了。 我开

5 11

在java中使用dom4j解析带冒号节点的xml文件

闲了无聊试试用java搞一个豆瓣的api,一直以为我对dom4j还算有些了解,一般的xml解析应用都还成的。结果,才发现连解析都还没学好。遇到个带冒号的节点,不会搞了。

类似这样



居然不会弄了。
用root.element(“db:uid”)取出来的总是null

在网上搜出来的文章都是你抄我,我抄你。都郁闷死了。

4 23

java关于文件操作的基本知识Demo

import java.io.*;
import java.util.*;
import java.io.File;
public class file {
    public static void main (String[] args) {
        String path="C:\\Users\\Administrator\\Desktop";
       File desktop=new File(path);
     System.out.println(desktop.getName()+"是目录:"+desktop.isDirectory());
        File test=new File(desktop,"test");
        System.out.println(test.getName()+"是目录:"+test.isDirectory());
      System.out.println(test.getName()+"是文件:"+test.isFile());
       System.out.println("test.path:"+test.getAbsolutePath());
       try{test.mkdir();}catch(Exception e){System.out.println(e.toString());}
      System.out.println(test.getName()+"是目录:"+test.isDirectory());
      System.out.println(test.getName()+"是文件:"+test.isFile());
       System.out.println("test.path:"+test.getAbsolutePath());
       for(int i=0;i<desktop.list().length;i++){
         System.out.println(desktop.list()[i]);
       }
        File text=new File(test,"text.txt");
       try{text.createNewFile();}catch(Exception e){System.out.println(e.toString());}
      System.out.println(text.getAbsolutePath());
      
     System.out.println(text.getName()+"是目录:"+text.isDirectory());
      System.out.println(text.getName()+"是文件:"+text.isFile());
   }
}