自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何删除windows右键垃圾菜单

WIN+R 输入regedit打开注册表上边菜单栏“编辑”–“查找”搜索对应名称的注册表,确认无误后删除重启电脑即可以解决

2022-06-06 18:18:08 424 1

原创 软件架构发展历程

发展历史详细 https://blog.csdn.net/weixin_48052161/article/details/120379804Web应用程序发展的早期,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行,所有功能模块使用同一个数据库。 下图是一个单体架构的电商系统:软件架构的发展历程特点:1、所有的功能集成在一个项目工程中。2、所有的功能打在一个war包部署到服务器。3、通过部署应用集群和数据库集群来提高系统的性能。1、项目架构简单,前期开发成本低,周期短,小型项

2022-06-02 17:20:47 730

原创 java.lang.IllegalStateException: No instances available for localhost

使用ip直接调用时,初始化RestTemplate不能加@LoadBalanced注解,去掉即可

2021-09-05 21:22:31 530

原创 Eureka Server注册中心自我注册

register-with-eureka:false 表示不把自己(eureka-server)注册到eureka上;register-with-eureka:true 表示注册自己,这时也作为客户端,所以defaultZone后边需要再拼一层地址/eureka

2021-09-04 16:54:37 1721

原创 eurekaServer:8752 - registration status: 404

作为客户端时,地址后边要拼接一层/eureka,注册中心自我注册时也是如此

2021-09-04 16:54:03 956

原创 SpringCluod之搭建Eureka服务中心

1、构建springBoot项目,引入eureka服务的依赖这里只需要引入这一个就ok2、配置application.yml文件# 指定服务名称spring: application: name: eurekaServer# 端口自定义server: port: 8752# 指定当前eureka客户端的注册地址,也就是eureka服务的提供方eureka: instance: hostname: localhost client: # regis

2021-09-04 16:39:36 65

原创 Maven下载和环境变量配置

一、官网下载Mavenmaven官网 3.0.5下载tar.gz包后直接解压就可以注意:Maven3.6.2/Maven3.6.3可能不兼容,建议下载3.0二、配置Maven环境变量配置环境变量后,我们就可以在本地使用命令窗来执行mvn命令(如果不需要本地执行,这一步可以省略)三、查看Maven版本本地打开cmd窗口执行 mvn -version来查看是否配置成功,如图能带出mvn信息则配置ok......

2021-09-04 15:13:38 118

原创 【windows】Mysql数据库安装

官网下载ZIP解压版注意cmd使用管理员运行MSI安装版

2020-11-11 12:50:54 60

原创 好用的高速下载工具

更多参考 8 种百度云高速下载,你值得拥有 10 款好用的下载工具,终于和迅雷说拜拜了一、Proxyee-down开源免费、比使用百度云盘下载稍快百度网盘下载 “Proxyee Down.3.4.windows.x64.7z”,将压缩包解压至任意目录,执行文件夹里的Proxyee Down.exe拓展管理中安装百度云插件google浏览器访问百度网盘,界面多出"PD下载"按钮,点击"直链下载"即可......

2020-11-09 18:48:31 273

原创 Map遍历和删除

