![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 60
撸智深
此人纯属虚构,如有雷同,纯属荣幸
展开
-
同时安装jdk1.7和jdk1.8
jdk1.7jdk1.8同时安装、配置原创 2022-06-10 16:57:41 · 1679 阅读 · 1 评论 -
Nginx配置详细解读
#运行用户user nobody;#启动进程,通常设置成和cpu的数量相等worker_processes 1;#全局错误日志及PID文件#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及连接数上限events { #epoll是多路复用IO(I/O Multiple.转载 2022-04-25 16:47:48 · 253 阅读 · 0 评论 -
Java诊断工具 Arthas
是什么Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。可以解决如下常见问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!...原创 2021-07-29 11:03:18 · 189 阅读 · 2 评论 -
排序算法动图演示
0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 .转载 2021-03-09 21:33:56 · 122 阅读 · 0 评论 -
分布式ID 生成方案
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个生成分布式ID的机制原创 2020-05-22 15:54:59 · 198 阅读 · 0 评论 -
分布式锁-超卖问题案例分析
我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还没有执行。而另外一个请求执行到了第2步,发现库存还是1,就继续执行第3步。这样的结果.原创 2020-05-22 15:34:58 · 683 阅读 · 0 评论 -
LSM树 Log-Structured Merge Tree
代表数据库:nessDB、leveldb、hbase、InfluxDB等核心思想的核心就是放弃部分读能力,换取写入的最大化能力。LSM Tree ,这个概念就是结构化合并树的意思,它的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾(因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。日志结构的合并树(LSM-tree)是一种基于硬原创 2020-05-22 14:19:15 · 620 阅读 · 0 评论 -
并发中的三大特性详解
前言:Java并发编程的三大特性:原子性、可见性、有序性。要保证并发代码的安全性则必须满足这三大特性原子性:一个或者多个操作,要么全部执行(执行的过程是不会被打断的)、要么全部不执行。案例分析:http://www.51testing.com/html/87/300987-814461.html...原创 2020-05-21 22:57:04 · 4887 阅读 · 1 评论 -
GC 时间过长的优化一般思路
JVM 的调优首要任务就是缩短GC 时stop working 的时间。下面是GC分析、调优的一般思路。发现分析的过程:用户、运维反映、XX页面卡顿->前端人员分析页面代码没问题。->继续分析XX数据接口相应的时间太长->反映给后台开发->后台开发本地测试-> 相应时间正常-> 测试线上的接口-> 相应时间过长-> 分析一般系统日志->发现SQL查询时间正常、但是相关的业务代码执行时间过长。此时怀疑GC时间过长导致程序停顿->通过在原创 2020-05-20 19:12:13 · 6064 阅读 · 0 评论 -
常见OutOfMemoryError 分析与解决
java.lang.OutOfMemoryError:Javaheap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(根据实际生产经验,可以对程序日志中的 OutOfMemoryError 配置关键字告警,一经发现,立即处理)原因分析:Javaheap space 错误产生的常见原因可以分为以下几类:1、请求创建一个超大对象,通常是一个大数组。2、超出预期的访.原创 2020-05-20 17:35:24 · 1829 阅读 · 0 评论 -
Springboot 自动装配源码分析
点击去之后可以看到 核心注解springbootApplication 包含了三个注解@SpringBootConfiguration :实现配置功能@EnableAutoConfiguration :实现自动配置功能@ComponentScan:spring组件扫描再看一下最最主要的注解@EnableAutoConfiguration,点进去分析一下AutoConfigurationImportSelector内部实现 @Overridepublic String[] sel...原创 2020-05-13 11:29:39 · 262 阅读 · 0 评论 -
redis pipeline的使用
背景:在某些业务场景中 会对redis 产生频繁的读写操作。这样会导致系统延时过高,吞吐量低下,无法满足目标;其中,redis pipeline(管道机制)的应用是一个解决手段。Redis普通请求-处理模型:Redis pipeline请求-处理模型:从两个图的对比中可看出,普通的请求模型是同步的,每次请求对应一次IO操作等待;而Pipeline 化之后所有的请求合并...原创 2020-05-08 16:04:02 · 455 阅读 · 0 评论 -
Redis 常见的错误(坑)
从redis 的设计规范、命令的使用、分布式场景的使用、集群 等角度来说说常见的坑。目录Bigkey问题:bigkey是指某个key所对应的值过大,如string 应该控制在10kb,hash、list、set、zset元素不要超过2000个防止在高并发场景下查询流量过大导致慢查询、占用网卡流量、导致redis 阻塞。若确实存在bigkey要注意:不要使用del删除,使用hsc...原创 2020-05-08 15:54:14 · 1761 阅读 · 0 评论 -
Java 函数优雅之道
https://blog.csdn.net/yunqiinsight/article/details/99826098转载 2020-05-07 20:57:21 · 97 阅读 · 0 评论 -
ZK集群搭建、选举机制、数据同步机制笔记
http://note.youdao.com/noteshare?id=12d57ace129e721b8f4c241951251324原创 2020-05-07 20:29:25 · 158 阅读 · 0 评论 -
zookeeper基概
zookeeper 中节点叫znode存储结构上跟文件系统类似,以树级结构进行存储。不同之外在于znode没有目录的概念,不能执行类似cd之类的命令。znode结构包含如下:path:唯一路径childNode:子节点stat:状态属性type:节点类型节点类型 类型 描述 PERSISTENT 持久节点 ...原创 2020-05-07 20:19:56 · 147 阅读 · 0 评论 -
三种实现分布式锁的方案
https://blog.csdn.net/wuzhiwei549/article/details/80692278转载 2020-05-07 20:07:38 · 125 阅读 · 0 评论 -
基于Zookeeper实现分布式锁
锁的基概锁:通过锁可以实现在多个线程或多个进程间在争抢资源时,能够合理的分配置资源的所有权。在单体应用中我们可以通过 synchronized 或ReentrantLock 来实现锁分布式锁:但在分布式系统中,仅仅是加synchronized 是不够的,需要借助第三组件来实现。比如一些简单的做法是使用 关系型数据行级锁来实现不同进程之间的互斥,但大型分布式系统的性能瓶颈往往集中在数据库...原创 2020-05-07 19:55:58 · 134 阅读 · 0 评论 -
Zookeeper的分布式注册中心详解
目录概述:注册中心的功能:架构图:Dubbo与ZK:阿里著名的开源项目Dubbo 是一个基于JAVA的RCP框架,其中必不可少的注册中心可基于多种第三方组件实现,但其官方推荐的还是Zookeeper做为注册中心服务作为注册中心的zk存储结构:节点说明: 类别 属性 说明 Root...原创 2020-05-07 18:38:33 · 404 阅读 · 1 评论 -
基于ZK的分布式集群管理
分布式集群管理常见的需求主动查看线上服务节点 查看服务节点资源使用情况 服务离线通知 服务资源(CPU、内存、硬盘)超出阀值通知架构设计节点结构root-manger // 根节点 server00001 :<json> //服务节点 1 server00002 :<json>//服务节点 2 server........n :<js...原创 2020-05-07 18:30:38 · 423 阅读 · 0 评论 -
Redis 常见问题
1什么是Redis?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种...原创 2019-08-28 10:46:58 · 295 阅读 · 0 评论 -
JWT与Session
前言:基概:认证流程:对比:原创 2020-05-07 16:47:59 · 402 阅读 · 0 评论 -
分布式会话(session)
基概:Session 即服务器与客户端保持整个通讯的会话基本信息客户端在第一次访问服务端的时候,服务端会响应一个sessionId并且将它存入到本地cookie中,在之后的访问会将cookie中的sessionId放入到请求头中去访问服务器,如果通过这个sessionid没有找到对应的数据那么服务器会创建一个新的sessionid并且响应给客户端问题:如图 在单机环境时session是存储...原创 2020-05-07 15:04:29 · 367 阅读 · 0 评论 -
Web 应用系统安全性
一、SQL注入概述:解决:二、跨站脚本XSS概述:解决:三、跨站请求伪造(CSRF)概述:解决:四、失效的认证和会话管理概述:解决:五、失效的访问控制概述:解决:六、敏感信息泄漏概述:解决:...原创 2020-05-06 11:26:31 · 677 阅读 · 0 评论 -
优雅处理API统一返回
概述:API:application program-interface 应用编程接口。在web应用中常见的是前端开发工程师与后端开发工程师沟通的桥梁,是重要的规范文档。良好的API可以提高前后端协调的效率。如何设计良好的API:1.命名风格统一如列表相关接口统一用ListXXXXX,获取详情接口getXXX,删除delXXX2.返回格式统一以返回json 格式为例:{ #...原创 2020-05-06 10:44:56 · 577 阅读 · 0 评论 -
JVM相关概念总结
目录1.jvm内存结构2.对象分配规则3、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法4、Perm Space中保存什么数据?会引起OutOfMemory吗?5、什么是类的加载6、如何⾃定义⼀个类加载器?你使⽤过哪些或者你在什么场景下需要⼀个⾃ 定义的类加载器吗?7、描述一下JVM加载class文件的原理机制?8、Java...原创 2020-03-25 19:15:41 · 648 阅读 · 1 评论 -
图解常用的Map
原创 2020-03-24 14:37:41 · 466 阅读 · 1 评论 -
JDK1.7 HashMap扩容:多线程下的死循环和丢失
https://www.jianshu.com/p/61a829fa4e49转载 2020-03-23 16:59:56 · 391 阅读 · 0 评论 -
Hashmap的结构
https://blog.csdn.net/lovezhaohaimig/article/details/86595113转载 2020-03-23 16:59:03 · 132 阅读 · 0 评论 -
面向对象设计原则
单一职责:1.一个类的功能只描述该类本身,若做了无相关的事则违背了单一职责原则public class SysUser extends BaseEntity{ private Long userId; private String loginName; private String userName; private String email;...原创 2020-03-23 09:46:40 · 137 阅读 · 0 评论 -
JVM内存分配担保机制
JVM内存分配担保机制https://cloud.tencent.com/developer/article/1082730转载 2020-03-20 16:50:27 · 289 阅读 · 0 评论 -
SpringBoot MyBatis 一级缓存和二级的配置理解
https://www.jianshu.com/p/aee10211e7f6原创 2020-03-12 15:25:39 · 743 阅读 · 0 评论 -
代码中常犯的错误
一、MyBatis 不要为了多个查询条件而写 1 = 1当遇到多个查询条件,使用where 1=1 可以很方便的解决我们的问题,但是这样很可能会造成非常大的性能损失,因为添加了 “where 1=1 ”的过滤条件之后,数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(即全表扫描) 以比较此行是否满足过滤条件,当表中的数据量较大时查询速度会非常慢;此外,还会存在SQ...转载 2019-10-22 11:32:07 · 1059 阅读 · 0 评论 -
分库分表需要考虑的问题及方案
分库分表的基本思想Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个...转载 2019-07-22 11:20:10 · 153 阅读 · 0 评论 -
浅析 VO、DTO、DO、PO的概念、区别和用处
项目结构中,经常用VO、DTO、DO、PO来区分不同的实体类,以达到项目结构分层,清晰,项目代码阅读性高,可维护性强的目的。下面分别介绍就项目中常用的实体简称VO与DTO的区别大家可能会有个疑问(在笔者参与的项目中,很多程序员也有相同的疑惑):既然DTO是展示层与服务层之间传递数据的对象,为什么还需要一个VO呢?对!对于绝大部分的应用场景来说,DTO和VO的属性值基本是一...转载 2019-09-09 09:58:42 · 340 阅读 · 0 评论 -
到底是否应该使用“微服务架构”?
到底是否应该使用“微服务架构”?2018.06.30 21:20671浏览前言经过当前服务端的洗礼之后,市场出现了一波微服务的热潮。然后就出现了很大的一个问题,无论什么项目,很多人想都不想,都直接开始说我们使用微服务架构来完成吧,用这个、这个组件很简单就能实现。。。而且,现在市场上很多学习教程都直接教授微服务的架构使用。很多学习的人看到这样的趋势就会随大流,就导致了当前的问题,炒作这...转载 2019-09-15 21:12:40 · 328 阅读 · 0 评论 -
Volatile
内存可见性 volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatile,自然是美事一桩。 为了能比较清晰彻底的理解volatile,我们一步一步来分析。首先...转载 2019-05-06 12:30:16 · 3839 阅读 · 0 评论 -
7
7原创 2018-10-15 09:10:52 · 106 阅读 · 0 评论 -
MAVEN 的基概与基操
1、本地仓库?Maven到底有哪些仓库?它们什么关系? 2、关于的使用 3、既然Maven进行了依赖管理,为什么还会出现依赖冲突?处理依赖冲突的手段是? 4、引入依赖的最佳实践,提前发现问题! 5、Maven规范化目录结构 6、Maven的生命周期 7、关于scope依赖范围 在如今的互联网项目开发当中,特别是Java领域,可以说...转载 2019-07-29 11:18:27 · 155 阅读 · 0 评论 -
咱们从头到尾说一次 Java 垃圾回收
之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。转载 2018-10-23 10:05:41 · 272 阅读 · 0 评论