经验技巧
过云雨后
这个作者很懒,什么都没留下…
展开
-
解决Mysql读写分离数据延迟
MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利。但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载、网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的。短在1秒内,长则几秒、几十秒甚至更长都有可能。 由于数据延迟问题的存在,当应用程序在Mas转载 2017-06-21 15:13:23 · 2215 阅读 · 0 评论 -
最实用的lambda表达式示例,快速掌握java8新特性
package com.caocao.share.box.test.lambda;import com.google.common.collect.Lists;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import ja...原创 2018-11-28 17:19:00 · 218 阅读 · 0 评论 -
三种方式实现分布式锁
方案一:数据库乐观锁乐观锁通常实现基于数据版本(version)的记录机制实现的,比如有一张红包表(t_bonus),有一个字段(left_count)记录礼物的剩余个数,用户每领取一个奖品,对应的left_count减1,在并发的情况下如何要保证left_count不为负数,乐观锁的实现方式为在红包表上添加一个版本号字段(version),默认为0。异常实现流程-- 可能会发生的异常情转载 2018-01-19 17:00:29 · 2432 阅读 · 0 评论 -
rateLimiter令牌桶限流算法
RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率。通常可应用于抢购限流防止冲垮系统;限制某接口、服务单位时间内的访问量,譬如一些第三方服务会对用户访问量进行限制;限制网速,单位时间内只允许上传下载多少字节等。下面来看一些简单的实践,需要先引入guava的maven依赖。一 有很多任务转载 2018-01-31 17:19:32 · 600 阅读 · 0 评论 -
ThreadPoolExecutor机制
ThreadPoolExecutor机制 一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。 3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障转载 2017-11-20 13:53:26 · 219 阅读 · 0 评论 -
HashMap源码解读
一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Co转载 2017-11-17 15:22:34 · 173 阅读 · 0 评论 -
Java中的字符串常量池详细介绍
Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式。然而这两种实现其实存在着一些性能和内存占用的差别。这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这转载 2017-11-13 10:37:57 · 248 阅读 · 0 评论 -
探究类加载机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17881581类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个转载 2017-11-08 15:44:01 · 135 阅读 · 0 评论 -
垃圾收集算法分类
一 标记清除算法 mark-sweep标记对象的判定(可达性 gcroots)不足: 1 效率问题2 空间问题 : 标记清除之后会产生大量不连续的内存碎片, 空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发垃圾收集动作二 复制算法(copying) 解决效率的问题将可用的内存按容量分为大原创 2017-08-07 15:10:48 · 321 阅读 · 0 评论 -
数字证书原理
文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出! 1、基础知识 这部分内容主要解释一些概念和术语,最好是先理转载 2017-08-21 15:49:35 · 267 阅读 · 0 评论 -
浏览器与CDN缓存
前端缓存分为浏览器缓存和cdn缓存 关于是否缓存,是浏览器缓存还是CDN缓存,缓存保留多长时间,由cache-control控制请求:响应:特别说明: Cache-control: public 表示缓存的版本可以被代理服务器或者其他中间服务器识别(浏览器,cdn都能缓存)。Cache-control: private 意味着转载 2017-08-04 10:17:43 · 3694 阅读 · 0 评论 -
sharding-jdbc整合mybatis
最近忙于项目已经好久几天没写博客了,前2篇文章我给大家介绍了搭建基础springMvc+mybatis的maven工程,这个简单框架已经可以对付一般的小型项目。但是我们实际项目中会碰到很多复杂的场景,比如数据量很大的情况下如何保证性能。今天我就给大家介绍数据库分库分表的优化,本文介绍mybatis结合当当网的sharding-jdbc分库分表技术(原理这里不做介绍) 首先在pom文件中引转载 2017-08-02 17:48:34 · 2747 阅读 · 0 评论 -
JS中 window.location.search的作用
用该属性获取页面 URL 地址:window.location 对象所包含的属性属性描述hash从井号 (#) 开始的 URL(锚)host主机名和当前 URL 的端口号hostname当前 URL 的主机名href完整的 URLpathn转载 2017-08-16 18:54:16 · 284 阅读 · 0 评论 -
diamond淘宝框架使用
一、概况diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理。diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数据。持久配置是指配置数据会持久化到磁盘和数据库中。dia转载 2017-08-02 09:38:28 · 2248 阅读 · 0 评论 -
大规模分布式跟踪系统的理论
概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper--Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个大规模集群的转载 2017-08-01 16:50:14 · 597 阅读 · 0 评论 -
分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题消息的重复问题RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的?关键特性以及其实现原理一、顺序消息消息有序指的是可以按照消息转载 2017-08-08 09:05:22 · 459 阅读 · 0 评论 -
一致性哈希
本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库转载 2017-07-11 14:42:24 · 360 阅读 · 0 评论 -
HiveMQ broker maven项目转化及运行环境搭建
一 安装目标1 实现在本地环境开发和运行hiveMq Server端二 安装软件准备 (仅windows)♦1 JDK 11 hiveMQ broker运行环境目前仅支持jdk11及以上版本;推荐oracle官方版本jdk-11.0.3_windows-x64_bin♦2 gradle hiveMQ的默认构建方式为gradle,本地需要安装gradle环...原创 2019-06-03 17:34:13 · 1625 阅读 · 2 评论