单例模式漫画版 转载:https://blog.csdn.net/bjweimengshu/article/details/78716839 ————— 第二天 ————— 单例模式第一版: public class Singleton {priva...
简述HashMap HashMap就是一张hash表,键和值都没有排序。HashMap是非线程安全的,只用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap 实现了Serializable接口,因此它支持序列化。HashMap 容量设为不小于指定容量的2的幂次方,且最大值不能超过2的30次方。HashMap的存储结构紫色部分即代表哈希表本身(其实是一个...
Spring事务的一些特性 事务的四大特征1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做2.一致性:数据不会因为事务的执行而遭到破坏3.隔离性:一个事物的执行,不受其他事务的干扰,即并发执行的事物之间互不干扰4.持久性:一个事物一旦提交,它对数据库的改变就是永久的五个隔离级别1.default:默认的事务隔离级别,跟具体的数据有关,mysql默认的事务隔离级别是repeatable_re...
轻量级分布式 RPC 框架 RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。众所周知,TCP 是传输层协议,...
ZooKeeper分布式锁的流程 分布式锁定义:分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。工作流程:1、在zookeeper指定节点(locks)下创建临时顺序节点node_n2、获取locks下所有子节点children3、对子节点按节点自增序号从小到大排序4、判断本节点是不是第一个子节点,若是,则获取锁;若不是,则监听比该节点小的那个节点的删除事件5、若监听事件生效...
Zookeeper服务注册与发现 Zookeeper作为服务注册与发现的解决方案,它有如下优点:1. 它提供的简单API2. 已有互联网公司(例如:Pinterest,Airbnb)使用它来进行服务注册与发现3. 支持多语言的客户端4. 通过Watcher机制实现Push模型,服务注册信息的变更能够及时通知服务消费方缺点是:1. 引入新的Zookeeper组件,带来新的复杂性和运维问题2. 需自己通过它提供的API来实现服务注册与...
简述分布式RPC框架 RPC定义:远程过程调用,是实现分布式计算的基础。实现方式:1.基于TCP协议的RPC;2.基于HTTP协议的RPC;处理过程:一个简单的RPC过程包括一个服务消费者和服务提供者,服务消费者需要使用服务提供者的提供的服务,就需要传给服务提供方相关的信息,这些信息包括服务名称(实际上是一个接口),方法名称,方法的参数类型,参数个数等参数列表信息以及对应的参数,服务提供者根据这些信息返回处理结果给服务...
10个实用的但偏执的Java编程技术 10个最有用但偏执的Java编程技术1.将String字符串放在最前面为了防止偶发性的NullPointerException 异常,我们通常将String放置在equals()函数的左边来实现字符串比较,如下代码:// Badif (variable.equals("literal")) { ... }// Goodif ("literal".equals(variable)) { ......
Eclipse 安装反编译插件jadclipse Eclipse 安装反编译插件jadclipse工具:jadClipse version:3.3.0的jar包Eclipse Java EE IDE for Web Developers. Version: Indigo Service Release 1jad.exe可执行文件步骤:1、先下载jadClipse的jar包 链接:sourceforge.net/projects/jadcli...
Git远程操作详解 原文出处: 阮一峰 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。git clonegit remotegit fetchgit pullgit push本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。同时,本...
IntelliJ远程调试教程 对于分布式系统的调试不知道大家有什么好的方法。对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时。今天咱们来了解了解Java远程调试这个牛逼的功能,本文以Intellij IDEA为例讲解怎么使用远程调试。以Thrift入门教程这篇文章中使用的程序作为例子。这个程序由Thrift服务端和客户端组成。描述一下远程调试需要解决的问题:服务端程序运行在...
Git 的 4 个阶段的撤销更改 来源:张京www.fengerzh.com/git-reset/虽然git诞生距今已有12年之久,网上各种关于git的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握。以下的介绍只是基于我个人对于git的理解,并且可能生编硬造了一些不完全符合git说法的词语。目的只是为了让git通俗化,使初学者也能大概了解如何快速上手git。同时,下面所有讨论,我们都假设只使用一个分支...
架构师必备词汇和知识点 架构师必备词汇和知识点01 高可用负载均衡(负载均衡算法)反向代理服务隔离服务限流服务降级(自动优雅降级)失效转移超时重试(代理超时、容器超时、前端超时、中间件超时、数据库超时、NoSql超时)回滚机制(上线回滚、数据库版本回滚、事务回滚)02 高并发应用缓存HTTP 缓存多级缓存分布式缓存连接池异步并发03 分布式事务二阶段提交(强一致)三阶段提交(强一致)消息中间件(最终一致性),推荐阿里的 ...
sql查询优化30个 sql查询优化30个1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select...
MySQL主从复制的实现过程 一、什么是主从复制将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。二、主从复制的作用1、主数据库出现问题,可以切换到从数据库。2、可以进行数据库层面的读写分离。3、可以在从数据库上进行日常备份。三、复制过程Binary log:主数据库的二进制日志。Relay log:从服务器的中继日志。第一步:master...
单点登录原理与简单实现 一、单系统登录机制1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求...
ActiveMQ之HelloWorld 篇文章从代码角度去实现一个mq。因为ActiveMQ是对JMS的一种实现,因此,AMQ的开发步骤就应该和JMS的开发模型一样。1. 创建ConnectionFactory2. 创建Connection3. 创建Session4. 创建Destination/Topic5. 创建Producer/Consumer[java] view