自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疯一样的女子

耐得住寂寞,守得住繁华!

  • 博客(727)
  • 收藏
  • 关注

转载 IntelliJ IDEA创建SpringBoot工程

本文介绍了 IntelliJ IDEA (Version 2017.3.3) 创建 Spring Boot 工程的过程。1 创建新项目,在 IntelliJ IDEA 欢迎界面点击 Create New Project2 在 New Project 窗口选中 Spring Initializr,设置 Project SDK,选择默认的 Spring Initializr 服务地址(Spring Boot 官方地址:https://start.spring.io),点击 Next..

2020-07-04 10:09:07 2274

转载 Spring bean Scope作用域及线程安全问题场景分析

Scope作用域在 Spring IoC 容器中具有以下几种作用域:singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例,适用于无状态bean; prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例,适用于有状态的Bean; request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例

2020-05-24 09:43:49 2002

转载 Spring Boot之Swagger使用和注释介绍

介绍什么是SwaggerSwagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。作用接口文档在线自动生成 功能测试Swagger是一组开源项目,其中主要要项目如下: Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2

2020-05-18 16:12:17 1854

转载 国内 Java 开发者必备的两个神器:Maven国内镜像和Spring国内脚手架

虽然目前越来越多的国产优秀技术产品走出了国门,但是对于众领域的开发者来说,依然对于国外的各种基础资源依赖还是非常的强。所以,一些网络基本技能一直都是我们需要掌握的,但是速度与稳定性问题一直也都有困扰着大家。所以,今天就给众 Java 开发者推荐两个提速神器:Maven的国内镜像和Spring的国内脚手架!Maven的国内镜像官网地址:http://maven.aliyun.com/对于每一个Java开发来说,拉不到依赖的情况一定都有碰到过。所以,强烈建议大家在安装开发环境的时候,就把阿里的国

2020-05-15 09:22:35 736

转载 9个提升逼格的redis命令

keys我把这个命令放在第一位,是因为笔者曾经做过的项目,以及一些朋友的项目,都因为使用keys这个命令,导致出现性能毛刺。这个命令的时间复杂度是O(N),而且redis又是单线程执行,在执行keys时即使是时间复杂度只有O(1)例如SET或者GET这种简单命令也会堵塞,从而导致这个时间点性能抖动,甚至可能出现timeout。强烈建议生产环境屏蔽keys命令(后面会介绍如何屏蔽)。...

2019-11-28 16:27:40 202

转载 redis-cli info命令中各数值含义

redis-cli info命令中各数值含义# Serverredis_version:3.2.0 #redis 版本redis_git_sha1:00000000redis_git_dirty:0redis_build_id:85def9ed04ebeee4redis_mode:cluster #运行模式(standalone,cluster)os:Linux 3.0.13-0....

2019-11-28 15:17:14 471

转载 【IDE工具】是时候扔掉Postman了,又一个被低估的IDEA插件出来了

# 前言接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日常工作项。所谓工欲善其事必先利其器,在没有尝到IDEA REST真香之前,postman(chrome的一款插件)确实是一个非常不错的选择,具有完备的REST Client功能和请求历史记录功能。但是当使用了IDEA REST之后,po...

2019-11-22 21:16:36 1465

转载 [IDE工具]VSCode开发技巧

安装VSCode最新地址:https://code.visualstudio.com/,下载后安装即可(1)配置语言环境打开安装好的VSCode软件,可以看到刚刚安装的VSCode软件默认使用的是英文语言环境,如下图:使用快捷键【Ctrl+Shift+P】来配置,在弹出的搜索框中输入【configure language】,然后选择搜索出来的【Configure D...

2019-11-12 13:41:54 596

转载 https原理和通信流程

了解HTTPS之前你还需要了解:加密、证书、签名的原理:https://zhuanlan.zhihu.com/p/50046393Http协议的不足不验证身份,导致身份可能被伪装。HTTP是不会对请求的双方进行身份验证的,服务器不会校验客户端的身份,谁都可以向服务器发送请求,任何人都的请求都会进行响应; 客户端也不会验证响应的数据是否是由自己请求的目标服务器所发出。...

2019-10-29 16:30:20 1912 1

转载 Code Review

我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于...

2019-10-16 09:51:16 260

转载 如何保障消息中间件100%消息投递成功?如何保证消息幂等性?

一、前言我们小伙伴应该都听说够消息中间件MQ,如:RabbitMQ,RocketMQ,Kafka等。引入中间件的好处可以起到抗高并发,削峰,业务解耦的作用。如上图:(1)订单服务投递消息给MQ中间件(2)物流服务监听MQ中间件消息,从而进行消费我们这篇文章讨论一下,如何保障订单服务把消息成功投递给MQ中间件,以RabbitMQ举例。二、分析问...

2019-06-26 14:18:23 458

转载 千万级用户的大型网站,应如何设计其高并发架构

目录(1)单块架构(2)初步的高可用架构(3)千万级用户量的压力预估(4)服务器压力预估(5)业务垂直拆分(6)用分布式缓存抗下读请求(7)基于数据库主从架构做读写分离(8)总结本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。一、单块架构一般一个网站刚开始建立的时候,用户量是很...

2019-06-26 14:00:22 1673

转载 Apache Velocity使用指南

Quick Start本项目是 Apache Velocity官方文档的中文翻译版,Velocity类似与JSP,是一种基于Java的模板引擎。它可以在web页面中引用Java代码中定义的数据和对象,而Velocity的作用就是把Web视图和java代码进行组装在一起。本次翻译主要针对对Velocity感兴趣和工作中使用到Velocity的开发人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。由于我也是第一次接触Velocity,还不是很深入,翻译的时候也查看了一些博客以及其他网上资料。

2020-07-31 08:55:46 3031

转载 一个简单的Mysql查询

最近工作上遇到一个“神奇”的问题,或许对大家有帮助,因此形成本文。问题大概是,我有两个表 TableA,TableB,其中 TableA 表大概百万行级别(存量业务数据),TableB 表几行(新业务场景,数据还未膨胀起来)。image语义上 TableA.columnA=TableB.columnA,其中 columnA 上建立了索引,但查询的时候确巨慢无比,基本上到 5-6 秒,明显跟预期不符合。下面我以一个具体的例子来说明,模拟其中的 SQL 查询场景。场景重现user_in

2020-07-18 14:46:28 680

转载 SpringBoot整合Dubbo

Dubbo简介Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分业务的架构,使用这种方式可以使各个业务之间解耦合(或者最大限度地松耦合)。简单来说Dubbo:一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案Dubbo架构这里写图片描述Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次数和调用时间的监控中心。.

2020-07-05 16:32:21 3637 1

转载 Dubbo SPI扩展机制

引言SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。在谈dubbo的SPI扩展机制之前,我们需要先了解下java原生的SPI机制,有助于我们更好的了解dubbo的SPI。java原生的SPI先上例子:1. 定义接口Animal :publi

2020-07-05 16:11:00 495

转载 Dubbo使用入门

一、SOA和RPC介绍1、SOA随着互联网的发展,应用规模不断扩大,应用之间的交互不可避免,这时将核心业务抽取出来,作为独立的服务,用于提高业务复用及整合,逐渐形成了分布式服务架构。当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。2、RPCRPC【Remote Procedur

2020-07-05 15:50:59 1416

转载 RPC接口超时分析

在使用dubbo时,通常会遇到timeout这个属性,timeout属性的作用是:给某个服务调用设置超时时间,如果服务在设置的时间内未返回结果,则会抛出调用超时异常:TimeoutException,在使用的过程中,我们有时会对provider和consumer两个配置都会设置timeout值,那么服务调用过程中会以哪个为准?橘子同学今天主要针对这个问题进行分析和扩展。三种设置方式以provider配置为例:#### 方法级别<dubbo:service interface="oran

2020-07-05 11:31:31 8625 1

转载 线程池

1.什么是线程池java.util.concurrent.Executors这个类大家不知道有没有仔细的去看过这个,而这个类中给我提供了很多方法来创建线程池。在代码的开头的注释上就写明了,它可以创建重复使用固定数量线程的线程池,如果在所有线程都处于活动状态时提交了其他任务,那么他们将在队列中等待线程可用。public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolE.

2020-07-05 10:11:13 291

转载 SpringBoot+Dubbo构建微服务

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。一、先来一张图说起 Dubbo,相信大家都不会陌生!阿里巴巴公司开源的一个高性能优秀的服务框架,可以使得应用可通过高性能的 RPC 实现服务的输出和输入功能,同时可以和 Spring 框架无缝集成。Dubbo 架构图节点角色说明:Provider:暴露服务的服务提供方 Consumer:调用远程服务的服务消费方 Reg..

2020-07-05 09:27:37 3774 2

转载 Dubbo从入门到实战

一 为什么需要 dubbo很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的,那么,dubbo是怎么被提上日程的呢?在互联网的发展过程中,在以前,我们只需要一个服务器,将程序全部打包好就可以,但是,随着流量的增大,常规的垂直应用架构已无法应对,所以,架构就发生了演变。1 单一应用架构2 应用和数据库单独部署3 应用和数据库集群部署4

2020-07-05 09:01:51 636

转载 IDEA设置默认Maven

idea设置默认maven配置, 避免每次设置mavenStep 1:Other Setting--->Default Settings--->设置maven--->Apply--->OK

2020-07-04 10:18:08 1039

转载 Spring Boot基于JUint5实现单元测试

本文介绍 Spring Boot 2 基于 JUnit 5 的单元测试实现方案。目录简介 JUnit 4 和 JUnit 5 的差异 忽略测试用例执行 RunWith 配置 @Before、@BeforeClass、@After、@AfterClass 被替换 开发环境 示例简介Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,在 Spring Boot 2.2.0 版本之前,spring-boot-starter-test 包含了 JU

2020-07-04 09:51:50 619

转载 ThreadLocal技术分享

学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么。所以我们先来看看ThreadLocal对我们到底有什么用,然后再来看看它的实现原理。ThreadLocal如果单纯从名字上来看像是“本地线程"这么个意思,只能说这个名字起的确实不太好,很容易让人产生误解,ThreadLocalVariable(线程本地变量)应该是个更好的名字。我们先看一下官方对ThreadLocal的描述:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 g

2020-07-04 09:23:31 539 1

转载 Dubbo问题总结

一、Dubbo是什么?Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。二、为什么要用Dubbo?因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。1、使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的

2020-07-04 09:03:22 666

转载 You must reset your password using ALTER USER statement before executing this statement.

登陆成功后输入命令的时候,发现总是提示:You must reset your password using ALTER USER statement before executing this statement.翻译过来就是:在执行此语句之前,必须使用 ALTER USER 语句重置密码。因第一次安装,给的是随机密码,登陆成功后需要第一时间改成自己的密码。第一次安装登陆后只能使用 ALTER USER 修改密码MySQL 5.7 在初始安装后(CentOS7 操作系统)会生成随机.

2020-07-03 08:53:31 2566

转载 MySQL启动服务提示系统找不到指定文件

Mysql启动服务:C:\Windows\system32>net start mysql发生系统错误 2。系统找不到指定的文件。怎么还是报这个错?难道不是由于配置的原因?对,不是由于上面的配置的问题,但上面的配置添加后也没有错。那是什么原因?这里是最需要注意的地方,在安装mysql服务时,一定要切换到mysql安装目录的bin目录下,不管你是否配置环境变量,否则在安装完后启动服务还是会报上面的错误。切换到bin目录后,先删除前面安装的mysql服务(删除服务不一定要到bin目录

2020-07-03 08:08:02 7538 2

转载 Code Review最佳实践

我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于事后的测试。也有些团队想做好代码审查,但不知道怎么做比较好。网上关于如何做Code Review的文章已经..

2020-06-28 20:27:20 268

转载 如何利用http缓存机制

Web 缓存大致可以分为:数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器缓存。浏览器缓存也包含很多内容:HTTP 缓存、indexDB、cookie、localstorage 等等。这里我们只讨论 HTTP 缓存相关内容。在具体了解 HTTP 缓存之前先来明确几个术语: 缓存命中率:从缓存中得到数据的请求数与所有请求数的比率。理想状态是越高越好。 过期内容:超过设置的有效时间,被标记为“陈旧”的内容。通常过期内容不能用于回复客户端的请求,必须重新向源服务器请求新的内

2020-06-28 20:14:23 409

转载 一文读懂git

在日常工作中,经常会用到Git操作。但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼。本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令。一、Git工作流程以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词。 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 工作区程序员进行开发改动的地方,是你当前看..

2020-06-28 14:34:41 422

转载 经典的数据库问题

一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。2、数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页

2020-06-28 13:55:07 390

转载 Spring的@RequestHeader注释

 SpringMVC提供了可以用于映射控制器参数以请求头值的注释@RequestHeader。以下是spring@RequestHeader注释的简单使用。import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;/

2020-06-28 09:38:10 898

转载 Redis事务

Redis 通过MULTI、DISCARD、EXEC和WATCH四个命令来实现事务功能, 本章首先讨论使用MULTI、DISCARD和EXEC三个命令实现的一般事务, 然后再来讨论带有WATCH的事务的实现。因为事务的安全性也非常重要, 所以本章最后通过常见的 ACID 性质对 Redis 事务的安全性进行了说明。事务事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制, 并且事务在执行的期间不会主动中断 —— 服务器在执行完事务中的所有命令之后, ...

2020-06-24 13:48:17 200

转载 Mysql慢查询优化

开启 MySQL 慢查询日志一个起步就不简单的原因是,我们如何才能定位到那些真正形成瓶颈的慢查询。一个普通项目中的 SQL 可能就有大几十甚至上百个,而「凶手们」就藏匿其中。一个朴素的想法是在项目中每一个 SQL 执行前后打上时间戳来估计执行时间,暂且不论由于各种因素的影响这种估算可能不准确,更让人不可接受的是这对原始代码造成的极大的侵入。好在 MySQL 提供了慢查询日志。这个日志会记录所有执行时间超过 long_query_time(默认是 10s)的 SQL 及相关的信息。在 MySQ

2020-06-20 18:29:39 349

转载 跨域问题解决方案

前言前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容。本文完整的源代码请猛戳github博客,纸上得来终觉浅,建议大家动手敲敲代码。一、什么是跨域?1.什么是同源策略及其限制内容?同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略限制内容有:Cookie、Loca..

2020-06-20 16:46:52 816

转载 深入理解spring事务原理

一、事务的基本原理Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); 执行CRUD 提交事务/回滚事务 con.commit() / con.rollback(); 关闭连接 ...

2020-06-20 15:52:12 217

转载 SpringAOP实现方式

一、AOP是什么?AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。本文会分别对AspectJ和Spring AOP的实现进行分析和介绍。二、springaop如何实现的?Spring AOP中

2020-06-20 09:28:25 204

转载 Spring事务传播机制

前言事务对于 java web 应用来说,也是比较大的一方面。面试的时候也会经常的问到,包含的内容有:事务的四大特性 事务的隔离级别 spring 事务的传播机制预期读者对事务有一定基础的同学,想弄清楚 spring 事务的传播机制为什么会有传播机制spring 对事务的控制,是使用 aop 切面实现的,我们不用关心事务的开始,提交 ,回滚,只需要在方法上加@Transactional注解,这时候就有问题了。场景一: serviceA 方法调用了 serviceB 方法,但..

2020-06-19 20:12:53 608

转载 Spring事务传播属性

文章目录I. 配置 1. 项目配置 2. 数据库配置 3. 数据库 II. 使用说明 0. 准备 1. REQUIRED 2. SUPPORTS 3. MANDATORY 4. NOT_SUPPORT 5. NEVER 6. NESTED a. case1 内部事务回滚 b. case2 外部事务回滚 7. REQUIRES_NEW 8. 小结 III. 其他 0. 系列博文&源码 1. 一灰灰Blog 对于my

2020-06-17 21:53:25 410

转载 Dubbo负载均衡策略

Random LoadBalance随机,按权重设置随机概率。 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。权重加倍RoundRobin LoadBalance轮循,按公约后的权重设置轮循比率。 存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。解决办法 :结合权重,把第二台机(性能低的)的权重设置低一点LeastActiv..

2020-06-17 20:41:21 174

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除