自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 简单玩转23种Java设计模式

什么是设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知...

2019-01-02 15:18:46 1664 0

原创 手把手教你定制一个夸夸群机器人

手把手教你定制一个夸夸群机器人 2019年3月,三八妇女节送女友什么礼物好?最近有女网友在网上吐槽,男友把她拉进百人群,群友整整夸了她三分钟。“他说是某宝上卖的夸夸群,这种沙雕男朋友还留着么?” 夸人还能挣钱?你在某宝、某鱼等平台输入搜索"夸夸群",会发现不少商品都有成交记录。...

2019-03-23 15:46:24 932 2

原创 小白读Dubbo源码01 - 从零开始

所有源码基于dubbo 2.7.1版本,请自行从github上下载源码。 1. 源码demo运行环境准备 从demo跑起,从dubbo的运行过程来解读源码。目前大家熟悉可能还是xml配置的形式,所以选择xml版的demo。 通常实际项目中都是以zookeeper作为dubbo的注册中心的...

2019-03-20 19:03:26 196 0

原创 Ant Design, 报错TypeError [ERR_INVALID_CALLBACK]: Callback must be a function

使用Ant-Tool构建Ant Design,执行命令如下 dora -p 8001 --plugins “webpack,hmr,proxy,livereload” 报错 Caught exception: TypeError [ERR_INVALID_CALLBACK]: Call...

2019-03-16 17:24:08 798 0

转载 npm install 、npm install --save 和 npm install --save-dev的区别

转载自:https://blog.csdn.net/github_38851471/article/details/79495526 相同点 三者都会本地安装包到项目的node_modules目录中 区别 区别在于对项目package.json的修改,npm install不会修改pack...

2019-03-16 10:07:42 11861 1

转载 log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析

转自:https://blog.csdn.net/kxcfzyk/article/details/38613861 注:下文中的“桥接”、“转调”、“绑定”等词基本都是同一个概念。 log4j-over-slf4j和slf4j-log4j12是跟java日志系统相关的两个jar包,当它们同时出...

2019-03-10 20:51:41 350 0

原创 Java SPI解析

什么是SPI? SPI 全称为 (Service Provider Interface) 服务提供接口,是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制, 比如有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。 Java SPI 应用实例 当服务的提供者提供了一种...

2019-03-09 22:36:19 93 0

转载 JDK8函数式接口Function、Consumer、Predicate、Supplier

转自:https://blog.csdn.net/z834410038/article/details/77370785 备注1:观察发现,函数式接口下共有 1、三种方法  1.1 唯一的抽象方法  1.2 使用default定义普通方法(默认方法),通过对象调用。  实现接口后,因为默认方...

2019-02-17 21:48:21 916 0

转载 JVM字节码指令

转载自:https://www.cnblogs.com/tenghoo/p/jvm_opcodejvm.html Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。 基本...

2019-02-17 14:29:56 252 0

转载 JVM常用参数

堆配置 -Xms //初始堆大小 -Xmx //最大堆大小 -Xmn2g //设置年轻代大小为2G。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到JVM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的3/8。 -XX:NewSize=n //设置年轻代初始...

2019-02-14 16:00:41 148 0

转载 dubbo 服务消费方调用过程

转自:https://blog.csdn.net/meilong_whpu/article/details/72178447  消费端调用 1、在业务层代码中调用远程接口的方法时,实际上是调用的本地创建的代理对象。即在《4.4.3 创建服务类的本地代理》中创建的代理对象。 2、在该代理对...

2019-02-08 17:44:13 1043 0

转载 dubbo泛化实现

转自:https://www.cnblogs.com/jmbkeyes/p/7537795.html 实现泛化调用 泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 ...

2019-02-03 21:55:56 365 0

转载 Java SPI机制简介,及dubbo SPI

转自:https://www.jianshu.com/p/46aa69643c97 SPI 简介 SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, ...

2019-02-03 18:10:07 790 0

转载 ZooKeeper数据模型

转自:https://blog.csdn.net/tomato__/article/details/78549368  Zookeeper数据模型 Zookeeper的结构类似标准的文件系统,但这个文件系统中没有文件和目录,而是统一使用节点(node)的概念,称为ZNode。ZNode作为保存...

2019-01-29 14:27:18 63 0

