- 博客(80)
- 收藏
- 关注
原创 SpringBoot整合Redis
什么是Redis?Redis 是由意大利人 Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis 全称为:Remote Dictionary Server(远程数据服务), 该软件使用 C 语言编写,典型的 NoSQL 数据库服务器,== Redis 是一个 key-value 存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。Redis 本质上是一个 Key-Value 类型的内存数据库=
2021-05-25 14:20:02
670
3
原创 git推送本地项目到远程仓库
1、使用git进入项目的文件夹下,初始化本地仓库2、登录远程仓库,创建一个代码仓库3、把本地仓库的代码提交到暂存区中4、起一个地址的别名git remote add ha https://**/dian/haha.git 表示起别名git remote -v 查看起的别名5、使用git push ha master推送分支,发现提示错误出现错误的主要原因是git中的README.md文件不在本地代码目录中,使用git pull --rebase origin master命令进行代码合
2021-04-23 11:32:17
981
原创 git分支
什么是分支?在版本控制过程中,使用多条线同时推进多个任务分支的好处同时进行推动多个功能的开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。分支的常用命令使用git branch -v命令查看分支使用git branch 分支名称命令创建新的分支使用git checkout 分支名称命令切换分支合并分支:切换到接受修改的分支上(被合并,增加新内容)上执行git merge 被合并的分支名称命令合并分支解决合并
2021-04-21 13:17:34
557
原创 SpringBoot整合Mybatis-Plus
简介MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件
2021-04-19 13:35:04
215
原创 git切换版本
使用git log 或 git log --pretty=oneline查看可切换的版本信息使用 git reflog 可以查看到某个版本需要移动多少索引其中图中的 HEAD 是指针,指向的是当前的版本1、使用 git reset --hard 需要回退版本的key 可以回退指定的版本2、使用 git reset --hard HEAD^ 来回退版本,注意:一个^代表回退一个版本, ^也只能用于回退版本,不能前进版本。 也可以使用 git reset --hard HEAD~3 来代表回退的版
2021-04-18 22:48:52
4175
原创 git添加提交以及查看状态
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。红色的gg.txt文件表示该文件不在本地的暂存区中,可以使用 git add 文件名 的方式进行添加到暂存区添加之后肯定是有删除的,可以使用git rm --cached 文件名的方式从暂存区中删除使用vim 文件名进入编译模式,编辑好修改内容,按Esc按钮然后输入 :wq 保存并退出。然后使用 git commit 提交,告知红色的内容,意思是,这个文件修改过,但没有在暂存区里。所以不能提交。把这个文件提交进暂存区然后
2021-04-16 14:13:41
793
原创 SpringBoot异步任务和定时任务
异步任务异步任务主要用于处理处理时间长并且不需要返回结果的一些内容,比如,微信小程序中,有一个方法中间既有业务处理的一些逻辑代码又有订阅消息通知,如果这个订阅消息处理的时间是3s,那这个接口就需要等待3s才能给用户展示结果。我们不想让用户等待那么长时间,就可以使用异步任务。1、在启动类上标注 @EnableAsync 表示开启基于注解的异步任务@SpringBootApplication@EnableAsync //开启异步任务public class SpringBootWebRestfulc
2021-04-01 12:34:09
277
原创 SpringBoot使用JavaMailSender发送邮件
1、首先需要导入pom依赖 <!-- 引入emil模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>2、配置ap
2021-03-22 00:07:48
391
原创 RabbitMQ入门
简介:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。核心概念Message:消息,消息是不具名的,它是由消息头和消息体组成。消息体是不透明的,而消息体则由一系列的可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需
2021-03-19 11:20:06
111
原创 Spring缓存抽象
1、简介:Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用Cache(JSR-107)注解简化我们开发;Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache,ConcurrentMapCache等;每次调用需要缓存功能的方法时,
2021-03-18 17:16:29
171
2
原创 @CurrentUser获取当前登录用户信息
1、首先需要用到token,在用户表中存放一个token,每当用户登录的时候就用UUID生成一个token替换之前的token,并保存(修改)到缓存中。2、创建@CurrentUser注解(如上面的代码)。3、写一个组件,用来存放和取出token4、配置PublicInterface(用来标注可以不使用token)5、配置一个拦截器,判断是否存在token和token是否有效6、配置解析器,用来获取当前登录用户的信息...
2021-03-17 14:48:39
4556
原创 SpringBoot整合Druid配置数据源监控
1、pom.xml配置文件引入依赖 <!-- 引入druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </de
2021-02-26 11:48:59
186
原创 SpringBoot+Thymeleaf实现国际化
前言SpringBoot自动配置好了管理国际化资源文件的组件@ConfigurationProperties(prefix = "spring.messages")public class MessageSourceAutoConfiguration {/**Comma-separated list of basenames, each following the ResourceBundle convention. Essentially a fully-qualified classpath
2021-02-23 10:09:39
1085
1
原创 Java集合
Java集合类存放于java.util包中,主要分为三种:Set、List、Map。其中Collection是集合List和Set基本接口。(关系如下图)ListList是有序的集合,List一共有三个实现类。分别是:ArrayList、Vector、LinkedList。1、ArrayList(数组)ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复
2021-01-09 15:37:53
111
原创 Java返回统一结果集和异常处理
前言随着前后端分离的潮流,现在需要考虑的是如果和前端有个明确的规定,比如:我添加了一条数据,后端设计的时候是void类型的,没有返回值,那前端怎么判断这个添加的操作是否成功呢?这个时候如果有一个约定,不管是不是void类型,我们把结果用结果集包起来,通过code的形式告知前端,这样前端不就可以判断是否操作成功了吗?返回统一结果集的例子1.首先创建一个Maven工程 <!-- 导入spring boot支持 --> <dependency>
2020-11-13 00:35:31
1158
原创 Linux系统部署Web项目
前言学习了那么久的Java现在就让我们来部署Java Web项目。使用的连接工具使用的是:FinalShell,项目类型是Maven项目。具体步骤1.首先,用idea创建一个SpringBoot工程。配置好视图。然后点击右边的Maven–>选择需要上传的项目下的Lifecycle–>install。结果如下图(生成一个 .jar文件)2.这样项目就打包完成了,然后打开FinalShell。选择上传打包好的jar文件3.文件上传好之后输入命令 ls 查看上传的文件4.之后输入命令
2020-10-28 17:21:00
1464
原创 redis持久化
持久化简介 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称之为持久化。为什么要持久化 防止数据的意外丢失,确保数据安全性。持久化过程保存什么?RDB:将当前数据状态进行保存,以快照的形式存储数据结果,存储格式简单,关注点在数据(存储形式:二进制)AOF:将数据的操作过程进行保存日志的形式,存储操作过程,存储格式复杂,关注点在数据的操作过程(存储形式:日志)RDB启动方式 命令执行谁:redis操作者(用户)什么时间:随时进行干什么事情:保存数据
2020-10-24 00:06:19
88
原创 Hystrix服务降级
前言分布式系统面临的问题:复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用影响时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能
2020-10-15 16:59:52
286
原创 Java8中的Stream API
前言ava8中有二个最为重要的改变。第一个是Lambda 表达式,另一个则是Strean API(Java.util.stream.*)Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似与使用SQL执行的数据库查询。也可以使用Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。什么是Stream(流)?是数据的渠
2020-10-14 14:34:16
143
原创 Java8新特性简介
前言Java8即JDK版本1.8,Java8与Java8之前的JDK版本的内容相差还是很大的,其中最主要的因该就是Lambda 表达式和 Stream API了。Java8的优点:1.速度更快2.代码更少(增加了新的语法lambda表达式)3.强大的Stream API4.便于并行5.最大化减少空指针异常Optional其中最为核心的就是Lambda表达式和Stream API为什么使用Lambda表达式?Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码
2020-10-11 15:42:59
191
原创 OpenFeign服务调用
前言Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。只需要创建一个接口并在接口上添加注解即可。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HTTPMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。Feign 能干什么?Feign旨在使编写Java Htt
2020-09-28 14:16:01
308
原创 Ribbon负载均衡
前言springCloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。简单的说,Rabbon是Netflix发布的开源项目,主要功能提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如:简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。1.LB负载均
2020-09-27 19:13:08
175
原创 Consul注册与发现
前言Consul 是一套开源的分布式服务发现和配置管理系统,由hashiCorp公司用Go语言开发提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。它具有很多优点:包括:基于raft协议,比较简洁;支持健康检查,同时支持HTTP和DNS协议支持跨数据中心的WAN集群,提供图形界面,跨平台,支持Linux、Mac、Windows如果我们想要使用Consul就必须要到官网上去
2020-09-26 13:46:29
269
原创 python模块
1.导入模块的五种方式# 模块:在python里一个py文件,就可以理解为是模块# 不是所有的py文件都能作为一个模块导入# 如果想让一个py文件能被导入,模块的名字必须要遵守命名规则# python为了方便我们开发,提供了很多内置模块# 1.使用import 模块名 直接导入一个模块import time# 2.from 模块名 import 函数名,导入一个模块里的方法或变量from random import randint# 3.from 模块名 import * 导入这个模
2020-09-25 18:06:54
128
原创 SpringBoot开启热部署
1,项目中添加热部署的依赖 <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <option
2020-09-25 17:56:19
102
原创 Zookeeper注册与发现
前言ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。首先如果想使用它的话,需要去官网下载自己使用的对应版本。下载完成之后,解压:复制一份zookeeper-3.4.14\conf下的zoo_sample.cfg改成zoo.cfg,然后修改第十二行的路径改成本地路径。最后在bin中开启zkServer.c
2020-09-25 17:46:28
280
原创 Eureka注册与发现
前言本章整理了springCloud中的其中一个注册与发现微服务框架。至于什么是微服务?现在来说就大致与:把一个整体可以分成许多个小的个体,而这些小的个体可以独立部署,升级、和维护。本章的主要内容就是把Eureka集成进springBoot项目中,实现一个简单的初入分布式体验。首先我,我们来说一下Eureka服务注册与发现的几个常见问题1.什么是服务治理?答:SpringCloud 封装了NETFlix 公司开发的EurKa模块来实现服务治理在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关
2020-09-25 15:33:50
197
原创 python函数
1.函数的声明# 一些准备好的代码,在需要的时候可以调用# 在python中,使用def关键字来声明函数# 语法:# def 函数名(参数):# 具体内容2.函数的调用# 函数的调用def aa(): print("这是一个函数哦") print("里面有很多数据呢")n = int(input("请输入年龄"))if 0 <= n <= 5: for w in range(3): aa()elif 5 < n &
2020-09-16 20:09:43
125
2
原创 java提取字符串中需要的数据
最近做了个项目需要从一段字符串中提取出关键的信息,并拿出来使用。相当于张三进了一个无人超市对机器人说:帮我拿一瓶可口可乐,谢谢!!! 这句话有很多种说法,又比如:给我来一瓶可乐,但不管张三怎么说可乐这个商品是不会变得,如果变了,就又变成买别的东西了。所以我们要抓住可乐这个重要的元素,把这个元素提取出来,让机器人去拿和计算价格。下面就开始做正事了1.首先要先创建一个集合,把商品放入集合里面,考虑到商品名称是不会重复的,所以使用set集合在这里插入代码片...
2020-09-11 18:33:00
2201
原创 python列表、元组、字典、集合的常用操作
1.列表的常用操作# 添加zi = ['a', 'b', 'c']print(zi)# 在列表的最后添加数据zi.append("d")print(zi)# 在列表的指定下标添加数据zi.insert(1, 'b')print(zi)mu = ['e', 'f']# 拼接二个列表zi.extend(mu)print(zi)# 删除name = ['张三', '李四', '王二', '小强']# 删除并返回这个数据x = name.pop()# 根据下标删除# nam
2020-09-11 12:56:18
250
原创 python列表的几种排序方式
1.冒泡排序冒泡排序的思想:让一个数和它相邻的下一个数作比较运算如果前一个数字大于后一个数字,则交换二个数据的位置1.使用while循环num = [2, 4, 9, 2, 5, 12, 8]i = 0while i < len(num) - 1: i += 1 n = 0 while n < len(num) - 1: if num[n] > num[n + 1]: num[n], num[n + 1] = n
2020-09-08 17:00:09
4198
原创 python字符串常见的操作
1.字符串查找常用方法a = "asdfghjklk"print(a.find("v"))print(a.rindex("k"))# find和index都是返回规定字符第一次出现的位置索引# 区别:1.find如果没有规定字符返回的结果是:-1# 2.index如果没有规定字符返回的结果会报错# rfind和rindex返回的是最后一次出现的位置索引2.字符串判断常用方法# startswith判断是否已规定字符开头,是返回True,不是返回Falseprint('hel
2020-09-07 17:17:44
134
原创 Python入门
数据类型在python里数据都有对应的类型# 数据类型的概念# 在python里数据都有对应的类型# 数字类型:整数int 浮点型float 复数complexprint(33) # int整数类型print(3.14) # float类型print((-1) ** 0.7) # complex类型# 字符串类型:# Python里的字符串要求使用一对单引号或双引号包裹print("你好 世界!")print("43")# 布尔类型(bool)# 返回二个值,对和错p
2020-09-07 14:31:18
85
原创 微信小程序把日期格式化
最近做了一个微信小程序的项目,关于后端给我传递日期的时候,我拿到的是一串数字如:createDate: 1552117531000 ,这是一个列的创建时间,现在却变成了一串数字,这是怎么回事?其实这串数字是1970年到现在的一个毫秒数,那怎么把这个毫秒数格式化成为日期呢?接下来就是我们该做的事情了。1.先看一下没有格式化之前的写法js tapPaying: function (options) { //封装过的访问路径 orderApi.userOrder({ status: "wait
2020-09-04 15:59:01
3033
原创 微信小程序触底加载
现在来看小程序还没有使用pc端的那种分页格式,现在微信小程序上分页一般使用触底加载来实现分页的,下面就来分享一个触底加载的实现方式。1.首先要从后端也就是服务器上获取分页的数据,如:每页多少条数据,一共分了多少页,大致内容如下图既然有了数据,那就要在微信端去获取数据了2.先不考虑分页,把获取到的数据直接显示到微信端// pages/test/test.js//引入封装请求路径的模块const orderApi = require('../../api/order')//设置当前页数和总页数
2020-09-04 14:59:01
5157
2
原创 Java随机数
使用Random产生的随机数public class test { public static void main(String[] args) { Random ra = new Random(); int num = ra.nextInt(3); switch (num){ case 0: System.out.println("随机数是从0开始的哦"); b
2020-08-21 15:14:02
97
原创 Java中&&和||混用需要注意的情况
&& 和 || 的区别:相同:1、&& 和 || 都是逻辑运算符不同:1、&& 是 “与” 的意思,在Java中,只有二边的等式都等于true时,整个等式的结果才为true,只要二边的等式有一个为false,整个等式的结果就为false。2、&& 具有短路的功能,如果第一个等式为false,则不在比较第二个等式。3、|| 是 “或” 的意思,在Java中,只要有一个等式的结果为true时,整个等式的结果就为true。&&a
2020-08-20 17:34:34
7639
原创 Java实体类之间的相互转换
在pom.xml配置文件中添加依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.4-jre</version> </dependency>创建第一个实体类Schoolpublic class School { pr
2020-08-04 15:03:56
13666
2
原创 Java获取各种日期
获取简单的一些日期和日期格式转换import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.LocalDateTime;import java.util.Calendar;import java.util.Date;public class test { public static void main(String[] args) throws ParseException {
2020-08-03 18:21:12
254
原创 Hibernate JPA中的Specification条件查询
具体实现1、创建一个Maven项目,在pom.xml中配置依赖 <!--添加MySQL数据库依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency&g
2020-07-24 13:58:04
1839
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人