![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA SE
文章平均质量分 92
Mergades
专注于应用架构设计。
展开
-
Linux IO模型——阻塞、非阻塞、多路复用、同步、异步、BIO、NIO
IO模型为什么需要单独拉出来来说?因为这里是我们理解linux底层一些契机,也是我们网络编程的基础。尤其现在我们主流的框架都支持了EPOLL IO模型,比如tomcat、redis、nginx等。0. IO** IO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<–>内核空间、内核空间<–>设备空间(磁盘、网络等)**。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。*原创 2021-04-13 19:47:58 · 208 阅读 · 0 评论 -
Collections.copy 报错: Source does not fit in dest
今天在使用 Collections.copy方法时候,报错Source does not fit in dest自己方法中的代码如下:List proStateList = SelectOptionsUtil.getOptionsById("prostate"); List resultList = new ArrayList(20);// 生成新的List,防止更原创 2015-04-22 15:22:14 · 7319 阅读 · 2 评论 -
Java内存区域与内存溢出异常
1,java堆溢出 JAVA堆用于存储对象实例,只要不断的创建对象,保证GC Roots到对象直接有可达路径,避免垃圾回收机制清楚对象,那么对象数量叨叨一定程度后,会产生内存溢出异常。 如下代码,限制Java堆大小为1024m,并且-Xms和-Xmx的参数相同,即不可扩展。同事在Run Configuration中增加VM 参数:-XX:+HeapDum原创 2015-07-19 17:19:49 · 841 阅读 · 0 评论 -
Java NIO -AtomicInteger
概述通常情况下,在Java中我们对++i,--i的操作都是非线程安全的。对于一个++i存在三个独立的操作,获取变量i当前的值,为该值+1。如下代码,多线程操作i++。public class UnsafeI { public static int num = 0; public static void main(String[] args) throws InterruptedEx原创 2016-04-03 13:24:11 · 450 阅读 · 0 评论 -
Java NIO - volatile
1,volatile 相当于synchronized弱实现,volatile关键字实现了类似synchronized的语义,却没有实现锁机制。 volatile关键字确保字段的更新已可预见的方式告诉其他线程。-1,Java存储模型不会对valatile关键字修饰的字段重排序,这个保证volatile关键字修饰的变量操作时会按指令出现的先后顺序执行。-2,volati原创 2016-04-03 14:50:14 · 538 阅读 · 1 评论 -
Java NIO-锁机制Lock
Java NIO提供Lock对象来实现对当前对象加锁。1,Lock接口方法详解:void lock()获取锁。如果锁不可用,出现线程调度,将会禁用当前线程,并且在获得锁之前,该线程将一直处于休眠状态。void lockInterruptibly() throws InterruptedException;如果当前线程未被中断则获取锁。如果锁可原创 2016-04-04 21:37:24 · 1236 阅读 · 1 评论 -
Java NIO - CountDownLatch
CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。下面开启两个线程,一个用来插入订单操作,一个用来模拟合并订单操作。 @Test// @Transactional public void testAutoMergeSplit03() throws Exception {原创 2016-04-12 19:43:49 · 477 阅读 · 0 评论 -
Java NIO-Lock.unlock
unlock用来释放锁,使用lock保护临界区,但是临界区通常会出现异常,所以unlock我们会放在finall语句中执行。lock.lock();try{ //do something} finally { lock.unlock();}Lock的实现类ReentrantLock中unlock的实现来自其成员变量sync实现. public void原创 2016-04-10 12:31:26 · 470 阅读 · 0 评论 -
Java NIO - Condition
Condition用来实现对应Object的wati,notify,notifyAll三个方法。在Condition中用await()替换wait(),用signal()替换notify() ,用signalAll()替换notifyAll(),传统线程之间的通讯Condition都可以实现。如下列子,我们实现一个读写操作,分为读写线程。package chp3.condi原创 2016-04-10 18:01:04 · 345 阅读 · 0 评论 -
Internet Explorer 无法打开该 Internet 站点。请求的站点不可用
Internet Explorer 无法下载 xxx (来自xxx)。Internet Explorer 无法打开该 Internet 站点。请求的站点不可用,或找不到,请以后再试。对应的英文版错误信息:Internet Explorer cannot downloadFileNamefromWebServer.这样的错误,源头是下载程序,代码有问题,但这不是程序员的问题,原创 2016-05-10 14:10:04 · 19068 阅读 · 3 评论 -
Java NIO - CyclicBarrier
CountDownLatch是一次性的,CyclicBarrier可以循环使用,允许一组线程互相等待,直到公共的common barrier point。common barrier point就是一组任务执行完毕的时候。package chp4.cyclicBarrier;import java.util.concurrent.BrokenBarrierException;imp转载 2016-05-29 20:57:50 · 392 阅读 · 0 评论 -
ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal
总结ThreadLocal用来多线程程序时,绑定变量到当前线程。存在局限是因为ThreadLocal只绑定变量到当前线程,无法满足父线程和子线程之间传递数据。所以JDK提供InheritableThreadLocal来解决该问题。但是InheritableThreadLocal存在问题,在线程池中使用时,绑定的数据为第一个父线程,所以ALI提供TransmittableThreadLocal ...原创 2019-07-30 20:22:30 · 178 阅读 · 0 评论 -
Java程序员今年要考虑的5件事
原文出处:译文链接:http://www.codeceo.com/article/5-things-java-programmer-know.html英文原文:5 Things a Java Developer Should Consider This Year翻译作者:码农网 – 小峰1.使用NoSQL数据存储创建一个应用程序,并与Java相连如果你还不了解N转载 2015-03-26 09:31:27 · 541 阅读 · 0 评论 -
JDK源码-HashSet
1,Set: -1,包含不重复元素的集合。准确来讲,Set不包含这样子的元素,e1和e2元素,e1.equals(e2)返回false,并且最多包含一个null元素。 -2,Set构造方法规定,所有构造方法必须创建一个不包含重复元素的集合。 -3,某些Set对其包含的元素有所限制,比如不包含null元素。2,Set具体子类讲解,摘自《Thinking In原创 2015-01-26 10:01:03 · 850 阅读 · 2 评论 -
java谜题-表达式谜题
最近在看Java解惑,发现好多问题平时都没有注意。所以特别记录,写博客也是督促自己不要忘记。谜题1:奇数性:关于判断一个数字是不是奇数或偶数,首先想到的是对2取余,看结果是不是1。很容易写出下面的例子:public static boolean isOdd(int i){ return i % 2 == 1; }但是,这个代码在负数时是没有用的。随意应该原创 2013-09-23 20:18:42 · 913 阅读 · 0 评论 -
Java虚拟机
对于java来说,其高效的内存管理机制,使得程序猿不再需要为每一个操作写对应的delete/free 代码。同时,由于内存控制不再由成员决定,这使得内存溢出问题更加不宜解决。Java虚拟机运行时数据区分为以下几个,每个数据区的创建和销毁时间都各不相同:1,方法区(Method Area)2,虚拟机栈(Vm Stack)3,本地方法栈(Native Method Stack)4,原创 2013-09-27 17:45:47 · 672 阅读 · 0 评论 -
request.getRealPath("/")
request.getRealPath("/")现在使用request.getSession().getServletContext().getRealPath("/").toString();代替转载 2013-12-18 17:30:02 · 713 阅读 · 0 评论 -
JDK源码-String
1,字符串,String类。 -1,字符串是常量,他们的值在创建后不能更改。字符串缓冲区支持可变的字符串。 -2,String重载了Java中的+操作。 -3,String对象是不可变的,你可以给一个String对象加任意多的别名。因为String对象具有只读特性,所以指向他的任何引用都不能改变它的值。2,String类的成员变量 -1,valu原创 2015-01-29 13:25:22 · 885 阅读 · 0 评论 -
ArrayList源码解析
放假,倍感无聊。兴起,观ArrayList源码,感之。1,原创 2014-05-03 16:21:54 · 639 阅读 · 0 评论 -
泛型-java编程思想笔记
1,泛型定义 泛型,即参数化类型,使得代码更加的通用。不在局限于某个类或者接口,使得方法更加的松耦合。2,泛型的目的 泛型的目的之一就是用来指定容器类要持有什么类型的对象,而且由编译器保证类型的正确性。 泛型的核心理念就是告诉编译器你想使用什么类型,然后编译器帮你处理一切细节。如下的三段代码,完全可以看出使用泛型的优势:package com.原创 2014-05-18 15:32:42 · 601 阅读 · 0 评论 -
JDK源码-ArrayList源码
1,继承结构图: -1,ArrayList继承AbstractList抽象类,实现List、RandomAccess、Cloneable、Serializable接口。 -2,查看List接口的继承关系,我们看到List接口实现了Collection接口。Collection接口是基本集合类接口。查看Collection接口的说明:/** * The root原创 2015-01-20 14:17:26 · 855 阅读 · 0 评论 -
JDK源码-LinkedList源码
1,LinkedList: -1,实现了List接口,允许null元素。LinkedList还为链表开头和结尾提供了操作,所以使用LinekedList可以用作堆栈、列队或双端队列。 -2,LinkedList实现Deque接口,提供了基于队列的先进先出序列的实现。 -3,所有的操作都是按照双重链表来实现的。 -4,操作为非线程安全的,如果多个线原创 2015-01-21 10:09:59 · 1163 阅读 · 0 评论 -
JDK源码-HashMap
1,Map:映射表数据结构,通过key-value完成映射。HashMap的子实现主要包括:HashMap、LinkedHashMap、TreeMap、WeakHashMap、ConcurrentHashMap、IdentityHashMap。以下总结摘录自《Thingking In Java》 -1,HashMap:使用Map集合的默认选择。因为HashMap对速度进行了优化。Hash原创 2015-01-22 09:11:47 · 1045 阅读 · 0 评论 -
JDK源码-Vector
1,Vector: -1,实现可增长的对象数组。与对象数组相同,他包含整数索引来进行组件访问。但是,Vector的大小可以根据需要增大或缩小。 -2,每个Vector通过维护capacity和capacityIncrement来优化存储管理。capacity始终至少与Vector的大小相等。通常该值大于Vector的容量,是因为Vector将按capacityIncreme原创 2015-01-23 09:22:51 · 1208 阅读 · 0 评论 -
JDK源码-TreeMap
1,TreeMap: -1,基于红黑树的实现。TreeMap根据创建时的顺序或者根据提供的Comparator进行排序,具体决定于使用的构造方法。提供Conparator方法后,判断对象相等也会基于此方法。 -2,containsKey,get,put和remove方法消耗log(n)的时间复杂度。/** * * @(#) Main.java * @Package原创 2015-01-24 10:44:29 · 834 阅读 · 0 评论 -
java和oracle简单的日期格式化
SimpleDateFormat myFmt1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String birthday = myFmt1.format(model.getBirthday());在DAO层:to_date(?,'YYYY-MM-DD')就可以了。原创 2013-09-04 16:19:06 · 1275 阅读 · 0 评论