摘要:
可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题 主要原因:内核以为此对象还在引用中,无法回收,造成内存泄漏 只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏。 内存泄漏和内存溢出的 阅读全文
摘要:
sql优化办法 优化sql结构,去除冗余字段 优化索引结构,适当添加索引 分库分表 数据库读写分离额,主从分离 explain分析sql并优化 mysql性能分析命令 show status 监控变量 show profiles 分析sql执行时资源消耗情况 悲观锁、乐观锁 悲观锁 认为数据更新频繁 阅读全文
摘要:
synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象 阅读全文
摘要:
手写RPC框架(六)整合Netty Netty简介: Netty是一个基于NIO的,提供异步,事件驱动的网络应用工具,具有高性能高可靠性等特点。 使用传统的Socket来进行网络通信,服务端每一个连接都要新建一个线程,清楚处理完成后通过输出流返回给客户端。而Netty通过NIO的方式,服务端实现为一 阅读全文
摘要:
手写RPC框架(五)整合Zookeeper Zookeeper是一种分布式程序协调服务,RPC框架中使用Zookeeper可以更加灵活,不仅可以存储<K,V>结构的数据,也可以存储树状结构的数据,同时Zookeeper相较于Redis支持分布式,当一台节点挂掉时,也可以用其他机器提供服务。 我们采用 阅读全文
摘要:
zookeeper学习 参考ZooKeeper 详解 zookeeper是分布式的、开源的程序协调服务,提供的主要功 能包括:配置管理、名字服务、分布式锁、集群管理。 配置管理 数据库链接等配置服务,通过zab协议使得分布式系统达成一致性 名字服务 通过指定的名字获取资源或者服务的地址,童工者的信息 阅读全文
摘要:
手写RPC框架(四)使用Redis进行服务注册 在使用Redis之前,我们发现项目代码结构设计不合理,对于消费者,服务者应该作为不同的模块,在测试和运行时可以分别运行对应的模块,在此我们将项目拆分为四个模块 Consumer 消费者,即客户端 Provider 服务提供者 Service 项目中使用 阅读全文
摘要:
1. 题目 你现在手里有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的。如果网格上只有陆地或者海洋,请返回 -1。 我们这里说的距离是「曼哈顿距离 阅读全文
摘要:
在写算法题时经常会遇到在数组中查找元素的情况,当该元素不存在时,会选择比这个元素小的第一个元素,通常采用二分查找来解决,也可以通过一些内置函数解决。 java+二分查找 public int q(int t) { int l = 0, r = times.length - 1; // 找到满足 ti 阅读全文
摘要:
手写RPC框架(三)实现服务注册 RPC框架一般由服务端,消费端,注册中心三部分组成。注册中心负责持久化服务名称,IP地址以及端口等。本次只实现简单的服务注册功能。 实现服务注册功能 public class ServiceRegister { //负责存储服务列表 private static L 阅读全文