特别推荐

最新博文

  • MySQL数据库COUNT语句面试大坑你确定不了解一下

    MySQL数据库COUNT语句面试大坑你确定不了解一下

    数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,统计数量操作更是经常被用到。关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就...

    2020-07-02 23 MySQL

    阅读全文
  • MyBatis源码学习—SqlSessionFactory的构建过程

    MyBatis源码学习—SqlSessionFactory的构建过程

           MyBatis的运行分为两大部分,第一部分是读取配置文件缓存到Configuration对象,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程。相对而言,SqlSessionFactory的创建比较容易理解,而SqlSession的执行过程远远...

    2020-07-02 18 MyBatis

    阅读全文
  • MyBatis架构设计及源代码分析(一):MyBatis架构

    MyBatis架构设计及源代码分析(一):MyBatis架构

    一、概述MyBatis是一个轻量级的ORM框架,其官方首页是这么介绍自己。MyBatis数据映射器框架使将关系数据库与面向对象的应用程序结合使用变得更加容易。MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合。相对于对象关系映射工具,简单性是MyBatis数据映射器的最大优势...

    2020-06-24 22 MyBatis

    阅读全文
  • 一文让你理解高并发缓存中的一致性Hash算法原理

    一文让你理解高并发缓存中的一致性Hash算法原理

    一、从Web系统的演进说起单机时代在当今的互联网项目中,对于缓存的使用已经是”标配“了,我们开发一个平台刚开始访问量很小只需要一个缓存服务器就够用了(系统架构如下图所示)负载均衡随着系统的发展,访问量越来越大,这是我们的服务撑不住了,此时我们考虑给系统做负载均衡增加应用服务器来提高系统的并发量...

    2020-06-21 23 Redis

    阅读全文
  • 单线程的Redis为什么高并发场景下还是很快

    单线程的Redis为什么高并发场景下还是很快

    缓存在高并发的场景的作用不言而喻,号称高并发架构的基石,其中最为典型代表非Redis莫属。无论你是想面试通关,还是实战中用好Redis,理解Redis的设计精髓,就变得很重要了。今天主要分享Redis关于单线程以及高并发场景的核心设计。一、Redis到底有多快?Redis采用的是基于内存的采用...

    2020-06-20 20 Redis

    阅读全文
  • Redis缓存和MySQL数据一致性解决方案探究

    Redis缓存和MySQL数据一致性解决方案探究

    在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。然而在工程技术领域并没有100%完美的解决方案,正如这里,读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存...

    2020-06-18 25 Redis

    阅读全文
  • Redisson 实现分布式锁原理分析

    Redisson 实现分布式锁原理分析

    在上一文中(分布式锁的三种实现方案)总结了目前业界常见的实现分布式锁的三种方案:1、基于数据库表或排他锁2、基于Redis的setNX命令+lua脚本3、基于Zookeerper的临时结点。本文我们继续通过源码分析一下Redisson实现分布式锁的原理。回顾:Redis实现分布式锁主要步骤指定...

    2020-06-16 28 Redis

    阅读全文
  • 分布式锁的三种实现方案

    分布式锁的三种实现方案

    一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这...

    2020-06-14 33 Redis

    阅读全文
  • SpringBoot项目更换启动时控制台打印的banner

    SpringBoot项目更换启动时控制台打印的banner

    更换Banner1、在resources目录下新建banner.txt文件2、制作Banner之后制作Banner,这里我推荐几个网站:-http://patorjk.com/software/taag-http://www.network-science.de/ascii/-http://w...

    2020-06-11 31 Spring Boot

    阅读全文
  • 布隆过滤器(Bloom Filter)的原理和实现

    布隆过滤器(Bloom Filter)的原理和实现

    海量数据处理以及缓存穿透这两个场景让我认识了布隆过滤器,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!下面我们将分为几个方面来介绍布隆过滤器:什么是布隆过滤器?布隆过滤器的原理...

    2020-06-11 34 Redis

    阅读全文
  • 秒懂,Redis缓存穿透、缓存击穿、缓存雪崩概念以及应对策

    秒懂,Redis缓存穿透、缓存击穿、缓存雪崩概念以及应对策

    首先给出一张应用架构图:如上图所示,我们在应用程序和Mysql数据库中建立一个中间层,即Redis缓存。通过Redis缓存可以有效减少查询数据库的时间消耗,这极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上...

    2020-06-09 49 Redis

    阅读全文
  • 一文让你理解as-if-serila和happens-before语义

    一文让你理解as-if-serila和happens-before语义

    概述本文参考《Java并发编程的艺术》一书,温故而知新,加深对基础的理解。一、指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能,编译器和处理器常常会对指令做重排序。从Java源码到最终实际的指令,需要经过三个阶段的重排序:1)...

    2020-06-07 44 Java多线程与高并发

    阅读全文
  • 秒懂,Java 注解 (Annotation)看这一篇就够了

    秒懂,Java 注解 (Annotation)看这一篇就够了

    Annotation中文译过来就是注解、标释的意思,在Java中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我们经常可以看到一些文章对注解的解释如下:Java注解用于为Java代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Ja...

    2020-06-07 32 Java基础

    阅读全文
  • Linux之Socket编程详解

    Linux之Socket编程详解

    一、网络中进程之间如何通信进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如:UNIXBSD有:管道(pipe)、命名管道(namedpipe)软中断信号(signal)UNIXsy...

    2020-06-06 34 Linux

    阅读全文
  • 深入理解TCP三次握手与四次挥手

    深入理解TCP三次握手与四次挥手

    其中比较重要的字段:(1)序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。(2)确认号ack:占4个字节,表示期待...

    2020-06-06 47 计算机网络

    阅读全文