Java/C++
文章平均质量分 75
小小程序员1986
这个作者很懒,什么都没留下…
展开
-
CountDownLatch的使用(倒计时计数器)
countDown()将计数器减一await()等待计数器值为0,当到达0时所有等待者开始执行import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CountdownLa转载 2016-08-28 14:06:56 · 540 阅读 · 0 评论 -
java读取Excel文件
只能读取97-2003的文件格式xls, 不支持xlsx格式import java.io.File;import jxl.*;public class ExcelUtils { public static void main(String[] args) { try { Workbook book = Workbook.getWorkboo原创 2016-08-28 14:04:37 · 435 阅读 · 0 评论 -
多线程同步基础
主线程执行完要等待其他线程执行完,才退出虚拟机主线程执行完需要让其他线程也结束,可设置为守护线程,守护线程必须在线程启动前开启实现方式和继承方式的区别:实现方式好处避免了但继承的局限性(不能继承其他类,只能继承Thread类)定义线程时,建议使用实现方式。两种方式区别:继承Thread:线程代码存放Thread子类的run方法中实现Runnable:线程代码存放接口子类的run方法中同步的前提:1原创 2016-08-28 14:04:31 · 488 阅读 · 0 评论 -
反射给没有set方法的属性赋值
public class Test {private String readOnly;public String getReadOnly() { return readOnly;}public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgument原创 2016-08-28 14:03:40 · 3704 阅读 · 1 评论 -
分页框架(Pager-taglib)的使用
页面中引入分页框架 参考文章:http://www.sxt.cn/info-3160-u-324.html源码见附件:本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1695450原创 2016-08-28 14:03:37 · 466 阅读 · 0 评论 -
服务器端实现文件下载功能代码
package com.cn;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputS原创 2016-08-28 14:03:31 · 2296 阅读 · 0 评论 -
Hibernate 动态表名映射(数据库分表) NamingStrategy
NamingStrategy接口很有意思,可以作为业务类规范和数据库表规范的桥梁,例如一个数据对象User,对应数据库表是T_USER,如果所有映射关系都是这样的情况,可以使用NamingStrategy做为一个桥梁衔接,当然你也可以在hbx.xml配置文件中指定class对应的table. hibernate.cfg.xml代码就省略了... User.hbx.xml代码原创 2016-08-28 14:03:28 · 3910 阅读 · 1 评论 -
java多线程通信之共享数据
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/76/7F/wKiom1ZU_pmwHfbWAACtviSDEcQ100.png" title="捕获.PNG" alt="wKiom1ZU_pmwHfbWAACtviSDEcQ100.png" />(1)当访问共同的代码的时候:可以使用同一个Runnable对象,这个Runnabl原创 2016-08-28 14:03:22 · 424 阅读 · 0 评论 -
java中文所占字节数
java是unicode编码 所以都是2个字节而操作系统啥的 默认的是GBK 这也是2个字节网络上用的是UTF-8又叫万国码 这是所有编码集的超集,中文是3个字节本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1693392原创 2016-08-28 14:03:20 · 350 阅读 · 0 评论 -
runtime.exec()
Processexec(String command) 在单独的进程中执行指定的字符串命令。 Processexec(String[] cmdarray) 在单独的进程中执行指定命令和变量。 Processexec(String[] cmdarray, String[] envp) 在指定环境的独立进程中执行指定命令和变量。 Proce原创 2016-08-28 14:04:39 · 1029 阅读 · 0 评论 -
java中long和Long的区别
double是原始数据类型,Double是封装数据类型double没有方法,Double有自己的属性和方法double只创建引用,Double创建对象集合类不能存放double,只能存放Doubledouble存放在栈中,Double存放在堆中栈的存取速度要高于堆,另外栈中的数据可以共享如:double a = 0;double b = 0;不会创建对象,只会建立两个引用,同时指向变量“0”(栈数转载 2016-08-28 14:04:53 · 485 阅读 · 0 评论 -
服务器和前台采用JSON通讯
封装实体类(服务器返回信息都存放在该实体中)package com.chinaseacom.store.common;public class ResponseBody { public static final int CODE_SUCCESS=1; public static final int CODE_FAIL=0; private int code=1; //0原创 2016-08-28 14:05:10 · 707 阅读 · 0 评论 -
CyclicBarrier的用法
多个线程在指定的集合点(屏障点)等待集合后在继续去下一个集合点import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CyclicBarrierTest { pu原创 2016-08-28 14:06:53 · 431 阅读 · 0 评论 -
Semaphore维护当前访问自身的线程个数
可以实现流量控制,同时访问文件的用户数import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class SemaphoreTest { public static void main(原创 2016-08-28 14:06:50 · 566 阅读 · 0 评论 -
Lock&Condition实现线程同步通信
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ConditionCommunication { final Business business原创 2016-08-28 14:06:47 · 351 阅读 · 0 评论 -
读写锁和缓存类实现
提高性能读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的,我们只需要上好相应的锁即可。如果代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁。import java.util.Random;import java.util.concurrent.l原创 2016-08-28 14:06:44 · 725 阅读 · 0 评论 -
线程池Executors
3个线程的线程池提交10个任务import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class ThreadPoolTest { pub原创 2016-08-28 14:06:42 · 397 阅读 · 0 评论 -
ThreadLocal线程范围内的共享变量
数据库connection和strut2每个请求用到ThreadLocalimport java.util.Random;public class ThreadLocalTest { private static ThreadLocal x = new ThreadLocal(); /* * private static ThreadLocal myThreadSc原创 2016-08-28 14:06:39 · 447 阅读 · 0 评论 -
子线程和主线程业务依次执行循环50次
子线程业务:循环10次主线程业务:循环20次这两个循环(业务)需要交替执行共50次要用到共同数据的(包括同步锁)或共同算法(加密解密)的若干个方法应该归在同一个类上,这种设计正好体现了高内聚和程序的健壮性 while (bShouldSub) { try { this.wait(); } cat原创 2016-08-28 14:06:36 · 586 阅读 · 0 评论 -
传统定时器使用
2s后打印 接着4s后打印 再接着2s后打印 再接着4s后打印如此循环import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TraditionalTimerTest { static int count=0; public static void main原创 2016-08-28 14:06:33 · 422 阅读 · 0 评论 -
java 多线程通信之管道流
/* 管道流:PipedInputStreamvoid connect(PipedOutputStream src) 使此管道输入流连接到管道输出流 srcPipedOutputStreamvoid connect(PipedInputStream snk) 在JDK我们看到PipedInputStream中有管道缓冲区,用来接收数据管道流内部在实现时还有大量的对同步数据原创 2016-08-28 14:03:17 · 1762 阅读 · 0 评论 -
Iterator remove()详解
一、Iterator的API 关于Iterator主要有三个方法:hasNext()、next()、remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移,返回该指针所指向的元素 remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素二、迭代器原理 650原创 2016-08-28 14:03:14 · 5266 阅读 · 0 评论 -
BigDecimal代替浮点数精确计算用法简介
浮点数浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一原创 2016-08-28 14:03:03 · 480 阅读 · 0 评论 -
volatile关键字
锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量可能是修原创 2016-08-28 13:58:18 · 331 阅读 · 0 评论 -
JVM的内存区域划分
上几张图650) this.width=650;" title="3e46535353.png" alt="wKiom1VuydPQBsWDAAHDDun3aE4755.jpg" src="http://s3.51cto.com/wyfs02/M02/6D/EA/wKiom1VuydPQBsWDAAHDDun3aE4755.jpg" />650) this.width=650;" title="2原创 2016-08-28 13:58:15 · 470 阅读 · 0 评论 -
java回调函数
在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就称为回调。 在Java里面,我们使用接口来实现回调。 所谓的回调,就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。下面是例子。原创 2016-08-28 13:58:13 · 356 阅读 · 0 评论 -
IoC 控制反转
控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。控制反转(IOC)模式(又称DI:Dependency Injection)就是Inversion of Control,控制反转。在Java开发中,IoC意 味着将你设计好的类交给系统(一般是容器)去控制,而不是在你的类内部控制。这称为控原创 2016-08-28 13:58:10 · 354 阅读 · 0 评论 -
Java基础-代码执行顺序(重要)
Java代码初始化顺序: 1.由 static 关键字修饰的(如:类变量(静态变量)、静态代码块)将在类被初始化创建实例对象之前被初始化,而且是按顺序从上到下依次被执行。静态(类变量、静态代码块)属于类本身,不依赖于类的实例。 2.没有 static 关键字修饰的(如:实例变量(非静态变量)、非静态代码块)初始化实际上是会被提取到类的构造器中被执行的,但是会比类构造器中的代码块优先执行原创 2016-08-28 13:57:59 · 437 阅读 · 0 评论 -
visual studio 2015生成64位DLL文件
新建一个visual C ++ ->win32项目650) this.width=650;" title="捕获.PNG" alt="wKioL1VZcG2Tw7hnAAHiNA0J3qo822.jpg" src="http://s3.51cto.com/wyfs02/M01/6C/F8/wKioL1VZcG2Tw7hnAAHiNA0J3qo822.jpg" />点击生成->配置管理器新建一个6原创 2016-08-28 13:56:54 · 5333 阅读 · 0 评论 -
java虚拟机启动参数分类详解
HotSpot是较新的Java虚拟机技术,用来代替JIT(Just in Time)技术,可以大大提高Java运行的性能。Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而该技术将常用的部分代码编译为本地(原生,native)代码,这样显著提高了性能。用于服务器版和标准版的HotSpot有所不同。java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数转载 2016-08-28 13:56:41 · 435 阅读 · 0 评论 -
JMX详解
一、模型JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架,JMX的核心类是MBean(准确说是接口),用来描述一个可管理的资源JMX的三层架构图650) this.width=650;" alt="" src="http://dl2.iteye.com/upload/attachment/0086/6158/91e原创 2016-08-28 13:56:38 · 737 阅读 · 0 评论 -
观察者模式
《JAVA与模式》之观察者模式在阎宏博士的《JAVA与模式》一书中开头是这样描述观察者(Observer)模式的: 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一原创 2016-08-28 13:58:21 · 505 阅读 · 0 评论 -
适配器模式
1.概述将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。模式中的角色 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(Adaptee):需要适配的类或适配者类。 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 适配器模式有2种,第一原创 2016-08-28 13:58:29 · 402 阅读 · 0 评论 -
合并两个list集合并且排序
集合合成的话List list1 = new ArrayList(); /*.....添加数据.......*/List list2 = new ArrayList(); /*.....添加数据.......*/list1.addAll(list2); 一、被比较对象需实现Comparable接口中的compareTo方法/*** 根据order对User排序*/public class原创 2016-08-28 13:58:44 · 10660 阅读 · 0 评论 -
JDBC连接数据库及PreparedStatement详解
直接上代码package jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class MyTest { public static void main(String ar原创 2016-08-28 14:03:01 · 3722 阅读 · 0 评论 -
java中的==、equals()、hashCode()源码分析
1. ==java中的==是比较两个对象在JVM中的地址。比较好理解。看下面的代码:public class ComAddr{ public static void main(String[] args) throws Exception { String s1 = "nihao"; String s2 = "nihao"; String s原创 2016-08-28 14:02:44 · 358 阅读 · 0 评论 -
java concurrent包自带线程池和队列详细讲解
Java线程池使用说明一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的转载 2016-08-28 14:02:09 · 2775 阅读 · 0 评论 -
Callable与Runable接口 submit与execute区别
execute(Runnable x) 没有返回值。可以执行任务,但无法判断任务是否成功完成。submit(Runnable x) 返回一个future。可以用这个future来判断任务是否成功完成。在Java5之后,任务分两类:一类是实现了Runnable接口的类,一类是实现了Callable接口的类。两者都可以被ExecutorService执行Future future = pool.sub原创 2016-08-28 14:02:06 · 1407 阅读 · 0 评论 -
Java Socket和ServerSocket编程 NIO
Socket server 和 client 通信流程图:650) this.width=650;" title="1554663_201306051010200847.jpg" alt="wKiom1XT9_yhBegVAAC9f18QnFo704.jpg" src="http://s3.51cto.com/wyfs02/M00/71/8E/wKiom1XT9_yhBegVAAC9f18QnFo转载 2016-08-28 14:02:03 · 454 阅读 · 0 评论 -
从文件路径中获取文件名的方法
//根据文件路径截取文件名 public String getfileName(String s) throws Exception{ s.trim(); String fileName = s.substring(s.lastIndexOf("/")+1); //或者 String fileName原创 2016-08-28 14:00:20 · 3235 阅读 · 0 评论