1 Java阿谷

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 6w+

大佬的思路就是不一样,这是我见过最简洁又清晰的SSM框架整合

创建项目和SSM框架整合思路一、创建项目因为后面会配置springMVC,所以用IDEA的web骨架创建一个maven项目。创建项目目录如下,同时,项目需要的包和文件已手动创建好了:上图中,application.xml为spring配置文件,log4j为日志配置文件,springMVC.xml为springMVC配置文件在pom.xml文件中配置需要的依赖,整个项目的依赖都如下所示。<?xml version="1.0" encoding="U...

2020-07-10 21:22:26

这次是真拯救了我,MySQL索引优化,explain讲得非常清楚了

前言:这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化一、Explain 用法模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。语法:Explain + SQL 语句;如:Explain select * from user; 会生成如下 SQL 分析结果,下面详细对每个字段进行详解二、id是一组数字,代表多个表之间的查询顺序,或者包含子句查询语句.

2020-07-08 20:27:58

太可惜了,Spring中的循环依赖问题,只有10%的人才算“真的懂”

前言Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶的问题,那么循环依赖必定逃不掉。如果你回答得好,那么这就是你的必杀技,反正,那就是面试官的必杀技,这也是取这个标题的原因,当然,本文的目的是为了让你在之后的所有面试中能多一个必杀技,专门用来绝杀面试官!本文的核心思想就是,当面试官问:“请讲一讲Spring中的循环依赖。”的时候,我们到底该怎么回答?主要分下面几点

2020-07-07 20:24:28

又陷入知识盲区了,面试被问Redis事务,我差点脸都“绿”了

前言前几天有读者说自己面试被问到Redis的事务,虽然不常用,但是面试竟然被问到,平时自己没有注意Redis的事务这一块,面试的时候被问到非常不好受。虽然,这位读者面试最后算是过了,但是薪资方面没有拿到自己理想的薪资。其实这个也是正常的,一般面试被问到烂大街的,谁还问你啊,专门挑一些不常见的来问你,就是为了压你的薪资。所以在这里写一篇文章对Redis的事务进行详细的讲解,估计对Redis事务从理解到原理深入这一篇就够了。以后面试都不用担心了再被问道Redis的事务了,这一篇主要讲解Red

2020-07-06 20:31:04

对于分布式事务,我“开门见山”地谈到这些理解,面试官都听懵了

capC:一致性被称为原子对象,任何的读写都应该看起来是“原子”,或串行的。写后面的读一定能读到前面写的内容,所有的读写请求都好像被全局排序。 A:对任何非失败节点都应该在有限时间内给出请求的回应。(请求的可终止性) P:允许节点之间丢失任意多的消息,当网络分区发生时,节点之间的消息可能会完全丢失个人理解:对于C,就是保证在一个时间点各个节点的状态是一致的,而A是在用户的视角看来各个节点都是正常的,P就是在节点看开各个节点都是正常连接 但在分布式环境中,多实例部署是基本条件,因为网络的不可靠性

2020-07-02 21:00:14

整理得吐血了,二叉树、红黑树、B&B+树超齐全,快速搞定数据结构

前言没有必要过度关注本文中二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。数据在计算机中的存储结构主要为顺序存储结构、链式存储结构、索引存储结构、散列存储结构,其中链式存储结构最常见的示例是链表与树,链式存储结构主要有以下特点:优点:逻辑相邻的节点物理上不必相邻,插入、删除灵活,只需改变节点中的指针指向 缺点:存

2020-07-01 20:32:48

嘘,异步事件这样用真的好么?

故事背景今年年初的时候写了一篇文章《围观:基于事件机制的内部解耦之心路历程》。这篇文章主要讲的是用 ES 数据异构的场景。程序订阅 Mysql Binlog 的变更,然后程序内部使用 Spring Event 来分发具体的事件,因为一个表的数据变更可能会需要更新多个 ES 索引。为了方便大家理解我把之前方案的图片复制过来了,如下:上图的方案存在一个问题,就是我们今天文章要聊的内容。这个问题就是当 MQ Consumer 收到消息后,就直接发布 Event 了,如果是同步的,没有问..

2020-06-30 21:27:09

数据库连接池引起的FullGC问题,看我如何一步步排查、分析、解决

