- 博客(42)
- 资源 (2)
- 收藏
- 关注
原创 AQS实现原理
AQS实现原理标记锁资源的占用情况private volatile int state;ReentrantLock实现公平锁和非公平锁加锁: 通过ReentrantLock的加锁方法Lock进行加锁操作。 会调用到内部类Sync的Lock方法,由于Sync#lock是抽象方法,根据ReentrantLock初始化选择的公平锁和非公平锁,执行相关内部类的Lock方法,本质上都会执行AQS的Acquire方法。 ...
2020-09-02 19:26:13 186
原创 Redis有序集合存储结构以及各方法的耗时
有序集合的编码可以是ziplist或者skiplist。ziplist编码的有序集合对象使用压缩列表作为底层实现, 每个集合元素使用两个紧挨在一起的压缩列表节点来保存, 第一个节点保存元素的成员(member), 而第二个元素则保存元素的分值(score)。压缩列表内的集合元素按分值从小到大进行排序, 分值较小的元素被放置在靠近表头的方向, 而分值较大的元素则被放置在靠近表尾的方向。举个例子, 如果我们执行以下ZADD命令, 那么服务器将创建一个有序集合对象作为price键的值...
2020-07-14 20:59:21 1010
原创 linux虚拟机基础配置
配置网卡cd /etc/sysconfig/network-scripts/第一个文件更改 ONBOOT=YES配置阿里云yum源输入命令cd /etc/yum.repos.d/输入命令yum -y install wgetwget http://mirrors.aliyun.com/repo/Centos-7.repo备份mv CentOs-Base.repo CentOs-Base....
2018-05-04 17:52:28 250
转载 RocketMQ原理之Consumer
consumer 1.启动有别于其他消息中间件由broker做负载均衡并主动向consumer投递消息,RocketMq是基于拉模式拉取消息,consumer做负载均衡并通过长轮询向broker拉消息。Consumer消费拉取的消息的方式有两种1. Push方式:rocketmq已经提供了很全面的实现,consumer通过长轮询拉取消息后回调MessageListen
2018-01-23 14:25:55 3100
转载 RocketMQ原理之Producer
producer producer 1.启动流程 Producer如何感知要发送消息的broker即brokerAddrTable中的值是怎么获得的,1. 发送消息的时候指定会指定topic,如果producer集合中没有会根据指定topic到namesrv获取topic发布信息TopicPublishInfo,并放入本地集合2. 定时
2018-01-23 14:16:19 1111
转载 mybatis原理解析
1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configuration对象的过程 3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 4. 涉及到的设计模式一、 MyBatis的初始化做了什么 任何框架的初始化,无非是
2017-11-29 17:07:29 269
转载 Java线程池ThreadPoolExecutor源码解析
线程池能够对线程进行有效的管理, 复用和数量上限的限制, 如果你需要创建多个线程来执行多个异步任务, 那么使用线程池显然要比频繁地 new Thread().start() 这种方式要好.Java 中的线程池是用 ThreadPoolExecutor 类来表示的. 我们今天就结合该类的源码来分析一下这个类内部对于线程的创建, 管理以及后台任务的调度等方面的执行原理. 我这里分析的是 Ora
2017-10-16 14:08:48 413
转载 git与idea
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场景二:小袁从远程Git仓库上获取项目源码场景三:小袁修改了部分源码,提交到远程仓库场景四:小张从远程仓库获取小袁的提交场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发场景六:小袁把分支提
2017-10-13 17:58:08 292
转载 MySQL优化
MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL逻辑架构,来自:高性能MySQLMySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优
2017-10-11 17:42:01 291
原创 JDBC 与C3p0连接数据库回顾
packagecom.ddcash.jdbc.jdbc;importcom.mchange.v2.c3p0.ComboPooledDataSource;importcom.mchange.v2.c3p0.DataSources;importjava.sql.*;/*** Description: xxxxx**@author
2017-10-11 17:27:02 535
转载 angular一些小知识
使用angular做一个项目,却又不是完全使用的,不过也算用过了angular,里面一些常见问题,在此总结下var routeApp = angular.module('allApp',['ngAnimate']);1、希望$http是post传值,在头部添加routeApp.config(function($httpProvider){ $httpPro
2017-09-29 09:46:02 408
原创 Java生成图形验证码
生成图形验证码:package common;/** * Description: xxxxx * * @author : zhoushiwen * Created_Date : 2017/9/8 15:23 */import org.junit.Test;import javax.imageio.ImageIO;import java.awt.*;import jav
2017-09-08 15:34:17 1022 1
转载 RabbitMQ的几种典型使用场景
RabbitMQ主页:https://www.rabbitmq.com/AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现。它主要包括以下组件:1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程。2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可
2017-09-04 17:22:47 281
转载 一次完整的HTTP请求与响应
一、 HTTP请求和响应步骤图片来自:理解Http请求与响应以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。二、TCP/IP协议TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet
2017-08-31 14:25:29 379
原创 ZooKeeper介绍
一、分布式协调技术在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术。那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。这时,有人可能会说这个简单,写一个调 度算法就轻松解决了。说这句话的人,可能对分布式系统不是很了解,所以才会出现这种误解。如果
2017-08-25 21:56:13 262
转载 RHEL环境搭建-NginxTomcatJavaDubboRabbitMQRedisNexusMySQL
安装RHEL虚拟机虚拟机软件:在本篇文章中,我是使用Vmware Workstation 9安装的虚拟机,其他常用的虚拟机软件还有Xen、KVM、VirtualBox等。ISO文件:rhel-server-6.2-x86_64-dvd.iso、rhel-server-6.2-i386-dvd.iso,根据操作系统选择64bit还是32bit。安装过程如下:
2017-08-24 17:42:45 744
转载 Git入门
在日常工作中,经常会用到Git操作。但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼。本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令。一、Git工作流程以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词。Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本
2017-08-24 13:54:23 285
转载 Springboot Dubbo ZooKeeper整合
一、为啥整合 Dubbo 实现 SOA二、运行 springboot-dubbo-server 和 springboot-dubbo-client 工程三、springboot-dubbo-server 和 springboot-dubbo-client 工程配置详解一、为啥整合 Dubbo 实现 SOADubbo 不单单只是高性能的 RPC 调用框架,更是
2017-08-24 11:49:19 2193
原创 OCR图片识别
简单识别验证码代码:public static void ocr(String fileName){File filepicF = new File(fileName);Ocr.setUp(); // one time setupOcr ocr = new Ocr(); // create a new OCR engineocr.startEngin
2017-08-15 16:20:25 2636 2
转载 NIO入门
java.nio用来提高I/O操作的效率。在nio包中主要包括以下几个类或接口:Buffer:缓冲区,用来临时存放输入或输出数据。Charset:用来把Unicode字符编码和其它字符编码互转。Channel:数据传输通道,用来把Buffer中的数据写入到数据源,或者把数据源中的数据读入到Buffer。Selector:用来支持异步I/O操作,也叫非阻塞I/O
2017-08-10 11:27:14 302
原创 CentOS+Jdk+Jboss+Dubbo配置教程
1.软件准备虚拟机:VMware-workstation-full-10.0.0-1295980.exeCentOS: CentOS-5.10-i386-bin-DVD-1of2.iso、CentOS-5.10-i386-bin-DVD-2of2.isoJdk7:jdk-7u45-linux-i586.rpmJboss7.1.1:jboss-as-7.1.1.Final.zip
2017-07-30 20:34:38 725
原创 Socket编程
创建服务端 ① 创建ServerSocket对象,绑定监听端口 ② 通过accept()方法监听客户端请求 ③ 连接建立后,通过输入流读取客户端发送的请求信息 ④ 通过输出流向客户端发送乡音信息 ⑤ 关闭相关资源public class SocketServerTest { public static void main(Stri
2017-06-28 14:16:28 195
原创 多线程之join
t.join()方法阻塞调用此方法的线程(calling thread),直到线程t完成,此线程再继续;通常用于在main()主线程内,等待其它线程完成再结束main()主线程。package thread;/** * T1执行之后T2 之后T3 * @author zhoushiwen * */public class Thread1 { public static
2017-06-27 17:24:04 187
转载 Disruptor之从Ringbuffer读取
如何使用Disruptor(二)从Ringbuffer读ConsumerBarrier与消费者这里我要稍微反过来介绍,因为总的来说读取数据这一过程比写数据要容易理解。假设通过一些“魔法”已经把数据写入到Ring Buffer了,怎样从Ring Buffer读出这些数据呢?(好,我开始后悔使用Paint/Gimp 了。尽管这是个购买绘图板的好借口,如果我继续写下去
2017-06-26 13:34:41 375
转载 Disruptor 写入 Ringbuffer
如何使用 Disruptor(三)写入 Ringbuffer这是 Disruptor 全方位解析(end-to-end view)中缺少的一章。当心,本文非常长。但是为了让你能联系上下文阅读,我还是决定把它们写进一篇博客里。本文的 重点 是:不要让 Ring 重叠;如何通知消费者;生产者一端的批处理;以及多个生产者如何协同工作。ProducerBarrier
2017-06-26 13:32:37 302
转载 Disruptor入门
获得Disruptor可以通过Maven或者下载jar来安装Disruptor。只要把对应的jar放在Java classpath就可以了。基本的事件生产和消费我们从一个简单的例子开始学习Disruptor:生产者传递一个long类型的值给消费者,而消费者消费这个数据的方式仅仅是把它打印出来。首先声明一个Event来包含需要传递的数据:public class LongEven
2017-06-26 10:22:02 267
转载 redis 配置文件详解
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 10
2017-06-23 14:00:41 313
转载 Redis的安装和部署
Redis的安装和部署基本知识1、Redis的数据类型: 字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)2、Redis和memcache相比的独特之处: (1)redis可以用来做存储(storge)、而memcache是来做缓存(cache)。这个特点主要是因为其有“持久化”功能
2017-06-23 13:37:44 201
原创 Java并发工具类CountDownLatch和CyclicBarrier
Java并发工具类CountDownLatch和CyclicBarrier1.CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作,其构造函数接收一个int型的参数作为计数器,若想等待N个点完成,就传人N。此处的N个点,可指N个线程,也可以是1个线程中的N个步骤。主要的方法为CountDown()和await()。当调用CountDow
2017-06-22 16:39:39 268
转载 Spring MVC请求处理流程
从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发 Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherSer
2017-06-22 13:54:57 546
转载 Executor,Executors,ExecutorService
1.Excutor 源码非常简单,只有一个execute(Runnable command)回调接口 public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a n
2017-06-21 18:01:28 284
转载 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印
缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;impor
2017-06-20 14:50:46 569
转载 HashMap的存储原理
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和
2017-06-20 14:42:27 657 2
原创 连接池技术
为什么要使用连接池数据库连接的建立及关闭资源消耗巨大。传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开、关闭该物理连接, 系统性严重受损。解决方案:数据库连接池(Connection Pool)。系统初始运行时,主动建立足够的连接,组成一个池.每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不再关闭,而是归还。
2017-06-20 14:34:46 460
原创 Servlet 中文乱码问题及解决方案剖析
一、常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码;3.getBytes() 是通过平台默认字符集进行编码; 二、中文乱码出现 在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为
2017-06-20 13:52:30 1999
原创 lombok 简单入门
lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。特别是相对于 POJO.lombok 的官方网址:http://projectlombok.org/ .eclipse / myeclipse 手动安装 lombok 1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini
2017-06-20 10:17:58 689
转载 Nginx 安装配置
Nginx 安装配置Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。Nginx 安装系统平台:CentOS release 6.6 (Final) 64位。一、安装编
2017-06-15 10:38:15 707
原创 activeMQ的安装与简单入门
安装acticerMQ 1 下载 http://activemq.apache.org/ 解压后,可以看目录下有以下文件和目录activemq-all-5.5.0.jar:所有MQ JAR包的集合,用于用户系统调用bin:其中包含MQ的启动脚本conf:包含MQ的所有配置文件data:日志文件及持久性消息数据ex
2017-06-14 17:17:45 345
原创 Java对于图片的操作
最近工作上用到图片旋转,所以来偏图片旋转的文章。其中碰到不少坑。以下实现了旋转90度的倍数。方便我们了解旋转是怎么做的 ,如果要旋转任意角度,可以用Java自带的thumbnails(文章后面介绍)import org.springframework.util.Base64Utils;import net.coobird.thumbnailator.Thumbnails;/**
2017-06-08 10:39:10 1294
原创 单例模式
单例模式有懒汉式和饿汉式 先来懒汉式public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton==null){
2017-06-07 15:21:22 205
zookeeper搭建集群
2018-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人