自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 idea把代码上传到阿里云maven仓库

1.

2023-04-10 19:18:03 208

原创 基于Springboot的全局异常拦截

基于Springboot的全局异常拦截

2022-06-25 19:47:29 640

原创 1.Spring-注册组件到容器的注解的使用

Spring体系架构七大常用组件常用组件注解Spring创建Bean方式通过xml注入bean—已弃用创建一个Spring的mavne项目后引入依赖目前结构如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

2022-05-08 14:43:16 404

原创 3.mysql-索引与慢查询和sql优化

###############################查询数据库的存储引擎 show ENGINES########################设置隔离级别--只针对于当前会话有用##未提交读set SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED##已提交读set SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED##########################查询CRU

2022-04-30 17:15:27 667

原创 2.mysql锁+事务

myIasm中的锁锁的粒度:指的是加锁的范围,表级锁,是对表的所有数据进行加锁,那他的粒度就是所有的数据。行级锁只是对每一行进行加锁,那么一行数据就是它的粒度。读锁解释:写锁可以转换成读锁,而读锁不可以转换为写锁。写锁在任意时刻只会有一个线程进行操作,读锁可以多个线程共享,这时候要切换写锁,线程不知道需要切换谁从而导致线程可能出现阻塞等状态。开启表级读锁的时候(表不起别名)对表进行加锁:lock table [表名] read释放表锁:unlock TABLEs1.同一个sess

2022-04-28 18:43:35 58

原创 1.mysql-简绍

常用的名词Tps和QpsTPS: Transactions Per Second(每秒传输的事务处理的个数),这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标。QPS:Queries Per Second(每秒查询的处理量)同时适用于InnoDB与MyISAM引擎。TPS=(COM_COMMIT+COM_ROLLBACK)/UNTIMEtps=(事务提交次数+回滚次数)/启动的时间...

2022-04-23 14:54:20 295

原创 12.并发编程-JMM底层实现原理(杂)

并发编程领域的关键问题JVM对java内存模型的实现在java虚拟机中,所有对象的实列都是在推中,对象引用都在栈中,并且堆是线程共享区,栈是线程私有区。虽然说堆式线程共享区,但是前提是线程能够拿到这个对象的引用地址才行。java调用方法时候,首先将方法打包成栈帧,加入到栈中。...

2022-04-17 15:27:34 241

原创 10.并发编程-线程安全

类的线程安全定义如果多线程下使用这个类,不管多线程如何调度这个类,这个类总是表现出正确的行为,那么这个类就是线程安全的。一般类的线程安全包括:操作的原子性、内存共享栈封闭所有的变量都是在方法内部中声明的,那么这些变量都属于栈封闭状态,是属于线程安全的。无状态没有任何成员变量的类,就叫无状态类。让类不可变让状态不可变。所有基本类型的包装类都是不可变类。对于一个类来说,所有的成员变量是私有的,同样的只要有可能,所有变量都应该加上final关键字。...

2022-04-09 14:16:06 139

原创 9.并发编程-线程池

线程池什么线程池?为什么使用线程池1.降低线程创建和销毁的资源消耗2.提高响应的速度一个线程整个生命周期分三个时间段:T1创建时间,T2执行时间,T3销毁时间。如果使用一般模式创建线程,那么消耗是T1+T2+T3时间总和,如果采用线程池可以避免T1和T3这时间。3.提高线程的管理性实现一个线程池1.线程必须在线程池中已经创建好了,并且可以保持性,要有容器可以保存多个线程2.线程还能接受外部的任务,运行这个任务package ms.studyjava.threads.demo9;

2022-04-05 17:20:57 249

原创 8.并发编程-并发容器

ConcurrentHashMap

2022-04-04 15:39:46 798

原创 7.并发编程-锁的探究

可重入锁synchronizedReentrantLock可重入锁存在是为了解决死锁的问题。可重入锁的实现原理就是基于aqs里面的state计数状态来实现的。如果一个线程已经拿到锁,并且再次调用加锁的方法时候,会首先使用tryAcquire方法判断拿到锁的线程是否是当前线程,不是的话抛出异常,是的话原来的state+1。当线程用完锁释放时候,在释放锁方法tryRelease里面,会对state-1,直到state=0时候,下个线程才会来取锁。跟踪源码state变化首先新建一个类,写上下面方法,

