摘要:
前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 top K问题 在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的 阅读全文
随笔档案-2019年02月
Linux虚拟机的三种网络连接方式
2019-02-09 21:23 by xiaok1024, 8897 阅读, 收藏,
摘要:
Linux虚拟机的三种网络连接方式 虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 桥接 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟 阅读全文
一篇文章,读懂Netty的高性能架构之道
2019-02-09 21:21 by xiaok1024, 1919 阅读, 收藏,
摘要:
一篇文章,读懂Netty的高性能架构之道 Netty是由JBOSS提供的一个java开源框架,是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动 阅读全文
MYCAT学习笔记
2019-02-09 21:20 by xiaok1024, 578 阅读, 收藏,
摘要:
MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: ·一个彻底开源的,面向企业应用开发的“大数据库集群” ·支持事务、ACID、可以替代Mysql的加强版数据库 ·一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 ·一个融合内存缓存技术、Nosql技 阅读全文
Java网络编程和NIO详解开篇:Java网络编程基础
2019-02-09 18:47 by xiaok1024, 472 阅读, 收藏,
摘要:
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为我们拥有网络。网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界。 然而,网络的无标度和 阅读全文
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
2019-02-09 18:46 by xiaok1024, 989 阅读, 收藏,
摘要:
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introduction/ netty是基于NIO实现的异步事件驱动的网络编程框架,学完NIO以后,应该看看ne 阅读全文
Java网络编程和NIO详解8:浅析mmap和Direct Buffer
2019-02-09 18:46 by xiaok1024, 2785 阅读, 收藏,
摘要:
Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 阅读全文
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
2019-02-09 18:45 by xiaok1024, 1876 阅读, 收藏,
摘要:
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NI 阅读全文
Java网络编程和NIO详解6:Linux epoll实现原理详解
2019-02-09 18:44 by xiaok1024, 1189 阅读, 收藏,
摘要:
Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 部分代 阅读全文
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO
2019-02-09 18:43 by xiaok1024, 1115 阅读, 收藏,
摘要:
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java 非阻塞 IO 和异步 IO 转自https://www.javadoop.com/post/nio-and-aio 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏: 阅读全文
Java网络编程和NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector
2019-02-09 18:42 by xiaok1024, 628 阅读, 收藏,
摘要:
Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector 转自https://www.javadoop.com/post/nio-and-aio 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java 阅读全文
Java网络编程和NIO详解3:IO模型与Java网络编程模型
2019-02-09 18:41 by xiaok1024, 439 阅读, 收藏,
摘要:
Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的 阅读全文
Java网络编程和NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型
2019-02-09 18:41 by xiaok1024, 758 阅读, 收藏,
摘要:
Java网络编程与NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型 知识点 nio 下 I/O 阻塞与非阻塞实现 SocketChannel 介绍 I/O 多路复用的原理 事件选择器与 SocketChannel 的关系 事件监听类型 字节缓冲 ByteBuffer 数据结构 nio 阅读全文
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
2019-02-09 18:40 by xiaok1024, 528 阅读, 收藏,
摘要:
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 JAVA 中原生的 socket 通信机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 当前环境 jdk == 1.8 知识点 socket 的连接处 阅读全文
Linux总结
2019-02-09 18:39 by xiaok1024, 425 阅读, 收藏,
摘要:
Linux 一、常用操作以及概念 快捷键 求助 关机 PATH sudo 包管理工具 发行版 VIM 三个模式 GNU 开源协议 二、磁盘 磁盘接口 磁盘的文件名 三、分区 分区表 开机检测程序 四、文件系统 分区与文件系统 组成 文件读取 磁盘碎片 block inode 目录 日志 挂载 目录配 阅读全文
Java研发工程师知识点总结
2019-02-09 18:38 by xiaok1024, 454 阅读, 收藏,
摘要:
Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一、Java基础(语言、集合框架、OOP、设计模式等) 二、Java高级(JavaEE、框架、服务器、工具等) 三、多线程和并发 四、Java虚拟机 五、数据库(Sql、MySQL、Redis等) 六、算法与数据结构 七、计算机 阅读全文
《深入理解mybatis原理7》 MyBatis的二级缓存的设计原理
2019-02-09 18:37 by xiaok1024, 314 阅读, 收藏,
摘要:
《深入理解mybatis原理》 MyBatis的二级缓存的设计原理 MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将全面分析MyBatis的二级缓存的设计原理。 1.MyBatis的缓存机制整体设计以及二级缓存的工作模式 如上图所示, 阅读全文
《深入理解mybatis原理6》 MyBatis的一级缓存实现详解 及使用注意事项
2019-02-09 18:36 by xiaok1024, 712 阅读, 收藏,
摘要:
《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项 0.写在前面 读完本文,你将会学到: 1、什么是一级缓存?为什么使用一级缓存? 2、MyBatis的一级缓存是怎样组织的?(即SqlSession对象中的缓存是怎样组织的?) 3、一级缓存的生命周期有多长? 4、Cac 阅读全文
《深入理解mybatis原理4》 MyBatis缓存机制的设计与实现
2019-02-09 18:35 by xiaok1024, 280 阅读, 收藏,
摘要:
《深入理解mybatis原理》 MyBatis缓存机制的设计与实现 本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论。 MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存: MyBatis中一 阅读全文
《深入理解mybatis原理3》 Mybatis数据源与连接池
2019-02-09 18:34 by xiaok1024, 531 阅读, 收藏,
摘要:
《深入理解mybatis原理》 Mybatis数据源与连接池 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。 以下是本章的组织结构: 一、MyBatis数据源DataS 阅读全文
《深入理解mybatis原理2》 Mybatis初始化机制详解
2019-02-09 18:34 by xiaok1024, 264 阅读, 收藏,
摘要:
《深入理解mybatis原理》 Mybatis初始化机制详解 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 一、 MyBatis的初始化做了什么 MyBatis的上述配置信息会配置在XML配置文件中,那么,这些信息被 阅读全文
《深入理解mybatis原理1》 MyBatis的架构设计以及实例分析
2019-02-09 18:33 by xiaok1024, 394 阅读, 收藏,
摘要:
《深入理解mybatis原理》 MyBatis的架构设计以及实例分析 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis 阅读全文
SpringCloud总结
2019-02-09 18:33 by xiaok1024, 1182 阅读, 收藏,
摘要:
SpringCloud总结 微服务化 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动 或销毁,拥有自己独立的数据库。 微服务条目落地技术 阅读全文
Spring Boot总结
2019-02-09 18:31 by xiaok1024, 671 阅读, 收藏,
摘要:
一、Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服务;可以通过HTTP 阅读全文
2.SpringMVC源码分析:DispatcherServlet的初始化与请求转发
2019-02-09 18:30 by xiaok1024, 664 阅读, 收藏,
摘要:
一.DispatcherServlet的初始化 在我们第一次学Servlet编程,学java web的时候,还没有那么多框架。我们开发一个简单的功能要做的事情很简单,就是继承HttpServlet,根据需要重写一下doGet,doPost方法,跳转到我们定义好的jsp页面。Servlet类编写完之后 阅读全文
1.SpringMVC设计理念与DispatcherServlet
2019-02-08 20:17 by xiaok1024, 640 阅读, 收藏,
摘要:
SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻。我试图通过对SpringMVC的设计思想和源码实现的剖析,从抽象意义上的设计层面和实现意义上的代码层面两个方面,逐一揭开SpringMVC神秘 阅读全文
Spring事务源码分析总结
2019-02-08 20:10 by xiaok1024, 287 阅读, 收藏,
摘要:
Spring事务是我们日常工作中经常使用的一项技术,Spring提供了编程、注解、aop切面三种方式供我们使用Spring事务,其中编程式事务因为对代码入侵较大所以不被推荐使用,注解和aop切面的方式可以基于需求自行选择,我们以注解的方式为例来分析Spring事务的原理和源码实现。 注意:在需要开启 阅读全文
JDK和cglib动态代理原理
2019-02-08 20:10 by xiaok1024, 273 阅读, 收藏,
摘要:
本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Spring源码解析 https://blog.csdn.net/column/details/21851.html 部分代码会放在我的的Github:https://github.com/h2p 阅读全文
SpringIOC源码分析总结
2019-02-08 20:09 by xiaok1024, 787 阅读, 收藏,
摘要:
大致的加载过程: spring ioc容器的加载,大体上经过以下几个过程: 资源文件定位、解析、注册、实例化 1.资源文件定位:主要发生在ApplicationContext中,由于applicationContext继承于ResourceLoader,所以调用getResource()方法,将外部 阅读全文
SpringAOP源码分析总结
2019-02-08 20:09 by xiaok1024, 367 阅读, 收藏,
摘要:
1、Advisor(增强器):充当Advice和Pointcut的适配器,类似使用Aspect的@Aspect注解的类(前一章节所述)。一般有advice和pointcut属性。 祖先接口为org.springframework.aop.Advisor,应用中可直接使用org.springframe 阅读全文
dubbo总结
2019-02-08 20:07 by xiaok1024, 549 阅读, 收藏,
摘要:
dubbo 一、基础知识 1、分布式基础理论 1.1)、什么是分布式系统? 《分布式系统原理与范型》定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed system)是建立在网络之上的软件系统。 随着互联网的发展,网站应用的规模不 阅读全文
搞懂分布式技术21:浅谈分布式消息技术 Kafka
2019-02-08 20:05 by xiaok1024, 367 阅读, 收藏,
摘要:
搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topic和parition 4副本(replication)策略:主从broker部署和partition 阅读全文
搞懂分布式技术28:微服务(Microservice)那点事
2019-02-08 20:05 by xiaok1024, 815 阅读, 收藏,
摘要:
搞懂分布式技术28:微服务(Microservice)那点事 微服务(Microservice)那点事 肥侠 2016-01-13 09:46:53 浏览58371 评论15 分布式系统与计算 微服务 分布式系统与计算 微服务 摘要: 微服务架构被提出很短的时间内,就被越来越多的开发人员推崇,简单来 阅读全文
搞懂分布式技术20:消息队列因何而生
2019-02-08 20:04 by xiaok1024, 490 阅读, 收藏,
摘要:
搞懂分布式技术20:消息队列因何而生 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开 阅读全文
搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
2019-02-08 20:04 by xiaok1024, 788 阅读, 收藏,
摘要:
搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 初步认识RocketMQ的核心模块 rocketmq模块 rocketmq-broker:接受生产者发来的消息并存储(通过调用rocketmq-store),消费者从这里取得消息。 rocketmq-client:提供发送、接受消息的客 阅读全文
搞懂分布式技术16:浅谈分布式锁的几种方案
2019-02-08 20:03 by xiaok1024, 796 阅读, 收藏,
摘要:
搞懂分布式技术16:浅谈分布式锁的几种方案 前言 随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,在这种情况下 阅读全文
搞懂分布式技术17,18:分布式事务总结
2019-02-08 20:03 by xiaok1024, 445 阅读, 收藏,
摘要:
搞懂分布式技术17:浅析分布式事务 众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的 阅读全文
搞懂分布式技术13:缓存的那些事
2019-02-08 20:02 by xiaok1024, 538 阅读, 收藏,
摘要:
搞懂分布式技术13:缓存的那些事 缓存和它的那些淘汰算法们 为什么我们需要缓存? 很久很久以前,在还没有缓存的时候……用户经常是去请求一个对象,而这个对象是从数据库去取,然后,这个对象变得越来越大,这个用户每次的请求时间也越来越长了,这也把数据库弄得很痛苦,他无时不刻不在工作。所以,这个事情就把用户 阅读全文
搞懂分布式技术15:缓存更新的套路
2019-02-08 20:02 by xiaok1024, 1044 阅读, 收藏,
摘要:
搞懂分布式技术15:缓存更新的套路 缓存更新的套路 看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后在放到缓 阅读全文
搞懂分布式技术11:分布式session解决方案与一致性hash
2019-02-08 20:01 by xiaok1024, 765 阅读, 收藏,
摘要:
搞懂分布式技术11:分布式session解决方案与一致性hash session一致性架构设计实践 原创: 58沈剑 架构师之路 2017-05-18 一、缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。 Web开发中,web-se 阅读全文
搞懂分布式技术12:分布式ID生成方案
2019-02-08 20:01 by xiaok1024, 325 阅读, 收藏,
摘要:
搞懂分布式技术12:分布式ID生成方案 ## 转自: 58沈剑 架构师之路 2017-06-25 一、需求缘起 几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-id 订单标识:order-id 帖子标识:tiezi-id 消息标识:message-id 订单标识 阅读全文
搞懂分布式技术9:Nginx负载均衡原理与实践
2019-02-08 20:00 by xiaok1024, 877 阅读, 收藏,
摘要:
搞懂分布式技术9:Nginx负载均衡原理与实践 本篇摘自《亿级流量网站架构核心技术》第二章 Nginx负载均衡与反向代理 部分内容。 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。然而,用户访问时是通过如的方式访问,在请求时,浏览器首先会查询DNS服务 阅读全文
搞懂分布式技术10:LVS实现负载均衡的原理与实践
2019-02-08 20:00 by xiaok1024, 773 阅读, 收藏,
摘要:
搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一种网络技术,它在多个备选资源中做资源分配,以达到选择最优。这里有三个关键字: 网络技术,LB要解决的 阅读全文
搞懂分布式技术7:负载均衡概念与主流方案
2019-02-08 19:59 by xiaok1024, 650 阅读, 收藏,
摘要:
搞懂分布式技术7:负载均衡概念与主流方案 负载均衡的原理 原创: 刘欣 码农翻身 4月23日 这是1998年一个普通的上午。 一上班,老板就把张大胖叫进了办公室,一边舒服地喝茶一边发难:“大胖啊,我们公司开发的这个网站,现在怎么越来越慢了? ” 还好张大胖也注意到了这个问题,他早有准备,一脸无奈地说 阅读全文
搞懂分布式技术8:负载均衡原理剖析
2019-02-08 19:59 by xiaok1024, 343 阅读, 收藏,
摘要:
搞懂分布式技术8:负载均衡原理剖析 负载均衡的重要性无需多说,今天带来:负载均衡原理的解析。 开头先理解一下所谓的“均衡”。 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”, 阅读全文
搞懂分布式技术5:Zookeeper的配置与集群管理实战
2019-02-08 19:58 by xiaok1024, 534 阅读, 收藏,
摘要:
搞懂分布式技术5:Zookeeper的配置与集群管理实战 4.1 配置文件 ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为“zoo_sample.cfg”的文件,是ZooKeeper配置文件的模板。 ZooKeeper启动时,会默认加载“conf/zoo.cfg”作为配置 阅读全文
搞懂分布式技术6:Zookeeper典型应用场景及实践
2019-02-08 19:58 by xiaok1024, 742 阅读, 收藏,
摘要:
搞懂分布式技术6:Zookeeper典型应用场景及实践 一.ZooKeeper典型应用场景实践 ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对Z 阅读全文
搞懂分布式技术3:初探分布式协调服务zookeeper
2019-02-08 19:57 by xiaok1024, 397 阅读, 收藏,
摘要:
搞懂分布式技术3:初探分布式协调服务zookeeper 1.Zookeepr是什么 Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知。集群管理,Master选举,分布式锁和分布式队列等功能。 2.zooke 阅读全文
搞懂分布式技术4:ZAB协议概述与选主流程详解
2019-02-08 19:57 by xiaok1024, 454 阅读, 收藏,
摘要:
搞懂分布式技术4:ZAB协议概述与选主流程详解 ZAB协议 ZAB(Zookeeper Atomic Broadcast)协议是专门为zookeeper实现分布式协调功能而设计。zookeeper主要是根据ZAB协议是实现分布式系统数据一致性。 zookeeper根据ZAB协议建立了主备模型完成zo 阅读全文
搞懂分布式技术1:分布式系统的一些基本概念
2019-02-08 19:56 by xiaok1024, 8730 阅读, 收藏,
摘要:
搞懂分布式技术1:分布式系统的一些基本概念 1、分布式 小明的公司又3个系统:系统A,系统B和系统C,这三个系统所做的业务不同,被部署在3个独立的机器上运行,他们之间互相调用(当然是跨域网络的),通力合作完成公司的业务流程。 将不同的业务分部在不同的地方,就构成了一个分布式的系统,现在问题来了,系统 阅读全文
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法
2019-02-08 19:56 by xiaok1024, 2014 阅读, 收藏,
摘要:
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法 2PC 由于BASE理论需要在一致性和可用性方面做出权衡,因此涌现了很多关于一致性的算法和协议。其中比较著名的有二阶提交协议(2 Phase Commitment Protocol),三阶提交协议(3 Phase Commitment P 阅读全文
你真的掌握 LVS、Nginx 及 HAProxy 的工作原理吗
2019-02-08 19:55 by xiaok1024, 489 阅读, 收藏,
摘要:
你真的掌握 LVS、Nginx 及 HAProxy 的工作原理吗 当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。 在实际应用中,在 We 阅读全文
Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别
2019-02-08 19:54 by xiaok1024, 1123 阅读, 收藏,
摘要:
Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别 那么,消息中间件性能究竟哪家强? 带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性能比较。 Kafka是LinkedIn开源的分布式发布-订阅消息系统 阅读全文
面试 -- 核心篇 -- 中间件(消息)
2019-02-08 19:54 by xiaok1024, 352 阅读, 收藏,
摘要:
面试 -- 核心篇 -- 中间件(消息) 消息队列的应用场景 参考网址:消息队列的四种应用场景 (1)异步处理 用户注册时,可以同时将 发送邮件 和 发送短信 功能放到消息队列中实现。可以提高用户响应时间,提高系统吞吐量。 (2)应用解耦 用户下单和库存扣账中使用消息,可以防止库存系统出问题后,导致 阅读全文
Docker总结
2019-02-08 19:53 by xiaok1024, 328 阅读, 收藏,
摘要:
Docker总结 一.Docker简介 1.问题:为什么会有docker出现 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 Docke 阅读全文
Kafka、RabbitMQ、RocketMQ、ActiveMQ 17 个方面综合对比
2019-02-08 19:53 by xiaok1024, 283 阅读, 收藏,
摘要:
本文将从,Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ 17 个方面综合对比作为消息队列使用时的差异。(欢迎加入Java程序员群:630441304,一起学习交流会) 一、资料文档 Kafka:中。有kafka作者自己写的书,网上资料也有一些。 rabbitmq:多 阅读全文
重新学习MySQL数据库10:MySQL里的那些日志们
2019-02-08 19:51 by xiaok1024, 191 阅读, 收藏,
摘要:
重新学习MySQL数据库10:MySQL里的那些日志们 同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更 阅读全文
Redis原理与实践总结
2019-02-08 19:51 by xiaok1024, 956 阅读, 收藏,
摘要:
Redis原理与实践总结 本文主要对Redis的设计和实现原理做了一个介绍很总结,有些东西我也介绍的不是很详细准确,尽量在自己的理解范围内把一些知识点和关键性技术做一个描述。如有错误,还望见谅,欢迎指出。 这篇文章主要还是参考我之前的技术专栏总结而来的。欢迎查看: 重新学习Redis https:/ 阅读全文
重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系
2019-02-08 19:50 by xiaok1024, 283 阅读, 收藏,
摘要:
重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系 Innodb中的事务隔离级别和锁的关系 前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处 阅读全文
重新学习MySQL数据库7:详解MyIsam与InnoDB引擎的锁实现
2019-02-08 19:49 by xiaok1024, 254 阅读, 收藏,
摘要:
重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同。 三类常见引擎: MyIsam :不支持事务,不支持外键,所以访问速度快。锁机制是表锁,支持全文索引 InnoDB :支持事务、支持外键,所以对比M 阅读全文
重新学习MySQL数据库8:MySQL的事务隔离级别实战
2019-02-08 19:49 by xiaok1024, 432 阅读, 收藏,
摘要:
重新学习Mysql数据库8:MySQL的事务隔离级别实战 在Mysql中,事务主要有四种隔离级别,今天我们主要是通过示例来比较下,四种隔离级别实际在应用中,会出现什么样的对应现象。 Read uncommitted (未提交读) Read committed (已提交读) Repeatable re 阅读全文
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化
2019-02-08 19:48 by xiaok1024, 423 阅读, 收藏,
摘要:
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上 阅读全文
重新学习MySQL数据库6:浅谈MySQL的中事务与锁
2019-02-08 19:48 by xiaok1024, 240 阅读, 收藏,
摘要:
『浅入深出』MySQL 中事务的实现 在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的;在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文章中简单对 My 阅读全文
重新学习MySQL数据库3:Mysql存储引擎与数据存储原理
2019-02-08 19:47 by xiaok1024, 298 阅读, 收藏,
摘要:
重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有两个词非常容易混淆,也就是数据库和实例: 数据库:物理操作文件系统或其他形式文件类型的集合; 实例: 阅读全文
重新学习MySQL数据库4:Mysql索引实现原理
2019-02-08 19:47 by xiaok1024, 518 阅读, 收藏,
摘要:
重新学习Mysql数据库4:Mysql索引实现原理 MySQL索引类型 (https://www.cnblogs.com/luyucheng/p/6289714.html) 一、简介 MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二、语 阅读全文
重新学习MySQL数据库1:无废话MySQL入门
2019-02-08 19:46 by xiaok1024, 345 阅读, 收藏,
摘要:
重新学习Mysql数据库1:无废话MySQL入门 开始使用 我下面所有的SQL语句是基于MySQL 5.6+运行。 MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(heade 阅读全文
重新学习MySQL数据库2:『浅入浅出』MySQL 和 InnoDB
2019-02-08 19:46 by xiaok1024, 250 阅读, 收藏,
摘要:
重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB 作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看 阅读全文
leetcode算法总结
2019-02-08 19:40 by xiaok1024, 4679 阅读, 收藏,
摘要:
算法思想 二分查找 贪心思想 双指针 排序 快速选择 堆排序 桶排序 搜索 BFS DFS Backtracking 分治 动态规划 分割整数 矩阵路径 斐波那契数列 最长递增子序列 最长公共子系列 0-1 背包 数组区间 字符串编辑 其它问题 数学 素数 最大公约数 进制转换 阶乘 字符串加法减法 阅读全文
23种设计模式全解析
2019-02-08 19:39 by xiaok1024, 132 阅读, 收藏,
摘要:
23种设计模式全解析 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式(创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象), 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(关注类和对象的组合), 共七种:适配器模式、装饰器模式 阅读全文
剑指offer算法总结
2019-02-08 19:39 by xiaok1024, 1084 阅读, 收藏,
摘要:
剑指offer算法学习总结 节选剑指offer比较经典和巧妙的一些题目,以便复习使用。一部分题目给出了完整代码,一部分题目比较简单直接给出思路。但是不保证我说的思路都是正确的,个人对算法也不是特别在行,只不过这本书的算法多看了几遍多做了几遍多了点心得体会。于是想总结一下。如果有错误也希望能指出,谢谢 阅读全文
计算机网络
2019-02-08 19:38 by xiaok1024, 352 阅读, 收藏,
摘要:
计算机网络学习总结 这部分内容主要是基于一些关于计算机网络基础的学习总结,内容不全面,只讲述了其中的一小部分,后续会再补充,如有错误,还请见谅。 OSI七层模型 物理层:包含了多种与物理介质相关的协议,这些物理介质用以支撑TCP/IP通信。以二进制数据形式在物理媒体上传输数据。 数据链路层:包含了控 阅读全文
操作系统总结2
2019-02-08 19:37 by xiaok1024, 271 阅读, 收藏,
摘要:
一、概述 基本特征 基本功能 系统调用 大内核和微内核 中断分类 二、进程管理 进程与线程 进程状态的切换 进程调度算法 进程同步 经典同步问题 进程通信 三、死锁 必要条件 处理方法 鸵鸟策略 死锁检测与死锁恢复 死锁预防 死锁避免 四、内存管理 虚拟内存 分页系统地址映射 页面置换算法 分段 段 阅读全文
25.大白话说java并发工具类-CountDownLatch,CyclicBarrier,Semaphore,Exchanger
2019-02-08 19:35 by xiaok1024, 366 阅读, 收藏,
摘要:
1. 倒计时器CountDownLatch 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用Thread类的join方法,让主线程等待被join的线程执行完之后,主线程才能继续往下执行。当然,使用线程间消息通信机制也 阅读全文
24.Java中atomic包中的原子操作类总结
2019-02-08 19:34 by xiaok1024, 729 阅读, 收藏,
摘要:
1. 原子操作类介绍 在并发编程中很容易出现并发安全的问题,有一个很简单的例子就是多线程更新变量i=1,比如多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的(关于synchronized可以看这篇文章)。但是由于sy 阅读全文
22.线程池之ScheduledThreadPoolExecutor
2019-02-08 19:33 by xiaok1024, 385 阅读, 收藏,
摘要:
1. ScheduledThreadPoolExecutor简介 ScheduledThreadPoolExecutor可以用来在给定延时后执行异步任务或者周期性执行任务,相对于任务调度的Timer来说,其功能更加强大,Timer只能使用一个后台线程执行任务,而ScheduledThreadPool 阅读全文
23.FutureTask基本操作总结
2019-02-08 19:33 by xiaok1024, 507 阅读, 收藏,
摘要:
1.FutureTask简介 在Executors框架体系中,FutureTask用来表示可获取结果的异步任务。FutureTask实现了Future接口,FutureTask提供了启动和取消异步任务,查询异步任务是否计算结束以及获取最终的异步任务的结果的一些常用的方法。通过get()方法来获取异步 阅读全文
20.并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解
2019-02-08 19:32 by xiaok1024, 620 阅读, 收藏,
摘要:
1. ArrayBlockingQueue简介 在多线程编程过程中,为了业务解耦和架构设计,经常会使用并发容器用于存储多线程间的共享数据,这样不仅可以保证线程安全,还可以简化各个线程操作。例如在“生产者-消费者”问题中,会使用阻塞队列(BlockingQueue)作为数据容器,关于BlockingQ 阅读全文
21.线程池ThreadPoolExecutor实现原理
2019-02-08 19:32 by xiaok1024, 362 阅读, 收藏,
摘要:
1. 为什么要使用线程池 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程 阅读全文
19.并发容器之BlockingQueue
2019-02-08 19:31 by xiaok1024, 167 阅读, 收藏,
摘要:
1. BlockingQueue简介 在实际编程中,会经常使用到JDK中Collection集合框架中的各种容器类如实现List,Map,Queue接口的容器类,但是这些容器类基本上不是线程安全的,除了使用Collections可以将其转换为线程安全的容器,Doug Lea大师为我们都准备了对应的线 阅读全文
17.并发容器之ThreadLocal
2019-02-08 19:30 by xiaok1024, 411 阅读, 收藏,
摘要:
1. ThreadLocal的简介 在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对临界区资源的同步顺序从而解决线程安全的问题,但是这种加锁的方式会让未获取到锁的线程进行阻塞等待,很显然这种方式的时间效率并不是很好。线程安全问题的核心在于多个线程会对同一个临 阅读全文
18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题
2019-02-08 19:30 by xiaok1024, 565 阅读, 收藏,
摘要:
1. 造成内存泄漏的原因? threadLocal是为了解决对象不能被多线程共享访问的问题,通过threadLocal.set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中,这样每个线程使用自己的对象实例,彼此不会影响达到隔离的作用,从而就解决了对象在被共享访问带来线程安全问 阅读全文
15.并发容器之ConcurrentLinkedQueue
2019-02-08 19:29 by xiaok1024, 431 阅读, 收藏,
摘要:
1.ConcurrentLinkedQueue简介 在单线程编程中我们会经常用到一些集合类,比如ArrayList,HashMap等,但是这些类都不是线程安全的类。在面试中也经常会有一些考点,比如ArrayList不是线程安全的,Vector是线程安全。而保障Vector线程安全的方式,是非常粗暴的 阅读全文
16.并发容器之CopyOnWriteArrayList
2019-02-08 19:29 by xiaok1024, 257 阅读, 收藏,
摘要:
1. CopyOnWriteArrayList的简介 java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机制,会抛出ConcurrentModificationException异常,也就是说ArrayLi 阅读全文
13.LockSupport工具
2019-02-08 19:28 by xiaok1024, 247 阅读, 收藏,
摘要:
1. LockSupport简介 在之前介绍AQS的底层实现,已经在介绍java中的Lock时,比如ReentrantLock,ReentReadWriteLocks,已经在介绍线程间等待/通知机制使用的Condition时都会调用LockSupport.park()方法和LockSupport.u 阅读全文
14.并发容器之ConcurrentHashMap(JDK 1.8版本)
2019-02-08 19:28 by xiaok1024, 382 阅读, 收藏,
摘要:
1.ConcurrentHashmap简介 在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hashtable类,该类基本上所有的方法都采用synchronized进行线程安全的控制,可想而知,在高并发 阅读全文
11.深入理解读写锁ReentrantReadWriteLock
2019-02-08 19:27 by xiaok1024, 206 阅读, 收藏,
摘要:
protected final int tryAcquireShared(int unused) { /* * Walkthrough: * 1. If write lock held by another thread, fail. * 2. Otherwise, this thread is e 阅读全文
12.详解Condition的await和signal等待通知机制
2019-02-08 19:27 by xiaok1024, 738 阅读, 收藏,
摘要:
1.Condition简介 任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等 阅读全文
10.彻底理解ReentrantLock
2019-02-08 19:26 by xiaok1024, 353 阅读, 收藏,
摘要:
1. ReentrantLock的介绍 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性(关于synchroni 阅读全文
7.三大性质总结:原子性、可见性以及有序性
2019-02-08 19:25 by xiaok1024, 498 阅读, 收藏,
摘要:
1. 三大性质简介 在并发编程中分析线程安全的问题时往往需要切入点,那就是两大核心:JMM抽象内存模型以及happens-before规则(在这篇文章中已经经过了),三条性质:原子性,有序性和可见性。关于synchronized和volatile已经讨论过了,就想着将并发编程中这两大神器在 原子性, 阅读全文
8.初识Lock与AbstractQueuedSynchronizer(AQS)
2019-02-08 19:25 by xiaok1024, 367 阅读, 收藏,
摘要:
1. concurrent包的结构层次 在针对并发编程中,Doug Lea大师为我们提供了大量实用,高性能的工具类,针对这些代码进行研究会让我们对并发编程的掌握更加透彻也会大大提升我们队并发编程技术的热爱。这些代码在java.util.concurrent包下。如下图,即为concurrent包的目 阅读全文
9.深入理解AbstractQueuedSynchronizer(AQS)
2019-02-08 19:25 by xiaok1024, 273 阅读, 收藏,
摘要:
1. AQS简介 在上一篇文章中我们对lock和AbstractQueuedSynchronizer(AQS)有了初步的认识。在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排队,等待通知等等一些底 阅读全文
6.你以为你真的了解final吗?
2019-02-08 19:24 by xiaok1024, 414 阅读, 收藏,
摘要:
1. final的简介 final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。即使能够知道final具体的使用方法,我想对final在多线程中存在的重排序问题也很容易忽略,希望能够一起做下探讨。 2. final的具体使用场景 阅读全文
3.java内存模型以及happens-before规则
2019-02-08 19:23 by xiaok1024, 194 阅读, 收藏,
摘要:
1. JMM的介绍 在上一篇文章中总结了线程的状态转换和一些基本操作,对多线程已经有一点基本的认识了,如果多线程编程只有这么简单,那我们就不必费劲周折的去学习它了。在多线程中稍微不注意就会出现线程安全问题,那么什么是线程安全问题?我的认识是,在多线程下代码执行的结果与预期正确的结果不一致,该代码就是 阅读全文
4.彻底理解synchronized
2019-02-08 19:23 by xiaok1024, 417 阅读, 收藏,
摘要:
1. synchronized简介 在学习知识前,我们先来看一个现象: 开启了10个线程,每个线程都累加了1000000次,如果结果正确的话自然而然总数就应该是10 * 1000000 = 10000000。可就运行多次结果都不是这个数,而且每次运行结果都不一样。这是为什么了?有什么解决方案了?这就 阅读全文
5.彻底理解volatile
2019-02-08 19:23 by xiaok1024, 267 阅读, 收藏,
摘要:
1. volatile简介 在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下。 通过上一篇的文章我们了解到synchronized是阻塞式同步,在线程竞 阅读全文
2.线程的状态转换以及基本操作
2019-02-08 19:22 by xiaok1024, 335 阅读, 收藏,
摘要:
在上一篇文章中并发编程的优缺点谈到了为什么花功夫去学习并发编程的技术,也就是说我们必须了解到并发编程的优缺点,我们在什么情况下可以去考虑开启多个线程去实现我们的业务,当然使用多线程我们应该着重注意一些什么,在上一篇文章中会有一些讨论。那么,说了这么多,无论是针对面试还是实际工作中作为一名软件开发人员 阅读全文
1.并发编程的优缺点
2019-02-08 19:21 by xiaok1024, 547 阅读, 收藏,
摘要:
一直以来并发编程对于刚入行的小白来说总是觉得高深莫测,于是乎,就诞生了想写点东西记录下,以提升理解和堆并发编程的认知。为什么需要用的并发?凡事总有好坏两面,之间的trade-off是什么,也就是说并发编程具有哪些缺点?以及在进行并发编程时应该了解和掌握的概念是什么?这篇文章主要以这三个问题来谈一谈。 阅读全文
JVM总结
2019-02-08 19:20 by xiaok1024, 194 阅读, 收藏,
摘要:
一:java内存区域 jvm布局: jdk1.6版本JVM布局分为:heap(堆),method(方法区),stack(虚拟机栈),native stack(本地方法栈),程序计数器共五大区域。 其中方法区包含运行时常量池。堆和方法区是线程共享的,虚拟机栈和本地方法栈、程序计数器是随线程而创建的。 阅读全文
Java集合详解1:ArrayList,Vector与Stack
2019-02-08 19:10 by xiaok1024, 312 阅读, 收藏,
摘要:
Java集合详解1:ArrayList,Vector与Stack 本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack ”Java集合详解系列“是我在完成Java基础篇的系列博客后准备开始写的新系列。 之前的Java基础系列博客首发于我的个人博客:https:// 阅读全文
Java集合详解8:Java的集合类细节精讲
2019-02-08 19:09 by xiaok1024, 910 阅读, 收藏,
摘要:
Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节。主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充。可能不全面,还请谅解。 本文参考:http://cmsblogs.com/?cat=5 具体代码在我的GitHub中可以找到 https://git 阅读全文
Java集合详解5:深入理解LinkedHashMap和LRU缓存
2019-02-08 19:08 by xiaok1024, 336 阅读, 收藏,
摘要:
Java集合详解5:深入理解LinkedHashMap和LRU缓存 今天我们来深入探索一下LinkedHashMap的底层原理,并且使用linkedhashmap来实现LRU缓存。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人 阅读全文
Java集合详解6:TreeMap和红黑树
2019-02-08 19:08 by xiaok1024, 1018 阅读, 收藏,
摘要:
Java集合详解6:TreeMap和红黑树 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增、删、改、查,从存储角度考虑,这两种数据结构是非常优秀的。另外,LinkedHashMap还额外地保证了Map的遍历顺序 阅读全文
Java集合详解7:HashSet,TreeSet与LinkedHashSet
2019-02-08 19:08 by xiaok1024, 336 阅读, 收藏,
摘要:
Java集合详解7:HashSet,TreeSet与LinkedHashSet 今天我们来探索一下HashSet,TreeSet与LinkedHashSet的基本原理与源码实现,由于这三个set都是基于之前文章的三个map进行实现的,所以推荐大家先看一下前面有关map的文章,结合使用味道更佳。 具体 阅读全文
Java集合详解3:Iterator,fail-fast机制与比较器
2019-02-08 19:07 by xiaok1024, 254 阅读, 收藏,
摘要:
Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: 阅读全文
Java集合详解4:HashMap和HashTable
2019-02-08 19:07 by xiaok1024, 221 阅读, 收藏,
摘要:
Java集合详解4:HashMap和HashTable 今天我们来探索一下HashMap和HashTable机制与比较器的源码。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https:// 阅读全文
Java集合详解2:LinkedList和Queue
2019-02-08 19:05 by xiaok1024, 1114 阅读, 收藏,
摘要:
Java集合详解2:LinkedList和Queue 今天我们来探索一下LinkedList和Queue,以及Stack的源码。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https:// 阅读全文
Java基础19:Java集合框架梳理
2019-02-08 18:51 by xiaok1024, 327 阅读, 收藏,
摘要:
Java基础19:Java集合框架梳理 在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影! java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Q 阅读全文
Java基础20:Java8新特性终极指南
2019-02-08 18:51 by xiaok1024, 555 阅读, 收藏,
摘要:
Java基础20:Java8新特性终极指南 毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。在这篇教程中,我们将一一探索这些变化,并用真实的例子 阅读全文
Java基础18:Java序列化与反序列化
2019-02-08 18:43 by xiaok1024, 533 阅读, 收藏,
摘要:
Java基础18:Java序列化与反序列化 序列化与反序列化概念 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而字节的或XML编码格式可以还原完全相 阅读全文
Java基础17:Java IO流总结
2019-02-08 18:42 by xiaok1024, 263 阅读, 收藏,
摘要:
Java基础17:Java IO流总结 IO流概述 在这一小节,我会试着给出Java IO(java.io)包下所有类的概述。更具体地说,我会根据类的用途对类进行分组。这个分组将会使你在未来的工作中,进行类的用途判定时,或者是为某个特定用途选择类时变得更加容易。 输入和输出 Java的IO包主要关注 阅读全文
Java基础16:Java多线程基础最全总结
2019-02-08 18:41 by xiaok1024, 411 阅读, 收藏,
摘要:
Java基础16:Java多线程基础最全总结 Java中的线程 Java之父对线程的定义是: 线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进程所创建的对象资源(内存资源)。java.lang.Thread对象负责统计和控制这种行为。 每个程 阅读全文
Java基础14:离开IDE,使用java和javac构建项目
2019-02-08 18:39 by xiaok1024, 541 阅读, 收藏,
摘要:
Java基础14:离开IDE,使用java和javac构建项目 javac命令初窥 注:以下红色标记的参数在下文中有所讲解。 本部分参考https://www.cnblogs.com/xiazdong/p/3216220.html 用法: javac 其中, 可能的选项包括: -g 生成所有调试信息 阅读全文
Java基础15:深入剖析Java枚举类
2019-02-08 18:39 by xiaok1024, 233 阅读, 收藏,
摘要:
Java基础15:深入剖析Java枚举类 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。 初探枚举类 在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色 阅读全文
Java基础11:Java泛型详解
2019-02-08 18:38 by xiaok1024, 382 阅读, 收藏,
摘要:
Java基础11:Java泛型详解 泛型概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由 阅读全文
Java基础12:深入理解Class类和Object类
2019-02-08 18:38 by xiaok1024, 3382 阅读, 收藏,
摘要:
Java基础12:深入理解Class类和Object类 Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI。 这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Cla 阅读全文
Java基础13:反射与注解详解
2019-02-08 18:38 by xiaok1024, 578 阅读, 收藏,
摘要:
Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 Oracle官方对反射的解释是 Reflection enables Java code to discov 阅读全文
Java基础10:全面解读Java异常
2019-02-08 18:37 by xiaok1024, 275 阅读, 收藏,
摘要:
Java基础10:全面解读Java异常 为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率。虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用。 在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约 阅读全文
Java基础8:深入理解内部类
2019-02-08 18:36 by xiaok1024, 305 阅读, 收藏,
摘要:
Java基础8:深入理解内部类 内部类初探 一、什么是内部类? 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部 阅读全文
Java基础9:解读Java回调机制
2019-02-08 18:36 by xiaok1024, 198 阅读, 收藏,
摘要:
Java基础9:解读Java回调机制 模块间的调用 本部分摘自https://www.cnblogs.com/xrq730/p/6424471.html 在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种: (1)同步调用 同步调用是最基本并且最简单的一种调用方式,类 阅读全文
Java基础6:代码块与代码加载顺序
2019-02-08 18:35 by xiaok1024, 672 阅读, 收藏,
摘要:
Java基础6:代码块与代码加载顺序 代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 构造代码块 位置:类成员的位置,就是类中方法之外的位置 作用:把多个构造方法共同 阅读全文
Java基础7:关于Java类和包的那些事
2019-02-08 18:35 by xiaok1024, 1169 阅读, 收藏,
摘要:
Java基础7:关于Java类和包的那些事 *.Java文件 问题:一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制? 答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类, 阅读全文
java基础4:深入理解final关键字
2019-02-08 18:34 by xiaok1024, 221 阅读, 收藏,
摘要:
java基础4:深入理解final关键字 final关键字可以修饰类、方法和引用。 修饰类,该类不能被继承。并且这个类的对象在堆中分配内存后地址不可变。 修饰方法,方法不能被子类重写。 修饰引用,引用无法改变,对于基本类型,无法修改值,对于引用,虽然不能修改地址值,但是可以对指向对象的内部进行修改。 阅读全文
Java基础5:抽象类和接口
2019-02-08 18:34 by xiaok1024, 240 阅读, 收藏,
摘要:
Java基础5:抽象类和接口 1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。 2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体m 阅读全文
Java基础2:基本数据类型与常量池
2019-02-08 18:33 by xiaok1024, 679 阅读, 收藏,
摘要:
Java基础2:基本数据类型与常量池 基本数据类型的大小 自动拆箱和装箱 总结:注意基本数据类型的拆箱装箱,以及对常量池的理解。 基本数据类型的存储方式 上面自动拆箱和装箱的原理其实与常量池有关。 3.1存在栈中: public void(int a) { int i = 1; int j = 1; 阅读全文
Java基础3:深入理解String及包装类
2019-02-08 18:33 by xiaok1024, 1374 阅读, 收藏,
摘要:
Java基础3:深入理解String及包装类 String的连接 String类型的intern String类型的equals StringBuffer和Stringbuilder 底层是继承父类的可变字符数组value append 扩容 删除 这里用到了system.arraycopy来拷贝数 阅读全文
Java基础1:深入理解Java面向对象三大特性
2019-02-08 18:31 by xiaok1024, 370 阅读, 收藏,
摘要:
Java基础1:深入理解Java面向对象三大特性 三大特性:继承 封装 多态 继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。 子类拥有父类非private的属性和方法。 子类可以拥有自己属性和方法,即子类可以 阅读全文
浙公网安备 33010602011771号