自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

怪盗基德

心纯净,行至美。

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java线程池

java线程池。在jdk5之后为我们提供了线程池,只需要使用API,不用去考虑线程池里特殊的处理机制。jdk5线程池分好多种,固定尺寸的线程池、可变尺寸连接池等。常用的是ThreadPoolExecutor,它的构造方法如下:public ThreadPoolExecutor(int corePoolSize, int max

2017-04-30 21:50:45 1338

原创 多线程:为什么在while循环中加入System.out.println,线程可以停止

在论坛看到这样一个代码,public class StopThread { private static boolean stopRequested; public static void main(String[] args) throws InterruptedException { Thread backgroundThread = new Thre

2017-04-28 13:37:21 3859 7

原创 【JDk源码解析之四】Vector源码解析

1.Vector也是集合类,继承和实现方式如下,它也是实现了list接口。很多博客说Vector和ArrayList基本都是一样的,只不过Vector是线程安全的。但是具体是什么样的,还需要简单看看源码。当然其实还是有区别的,只是区别不大。2.Vector的属性定义具体的三个属性 解释看图中注释。Vector没有采取ArrayList临界值扩容的办法,而是每次不够的时候,直接根据c

2017-04-16 00:32:42 361

原创 【JDk源码解析之三】HashMap源码解析

1.HashMap的实现了Map接口,继承于AbstractMap2.我们常说HashMap是数组加链表的实现形式,那么就具体来看看。HashMap的主要属性定义如下图。先说数组+链表,数组只的就是table[]数组,这个数组是Entry类型的,而Entry类类型于我们常用的Node节点,Entry有(k,v,next)属性。默认初始化容量为13.具体方法分析3.1 构

2017-04-15 19:27:30 400

原创 【JDk源码解析之二】LinkedList源码解析

1.LinkedList的继承关系如图,和ArrayList一样都实现了List接口。但是ArrayList是基于动态数组的实现,LinkedList是基于链表的实现。2.LinkedList是基于链表实现的,增加和删除容易,查找相对费时间。首先来看LinkedList的Node节点定义,如图所示。可以看到Node节点不仅有只向下一个节点的引用,还有只向前一个节点的引用,是双向

2017-04-15 13:46:33 383

原创 【JDk源码解析之一】ArrayList源码解析

1.ArrayList的继承关系如图所示:2.宏观上说,ArrayList是基于动态数组实现的,数组具有按索引查找的特性,所以访问很快,适合经常查询的数据。3.具体源码解析。   为什么说ArrayList是动态数组,这个可以看它的构造函数。如下图所示,有两个构造方法,存放元素的elementData是一个数组,同时被初始化。ArrayList的放的元素就是放      在这个

2017-04-15 02:12:21 5078 3

转载 Spring中Ordered接口简介

目录前言Ordered接口介绍Ordered接口在Spring中的使用总结前言Spring中提供了一个Ordered接口。Ordered接口,顾名思义,就是用来排序的。Spring是一个大量使用策略设计模式的框架,这意味着有很多相同接口的实现类,那么必定会有优先级的问题。于是,Spring就提供了Ordered这个接口,来处理相同接口实现类的优先级问题。

2017-04-30 16:08:14 366

转载 SpringMVC异常处理机制详解

目录前言重要接口和类介绍HandlerExceptionResolver接口AbstractHandlerExceptionResolver抽象类AbstractHandlerMethodExceptionResolver抽象类ExceptionHandlerExceptionResolver类DefaultHandlerExceptionResolver类ResponseStat

2017-04-30 16:07:04 2293

转载 SpringMVC视图机制详解

目录前言重要接口和类介绍源码分析编码自定义的ViewResolver总结参考资料前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html本文将分析SpringMVC的视图这部分

2017-04-30 16:05:28 462 1

转载 SpringMVC拦截器详解

目录前言重要接口及类介绍源码分析拦截器的配置编写自定义的拦截器总结总结前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html拦截器是每个Web框架必备的功能,也是个老生常谈的

2017-04-30 16:04:26 545

转载 SpringMVC类型转换、数据绑定详解

目录前言属性编辑器介绍重要接口和类介绍部分类和接口测试源码分析编写自定义的属性编辑器总结参考资料前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.htmlpublic String

2017-04-30 16:03:29 410

转载 SpringMVC关于json、xml自动转换的原理研究

目录前言现象源码分析实例讲解关于配置总结参考资料前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html现象本文使用的demo基于maven,是根据入门blog的例子继

2017-04-30 16:01:16 360

转载 详解SpringMVC中Controller的方法中参数的工作原理

目录前言现象源码分析HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用常用HandlerMethodArgumentResolver介绍常用HandlerMethodR

2017-04-30 15:59:23 557

转载 详解SpringMVC请求的时候是如何找到正确的Controller

目录前言源码分析重要接口介绍SpringMVC初始化的时候做了什么HandlerExecutionChain的获取实例资源文件映射总结参考资料前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-intr

2017-04-30 15:58:19 1446

转载 SpringMVC核心分发器DispatcherServlet分析

目录前言DispatcherServlet初始化过程DispatcherServlet处理请求过程总结参考资料前言SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html本文将分析

2017-04-30 15:57:08 1023

转载 SpringMVC入门

目录介绍实例总结参考资料介绍SpringMVC是一款Web MVC框架。 它跟Struts框架类似,是目前主流的Web MVC框架之一。本文通过实例来介绍SpringMVC的入门知识。实例本文所写的实例是一个员工的CRUD demo。 用idea编写,基于maven, Web框架使用SpringMVC,视图采取Freemarker技术,数据库使用My

2017-04-30 15:55:57 206

转载 Servlet容器Tomcat中web.xml中url-pattern的配置详解

目录前言现象源码分析实战例子总结参考资料前言今天研究了一下tomcat上web.xml配置文件中url-pattern的问题。这个问题其实毕业前就困扰着我,当时忙于找工作。 找到工作之后一直忙,也就没时间顾虑这个问题了。 说到底还是自己懒了,没花时间来研究。今天看了tomcat的部分源码 了解了这个url-pattern的机制。  下面让我一一道来。

2017-04-30 15:54:30 548

转载 [深受启发]java线程内存模型,线程、工作内存、主内存

java线程内存模型线程、工作内存、主内存三者之间的交互关系图: key edeas所有线程共享主内存每个线程有自己的工作内存refreshing local memory to/from main memory must  comply to JMM rules 产生线程安全的原因线程的working memor

2017-04-28 20:02:56 331

原创 Java网络编程- IO多路复用(多Reactor)(主从式Reactor)

1. 介绍本篇文章将IO多路复用(多线程)中的单Reactor+多线程网络模型做了改进,把Reactor拆成两个角色Main Reactor及Sub Reactor,以提升效能与资源利用率​​。Main Reactor:负责监听外部的连线请求,并派发给Acceptor处理。故Main Reactor中的selector只有注册OP_ACCEPT事件,也只能监听O

2017-04-28 11:07:38 3429

原创 Java网络编程-IO多路复用(多线程)

1. 简述IO复用网路模型中的角色Handler,将以状态模式(State Pattern)实现,并且将Handler接收完网络消息后的业务逻辑处理交由工作线程实现,所有的工作线程以线程池来维护。2. 网络模型3. 代码实现[TCPReactor.Java][ja

2017-04-28 11:06:13 1430

原创 Java网络编程-IO多路复用(单线程)

1. 简介IO多路复用(multiplexing)属于同步IO网络模型是以Reactor模式实现常见的IO多路复用应用有:select、poll、epoll有关于select的应用方式,请参阅[C语言] 基于Linux的一对一Socket简易聊天程序实例本篇文章采用Java的NIO框架来实现单线程的IO多路复用2. React

2017-04-28 11:05:00 5936

转载 Java IO多路复用技术详解

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexi

2017-04-28 09:49:58 17311 3

原创 Java利用BlockingQueue实现生产者和消费者模式

生产者import java.util.concurrent.BlockingQueue;public class Producer implements Runnable { private BlockingQueue queue; public Producer(BlockingQueue q){ this.queue=q; }

2017-04-26 00:07:16 542 1

原创 一共有n个人,给定m对好友关系,好友的好友也算一个朋友圈,问n个人中一共有几个朋友

题目:假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果

2017-04-25 21:46:21 2303

原创 从浏览器输入URL到网页加载完成,发生了什么?

这个我打算分为两部门来说。第一部分是从键盘输入到屏幕显示URL;第二部分是按下回车后,到页面加载的过程。第一部分在(),本文将着重讨论第二部分。一、DNS解析DNS解析的过程是一个先在本地机器上找,然后去网络上找的过程。首先,会先去浏览器缓存中查找,没有就去本机的hosts文件找。如果都没找到相应域名的ip,那么就去网络上找。网络中查找的第一步就是先去本地的路由器找,本地路由器

2017-04-25 13:11:16 740

转载 从输入 URL 到页面加载完成的过程中都发生了什么事情?

为了便于理解,我将整个过程分为了六个问题来展开。第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情?从触屏到 CPU首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互。触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接覆盖在显示屏上的,不过最近出现了 3 种嵌入到显示屏中的技术

2017-04-25 13:11:00 2290

原创 leetcode上的回溯法总结

Subsets : https://leetcode.com/problems/subsets/public List> subsets(int[] nums) { List> list = new ArrayList<>(); Arrays.sort(nums); backtrack(list, new ArrayList<>(), nums, 0); ret

2017-04-24 14:09:58 328

原创 leetcode 216 Combination Sum II (回溯法)

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.Example 1:Inpu

2017-04-24 12:44:39 247

原创 leetcode 39 Combination Sum (回溯法)

public class Solution { public List> combinationSum(int[] candidates, int target) { List> res = new ArrayList<>(); List recur = new ArrayList<>(); helper(res,recur,target,c

2017-04-24 12:41:26 350

原创 Java关键字final的理解

ava中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。final关键字的含义?final在Java中是一个保留的关键字,可以

2017-04-22 20:26:07 244

转载 分布式消息队列RocketMQ--事务消息--解决分布式事务的最佳实践

说到分布式事务,就会谈到那个经典的”账号转账”问题:2个账号,分布处于2个不同的DB,或者说2个不同的子系统里面,A要扣钱,B要加钱,如何保证原子性?一般的思路都是通过消息中间件来实现“最终一致性”:A系统扣钱,然后发条消息给中间件,B系统接收此消息,进行加钱。但这里面有个问题:A是先update DB,后发送消息呢? 还是先发送消息,后update DB?假设先updat

2017-04-22 18:57:58 1234

转载 分布式消息队列RocketMQ源码分析之3 -- Consumer负载均衡机制 -- Rebalance

同Kafka一样,RocketMQ也需要探讨一个问题:如何把一个topic的多个queue分摊给不同的consumer,也就是负载均衡问题。在讨论这个问题之前,我们先看一下Client的整体架构。Producer与Consumer类体系从下图可以看出以下几点: (1)Producer与Consumer的共同逻辑,封装在MQClientInstance,MQClientA

2017-04-21 21:44:06 555

转载 分布式消息队列RocketMQ源码分析之4 -- Consumer负载均衡与Kafka的Consumer负载均衡之不同点

在上1篇里,我们主要从使用层面介绍了Consumer的负载均衡机制。这一篇,我们将深入到源码内部,深入分析负载均衡的过程。如果把RocketMQ的负载均衡和Kafka的对比一下,我们会发现有一些重要的不同之处。收集信息 – 存储在Broker还是NameServer上面?要做负载均衡,首先要解决的一个问题就是收集信息。所谓收集信息,就是我得知道每一个consumer g

2017-04-19 23:04:26 722

转载 分布式消息队列RocketMQ源码分析之2 -- Broker与NameServer心跳机制

我们知道,Kafka是通过ZK的临时节点来监测Broker的死亡的。当一个Broker挂了之后,ZK上面对应的临时节点被删除,同时其他Broker收到通知。那么在RocketMQ中,对应的NameServer是如何判断一个Broker的死亡呢?NameSrv监测Broker的死亡机制之一:监测连接断掉当Broker和NameSrv之间的长连接断掉之后,下面的Chan

2017-04-19 23:02:16 900

转载 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?

我们知道,在早期的RocketMQ版本中,是有依赖ZK的。而现在的版本中,是去掉了对ZK的依赖,转而使用自己开发的NameSrv。并且这个NameSrv是无状态的,你可以随意的部署多台,其代码也非常简单,非常轻量。那不禁要问了:ZooKeeper是业界用来管理集群的一个非常常用的中间件,比如Kafka就是依赖的ZK。那为什么RocketMQ要自己造轮子,自己做集群的管理呢?纯粹就是

2017-04-16 16:50:34 2128

转载 分布式消息队列RocketMQ源码分析之1 -- Topic路由数据结构解析 -- topicRoute与topicPublishInfo与queueId

在前1篇RokcetMQ与Kafka架构差异一文中,我们已经讨论了2者在Topic的路由结构,也即topic/partition与物理机器的映射关系上的巨大差异。这个差异也是2者在架构上的一个巨大差异点,也是导致RocketMQ可以去除ZK依赖的一个重要原因。本篇将接着这个话题,进一步从源码角度深度解析Topic的路由数据结构。至所以把“topic路由结构“作为源码分析的首篇,是因为这个话

2017-04-16 16:49:21 2093

原创 Java反射机制

反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。【翻译于 官方文档】本篇将从以下几个方面讲述反射的知识:calss的使用方法的反射构造函数的反射成员变量的反射一、什么是class类在面向对象的世界里,万物皆对象。

2017-04-16 13:01:10 645 1

原创 List Map Set的比较

List特点:元素有放入顺序,元素可重复Map特点:元素按键值对存储,无放入顺序Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)List接口有三个实现类:LinkedList,ArrayList,VectorLinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身

2017-04-15 22:57:47 260

基于单片机的录音笔

基于PIC单片机的录音笔设计方案,能够实现基本的录音和播放功能

2013-07-01

电子宠物设计

基于单片机的+电子宠物设计方案,通过这个方案可以使得宠物具有说话功能。

2013-07-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除