
JAVA
文章平均质量分 83
L_小乌鸦
java web
网络,计算机组成,数据结构,算法,进程模型,io模型,socket,udp,tcp
展开
-
Netty-SocketIO 集群解决方案
Netty-SocketIO 集群解决方案Netty-SocketIO作为一个Socket框架,使用非常方便,并且使用Netty开发性能也有保证。但是,我在使用Netty-SocketIO框架时,却发现,国内的资料比较少,虽然有些Demo级别的技术分享,但是关于集群解决方案,并没有什么较好的解决方法。文章目录Netty-SocketIO 集群解决方案`Netty-SocketIO`作为一个Socket框架,使用非常方便,并且使用`Netty开发`性能也有保证。但是,我在使用`Netty-Sock转载 2020-05-13 14:58:35 · 2773 阅读 · 0 评论 -
springboot配置线程池-高并发场景
1.编写配置文件package com.hbedu.search.hbsearch.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframewor...转载 2020-05-13 10:43:34 · 1651 阅读 · 0 评论 -
JAVA并发编程:并发容器之ConcurrentHashMap(转载)
Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,转载 2017-03-08 15:31:56 · 343 阅读 · 0 评论 -
Java并发编程:并发容器之CopyOnWriteArrayList(转载)
Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延转载 2017-03-08 15:34:47 · 259 阅读 · 0 评论 -
JAVA多线程和并发基础面试问答(转载)
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问转载 2017-03-08 15:35:59 · 306 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition原文地址:http://www.cnblogs.com/dolphin0520/p/3920385.html 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间转载 2017-03-08 15:37:51 · 359 阅读 · 0 评论 -
Java线程面试题 Top 50 (转载)
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发转载 2017-03-08 15:40:42 · 322 阅读 · 0 评论 -
Java并发编程:Timer和TimerTask(转载)
Java并发编程:Timer和TimerTask(转载) 下面内容转载自: http://blog.youkuaiyun.com/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:123转载 2017-03-08 15:41:34 · 308 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,转载 2017-03-08 15:42:52 · 508 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarr转载 2017-03-08 15:43:53 · 294 阅读 · 0 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?转载 2017-03-08 15:45:12 · 318 阅读 · 0 评论 -
Java并发编程:阻塞队列
Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(Linke转载 2017-03-08 15:46:31 · 285 阅读 · 0 评论 -
Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentMod转载 2017-03-08 15:47:49 · 290 阅读 · 0 评论 -
Java并发编程:同步容器
Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类 三.同步容器的缺陷 若有不正之处请多多谅解,并欢迎批评转载 2017-03-08 15:51:28 · 322 阅读 · 0 评论 -
Java并发编程:深入剖析ThreadLocal
Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二.转载 2017-03-08 15:52:37 · 319 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(转载)
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模转载 2017-03-08 15:53:49 · 247 阅读 · 0 评论 -
Java并发编程:Lock(转载)
Java并发编程:Lock 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐转载 2017-03-08 15:54:49 · 288 阅读 · 0 评论 -
Java并发编程:synchronized(转载)
Java并发编程:synchronized 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题? 三.sy转载 2017-03-08 15:55:57 · 309 阅读 · 0 评论 -
Java并发编程:Thread类的使用(转载)
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法转载 2017-03-08 15:56:47 · 298 阅读 · 0 评论 -
Java并发编程:如何创建线程?(转载)
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不转载 2017-03-08 15:57:20 · 312 阅读 · 0 评论 -
Java并发编程:进程和线程之由来(转载)
Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下进程和线程的由来,这对后面对并发编程的理解将会有很大的帮助。 下面是本文的目录大纲:转载 2017-03-08 15:58:11 · 282 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法来源:http://www.cnblogs.com/linjiqin/archive/2013/05/30/3108188.html在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队转载 2017-03-09 15:39:21 · 310 阅读 · 0 评论 -
ArrayBlockingQueue
来源:http://blog.youkuaiyun.com/hudashi/article/details/7076745ArrayBlockingQueue 一个由数组支持的有界阻塞队列。它的本质是一个基于数组的blocking queue的实现。 它的容纳大小是固定的。此队列按 FIFO(先进先出)原则对元素进行排序。 队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存转载 2017-03-09 15:48:00 · 255 阅读 · 0 评论 -
Java并发包中的同步队列SynchronousQueue实现原理
Java并发包中的同步队列SynchronousQueue实现原理作者:一粟介绍Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。不像ArrayBlockingQueue或LinkedListBlockingQueue,SynchronousQue转载 2017-03-09 15:51:14 · 551 阅读 · 0 评论 -
Java多线程编程中Future模式的详解<转>
Java多线程编程中Future模式的详解Java多线程编程中,常用的多线程设计模式包括:Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下:关于其他多线程设计模式的地址如下:关于Master-Worker模式的详解: Java多线程编程中转载 2017-03-09 16:27:05 · 561 阅读 · 0 评论 -
Java多线程编程中Master-Worker模式的详解
Java多线程编程中,常用的多线程设计模式包括:Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。这篇文章主要讲述Master-Worker模式,关于其他多线程设计模式的地址如下:关于其他多线程设计模式的地址如下:关于Future模式的详解: Java多线程编程中Future模式的详解关于Guarded Su转载 2017-03-10 11:18:29 · 483 阅读 · 1 评论 -
一位资深程序员大牛给予Java初学者的学习建议
这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学。在大家看之前,我要先声明两点。1、由于我本人是Java后端开发出身,因此所推荐的学习内容是Ja转载 2017-03-10 14:01:52 · 3668 阅读 · 0 评论 -
Spring面试题
* Spring的优点有什么?1. Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分2. Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高3. 依赖注入和IoC使得JDBC操作简单化4. Spring是开源的免费的5. Spring使得对象管理集中化合简单化* 描述一下spring中实现DI(dependency inject原创 2017-03-13 12:32:49 · 907 阅读 · 0 评论 -
java自定义线程池--ThreadPoolExecutors
ThreadPoolExecutor类简介在Java线程池中的newCachedThreadPool,newFixedThreadPool,newSingleThreadExecutor,newScheduledThreadPool这四个线程池在底层都是调用了ThreadPoolExecutor()这个构造方法。若Executors这个类无法满足我们的需求的时候,可以自己创建自定义的线程池转载 2017-03-14 15:59:52 · 510 阅读 · 0 评论 -
Java之CountDownLatch使用
CountDownLatch1、类介绍一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重转载 2017-03-15 09:07:44 · 338 阅读 · 0 评论 -
Java之CyclicBarrier使用
1、类说明:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。2、使用场景:需要所有的子任务都完成时,才执行主任务,这个时候就转载 2017-03-15 09:13:26 · 325 阅读 · 0 评论 -
servlet是单例的 所以需要线程安全 以及如何实现线程安全
Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。Servl转载 2017-03-15 09:41:41 · 7897 阅读 · 1 评论 -
JAVA并发编程学习笔记之CAS操作
CAS操作CAS是单词compare and set的缩写,意思是指在set之前先比较该值有没有变化,只有在没变的情况下才对其赋值。我们常常做这样的操作[java] view plain copy print?if(a==b) { a++; } 试想一下如果在做a++之前a的值被改变了怎么办?a++还执行吗?出现该问题的原因是在多线转载 2017-03-15 13:07:20 · 459 阅读 · 0 评论 -
使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转) 出处:http://www.cnblogs.com/lichenwei/p/4145696.html
使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)出处:http://www.cnblogs.com/lichenwei/p/4145696.htmlMybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。转载 2017-06-01 16:55:26 · 872 阅读 · 0 评论 -
spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除 写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天
spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除原文链接:http://www.cnblogs.com/jianjianyang/p/4938765.html写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天主题有所感触。不多说了,开干!注:引入jar转载 2017-07-13 11:36:29 · 441 阅读 · 0 评论 -
Java NIO:NIO概述
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。 以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.Selector 若有不正之处,转载 2017-07-13 11:11:38 · 261 阅读 · 0 评论 -
【高并发编程】再谈同步、异步、阻塞、非阻塞
原文:http://blog.youkuaiyun.com/xxxxxx91116/article/details/51233785在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。转载 2017-07-13 13:44:22 · 507 阅读 · 0 评论 -
java 用redis如何处理电商平台,秒杀、抢购超卖
原文链接:http://blog.youkuaiyun.com/u012116196/article/details/51782934#reply一、刚来公司时间不长,看到公司原来的同事写了这样一段代码,下面贴出来:1、这是在一个方法调用下面代码的部分:[java] view plain copy if (!this.checkSoldCountByRedisDat转载 2017-07-21 11:04:22 · 732 阅读 · 0 评论 -
深入Java机制(一)--反射机制和动态代理机制
原文:http://www.jianshu.com/u/8dad2b82bce7本系列我将会把自己的学习到Java机制的笔记整理一遍,结合各大实例,从反射机制到动态代理到类加载等等......大家看到有错麻烦请指出。今天讲讲反射机制以及动态代理机制(含代理模式、源码阅读以及对比静态代理),而且基本现在的主流框架都应用了反射机制,如spring、MyBatis、Hibernate等等,这就有转载 2017-07-31 13:41:37 · 454 阅读 · 0 评论 -
一次性批量插入数据库时,导致CPU使用率突然很高,无法成功执行插入
1 问题描述原文:http://www.jianshu.com/p/30ca7189c43f当一次性生成大量优惠券时,发现后台cpu使用率突然很高,无法成功生成券。2 排查过程发现DAO层的Mapper.xml配置文件中,插入的SQL配置如下:【不正常】insert id="batchInsert" useGeneratedKeys="true" keyProper转载 2017-07-31 14:12:37 · 3112 阅读 · 0 评论