java基础
文章平均质量分 76
shizhan1881
这个作者很懒,什么都没留下…
展开
-
关于使用iterator修改元素的值
import java.util.Collection;import java.util.HashSet;import java.util.Iterator;class Book{ private String name; public Book(String name) { super(); this.name = name; } public String get原创 2012-05-29 15:25:38 · 9271 阅读 · 0 评论 -
jdbc连接oracle 11g
oracle jdbc 驱动在oracle安装文件下都有,本人的驱动是在E:\oracle\product\11.1.0\db_1\jdbc\lib下,有 5的代表jdk 5.0的,6代表jdk 6.0的。其实驱动的含义是一些实现类。我们知道jdbc有统一的api可以操作不同的数据库,达到跨数据库的功能,可是sun公司是怎么做到的呢? 其实我们正常用到的只是一些接口中的函数,而真正原创 2012-07-18 19:16:10 · 4674 阅读 · 5 评论 -
oracle jdbc 存入图片
oracle中的blob类型,支持大型数据,可以存储最大4g的文件。 在java中blob类型为java.sql.Blob,oracle为oracle.sql.BLOB。 我们可以通过ResultSet的getBlob()方法获取blob类型的数据。 下面演示一遍存储图片的过程,先创建一个存储图片的表: create table T_IMAGE (原创 2012-07-18 19:49:03 · 1112 阅读 · 0 评论 -
jdbc 可更新结果集
jdbc中ResultSet在jdk 5.0以后默认都是可滚动的,不可更新的。可滚动的意思是我们可以调用absolute(),previous(), first()等操作来更新结果集中的指针位置。 当我们需要结果集可更新的时候,可以设置它的值为ResultSet.CONCUR_UPDATABLE,默认是ResultSet.CONCUR_READ_ONLY。 当我们在连接的是o原创 2012-07-19 11:06:24 · 964 阅读 · 0 评论 -
jdbc调用oracle 存储过程
先在oracle中创建一个存储过程 create or replace procedure test(first in number ,two in number ,result out number ,countnum in out number )asbegin if(first>two) then result:=first; elsif(first原创 2012-07-19 10:24:35 · 759 阅读 · 0 评论 -
创建头像下拉列表
HashMap getIcons() { //返回一个Map, key是文件的路径 File folder = new File("images/heads"); File[] files = folder.listFiles(); HashMap heads = new HashMap(); for (int i = 0; i < files.le原创 2012-04-25 12:19:58 · 1125 阅读 · 0 评论 -
cp30数据库连接池封装类
package com.shizhan.util;import java.io.IOException;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import com.mchange.v2.c3p0.D转载 2012-07-30 19:21:04 · 1194 阅读 · 0 评论 -
Eclipse快捷键大全(转载)
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对原创 2012-10-30 11:27:42 · 476 阅读 · 0 评论 -
String StringBuffer StringBuilder 三者的区别
String是固定长度的字符串,如果要发生变化必须重新生成新的实例;String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 而如果是使用 StringBuffer 类则结果就不一样了,每次结果转载 2012-10-26 13:38:08 · 415 阅读 · 0 评论 -
map缓存
有时候需要将一批数据缓存,并且按照最近最少使用的规则淘汰。这时候就应该想到LRUMap。LRUMap是一种尺寸固定的Map,当它的容量达到最大时采用最近最少使用的规则淘汰相应的元素。 LRUMap cache = newLRUMap(5); cache.put("01", "news 1"); cache.put("02", "news 2");原创 2012-11-14 10:44:13 · 1051 阅读 · 0 评论 -
javassist:增强型的java反射工具,获取方法参数名,获取方法参数标注值
java的反射是不能获取方法的参数名的。比如:public String concatString(String param1,String param2){return param1+param2;}想获取"param1",和"param2"这个参数名,貌似是不行的。借助第三方包javaassist就可以获得。1 public static v转载 2012-11-15 12:24:49 · 2614 阅读 · 0 评论 -
利用Javassist 实现动态代理
一提到jdk中的java.lang.reflect.Proxy,用过spring,hibernate等框架的人应该都有所了解,对!就是动态代理。AOP - 面向切面编程 - 就是基于动态代理实现的。平日里项目中用spring aop框架进行日志拦截和声明式事务处理确实很方便好用,从另一种角度将代码解耦,极大的提高了代码的灵活性和可扩展性,在获益的同时我们不得不惊叹aop框架的神奇,但是原创 2012-11-15 15:33:11 · 1957 阅读 · 1 评论 -
一个简单的线程池实现(java版)
线程池代码import java.util.List;import java.util.Vector;public class ThreadPool { private static ThreadPool instance_ = null; //定义优先级别常数,空闲的线程按照优先级不同分别存放在三个vector中 public static fi转载 2013-01-26 11:15:03 · 611 阅读 · 0 评论 -
jdbc获取oracle表字段相关信息
DatabaseMetaData databaseMetaData = conn.getMetaData(); //获取所有表 ResultSet tableSet = databaseMetaData.getTables(null, "%", "%", new String[]{"TABLE"}); //获取tableN原创 2013-08-14 20:00:51 · 1937 阅读 · 0 评论 -
备注一份简单的ant脚本
自动编译打包脚本 Building ... basedir: ${basedir} ========================原创 2017-05-07 16:11:01 · 375 阅读 · 0 评论 -
nginx配置wss和https
upstream www.newrichman.com { server 域名:5001 weight=1; } server { listen 443 ssl http2; server_name localhost; ssl_certificate full_chain.pem; ssl_...原创 2018-03-16 14:09:13 · 5009 阅读 · 0 评论 -
利用synchronized实现多线程同步
多线程编程带来便利性的同时,也给我们的编程带来了难度,因为多线程的执行具有随机性,当多个线程对共享资源操作时,就很容易引发问题。 下面模拟了一个取钱的线程,当两个取钱的线程对同一个账户进行操作时,我们就会发现异常。 下面是代码: public class TestSyn { public static void main(String[]原创 2012-06-03 09:55:35 · 8078 阅读 · 0 评论 -
Java六大必须理解的问题
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。问题一:我声明了什么!String s = "Hello world!";许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello w转载 2012-06-13 18:41:56 · 544 阅读 · 0 评论 -
Set的使用
java中的set是一种不可重复,无序的集合。主要有HashSet,TreeSet,和EnumSet。其中HashSet最为经常使用。 HashSet 当试图向hashset中加入元素时,hashset首先会计算元素的hashcode值,并且判断该元素是否和其他对象相等(相等的标准是用equals方法比较相等,且hashcode值相等,两项中的一项不相等,即认为不相等)。如原创 2012-05-29 15:09:35 · 727 阅读 · 0 评论 -
利用callable实现多线程
之前我们可以利用Thread(Runnable target)构造函数,传入一个实现了Runnable接口的类的对象来构造线程,可是Runnable中的线程执行体只能是run方法,且没有返回值,也不能抛出异常。那么有没有其他方法可以传入其他的代码块,而不需要限制成run方法呢,这时候我们可以利用Callable接口来实现。 实现了Callable接口的类中可以定义call方法作原创 2012-06-03 09:32:59 · 779 阅读 · 0 评论 -
利用lock实现多线程同步
我们不仅可以使用synchronized来实现多线程同步,还可以通过创建锁对象来实现多线程的同步,还是上次模拟取现的操作,这次利用lock对象实现同步,下面是代码: import java.util.concurrent.locks.ReentrantLock;public class TestSyn { public static void main(String[]原创 2012-06-03 10:00:35 · 7620 阅读 · 0 评论 -
线程的join方法
线程有join方法,当线程1调用线程2的join方法时,线程1必须等待线程2执行完毕,线程1才能继续往下执行。join方法主要用来将大问题分解成小问题,当小问题计算完成时,大问题才能继续往下执行,这时候我们就可以利用join方法了。下面演示了一下线程的join方法。 public class TestJoin { public static void main(String[] ar原创 2012-06-03 10:15:44 · 2505 阅读 · 1 评论 -
后台线程
有一种线程运行在后台,主要为其他线程服务,java的垃圾回收器就是典型的后台线程。后台线程又叫做守护线程或者精灵线程。 后台线程有一个特征就是:如果其他线程都死亡了的话,那么后台线程也会自动消亡,不管其执行的任务完成与否。 我们可以通过setDaemon函数设置某个线程为后台线程,设置必须在start方法之前,否则会引发非法线程状态异常。 下面模拟一个线程1原创 2012-06-03 10:31:16 · 1411 阅读 · 0 评论 -
线程的协调工作
学习操作系统的时候,有碰到生产者和消费者问题,生产者往单个缓冲区中送产品,只有等消费者消费完了,才能继续往缓冲区中添加产品。消费者消费缓冲区中的产品,只有缓冲区中有产品,他才能消费。 java中的 Object类有三个方法,wait(),notify(),notifyAll()。我们可以利用者三个方法实现线程的协调工作。这三个方法必须有同步监视器调用,否则会产生错误。 wai原创 2012-06-03 15:19:53 · 719 阅读 · 0 评论 -
使用Condition控制线程协调工作
我们可以使用wait等操作控制线程协调工作,可是当我们的代码中没有同步监视器的时候,上述的办法就不能使用了。比如我们使用的lock对象来控制线程的同步。 lock中提供了Condition来让我们可以方便的控制线程协调工作。例如上述的取钱,存钱的例子,我们可以获得两个条件变量,获取的方法是lock.newCondition(); 对于上述例子,我们创建Condition notw原创 2012-06-03 16:02:25 · 612 阅读 · 0 评论 -
基本数据类型
下面是一些使用基本类型时需要注意的事项: 1:整数默认为int型, long l = 23333333333 ; 所以 23333333333虽然在long的表示范围内,但是默认为int型,所以编译器会提示超出范围提示,必须显示的加上L,即必须定义成long l = 23333333333L。 2:可以将一个较小的整数直接付给byte或者short型。即byt原创 2012-05-23 23:02:09 · 514 阅读 · 0 评论 -
线程让步Yield
线程让步和sleep方法不一样,调用sleep方法之后,线程是进入阻塞状态,而调用yield方法,线程是回到就绪状态,处理器重新分配执行权。只有其他处理器的优先级大于或者等于让步的线程,其才能得到执行的权限。完全可能的是当前线程调用让步方法之后,他还能得到处理器执行的权限,比如没有其他线程的优先级比他高,下面的代码演示了这一点。 class YieldThread extends Thr原创 2012-06-03 10:52:33 · 736 阅读 · 0 评论 -
Junit4 新功能学习总结
1.Junit4 标注总结2.测试方法总结3.assertThat语句的基本使用该语句是代替原来的断言语句,以一种可读性更强的形式呈现断言。使用时,注意导入:(Eclipse某些版本不能自动导入)import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers原创 2012-06-13 15:40:08 · 688 阅读 · 0 评论 -
Java堆内存的10个要点
导读:对于程序员来说,知道堆空间,设置堆空间,处理堆空间的outOfMemoryError错误,分析heap dump是非常重要的。文中介绍了Java堆的学习教程以及Java堆内存(heap memory)的十个要点。文章内容如下:我刚开始学习Java编程时,可不知道什么是堆内存或堆空间(heap space),甚至根本不管对象创建时都放在哪里去了。正式了写一些程序后,经常会遇到java.转载 2012-06-12 22:53:44 · 385 阅读 · 0 评论 -
对象与垃圾回收
java中的对象有三种状态,1:激活,2:去活,3:死亡。当一个对象有一个或者多个对象引用时,他处于激活状态。当一个对象没有引用指向他时,他将变成去活状态。当一个对象处于去活状态时,系统垃圾回收器准备回收该对象时,会先调用该对象的finalize方法,如果finalize方法中,该对象没有被重新引用,那么他将变成死亡状态,如果有其他引用,他重新变成激活状态。死亡状态:当对象没有被其他对象引用,且已原创 2012-05-23 21:36:55 · 770 阅读 · 0 评论 -
集合使用注意事项
使用iterator遍历集合中的元素时候,不能修改集合中的元素,否则会引发java.util.ConcurrentModificationException异常。这是因为Iterator使用快速失败机制,一旦检测到集合中的元素被修改,将引发ConcurrentModificationException异常。 这个异常在使用多线程时尤其得注意,一个线程访问迭代器中的元素,另外一个线程修改原创 2012-05-25 08:58:19 · 704 阅读 · 0 评论 -
java UDP编程
java中进行udp通信时,提供了DatagramSocket这个类。 要发送数据时,只需要构造一个DatagramPacket,里面填充要发送的数据和发送的目的地和端口号。DatagramPacket有如下构造函数:DatagramPacket(byte[] buf, int offset, int length,InetAddress address, int port);原创 2012-04-17 22:28:45 · 890 阅读 · 0 评论 -
对象的四种引用状态
java中对象有四种引用方式,强引用,软引用,弱引用,虚引用。 强引用就是我们正常通过new创建的对象,当他处于激活状态时,不可能被垃圾回收器回收。 软引用,通过SoftReference类来实现。当一个对象只具有软引用时,当系统内存充足时,他可能不会被垃圾回收器回收,当系统内存不足,他会被垃圾回收器回收。 弱引用,通过WeakReference类来实现。他和软引原创 2012-05-23 22:09:52 · 715 阅读 · 0 评论 -
Java程序员面试中的多线程问题
很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的。这篇文章收集了 Java 线程方面一些典型的问题,这些问题经常被高级工程师所问到。0.Java 中多线程同步是什么?在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个 Java 线程在修改一个共享变量时,另外转载 2012-06-12 22:46:28 · 431 阅读 · 0 评论 -
Tomcat配置https及访问http自动跳转至https
https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。htt...转载 2018-03-16 14:13:36 · 913 阅读 · 0 评论