• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
阿拉天啦噜
博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 订阅 | 管理

03 2020 档案

 
JVM调优
摘要:一. Java虚拟机内存模型 1. JVM内存数据分为程序计数器,虚拟机栈,本地方法栈,Java堆和方法区等部分; 2. 程序计数器 程序计数器是一块很小的内存空间,每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令,各个线程之间的计数器互不影响,独立工作,是一块线程私有的内存空间; 阅读全文
posted @ 2020-03-29 16:15 阿拉天啦噜 阅读(144) 评论(0) 推荐(0)
Java程序优化
摘要:一. 字符串优化处理 1. String对象组成:char数组,offset偏移量,count长度; 2. String对象特点: 不变性:String对象一旦生成,则不能再对它进行改变; 针对常量池的优化:当两个String对象拥有相同的值时,他们只引用常量池中的同一个拷贝; 类的final定义; 阅读全文
posted @ 2020-03-28 17:15 阿拉天啦噜 阅读(173) 评论(0) 推荐(0)
Java8函数式编程
摘要:一. 简介 1. 在语言层面上修改现有的Java,增加Lambda表达式,让代码在多核CPU上高效运行; 2. 面向对象编程是对数据进行抽象,函数式编程是对行为进行抽象; 3. 一个简单的例子 botton.addActionListener(new ActionListener() { publi 阅读全文
posted @ 2020-03-26 17:20 阿拉天啦噜 阅读(250) 评论(0) 推荐(0)
106个Linux命令行
摘要:1. date 显示当前系统的时间和日期; 2. cal 显示当月的日历; 3. df 查看磁盘驱动器当前的可用空间; 4. free 显示可用内存; 5. exit 结束终端会话; 6. pwd 显示当前工作目录; 7. ls 列出当前工作目录的文件和目录; 8. cd 改变工作目录; 9. fi 阅读全文
posted @ 2020-03-25 23:21 阿拉天啦噜 阅读(241) 评论(0) 推荐(0)
Docker入门
摘要:一. 简介 1. Docker是一个开源的容器引擎,有助于更快的交付应用;Docker可将应用程序和基础设施层隔离,并能将基础设施当做程序一样进行管理;使用Docker可更快的打包。测试以及部署应用程序,缩短从编写到部署运行代码的周期; 2. 架构 Docker daemon:运行在宿主机的后台进程 阅读全文
posted @ 2020-03-25 16:05 阿拉天啦噜 阅读(134) 评论(0) 推荐(0)
Spring Cloud Sleuth:实现微服务跟踪
摘要:一. 简介 1. 微服务之间通过网络进行通信,如果能够跟踪每个请求,了解请求经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等指标,那么就能够更好的分析系统瓶颈,解决系统问题; 2. Sleuth借用了Google Dapper的术语: span:跨度,基本工作单元,用一个64位的ID唯一标识,除I 阅读全文
posted @ 2020-03-25 15:45 阿拉天啦噜 阅读(243) 评论(0) 推荐(0)
Spring Cloud Config:统一管理微服务配置
摘要:一. 简介 1. 微服务的配置管理一般有以下需求: 集中管理配置; 不同环境,不同配置; 运行期间可动态调整; 配置修改后可自动更新; 2. 简介 Spring Cloud Config为分布式系统外部化配置提供了服务器端和客户端的支持,包括Config Server 和Config Client两 阅读全文
posted @ 2020-03-25 15:34 阿拉天啦噜 阅读(301) 评论(0) 推荐(0)
Zuul:构建微服务网关
摘要:一. 简介 1. 微服务网关是介于客户端和服务器之间的中间层,所有的外部请求都会先经过微服务网关; 2. 优点 微服务网关封装了应用程序的内部结构,客户端只用跟网关交互,无需直接调用特定微服务的接口,简化开发流程; 易于监控,可在微服务网关收集监控数据并推送到外部系统进行分析; 易于认证,可在微服务 阅读全文
posted @ 2020-03-25 14:25 阿拉天啦噜 阅读(279) 评论(0) 推荐(0)
Hystrix:实现微服务的容错处理
摘要:一. 简介 1. 一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,提升系统的可用性与容错性; 2. 通过以下几点实现延迟和容错: 包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行; 跳闸机制:当某服务的错误率超过一定阈值时,Hystri 阅读全文
posted @ 2020-03-24 23:34 阿拉天啦噜 阅读(288) 评论(0) 推荐(0)
Feign:声明式REST调用
摘要:一. 简介 1. 声明式,模板化的HTTP客户端,可以帮助我们更加便捷,优雅的调用HTTP API; 2. 为服务消费者整合Feign 添加spring-cloud-starter-openfeigh依赖; 创建一个Feign接口,添加@FeignClient注解; 在Controller中调用Fe 阅读全文
posted @ 2020-03-24 22:47 阿拉天啦噜 阅读(173) 评论(0) 推荐(0)
Ribbon:客户端负载均衡
摘要:一. 简介 1. 为Ribbon配置服务提供者地址列表后,Ribbon就可以基于某种负载均衡算法,自动帮助服务消费者去请求; 2. 当Ribbon与Eureka配合使用时,Ribbon可以自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例; 3. 阅读全文
posted @ 2020-03-24 22:02 阿拉天啦噜 阅读(222) 评论(0) 推荐(0)
Eureka:服务注册与发现
摘要:一. 简介 1. Eureka是一个基于REST的服务,包含Server和Client两部分,实现微服务的注册与发现; 2. Service提供服务发现的能力,各个微服务启动时,会向Server注册自己的信息,如IP,端口,微服务名称等,Server会存储这些信息; 3. Client是一个Java 阅读全文
posted @ 2020-03-24 21:10 阿拉天啦噜 阅读(530) 评论(0) 推荐(0)
深入了解Zookeeper
摘要:一. 系统模型 数据模型 1. ZNode是Zookeeper中数据的最小单元,每个ZNode上可以保存数据,也可以挂载子节点,因此构成了一个层次化的命名空间,称之为树; 2. Zookeeper中事务是指能改变Zookeeper服务器状态的操作,一般包括数据节点创建与删除,数据节点内容更新和客户端 阅读全文
posted @ 2020-03-23 02:55 阿拉天啦噜 阅读(210) 评论(0) 推荐(0)
Zookeeper的典型应用场景
摘要:一. 数据发布/订阅 Zookeeper采用推拉相结合的方式,客户端在启动时会主动到Zookeeper服务端上进行一次信息的获取,同时在指定节点上注册一个Watcher监听,信息发生变更时,服务端会向相应的客户端发送Watcher事件通知,客户端接收到这个通知后,主动到服务端获取最新的数据; 二. 阅读全文
posted @ 2020-03-22 21:53 阿拉天啦噜 阅读(175) 评论(0) 推荐(0)
Zookeeper的Java客户端API
摘要:一. 创建会话 Zookeeper(String connectString, int sessionTimeout, Watcher watcher); Zookeeper(String connectString, int sessionTimeout, Watcher watcher, boo 阅读全文
posted @ 2020-03-22 16:30 阿拉天啦噜 阅读(135) 评论(0) 推荐(0)
了解Zookeeper
摘要:一. 介绍 1. Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁和分布式队列等功能; 2. 设计目标 简单的数据模型:通过一个共享的,树型结构的名字空间来进行相互协调; 阅读全文
posted @ 2020-03-22 15:37 阿拉天啦噜 阅读(92) 评论(0) 推荐(0)
了解分布式架构
摘要:一. 分布式架构 1. 特点 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统; 分布性:组成分布式系统的所有计算机节点都是对等的; 并发性:系统中的多个节点同时操作一些共享的资源; 缺乏全局时钟:很难定义两个事件究竟谁先谁后; 故障总是会发生:组 阅读全文
posted @ 2020-03-22 15:06 阿拉天啦噜 阅读(730) 评论(0) 推荐(0)
了解kafka
摘要:一. 简介 1. 概况 一个分布式流式处理平台,具有高吞吐,可持久化,可水平扩展,支持流数据处理等多种特性; 2. 角色 消息系统:除传统消息中间件的解耦,冗余存储,流量削峰,缓冲,异步通信,扩展性,可恢复性等功能,还提供了消息顺序性保障及回溯消费的功能; 存储系统:可以把消息持久化到硬盘,可以把K 阅读全文
posted @ 2020-03-21 22:11 阿拉天啦噜 阅读(137) 评论(0) 推荐(0)
了解RabbitMQ
摘要:一. 简介 1. 基本概念 RabbitMQ是AMQP协议的一个开源实现; Message:消息是不具名的,由消息头和消息体组成; Publisher:消息生产者,向交换器发布消息的客户端应用程序; Exchange:交换器,用来接收消息,并将消息路由给队列; Binding:用于消息队列和交换器之 阅读全文
posted @ 2020-03-21 17:58 阿拉天啦噜 阅读(145) 评论(0) 推荐(0)
了解消息队列
摘要:1. 如果是一个业务被拆分成多个子业务部署在不同服务器上,是分布式应用;如果是同一个业务部署在多台服务器上,是集群; 2. 远程过程调用RPC:一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议;典型实现包括Dubbo,Thrift,CRPC等; 3. 消息队列:消息发布者只管将消息 阅读全文
posted @ 2020-03-21 13:57 阿拉天啦噜 阅读(169) 评论(0) 推荐(0)
分布式redis
摘要:一. 水平拆分 sharding 1. 解决数据量和访问量增加后对单节点造成的性能压力;水平拆分后的每个节点存储和处理的数据原则上没有交集; 2. 数据分布: hash映射:将不可控的业务值域key均匀映射到可控的有限值域(hash值)上,再将均匀分布的hash值枚举的映射到redis实例上; 范围 阅读全文
posted @ 2020-03-21 04:17 阿拉天啦噜 阅读(285) 评论(0) 推荐(0)
了解Redis
摘要:一. 数据结构 1. value对象的通用结构 typedef struct redisObject { type:4; // 结构化类型 encoding:4; // 这些结构化类型具体的实现方式,同一个类型可以有多种实现 lru:REDIS_LRU_BITS; // 对象的空转时长,用于有限内存 阅读全文
posted @ 2020-03-21 01:44 阿拉天啦噜 阅读(123) 评论(0) 推荐(0)
了解Ehcache
摘要:一. 简单介绍 1. 一个用Java实现的使用简单,高速,线程安全的缓存管理类库; 2. 从Hibernate发展而来,涵盖了其全部功能; 3. 最快速的Java缓存之一,可用于大型高并发系统,API易于使用; 4. 支持LRU,LFU和FIFO等多种缓存策略; 5. 缓存数据有两级:内存和磁盘,无 阅读全文
posted @ 2020-03-20 16:43 阿拉天啦噜 阅读(145) 评论(0) 推荐(0)
引导
摘要:一. Bootstrap 1. 用于客户端或者使用了无连接协议的应用程序中,负责为程序创建Channel; 2. Bootstrap类将会在bind() 后创建一个新的Channel,然后调用connect() 建立连接,connect() 被调用后Bootstrap类会创建一个新的Channel; 阅读全文
posted @ 2020-03-20 01:26 阿拉天啦噜 阅读(176) 评论(0) 推荐(0)
ChannelHandler,ChannelPipeline和ChannelHandlerContext
摘要:一. ChannelHandler 1. Channel的生命周期 ChannelUnregistered 已经被创建但还未注册到EventLoop; ChannelRegistered 已经注册到EventLoop; ChannelActive 处于活动状态,可以接受和发送数据; ChannelI 阅读全文
posted @ 2020-03-20 00:50 阿拉天啦噜 阅读(609) 评论(0) 推荐(0)
ByteBuf
摘要:一. 原理 1. ByteBuf维护了两个不同的索引:一个用于读取readerIndex,一个用于写入writerIndex; 2. 以read或者write开头的ByteBuf方法将会推进其对应的索引,以set或get开头的操作则不会; 二. 使用模式 1. 堆缓冲区 最常用的ByteBuf模式是 阅读全文
posted @ 2020-03-20 00:06 阿拉天啦噜 阅读(505) 评论(0) 推荐(0)
Netty的传输
摘要:一. 传输API 1. 核心是Channel接口,用于所有的IO操作; 2. 每个Channel都会分配一个ChannelPipeline和ChannelConfig,ChannelConfig包含了所有配置,支持热更新; 3. 为保证Channel顺序声明为java.lang.Comparable 阅读全文
posted @ 2020-03-19 21:29 阿拉天啦噜 阅读(227) 评论(0) 推荐(0)
几个常用接口
摘要:一. Channel接口 1. 基本的IO操作:bind(),connect(),read(),write(); 2. Channel接口提供的API降低了直接使用Socket类的复杂性; 3. 拥有许多预定义的,专门化实现的类:EmbeddedChannel,LocalServiceChannel 阅读全文
posted @ 2020-03-19 20:58 阿拉天啦噜 阅读(290) 评论(0) 推荐(0)
简单的Netty程序
摘要:1. ChannelHandler和业务逻辑 @Sharable // 一个ChannelHandler可以被多个Channel共享 public class EchoServiceHandler extends ChannelInboundHandlerAdapter { @Override pu 阅读全文
posted @ 2020-03-19 20:14 阿拉天啦噜 阅读(158) 评论(0) 推荐(0)
Netty的核心组件
摘要:1. Channel 传入或传出数据的载体,可以被打开或关闭,连接或断开连接; 2. 回调 一个回调其实就是一个方法,一个指向已经被提供给另外一个方法的方法的引用。这使得接受回调的方法可以在适当的时候调用前者; 3. Future 提供了另一种在操作完成时通知应用程序的方式; 这个对象可以看做是一个 阅读全文
posted @ 2020-03-19 17:13 阿拉天啦噜 阅读(149) 评论(0) 推荐(0)
JDK并发包
摘要:一. java.util.concurrent.locks.ReentrantLock重入锁 1.手动加锁,手动释放锁,对逻辑控制的灵活性要高于synchronized lock.lock(); try{ i++; }finally{ lock.unlock(); } 2.在等待锁的过程中,取消对锁 阅读全文
posted @ 2020-03-19 16:00 阿拉天啦噜 阅读(125) 评论(0) 推荐(0)
线程的基本操作
摘要:一. 新建线程 1.继承Thread类,重写run()方法。 当调用start()时,会创建一个新的线程并执行run(); 如直接调用run(),只会在当前线程中串行执行run()中的代码; 2.实现Runnable接口。 用Runnable接口的实例来构造Thread对象; 默认的Thread.r 阅读全文
posted @ 2020-03-18 20:03 阿拉天啦噜 阅读(139) 评论(0) 推荐(0)
为什么并行
摘要:一. 为什么需要设计并行程序 1.摩尔定律:集成电路上可容纳的晶体管数目,每隔24个月便会增加一倍。制造工业无法取得本质上的突破造成了摩尔定律的失效。 2.硬件工程师转向多核CPU的研发。简化的硬件设计方案带来了软件设计的复杂性。 3.我们的世界本质上就是并行的。 二. 几个概念 1.同步:方法一旦 阅读全文
posted @ 2020-03-18 17:42 阿拉天啦噜 阅读(179) 评论(0) 推荐(0)
 

公告


博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3