自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 完善小视频功能以及即时通讯

1、视频点赞点赞逻辑与圈子点赞逻辑一致,所以可以复用圈子点赞的逻辑,需要注意的是点赞对象是Video,设置publishUserId的逻辑也需要完善下。1.1、dubbo服务修改保存Comment逻辑,在原有逻辑中增加对小视频的支持://com.yile.dubbo.server.api.QuanZiApiImpl /** * 保存Comment * * @return */ private Boolean saveComment(Long

2021-04-17 22:15:26 1561

原创 社交项目(圈子、fastDFS小视频功能实现)

1、圈子点赞实现分析在圈子功能中,对于圈子的点赞、喜欢、评论等均可理解为用户对动态的评论(Comment),在quanzi_comment表中使用commentType进行区分。在具体的实现中,需要将点赞数、某用户是否点赞等数据保存到Reds中,以减轻MongoDB的压力。具体存储结构如下:说明:在Redis的存储结构中,采用的是Hash存储,这样的好处就在于一条动态的点赞、喜欢等数据都会集中的存储到一起,从而减少了Redis中数据条数。2、点赞2.1、定义枚举为了规范使用Comment

2021-04-17 19:46:48 676

原创 社交项目实战第四天(朋友圈功能实现)

1、抽取common工程在项目中一般需要将公用的对象进行抽取放到common工程中,其他的工程依赖此工程即可。下面我们将sso以及server工程中的公用的对象进行抽取。1.1、创建my-yile-common工程 <parent> <artifactId>my-yile</artifactId> <groupId>cn.itcast.yile</groupId> <version

2021-04-14 22:44:53 2698 1

原创 社交项目实战第三天(推荐好友功能实现)

1、首页在用户登录成功后,就会进入首页,首页中有今日佳人、推荐好友等功能。2、系统架构在开发完SSO系统中的登录功能后,接下来就需要实现其他的功能,在整体架构中,完成与APP对接的服务工程叫my-yile-server,真正的核心业务逻辑使用dubbo完成,其工程名叫:my-yile-dubbo.说明:客户端APP发起请求到Nginx,在Nginx中对请求做出判断,将请求转发至sso系统或server系统。sso系统中,将对接第三方平台以及完成数据的缓存、消息发送、用户的注册登录功能。ser

2021-04-12 14:41:06 1024 1

原创 社交项目实战第二天(完善个人信息-aliyun OSS存储-虹软人脸识别)