问题现象在某个工作日,突然收到线上的服务告警,有大量的请求延时产生,查看线上服务发现基本上都是获取数据库连接超时,而且影响时间只有3~4秒钟,服务又恢复了正常。隔了几分钟之后,又出现了大量的告警,还是影响3~4秒后又恢复正常。 由于我们是底层服务,被重多的上层服务所依赖,这么频繁的异常波动已经严重影响到了业务使用。开始排查问题排查过程DB的影响?当第一次告警产生时,第一反应是可能上层服务有大量的接口调用,并且涉及到一些复杂的SQL查询导致数据库连接数不够用,但是在分析了接口调用情况后发现异常

2020-06-29 17:02:07

实在是妙啊!Java中强软虚弱引用,居然还能这样去操作

前言ThreadLocal 在什么情况下可能发生内存泄漏?如果你想清楚这个问题的来龙去脉,看源码是必不可少的,看了源码之后你发现, ThreadLocal 中用到 static class Entry extends WeakReference<ThreadLocal<?>> {} ,谜底实际就是使用了弱引用 WeakReference。本文内容概要强引用:Object o = new Object() 软引用:new SoftReference(o); 弱引用:ne

2020-06-28 16:19:44

快速解“锁”MySQL,拿下这7把钥匙,便能撬倒面试官

前言MySQL 作为使用范围最广的开源关系型数据库,是每个后端开发人员都绕不开的一道坎。我在上一篇文章中也写了关于 MySQL 中的 MVCC 的细节及各个隔离级别如何使用 MVCC,有兴趣的可以查看。这一篇文章则是跟 MySQL 中的锁有关,锁是在并发程序中最经常使用的手段之一,但是锁的滥用也会给程序的性能带来极大的负担。而我们平时使用 MySQL 做增删改查操作的时候,感觉不到我们有在使用锁,实际上是因为 MySQL 已经为我们使用了相关的锁。如果你想知道我们平时使用的 SQL 语句都使用了哪些

2020-06-27 20:49:14

你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?

SpringBoot实战电商项目mall(35k+star)地址:github.com/macrozheng/…摘要ELK日志收集系统进阶使用,本文主要讲解如何打造一个线上环境真实可用的日志收集系统。有了它,你就可以和去服务器上捞日志说再见了!ELK环境安装ELK是指Elasticsearch、Kibana、Logstash这三种服务搭建的日志收集系统,具体搭建方式可以参考《SpringBoot应用整合ELK实现日志收集》。这里仅提供最新版本的docker-compose脚本和一些安装.

2020-06-22 20:27:26

坦白讲吧,Redis内存回收策略和key失效机制,搞不懂就别去面试了

Redis是基于内存的key-value数据库,内存的大小是有限制的,如果内存满了,Redis会怎么办呢,另外,我们可以通过expire设置key的过期时间,那么key过期失效了, Redis回收机制又是怎么样的呢?内存回收策略最大内存配置Redis的按照目录下的redis.conf配置文件中可以配置redis占用内存的大小# 设置最大占用内存为100MB maxmemory 100mbtips: 如果这里设置为0的话,64位的操作系统默认是没有内存限制,而32位的操作系统隐式限制为

2020-06-19 21:07:21

我从未见过的牛逼解说方式!Redis五种数据结构,看一遍就懂了

