自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呼吸吐纳的博客

不作就不会死,但是会很难受~

原创 Java--NIO(三)

Socket—NIONIO—TCP—Client & BIO–TCP—ServerNIO—TCP—Clientpublic class SocketNio { public static void main(String[] args) throws Exception { Client nioClient = new Client(); nioClient.init(...

2019-03-19 08:46:58 62

原创 Java--NIO (二)

文件操作NIOFileChannelpublic static void main(String[] args) { String path = "F:\\test\\1.txt"; RandomAccessFile raf = null; StringBuffer sb = new StringBuffer(); char c; try { raf = new Ra...

2019-03-19 07:52:56 109

原创 Java--NIO(一)

NIOjava.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectorsChannel 和 Buffer基本上,所有的 IO...

2019-03-19 07:20:33 74

原创 Maven记录

MavenApache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息管理项目的构建,报告和文档。官网定义maven–JDK版本全局在maven的安装目录找到settings.xml文件,在里面添加如下代码<profile> <id>jdk-1.8</id> ...

2019-03-12 19:57:39 103

原创 Mybatis源码解析(二)

Mybatis源码解析SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);xml 如何构建解析//构建并解析xmlpublic SqlSessionFactory build(InputStream inputStream, String environment, P...

2019-03-11 22:04:01 72

原创 Mybatis源码解析(一)

Mybatismybatis官网what is mybatis ?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Jav...

2019-03-11 21:16:08 56

原创 基于socket的Http服务器

基于socket的Http服务器类似tomcat,做一次socket的 one req—> one Thread—> http 协议解析和响应代码//创建socket的服务端@Slf4jpublic class Server { private static ServerSocket server = null; static { synchronized (...

2019-03-11 19:13:02 343

原创 Java--Socket

Socket网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。TC...

2019-03-11 18:25:22 34

原创 JavaIO---(File)

File文件操作相关操作类和接口//File 类public class File implements Serializable, Comparable<File>//文件描述符类的实例用作不透明句柄public final class FileDescriptor//File过滤器@FunctionalInterfacepublic interface Fi...

2019-03-11 17:33:41 44

原创 Java IO(一)

IOI/O输入/输出(Input/Output)无论是系统、还是语言的设计中IO的设计都是异常复杂的。面临的最大的挑战一般是如何覆盖所有可能的因素,我们不仅仅要考虑文件、控制台、网络、内存等不同的种类,而且要处理大量的不同的读取方式,如:顺序读取、随机读取,二进制读取、字符读取,按行读取、按字符读取……路径rt.jar — java.io.*rt.jar? Ja...

2019-03-09 22:42:23 67

转载 网络协议窥探

网络协议网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他...

2019-02-27 11:40:01 117

原创 面试总结--20190218

面试总结上午问题:1. spring 使用到的设计模式2. springboot和spring 区别3. JVM 类加载原理,怎么加载一个冲突的jar(自定义类加载器)4. 重写和重载方法在JVM中的体现5. JVM 7 和8区别6. 数据库设计范式7. 数据库sql优化方案8. CAP原则(分布式)–zk和eureka区别9. Lnux操作系统常用命令,(CPU使用量查询)...

2019-02-18 20:03:26 152 2

原创 JVM优化

数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型...

2019-02-14 02:56:58 72

原创 java多线程(二)

接着上一篇继续Monitor? 为什么我修改线程状态,要牵扯到Monitor?哦,原来,Thread在操作资源的时候(我们讲java万物皆对象,那么资源就是对象),Thread在操作对象的时候,牵扯到要不要释放对象锁,其他线程能否操作这个对象呢,原来如此。那么Thread该怎么获取对象的Monitor呢哎,真难,搞清一个问题,带来一堆问题,继续~!了解一下jdk锁synchroniz...

2019-02-01 03:18:06 59

原创 聊一聊Java多线程

Java多线程什么是多线程?多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。 在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。具有多线程能力的计算机因有硬件...

2019-02-01 02:13:00 164

原创 Docker 安装 mysql

Docker 安装 mysql 5.7centos7环境# 搜索镜像docker search mysql# 安装mysql5.7docker pull mysql:5.7# 查看是否下载完成,docker images# 启动mysql5.7,并指定root密码为123456docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT...

2018-12-29 14:32:34 52

原创 Docker

DockerDocker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。简而言之,docker就是一个小型...

2018-12-29 14:23:34 133 1

原创 Centos7安装rabbitmq

Centos7安装rabbitmq网上一大堆教程,乱七八糟的都是错,自己弄一回完全按照官网来安装安装一些必须的组件yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto安装erlangerlang 是rabbitmq的依赖环境# 创建erlang本地镜像vim /etc/yum.repos.d/rabb...

2018-12-14 19:09:17 88

原创 Linux 安装redis

Centos7安装redis安装wget http://download.redis.io/releases/redis-5.0.3.tar.gztar xzf redis-5.0.3.tar.gzcd redis-5.0.3makecd srcmake install统一管理配置mkdir -p /etc/redis/binmkdir -p /etc/redis/conf...

2018-12-13 18:59:05 60

原创 缓存(五)---为什么选择redis

RedisRedis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API网络环境下使用redisredis 是TCP Socket 网络环境,client 发包到 redis,报文格式是resp,非常短小精悍的一个报文体系,而在服务端redis 是单线程阻塞接受 请求,使用socket队列保证公平为什么我选择r...

2018-11-19 16:42:25 119

原创 缓存(四)----服务器&数据库缓存

服务器&数据库缓存之前的文章解释了,为什么使用缓存,前面说了浏览器缓存,现在说服务器缓存和数据库缓存常用的服务器缓存技术EhcachememcacheredismongodbEhcacheEhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。memcachememcache 是一种高...

2018-11-16 19:51:28 211

原创 缓存(三)----浏览器缓存

先看上图,如果对图中的(a)(b)©(d)四个过程的处理方式都很清楚了,那么请不用再看本文了。两个概念强缓存用户发送的请求,直接从客户端缓存中获取,不发送请求到服务器,不与服务器发生交互行为。协商缓存用户发送的请求,发送到服务器后,由服务器判定是否从缓存中获取资源。两者共同点:客户端获得的数据最后都是从客户端缓存中获得。两者的区别:从名字就可以看出,强缓存不与服务器交互,而协商缓存...

2018-11-16 19:33:42 77

原创 缓存(二)----从B/S结构谈缓存

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英 ['braʊzə]美 ['braʊzɚ]),如Netscape Navigator或Internet Explorer,服...

2018-11-16 19:01:32 298

原创 缓存(一)---从计算机角度理解缓存

计算机角度粗略讲一下,计算机是由多个组件构成,最重要的3点,CPU,内存,外存,本文重点讲内存和外存内存内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要...

2018-11-16 07:28:01 83

原创 深入理解Java锁---概念篇

Java锁什么是锁多线程访问同一资源,对资源进行了非原子性操作,产生的并发安全问题。为了解决这种并发安全问题产生了锁那么什么是并发安全问题?参照数据库隔离级别来说简单一点1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据...

2018-11-15 12:19:33 96

原创 Mysql(六)---高可用

高可用“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。之前我们提到,主从复制,从集群反向代理负载均衡,那么从集群在一定程度上实现了高可用,那么至今为止我们的主节点(写节点),还只是一台,那么能不能主节点高可用呢,答案是可以的,我们使用keepalived实现主节点的高可用.keepalivedKeepal...

2018-11-15 11:46:54 58

原创 Mysql(五)---高并发

高并发高并发(High Concurrency),它通常是指,通过设计保证系统能够同时并行处理很多请求。上文讲mysql简单集群搭建,主从复制。那么为什么要主从复制,因为我们对数据库的操作无外乎 CRUD,就是增删改查,那么 写操作(增删改)会产生事务,会有锁的概念。简单介绍一下mysql 锁锁简单介绍从锁的粒度,可以分为两大类:表锁:开销小,加锁快,不会出现死锁,锁定力度大,...

2018-11-15 11:42:08 490

原创 Mysql(四)--集群

基于虚拟机的Centos安装虚拟机: VMware® Workstation 12 Pro操作系统: CentOS-7-x86_64-DVD-1511.iso安装过程略过,不是本文重点Centos7 网卡设置Centos7 设置和其他版本有些小出入网络配置文件在/etc/sysyconfig/network-scripts/ifcfg-xxxxifcfg-xxxx 每个机器可能...

2018-11-15 11:23:38 67

原创 Mysql(三)---mysql缓存

mysql缓存查询缓存优化结果集缓存排序缓存join 连接缓存表缓存Cache 与表结构定义缓存Cache表扫描缓存bufferMyISAM索引缓存buffer日志缓存预读机制延迟表与临时表1. 查询缓存查询缓存不仅将查询语句结构缓存起来,还将查询结果缓存起来。一段时间内,如果是同样的SQL,则直接从缓存中读取结果,提高查找数据的效率。但当缓存中的数据与硬盘中的数据不...

2018-11-05 14:28:56 759

原创 Mysql(二)mysql文件认识

MySQL中文件存储形式(InnoDB)日志组文件:可以发现,./目录下数据存在日志组文件: ib_logfile0和ib_logfile1,默认均为5M。表结构文件:*.frm在MYSQL中建立任何一张数据表,在其数据存放目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,在MySQL中,“.fr...

2018-11-05 14:08:03 78

原创 Mysql(一)-----mysql运行机制

Mysql运行机制全面了解mysql的运行机制,从而了解当前系统的瓶颈,找到优化方案。借用一张图从上图可以清晰看出mysql的内部架构,可以清楚的看到Mysql是由连接池Connection Pool,SQL接口,解析器,优化器,缓存,存储引擎组成的。Connectors指的是不同语言中与SQL的交互Management Serveices & Utilitie...

2018-11-05 13:01:14 965

原创 springcloud 和 springboot 版本

springcloud 和 springboot 版本大家都知道springcloud是基于springboot的分布式框架,那么构建一个springcloud的框架,需要和springboot的版本做对照,下面介绍一下,springcloud和springboot的版本关系Spring BootSpring Cloud1.2.xAngel1.3.xBrixt...

2018-10-29 14:45:52 940

原创 分布式锁--基于redis

分布式锁–基于redis上面讲锁,那么实现一个分布式锁重点状态—标记当前方法是否有锁释放—释放当前方法锁代码/** * 基于redis实现分布式锁 * * @author haha */@Componentpublic class RedisLock{ @Autowired private StringRedisTemplate stringRedisTem...

2018-10-25 14:04:17 77

原创 JAVA锁原理和选择synchronized & Lock

锁废话不多说,进正题,参考一下synchronized 的实现原理synchronized 的实现原理JVM可以从方法常量池中的方法表结构(method_info Structure) 中的 ACC_SYNCHRONIZED 访问标志区分一个方法是否同步方法。当方法调用时,调用指令将会 检查方法的 ACC_SYNCHRONIZED 访问标志是否被设置,如果设置了,执行线程将先持有mon...

2018-10-25 12:17:25 118 1

原创 单机版高并发--Semaphore

SemaphoreSemaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。上面解释是百度百科,说直白点,Semaphore 就是控制方法能被几个线程访问的东西下面举例例子现在有一辆汽车,只能坐5个人,没坐上的等下一班(假如现在就一辆汽车),那么怎么控制这个5呢public c...

2018-10-25 11:46:56 425

原创 JAVA--IO BIO&NIO

BIO&NIO针对文件读写操作,BIO性能远胜NIO,NIO优势体现在高并发情况下,线程复用,不会导致线程无限增加从而导致系统死掉。BIO同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。NIO同步非阻塞式IO,服务器实现模式为一个请求一个...

2018-10-25 10:49:22 110

原创 Java多线程

多线程多个线程并发执行的技术进程和线程一句话:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位,线程是进程的一部分。java多线程状态关键字使用线程状态新建状态: 没有调用start()方法之前就绪状态: 调用start()方法之后线程就进入就绪状态,阻塞恢复的时候也会进入就绪状态运行状态: 线程被设置为当前线程,开始执行run()方法阻塞状态:...

2018-10-22 14:42:17 66

原创 java源码解析S

SetA collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this ...

2018-10-22 13:16:25 62

原创 java源码解析--Map

Map集合An object that maps keys to values. A map cannot contain duplicate keys;each key can map to at most one value. – 将键映射到值的对象。不能包含重复的键;每个键最多可以映射一个值。//Map 的类信息public interface Map<K,V>...

2018-10-22 13:07:04 90

原创 java源码解析--List

List集合An ordered collection – 有序集合//List 的类信息public interface List<E> extends Collection<E>//Collection 的类信息--定义基本的methodpublic interface Collection<E> extends Iterable<E&...

2018-10-22 12:00:01 56

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