自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 收藏
  • 关注

原创 视频讲解编程题:Docker, Kafka, Elastic Search

视频讲解 1_基础环境准备 3_查询商品需求 系统架构图基础环境准备在 VM 中克隆出一个新的虚拟机,IP 地址为 192.168.186.20。在 Docker 中安装 MySQL 容器,端口映射到宿主机。在 Docker 中安装 ElasticSer

2020-12-27 22:08:43 346

原创 Kafka 入门

消息队列 - MQ什么是消息队列消息队列不知道大家看到这个词的时候,会不会觉得它是一个比较高端的技术。消息队列,一般会简称为 MQ(Message Queue)。消息队列是一种帮助开发人员解决系统间异步通信的中间件,常用于解决系统解耦和请求的削峰平谷的问题。队列(Queue):Queue 是一种先进先出的数据结构,容器。消息(Message):不同应用之间传送的数据。消息队列:可以把消息队列比作是一个存放消息的容器,当需要使用消息的时候可以取出消息使用。消息队列是分布式系统中重要的组件,使用消息队

2020-12-06 20:38:50 749

原创 Docker 入门

Docker 简介虚拟化技术虚拟化技术是一种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的,不可切割的障碍。使用户可以比原本的组态更好的方式,来应用这些资源。虚拟化技术主要作用:高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件。软件跨环境迁移问题。在一台主机上实现多个操作系统,关键技术就是硬件的虚拟化。宿主机 <----> [虚拟机,虚拟机,虚拟机]什么是

2020-12-05 23:25:32 415

原创 Lucene 和 Kibana、ElasticSeach、Spring Data ElasticSearch

什么是全文检索数据分类生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据 - 行数据,可以用二维表结构来逻辑表达实现的数据;指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据 - 指不定长或无固定格式的数据,如邮件,word 文档等磁盘上的文件。结构化数据搜索常见的结构化数据也就是数据库中的数据。在数据库中搜索很容易实现,通常都是使用 SQL 语句进行查询,而且能很快的得到查询结果。客户端请求 ----> 连接器连接器 ----> 缓存区连接器 -

2020-11-27 22:05:35 519 1

原创 Spring Cloud:视频讲解编程题

视频讲解BiliBili 链接 1_基础环境介绍 2_商品微服务 3_订单微服务

2020-11-17 22:37:26 198

原创 Maven Compile 编译报错

首先在 IDEA 中使用 Maven 的插件中的 Lifecycle 进行 compile 指令,发现报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project ssm-utils: Fatal error compiling然后命令行运行 mvn compile 得到更详细的报错信息如下Failed to execute goal

2020-11-16 17:23:07 2264

原创 Java 后台开发面试题分享九

null 和 undefined 的区别?null 是一个表示"无"的对象,转为数值时为 0;undefined 是一个表示"无"的原始值,转为数值时为 NaN。当声明的变量还未被初始化时,变量的默认值为 undefined;null 用来表示尚未存在的对象。undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义,典型用法是:1)变量被声明了,但没有赋值时,就等于 undefined。2)调用函数时,应该提供的参数没有提供,该参数等于 undefined。3)对象没有赋值的属性

2020-11-16 17:14:52 185

原创 Spring Cloud:Nacos,Sentinel

Spring Cloud Alibaba 简介Spring Cloud 是若干个框架的集合,包括 spring-cloud-config、spring-cloud-bus 等近 20 个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。Spring Cloud 通过 Spring Boot 风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。一般来说,Spring Cloud 包含以下组件

2020-11-16 16:23:40 697

原创 Spring Cloud:Eureka,Ribbon,Hystrix,Feign,GateWay,Config

网关组件 Zuul 性能一般,未来将退出 Spring Cloud 生态圈,所以直接使用 GateWay,把 GateWay 划分到第一代 Spring Cloud 核心组件中。各组件整体结构如下:Gateway:所有服务的入口;日志、黑白名单、鉴权。Ribbon:负载均衡。Hystrix:熔断器,服务熔断,服务降级。Feign:远程调用。Eureka:服务注册与发现;微服务名称、IP、端口号。Config:搭建配置中心微服务;实现对配置文件的统一管理,配置自动刷新 - bus。