1、完善个人信息用户在首次登录时需要完善个人信息,包括性别、昵称、生日、城市、头像等。其中,头像数据需要做图片上传,这里采用阿里云的OSS服务作为我们的图片服务器,并且对头像要做人脸识别,非人脸照片不得上传。1.1、图片上传1.1.1、图片存储解决方案实现图片上传服务,需要有存储的支持,那么我们的解决方案将以下几种:直接将图片保存到服务的硬盘优点:开发便捷,成本低缺点:扩容困难使用分布式文件系统进行存储优点:容易实现扩容缺点:开发复杂度稍大(有成熟的产品可以使用,比如:Fas

2021-04-05 21:26:09 787

原创 社交项目实战第一天(短信验证码实现用户登录)

项目实战 《社交项目》1、功能介绍一乐交友是一个陌生人的在线交友平台,在该平台中可以搜索附近的人,查看好友动态,平台还会通过大数据计算进行智能推荐,通过智能推荐可以找到更加匹配的好友,这样才能增进用户对产品的喜爱度。一乐平台还提供了在线即时通讯功能,可以实时的与好友进行沟通,让沟通随时随地的进行。1.1、功能列表功能说明备注注册、登录用户无需单独注册,直接通过手机号登录即可首次登录成功后需要完善个人信息交友主要功能有:测灵魂、桃花传音、搜附近、一乐等圈子

2021-04-04 22:16:59 3210

原创 MybatisPlus

MybatisPlusSSH:Spring+Struts2+HibernateSSM: Spring+springmvc+mybatis1. 概述•MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。•官网:https://mybatis.plus/ 或 https://mp.baomidou.com/依赖<dependency> <groupId>com.baomid

2021-04-02 21:29:50 178

原创 Docker快速入门

DOCKER一,DOCKER介绍1.1 基本概念• Docker 是一个开源的应用容器引擎• 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)• Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上。• 容器是完全使用沙箱机制,相互隔离• 容器性能开销极低。• Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(

2021-03-29 20:51:10 183

原创 RocketMQ集群

RocketMQ1. 集群单机一个broker提供服务(宕机后瘫痪)集群多个broker提供服务(单机宕机后消息无法及时被消费)多个master多个slavemaster到slave消息同步方式为同步(较异步方式性能略低,消息无延迟)master到slave消息同步方式为异步(较同步方式性能略高,数据略有延迟)1.1 集群特征NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。Broker部署相对复杂,Broker分为Master与Sl

2021-03-28 21:07:47 444 1

原创 RocketMQ入门

1 概述MQ(Message Queue)消息队列,是一种用来保存消息数据的队列队列:数据结构的一种,特征为 “先进先出”2.MQ 的作用应用解耦(异步发送消息 )快速应用变更维护流量削锋,比如双十一秒杀商品,如果所有秒杀请求都发送到MySQL数据库,并发太大会导致宕机;因此选择先将秒杀请求做成消息存储到MQ,然后处理订单的服务器B再去消费消息进行订单处理3.MQ优缺点分析优点(作用):应用解耦快速应用变更维护流量削锋缺点:系统可用性降低:使用集群解决系统复

2021-03-27 20:45:38 308

原创 Elasticsearch入门

1-Elasticsearch入门2-初识ElasticSearch2.1-基于数据库查询的问题数据库查询存在的问题:性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低功能弱:对于如下的数据如果以”华为手机“作为条件,查询不出来数据select * from goods where title like '%华为手机%'华为手机需要拆成华为和手机两个词然后分别查询select * from goods where title like '%华为%' or

2021-03-24 21:08:15 393

原创 Springboot

01Spring概述、快速入门SpringBoot配置SpringBoot整合02-SpringBoot概述SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到业务逻辑的代码编写中,从而大大提高开发的效率。约定优于配置:这是一种思想,即Springboot 框架开发人员的一种想法思想,springboot 的开发人员认为很多的配置在框架内部写死,比程序员自己灵活配置更好,基于这种思想,sprin

2021-03-21 20:19:12 353

原创 zookeeper快速入门

Zookeeper操作服务端命令•启动 ZooKeeper 服务: ./zkServer.sh start•查看 ZooKeeper 服务状态: ./zkServer.sh status•停止 ZooKeeper 服务: ./zkServer.sh stop•重启 ZooKeeper 服务: ./zkServer.sh restart两种连接方式回忆连接MySQL的几种方式:MySQL Client、SQLyogJava API: JDBC、MyBatis连接ZooKeepe

2021-03-21 20:11:58 197

原创 Dubbo入门

Dubbo入门分布式系统中的相关概念dubbo快速入门dubbo的高级特性2-分布式系统中的相关概念2.1-互联网项目架构2.1.1 传统项目和互联网项目传统项目:学校的选课系统,图书借阅系统,OA自动化办公系统,HR人力资源管理系统等互联网项目对用户体验要求更高,从以下几个方面来衡量:美观功能速度稳定性两大区别:用户群体:传统项目针对特定群体,比如公司员工、学校师生等;互联网项目针对所有网民用户体验:互联网项目对用户体验要求更高2.1.2 互联网项目架构-特点

2021-03-18 19:45:08 192

原创 Maven高级(分模块开发-聚合-继承-属性-版本-私服)

Maven高级分模块开发与设计聚合,集成,属性版本管理多环境开发配置和跳过测试私服1)分模块开发与设计(重点)1.1)工程模块划分在现实生活中,汽车厂家进行汽车生产时,由于整个生产过程非常复杂和繁琐,工作量非常大,所以车场都会将整个汽车的部件分开生产,最终再将生产好的部件进行组装,形成一台完整的汽车。1.2)好处:降低耦合,方便团队协作拆分新建模块:ssm_pojo拷贝原始项目中对应的相关内容到ssm_pojo模块中:实体类(User)1.3)ssm_dao拆分

2021-03-17 20:39:58 412

原创 SSM整合(MyBatis-Spring-SpringMVC)...校验技术