遍历map的三种方式public static void main(String[] args) { Map<Integer, String> map= new HashMap(); int num = 0; map.put(++num, "a"); map.put(++num, "b"); map.put(++num, "c"); map.put(++num, "d"); // 方式1: keySet() 获取key的set集 for (Integer key

2020-08-25 17:45:03 431

原创 MySQL之SQL优化

【参考】https://blog.csdn.net/orecle_littleboy/article/details/88534160少用多表联查少用(不用)多表操作(子查询,联合查询),而是将复杂的SQL拆分多次执行。如果查询很原子(很小),会增加查询缓存的利用率,尤其是多并发的SQL大量数据的插入如果表中有除主键外的其他索引,在多条 insert或者Load data into table(从文件里载入数据到表里)时,建议,先关闭约束及索引,完成数据插入,再重新生成索引及约束

2020-08-25 16:01:25 68

原创 【详细】手把手教你搭建Spring Cloud项目

参考1一、搭建eureka服务中心要注意cloud版本和boot版本的对应关系,否则服务都启动不了本项目使用版本如下:spring-boot :2.3.1.RELEASE spring-cloud:Hoxton.SR7构建springBoot项目,引入eureka服务的依赖这里只需要引入这一个就ok配置application文件采用yml配置一定要注意格式;defaultZone 后端口后尽量别在加,可能导致404(因为这个坑搞了好久)# 指定服务名称spring: applic

2020-08-16 13:44:50 665

原创 详解Kafka应用场景及工作原理

一、概述Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的发布/订阅式分布式消息系统二、特性持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失高并发:支持数千个客户端同时读写高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒三、应用场景常见可以用于web/nginx日志、访问日志,消息服务等等,主要应用场景是:日志收集系统和消息系统日志收集:一个

2020-08-07 00:44:05 512

原创 mybatis插入数据时如何获取到该条数据的自增id

实体类@Data@NoArgsConstructorpublic class Phone { private int id; private String brand; // 品牌 private String model; // 型号 private int salary; // 价格}mapper接口和sqluseGeneratedKeys=“true” , keyProperty位实体类字段,用来存储自增id<insert id="insertPhone" paramet

2020-08-06 17:00:57 1008

原创 详解Java 位运算

参考一、概述java支持的位运算符包括:&(按位与)、|(按位或)、~(按位非)、^(按位异或)、<<(左位移运算符)、>>(右位移运算符)、<<<(无符号右移运算符)以上位运算符中,除~以外,其余均为二元运算符,操作数只能为整型和字符型数据;二、位运算符1、&(按位与)当两边操作数的位同时为1时,结果为1,否则为0栗子:25&40,25的二进制 0001 1001,40的二进制 0010 1000,与运算后的二进制

2020-08-01 19:55:09 282

原创 详解equals的用法以及和hashCode方法的联系

equals方法用来比较两个对象是否为同一个对象比较Integer包装类,只要值相等就返回trueInteger类重写了equals方法,我们通过源码可以看到只要两个对象的int值相等就会返回truepublic boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false;}Integer a

2020-07-28 22:26:28 155

原创 int 和其包装类Integer的==比较

== 在比较基本数据类型时,是比较值是否相等,比较对象时,比较的是对象的内存地址int a = 10;int b = 10;System.out.println(a == b); // true比较两个new Integer对象时,返回falseInteger a = new Integer(10);Integer b = new Integer(10);System.out.println(a == b); // falseInteger变量和new Integer比较时,返回fals

2020-07-28 17:28:56 602

原创 MySQL之外键的使用

一、概述MySQL 外键约束经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表);两个表必须是InnoDB表,MyISAM表暂时不支持外键;外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列;主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的;二、语法[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,

2020-07-21 15:39:53 741

原创 守护 (Daemon) 线程和用户(User)线程

一、概述用户 (User) 线程可以认为是系统的工作线程,它会完成整个系统的业务操作守护 (Daemon) 线程是 JVM 中用户线程的 “佣人”。一旦所有用户线程都结束运行,守护线程会随 JVM一起结束工作;当一个Java应用,只有守护线程的时候,虚拟机就会自然退出守护线程在退出的时候并不会执行finnaly块中的代码二、示例public class ThreadDemo implements Runnable{ public static void main(Strin

2020-07-20 13:38:54 348

原创 线程之stop()、wait()、suspend()、sleep()方法区别详解

一、sleep当前线程由RUNNABLE状态的会进入TIMED_WAITING(超时等待);超时等待过程中线程持有的锁并不会释放;1、APIThread.sleep(long millis); // 单位:毫秒Thread.sleep(long timeout, int nanos); // 毫秒,纳秒或TimeUnit.SECONDS.sleep(long timeout); // 这个时间单位可以优选,底层调用的其实还是Thread.sleep(ms, ns);2、示例pub

2020-07-20 13:07:37 2924

原创 notify() 和 notifyAll()方法的使用和区别

一、区别notify()和notifyAll()都是用来用来唤醒调用wait()方法进入等待锁资源队列的线程,区别在于:notify()唤醒正在等待此对象监视器的单个线程。 如果有多个线程在等待,则选择其中一个随机唤醒(由调度器决定),唤醒的线程享有公平竞争资源的权利notifyAll()唤醒正在等待此对象监视器的所有线程,唤醒的所有线程公平竞争资源二、示例notify()public class ThreadDemo implements Runnable{ static Object

2020-07-19 18:40:25 10672

原创 详解interrupt(),interrupted(),isInterrupted()用法的区别

API详解3种方法都是Thread类的API方法描述public void interrupt()中断调用该方法的线程,此处的中断不是线程就会done,而只是添加中断标志位,线程该往下执行还是会执行的public boolean isinterrupted()测试调用该方法的线程是否已被中断,不会清除中断标志位,其实就是测试中断标志位是否存在public static boolean interrupted()Thread.interrupted(),使用该静态方法

2020-07-18 22:34:57 698

原创 线程之死锁以及如何避免死锁

一、死锁如何产生的Java死锁指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞状态。由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。二、举个栗子栗子中,主线程和子线程都会使用LOCK_A 和LOCK_B资源,主线程占用LOCK_A后准备使用LOCK_B的时候,发现LOCK_B正在被子线程占用,而此时子线程也在等待LOCK_A被主线程释放,铸就会导致永久谁都无法获取到想要的锁,从而出现死锁public class DeadLock { private static fi

2020-07-17 16:48:26 677

原创 详解scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别

scheduleAtFixedRate:是以period为间隔来执行任务的,如果任务执行时间小于period,则上次任务执行完成后会间隔period后再去执行下一次任务;但如果任务执行时间大于period,则上次任务执行完毕后会不间隔的立即开始下次任务而scheduleWithFixedDelay 是不管任务执行多久,都会等上一次任务执行完毕后再延迟delay后去执行下次任务不多bb,直接上来代码来瞅瞅。。。1、 scheduleAtFixedRate,任务执行时间小于period时public s

2020-07-17 00:36:19 4389 1

原创 Spring Boot项目中集成Kafka消息框架

kafka工作原理见另一篇Blog一、Kafka安装二、引入依赖<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId></dependency>三、配置kafka信息在application.properties文件中配置# -------- Kafka配置 --------

2020-07-15 23:30:46 327

原创 windows环境Kafka的安装

一、Kafka安装Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper1、下载安装Zookeeper官网下载3.4.14版本解压后将conf目录下的zoo_sample.cfg重命名成zoo.cfg并将dataDir值修改为如:F:/Data/zookeeper-3.4.14/data添加系统变量ZOOKEEPER_HOME=F:\Data\zookeeper-3.4.14,并在path后添加;%ZOOKEEPER_HOME%\bin;打开

2020-07-15 20:24:30 449

原创 SpingBoot中集成Swagger框架在线管理Rest接口

一、概述Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。二、使用注意:引用的swagger版本和spring版本要适配,否则会报错Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration required a single bean, but 15 were found:...1、引入依赖<!-

2020-07-15 00:20:14 144

原创 MySQL表数据导出为特定格式文件

在平时的业务中,我们有时。需要导出数据库中的数据以及将数据插入到数据库中,如果是使用代码开发,那过程是比较复杂的。比如:我们要将某个.csv文件数据最终入库,那就要经过解析文件读取行来插入数据库中,相同的,要将数据库中的数据最终写入到.csv文件中,我们要先查询然后再行写入到对应的文件中,这样的过程在使用mysql数据时可以很容易的搞定,因为mysql的语法本身就支持将表数据导出到一定格式的文件以及将文件直接写入表,而且对于百万级的大数据也是速度相当快的一、表数据导出导出文件格式支持基本语

2020-07-11 23:07:30 1575

原创 详解Spring AOP切面编程应用+ 基于AspectJ的AOP

一、AOP概述Spring AOP官方AOP:面向切面编程,相对于OOP面向对象编程。存在目的是为了解耦。AOP可以让一组类共享相同的行为。在OOP中只能继承和实现接口,且类继承只能单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足。还有就是为了清晰的逻辑,让业务逻辑关注业务本身,不用去关心其它的事情,比如事务。Spring的AOP是通过JDK的动态代理和CGLIB实现的。二、相关术语术语描述通知 / 增强(Advice)需要完成的工作叫做通知,比如事务、日志

2020-07-11 17:53:16 159

原创 Spring AOP使用@DeclareParents报错类转换失败cannot be cast to

在使用@DeclareParents 进行切面编程时,将切面类的方法引入(Introduction)通知目标类时报错如下经过一番折腾,原来是原有目标类的路径没写对,这里注意,原有类的路径一定要写到最后一个具体的包改过路径后,测试完美通过......

2020-07-11 00:43:29 1116

原创 SpringBoot定时任务@Scheduled使用详解

在平时开发中,需求中经常会出现一些定时周期任务,我们可以是用java定时线程ScheduledExecutorService或定时器Timer去实现,而在SpringBoot中,定时任务十分简单,只需要新建一个定时任务类,使用@EnableScheduling开启定时任务,并在对应方法上添加注解@Scheduled即可,其实它的底层也是通过定时线springframework.scheduling.concurrent.ThreadPoolTaskScheduler去实现的一、@Scheduled注解参数

2020-07-10 14:00:35 2061

原创 Springboot使用@EnableAsync和 @Async实现异步调用

在日常开发中,我们有时会遇到在调用一次接口后,其后台的业务逻辑比较复杂,需要处理多个阶段,这个时候如果使用同步串行的方式,也就是单线程的方式来执行的话,前端需要等待较长时间,也可能会出现请求超时,这个时候,如果任务的下一个阶段不依赖上一个阶段的结果我们就可以使用异步的方式来并行执行此任务以提高响应效率示例1、@EnableAsync在启动类上加上@EnableAsync注解以开启异步调用方式@SpringBootApplication@EnableCaching@EnableAsyncpubl

2020-07-09 17:00:43 1256

原创 Spring 中缓存 + rerdis缓存的基本应用

一、Spring 缓存包:org.springframework.cache.annotation,spring框架中已有,无需再引入每次调用需要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果返回给用户。下次直接从缓存中获取注意:在使用Spring缓存时请先去掉redis依赖,否则使用的是redis的缓存1、缓存使用的注解注解作用属性@Cacheable对方法返回结果

2020-07-09 15:18:59 215

原创 Redis可视化工具Redis Desktop Manager的下载及安装

一、下载百度云盘下载提取码:88u3二、安装连接直接点击下一步傻瓜式安装即可使用客户端连接前先确保redis服务已启动三、查看数据结构数据默认是存储在索引为0的数据库中的

2020-07-09 13:41:19 1821

原创 Spring Boot项目中使用Redis数据库

一、下载安装二、导入依赖<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>三、配置连接信息在application.pro中配置数据库连接信息,这里只配置基本信息# redis数据

2020-07-06 22:44:38 338

原创 Spring Boot中使用Assertions断言测试

应用示例:操作redis,使用断言测试spring自带Assert类中方法较少,这里使用JUNIT单元测试时自带工具类org.junit.jupiter.api.Assertionspackage com.spring.demo.test;import org.junit.jupiter.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Auto

2020-07-06 17:39:59 1412

原创 Redis的下载安装及基本语法学习

一、概述Redis是一个高性能的key-value数据库,支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。二、下载安装百度云盘提取码:ar0e注意,以上方式开启的时临时服务,使用时不要关闭三、基本语法1、key-value存储set key value -- 设

2020-07-06 10:27:13 128

原创 【详细】MySQL之事务篇 -- TRANSACTION

一、概述事务又叫做TCL,全称是transaction control language,意思是事务控制语言;事务主要用于处理操作量大,复杂度高的数据,是保证数据一致性的重要手段;在 MySQL 中只有使用了 Innodb数据库引擎的数据库或表才支持事务;一般来说,事务是必须满足4个条件(ACID)原子性(Atomicity,或称不可分割性):一个事务中的所有操作,要么全部完成,要么全部不完成,执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态;一致性(Consist

2020-07-06 10:07:09 233

原创 MySQL基本语法学习篇

使用工具:Navicat官网sql语法 一、函数和运算符1、数值函数和运算符ABS() 返回绝对值select ABS(-20) -- 20CEIL() 向上取整,FLOOR()向下取整select CEIL(2.3) -- 3select CEIL(-2.3) -- -2 select FLOOR(2.3) -- 2select FLOOR(-2.3) -- -3ROUND() 四舍五入,负数先将绝对值四舍五入然后加上负号select ROUND(2.31) -- 2sel

2020-07-04 23:19:54 175

原创 【详细】MySQL之游标

一、概述游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用,能遍历结果中的所有行,但他一次只指向一行。类似迭代器游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。游标多是用在存储过程、触发器以及函数中来处理一些业务二、优缺点优点游标对从数据库中 select 查询得到的结果集的每一行(不可以跳过任何一行数据)可以进行不同的操作,是一种分离的思想。缺点只能一行一行操作,性能不高使用游标可能会产生死锁,造成内存开销大三

2020-07-04 23:16:21 1743

空空如也

空空如也

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

TA关注的人

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