2020-11-12 19:54:35 978

原创 Spring Cloud:微服务入门,案例准备

微服务架构互联网应用架构演进随着互联⽹的发展,⽤户群体逐渐扩大,⽹站的流量成倍增⻓,常规的单体架构已⽆法满⾜请求压⼒和业务的快速迭代,架构的变化势在必⾏。下⾯从最开始的单体架构分析,⼀步步的到现在的微服务架构。1)单体应用架构在诞⽣之初,应用的⽤户量、数据量规模都⽐较⼩,项目所有的功能模块都放在一个工程中编码、编译、打包并且部署在一个 Tomcat 容器中的架构模式就是单体应用架构,这样的架构既简单实 ⽤、便于维护,成本⼜低,成为了那个时代的主流架构⽅式。Actor -> Applicati

2020-11-10 19:17:41 884 2

原创 Java 后台开发面试题分享八

请问 select(1) 和 select(*) 有什么区别selelct 常量 from ... 对应所有行,返回的永远只有一个值,即常量。所以正常只会用来判断是否有还是没有,比如 exists 子句。select * from ... 是返回所有行的所有列。 性能上的差异,关键看 from 和 where 子句,比如说 where 条件中可以使用索引,那显然 select 1 from ... 的性能比 select * from ... 好。说一下 count(1) 和 count

2020-11-07 17:17:53 1712 3

原创 Postman 和 Jmeter 的并发测试 Nginx 配置

用 Spring Boot 搭建完 Spring Cloud 微服务项目后,又用 Nginx 为 Spring Gateway 做了负载均衡,其中做了并发限制和每秒连接数限制,Nginx 的配置如下:worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendf

2020-11-07 16:07:29 460

原创 Spring Boot:基本应用,源码解析,数据访问和视图技术

SpringBoot 基本应用约定优于配置约定优于配置(Convention over Configuration),又称按约定编程,是一种软件设计范式。本质上是说,系统、类库或框架应该假定合理的默认值,而非要求提供不必要的配置。比如说模型中有一个名为 User 的类,那么数据库中对应的表就会默认命名为 User。只有在偏离这一个约定的时候,例如想要将该表命名为 person,才需要写有关这个名字的配置。比如平时架构师搭建项目就是限制软件开发随便写代码,制定出一套规范,让开发人员按统一的要求进行开发

2020-11-07 15:41:53 788 1

原创 Dubbo 分布式架构搭建教育 PC 站:视频讲解

​视频讲解BiliBili 链接教育PC站-Dubbo分布式架构:后端教育PC站-Vue:前端说明服务提供方:http://localhost:8002/服务消费方:http://localhost:80/前端:http://localhost:8080/图片服务器地址:http://www.fdfsstorage.com/ZooKeeper、MySQL、FastDFS、Redis、Nginx 等都配置在 Linux 系统需求完成接口对应的前后端的代码.

2020-10-31 20:21:31 219

原创 Dubbo 分布式架构搭建教育 PC 站 - 微信支付

创建二维码安装 qrcodejs2 (注意:安装的是 qrcodejs2,不要安装 qrcode,否则会报错)npm install qrcodejs2 --save页面中引入<el-dialog :visible.sync="dialogFormVisible" style="width:800px;margin:0px auto;" > <h1 style="font-size:30px;color:#00B38A">微信扫一扫支付</h1> &

2020-10-30 18:44:37 320 1

原创 Dubbo 分布式架构搭建教育 PC 站 - 微信登录

微信开放平台(针对开发者和公司):https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html准备工作网站应用微信登录是基于 OAuth2.0 协议标准构建的微信 OAuth2.0 授权登录系统。在进行微信 OAuth2.0 授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的 AppID 和 AppSecret,申请微信登录且通过审核后,可开

2020-10-30 18:40:06 504

原创 Zookeeper 服务消费方 NullPointerException