转载 使用zookeeper封装组件curator的锁,发现zookeeper大量临时节点没有被删除

转自:https://www.cnblogs.com/xiaodu1993/articles/xiaodu1993.html 使用zookeeper封装组件curator的锁,发现zookeeper大量临时节点没有被删除 现象:zookeeper集群大量临时节点没有释放掉,导致集群响应很慢 ...

2019-01-29 13:56:08 2197 0

转载 Paxos算法原理与推导

转自:https://www.cnblogs.com/linbingdong/p/6253479.html Paxos算法在分布式领域具有非常重要的地位。但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难。 网上有很多讲解Paxos算法的文章,但是质量参差不齐。看了很多关于...

2019-01-28 20:59:13 155 0

转载 ZooKeeper监听机制

转自:http://www.cnblogs.com/viviman/archive/2013/03/11/2954118.html 前言 Zookeeper的监听机制很多人都踩过坑,感觉实现了watcher接口,后面节点的变化都会一一推送过来,然而并非如此。 Watch机制官方声明:一个Wa...

2019-01-28 12:54:50 1517 0

转载 Jedis常见异常汇总

转自:https://yq.aliyun.com/articles/236384?spm=a2c4e.11155435.0.0.e21e2612uQAVoW#cc1 Jedis虽然使用起来比较简单,但是如果不能根据使用场景设置合理的参数(例如连接池参数),不合理的使用一些功能(例如Lua和事务)...

2019-01-28 12:17:28 334 0

转载 Netty4实战 - TCP粘包&拆包解决方案

转自:https://www.jianshu.com/p/d89002b57339 Netty是目前业界最流行的NIO框架之一,它的健壮性、高性能、可定制和可扩展性在同类框架中都是首屈一指。它已经得到了成百上千的商业项目的验证,例如Hadoop的RPC框架Avro就使用了Netty作为底层通信框...

2019-01-23 14:46:15 94 0

转载 Netty4 实现心跳机制与断线重连

转自:https://segmentfault.com/a/1190000006931568 基础 何为心跳 顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 为什么需要心跳 因为网络...

2019-01-23 14:38:47 1878 1

转载 ByteArrayOutputStream或ByteArrayInputStream不需要关闭流原因分析

转自:https://blog.csdn.net/u012668925/article/details/53941471  在解压图片的时候发现ByteArrayOutputStream不需要关闭,为啥呢?  ByteArrayOutputStream或ByteArrayInputStream是...

2019-01-21 15:58:46 3790 0

转载 高效Java技巧重写equals方法时应当重写hashCode方法

转自:http://tantanit.com/java-always-override-hashcode-when-override-equals/ hashCode需满足的条件 当equals方法中涉及的参数没有改变时,hashCode应保持不变 如果根据equals方法,两个对象是相等的...

2019-01-19 12:06:52 1176 0

原创 Netty io.netty.util.IllegalReferenceCountException: refCnt: 0 问题解决

运行时报错  io.netty.util.IllegalReferenceCountException: refCnt: 0 at io.netty.buffer.AbstractByteBuf.ensureAccessible(AbstractByteBuf.java:1450) at ...

2019-01-17 22:59:24 1794 0

原创 如何用Netty实现一个简单HTTP服务器

