远处的海亲吻着天
码龄13年
关注
提问 私信
  • 博客:184,984
    184,984
    总访问量
  • 233
    原创
  • 1,737,781
    排名
  • 41
    粉丝
  • 0
    铁粉

个人简介:从事JAVA软件开发

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2012-07-20
博客简介:

lm324114的专栏

查看详细资料
个人成就
  • 获得42次点赞
  • 内容获得11次评论
  • 获得110次收藏
  • 代码片获得173次分享
创作历程
  • 1篇
    2021年
  • 141篇
    2020年
  • 56篇
    2019年
  • 4篇
    2018年
  • 67篇
    2017年
  • 4篇
    2016年
  • 5篇
    2014年
成就勋章
TA的专栏
  • 算法
    9篇
  • java基础篇
    2篇
  • 网络
  • kafka
  • ElasticSearch入门
    57篇
  • Maven
    2篇
  • RocketMQ
    2篇
  • elasticsearch 进阶
    31篇
  • elastic stack
    4篇
  • Flink
    6篇
  • Flume
  • JavaScript
    3篇
  • synchronized
    1篇
  • servlet
    1篇
  • linux
    2篇
  • AtomicInteger
    1篇
  • java
    10篇
  • java 多线程
    9篇
  • activeMq
    4篇
  • storm
  • dubbo
    1篇
  • java设计模式
    20篇
  • JVM
    11篇
  • Spring
  • zookeeper
    8篇
  • NOSQL
  • JAVA 集合
    1篇
  • Protobuf
    1篇
  • NIO
    8篇
  • Netty
    4篇
  • Exception
    1篇
  • mysql
    3篇
  • Redis
    14篇
  • ElasticSearch
    44篇
兴趣领域 设置
  • 大数据
    redis
  • 后端
    spring
  • 搜索
    elasticsearch
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Redis 缓存穿透、击穿、雪崩

初认识缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。 缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也
原创
发布博客 2021.05.05 ·
248 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL事务的四大特性以及事务的隔离级别

一、事务的四大特性(ACID)如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:1、原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2、一致性(Consistency)  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。  拿转账来说,假设用户A和用户B两者的钱加起
原创
发布博客 2020.10.13 ·
410 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

java 设计模式 中介者模式 让互相调用的模块之间解耦合

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式的角色和职责  1、Mediator:中介者类的抽象父类    抽象中介者角色定义统一的接口,用于各角色(男和女)之间的通信。  2、ConcreteMediator:具体中介者角色    具体中介者角色,通过协调各角色(男和女)实现协作行为,因此它必须依赖于各个角色。  3、Colleague:关联类的抽象父类    每一个角色都知道中介...
原创
发布博客 2020.10.11 ·
588 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 设计模式 原型模式 自己实现自己的拷贝逻辑

原型模式,在笔者理解看来就是克隆,当我们在创建第一个对象时,已经给对象赋值完毕,此时我们需要一个当前对象的副本,如果没有原型模式,我们会再次创建一个对象,然后后二次赋值,保证两个对象完全一致,这样我们的代码可读性就比较差,而且稍不留神copy错了麻烦就大了了,此时我们如果了解原型模式,就能够美化我们的代码,看起来够整洁,而且也不会出错。原型模式 说明 浅克隆 只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝, 还是指向原生对象的内部元素地址 深度克隆 深复制把
原创
发布博客 2020.10.11 ·
189 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 设计模式 构造器模式 封装复杂对象的构造逻辑