Zookeeper 的服务消费方代码:@Controllerpublic class HelloAction { // 远程去服务提供方将 service 的实现类注入进来 @Reference private HelloService helloService; @GetMapping("hello") @ResponseBody public String sayHi(String name){ return helloServic

2020-10-29 18:58:39 399

原创 Java 后台开发面试题分享七

数据库中 CHAR 和 VARCHAR 的区别?Char 固定长度Varchar 可变长度Char 类型,如果存入数据的实际长度比指定长度要小,会补空格至指定长度;如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错4 ) Varchar 类型,如果存入的数据的实际长度比指定的长度小,会缩短到实际长度;如果存入数据的实际长度大于指定长度,低版本会被截取 高版本会报错Varchar 比 Char 节省存储空间Char 效率会更高 Varchar 效率偏低

2020-10-29 18:53:56 173

原创 Dubbo 分布式架构搭建教育 PC 站 - 前端:Vue 代码

src\router\index.jsimport Vue from 'vue'import VueRouter from 'vue-router'import Vuex from 'vuex'import Index from '../components/Index.vue'import Course from '../components/Course.vue'Vue.use(VueRouter)Vue.use(Vuex)const videoDetail = () =>

2020-10-29 18:47:02 1013

原创 Dubbo 分布式架构搭建教育 PC 站 - 后端:数据库设计文档

数据库设计文档MySQL 数据库名称:edu数据库表:activity_course 活动课程表course 课程表course_comment 留言表course_comment_favorite_record 点赞表course_lesson 课时表course_media 课程媒体表course_play_history 历史播放节点表course_section 章节表pay_order 支付订单信息表pay_order_record 支付订单状态日志表promotion

2020-10-28 19:04:42 304

原创 Dubbo 分布式架构搭建教育 PC 站 - 后端:订单模块,留言模块