本文代码基于netty 4.1版本。 既然你搜到这篇文章了,说明对netty有所了解了,不废话直接上例子,基本上根据netty官网DEMO修改而成。 HttpServer public class HttpServer { private int port; public...

2019-01-15 23:28:09 995 0

转载 Java NIO开发需要注意的坑

转自:https://www.cnblogs.com/pingh/p/3224990.html 陷阱1:处理事件忘记移除key 在select返回值大于0的情况下,循环处理。 Selector.selectedKeys集合,每处理一个必须从Set中移除。 Iterator<S...

2019-01-15 17:10:56 619 0

转载 maven快照版本和发布版本

转自:https://www.cnblogs.com/EasonJim/p/6852840.html 1. 场景 一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块。举个例子,设想一个团队开发应用的前端,项目为app-ui(app-ui.jar:1.0),而另一...

2019-01-12 14:36:47 1262 0

转载 Linux下I/O多路复用系统调用(select, poll, epoll)介绍

转自:https://zhuanlan.zhihu.com/p/22834126 1. 概念引入 I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操...

2019-01-11 18:16:25 985 0

转载 读Socket流时产生阻塞的解决方案(粘包拆包问题)

转自:https://www.cnblogs.com/qhyuan1992/p/5385289.html 其实最终讨论的是TCP通信过程中的粘包拆包(半包)问题。 在用socket写一个服务器时遇到了问题于是将主要的问题抽了出来,代码如下,由于代码很简单于是也没有注释。 public cl...

2019-01-08 21:38:42 724 0

转载 深入分析 Java I/O 的工作机制

转自:https://www.ibm.com/developerworks/cn/java/j-lo-javaio/ Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在...

2019-01-02 14:22:15 55 0

转载 排序算法时间复杂度、空间复杂度、稳定性比较

转自:https://blog.csdn.net/yushiyi6453/article/details/76407640 排序算法分类   排序大的分类可以分为两种:内排序和外排序。   放在内存的称为内排序,需要使用外存的称为外排序。 排序算法的时间复杂度和空间复杂度 排...

2018-12-31 14:09:13 3323 0

原创 B树、B+树、B*树

简介       B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。特此说...

2018-12-28 13:18:25 271 0

转载 Java线程池

线程池的作用 减少资源的消耗 通过重复利用已创建的线程来减少创建线程和销毁线程的开销。 提高响应速度  每次请求到来时,由于线程的创建已经完成,故可以直接执行任务,因此提高了响应速度。 提高线程的可管理性  线程是一种稀缺资源,若不加以限制,不仅会占用大量资源,而且会影响系统的稳定性。...

2018-12-27 15:26:20 45 0

转载 Fork/Join框架解析

1.概述 java.util.concurrent.ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。本文中对Fork/Join框架的讲解,基于JDK1.8+中的Fork/Join框...

2018-12-24 16:14:40 213 0

转载 ConCurrentHashMap JDK1.7 和 JDK1.8 的区别

转自:https://www.jianshu.com/p/933289f27270 ConCurrentHashMap 1.8 相比 1.7的话,主要改变为: 去除 Segment + HashEntry + Unsafe 的实现, 改为 Synchronized + CAS + Nod...

2018-12-20 17:00:05 756 0

转载 StampedLock浅析

转自:http://www.importnew.com/14941.html  简述 ReentrantReadWriteLock 在沒有任何读写锁时,才可以取得写入锁,这可用于实现了悲观读取(Pessimistic Reading),即如果执行中进行读取时,经常可能有另一执行要写入的需求,为...

2018-12-19 14:31:13 810 0

转载 Java读写锁ReentrantReadWriteLock原理详解

ReentrantLock属于排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个线程访问,但是在写线程访问时,所有的读和其他写线程都被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提...

2018-12-18 16:15:20 574 0

原创 Java中instanceof和isInstance的区别

1. instanceof 是一个操作符 使用方法: A a = new A(); if (a instanceof A) { } 表示对象a是否是A的实例对象 一个对象是自身类的一个实例对象 一个对象是自身类、父类和接口的一个实例对象 所有对象都是Object类的实例对象 凡是...

2018-12-16 15:11:09 234 0

转载 JAVA多线程之中断机制(如何处理中断?)

转载自:https://www.cnblogs.com/hapjin/p/5450779.html 介绍 这篇文章主要记录使用 interrupt() 方法中断线程,以及如何对InterruptedException进行处理。感觉对InterruptedException异常进行处理是一件谨慎...

2018-12-15 15:51:53 1429 1

转载 Java并发工具类Phaser

Phaser由java7中推出,是Java SE 7中新增的一个使用同步工具,在功能上面它与CyclicBarrier、CountDownLatch有些重叠,但是它提供了更加灵活、强大的用法。 CyclicBarrier,允许一组线程互相等待,直到到达某个公共屏障点。它提供的await()可以实...

2018-12-14 16:39:58 71 0

转载 从JVM源码看synchronized

索引 synchronized的使用 修饰实例方法 修饰静态方法 修饰代码块 总结 Synchronzied的底层原理 对象头和内置锁(ObjectMonitor) synchronzied的底层原理 synchronized的优化 偏向锁 轻量级锁 轻...

2018-12-12 12:04:32 606 0

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