实用技术-校验框架SSM整合-视频纯注解开发SSM1 校验框架1.1 入门1.1.1 表单校验的重要性表单校验保障了数据有效性、安全性数据可以随意输入,导致错误的结果。1.1.2 表单校验分类按校验位置分类:客户端校验:浏览器,手机APP服务端校验:后端服务器代码校验按校验内容分类:格式校验:比如年龄是否为负数,邮箱是否符合规则逻辑校验:比如用户名在当前项目中是否已注册(需要查询数据库或者业务校验)1.1.3 格式校验规则以下几种全部属于格式校验:长度.

2021-03-16 21:21:39 707

原创 SpringMVC-异步调用-异常处理-文件上传-Restful工具

异步调用异步请求拦截器7异常处理实用技术1 异步调用(重点)1.1 发送异步请求(回顾)使用jQuery的ajax方法发送异步请求:<a href="javascript:void(0);" id="testAjax">访问controller</a><script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></s.

2021-03-15 16:54:53 244

原创 SpringMVC - 入门

1 SpringMVC 概述1.1 三层架构表现层:负责数据展示业务层:负责业务处理数据层:负责从数据库中获取数据1.2 MVC 简介MVC(Model View Controller):一种用于设计Web应用程序表现层的模式。Model(模型):数据模型,用于封装数据View(视图):页面视图,用于展示数据(jsp, html)Controller(控制器):处理用户交互的调度器,用于根据用户需求处理程序逻辑ServletSpringMVC1.3

2021-03-14 19:38:57 162 3

原创 spring-事务

Spring 事务1)事务回顾1.1)什么是事务事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。1.2)事务的作用事务特征(ACID)原子性(Atomicity)指事务是一个不可分割的整体,其中的操作要么全执行或全不执行一致性(Consistency)事务前后数据的完整性必须保持一致。比如:张三向李四转100元,转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100元,李四账户没有增加100元这就出现了数据错误,就没有达到一致性。隔离性(Is

2021-03-13 20:00:16 162

原创 Spring-AOP

AOPAOP简介*AOP入门案例AOP配置(XML)AOP配置(注解)综合案例AOP底层原理0)回顾Spring体系结构Spring的两个核心:IoC和AOP1)AOP简介1.1)OOP开发思路OOP规定程序开发以类为模型,一切围绕对象进行,OOP中完成某个任务首先构建模型,基于模型展开业务1.2)AOP开发思想解决的问题:将共性功能提取出去1.3)AOP概念AOP(Aspect Oriented Programing)面向切面编程,是一种编程范式,隶属于软件工程范畴

2021-03-10 19:59:55 210

原创 Spring注解整合MyBatis和Junit

注解开发1)注解驱动的意义1.1)什么是注解驱动-视频01使用注解的形式替代xml配置,将繁杂的配置文件从工程中彻底消除掉,简化书写,提高开发效率1.2)注解驱动的弊端为了达成注解驱动的目的,可能会将原先很简单的书写,变的更加复杂XML中配置第三方开发的资源是很方便的,但使用注解驱动无法在第三方开发的资源中进行编辑,因此会增加一部分的代码量2)常用注解(重点)2.1)启动注解功能启动注解扫描,加载类中配置的注解项<!--注解总开关--><context

2021-03-08 20:24:42 243 1

原创 Spring - 入门

Spring1)Spring简介1.1)什么是框架源自于建筑学,隶属土木工程,后发展到软件工程领域软件工程中框架的特点:经过验证具有一定功能半成品1.2)框架的优势提高开发效率增强可重用性提供编写规范节约维护成本解耦底层实现原理既然软件工程中的框架有这么多的优势,那广大软件工程师就就很有必要去学习和使用框架。1.3)Spring是什么Spring是分层的JavaSE/EE应用full-stack轻量级开源框架。分层:针对三层架构设计: Con

2021-03-08 20:19:12 344 2

原创 权限系统设计--zTree的分析简化使用

权限系统设计与开发什么是权限系统?权限系统是一种设定用户与可操作模块之间关系的系统。通过设定用户与可操作的模块之间的关系,控制用户在可指定范围内进行业务执行基于用户的权限控制(UBAC:User-BasedAccessControl)基于角色的权限控制(RBAC:role-BasedAccessControl)角色的权限控制RBAC树形控件结构分析(1)树形结构如下图所示:对应的实现技术有:dTreetdTreezTree我们主要来看关于zTree的相关操作.我们主要是针对

2021-03-05 23:22:57 209

原创 Apache的POI技术--Excel报表