订单模块购买 / 生成订单功能描述:用户选好课程点击立即购买,调用后端接口,开始创建商品订单。需要校验必要数据:用户是否登录;接口的请求入参,课程是否存在,课程是否上架;该用户之前是否成功购买过该课程;如校验不通过提示相应的文案。查看该用户是否存在有效未成功的订单;如果存在直接返回对应的订单号;如果不存在创建新的课程订单,返回新的订单号。功能接口:/saveOrder?orderNo={orderNo}&user_id={userid}&course_id={cour

2020-10-28 19:03:10 159

原创 JSP 报错:ReferenceError: $ is not defined

运行 SpringMVC 项目时,JSP 的代码报错:ReferenceError: $ is not definedJSP 相关代码如下:...<script src="js/jquery-3.3.1.min.js"></script><script> $("#btn").on("click", function () { $.ajax({ type: "post", url: "reg

2020-10-27 22:14:23 674

原创 Java 后台开发面试题分享六

堆(Heap)和栈(Stack)的区别(1)管理方式不同。栈由操作系统自动分配释放,无需手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏。(2)空间大小不同。每个进程拥有的栈的大小要远远小于堆的大小。理论上,程序员可申请的堆大小为虚拟内存的大小,进程栈的大小 64bits 的 Windows 默认 1MB,64bits 的 Linux 默认 10MB。(3)生长方向不同。堆的生长方向向上,内存地址由低到高;栈的生长方向向下,内存地址由高到低。(4)分配方式不同。堆都是动态分配的,没有静态分

2020-10-27 22:05:17 244 2

原创 Dubbo 分布式架构搭建教育 PC 站 - 后端:用户模块,课程模块

用户模块实体类的编写没有任意技术含量,而且还浪费时间。生成代码的解决方案有很多种:企业中比较常见的还有 MyBatis 的逆向工程。修改 Easy Code 插件的作者名称:IDEA 的 Settings -> Other Settings -> Easy Code -> 修改新的作者名称。使用 EASY CODE 插件可以快速生成 entity,dao,service,mapper 等文件:IDEA 安装最新版的 Easy Code 插件来自动生成代码;在 IDEA 的 D

2020-10-27 21:58:38 315 1

原创 SpringMVC 接受前端传来的中文出现乱码情况

使用 SpringMVC 接受前端 JSP 页面传来的中文出现了乱码。首先保证项目的编码为 UTF-8。在项目中的 web.xml 配置过滤器,进行编码拦截:<filter> <filter-name>charset</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <

2020-10-26 19:10:08 478

原创 Java 后台开发面试题分享五

线程的 start 方法跟 run 方法的区别?start() 方法来启动线程,真正实现了多线程运行。这时无需等待 run() 方法体代码执行完毕,可以直接继续执行下面的代码。通过调用 Thread 类的 start() 方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。方法 run() 称为线程体,它包含了要执行的这个线程的内容;当线程进入了运行状态,就开始运行 run() 函数当中的代码;当 run() 方法运行结束,此线程终止,然后 CPU 再调度其它线程。list 和 ma

2020-10-26 18:58:26 232 2

原创 Dubbo 分布式架构搭建教育 PC 站

架构设计与环境搭建项目架构项目介绍教育 PC 站是提供给学员观看技术视频的网站。学员使用手机号注册登录后,可以选择适合自己的课程,并观看课程视频,当然,有免费的课程,也有 VIP 专属课程。技术选型前端技术选型Vue.js - 是一套用于构建用户界面的渐进式 JavaScript 框架ElementUI 库 - 是饿了么前端出品的基于 Vue.js 的后台组件库,方便程序员进行页面快速布局和构建node.js - 简单的说 Node.js 就是运行在服务端的 JavaScrip

2020-10-26 18:56:19 260 1

原创 使用 Redis 分布式锁报错:-READONLY

使用 Redisson 提供的 Redis 分布式锁时,编译没有问题,运行时报错 (-READONLY You can’t write against a read only replica):10月 11, 2020 2:18:18 上午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet [springMVC] in context with path [] threw excep

2020-10-25 00:23:17 2071

原创 Java 后台开发面试题分享四

61、数据库隔离级别是什么?有什么作用?Serializable - 串行化:可避免脏读、不可重复读、幻读的发生。Repeatable read - 可重复读:可避免脏读、不可重复读的发生。Read committed - 读已提交:可避免脏读的发生。Read uncommitted - 读未提交:最低级别,任何情况都无法保证。62、汉字和英文字符在数据库中存储是占同样字节吗一个汉字占多少长度与编码有关:UTF-8:一个汉字 = 3 个字节,英文一个字母占用一个字节GBK: 一个汉字

2020-10-25 00:21:03 217

原创 视频讲解编程题:Redis + FastDFS 小视频上传

需求使用 Redis 分布式锁解决高并发下的小视频上传1、前端页面自行设计2、Redis + FastDFS3、功能流程不报错视频讲解BiliBili 链接 编程题:Redis + FastDFS 小视频上传 说明使用了 nginx 做负载均衡以及配置 FastDFS 服务器:upstream renda { server 192.168.1.116:8001;

2020-10-22 13:39:23 748 4

原创 视频讲解编程题:Dubbo + ZooKeeper

视频讲解BiliBili 链接 Dubbo+ZooKeeper编程题 需求使用 Dubbo,ZooKeeper,mySQL,Spring,SpringMVC,MyBatis 实现:1、注册用户(任务中已完成)2、删除用户3、修改用户4、根据姓名关键字模糊查询用户页面自行设计(越美越好)使用 Maven 聚合工程,进行模块开发功能流程,不报错代码要点r

2020-10-21 21:33:03 109

原创 RabbitMQ 消息队列入门

什么是 RabbitMQMQ(Message Queue)消息队列消息队列中间件,是分布式系统中的重要组件;主要解决异步处理、应用解耦、流量削峰等问题,从而实现高性能,高可用,可伸缩和最终一致性的架构。使用较多的消息队列产品:RabbitMQ,RocketMQ,ActiveMQ,ZeroMQ,Kafka 等。异步处理用户注册后,需要发送验证邮箱和手机验证码。将注册信息写入数据库,发送验证邮件,发送手机,三个步骤全部完成后,返回给客户端。传统:客户端 <-> 注册信息写入数据库 -

2020-10-17 18:31:47 820 1

原创 FastDFS 分布式文件系统入门

场景概述如何存储大量的图片和视频?在用户访问量大的情况下,如何保证下载速度?这些问题都需要分布式文件系统来解决。什么是文件系统文件数据是如何存储的?应用软件 -> 操作系统,文件系统 -> 驱动程序 -> 机械硬盘 HDD,固态硬盘 SSD,光盘 CD ROM文件数据存储在硬盘中。分布式文件系统一台电脑存储量有限,并且并发吞吐量也有限,如何提高性能?分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块拆分为多个子业务,部署在不同的服务器上,解决高并发的问题。

2020-10-14 21:57:53 226

原创 Redis - NoSQL 和 Jedis 入门

概述互联网架构的演变历程第 1 阶段:数据访问量不大,简单的架构即可搞定。适合小型项目。app -> dao -> mysql第 2 阶段:数据访问量大,使用缓存技术来缓解数据库的压力。不同的业务访问不同的数据库。适合中型项目。app -> dao -> cache -> [mysql1, mysql2, mysql3]第 3 阶段:主从读写分离。之前的缓存确实能够缓解数据库的压力,但是写和读都集中在一个数据库上,压力又了。一个数据库负

2020-10-11 19:00:09 360

原创 Dubbo 分布式系统架构入门

Dubbo 概述什么是分布式系统分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。分布式系统(distributed system)是建立在网络之上的软件系统。简单来说:多个(不同职责)人共同来完成一件事。任何一台服务器都无法满足淘宝的双十一的数据吞吐量,一定是很多台服务器公共来完成的。单一应用架构当网站流量很小时,只需要一个应用,将所有的功能部署到一起(所有业务都放在一个 tomcat 里),从而减少部署节点和成本;此时,用于简化增删改查工作量的数据访问框架 (OR

2020-10-10 21:08:53 473

原创 Zookeeper 分布式技术入门

Zookeeper 概述概述Zookeeper 是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的 Apache 项目工作机制从设计模式角度来理解:Zookeeper 是一个基于观察者模式设计的分布式服务管理框架观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新Zookeeper 负责存储和管理重要的数据;然后接受观察者的注册,一旦这些数据的发生变化,Zookeeper 就将负责通知已经注册的那些观察者做出相应的

2020-10-09 17:05:14 212

原创 JSP 报错:ReferenceError: $ is not defined

运行 SpringMVC 项目时,JSP 的代码报错:ReferenceError:$isnotdefinedJSP 相关代码如下:...<scriptsrc="js/jquery-3.3.1.min.js"></script><script>$("#btn").on("click",function(){$.ajax({type:"post",url:...

2020-09-30 22:17:31 869

原创 Java 后台开发面试题分享三

重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?重载:同一个类,同一个方法名,不同的参数列表(参数的个数,类型和顺序不同);构造器可以重载;方法的重载与返回值类型和形参变量名无关,建议返回值类型最好相同。重写:子类重写覆盖从父类继承下来的方法。要求方法名相同、参数列表相同以及返回值类型相同,从 jdk 1.5 开始支持返回子类类型(如果是泛型,父类泛型擦除后与子类相同就可以);方法的访问权限不能变小;子类方法不能抛出比父类更大的异常;两个方法要同为 stat

2020-09-30 22:07:13 169

原创 IDEA 报错:no tests were found 和 UnsupportedOperationException

这里分享一个 IntelliJ IDEA 运行 @Test 测试方法失败的问题以及解决方法。测试类如下:public class DaoTest {​ @Test public void register() { String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); User user = new User("renda", "123456", "123456789

2020-09-29 23:38:35 8908 4

原创 Java 后台开发面试题分享二

String 类为什么是 final 的? 为了效率。若允许被继承,则其高度的被使用率可能会降低程序的性能。 为了安全。JDK 中提供的好多核心类比如 String,类的内部好多方法的实现都不是 java 编程语言本身编写的,好多方法都是调用的操作系统本地的 API,这就是著名的“本地方法调用”,也只有这样才能做事,这种类和操作系统交流频繁,如果这种类可以被继承而且把它的方法重写了,那么就可以往操作系统内部写入一段具有恶意攻击性质的代码。 不希望被修改。这个类就像一个工具一样,类的

2020-09-29 23:20:57 158

空空如也

空空如也

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

TA关注的人

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