自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_37574389的博客

跟时间飙车

  • 博客(70)
  • 收藏
  • 关注

原创 我的博客迁移了

地址:http://www.wangchunlong.cn/

2019-12-10 11:00:57 121

原创 什么是公平锁和非公平锁,基于Lock

非公平锁:首先会在 lock方法调用加锁的时候去抢锁(公平锁调用lock不会上来就去拿锁)如果加锁失败则去看为什么失败(是否锁被人持有),在判断的时候如果锁没有被人持有非公平锁就会直接去加锁(不会判断是否有人排队),成果则进入同步块,失败则park(真正的排队)公平锁:第一次加锁的时候,他不会去尝试加锁,它回去看一下前面有没有人排队没如果有人排队,则进入队列(并不等于排队),然后还不会立刻等待,还会再次看一下有没有拿锁的资格(前面的元素是否为 head),如果有资格(前面那个人正好是h.

2020-09-08 17:09:06 576

原创 Java 方法调用的底层实现

详细内容请移驾我的个人博客品尝:http://www.19971001.com/article/33我们写的代码,经过编译、经过类加载的各种阶段,进入了JVM的运行时数据区。但作为程序员真正关心的是代码的执行,代码的执行其实本质上市方法的执行,站在JVM 的角度归根到底还是字节码的执行。main 函数式 JVM指令执行的起点,JVM 会创建 main线程来执行main函数,以触发JVM一系列指令的执行,真正的把 JVM 跑起来。接着,在我们的代码中,就是方法的调用过程,所以了解方法在 JVM .

2020-08-04 11:24:25 2024

原创 SpringBoot源码tomcat启动解析笔记

进入main启动方法找到refreshContext(这个作用是刷新上下文)找到onRefresh() 实现类,ServletWebServerApplicationContext.java这里是创建webServer,但是还没有启动tomcat,这里是通过ServletWebServerFactory创建,那么接着看下ServletWebSer...

2020-04-08 15:24:39 226

原创 springcloud客户端注册时 Saw local status change event StatusChangeEvent错误

2020-02-26 21:37:29.888 INFO 12516 --- [extShutdownHook] o.s.c.n.e.s.EurekaServiceRegistry : Unregistering application MICRO-ORDER with eureka with status DOWN2020-02-26 21:37:29.889 WA...

2020-02-26 21:46:11 6755 3

原创 Kata Container是什么?

KataContainer首页的几个大字写的是容器的速度,虚拟机的安全性。与Docker一样,都是容器,但相对与docker,Kata更安全、更好的性能在2019年12月份,开源中国发布了一篇:以Docker为代表的传统容器到了生死存亡之际在AWS的官方博客中描述了docker的安全隐患: 由于操作系统内核漏洞,docker 组件设计缺陷,以及不当的配置都会导致 dock......

2019-12-25 15:57:07 2297

原创 锁:可重入式独占锁

什么是可重入锁(ReentrantLock)? 线程可以重复进入任何一个它已经拥有的锁所同步着的代码块,synchronized、ReentrantLock都是可重入的锁。在实现上,就是线程每次获取锁时判定如果获得锁的线程是它自己时,简单将计数器累积即可,每释放一次锁,进行计数器累减,直到计算器归零,表示线程已经彻底释放锁。项目示例:https://gitee.com/...

2019-12-17 16:29:26 277

原创 缓存穿透、击穿、雪崩缓存场景分析及解决方案

由于 CSDN 改版之后导致页面丢失了太多的东西,现已将博客迁移到自己的小站去了:地址:http://www.wangchunlong.cn/article/8 使用缓存通常的操作时先访问缓存数据,如果缓存中不存在的话,就会回源到数据库中然后将数据写入到缓存中。如果存在就直接返回数据,从整个过程来看,缓存层就处于数据库的前置环节,分担了数据库在高并发容易出现故障的风...

2019-12-13 17:05:35 627

原创 缓存领域常用术语

由于博客迁移,已经放在了自己的小站上了详细地址:http://www.wangchunlong.cn/article/7在合理应用缓存前,需要了解缓存领域里相关的几个常用术语:1.1、 缓存命中:表示数据能够从缓存中获取,不需要回源1.2、 Cache miss(缓存没有命中) :表示没有命中缓存,如果缓存内存中还有内存空间的话,会将数据加入到缓存中1.3、 存储成本: ...

2019-12-13 16:00:43 314

原创 spring解析XML和解析自定义标签全过程

由于内容太过于庞大,所有我用一个 Execl 把整个过程给截取下来了,直接下载下来就行了,由于服务器性能限制速度有点慢。由于CSDN不支持附件上传,所有我放在了我自己的小站上,地址:http://www.wangchunlong.cn/article/6进去直接下载下来就可以了...

2019-12-12 20:08:04 194

原创 BerkeleyDB Non-transactional Cursors may not be used in multiple threads; Cursor was created in Thr

报错详细信息:java.lang.IllegalStateException: Non-transactional Cursors may not be used in multiple threads; Cursor was created in Thread[Thread-7,10,main] but used in Thread[nioEventLoopGroup-2-2,10,mai...

2019-10-31 17:00:15 157

原创 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 606

原创 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 926

原创 maven打包 Failed to execute goal on project XX: Could not resolve dependencies for project 问题

将一个新项目打包为 Jar 上线时发生了这个错误Failed to execute goal on project mayimq-client: Could not resolve dependencies for project cn.wangchunlong:mayimq-client:jar:1.0: The following artifacts could not be resol...

2019-10-17 14:31:32 1740

原创 spring项目启动完成后,自动执行一次指定方法

实现ApplicationListener接口,并实现 onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent)方法@Componentpublic class SearchReceive implements ApplicationListener<ContextRefreshedEvent> {...

2019-09-19 14:54:54 678

原创 JVM会在什么时候会发生内存泄漏、触发GC回收

第一个问题,Java在什么时候容易发生内存泄露? 1、静态集合类,如 HashMap、Vector 等,因为GC是不会回收静态类的 2、各种连接,如 数据库连接、网络连接、IO连接等如果没有调用 close 关闭,GC不会回收导致的内存泄露,所以我们一再强调使用完连接之后一定要在 finally 中关闭掉 3、强引用,Object obj = new O...

2019-08-23 15:38:09 1852

原创 JVM 垃圾回收器

分代收集:根据各个年代的特点选取不同的垃圾回收算法 新生代使用复制算法 老年代使用标记-整理或者标记-清除算法 jps -v 显示当前使用的垃圾回收器 在新生代中,每次垃圾收集是都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集,而老年代中因为对象存活率高、没有额外空间对它进行...

2019-08-16 17:37:20 132

原创 JVM GC垃圾回收机制及算法

1、GC 1.1 Minor GC 特点:发生在新生代上,发生的较频繁,执行速度较快 触发条件:Eden 区空间不足 \ 空间分配担保 1.2 Full GC 特点:主要发生在老年代上(新生代也会回收),较少发生,执行速度较慢 ...

2019-08-16 16:20:45 167

原创 本地项目上传到码云,只需这几步

1,首先在码云上新建一个项目2,本地新建一个文件夹3,进入新建的文件夹,点击鼠标右键,选择git bash here然后在窗口输入 git init 这时候文件夹会多出一个.git文件夹,看不到文件夹的,点击鼠标右键选择“显示不显示隐藏的文件”就可以看到这个文件夹了4,进入刚刚在码云新建的项目里,复制(克隆/下载)里的路径5,然后在回到本地新建的文件夹里继续操作git ...

2019-08-14 20:45:55 141

原创 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 989

原创 nginx Openresty安装及使用

OpenResty是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,常用的第三方模块以及大多数依赖项。 可以把它看成是Nginx附加众多的第三方插件的合集。其主体是嵌入lua脚本的支持,让你能够使用lua灵活地处理运算逻辑。1、Openresty的安装配置 1.1、简易的yum安装方式 此方式简单,缺点是无法干预启停插件 ...

2019-08-09 18:34:26 2841

原创 shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such fi

[root@izbp1ezc14ouhirf7yb81nzyux luajit-2.1]# source /etc/profileshell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory该错误表示 getcwd 命令无法...

2019-08-08 15:24:04 1560

原创 关于volatile关键字详解

提到volatile首先想到就是:保证此变量对所有线程的可见性,这里的 “可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 禁止指令重排序优化(happens-before)。1、特性 可见性:对一个volatile 变量的读,总是能看到(任意线程) 对这个 volatile 变量最后的写入。 原子性:对任意单个 volati...

2019-07-28 15:34:02 132

原创 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 3209

原创 JMM基础-内存模型及内存模型带来的问题

内存模型 从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Momory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编辑器优化。Java...

2019-06-11 14:44:18 361

原创 JMM基础-伪共享

CPU中存在好几级的高速缓存。但是CPU 缓存中是以 缓存行 为单位存储的。目前主流的 CPU Cache 的Cache Line 大小都是 64Bytes。Cache Line 可以简单的理解为 CPU Cache中的最小缓存单位,今天的 CPU不再是按字节访问内存,而是以 64 字节为单位的块(chunk)拿取,成为一个缓存行(Cache Line)。当你读一个特定的内存地址,...

2019-06-10 18:04:46 446

原创 JMM基础-计算机原理

Java内存模型即 Java Memory Model,简称JMM。JMM 定义了 Java 虚拟机(JVM)在内存中的工作方式。JVM 是整个计算机虚拟模型,所以JMM 是隶属于 JVM 的。Java1.5版本对其进行了重构,现在的Java仍沿用了 Java1.5的版本,JMM 遇到的问题与现代计算机中遇到的问题是差不多类似的。 物理计算机中的并发问题,物理...

2019-06-10 17:49:38 168

转载 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 109

原创 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 11574

原创 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 3647

原创 MongoDB高可用之可复制集(主从)

什么是可复制集可复制集是跨多个MongoDB服务器(节点)分布和维护数据的方法。MongoDB可以把数据从一个节点复制到其他节点并在修改时进行同步,集群的节点配置为自动同步数据;旧方法叫做主从复制,MongoDB 301 以后推荐使用可复制集; 为什么要用可复制集?它有还说呢么重要性? 避免数据丢失,保障数据安全,提高系统安全性;(最少3节点,最大50节点) ...

2019-04-25 15:46:37 296

原创 MongoTemplate 增删改查,or、and等复杂查询

先来张表图看一看 运算符类型 运算符 描述 范围 $eq 等于 $lt 小于 $gt 大于 $lte 小于等于 $gte ...

2019-04-09 17:05:31 11957 3

原创 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 7931 4

原创 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 101

原创 bootstrap 输入框只能数字和字母等其他限制

输入中文、数字、英文: <input onkeyup="value=value.replace(/[^\w\u4E00-\u9FA5]/g, '')"> 输入数字和字母:<input onKeyUp="value=value.replace(/[\W]/g,'')"> 输入大小写字母、数字、下划线:<input type="text...

2019-03-23 16:45:11 7298 1

原创 Springboot连接mysql的时区错误问题: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents mo

今天把SpringBoot从1.5升级到2.1的时候出现这个时区问题The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the se...

2019-03-08 10:49:56 1862

原创 Spring(二)注释详解(@Target,@Retention,@Documented)

要深入学习spring就要定义自己的注解,并使用注解,在定义自己的注解之前,我们必须要了解Java为我们提供的元注解和相关定义注解的语句1、元注解(meta-annotation): 元注解的作用就是负责注解其他注解,Java5定义了元注解类型,他们被用来提供对其它annotation类型做说明。@Target @Retention @Documented...

2019-03-07 17:24:00 1922

原创 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 532

原创 Docker 安装 Nginx

方法一、docker pull nginx(推荐)查找DockerHub上的 nginx 镜像[root@izbp1ezc14ouhirf7yb81nz /]# docker search nginxNAME DESCRIPTION STARS OFFICIA...

2019-02-28 15:39:46 205

原创 开发者可以使用Docker做什么???

Docker如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞起不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 里自己很远, Docker是生产环境中的工具,和自己无关,我也是花了很多时间猜想清楚作为不同开发人员如果在自己的开发中使用 Docker 。 坦率的说,我仍处于学习的过程中。 这篇文章提供了一个Docker用例列表,我希望它能...

2019-02-28 15:29:35 1915 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除