java
文章平均质量分 69
六道木_
菜鸟一名~~
展开
-
反射机制的一个小实例
这两天看了别人写的一个框架的代码, 其中用到了反射机制来调用不同的方法, 自己也对这个不太熟悉, 所以就学习了一下用法, 仿造了那个代码做了一个小实例, 主要是用到struts的知识1. 首先是jsp页面. 页面由两个链接组成 method1 method2 两个链接都用同一个Action来处理, 但是用method参数来区分不同的处理方法2原创 2014-12-10 06:53:35 · 633 阅读 · 0 评论 -
Java Timer类小结
Timer类可以定期或指定时间来执行一些任务,它是线程安全的,下面简单介绍下主要的几个方法如下// 在delay毫秒后执行一个任务public void schedule(TimerTask task, long delay) { //....}// 在time时刻执行一个public void schedule(TimerTask task, Date time) { //原创 2015-11-13 10:35:25 · 367 阅读 · 0 评论 -
使用Java的Properties类读取.properties文件
java.util.Properties这个类使用非常简单,可以用来读取项目中的.properties配置文件,下面介绍一下 首先是我的config.properties文件,放在src下面name1=value1name2=value2name3=value3name4=value4 public static void main(String[] args) th原创 2015-11-15 15:34:31 · 446 阅读 · 0 评论 -
Ehcache(1)
Ehcache是一个Java的缓存框架,当应用需要使用到缓存的时候,可以使用,它的操作也方便,下面介绍一下它的用法一.CacheManager 1.配置文件 2.cacheManager CacheManager,顾名思义,是用来管理Cache的,每个CacheManager可以对应多个Cache,所以第一步是获取一个CacheManager的对象,C原创 2015-11-23 12:49:10 · 373 阅读 · 0 评论 -
Java压缩文件
使用Java来压缩文件,主要用到2个类,一个是java.util.zip.ZipEntry一个是java.util.zip.ZipOutputStream,用的是Java自带的压缩类,自带的类不能设置编码,有时会出现乱码的现象,所以可以使用apache的压缩类,它的可以设置编码,由于用法差不多,所以这里讲的是Java自带的 ZipOutputStream:代表了一个zip格式的输出流,操原创 2015-11-25 13:26:58 · 647 阅读 · 0 评论 -
Java多线程之----CountDownLatch
有时候,会遇到这样一种情况,有多个任务,有一个主要任务需要等待其他子任务完成之后,才可以进行 而多线程中的CountDownLatch则提供了这样的功能,在初始化的时候,可以指定一个计数器,在每个子线程完成任务的时候减一,等到计数器为0的时候,那么,主线程才会进行 有这样的情景:要进行一次会议,会议要等到所有人都到齐了才可以开始,看下代码public class Count原创 2015-12-14 14:15:28 · 530 阅读 · 0 评论 -
Java多线程之----CyclicBarrier
CyclicBarrier可以实现多个线程互相的等待,当每个线程到达某个点的时候,会阻塞直到所有的线程都完成之后,才继续执行 CyclicBarrier和上次介绍的CountDownLatch有点类似,但是也有不同,主要不同点如下:CyclicBarrier是多个线程互相等待,CountDownLatch是一个线程等待多个线程CyclicBarrier可以重复使用,而Coun原创 2015-12-16 20:06:53 · 475 阅读 · 1 评论 -
Java多线程之----Phaser
Phaser类的功能和CyclicBarrier、CountDownLatch的有很多类似的地方,例如线程互相等待,等待某个线程完成再进行其他任务,这在Phaser都可以实现,而Phaser却更加的灵活,因为它可以动态的注册线程数量,取消注册数量,这可以给我们带来更多的控制。 Phaser有几个重要的方法: 1.arrive:该方法简单的说就是记录到达的线程数,有点像C原创 2015-12-17 16:18:57 · 695 阅读 · 0 评论 -
课程设计的总结1
最近一个多月都在忙期末考试,所以都没发什么文章,考完后又要进行JSP的课程设计,在这次的课程设计中也看到了不足也学到了东西,待我慢慢回想,再列出来这次做的是一个网上论坛,两天多的作品,难免粗糙(不求分数,只求过)。其中对模块和数据的分析没有去做,是在图书馆中参考了一本书,底层的数据库操作和数据库的表都是参照上面的,我负责页面的显示和servlet中的处理,以及在页面上用了点CSS。而没用到多少原创 2015-01-21 19:52:02 · 1773 阅读 · 0 评论 -
Ehcache(2)
二.配置文件ehcache.xml 首先,我们需要一个配置文件ehcache.xml(名字可以改变),主要内容如下 这是根节点的两个标签,我们配置的内容在这里面,主要介绍一下几个常用标签 1.diskStore 指定磁盘的存储路径 2.defaultCache 默认的cache配置,如果创建了一个没有指定属性的ca原创 2015-11-25 12:55:18 · 486 阅读 · 0 评论 -
集合源码分析----ConcurrentHashMap
本文基于JDK1.7分析先大概讲下ConcurrentHashMap的原理:1.ConcurrentHashMap内部分成了很多段,每段叫一个Segment,每个Segment里都是一个类似HashMap的结构2.每次写操作都只对其中一个Segment进行加锁操作,所以线程安全且性能高ConcurrentHashMap内部主要结构final Segment[]原创 2016-10-22 16:21:15 · 338 阅读 · 0 评论 -
源码分析----ReentrantLock实现和AbstractQueuedSynchronizer
ReentrantLock有公平锁和非公平锁,默认是非公平锁,而其加锁的解锁的操作其实都是依赖于某个内部对象public class ReentrantLock implements Lock, java.io.Serializable { private final Sync sync; abstract static class Sync extends AbstractQueuedSy...原创 2016-10-23 13:18:04 · 352 阅读 · 0 评论 -
Java源码分析----ReentrantLock实现和AbstractQueuedSynchronizer
很久之前写了一篇AQS的实现,最近又在复习这一块内容,有了更深的理解,本来想编辑一下之前的内容,但是当时用的不是MarkDown,乱得不行,所以重新写一篇Java并发包下很多组件的基础都是AQS,例如ReentrantLock,CountDownLatch等等,只要明白了AQS的原理,其他的基本可以理解,那么就从ReentrantLock为例,进行分析AQS中有个state的状态,以Loc...原创 2018-03-11 17:15:19 · 136 阅读 · 0 评论 -
使用java的File类遍历文件夹,打印树状结构(递归实现)
无聊的时候写的,使用了File的listFiles方法来实现,先记下,以后要用的时候可以用,程序比较简单,直接上代码public class Test { public static void main(String[] args) throws IOException { File f = new File("F:/test"); File[] files = f.listFile原创 2015-11-12 16:13:52 · 3644 阅读 · 0 评论 -
Spring集成Quartz定时任务框架介绍和Cron表达式详解
原文出自http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常转载 2015-11-13 11:10:17 · 385 阅读 · 0 评论 -
.Class, Class.forName, .getClass()的区别
本来是在学习反射机制的, 可是看到其中有用到Class.forName, 自己对这个也不太熟悉, 于是就先补补这方面的知识.Class和Class.forName是编译时决定, 而.getClass()是运行时决定.Class: JVM将使用类的类装载器, 将类装入内存(前提是:类还没有装入内存),不对类做类的初始化工作.返回类的Class的对象(转, 不是很懂).getCla原创 2014-12-11 06:59:35 · 1622 阅读 · 1 评论 -
java后台构造easyui的tree数据的一种方法
最近在用easyui做一个权限管理系统,需要用到tree,后台构造json数据的时候总是不能很好的适应各种情况,于是上网看了很多的例子,有几个能用,效率也比自己写的高,然后再加上自己的的业务需求改写了一部分,就变成下面的代码了 public List getResource(Connection conn, StringBuffer sql,String id,String type)原创 2015-02-11 08:56:32 · 3422 阅读 · 0 评论 -
java利用极光推送进行推送的代码
今天学了推送的相关知识,记录下,以免忘记 1.所有平台 PushPayload payload = PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.alias("alias")) .setNo原创 2015-01-22 20:43:08 · 2854 阅读 · 0 评论 -
java的File类的renameTo注意点
renameTo作用是文件改名,参数是File类的一个对象,但是这个方法不是一定成功的,有几点需要注意的地方假如原来的名字为a.txt,需要改名为b.txt,则有如下情况 1. a.txt存在且b.txt不存在的时候renameTo成功 public static void main(String[] args) throws IOException { File f1 =原创 2015-02-28 09:25:22 · 3021 阅读 · 0 评论 -
struts2注解总结----@Action和@Result
除了使用配置文件配置之外,还可以使用注解来配置,下面主要介绍一下配置首先介绍一些常用的注解介绍:@Action/@Actions:@Action指定一个类为action,对应配置文件中的....标签,其中可以配置如下属性results:配置返回的结果集属性,相当于struts2中的列表,可以在{}中配置属性,具体如下value:配置action的名字,相当于中的name原创 2015-03-19 07:14:50 · 4249 阅读 · 0 评论 -
java动态代理的使用
由于动态代理是针对接口的,所以首先需要声明一个接口,该测试接口如下所示public interface TestI { void test();}有了接口,就要有实现类,实现类如下所示public class TestImpl implements TestI { @Override public void test() { System.out.printl原创 2015-03-09 08:21:47 · 476 阅读 · 0 评论 -
struts2注解总结----@InterceptorRef
写在前面:本文主要讲的是注解方式的拦截器的使用,所以xml文件的不会细讲,文中的代码也比较简单,没有什么权限控制啊,拦截信息之类的代码,重点还是说明注解方式的使用方法,了解了使用方法之后,内容可以自行扩展,这个根据自己的需要来,好了,就这样。上次写了@Action和@Result两种注解的使用方式,这次要讲的是@Interceptor和@ParentPackage介绍:原创 2015-03-21 09:33:21 · 9414 阅读 · 0 评论 -
反射机制总结----Field
反射机制非常有用,在运行的时候能获取我们需要的信息,下面就Field进行介绍FieldField,顾名思义,就是和字段有关的,没错,这个类可以帮助我们获取类里面和成员变量有关的信息如果我们要获取一个类中的成员变量信息,那么,首先我们需要获取这个类的class对象(获取class方法)Class clazz = TestReflect.class;接着我们就可以利用clazz来得到F原创 2015-04-04 16:42:53 · 600 阅读 · 0 评论 -
最近使用Spring的一点总结
最近在看spring的参考文档,巩固一下spring的知识,顺便修改一下之前那个Spring和Stuts2整合的系统,以下是遇到的问题和在之间学到的东西一 Spring的作用域问题默认情况下,spring会将其管理的bean设置为单例的模式,也就是我们在使用的时候,除非使用@Scope注解或者在xml配置文件中更改其值,否则都是同一个对象,单例模式下,会在服务器开启加载的时候就创建完毕,后原创 2015-04-22 18:23:28 · 436 阅读 · 0 评论 -
java使用Field实现通用数据库操作
上次介绍了Field,可以其可以在运行时候获取类中的信息,这是个好东西,我们可以用它来实现数据库的增删改查操作当然,需要有一些限制:1.表和实体类字段要对应2.表和实体类名字要对应3.实体类的第一个字段必须是主键(这个主要在更新的时候用到,具体根据个人情况而定)数据库操作类如下public class ReflectDao { private static String原创 2015-04-06 09:18:57 · 1642 阅读 · 0 评论 -
获取运行时泛型的实际类型
用到的就是下面的这条语句Class clazz = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]下面通过一个例子来解释这是什么意思先看父类public class Father { public Father() { // 获取父类的T原创 2015-05-12 21:09:03 · 2802 阅读 · 0 评论 -
图片的base64编解码
public static void main(String[] args) throws IOException { String strImg = GetImageStr(); GenerateImage(strImg); } public static String GetImageStr() {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 Stri转载 2015-09-12 18:23:49 · 1039 阅读 · 0 评论 -
使用ImageIO来获取图片宽高度
public static void main(String[] args) throws IOException { File file = new File("F:\\111.jpg"); FileInputStream in = new FileInputStream(file); BufferedImage bi = ImageIO.read(in);// 通过ImageIO读原创 2015-09-12 18:21:09 · 3073 阅读 · 0 评论 -
Java源码分析----Future
一般使用多线程操作的时候会使用Thread+Runnable进行处理,但是这种方式中,Runnable是没有返回值的,假设我们需要获取Runnable的返回值,可能需要如下特殊处理,伪代码如下String returnValue1 = "";String returnValue2 = "";CountDownLatch cdl = ....new Thread(()->{ /...原创 2018-12-28 16:53:29 · 235 阅读 · 0 评论