• 详解一条 SQL 的执行流程

    前言天天和数据库打交道,一天能写上几十条 SQL 语句,但你知道我们的系统是如何和数据库交互的吗?MySQL 如何帮我们存储数据、又是如何帮我们管理事务?....是不是感觉真的除了写几个 「select * from dual」外基本脑子一片空白?这篇文章就将带你走进 MySQL 的世界,让你彻底了解系统到底是如何和 MySQL 交互的,MySQL 在接受到我们发送的 SQL ...

    Java 2021年01月23日 9 0
  • 玩转 Java8 Stream,让你代码更高效紧凑简洁

    文章目录前言一、Stream 特性二、Stream 创建2.1 用集合创建流2.2 用数组创建流2.3 Stream静态方法三、Stream 使用案例3.1 遍历 forEach3.2 过滤 filter3.3 查找 findFirst,findAny3.4 匹配 match3.5 映射 map3.6 截取流 limit3.7 排序 sorted3.8 去重 distinct3...

    Java 2021年01月23日 9 0
  • Java:Lombok插件用法笔记

    1、Lombok是什么东东?官方介绍Lombok项目是一个Java库,它可以自动嵌入你的编辑器和构建工具中,从而减少你的代码量。永远不要再写另一个getter或equals方法,它带有一个注释的你的类有一个功能全面的生成器,自动化你的日志记录变量等等功能。简单来说就是使用Lombok,通过注解,让你不再需要编写getter、equals等属性方法,减少样板代码的编写、起到提升代...

    Java 2021年01月23日 12 0
  • 程序OOM,通过log日志定位,不要说自己具备高并发开发经验

    首先说一下,本人在开发中遇到的OOM异常基本也是通过看log日志去定位的(很多OOM异常是因为出现死循环或者查询返回的数据量多大,没有分页等等,通过异常日志我们确实能很快定位,但这不是正确的姿势。),只是碰巧刚好日志打印的异常栈信息就是对应的代码问题。很多博客也说了,定位OOM异常通过分析dump日志,因此深表疑惑,为什么明明看log日志就能解决的非要去分析dump日志,网上也...

    Java 2021年01月23日 9 0
  • 分布式常见问题分析及解决方案

    1、分布式和集群概念分布式:可以简单理解成将一个独立的系统拆分成很多个子系统,每个子系统可以单独的运行(比如用户登录、订单支付),这个称之为分布式系统。集群:可以简单理解就是对于任何一个系统至少部署了两台服务器上,两台服务器上的应用完全一致。称之为集群。2、一致性Hash问题及解决方案2.1Hash溯源思考:为啥需要使用Hash?我们带着问题踏上寻求之旅,要想知道为啥使用Has...

    Java 2021年01月23日 11 0
  • jdk8流处理toMap异常Duplicate key解决

    背景在开发过程中,我们经常要将list按照规则转为map,而jdk8提供了一个很好的工具:Collections.toMap,使用这个方法时,往往会有一些坑。Collections.toMap示例创建一个pojoimport java.io.Serializable; import lombok.Data; @Data public class Student implem...

    Java 2021年01月23日 16 0
  • SpringBoot2.x拥抱本地缓存之王Caffeine

    环境配置:JDK 版本:1.8Caffeine 版本:2.8.0SpringBoot 版本:2.2.2.RELEASE一、本地缓存介绍缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。之前介绍过 Redis 这种 NoSql 作为缓存组件,它能够很好地作为分布式缓存组件提供多个服务间的缓存,但是 Red...

    Java 2021年01月22日 17 0
  • 基于RBAC的权限访问系统基础

    需要,基于RBAC的权限访问,采用SpringSecurity安全管理框架+SpringBoot+Mybatis数据库持久框架。数据库设计:user用户名:ennabled,accountNonExpired,accountNonLocked,CredentialsNonExpired默认为1role角色表:permission权限表:user_role 用户-角色中间表:ro...

    Java 2021年01月22日 25 0
  • 接入谷歌Google人机验证:reCaptcha进行安全验证

    我们在开发网站的时候,经常需要各种人机验证,那我们就来学习下,网站如何接入谷歌Google人机验证:reCaptcha进行安全验证,本次使用的是 Google人机验证 3.0版本 Google人机验证V3recaptcha v3为每个请求返回一个没有用户摩擦的分数,评分是基于用户与您的站点的交互,并使您能够为您的站点采取适当的行动。大约0.5是阀值,低于这个阀值,就需要进行一些...

    Java 2021年01月22日 27 0
  • Lombok在SpringBoot项目的中使用

    SpringBoot结合Lombok整合对象我们之前介绍MyBatis Plus,AOP实现日志接口以及Swagger-UI等文章中都是使用了Lombok,可能有些人不是很了解Lombok,下面我们来介绍一下Java中的Lombok库。Lombok介绍Lombok是一个用于简化Java开发的,他的作用是自动插入编辑器和构建工具。通过注解方式,实现getter、setter、eq...

    Java 2021年01月22日 18 0
  • 你们要的SpringBoot+JWT来了

    什么是JWTJson Web Token (JWT)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519)该token被设计为紧凑且安全的 特别适用于分布式站点的单点登录(SSO)场景随着JWT的出现 使得校验方式更加简单便捷化JWT实际上就是一个字符串 它由三部分组成:头部 载荷和签名用[.]分隔这三个部分 最终的格式类似于:xxxx.xxxx....

    Java 2021年01月22日 20 0
  • Flink与Spring生态完美融合的脚手架工程

    还在为开发Flink流处理应用程序时无法像开发Spring Boot程序那么优雅的分层以及装配Bean而烦恼吗?你可能面临如下苦恼:1. 开发的Flink流处理应用程序,业务逻辑全部写在Flink的操作符中,代码无法复用,无法分层2. 要是有一天它可以像开发Spring Boot程序那样可以优雅的分层,优雅的装配Bean,不需要自己new对象好了3. 可以使用各种Spring生...

    Java 2021年01月22日 28 0
  • 消息队列技术调研

    消息队列的协议 AMQP:高级消息队列协议(AMQP,Advanced Message Queuing Protocol),RabbitMQ 和 HornetQ 都实现了该协议。 优势:功能最丰富,能够适用最多的场景。 劣势:其实现上不轻量化。 应用场景:简单的pub/sub模型无法满足要求的场景。 ZeroMQ:这是一种协议,也是一个开源组件,无中心化的broker。 优势:...

    Java 2021年01月21日 36 0
  • 细说SpringBoot的自动装配原理

    1.什么是SpringBoot?  对于spring框架,我们接触得比较多的应该是spring mvc、和spring。而spring的核心在于IOC(控制反转对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系)和DI(依赖注入IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Inje...

    Java 2021年01月21日 23 0
  • 如何在Spring Boot应用启动之后立刻执行一段逻辑

    1. 前言不知道你有没有接到这种需求,项目启动后立马执行一些逻辑。比如简单的缓存预热,或者上线后的广播之类等等。如果你使用 Spring Boot 框架的话就可以借助其提供的接口CommandLineRunner和 ApplicationRunner来实现。2. CommandLineRunnerorg.springframework.boot.CommandLineRunne...

    Java 2021年01月21日 33 0
  • JavaScript专业级处理货币类库Currency.js

    简要介绍Currency.js是一款专门处理货币值的开源免费的类库。它与Numeral.js非常相似,但是处理货币值上似乎要更专业。通过较灵活的API解决JavaScript常见的浮点问题,加减乘除的计算都可以做,处理货币的时候,还可以把分值单独提取出来,其格式转换的方法也相对工整。目前它在github拥有1.8k颗星,属于活跃项目。最新版本:2.0.3。Github地址htt...

    Java 2021年01月20日 37 0
  • Elasticsearch全攻略

    时下不论是在全文搜索领域还是大数据即时处理领域ELK都一枝独秀,而ELK的核心在于Elasticsearch,ELK很秀源于Elasticsearch很棒。很多可能用过ELK但是对其核心Elasticsearch却知之甚少,本文我们就一起来学习Elasticsearch,从基本概念到生产使用一文全搞定。基础概念对于一个Elasticsearch(ES)的新手,首先需要学习一些基...

    Java 2021年01月20日 39 0
  • 文件目录的增删改操作?java如何实时监控?

    前言有时候你可能有个疑问,IDE总是可以检测到外部文件是否发生了变化,比如你在某个类里面加了一些代码,这时候的IDE就会弹出一个框说你做了更改。再或者是某个文件夹下的文件发生了改变,比如新建了一个或者是删除了一个等等。这时候我们的IDE依然可以检测到。这个功能到底是如何实现的呢?这篇文章主要是研究NIO的其中一个类,叫做WatchService。也有一些其他的方式可以轻松地实现...

    Java 2021年01月19日 44 0
  • Spring Cloud项目OAuth2授权验证终极必杀技

    Spring Cloud项目OAuth2授权验证终极必杀技一、OAuth2兴起背景 OAuth2是一种授权验证获取用户信息的标准,在传统的用户认证体系中,想要获取用户信息必须通过输入用户名和密码,不是很安全。必须记录登录的Session会话状态,十分不利。 (图片) 那么有没有一种标准,无需记录登录Session状态,就能获取用户信息呢?最早的思路是基于Spring Sessi...

    Java 2021年01月18日 80 0
  • 从session、cookie到token以及JWT

    主要讲token和jwt技术,关于session和cookie文章很多。简单提一下session和cookie现在一般都是session和cookie一起用,一起提。但是他们俩其实不是一定要在一起。首先牢记一点,http协议是无状态的。就是说,一个请求过来,服务器不知道这个请求的用户是不是已经登录过了,不知道他的状态。只能再把这个请求重定向到登陆页面。这样用户就疯了,怎么一直让...

    Java 2021年01月18日 42 0
  • Java编码技巧之高效代码50例

    1.常量&变量1.1.直接赋值常量值,禁止声明新对象直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值。反例:Long i = new Long(1L); String s = new String("abc");正例:Long i = 1L; String s = "abc";1.2.当成员变量值无需改变时,尽量定义为静态常量在类的每个对象实例中,每个...

    Java 2021年01月18日 43 0
  • mybatis plus字段名称有下划线读取不到值的问题

    问题环境:springboot + mybatis-plus现在有这么一个实体package com.ct10000.sc.pc.videoauth.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableNa...

    Java 2021年01月18日 39 0
  • Java最佳实践,提升代码可读性与可靠性

    从命名变量到设计软件架构,开发人员每天都要做出许多决定,而做出正确决定的最好的办法就是经验。虽然并非每个人都具备丰富的软件开发经验,但每个人都可以从他人身上学习。下面是我对 Java 开发总结的一些技巧,希望可以有助你提高 Java 代码的可读性和可靠性。1、编程原则写代码不是够用就好,因为这些代码不仅需要你维护,未来某个时刻还有其他人会加入维护的行列。软件开发的“二八定律”,...

    Java 2021年01月16日 47 0
  • 线程安全—synchronized 和 ReentrantLock,看完后绝不后悔系列

    前面我们介绍了很多关于多线程的内容,在多线程中有一个很重要的课题需要我们攻克,那就是线程安全问题。线程安全问题指的是在多线程中,各线程之间因为同时操作所产生的数据污染或其他非预期的程序运行结果。线程安全1)非线程安全事例比如 A 和 B 同时给 C 转账的问题,假设 C 原本余额有 100 元,A 给 C 转账 100 元,正在转的途中,此时 B 也给 C 转了 100 元,这...

    Java 2021年01月16日 40 0
  • 面试官Maven的package和install有什么区别?看看这篇文章

    1、Maven 是干什么的?Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟2、Maven 解决了什么痛点?① 添加第三方 jar 包手动会出现 jar 包冲突,版本冲突。通过统一的 Maven 仓库我们可以享受到一个完全统一规范的 jar 包管理体系。② jar 包之间的依赖关系M...

    Java 2021年01月16日 51 0
  • JavaScript 中 10 个需要掌握基础的问题

    JavaScript 是一种客户端编程语言。全球超过**90%**的网站都在使用它,它是世界上最常用的编程语言之一。因此,今天我们业讨论 10 个有关 JavaScript 的常见问题。1.如何从数组中移除一个特定的项思路:首先,使用indexOf查找要删除的数组元素的索引(index),然后使用splice方法删除该索引所对应的项。splice()是一个非纯函数,通过删除现有...

    Java 2021年01月16日 41 0
  • 自定义SpringBoot默认MVC配置?好几个坑,避一避

    前言前些天,在项目实践过程中出现了一个奇怪的状况,Spring Boot 的参数绑定失效了。而起因只是因为同事把参数上的 @RequestParam 注解去掉了。我们都知道,如果参数名称和 Controller 的方法名相同时,根本不需要 @RequestParam 注解的,Spring Boot 会自动帮我们完成参数的绑定。但为什么自动绑定机制失效了呢?本篇文章会为大家揭开谜...

    Java 2021年01月16日 64 0
  • 万字详解 Zookeeper 的五个核心知识点

    1 ZooKeeper简介ZooKeeper 是一个开源的分布式协调框架,它的定位是为分布式应用提供一致性服务,是整个大数据体系的管理员。ZooKeeper 会封装好复杂易出错的关键服务,将高效、稳定、易用的服务提供给用户使用。如果上面的官方言语你不太理解,你可以认为 ZooKeeper = 文件系统 + 监听通知机制。1.1 文件系统Zookeeper维护一个类似文件系统的树...

    Java 2021年01月15日 41 0
  • 什么是分布式任务调度

    1.什么是任务调度我们可以先思考一下下面业务场景的解决方案:某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。某银行系统需要在信用卡到期还款日的前三天进行短信提醒。某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。12306会根据车次的不同,而设置某几个时间点进行分批放票。某网站为了实现天气实时展示,每隔5分钟就去天气服务器获取最新的实时天气信息。...

    Java 2021年01月14日 48 0
  • 架构解密从分布式到微服务:深入理解网络,NIO

    NIO我们知道,分布式系统的基础是网络。因此,网络编程是分布式软件工程师和架构师的必备技能之一,而且随着当前大数据和实时计算技术的兴起,高性能RPC架构与网络编程技术再次成为焦点。不管是RPC领域的ZeroC Ice、Thrift,还是经典分布式框架Actor模型中的Akka,或者实时流领域的Storm、Spark、 Flink, 又或者开源分布式数据库中的Mycat、Volt...

    Java 2021年01月13日 48 0