自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis Plus

前言在java中访问数据库,使用jdbc项目中直接使用jdbc,访问数据库。创建Connection,ResultSet。把jdbc的操作进行了封装。创建了很多工具类,比如DBUtil。持久层的框架hibernate:全自动的ORM框架。实现了java object – 表的映射。可以通过java对象的方法,操作表中的数据。开发人员可以不了解或少了解sql语言。可以使用hibernate访问不同的数据库,不需要改变代码。通用不同的数据库。jpa规范:定义了访问数据库的各种操作。定义了一致的方

2021-08-14 08:47:26 347

转载 RabbitMQ-8-其他知识点

幂等性概念用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误 立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等消息重复消费消费者在消费 MQ 中的消息时,MQ 已把消

2021-08-07 14:52:50 227

原创 RabbitMQ-7-发布确认高级

发布确认高级在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?发布确认 springboot 版本确认机制方案代码架构图配置文件在配置文件当中需要添加spring.rabbitmq.publisher-confirm-type=cor

2021-08-07 14:50:58 240

原创 RabbitMQ-6-队列

死信队列概念先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理 解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有 后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息 消费发生异常时,将消息投入死

2021-08-07 14:47:09 440

原创 RabbitMQ-5-交换机

Exchanges概念RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产 者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来 自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消 息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。Exchanges 的类型总共有以下类型:直接(di

2021-08-07 14:42:01 181

原创 RabbitMQ-4-发布确认

发布确认发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的 消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队 列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传 给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以

2021-08-07 14:39:43 312

原创 RabbitMQ-3-Work Queues

工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。 相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进 程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。轮训分发消息抽取工具类package com.qin.rabbitmq.utils;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import

2021-08-07 14:38:55 128

转载 RabbitMQ-2-helloword

Hello World在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代 表使用者保留的消息缓冲区依赖<!--指定 jdk 编译版本--><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</art

2021-08-07 14:31:55 90

原创 RabbitMQ-1-消息队列

MQ概念什么是MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务。为什么要用 MQ流量削峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正 常时段我们下单一秒后就能返回结果。但

2021-08-07 14:30:06 2845

原创 JUC多线程及高并发

请你谈谈对Volatile的理解volatile是Java虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排(保证有序性)JMM内存模型之可见性JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定线程解锁前,必须把共享变量的值刷新回主内存线程加锁前,必须读取主内存的最新值到自己的工作内

2021-07-25 10:36:34 390 4

原创 Linux-2-基本命令

目录管理绝对路径/相对路径Linux的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。在开始本教程前我们需要先知道什么是绝对路径与相对路径。绝对路径:路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man 这就是相对路径的写法处理目录的常用命令ls: 列出

2021-07-14 09:57:57 245 2

转载 Linux-1-概述

入门概述我们为什么要学习Linuxlinux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情。用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中

2021-07-14 09:53:15 284

原创 Nginx快速入门

Nginx 简介Nginx 概述Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能 力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx作为web服务器Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Ngi

2021-07-12 12:27:06 148 1

原创 Git快速上手

Git 概述Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种 项目。Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作 流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。何为版本控制版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本, 方便版本切换。为什么需要版

2021-07-07 14:53:24 128

原创 8 原理解析

Profile功能为了方便多环境适配,springboot简化了profile功能。application-profile功能默认配置文件 application.yaml;任何时候都会加载指定环境配置文件 application-{env}.yaml激活指定环境配置文件激活命令行激活:java -jar xxx.jar –spring.profiles.active=prod --person.name=haha修改配置文件的任意值,命令行优先默认配置与

2021-07-04 15:36:39 110

原创 7 指标监控

SpringBoot Actuator简介未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</ar

2021-07-04 15:35:29 138

原创 6 单元测试

JUnit5 的变化Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。JUnit Ju

2021-07-04 15:33:46 128 2

原创 5 数据访问

数据访问SQL数据源的自动配置-HikariDataSource导入JDBC场景<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>数据库版本和驱动版本对应默认版本:<mysql.version>8

2021-07-04 15:30:33 103

原创 4 Web开发

Web开发SpringMVC自动配置概览SpringBoot自动配置了SpringMVC(大多场景我们都无需自定义配置)内容协商试图解析器和BeanName视图解析器静态资源(包括webjars)自动注册Converter,GenericConverter,Formatter支持HttpMessageConverters自动注册 MessageCodesResolver (国际化用)静态index.html 页支持自定义 Favicon自动使用 ConfigurableWebBindi

2021-06-30 16:27:12 222

原创 3 配置文件

配置文件文件类型propertiesyaml简介YAML是“YML Ain‘t Markup Language”(YAML不是一种标记语言)的递归缩写。YAML的意思其实是:“Yet Another Markup Language”(更是一种标记语言)非常适合用来做以数据为中心的配置文件基本语法key: value;kv之间有空格大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许使用空格所进的空格数不重要,只要相同层级的元素左对齐即可#表示注释单引号 与 双引号 表示字

2021-06-30 15:49:22 86

原创 2 Springboot入门

一个SpringBoot程序系统要求Java 8以上Maven3.3以上idea2019.1.2以上maven设置<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>

2021-06-19 15:15:36 79

原创 1 简介

SpringBoot简介SpringBoot是整合Spring技术栈的一站式框架SpringBoot是简化Spring技术栈的快速开发脚手架SpringBoot能快速创建出生产级别的Spring应用优点创建独立Spring应用内嵌web服务器自动starter依赖,简化构建配置,防止各jar包冲突自动配置Spring以及第三方功能提供生产级别的监控、健康检查及外部化配置无代码生成、无需编写XML缺点人称版本帝,迭代快,需要时刻关注变化封装太深,内部原理复杂,不容易精通微服

2021-06-19 15:14:39 108

原创 2 ssm项目整合

SSM项目整合项目搭建导入依赖<!-- 依赖:junit,数据库驱动,连接池,servlet,jsp,mybatis,mybatis-spring,spring--><dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version

2021-06-18 16:05:11 143

原创 1 初始springMVC

SpeingMVC流程配置DispatcherServlet(前端控制器)让DispatcherServlte绑定springmvc-servlet.xmlspringmvc-servlet.xml 里创建处理器映射器,去映射类springmvc-servlet.xml 里创建处理器适配器,去适配映射的Contorller类Contorller处理业务并返回ModelAndViewspringmvc-servlet.xml 里创建视图解析器处理返回的ModelAndView选择返回视图

2021-06-13 19:52:59 97 1

原创 2 Spring

一个Spring程序导入Spring依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version></dependency>编写实体类package com.qin.pojo;public

2021-06-12 16:37:58 1184 1

原创 1 spring简介

简介2002年首次推出了spring框架的雏形:interface21框架Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版Rod Johnson,Spring Framework创始人,著名作者,是悉尼大学的博士,专业是音乐学spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架下载地址:http://repo.spring.io/release/org/springframework/s

2021-06-12 16:29:08 110

转载 8 缓存

简介什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。什么样的数据能使用缓存?经常查询并且不经常改变的数据。【可以使用缓存】Mybatis缓存MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的

2021-06-12 16:27:04 386

原创 7 动态SQL

动态SQL什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句环境搭建创建数据库CREATE TABLE `blog` ( `id` varchar(50) NOT NULL COMMENT '博客id', `title` varchar(100) NOT NULL COMMENT '博客标题', `author` varchar(30) NOT NULL COMMENT '博客作者', `create_time` datetime NOT NULL COMMENT

2021-06-12 16:24:36 74 1

原创 6 复杂查询

多对一处理环境搭建创建数据库CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师'); CREATE TABLE `student` ( `id` INT(10)

2021-06-12 16:23:56 93

原创 5 Mybatis应用

ResultMap结果映射ResultMap 元素是MyBatis中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。public class User { private int id; private String name; private String

2021-06-12 16:23:27 83

原创 4 配置解析

核心配置文件mybatis-config.xmlMyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdPro

2021-06-12 16:22:15 1143 1

原创 3 CRUD

namespacenamespace中的包名要和Dao/mapper接口的包名一致crud选择,查询语句id:对应namespace中的方法名;resultType:Sql语句执行的返回值parameterType:参数类型编写接口package com.qin.dao;import com.qin.pojo.User;import java.util.List;public interface UserMapper { //查询全部用户 List<Us

2021-06-12 08:49:59 147

原创 注解和反射

注解Annotation是从JDK5.0开始引入的新技术Annotation的作用:不是程序本身,可以对程序作出解释可以被其他程序读取Annotation的格式:注解是以 @注释名 在代码中存在的,还可以添加一些参数值。Annotation在哪里使用:可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问内置注解@Override此注释只适用于修辞方法,表示一个方法声明

2021-06-07 08:45:13 140

原创 2 第一个Mybatis程序

搭建环境搭建数据库CREATE DATABASE mybatis;USE mybatis;CREATE TABLE `user`( `id` INT AUTO_INCREMENT NOT NULL, `name` VARCHAR(20), `pwd` VARCHAR(50), PRIMARY KEY(id))ENGINE=INNODB DEFAULT CHARSET=utf8;新建项目使用idea创建一个普通的maven项目导入依赖<d

2021-06-04 18:28:45 123 1

转载 1 Mybatis简介

什么是MyBatisMyBatis是一款有些的持久层框架它支持定制化SQL、存储过程以及高级映射MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。获得Mybatismaven仓库:<!-- https://mvnrepository.com/artifact/org.mybatis/myb

2021-06-04 18:26:56 130

原创 13 邮件发送

原理张三发送邮件邮件由基站转发到张三所用邮箱(网易邮箱)的服务器里网易服务器存储邮件并发送到基站基站通过接收人的标识发送给指定服务器(QQ邮箱)接收服务器收到邮件存放到服务器了,提醒李四收到邮件李四打开邮箱即可查看[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gEb3WyC9-1622783903679)(邮件1.png)]普通邮件import com.sun.mail.util.MailSSLSocketFactory;

2021-06-04 13:18:43 117

原创 12 文件上传

注意事项为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如WEB-INF目录下为防止文件覆盖,要为上传文件产生一个唯一的文件名要限制上传文件的最大值可以限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法准备工作导入jar包commons-iocommons-fileupload编写前端<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><h

2021-06-04 13:18:07 93

原创 11 Smbms

项目搭建准备工作1、搭建一个maven web项目2、配置tomcat3、导入项目中会使用到的jar包jsp,servlet,mysql驱动4、编写实体类5、创建项目包结构6、编写实体类​ ORM映射:表-类 映射7、编写基础公共类数据库配置文件drive=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&

2021-06-04 09:15:50 116

原创 10 JDBC

JDBC的使用1、引入驱动<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version></dependency>2、连接MySQL3、编写代码package com.qin.pojo;import java.sql.*;p

2021-06-04 09:13:30 87

原创 10 JDBC

数据库驱动sun公司为了简化开发人员的操作,提供了一个(java操作数据库的规范)规范,JDBC这些规范的实现由厂商去做第一个jdbc程序1、下载mysql-connector-java2、导入数据库驱动新建lib将mysql-connector-java.jar导入lib中将lib目录 add as library3、测试代码package com.sql;import java.sql.*;// 第一个JDBC程序public class JdbcDemo1 {

2021-06-04 09:12:05 76

空空如也

空空如也

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

TA关注的人

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