dengguyan7877
码龄8年
关注
提问 私信
  • 博客:15,364
    15,364
    总访问量
  • 暂无
    原创
  • 1,393,284
    排名
  • 2
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:美国
  • 加入CSDN时间: 2017-02-21
查看详细资料
  • 原力等级
    领奖
    当前等级
    0
    当前总分
    0
    当月
    0
个人成就
  • 获得3次点赞
  • 内容获得0次评论
  • 获得26次收藏
创作历程
  • 65篇
    2019年
  • 41篇
    2018年
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

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

SpringBoot整合Dubbo配合ZooKeeper注册中心

安装ZooKeeper我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/下载后,解压要先配置一下,否则没法启动,启动会报错,找不到 zoo.cfg 文件,其实这个配置文件是有的,在 conf文件夹里,只不过名字是 zoo_sample.c...
转载
发布博客 2019.08.22 ·
215 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【转】MySql 三大知识点——索引、锁、事务

索引索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容。索引的优点:1. 天生排序。2. 快速查找。索引的缺点:1. 占用空间。2. 降低更新表的速度。注意点:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。索引从实现上说,分成 2 种:聚集索引和辅助索引(也叫二级索引或者非聚集索引)从功能上说,分为 6 种:普通索引,唯一索引,主键索引,复合索引,...
转载
发布博客 2019.07.23 ·
201 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

GIT和SVN教程

各种版本控制工具的简单比较特性CVSSVNGIT并发修改支持支持支持并发提交不支持支持支持历史轨迹不支持更名支持更名支持更名分布式不支持不支持支持SVNSVN服务端安装下载地址:https://www.visualsvn.com/server/download/双击安装包,安装,选择好安装地址,选中这两...
转载
发布博客 2019.08.26 ·
243 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

synchronized的实现原理与应用

synchronized概述在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。先来看下利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现为以下3种形式:对于普通同步方法,锁是当前实例对象。对于静态同...
转载
发布博客 2019.07.15 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

volatile的内存语义与应用

volatile的内存语义volatile的特性理解volatile特性的一个好方法是把对volatile变量的单个读/写,堪称是使用同一个锁对这些单个读/写操作做了同步。锁的happens-before规则保证释放锁和获取锁的两个线程之间的内存可见性,这意味着对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。锁的语义决定了临界区代码的执...
转载
发布博客 2019.07.11 ·
115 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis持久化背后的故事

Redis持久化Redis提供了不同的持久化选项:RDB持久化以指定的时间间隔保存那个时间点的数据快照。AOF持久化方法则会记录每一个服务器收到的写操作。在服务器启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。Redis的持久化时可以禁用的,就是说你可以让数据的生命周期只存在服务器的运行时间里。两种方式的持...
转载
发布博客 2019.07.23 ·
130 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入理解Java内存模型JMM与volatile关键字

深入理解Java内存模型JMM与volatile关键字多核并发缓存架构Java内存模型Java线程内存模型跟CPU缓存模型类似,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的,屏蔽掉了底层不同计算机的区别。例子编写代码来分析public class VolatileVisibilityTest { private static boolean ini...
转载
发布博客 2019.07.10 ·
133 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

利用Docker搭建Redis集群

Redis集群搭建运行Redis镜像分别使用以下命令启动3个Redisdocker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/library/redisdocker run --name redis-6380 -p 6380:6379 -d hub.c.163.com/library/redisdocker run...
转载
发布博客 2019.07.18 ·
94 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ConcurrentHashMap

ConcurreentHashMap的实现原理与使用ConcurrentHashMap是线程安全且高效的HashMap。为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。线程不安全的HashMap在多线程环境下,...
转载
发布博客 2019.07.12 ·
141 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

AbstractQueuedSynchronizer

队列同步器概述队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。同步器是实现锁(也可以是任意同步组件)的关键,在锁的实现中聚合同步器,利用同步器实现锁...
转载
发布博客 2019.07.11 ·
198 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

SpringBoot整合Redis及Redis工具类

前言想做一个秒杀项目,问了几个大佬要了项目视频,结果,自己本地实践的时候,发现不太一样,所以写下这篇,为以后做准备。环境配置IDE:IDEA环境:Windows数据库:RedisMaven配置习惯用SpringBoot的小伙伴都知道,需要配置Maven,添加几个dependency。<dependency> <groupId>org.spr...
转载
发布博客 2019.06.30 ·
111 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM复习总结

运行时数据区域图中深色区域为,由所有线程共享的数据区域,其他为线程隔离的数据区。程序计数器程序计数器可以看作是当前线程执行的字节码的行号指示器。虚拟机栈虚拟机栈描述的是Java方法执行的内存模型;每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。本地方法栈与虚拟机栈类似,JVM调用Native方法时都会创...
转载
发布博客 2019.06.27 ·
108 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入剖析Java虚拟机内存结构

深入剖析Java虚拟机内存模型JVM整体架构JVM整体架构如下:通过编写代码来分析整个内存区域public class Math { public static final Integer CONSTANT = 666; public int compute(){ int a = 1; int b = 2; i...
转载
发布博客 2019.07.09 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】问题的解决方案

前言在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存的时候可能会遇到的一些问题以及一些解决办法。我们使用缓存时,我们的业务系统大概的调用流程如下...
转载
发布博客 2019.06.09 ·
87 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

再谈JVM中类加载

前言由于本人参加面试,但是JVM这块回答的十分不好,问了面试官,面试官说我基础不行!我真的不行,所以看过的不一定能理解,感觉之前就是糊弄任务,然后这次等实训结束,啥都干完了,我就记录下,深入了解下面试中不会的题。类加载过程1、加载:这个很简单,程序运行之前jvm会把编译完成的.class二进制文件加载到内存,供程序使用,用到的就是类加载器classLoader ,这里也可以看出ja...
转载
发布博客 2019.06.27 ·
161 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JDK源码分析(1)ArrayList

JDK版本ArrayListArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组...
转载
发布博客 2019.06.17 ·
101 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入理解Spring IoC

深入理解IoC在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识。IoC理论IoC 全称为InversionofControl,翻译为 “控制反转”,它还有一个别名为 DI(DependencyInjection),即依赖注入。如何理解“控制反转”好呢?理解好它的关键在于我们需要回答如下...
转载
发布博客 2019.06.08 ·
86 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入Redis 主从复制原理

复制过程复制的过程步骤如下:从节点执行 slaveof 命令从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,否则会进行重连如果主节点设置了权限,那么就需要进行权限验证;如果验证失败,复制终止。权限验证通过后,...
转载
发布博客 2019.06.09 ·
93 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Golang中string和[]byte的对比

golang string和[]byte的对比为啥string和[]byte类型转换需要一定的代价?为啥内置函数copy会有一种特殊情况copy(dst []byte, src string) int?string和[]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高(动态字符串拼接性能对比)?今天看了源码探究了一下。何为string?什么是字符...
转载
发布博客 2019.06.03 ·
156 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

OOP理念

面向过程让计算机有步骤地顺次做一件事情,是一种过程化地叙事思维。但是在大型软件开发过程中,发现用面向过程语言开发,软件维护、软件复用存在着巨大困难,代码开发变成了记流水账,久而久之就称为“面条”代码,模块之间互相耦合,流程互相穿插,往往牵一发而动全身。面向对象提出一种计算机世界里解决复杂软件工厂的方法论,拆解问题复杂度,从人类思维角度提出解决问题的步骤和方案。比如“开门”这个动作,面向...
转载
发布博客 2019.05.31 ·
726 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多