自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

maohoo的博客

—— 勿以浮沙筑高台

原创 日常填坑 ——单一模块导致服务器整体性能下降问题排查

旁边的小伙伴昨天加班到今天的凌晨三点,睡在了公司,早晨我到工位时,和我说改了一晚上的上传接收逻辑(也是前一位离开的小伙伴交接的,属于顺位坑主),终于线上问题是修复了,但是只要一上传,整个项目前台页面就会响应不过来,一片白,拜托我帮他找一找问题,修复下,他已经连续通宵加班两天了,说完就骑着小电驴拖着...

2019-03-08 16:32:48

阅读数 77

评论数 1

原创 日常填坑 ——linux服务器,mongodb吃内存,导致服务器缓慢

通过free -h 命令,发现服务器可用内存不足,并发现大量的内存被占用到buff/cache中。 一类,直接可以通过命令进行释放 sync; echo 3 > /proc/sys/vm/drop_caches 可以看到,cached的19G内存已经释放。 这种情况还算比较乐观...

2019-02-26 17:05:46

阅读数 584

评论数 0

转载 老生常谈,HashMap的死循环【基于JDK1.7】

转自占小狼博客 问题 如果是在单线程下使用HashMap,自然是没有问题的,如果后期由于代码优化,这段逻辑引入了多线程并发执行,在一个未知的时间点,会发现CPU占用100%,居高不下,通过查看堆栈,你会惊讶的发现,线程都Hang在hashMap的get()方法上,服务重启之后,问题消失,过...

2018-08-09 10:47:08

阅读数 1637

评论数 1

原创 HashMap源码和JDK1.8以后的一些变化

内部实现 JDK1.8以后 HashMap的数据结构发生了一些改变,从单纯的数组加链表结构变成数组+链表+红黑树.如图 其中的Node是HashMap的静态内部类,实现了Map.Entry接口,本质就是一个KV映射,上图中的小圆圈就是一个Node static class Node&a...

2018-08-08 16:11:46

阅读数 632

评论数 1

原创 读书笔记《JAVA并发编程的艺术》 第五章 Java中的锁 5.6.2 Condition的实现分析

5.6.2 Condition的实现分析 ConditionObject是同步器AbstractQueuedSynchronizer的内部类,因为Condition的操作需要获取相关联的锁,所以作为同步器的内部类也较为合理。 关于Condition的实现,主要包括:等待队列、等待和通知。 ...

2018-08-08 11:23:28

阅读数 110

评论数 0

转载 《算法和数据结构》之哈希表(hash table)

转自:www.cnblogs.com/vamei/archive/2013/03/24/2970339.html 概念 哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一...

2018-08-07 15:47:48

阅读数 3203

评论数 0

原创 《算法和数据结构》之队列

基本概念 队列(Queue)是一种先进先出(FIFO)的结构,类似于生活中的“独木桥”、“排队”等 对于Queue,核心api如下: 方法 描述 void enQueue(T s) 向队列中添加一个新的元素 T deQueue() 移除队列中最...

2018-08-07 14:45:02

阅读数 204

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第五章 Java中的锁 5.5 LockSupport工具 5.6 Condition接口

5.5 LockSupport工具 作用:阻塞或者唤醒一个线程。 package java.util.concurrent.locks; 方法名称 描述 void park() 阻塞当前线程,调用unpark()或者被中断,才能从park()中返回 v...

2018-08-07 11:09:08

阅读数 112

评论数 1

原创 读书笔记《JAVA并发编程的艺术》 第五章 Java中的锁 5.3 重入锁 5.4 读写锁

5.3 重入锁 重入锁(ReentrantLock)就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。 5.3.1 实现重进入 线程再次获取锁:锁需要去识别获取锁的线程是否为当前占据锁的线程,如果是,则再次成功获取。 锁的最终释放:线程重复N次获取锁,随后需要第N次释放锁后,...

2018-08-06 13:59:55

阅读数 76

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第五章 Java中的锁 5.2 队列同步器 5.2.2

5.2.2 队列同步器的实现分析 1: 同步队列(一个FIFO的双向队列) (1)设置头节点:是通过获取同步状态成功的线程来完成的,所以不需要使用CAS来保证线程安全。 (2)设置尾节点:加入队列需要保证现场安全,所以同步器提供了一个基于CAS的设置尾节点的方法:compareAndSe...

2018-08-03 13:09:45

阅读数 82

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第五章 Java中的锁 5.2 队列同步器 5.2.1

5.2 队列同步器 同步器(AbstractQueuedSynchronizer)是实现锁或者说任意同步组件的关键,在锁的实现中聚合同步器,利用同步器实现锁的语义。 同步器和锁的关系:锁是面向使用者的,它定义了使用者与锁交互的接口(比如可以允许两个线程并行访问),隐藏了实现细节;同步器面向的是...

2018-08-02 15:18:22