1. ​报表报表:简单的说,报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表 = 多样的格式 + 动态的数据”。报表的种类有很多:Excel报表,PDF报表,网页报表等,他们各有优缺点我主要来用Excel报表。对于Excel报表的技术实现上也有很多种选择:JXL:支持xls文件操作POI:支持xls和xlsx文件操作我们只要来讲POI技术,要使用POI就要导入其坐标,如下<!--POI--><dependency> <groupI

2021-03-05 17:11:29 440

原创 文件上传

文件上传文件上传功能需要前台功能和后台功能共同配合完成前台:文件上传的三要素页面提供文件上传的表单元素form表单enctype属性的值为multipart/form-data表单的提交方式必须是POST,get方式无法提交大量的数据后台:可以使用的技术有很多,在此处我们使用apache提供的commons-fileupload组件完成文件上次操作,后台的操作步骤如下确认请求操作是否支持文件上传创建磁盘工厂对象,用于将页面上传的文件保存到磁盘中获取servet文件上传核心对象读

2021-03-05 01:12:57 93 1

原创 redis常用命令集

redis常用命令集1)Stringset(key, value):给数据库中名称为key的string赋予值valueget(key):返回数据库中名称为key的string的valuegetset(key, value):给名称为key的string赋予上一次的valuemget(key1, key2,…, key N):返回库中多个string的valuesetnx(key, value):添加string,名称为key,值为value,如果key存在添加不成功。setex(key, t

2021-02-28 19:39:18 140

原创 Maven入门

Maven基础1.Maven简介1.1 Maven是什么在学习Maven之前,我们先来看一下我们现在做的项目都有哪些问题。假设你现在做了一个crm的系统,项目中肯定要用到一些jar包,比如说mybatis,log4j,JUnit等,除了这些之外,你有可能用到你的同事开发的其他的东西,比如说别人做了一个财务模块或做了一个结算的模块,你在这里边有可能要用到这些东西。那么带了的问题是:假如有一天你们的项目中mybatis进行了一个升级,但是它内部使用的JUnit没有升级,你升级以

2021-02-27 19:43:48 174

原创 Vue在综合案例中使用

1、Vue 高级使用1.1、自定义组件学完了 Element 组件后,我们会发现组件其实就是自定义的标签。例如<el-button>就是对<button>的封装本质上,组件是带有一个名字且可复用的 Vue 实例,我们完全可以自己定义定义格式Vue.component(组件名称, { props:组件的属性, data: 组件的数据函数, template: 组件解析的标签模板})代码实现<!DOCTYPE html><htm

2021-02-27 19:31:44 281

原创 Vue快速入门和Element了解

1、Vue 快速入门1.1、Vue的介绍Vue是一套构建用户界面的渐进式前端框架。只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合。通过尽可能简单的API来实现响应数据的绑定和组合的视图组件。特点易用:在有HTMLCSSJavaScript的基础上,快速上手。灵活:简单小巧的核心,渐进式技术栈,足以应付任何规模的应用。性能:20kbmin+gzip运行大小、超快虚拟DOM、最省心的优化。1.2、Vue的快速入门开发步骤下载和引入vue.js文件。编写入门

2021-02-24 19:41:58 429

原创 Ajax快速入门

1、Ajax快速入门1.1、AJAX介绍AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。本身不是一种新技术,而是多个技术综合。用于快速创建动态网页的技术。一般的网页如果需要更新内容,必需重新加载个页面。而 AJAX 通过浏览器与服务器进行少量数据交换,就可以使网页实现异步更新。也就是在不重新加载整个页 面的情况下,对网页的部分内容进行局部更新。总结:异步的处理网络请求的工具,可以实现局部刷新​

2021-02-22 20:19:33 909

原创 JQuery快速入门

1.1、JQuery介绍jQuery 是一个 JavaScript 库。所谓的库,就是一个 JS 文件,里面封装了很多预定义的函数,比如获取元素,执行隐藏、移动等,目的就 是在使用时直接调用,不需要再重复定义,这样就可以极大地简化了 JavaScript 编程。jQuery 官网:https://www.jquery.com1.2、JQuery快速入门开发思路编写 HTML 文档。引入 jQuery 文件。使用 jQuery 获取元素。使用浏览器测试。代码实现<

2021-02-21 19:51:39 351

原创 JavaScript -面向对象 内置对象 JavaScript BOM

1、JavaScript面向对象1.1、面向对象介绍​ 在 Java 中我们学习过面向对象,核心思想是万物皆对象。在 JavaScript 中同样也有面向对象。思想类似。1.2、类的定义和使用结构说明代码实现<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=devi

2021-02-20 18:25:51 162

原创 JavaScript - 快速入门 基本语法 DOM 事件 CRUD

1、JavaScript快速入门1.1、JavaScript介绍JavaScript 是一种客户端脚本语言。运行在客户端浏览器中,每一个浏览器都具备解析 JavaScript 的引擎。脚本语言:不需要编译,就可以被浏览器直接解析执行了。核心功能就是增强用户和 HTML 页面的交互过程,让页面有一些动态效果。以此来增强用户的体验!1995 年,NetScape (网景)公司,开发的一门客户端脚本语言:LiveScript。后来,请来 SUN 公司的专家来 进行修改,后命名为:Jav

2021-02-20 18:15:26 191

原创 mybatis - 注解开发 构建SQL

一.Mybatis注解开发单表操作1.1 MyBatis的常用注解这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。@Insert:实现新增@Update:实现更新@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可以与@Result 一起使用,封装多个结果集@One:实现一对一结果集封装@Many:实现一对多结果集封装

2021-02-20 09:10:18 1661

原创 mybatis - 接口代理实现dao层 动态sql 分页和多表操作

一.接口代理方式实现Dao1.1 代理开发方式介绍​ 采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是我们后面进入企业的主流。Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis 框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。Mapper 接口开发需要遵循以下规范:1) Mapper.xml文件中的namespace与mapper接口的全限定名相同2) Mapper接口方法名和Mapper

