架构
有头发的猩猩
这个作者很懒,什么都没留下…
展开
-
缓存穿透、击穿、雪崩缓存场景分析及解决方案
由于 CSDN 改版之后导致页面丢失了太多的东西,现已将博客迁移到自己的小站去了:地址:http://www.wangchunlong.cn/article/8 使用缓存通常的操作时先访问缓存数据,如果缓存中不存在的话,就会回源到数据库中然后将数据写入到缓存中。如果存在就直接返回数据,从整个过程来看,缓存层就处于数据库的前置环节,分担了数据库在高并发容易出现故障的风...原创 2019-12-13 17:05:35 · 689 阅读 · 0 评论 -
缓存领域常用术语
由于博客迁移,已经放在了自己的小站上了详细地址:http://www.wangchunlong.cn/article/7在合理应用缓存前,需要了解缓存领域里相关的几个常用术语:1.1、 缓存命中:表示数据能够从缓存中获取,不需要回源1.2、 Cache miss(缓存没有命中) :表示没有命中缓存,如果缓存内存中还有内存空间的话,会将数据加入到缓存中1.3、 存储成本: ...原创 2019-12-13 16:00:43 · 376 阅读 · 0 评论 -
BerkeleyDB API、官方文档
示例文档:https://docs.oracle.com/cd/E17277_02/html/TransactionGettingStarted/index.htmlAPI:https://docs.oracle.com/cd/E17277_02/html/java/index.html?com/sleepycat/je/package-summary.htmlOracle Berkeley ...原创 2019-10-24 15:30:28 · 658 阅读 · 0 评论 -
BerkeleyDB 启动报错com.sleepycat.je.DatabaseException: The Environment directory is not writable问题
背景:这个是我在写一个中间件的时候发现需要用到文件存储数据方面的东西,因为自己写的达不到那个量级的需求,然后去stackoverflow上就看到了推荐 BerkeleyDB 这个文件数据库下面是我的测试代码: public static void main(String[] args) throws Exception { EnvironmentConfig environm...原创 2019-10-22 17:12:21 · 956 阅读 · 0 评论 -
JMM基础-伪共享
CPU中存在好几级的高速缓存。但是CPU 缓存中是以 缓存行 为单位存储的。目前主流的 CPU Cache 的Cache Line 大小都是 64Bytes。Cache Line 可以简单的理解为 CPU Cache中的最小缓存单位,今天的 CPU不再是按字节访问内存,而是以 64 字节为单位的块(chunk)拿取,成为一个缓存行(Cache Line)。当你读一个特定的内存地址,...原创 2019-06-10 18:04:46 · 459 阅读 · 0 评论 -
JMM基础-内存模型及内存模型带来的问题
内存模型 从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Momory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编辑器优化。Java...原创 2019-06-11 14:44:18 · 382 阅读 · 0 评论 -
new HashMap()和Maps.newHashMap()的区别以及 newHashMapWithExpectedSize()
1、new HashMap() 这种是java原生API写法,需要你手动加泛型。存在线程安全问题,在扩容计算hash的时候会出现安全问题,在rehash方法中,有兴趣的可以去看一下源码Map<String,Object>result=newHashMap<String,Object>(); 2、Maps.newHashM...原创 2019-07-25 18:26:17 · 3623 阅读 · 0 评论 -
关于volatile关键字详解
提到volatile首先想到就是:保证此变量对所有线程的可见性,这里的 “可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 禁止指令重排序优化(happens-before)。1、特性 可见性:对一个volatile 变量的读,总是能看到(任意线程) 对这个 volatile 变量最后的写入。 原子性:对任意单个 volati...原创 2019-07-28 15:34:02 · 147 阅读 · 0 评论 -
nginx Openresty安装及使用
OpenResty是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,常用的第三方模块以及大多数依赖项。 可以把它看成是Nginx附加众多的第三方插件的合集。其主体是嵌入lua脚本的支持,让你能够使用lua灵活地处理运算逻辑。1、Openresty的安装配置 1.1、简易的yum安装方式 此方式简单,缺点是无法干预启停插件 ...原创 2019-08-09 18:34:26 · 2889 阅读 · 0 评论 -
Java获取 IP 详细信息、经纬度
可以自己搭建,也可以直接使用现成的请求链接,每个月月初更新 ip 库 获取城市信息:http://ip.guoxinqi.cn/city/47.96.229.169 获取IP经纬度信息:http://ip.guoxinqi.cn/position/47.96.229.169自己搭建:可用于拦截操作、获取 IP 详细信息、及黑名单操作获取。拦截操作: MvcCon...原创 2019-08-14 19:57:22 · 1043 阅读 · 0 评论 -
JVM GC垃圾回收机制及算法
1、GC 1.1 Minor GC 特点:发生在新生代上,发生的较频繁,执行速度较快 触发条件:Eden 区空间不足 \ 空间分配担保 1.2 Full GC 特点:主要发生在老年代上(新生代也会回收),较少发生,执行速度较慢 ...原创 2019-08-16 16:20:45 · 179 阅读 · 0 评论 -
JVM 垃圾回收器
分代收集:根据各个年代的特点选取不同的垃圾回收算法 新生代使用复制算法 老年代使用标记-整理或者标记-清除算法 jps -v 显示当前使用的垃圾回收器 在新生代中,每次垃圾收集是都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集,而老年代中因为对象存活率高、没有额外空间对它进行...原创 2019-08-16 17:37:20 · 147 阅读 · 0 评论 -
JVM会在什么时候会发生内存泄漏、触发GC回收
第一个问题,Java在什么时候容易发生内存泄露? 1、静态集合类,如 HashMap、Vector 等,因为GC是不会回收静态类的 2、各种连接,如 数据库连接、网络连接、IO连接等如果没有调用 close 关闭,GC不会回收导致的内存泄露,所以我们一再强调使用完连接之后一定要在 finally 中关闭掉 3、强引用,Object obj = new O...原创 2019-08-23 15:38:09 · 1884 阅读 · 0 评论 -
spring项目启动完成后,自动执行一次指定方法
实现ApplicationListener接口,并实现 onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent)方法@Componentpublic class SearchReceive implements ApplicationListener<ContextRefreshedEvent> {...原创 2019-09-19 14:54:54 · 696 阅读 · 0 评论 -
JMM基础-计算机原理
Java内存模型即 Java Memory Model,简称JMM。JMM 定义了 Java 虚拟机(JVM)在内存中的工作方式。JVM 是整个计算机虚拟模型,所以JMM 是隶属于 JVM 的。Java1.5版本对其进行了重构,现在的Java仍沿用了 Java1.5的版本,JMM 遇到的问题与现代计算机中遇到的问题是差不多类似的。 物理计算机中的并发问题,物理...原创 2019-06-10 17:49:38 · 184 阅读 · 0 评论 -
JVM(Java虚拟机)优化大全和案例实战
作者:AlexanderHu原文:https://blog.csdn.net/kthq/article/details/8618052堆内存设置原理JVM堆内存分为2块:PermanentSpace 和 Heap Space。Permanent 即持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系...转载 2019-05-30 18:19:16 · 119 阅读 · 0 评论 -
SpringBoot连接MongoDB集群问题RFC 2732
这是我springboot连接 MongoDB 配置spring: data: mongodb: uri: mongodb://192.168.1.143:9085/test,mongodb://192.168.1.144:9085/test,mongodb://192.168.1.145:9085/test连接MongoDB 集群是出现java....原创 2019-04-25 16:21:47 · 3732 阅读 · 0 评论 -
ActiveMQ消息中间件之JMS概念及用法(二)
JMS(Java Messageing Service)是Java平台面向消息中间件的技术规范,实际上是一套API,便于消息系统中Java应用程序进行消息交互,并且通过提供标准的产生,发送、接收消息的接口简化企业开发,ActiveMQ是这规范的一个具体实现。JMS规范模型:1)、连接工厂:负责创建一个JMS连接2)、JMS连接:表示JMS客户端与服务器端之间的一个活动的连接,是由客...原创 2018-11-30 17:51:36 · 229 阅读 · 0 评论 -
(非常非常重要)Java基础之反射
反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码...转载 2018-12-03 20:42:31 · 719 阅读 · 0 评论 -
Java利用反射动态获取参数并进行操作实例,实现动态获取实体类解析JSON
今天看到程序里面有大量数据都是使用的JSON传输,解析重复代码太多了,然后重构了解析JSON的方式,利用反射机制把解析的方式封装了一下,我这是使用的FastJson,使用其他JSON的自己改一下就可以了import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect....原创 2018-12-19 20:45:41 · 3190 阅读 · 0 评论 -
什么是Redis介绍
1、redis介绍(redis安装在磁盘,redis数据存储在内存) reids是一种基于键值对(key-value)数据库,其中value可以为 string、hash、list、set、zset等多种数据结构(用了这么久好多都没用到过),可以满足很多应用场景,还提供了键过期,发布订阅,事务,流水线等附加功能。 流水线:redis的流水线功能允许客户端一次将多个命令请...原创 2019-01-13 15:14:48 · 419 阅读 · 0 评论 -
Redis中的API应用
数据结构---字符串《String》 数据结构----哈希《hash》 数据结构----列表《List》 数据集合----集合《SET》 数据结构----《有序集合》 全局命令 1、数据结构---字符串《String》 1.1)字符串类型:实际上可以是字符串(包括XML、JSON),还有数字(整型、浮点数),二进...原创 2019-01-13 16:21:56 · 308 阅读 · 0 评论 -
Redis主从复制
Redis 的主从复制有两种搭建方式 6379、6380 两个端口。 新增redis6380.conf, 加入 slaveof 127.0.0.1 6379(主), 主启动成功之后再启动从,配置如下:requirepass "admin123" #设置redis登录密码masterauth "admin123" #主从认证密码,否则主从不能同步...原创 2019-01-28 17:28:19 · 138 阅读 · 0 评论 -
开发者可以使用Docker做什么???
Docker如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞起不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 里自己很远, Docker是生产环境中的工具,和自己无关,我也是花了很多时间猜想清楚作为不同开发人员如果在自己的开发中使用 Docker 。 坦率的说,我仍处于学习的过程中。 这篇文章提供了一个Docker用例列表,我希望它能...原创 2019-02-28 15:29:35 · 1938 阅读 · 2 评论 -
Docker 安装 Nginx
方法一、docker pull nginx(推荐)查找DockerHub上的 nginx 镜像[root@izbp1ezc14ouhirf7yb81nz /]# docker search nginxNAME DESCRIPTION STARS OFFICIA...原创 2019-02-28 15:39:46 · 249 阅读 · 0 评论 -
spring 简介(一)
1、Spring的目标是什么? Spring官方主页(http://spring.io)有两句话:Let's build a better Enterprise. 我们共同来构建更好的企业应用。 Spring helps development teams everywhere build simple, portable, fast and flexible JVM-b...原创 2019-03-01 17:19:52 · 565 阅读 · 0 评论 -
Spring(二)注释详解(@Target,@Retention,@Documented)
要深入学习spring就要定义自己的注解,并使用注解,在定义自己的注解之前,我们必须要了解Java为我们提供的元注解和相关定义注解的语句1、元注解(meta-annotation): 元注解的作用就是负责注解其他注解,Java5定义了元注解类型,他们被用来提供对其它annotation类型做说明。@Target @Retention @Documented...原创 2019-03-07 17:24:00 · 1956 阅读 · 0 评论 -
MongoDB Liunx安装
官网下载安装介质:https://www.mongodb.com/download-center,选择适当的版本,这里以linux版本mongodb-linux-x86_64-3.4.18为例; 解压到系统某路径, tar -xvzf mongodb-linux-x86_64-3.4.18.tgz 在安装目录创建data目录,以及logs目录和logs/mongodb.log文件 使用...原创 2019-04-01 20:23:04 · 107 阅读 · 0 评论 -
MongoDB error processing document #2: invalid character ',' looking for beginning of value
打算把公司登陆系统现在还是直接使用数据库进行查询,今天打算把它优化一下换成 MongoDB 进行查询,结果导入测试数据的时候一直报 Failed: error processing document #2: invalid character ',' looking for beginning of value 错误,搞了大半天才解决,它喵的。[root@iZm5ec7pkk6xphur...原创 2019-04-08 16:18:28 · 8031 阅读 · 4 评论 -
MongoTemplate 增删改查,or、and等复杂查询
先来张表图看一看 运算符类型 运算符 描述 范围 $eq 等于 $lt 小于 $gt 大于 $lte 小于等于 $gte ...原创 2019-04-09 17:05:31 · 12211 阅读 · 3 评论 -
Redis-sentinels启动时报错 All sentinels down, cannot determine where is redis-sentinel master is running.
报错信息:Caused by: redis.clients.jedis.exceptions.JedisConnectionException: All sentinels down, cannot determine where is redis-sentinel master is running…1、可用telnet ip+端口 看是否连接成功查看:D:\>tel...原创 2019-04-26 12:15:12 · 11871 阅读 · 0 评论 -
MongoDB高可用之可复制集(主从)
什么是可复制集可复制集是跨多个MongoDB服务器(节点)分布和维护数据的方法。MongoDB可以把数据从一个节点复制到其他节点并在修改时进行同步,集群的节点配置为自动同步数据;旧方法叫做主从复制,MongoDB 301 以后推荐使用可复制集; 为什么要用可复制集?它有还说呢么重要性? 避免数据丢失,保障数据安全,提高系统安全性;(最少3节点,最大50节点) ...原创 2019-04-25 15:46:37 · 319 阅读 · 0 评论 -
ActiveMQ安装、部署和运行
下载地址:http://activemq.apache.org/activemq-580-release.html 下载 Windows版 ActiveMQ,解压,运行bin目录下的activemq.bat即可。Linux下操作类似(进入bin目录运行./activemq start启动,./activemq stop关闭)。 运行后在浏览器中访问http://127.0.0.1:...原创 2018-11-30 16:02:14 · 302 阅读 · 0 评论