阅读数 100

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第五章 Java中的锁 5.1 Lock接口

5.1 Lock接口 1:Lock接口出现之前,Java主要靠synchronized关键字实现锁功能。它提供了显式地获取和释放锁的便捷性,但是也缺少了synchronized的隐式获取和释放锁的便捷性,程序员可以在不同场景进行选择。 Lock的使用也很简单,示例代码如下: Lock loc...

2018-08-02 14:10:39

阅读数 96

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第四章 Java并发编程基础 4.3 线程间的通信

4.3 线程间的通信 4.3.1 volatile和synchronized关键字 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新到共享内存,它能保证所有线程对变量访问的可见性。 关键字synchroni...

2018-08-01 10:33:36

阅读数 112

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第四章 Java并发编程基础 4.2 启动和终止线程

4.2 启动和终止线程 4.2.1 构造线程 JDK1.8中java.lang.Thread类中的init方法源码: private void init(ThreadGroup g, Runnable target, String name, long s...

2018-07-31 11:27:38

阅读数 77

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第四章 Java并发编程基础 4.1 线程简介

4.1 线程简介 4.1.1 什么是线程? 操作系统调度的最小单元就是线程,也叫轻量级进程(Light Weight Process). 4.1.2 为什么要使用多线程? 更多的处理器核心 更快的响应时间 更好的编程模型 4.1.3 线程的优先级 Java的线程中,通过一个整型成员...

2018-07-31 09:20:00

阅读数 122

评论数 0

原创 《算法和数据结构》之栈

1:基本概念 栈类似于生活中的死胡同,遵循后入先出的原则,即LIFO(Last In First Out)。 /** * The Stack class represents a last-in-first-out * (LIFO) stack of objects. It exten...

2018-07-30 17:27:48

阅读数 825

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.7 happens-before

3.7 happens-before 3.7.1 JMM的设计 设计意图 程序员对内存模型的使用 编译器和处理器对内存模型的实现 由于这两个因素相互矛盾,JSR-133专家组在设计JMM时的核心目标就是找到一个好的平衡点:一方面,要为程序员提供足够强的内存可见性保证;另一方面,对编译器...

2018-07-30 10:51:48

阅读数 98

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.6 final域的内存语义

3.6 final域的内存语义 3.6.1 final域的重排序规则 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。 示例代...

2018-07-26 11:19:31

阅读数 75

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.5 锁的内存语义

3.5 锁的内存语义 3.5.1 锁的释放–获取建立的happens-before关系 锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。 3.5.2 锁的释放后和获取的内存语义 当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中。 当...

2018-07-26 09:56:33

阅读数 69

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.4 volatile的内存语义

3.4 volatile的内存语义 3.4.1 volatile的特性 理解volatile特性的一个好方法是对volatile变量的单个读、写,看成是使用同一个锁对这些单个读、写操作做了同步。 class VolatileFeaturesExample{ volatile long...

2018-07-25 16:33:11

阅读数 86

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.3 顺序一致性

3.3 顺序一致性 3.3.1 数据竞争与顺序一致性 JMM对正确同步的多线程程序的内存一致性做了如下的保证: 如果程序是正确同步的,程序的执行将具有顺序一致性(Sequentially Consistent)—— 即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。 3.3...

2018-07-25 13:34:00

阅读数 75

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.2 重排序

3.2 重排序 重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 3.2.1 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。 数据依赖性分为以下三种: 写后读 写后写 读后写 这里所说的数据依赖...

2018-07-24 17:07:35

阅读数 94

评论数 0

原创 读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.1 内存基础

读书笔记《JAVA并发编程的艺术》 第三章 Java内存模型 3.1 内存基础 3.1.1 - 3.1.2 Java并发基础与内存模型 在并发编程里,需要处理两个问题:线程之间如何通信及线程之间如何同步。通信指的是线程之间以何种机制来交换信息。在命令式编程里中,线程之间的通信机制有两种:共...

2018-07-24 13:22:45

阅读数 174

评论数 0

转载 挨踢部落直播课堂第十期:亿级数据量高并发下数据库水平切分的结构设计

转自:http://tn.51cto.com/article/373 内容介绍 1.大数据量时,数据库架构设计原则 2.数据库水平切分架构设计方向 3.用户中心,帖子中心,好友中心,订单中心水平切分架构实践 下面是58沈剑老师的演讲实录 大家好,我是58沈剑,架构师之路的小编,后端程序...

2018-01-29 14:41:08

阅读数 155

评论数 0

原创 @maohoo Intellij idea Version Control File Status Colors ( 版本控制文件状态颜色 )

Added —— 添加 Added in not active changelist —— 在不活跃的变更列表中添加 Changelist conflict —— 变更列表中存在冲突 Copied —— 复制的文件 Deleted —— 删除的文件 Deleted from f...

2018-01-23 10:43:16

阅读数 540

评论数 0

原创 @maohoo idea git 目录颜色不随文件颜色改变?

配置完毕后,效果如下:

2018-01-23 10:16:28

阅读数 3302

评论数 0

原创 @maohoo windows使用git时出现:warning: LF will be replaced by CRLF

windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示, 解决办法: $ git config --global core.autocrlf false //禁用自动转换 解决之后,comit时可能会出现下面的提示,选择Commit ...

2018-01-23 09:53:11

阅读数 133

评论数 0

原创 @maohoo Intellij idea 去掉@AutoWired注入bean报错

有时开发项目时,会遇到注入的bean报红,但是并不影响运行,熟悉的朋友会意识到是IDE自身检查级别的原因。 所以需要调整IDE对于@Autowired的检查级别 File — Settings 需要从Error改为Warning

2018-01-19 16:57:10

阅读数 2891

评论数 1

转载 spring cloud-Feign使用中遇到的问题总结

转载:http://blog.csdn.net/liuchuanhong1/article/details/54728681 问题一: 在前面的示例中,我们讲过 [java] view plain copy @Reques...

2018-01-17 11:42:25

阅读数 1505

评论数 0

原创 @FeignClient with top level @RequestMapping annotation is also registered as Spring MVC handler

Generally the problem is that: when you annotate an @feignclient interface with @requestmapping annotation the handler will be also registered within...

2018-01-17 11:02:19

阅读数 521

评论数 0

原创 @maohoo Intellij idea 打包生成可执行jar

如果某些场景需要将一个小功能包装成一个bat的批处理程序,可以将java项目打包成一个jar,但是用intellij idea 如何打可执行jar包呢? 第一步:选择操作入口 Ctrl + Alt + Shift + S 第二步:左侧选中“Artifacts”...

2018-01-05 14:03:30

阅读数 408

评论数 0

原创 @maohoo Intellij idea GitLab插件的使用说明

上篇文章讲到了 Intellij idea 中GitLab projects插件的安装,要如何使用此插件进行项目的克隆以及分享呢? 前置条件: A: 项目托管在GitLab平台上; B: 个人拥有对应的GitLab权限; 001: 将GitLab上已经存在的项目克隆到本地空间 第...

2018-01-05 13:48:22

阅读数 3142

评论数 3

原创 @maohoo Intellij idea 插件推荐:GitLab插件

如果团队中使用GitLab管理代码,推荐使用idea的插件GitLab,方便项目代码的管理 插件名称为 GitLab Projects ,安装步骤如下 (1) Ctrl + Alt + S   (2) 选中 “Plugins”--- Browse repositories  ...

2018-01-05 13:09:19

阅读数 6231

评论数 0

原创 @maohoo Spring boot 配置Tomcat 根目录,解决web资源目录找不到的问题

项目背景:spring cloud + zuul  场景描述:涉及文件上传,时报服务器500错误,具体报错信息是spring  boot 内嵌的tomcat实例根目录找不到 解决方案: spring boot 项目中,增加如下配置指定tomcat的基目录,否则spring boot内嵌的to...

2018-01-02 10:12:39

阅读数 5155

评论数 0

原创 @maohoo 两个完整正则,如何搭建"或"的关系?

所以最终的正则为 : "(?:\\$.*?\\$|\\\\\\[.*?\\])"

2017-10-24 09:28:05

阅读数 250

评论数 0

原创 @maohoo 线程的六种状态

查看Thread类的源码,可以看到其包含一个内部枚举State, 从而发现线程拥有六个状态: (1)New : 新建; 线程刚刚被创建,但是并未被启动,即未调用start()方法。 (2)Runnable : 可运行; 可以在java虚拟机中运行的状态,但是...

2017-10-12 13:54:09

阅读数 182

评论数 0

原创 @maohoo LaTex转Image

package com.hunter.latexdemo; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forg...

2017-10-10 16:29:01

阅读数 325

评论数 0

转载 JavaScript中undefined和null的区别

转载:http://www.css88.com/archives/6236#more-6236 关于undefined 在JavaScript中,undefined这个词有多重含义。首字母大写的Undefined表示的是一种数据类型,首字母小写的undefined表示的是属于这种数据类...

2016-09-23 11:07:09

阅读数 259

评论数 0

原创 @maohoo JavaSE回顾之集合篇(二) HashMap 和 HashSet

HashSet和HashMap之间有很多的相似之处。对于HashSet而言,系统采用Hash算法决定集合元素的存储位置,这样可以保证快速存、取集合元素;对于HashMap而言,系统将value当成key的“附属物”,系统根据Hash算法来决定key的存储位置,这样可以保证快速存、取集合的key,而...

2016-09-21 10:15:04

阅读数 196

评论数 0

转载 slf4j的包使用说明

http://www.slf4j.org/ 全称:Simple Logging Facade for Java  简单日志门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。  Loggi...

2016-09-13 10:43:58

阅读数 6908

评论数 0

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