学习笔记
文章平均质量分 76
Ehine_N
付出总会有回报...
展开
-
阻塞队列
BlockingQueue是一个继承自Queue的接口,在Queue的队列基础上增加了阻塞操作,在BlockingQueue为空时从队头取数据将会被阻塞,因为此时还没有数据可取,一旦队列中有数据了,取数据的线程就会释放得到了数据,如果BlockingQueue有容量限制且满了,那么插入数据的线程将会阻塞,直到队列中有空闲位置可以插入数据了才会释放Queue接口方法: add(e...原创 2019-05-03 18:10:27 · 127 阅读 · 0 评论 -
设计模式
1、单例模式 优点: 由于单例模式在内存中只有一个实例,减少内存开支 由于单例模式只生成一个实例,所以,减少系统的性能开销 单例模式可以避免对资源的多重占用 单例模式可以在系统设置全局的访问点,优化和共享资源访问 缺点: 单例模式一般没有接口,扩展很困难 单例对象如果持有Context,...原创 2019-05-12 11:15:14 · 102 阅读 · 0 评论 -
分布式锁实现
基于数据库: 基于数据库的实现方式的核心思想是:在数据库中创建一个表,表中包含自定义业务名字段并在其上创建唯一索引,想要执行某段业务,就使用这个业务名向表中插入数据,成功插入则获取锁,执行完成后删除对应的行数据释放锁 使用基于数据库的这种实现方式很简单,但是对于分布式锁应该具备的条件来说,它有一些问题需要解决及优化: 因为是基于数据库实现的,...原创 2019-05-12 13:45:06 · 131 阅读 · 0 评论 -
分布式事物
BASE理论:BASE理论是对CAP(Consistency:一致性、 Availability:可用性、Partition tolerance:分区容错性)中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency) Basical...原创 2019-05-12 15:17:25 · 99 阅读 · 0 评论 -
nginx负载均衡
五种负载均衡策略: location /xxx { root html; index index.html index.htm; proxy_pass http://backserver; } 轮询(默认): 每个请求按时间顺序逐一分配到不同的...原创 2019-05-12 15:25:50 · 193 阅读 · 0 评论 -
redis集群模式、持久化
Redis特点: 存取快速:Redis数据库完全在内存中,因此处理速度非常快,每秒能执行约11万集合,每秒约81000+条记录 数据持久化:Redis支持数据持久化,可以将内存中的数据存储到磁盘上,方便在宕机等突发情况下快速恢复 数据一致性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值 ...原创 2019-05-12 15:55:54 · 3796 阅读 · 3 评论 -
kafka高性能原理
Topic: 用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上 Partition: 是Kafka中横向扩展和一切并行化的基础,每个Topic都至少被切分为1个Partition Offset: 消息在Partition中的编号,编号顺序不跨Partition Consumer: ...原创 2019-05-12 16:24:59 · 1003 阅读 · 0 评论 -
Doubbo工作原理
服务定义: 服务是围绕服务提供方和服务消费方的,服务提供方实现服务,而服务消费方调用服务 服务注册: 对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀 对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用,而且对于服务提供方和服务消费方来说,他们还有可能兼具...原创 2019-05-12 16:29:49 · 919 阅读 · 0 评论 -
消息中间件
RabbitMQ:采用Erlang语言实现的AMQP协议的消息中间件,最初起源于金融系统,用于在分布式系统中存储转发消息,它在可靠性、可用性、扩展性、功能丰富等方面表现良好 Kafka:采用Scala语言开发的一个分布式、多分区、多副本且基于zookeeper协调的分布式消息系统,它是一种高吞吐量的分布式发布订阅消息系统,以可水平扩展和高吞吐率而被广泛使用 RocketMQ...原创 2019-05-12 16:45:57 · 185 阅读 · 0 评论 -
Java内存模型
java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。1. 定义模型的目标Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。这里说的变量包括实例字段、静态字段和...转载 2019-05-12 10:29:19 · 104 阅读 · 0 评论 -
Volatile关键字
Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。 在访问volati...转载 2019-05-12 10:19:20 · 98 阅读 · 0 评论 -
spring cloud
1、zookeeper、spring cloud eureka注册中心: 分布式CAP理论: Consistency(一致性),数据一致更新,所有数据变动都是同步的 Availability(可用性),好的响应性能 Partition tolerance(分区容忍性),可靠性 Zookeeper保证CP,当向注册中心查询服务列...原创 2019-05-08 14:55:00 · 131 阅读 · 0 评论 -
jvm内存模型
jdk1.6:程序计数器、Java栈、本地方法栈、堆、方法区(包括:运行时常量)jdk1.7:程序计数器、Java栈、本地方法栈、堆(包括:运行时常量)、方法区jdk1.8:程序计数器、Java栈、本地方法栈、堆(包括:运行时常量)、元空间(本地内存)程序计数器: 较小的内存空间,当前线程执行的字节码的行号指示器,各线程之间独立存储互不影响Java栈: ...原创 2019-05-04 13:41:28 · 124 阅读 · 0 评论 -
jvm参数配置
内存参数: -Xmx3550m: 设置JVM最大堆内存为3550M -Xms3550m: 设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xss128k: 设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大...原创 2019-05-04 13:59:12 · 269 阅读 · 0 评论 -
jvm问题解决方案
1、什么情况下出现堆溢出?怎么解决? 产生原因: 堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收实例对象,就会在对象数量达到堆最大容量时产生OutOfMemoryError异常 解决办法: 使用-XX:+HeapDumpOnOutOfMemoryError可以让java虚拟机在出现内存溢出时产...原创 2019-05-04 15:37:14 · 374 阅读 · 0 评论 -
jvm垃圾回收
可达性分析算法: 通过一系列的称为GC Roots的对象作为起点,然后向下搜索,搜索所走过的路径称为引用链/Reference Chain,当一个对象到GC Roots没有任何引用链相连时,即该对象不可达,也就说明此对象是不可用的 可作为GC Roots的对象包括: 1、方法区:类静态属性引用的对象 2、方法区:常量引用的对象 3、虚...原创 2019-05-04 16:14:21 · 175 阅读 · 0 评论 -
jvm性能调优工具
jconsole:一种基于JMX的可视化监控、管理工具。包括概述、内存(jstat)、线 程(jstack)、类(jstat)、vm概要(jinfo) jvisualvm:主体功能和jconsole差别不大,区别在于:1.具备插件扩展的能力,2.能生成堆、栈的存储快照,3.分析程序性能 Eclipse Memory Analyzer: jps: jp...原创 2019-05-04 16:25:16 · 330 阅读 · 0 评论 -
Servlet相关介绍
Servlet的三种创建方式: 1、实现servlet接口,2、继承GenericServlet类,3、继承HttpServlet类Servlet生命周期: Servlet通过调用init()方法进行初始化 Servlet调用service()方法来处理客户端的请求 Servlet通过调用destroy()方法终止(结束) 最后,Servlet是由JVM...原创 2019-05-04 16:55:58 · 177 阅读 · 0 评论 -
Spring相关介绍
1、springMVC执行流程: 1.用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问,就是url-pattern的作用,并且会加载springmvc.xml配置文件 2.前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件...原创 2019-05-05 15:57:53 · 211 阅读 · 0 评论 -
MyBatis相关介绍
1、MyBatis配置: mybatis配置项分别是:properties、settings、typeAliases、typeHandlers、plugins、environments、mappers,这些配置项必须按照先后顺序进行配置 properties: 用于配置属性信息 settings: 用于配置MyBatis的运行时方式...原创 2019-05-05 16:40:51 · 149 阅读 · 0 评论 -
DB相关知识
1、数据库引擎: oracle中不存在引擎的概念,数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing) OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLTP系统强调数据库内存效率,强调内存各种...原创 2019-05-08 14:32:37 · 160 阅读 · 0 评论 -
java面试大纲(三年工作经验——高级开发工程师、自己总结不喜勿喷)
Java基础一、HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化。二、HaspMap扩容是怎样扩容的,为什么都是2的N次幂的大小。三、HashMap,HashTable,ConcurrentHashMap的区别。四、极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。五、HashMap在高并发下如果没有处理线程安全会...原创 2019-05-23 21:52:47 · 329 阅读 · 0 评论