
Java基础
周世文_围城
对自己狠一点,就成功了一半
展开
-
单例模式
单例模式有懒汉式和饿汉式 先来懒汉式public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton==null){原创 2017-06-07 15:21:22 · 215 阅读 · 0 评论 -
JDBC 与C3p0连接数据库回顾
packagecom.ddcash.jdbc.jdbc;importcom.mchange.v2.c3p0.ComboPooledDataSource;importcom.mchange.v2.c3p0.DataSources;importjava.sql.*;/*** Description: xxxxx**@author原创 2017-10-11 17:27:02 · 553 阅读 · 0 评论 -
MySQL优化
MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL逻辑架构,来自:高性能MySQLMySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优转载 2017-10-11 17:42:01 · 309 阅读 · 0 评论 -
Java生成图形验证码
【代码】Java生成图形验证码。原创 2017-09-08 15:34:17 · 1045 阅读 · 2 评论 -
OCR图片识别
简单识别验证码代码:public static void ocr(String fileName){File filepicF = new File(fileName);Ocr.setUp(); // one time setupOcr ocr = new Ocr(); // create a new OCR engineocr.startEngin原创 2017-08-15 16:20:25 · 2673 阅读 · 2 评论 -
NIO入门
java.nio用来提高I/O操作的效率。在nio包中主要包括以下几个类或接口:Buffer:缓冲区,用来临时存放输入或输出数据。Charset:用来把Unicode字符编码和其它字符编码互转。Channel:数据传输通道,用来把Buffer中的数据写入到数据源,或者把数据源中的数据读入到Buffer。Selector:用来支持异步I/O操作,也叫非阻塞I/O转载 2017-08-10 11:27:14 · 316 阅读 · 0 评论 -
Socket编程
创建服务端 ① 创建ServerSocket对象,绑定监听端口 ② 通过accept()方法监听客户端请求 ③ 连接建立后,通过输入流读取客户端发送的请求信息 ④ 通过输出流向客户端发送乡音信息 ⑤ 关闭相关资源public class SocketServerTest { public static void main(Stri原创 2017-06-28 14:16:28 · 201 阅读 · 0 评论 -
多线程之join
t.join()方法阻塞调用此方法的线程(calling thread),直到线程t完成,此线程再继续;通常用于在main()主线程内,等待其它线程完成再结束main()主线程。package thread;/** * T1执行之后T2 之后T3 * @author zhoushiwen * */public class Thread1 { public static原创 2017-06-27 17:24:04 · 196 阅读 · 0 评论 -
连接池技术
为什么要使用连接池数据库连接的建立及关闭资源消耗巨大。传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开、关闭该物理连接, 系统性严重受损。解决方案:数据库连接池(Connection Pool)。系统初始运行时,主动建立足够的连接,组成一个池.每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不再关闭,而是归还。原创 2017-06-20 14:34:46 · 478 阅读 · 0 评论 -
Executor,Executors,ExecutorService
1.Excutor 源码非常简单,只有一个execute(Runnable command)回调接口 public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a n转载 2017-06-21 18:01:28 · 299 阅读 · 0 评论 -
Java并发工具类CountDownLatch和CyclicBarrier
Java并发工具类CountDownLatch和CyclicBarrier1.CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作,其构造函数接收一个int型的参数作为计数器,若想等待N个点完成,就传人N。此处的N个点,可指N个线程,也可以是1个线程中的N个步骤。主要的方法为CountDown()和await()。当调用CountDow原创 2017-06-22 16:39:39 · 281 阅读 · 0 评论 -
缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印
缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;impor转载 2017-06-20 14:50:46 · 588 阅读 · 0 评论 -
HashMap的存储原理
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和转载 2017-06-20 14:42:27 · 675 阅读 · 2 评论 -
Servlet 中文乱码问题及解决方案剖析
一、常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码;3.getBytes() 是通过平台默认字符集进行编码; 二、中文乱码出现 在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为原创 2017-06-20 13:52:30 · 2029 阅读 · 0 评论 -
lombok 简单入门
lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。特别是相对于 POJO.lombok 的官方网址:http://projectlombok.org/ .eclipse / myeclipse 手动安装 lombok 1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini原创 2017-06-20 10:17:58 · 703 阅读 · 0 评论 -
Java对于图片的操作
最近工作上用到图片旋转,所以来偏图片旋转的文章。其中碰到不少坑。以下实现了旋转90度的倍数。方便我们了解旋转是怎么做的 ,如果要旋转任意角度,可以用Java自带的thumbnails(文章后面介绍)import org.springframework.util.Base64Utils;import net.coobird.thumbnailator.Thumbnails;/**原创 2017-06-08 10:39:10 · 1318 阅读 · 0 评论 -
动态代理之CGLib
动态代理之CGLib jdk动态代理和cglib动态代理。两种方法同时存在,各有优劣。 jdk动态代理是由Java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的。 总的来说,反射机制在生成类的过程中比较高效,而asm在生成类之后的相关执行过程中比较高效(可以通过将asm生成的类进行缓存,这样解决asm生成类过程低效问题),cglib动态代理中生成的字节码更加复杂,生成的代原创 2017-06-07 13:52:40 · 390 阅读 · 0 评论 -
Java动态代理
代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程原创 2017-06-07 11:47:19 · 631 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor源码解析
线程池能够对线程进行有效的管理, 复用和数量上限的限制, 如果你需要创建多个线程来执行多个异步任务, 那么使用线程池显然要比频繁地 new Thread().start() 这种方式要好.Java 中的线程池是用 ThreadPoolExecutor 类来表示的. 我们今天就结合该类的源码来分析一下这个类内部对于线程的创建, 管理以及后台任务的调度等方面的执行原理. 我这里分析的是 Ora转载 2017-10-16 14:08:48 · 432 阅读 · 0 评论