
java se
文章平均质量分 90
回_憶
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Netty4之处理链
本文是基于Netty4.1.x,Handler在Netty占据着很重要的位置,跟Servlet中的filter很像,通过Handler可以完成消息的编解码、拦截指定的消息、统一对日志错误进行处理、统一对请求进行计数。所有的Handler都实现ChannelHandler接口,分为两大类,ChannelInboundHandler与ChannelOutboundHandler,ChannelInbo...原创 2019-09-23 19:05:22 · 551 阅读 · 0 评论 -
Java IO 流体系
文件类File1、java.io.File类:文件和目录路径名的抽象表示方式与平台无关。2、File能新建、删除、重命名文件和目录,但是不能访问文件本身的内容;File类关心的是磁盘上文件的存储,而流类关心的是文件的内容。3、File 类可以作为参数传递流的构造函数。相对路径:在当前文件(工程)目录下文件的路径。绝对路径:包括盘符在内的完整文件路径。4、File类的使用的方原创 2015-01-24 09:26:24 · 1018 阅读 · 0 评论 -
Java异常机制Throwable
Java中异常的概念以及处理异常在Java程序运行期间出现了一个错误,这个错误可能是由于文件包含了错误信息,或者是由于网络连接出现问题,也可以是因为使用了无效的数组下标,或者是试图使用一个没有被赋值的对象引用而造成的,我们称这样的错误为异常。在出现异常时用户期望程序能够采用一些理性的行为。如果由于出现错误而使得程序操作没有完成,这时程序应该:返回到一种安全状态,并能够让用户执行一些原创 2015-02-08 09:04:44 · 13432 阅读 · 3 评论 -
数据结构-快速排序 java实现
快速排序又可以分为冒泡排序原创 2014-11-15 09:14:31 · 568 阅读 · 0 评论 -
Java 反射机制
反射的概念1、反射被看作是动态语言的关键,反射机制允许程序在执行期间借助Reflect的API取得任何类的内部信息以及操作内部属性和方法。Class类1、Class类被定义为反射的源头。在Object类中定义了public final Class getClass(){}这个方法来获取运行时类Class,这个Class可以保存类的运行时信息。2、有了反射,可以通过反射创建一个对原创 2015-01-21 18:10:58 · 656 阅读 · 0 评论 -
Java 虚拟机 JVM
解析JAVA虚拟机开发 --《深入理解Java虚拟机-第二版》第二章:Java内存区域与内存溢出异常一、java的内存分配管理1、java内存分配的几个区原创 2014-11-05 19:13:59 · 605 阅读 · 0 评论 -
Java New IO(NIO)详解
I/O简介1、I/O 输入或者输出指的是计算机与外部世界或者一个程序与计算机的其余部分之间的接口,它对于任何计算机系统都非常重要,因面所有的I/O的主体实际上是内置在操作系统中的,单独的程序一般是让系统为它们完成大部分的工作。2、在Java编程中,直到JDK1.4之前一直使用的是流的方式来完成I/O,所的有I/O都被看作是单个字节的移动,通过一个称为Stream的对象一次移动一个字节。流I原创 2015-02-01 14:08:03 · 2089 阅读 · 0 评论 -
EhCache详细解读
特性一览1、快速轻量过去几年,诸多测试表明Ehcache是最快的Java缓存之一。Ehcache的线程机制是为大型高并发系统设计的。大量性能测试用例保证Ehcache在不同版本间性能表现得一致性。很多用户都不知道他们正在用Ehcache,因为不需要什么特别的配置。API易于使用,这就很容易部署上线和运行。很小的jar包,Ehcache 2.2.3才668kb。最小的原创 2015-01-26 18:00:33 · 5991 阅读 · 5 评论 -
java连接数据方法jdbc:oracle,mysql,mongodb
MySql 连接方法:原创 2014-11-08 13:57:48 · 3588 阅读 · 0 评论 -
自定义规则 Collections.sort() 对 List 排序
一、Collections.sort()与Arrays.sort()的比较 Collections.sort()该算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素效益高子列表中的最低元素,则忽略合并)。此算法可提供保证的N*log(N)的性能,此实现将指定列表转储到一个数组中,然后再对数组进行排序,在重置数组中相应位置处每个元素的列表上进行迭代。这避免了由于试图原创 2014-12-19 19:41:17 · 2445 阅读 · 0 评论 -
POI操作excel
package com.poi;import java.io.File;import java.io.FileInputStream;import java.util.Iterator;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFSheet;import原创 2014-11-07 21:02:58 · 497 阅读 · 0 评论 -
数据结构之hash表,HashMap简单实现
一、Hash表概念在查找表中我们已经说过,在Hash表中,记录在表中的位置和其关键字之间存在着一种确定的关系。这样我们就能预先知道所查关键字在表中的位置,从而直接通过下标找到记录。使查找时间复杂度接近O(1)。 1)哈希(Hash)函数是一个映象,即: 将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可; 2)由于哈希函数是一个压缩原创 2014-12-26 19:15:14 · 613 阅读 · 0 评论 -
Java 关键字详解
访问控制修饰符号1) private私有的 private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中原创 2015-06-09 15:02:32 · 1398 阅读 · 0 评论 -
LRUCache 详解
LRU的基本概念: LRU是Least Recently Used的缩写,近期最少使用算法。Java 实现LRUCache 1、基于LRU的基本概念,为了达到按近期最少使用排序,可以选择HashMap的子类 LinkedHashMap来作为LRUCache的存储容器。 2、LinkedHashMap的原理: a、 对于LinkedHashMap而言,它继承与Ha原创 2015-06-10 12:44:06 · 5331 阅读 · 0 评论 -
Netty4之启动流程
Netty是基于JAVA NIO的网络应用框架,使用Netty可以迅速的开发网络应用。主要是用在服务端。这篇文章主要是分析Netty4.1.x的启动流程。通过启动流程可以更新清晰的知道Netty的运行逻辑。在介绍启动流程之前先说说几个名词的基本概念:Bootstrap 启动器,负责对于整个Netty应用的启动,分为ServerBootstrap(Server端使用),Bootstrap(Cli...原创 2019-09-13 15:16:54 · 551 阅读 · 0 评论 -
Netty4之业务线程池的使用
此文章是基于Netty4.1,一般在使用Netty做服务端开发时,通常会定义I/O线程池及业务线程池。I/O线程池顾名思义用于处理网络连接及维护Channel的相关事件(一般像心跳及编解码都可以使用I/O线程池)。当需要处理比较耗时的业务逻辑也共用I/O线程池话会对整个服务的吞吐量有比较大的影响(曾经遇到过)。所以在生产环境中建议定义业务线程池。下面说说如何使用业务线程池及业务线程池处理逻辑的原理...原创 2019-09-13 15:08:00 · 9144 阅读 · 0 评论 -
Redis Sentinel 与 Redis Cluster
一、前言互联网高速发展的今天,对应用系统的抗压能力要求越来越高,传统的应用层+数据库已经不能满足当前的需要。所以一大批内存式数据库和Nosql数据库应运而生,其中redis,memcache,mongodb,hbase等被广泛的使用来提高系统的吞吐性,所以如何正确使用cache是作为开发的一项基技能。本文主要介绍Redis Sentinel 及 Redis Cluster的区别及用法,Redi...原创 2018-07-26 14:06:18 · 70357 阅读 · 9 评论 -
ConcurrentHashMap源码解读
曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发转载 2015-03-13 21:14:35 · 753 阅读 · 0 评论 -
日志组件logback使用详解
背景问题定位是日常程序开发过程中不可或缺的一部分,能高效的定位程序中的问题能大大提高开发的效率。目前程序中所存在的问题大致有以下两种类型:1、代码本身有问题,这类问题通常会有比较常见的错误提醒,如UnsupportedOperationException不支持的操作,IllegalArgumentException非法参数,IndexOutOfBoundsException索引原创 2017-11-25 12:57:26 · 1445 阅读 · 0 评论 -
java类加载器 classLoader原理解析
一、classLoader说明目前主的JAVA应用都是由若干个.class文件组织而成的,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异常。而程序在启动的时候,并不会一次性加载程序所要用的所有class文件,而是根据程序的需...原创 2017-07-20 13:35:32 · 858 阅读 · 0 评论 -
并发编程中的Volatile与synchronized
一、引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。与 synchronized 块相比,volatile 变量所需的编码较少,不会引起线程上下文的切换和调度且运行时开销也较少,但是原创 2017-07-15 13:22:36 · 1173 阅读 · 0 评论 -
同步的HttpClient使用详解
HttpClient使用详解原创 2017-01-11 10:32:31 · 4247 阅读 · 2 评论 -
System.arraycopy()方法详解
一、深度复制和浅度复制的区别 Java数组的复制操作可以分为深度复制和浅度复制,简单来说深度复制,可以对对象的值和对象的内容复制;浅复制是指对对象引用的复制。二、System.arraycopy()方法实现复制1、System中提供了一个native静态方法arraycopy(),可以使用这个方法来实现数组之间的复制。使用这种方法实现的数组复制,表面看起来是一个深度原创 2014-12-19 20:29:12 · 14620 阅读 · 2 评论 -
java 多线程详解
关于线程的概念1、程序一般是指一段静态代码,静态对象;进程是程序的一次执行过程或正在运行的程序动态的的过程,有它的产生、存在和消亡的过程;线程是指一个程序内部的一条执行路径,也就是说每一个任务就代表一个线程。进程与线程相互联系然而又有区别,从本质上来说每个进行都有自己的一整套变量,而线程间可以共享变量,共享变量使得线程之间的通信比进行之间通信更有效、更容易。2、并不是每种情况都需要多线程,原创 2015-01-06 18:11:33 · 861 阅读 · 1 评论 -
利用栈Stack实现队列(Queue)
实现说明:入队时,将元素压入s1;出队时,判断s2是否为空,如不为空,则直接弹出顶元素;如为空,则将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队;这个思路,避免了反复“倒”栈,仅在需要时才“倒”一次。package com.knowledgeStudy.threadLocal;import java.util.Stack;public class MyQueue原创 2015-07-15 15:04:18 · 1489 阅读 · 0 评论 -
springMVC之拦截器详解
一、springMVC的拦截器有两种实现方法,这里是使用springMVC 3.0: 1、实现接口:org.springframework.web.servlet.HandlerInterceptor: 2、继承适配器:org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器实现了HandlerInte原创 2014-12-15 19:52:33 · 1277 阅读 · 0 评论 -
数据结构之树
一、树的基本定义:树(tree)是N(N>=0)个结点的有限集合。在任意的一棵树中有且只有一个特定的根(root)节点 ;当n》1时其余节点可分为m个互不相交的有限集,每个集合的本身就是一棵树。二、二叉树的定义:它的特点是每个节点最多只有两棵子树(二叉树中不存在度大于2的节点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。三、树的一些名词的含义:度:表示节点拥有的子树数;叶子(终端节原创 2014-12-07 19:42:00 · 659 阅读 · 0 评论 -
KMP算法
package com.abstractdatatype.string;/*字符串匹配的KMP算法*/public class StringMatch_KMP { public static void main(String[] args) { String s = "abbabbbbcab"; // 主串 String t = "bbcab"; // 模式串原创 2014-11-05 21:38:37 · 477 阅读 · 0 评论 -
汉诺塔
package com.someusefuldesign.demo;/*假设有A B C三个柱子移动的顺序为: * */public class Hanoi { static int count = 0; public void hanoi(int n,String from,String depend,String to ){ //这里的n是原创 2014-11-05 21:28:28 · 452 阅读 · 0 评论 -
贪婪算法 ---马踏棋盘
package com.dataconstructor.greedy;/*马踏棋盘问题,用贪婪算法 */ public class HorseStep { //定义参数,x方向 y方向的增量要一致 private static final int [] dx={-1,-2,-2,-1,1,2,2,1};// x方向的增量 private static fi原创 2014-11-19 19:11:10 · 921 阅读 · 0 评论 -
贪婪算法--背包问题详解
package com.dataconstructor.greedy;import java.util.Arrays;/* [背包问题]有一个背包,背包容量是M=150。有7个物品,物品可以分割成任意大小。要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。物品 A B C D E F G重量(weight) 35 30 60 50 40 10 25价值(value)原创 2014-11-19 19:08:53 · 1701 阅读 · 0 评论 -
LRUCache---leetcode
package com.abstractdatatype.linerlist;import java.util.HashMap;/*cache节点*/class LRUNode{ LRUNode pre; LRUNode next; int k; int val; LRUNode(int k,int val){ this.k=k; this.val=val; }}原创 2014-11-05 21:33:25 · 447 阅读 · 0 评论 -
leetcode之Linked List Cycle
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class原创 2014-11-18 19:15:50 · 389 阅读 · 0 评论 -
使用oracle存储过程编写分页
编写一个存储过程,要求可以输入表名,每页显示记录数,当前页。返回总记录数,总页数和返回的结果集。并按工资排序输出。 第一步:建立一个包createorreplacepackagepagingPackageas typepaging_cursorisrefcursor; endpagingPackage; 第二步:编写分页的过程 creat原创 2014-11-16 11:35:50 · 565 阅读 · 2 评论 -
数据结构-插入排序 java实现
插入排序又可分为原创 2014-11-15 09:04:03 · 513 阅读 · 0 评论 -
日期Date操作
package com.string;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/*日期类,与时间相关 * 1、System类下的currentTimeMillis(); * 2、Date类,java.util.Date()以及其子类java.sql.Date原创 2014-11-07 21:06:32 · 680 阅读 · 0 评论 -
String的常规方法
package com.string;public class Demo1 { /** * @author maco * @param 2014-04-27 */ public static void main(String[] args) { // TODO Auto-generated method stub String str1,str2,str3,st原创 2014-11-07 20:55:54 · 647 阅读 · 0 评论 -
hash函数
package com.abstractdatatype.hash;/*把字符串中字符的ASCII码(或Unicode码)值加起来*/public class HashMethod { public static void main(String[] args) { int length=HashMethod.hash("admin", 3); int size=HashM原创 2014-11-05 21:31:43 · 828 阅读 · 0 评论 -
Hashtable的应用:统计海量数据中出现频率高的数据
package com.abstractdatatype.hash;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Hashtable;import java.util.List;import java.util.Map.Entry;原创 2014-11-05 21:30:52 · 1090 阅读 · 0 评论 -
二分法查找
package com.abstractdatatype.search;/*二分法查找*/public class BinarySearch { public static void main(String[] args) { int [] a=new int [] {1,2,3,4,5,7,8,9}; int index=BinarySearch.binarySearch原创 2014-11-05 21:34:46 · 451 阅读 · 0 评论