2022-04-02 09:16:15 221

原创 7.并发编程---AQS介绍和源码剖析

什么是AQSAQS全称为AbstractQueuedSynchronizer。其中的设计模板采用了,继承和模板方法设计模式。其中常用的模板方法独占式获取锁1.accquire2.acquireInterruptibly3.tryAcquireNanos共享式获取锁1.acquireShared2.acquireSharedInterruptibly3.tryAcquireSharedNanos独占式的释放锁1.release共享式释放锁1.releaseShared需要

2022-03-30 20:42:32 509

原创 6.并发编程---显示锁简单介绍

Lock与Synchronized场景区别Lock:获取锁可以被中断,超时获取锁,尝试获取锁,读多写少的时候优先使用lock,其他情况推荐使用SynchronizedLock加锁代码public class LockDemo { //ReentrantLock实现Lock接口.默认无参构造是非公平锁。 Lock lock = new ReentrantLock(true); Integer count = 0; public void incre1() { .

2022-03-26 16:26:02 318

原创 5.并发编程---CAS

CAS原理利用了现代的处理器都支持的CAS的指令,然后循环这个指令,直到成功为止。CAS(Compare And Swap)指令级别保证了原子操作。三个运算符号:V内存地址,A期望值,B新的值原理实现:通过自旋方式(死循环)不断的进行CAS操作。如果地址V上的值等于期望值A,内存地址V就把值赋值给新值B。如果不等于的话,不做任何操作CAS问题ABA问题与解决问题:比如内存地址有一个值V,这时候线程A对V进行-1,然后线程B对V进行+1。虽然线V值和以前一样,但是实际上它已经变化了两次,V-&g

2022-03-26 14:00:13 386

原创 4.并发编程---并发工具类关键方法

CountDownlatch作用:使一个线程等待其他线程执行完成后,才可继续执行,加强版的JOIN。不同于join的是,CountDaownLatch有两个方法,一个是await()用来等待,一个是countDown()用来计数,当countDown计数为0的时候,才会继续执行下面的线程。举个列子:在Main方法中,如果我想在main函数运行前,先去初始化两个方法(必须这两个方法执行完成),然后在继续执行main下面的业务。先看上图:整体是个Main线程。中间横线分割线(相当于围栏),上面是初始化

2022-03-21 19:49:08 245

原创 3.并发编程---并发工具类Fork-Join

Fork-join概念图分而治之:将一个大的任务分成N个小任务同时进行执行,等待所有的小任务执行完成后,进行结果汇总。工作密取:因为多个小任务执行完成的时间不一样,比如A线程先完成计算的小任务的结果,将结果放到一个指定的队列中,A线程就不需要继续等待其他线程执行完成,A可以继续干其他事情了。Fork-join使用标准范式根据上面的用法,对比下单线程与使用fork多线程同步用法计算的结果消耗时间/** 产生整形数组的工具类** */public class MakeArrays {

2022-03-20 14:35:59 311

原创 2.并发编程---常用的关键字

常用的synchronized锁对象锁和类锁的区别‘对象锁:一般直接用synchronized修饰某个方法即可类锁:一般是修饰static的方法,相当于是修饰整个类,所以称类锁总结:如果是同一个对象调用对象锁的方法时候,他们会按照顺序去执行方法,如果是不同的对象调用对象锁的方法,他们会异步去执行方法。如果是类锁,不管你是否是同一个对象,只要是方法属于类锁,他们都会按照顺序去执行方法。代码演示类锁和对象锁以后通用的线程睡眠工具类public class SleepTools { //按

2022-03-16 21:40:02 189

原创 1.并发编程---线程基础的概念

什么是线程与进程进程:类似于电脑打开的QQ、酷我音乐、腾讯影视等软件线程:在看电视的时候听歌并且聊天都属于线程完成的并发与并行并发:单位时间内可以执行的请求次数并行:在某一时刻可以执行的请求次数多线程实现的三种方式继承Thread类,重写run方法实现Runable接口,重写run方法实现Callable接口,重写call方法package ms.studyjava.threads.demo1;import lombok.SneakyThrows;import java.ut

2022-03-09 18:32:03 204

原创 二维码生成打包下载与浏览器上

引入依赖 <!-- 导入zxing的依赖 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </dependency>

2021-10-27 15:25:22 245

原创 玩转Stream流

1

2021-10-15 14:38:03 65

原创 win10安装本地mysql已经navicat链接

下载mysqlserver安装包安装包地址解压好后配置环境变量以管理员权限打开cmd 安装数据库通过cmd命令进入到安装的数据库bin目录下然后输入mysqld -install 等待安装服务。注意中间有一个空格。在命令行中进入bin目录后输入mysqld --initialize --console 生成data文件夹,注意里面有个随机生成的初始密码需要粘贴出来记到笔记本里(如图绿色部分),后面会用到。在安装的mysql-8.0.26-winx64目录下创建一个my.ini配

2021-10-10 16:04:31 102

原创 2021-06-11

idea运行Spirngboot项目,debug变成灰色1:选择File–Project Structrue,如图2:修改Src文件,如图然后就可以正常使用啦!

2021-06-11 14:36:04 94 1

原创 阿里云手机验证码发送

1:首先得在阿里云账户充值个几块钱,每条短信0.045元2:如果没有用户组首先创建一个用户组3:创建一个普通的用户,并且这个用户和上一个用户组进行关联(编程访问启用 AccessKey ID 和 AccessKey Secret,支持通过 API 或其他开发工具访问)这个选项一定要勾上4:将用户添加到你创建的用户组里面去,并且添加短信权限即可5:到现在差不多准备好啦,接下来就是开通短信的服务,在搜素框搜索到短信服务,进入自己申请好之后审核通过点击快速学习,里面有一个demo。把他填写完

2020-07-07 10:12:51 168

原创 EasyExcel使用

引入官方依赖 <!--EasyExcel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.0-beta2</version> </dependency&gt

2020-07-03 14:57:00 271

原创 一步教会你如何上传资源到云服务器

我使用的是Ucloud,没有账号请先去注册下面是封装好的方法@Datapublic class FileDtos { private Integer success; private String message; private String url;}Ucloud上传成功会返回这状态吗(0:1?失败:成功),url是当前资源的在线地址,如果是图片...

2020-04-23 11:53:51 874

原创 如何解决跨域的问题

现在我们假设从8001端口的页面。页面上有一个按钮,点击他直接发送ajax请求到8002端口的请求进行获取一个集合的数据,虽然8002端口已经返回数据到8001的页面的上,但是http协议默认是解析不到的。针对不同端口的异步请求,称为跨域,我们利用cors可以解决,方法很简单,注意以下两点1.分清主次放,我们这里的主方就是8001端口的页面(发送异步请求)。次放是请求的8002端口(接受请求...

2020-04-10 16:32:15 139

原创 使用ngnix反向代理

为什么使用ngnix比如我们正常访问本地一个请求地址:localhost:9001/#/index/dashboard,显然最基本的要带上localhost+端口号。一下两步教你如何去除这两个1.去除localhost,,正常去C:\Windows\System32\drivers\etc目录下打开host文件然后进入编辑,127.0.0.1默认域名的是localhost,我们可以自己添加...

2020-04-10 14:14:48 127

原创 springcloud6-使用Feign处理客服端的请求

看下Feign的描述目前我所学的客服端请求到服务端,通过Eurake注册中心,有两种方,第一种就是上几篇的@Autowired private RestTemplate restTemplate; private static final String RESET_URL_PREFIX="http://SPRINGCLOUDS-PROVIDERS-8001"; //...

2020-04-05 14:40:37 117

原创 springcolud.5-Ribbon自定义负载分配

通过上篇我们知道Ribbon默认的是轮询,但是这个有个不好地方就是如果轮询的那个服务正好断开,就请求不到了,所有给大家价绍一下几种轮询如何使用这个负载分配,很简单,在客服端80项目的ConfigBena配置里面注入你需要的分配方式。public class ConfigBena { @Bean @LoadBalanced //因为请求都是通过RestTemplate进行请求...

2020-04-05 13:19:15 129 1

原创 springcloud4.Ribbon的服务端搭建

上一篇讲得是如何利用ribbon分摊客服端的eurake的集群,这次讲的是如何使用ribbon解决服务端的分摊比如从客服端有十万个一样的请求,如果请求同一个服务端,回导致服务器奔溃,这时候就可以用ribbon将这十万个请求分配到n个服务端)这次我们在原有的基础上在创建一个8002的服务端(一下注意几点:)1.在创建一个和8001一样的数据库但是注意了,表明看红色圈1应该叫shriotex...

2020-04-05 12:23:33 67

原创 springcloud3.继承负载均衡ribbon搭建

简单的搭建ribbonribbon**比如ABC是三个不同的用户,A每天早上用宽带,B是中午,C是下午,如果给每个人连接一个100明白宽带,ABC三个人一天中使用存在很大的资源浪费。如果将三个100mb的宽带合成一个300mb的宽带给三个人使用。不仅可以提升网速,还可以减少资源消耗。Ribbon也是这个原理,比如十万个人请求同一个服务端,那么应该回奔溃,这时候ribbon作用就是将这十万...

2020-04-05 12:04:35 109

原创 springcloud2.Eurake的注册中心的使用

目录依然接着上一讲的代码**首先我们创建一个注册中心的微服务叫springcloud_eurake_7001Eurake主要作用是用来管理注册服务的,个人理解就是,服务端将自己的请求注册到eurake里面,然后客服端发送请求到eurake中,通过他获取服务端的请求导入依赖`<?xml version="1.0" encoding="UTF-8"?><project xm...

2020-04-04 14:19:28 180

原创 springcloud1-快速搭建一个springcloud项目

快速入门官方的中文文档1:springcloud我这里采用的是maven项目构建。包名如下首先直接创建一个MAven项目叫springclouds他是父项目,里面的其他项目都是子项目,添加如下的依赖)<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0...

2020-04-03 16:43:35 301

原创 sptingboot6-使用mybatis-plus

首先看下代码和数据库结构关于如何配置数据库就不说了,不会的看下之前的文章,接下来就是导入我们本次测试的依赖 <!--测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s...

2020-04-01 16:30:42 131

原创 springboot5.Git与Idea集成

本篇文章主要讲将怎么把本地代码托管道远程仓库安装Git自己去网上搜索,一键下一步安装成功桌面右击选可以看见Git Bash Here这个我使用的是码云托管代码点击去注册码云账号1:创建一个自己的仓库,1.克隆下载选项出现一个地址,拷贝下来。2.刚刚创建的文件夹,右击选择Git Bash Here。在窗口输入指令git clone XXXXX (XXX代表你刚刚点击的克隆地址)执...

2020-03-31 19:55:32 202

原创 sprinbboot4.整合shiro框架

直接看下代码结果user目录下。还有add.html和update.html两个页面引入依赖<!--集成jdbc和mybatis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId&...

2020-03-31 15:59:09 143

原创 springboot3.异常捕获

全局异常捕获1.首先创建一个contrller接受test请求 @GetMapping("/test") public String indexs(@RequestParam("num2")Integer num2){ Integer num3=100/num2; System.err.println("测试捕获"); return ...

2020-03-30 14:00:45 90

原创 springboot2.整合mybites

整合mybitesIDEA直接连接mysql的Navicats视图最重要的一步就是修改时区然后点击Apply就可以看见你的数据库可以直接通过你的idea进行操作,整合mybites1.加入相关依赖 <!--集成jdbc--> <dependency> <groupId>org.springframew...

2020-03-29 19:39:10 115

原创 springboot-1 Github授权登录

1:先去Github注册一个账号注册网站 点击查看官方文档:根据流程创建号自己的应用:参考文档查看你的Client ID和Client Secret然后去创建一个web项目...

2020-03-29 18:47:12 232

空空如也

空空如也

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

TA关注的人

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