- 博客(19)
- 资源 (28)
- 收藏
- 关注
原创 多线程操作中为什么使用while而不是if来做判断状态是否就绪
假设有三个线程ABC,A为生产者线程,B为消费者线程,C为破坏者线程。三个线程都进入一个共享对象的方法(当然不是同时进入),C进入的时候,通过调用notifyAll的方法,把所有的wait唤醒,如果用了if,代码会往下进行,会导致无法获取到元素或者删除元素。如果是while就不一样了,就会继续检查条件。1.容器类EventStoage.javapackage sss;import java....
2018-05-24 23:34:00 2300 2
转载 一个经典例子让你彻彻底底理解java回调机制
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Class A实现接口CallBack callback——背景...
2018-05-24 19:30:54 131
转载 整数分解为若干项之和
将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…。编程求出正整数N的所有整数分解式子。输入格式:每个输入包含一个测试用例,即正整数N (0 < N ≤ 30)。输出格式:按递增顺序输出N的所有整数分解式子。递增顺序是指:对于两个分解序列 N1=n1,n2,⋯ 和 N2=m1,m2,⋯,若存在 i 使得 n1=m1, ⋯ , ni=mi,但...
2018-05-22 22:09:40 2989
转载 对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
目录通过 CompositeByteBuf 实现零拷贝通过 wrap 操作实现零拷贝通过 slice 操作实现零拷贝通过 FileRegion 实现零拷贝此文章已同步发布在我的 segmentfault 专栏.根据 Wiki 对 Zero-copy 的定义:"Zero-copy" describes computer operations in which the CPU does not per...
2018-05-22 10:38:18 296
转载 java.nio.Buffer 中的 flip()方法
在Java NIO编程中,对缓冲区操作常常需要使用 java.nio.Buffer中的 flip()方法。 Buffer 中的 flip() 方法涉及到 Buffer 中的capacity、position、limit三个概念。 capacity:在读/写模式下都是固定的,就是我们分配的缓冲大小(容量)。 position:类似于读/写指针,表示当前读(写)到什么位置。...
2018-05-22 09:42:21 333
原创 Git 学习之旅
0.git不可不知道的东西 a.工作区 也就是的本地磁盘用到的地方,比如说你的Java项目demo在d:\demo,那么这个地址就是你的工作区,当然前提是你这个目录被git纳入了版本库管理(在d:\demo 目录运行 git init 就可以在当前目录生成一个.git目录,表明已经创建了一个版本库)。 b.暂存区 这个概念非常重要,一个文件加入了暂存区表明该文件可以被g...
2018-05-20 11:32:04 179
转载 细说java动态代理和cglib的动态代理
提到代理,想必大家对设计模式中的静态代理和动态代理都比较熟悉,小编之前在博客中对动态和静态代理进行了对比,这篇博文就只探讨java动态代理和cglib动态代理之间的区别;♚ 静态代理的温习 在我们使用静态代理的时候,每一个代理类只能为一个接口提供服务,这这样一来在程序开发中会产生过多的代理,而且所有的代理操作除了调用的方法不一样之外,其他的操作都是相同的,这样就会造成过多的重...
2018-05-19 13:54:45 372
转载 jvm住内存与工作内存,内存模型反映的java多线程问题
找了多篇文章,自己将重点以及可以让人深入理解jvm以及多线程的知识做总结,作为自己的学习笔记:一、jvm主内存与工作内存 首先,JVM将内存组织为主内存和工作内存两个部分。主内存中主要包括本地方法区和堆。每个线程都有一个工作内存,工作内存中主要包括两个部分,一个是属于该线程的栈和对主存部分变量拷贝的寄存器。 1.所有的变量都存储在主内存中(虚拟机内存的一部分...
2018-05-18 19:25:11 230
转载 Socket 服务端使用多线程实现多客户端通讯实例
socket通信原理 Java多线程实现Socket通讯 1、服务端import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * <p> * 基于socket通讯-服务端 * <p> * * @author <a href="mailt...
2018-05-17 10:41:56 340
原创 读写锁和两种同步方式的对比
读写锁ReentrantReadWriteLock概述大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有 完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低。所以在JDK中提供了一种读写锁 ReentrantReadWriteLock,使用它可以加快运行效率。读写锁表示两个锁,一个是读操作相关的锁,称为共享锁;另一个是写操作相关的锁,称...
2018-05-16 20:03:05 157
转载 图解JVM垃圾回收算法
1 简单介绍下----->垃圾回收概念GC中的垃圾,指的是存在于内存中的、不会再被使用的对象。而垃圾回收就是把那些不再被使用的对象进行清除,收回占用的内存空间。如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。如果大量不会被使用的对象一致占着空间不放,如果应用程序需要内存空间,没有多余的内存空间供其使用的话,就会导致内存...
2018-05-15 23:21:19 113
原创 Spring AOP源码分析文字版
/** * AOP:【动态代理】 * 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式; * * 1、导入aop模块;Spring AOP:(spring-aspects) * 2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx) * 3、定义一个日志切面类(LogAsp...
2018-05-15 23:12:58 123
原创 Spring IOC容器启动源码分析文字版
Spring容器的refresh()【创建刷新】;1、prepareRefresh()刷新前的预处理; 1)、initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法; 2)、getEnvironment().validateRequiredProperties();检验属性的合法等 3)、earlyApplicationEvents= new...
2018-05-15 23:11:00 733 1
原创 springMVC实现 MultipartFile 多文件上传
1、Maven引入所需的 jar 包(或自行下载) <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</ve...
2018-05-12 19:19:38 861
转载 ConcurrentHashMap实现原理及源码分析
ConcurrentHashMap实现原理及源码分析 ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分...
2018-05-11 16:35:50 149
转载 hashMap
一、传统 HashMap的缺点(1)JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。(2)当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了它的优势。(3)针对这种情况,...
2018-05-11 15:53:21 139
转载 SpringMVC学习系列----3---视图解析流程分析
本篇主要讲述SpringMVC如何解析、渲染视图并转发返回结果对象。请求处理方法执行完成后,最终返回一个ModelAndView对象。对于那些返回String,view或者ModelMap等类型的处理方法,SpringMVC也会在内部将他们装配成一个ModelAndView对象。它包含了逻辑名和模型对象,其中的mo...
2018-05-11 14:03:36 313
原创 SpringMVC学习系列----1---发送get/post/put/delete请求
1.前端页面 Test Rest Get2. 控制器/** * Rest 风格的 URL. 以 CRUD 为例: 新增: /order POST 修改: /order/1 PUT update?id=1 获取: * /order/1 GET get?id=1 删除: /
2018-05-09 20:05:39 422
原创 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。前两天也出现过这个问题,网上找了一个比较流行的方法(见方法一),搞定了。今天又用这个试了试,却搞不定,在网上找了半天,终于发现是因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际
2018-05-07 19:54:00 472
spring整合redis小demo
2018-04-09
dubbo/zookeeper
2018-03-13
架构师特刊:深入浅出Netty.pdf
2017-12-24
JSP+Servlet+Tomcat应用开发从零开始学修正版
2016-06-02
带括号的四则运算表达式js实现
2016-04-29
jsp ajax 文件上传(包含图片)
2015-10-29
JSP+Servlet+Tomcat应用开发从零开始学
2015-07-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人