构造器模式,也被称为建造者、生成器模式,是设计模式中比较容易理解的模式之一。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。package com.designpattern;public class BuilderPatternDemo { public static void main(String[] args) { User user = new User(); System.out.println("在设置
原创
发布博客 2020.10.11 ·
430 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 设计模式 外观模式 将多个内部模块调用封装在一个类中

概念介绍外观模式是隐藏了系统的复杂性,能够为子系统中的一组接口提供一个统一的接口。客户在使用系统时不必和子系统打交道了,降低了客户和子系统间的耦合。在外观模式中主要包含如下几个角色。1、门面角色(facade):这是外观模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。2、子系统角色(SystemA、SystemB、SystemC):实现了子系统的功能。对子系统角色来说,facade角色与客户角色一样,是未知的,它没有任何facade角色的
原创
发布博客 2020.10.11 ·
469 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 设计模式 桥接模式 两个代码组件之间面向接口桥接调用

简介桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式。个人解释:将变化的维度进行抽离,在他们之间搭建一座桥梁来通信,两个代码组件之间面向接口桥接调用,那么接口就是他们之间的桥梁 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。 实现化(Implementor)角色:这个角色给出...
原创
发布博客 2020.10.10 ·
267 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 设计模式 享元模式

享元模式享元(Flyweight)的核心思想很简单:如果一个对象实例一经创建就不可变,那么反复创建相同的实例就没有必要,直接向调用方返回一个共享的实例就行,这样即节省内存,又可以减少创建对象的过程,提高运行速度。package com.designpattern;import java.util.HashMap;import java.util.Map;/** * 享元模式 */public class FlyweightPatternDemo { public stat
原创
发布博客 2020.10.10 ·
105 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

maven

maven 依赖声明的三要素 坐标 groupId、artifactId、version 声明了三要素,一个坐标唯一定位了一个依赖的某个版本的jar包,maven会自动到远程的中央仓库里面去,下载到本地来,在打包的时候,就会自动使用,编译依赖范围<scope></scope>maven 有三套classpath,classpath就是项目中用到的各种依赖的类,jvm在运行的时候需要去classpath下面加载对应的类maven 在编译源...
原创
发布博客 2020.09.22 ·
671 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Maven坐标

Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,他们是groupId、artifactId、version、packaging、classifier。先看一组坐标定义,如下: <groupId>org.sonatype.nexus</groupId> <artifactId>nexus-indexer</artifactId> <version>2.
原创
发布博客 2020.09.19 ·
217 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构与算法 平衡二叉搜索树

平衡二叉搜索树如果二叉排序树是平衡的,则n个节点的二叉排序树的高度为,其查找效率为,近似于折半查找。如果二叉排序树完全不平衡,则其深度可达到n,查找效率为O(n),退化为顺序查找。一般的,二叉排序树的查找性能在到O(n)之间。因此,为了获得较好的查找性能,就要构造一棵平衡的二叉排序树。平衡当节点数量固定时,左右子树的高度越接近,这颗二叉树就越平衡(高度越低)最理想的平衡,就是像完全二叉树、满二叉树那样,高度是最小的如何改进二叉树搜索树首先,节点的添加、删除是...
原创
发布博客 2020.08.17 ·
571 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构与算法 B树

B树特点B树(B-tree、B-树)B树是一种平衡的多路搜索树,多用于文件系统、数据库的实现 1个节点可以存储超过2个元素、可以拥有超过2个节子节点 拥有二叉搜索树的一些性质(左子树都比根节点小 右子树都比根节点大) 平衡,每个节点的所有子树高度一致 比较矮 M阶B树的性质(M>=2)假设一个节点存储的元素个数为x,根节点:1<= x <=m-1 ,非根节点: 「m/2」- 1 <= x <=m-1 如果有子节点,因为节点有两个...
原创
发布博客 2020.08.15 ·
244 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构与算法 二叉树与二叉搜索树

节点、根节点、父节点、子节点、兄弟节点 一棵树可以没有任何节点,成为空树 一棵树可以只有一个节点,也就是只有根节点 子树、左子树、右子树 节点的度 :子树的个数 树的度:所有节点度中的最大值 叶子节点:节点度为0 的 层数:根节点在第一层,根节点的子节点在第二层 节点的深度:从根节点到当前节点的唯一路径上的节点总和 节点的高度:从当前节点到最远的叶子节点的路径上的节点总数 树的深度:所有节点深度中的最大值 树的高度:所有节点高度中的最大值 树的高度 等于树的深度有序...
原创
发布博客 2020.08.10 ·
538 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

数据结构与算法 - 栈 队列

目录栈stack栈的接口设计动态数组实现栈练习题有效的括号队列队列的接口设计简单实现一个queue练习 - 用栈实现队列双端队列双端队列接口设计双端队列源码循环队列入队列出队列栈stack栈是一种特殊的线性表,只能在一端进行操作 往栈中添加元素的操作,一般叫做push,入栈 从栈中移除元素的操作,一般叫做pop,出栈 后进先出的原则 栈...
原创
发布博客 2020.07.29 ·
339 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM 整体结构

JVM 整体结构​​​​Java不只是一种编程语言,还是一个完整的操作平台。Java之所以可以跨平台,这离不开JVM虚拟机。JVM是一个软件,在不同的平台上,JVM有不同的版本。Java在编译之后会生成一种.class文件,这种文件成为字节码文件。JVM虚拟机就是将Java编译后的.class文件翻译成特定平台下的机器码,然后运行。也就是说,在不同平台上装上平台对应的JVM虚拟机后,就可以将Java字节码文件转换,然后运行我们的Java程序。值得注意的是,Java编译后的结果是生成字节码,而不是
原创
发布博客 2020.07.12 ·
215 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM即时编译(JIT)

JIT即时编译1、动态编译(dynamic compilation)指的是“在运行时进行编译”;与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫静态编译(static compilation)。2、JIT编译(just-in-timecompilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT编译是动态编译的一种特例。JIT编译一词后来被泛化,时常与动态编译等价;但要注意广义与狭义的JIT编译所指的区别。3、自.
原创
发布博客 2020.07.12 ·
304 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RocketMQ 源码分析

目录NameServer架构设计启动流程Step1Step2Step3NameServer路由管理路由元信息路由注册路由删除路由发现NameServer小结Producer方法和属性​启动流程 ​消息发送NameServer架构设计Broker消息服务器在启动时向所有NameServer注册,消息生产者(Producer)在发送消息之前先从NameServer获取Broker服务器地址列表,然...
原创
发布博客 2020.06.30 ·
431 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RocketMQ 初识

RocketMQ优点解耦、削峰、数据分发RocketMQ缺点系统可用性降低:系统引入外部依赖越多,系统稳定性越差,一旦mq宕机,就会对业务造成影响。如何保证MQ高可用? 系统复杂度提高:mq的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过mq进行异步调用。如何保证 消息没有被重复消息?怎么处理消息丢失情况?如何保证消息传递的顺序性? 一致性问题:A系统处理完业务,通过MQ给B、C、D三个系统发消息数据,如果B系统、C系统处理成功,D系统处理失败。如何保证消息数据处理的一致
原创
发布博客 2020.06.21 ·
463 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JAVA基础之运算符

运算符算术运算符比较运算符逻辑运算符位运算符
原创
发布博客 2020.06.06 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JAVA基础之进制转换

关于进制所有数字在计算机底层都以二进制形式存在 对于整数,有四种表示方式: 二进制:0-1 满2进1 。以0b或0B开头 十进制:0-9 满10进1。 八进制:0-7 满8进1.以数字0开头表示。 十六进制:0-9及A-F,满16进1,以0X或0x开头表示。如 0x21AF+1 = 0x21B0二进制java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认是占6...
原创
发布博客 2020.06.06 ·
405 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多