前言Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库、缓存、消息中间件,这么优秀的东西客定要一点一点的吃透它。关于Redis的文章之前也写过两篇,阅读量和读者的反映都还可以,其中第一篇是Redis的缓存三大问题[。第二篇是Redis的内存管理和淘汰策略[]。这是关于Redis的第三篇文章,主要讲解Redis的五种数据结构详解,包括这五种的数据结构的底层原理实现。理论肯定是要用于实践的,因此最重要的还是实战部分,也就是这里还会讲解五种数据结构的应用场景。话不多说,我们

2020-06-16 20:44:54

这几种常见的“分布式锁”写法,搞懂再也不怕面试官,安排

什么是分布式锁?大家好,我是jack xu,今天跟大家聊一聊分布式锁。首先说下什么是分布式锁,当我们在进行下订单减库存,抢票,选课,抢红包这些业务场景时,如果在此处没有锁的控制,会导致很严重的问题。学过多线程的小伙们知道,为了防止多个线程同时执行同一段代码,我们可以用 synchronized 关键字或 JUC 里面的 ReentrantLock 类来控制,但是目前几乎任何一个系统都是部署多台机器的,单机部署的应用很少,synchronized 和 ReentrantLock 发挥不出任何作用,此时就需

2020-06-15 20:53:14

被说烂了的Java垃圾回收算法,我带来了最“清新脱俗”的详细图解

一、概况理解Java虚拟机垃圾回收机制的底层原理,是系统调优与线上问题排查的基础,也是一个高级Java程序员的基本功,本文就针对Java垃圾回收这一主题做一些整理与记录。Java垃圾回收器的种类繁多,它们的设计要在吞吐量(内存空间)与实时性(用户线程中断)方面进行权衡,各个垃圾回收器的适应场景也不尽相同(如:桌面应用,web应用),因此,这里我们只讨论JDK8下的默认垃圾回收器,毕竟目前JDK8版本是业界的主流(占80%),并且我们只讨论堆内存空间的垃圾回收。JDK8下的默认垃圾回收器:UsePa

2020-06-12 21:08:16

一次疑似“内存泄漏”的问题排查,竟耗费了我这么大的力气

问题背景最近服务器到期等因素,进行了迁移。租了其它的外国厂商,但是由于资费问题,购买了1.5G 内存的服务器(现)。因为原本用惯了4G内存的服务器(原),现在压缩成这样,似乎不太能支持我的使用,囧!现在就来说下blog服务分配的内存情况:原:4G 内存,分配给blog,1.5G。现:1.5G内存,分配给blog,500M。由于此次调整,原本以为资源需求压力会更大。实际上应该不会,仔细想想,blog也没多少内容的。那么根据此次调整之后,已经出现了2次OutOfMemoryError了。

2020-06-11 20:49:31

Redis集群演进探讨和总结,我七年工作的精华全在这里了

Redis为什么需要集群?首先Redis单实例主要有单点,容量有限,流量压力上限的问题。Redis单点故障,可以通过主从复制replication,和自动故障转移sentinel哨兵机制。但Redis单Master实例提供读写服务,仍然有容量和压力问题,因此需要数据分区,构建多个Master实例同时提供读写服务(不仅限于从replica节点提供读服务)。那么就需要一定的机制保证数据分区。这样能充分把容量分摊到多台计算机,或能充分利用多核计算机的性能。并且数据在各个主Master节点间不能

2020-06-10 20:53:36

Mysql写入频繁,怎么破?这是我见过的最清晰的“神操作”

Mysql在写入压力很大,怎么办?高并发下的性能最大的问题,大都在数据库,以前我们做二十万超级群,mongodb每个月都会出事故. 我们聊聊,高并发下如何缓解mysql的压力 ⚠️:mysql是锁锁表不锁库,sqlite是锁库不锁表环境准备Mac mysql navicat wrk压测工具 node.js环境下载wrkbrew install wrk如果这里卡住,可以调整`替换brew.git: cd "$(brew --repo)" git remote set-url

2020-06-09 21:43:51

别再重复造轮子了,几个值得应用到项目中的Java开源库,全送给你

我作为一个野路子开发者,直到遇见下面的这几个工具库,才知道之前重复造了不少轮子,而且轮子还不一定有人家的圆。相信跟我一样,没事儿造轮子的人还不在少数,有些人就是对造轮子感兴趣,这个咱也无话可说,但是,比如我,我是造轮子之前不知道这世上已经有好用的轮子了,害,无知限制了我的想象力。比如我们在拿到一个 List 集合之后,要对这个集合进行判空操作,以前我一直是这样写的:List<String> list = getList(); if (list != null &&am...

2020-06-08 20:41:10

HashMap扩容时,究竟对链表和红黑树做了什么?

我们知道 HashMap 的底层是由数组,链表,红黑树组成的,在 HashMap 做扩容操作时,除了把数组容量扩大为原来的两倍外,还会对所有元素重新计算 hash 值,因为长度扩大以后,hash值也随之改变。如果是简单的 Node 对象,只需要重新计算下标放进去就可以了,如果是链表和红黑树,那么操作就会比较复杂,下面我们就来看下,JDK1.8 下的 HashMap 在扩容时对链表和红黑树做了哪些优化?rehash 时,链表怎么处理?假设一个 HashMap 原本 bucket 大小为 16。下标

2020-06-05 20:22:25

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。