2021-02-03 16:51:02 526 1

原创 mybatis快速入门 相关api 映射配置文件 核心配置文件 传统实现

一.Mybatis快速入门1.1 框架介绍框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!框架:大工具,我们利用工具,可以快速开发项目 (mybatis也是一个jar包,不过提供的功能更加多)jar包:小工具生活中的例子,比如盖房子张三想盖红色的房子,他需要先给架构搭起来,然后再给房子图上红色李四想盖蓝色的房子,他也需要先给架构搭起来,然后再给房子图上蓝色比如很多人都需要盖房子,那么肯定会有很多重复性的工作,比如说基础架构这时候就有公司出了一

2021-02-02 21:17:40 249

原创 JDBC-02- 自定义连接池 归还连接(继承方式 装饰设计模式 适配器设计模式 动态代理模式) c3p0和Druid的使用

一、数据库连接池1.数据库连接池的概念数据库连接背景数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。这项技术能明显提高对数据库操作的性能。数据库连接池原理2.自定义连接池java.sql.Da

2021-01-30 17:43:41 279

原创 JDBC-01- 功能类(DriverManager Connection Statement ResultSet) CRUD 工具类抽取 注入攻击解决 事务相关

一、JDBC快速入门1.jdbc的概念JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。2.jdbc的本质其实就是java官方提供的一套规范(接口)。用于帮助开发人员快速实现不同关系型数据库的连接!3.jdbc的快速入门程序导入jar包注册驱动Class.forName("com.mysql.cj.jdbc.Drive

2021-01-30 16:53:27 114

原创 事务 (脏读 不可重复读 幻读)

01_事务_事务的数据准备-- 创建db8数据库CREATE DATABASE db8;-- 使用db8数据库USE db8;-- 创建账户表CREATE TABLE account( id INT PRIMARY KEY AUTO_INCREMENT, -- 账户id NAME VARCHAR(20), -- 账户名称 money DOUBLE -- 账户余额);-- 添加数据INSERT INTO account VALUES (NULL,'张三',1000)...

2021-01-26 20:58:05 120

原创 触发器 (INSERT UPDATE DELETE)

01_触发器_触发器的数据准备-- 创建db7数据库CREATE DATABASE db7;-- 使用db7数据库USE db7;-- 创建账户表accountCREATE TABLE account( id INT PRIMARY KEY AUTO_INCREMENT, -- 账户id NAME VARCHAR(20), -- 姓名 money DOUBLE -- 余额);-- 添加数据INSERT INTO account VALUES (NULL,'张三',100

2021-01-26 20:52:13 3744 1

空空如也

空空如也

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

TA关注的人

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