- 博客(39)
- 收藏
- 关注
原创 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
543
原创 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
782
原创 2.mysql锁+事务
myIasm中的锁 锁的粒度:指的是加锁的范围,表级锁,是对表的所有数据进行加锁,那他的粒度就是所有的数据。行级锁只是对每一行进行加锁,那么一行数据就是它的粒度。 读锁 解释:写锁可以转换成读锁,而读锁不可以转换为写锁。写锁在任意时刻只会有一个线程进行操作,读锁可以多个线程共享,这时候要切换写锁,线程不知道需要切换谁从而导致线程可能出现阻塞等状态。 开启表级读锁的时候(表不起别名) 对表进行加锁:lock table [表名] read 释放表锁:unlock TABLEs 1.同一个sess
2022-04-28 18:43:35
144
原创 1.mysql-简绍
常用的名词 Tps和Qps TPS: Transactions Per Second(每秒传输的事务处理的个数),这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标。 QPS:Queries Per Second(每秒查询的处理量)同时适用于InnoDB与MyISAM引擎。 TPS=(COM_COMMIT+COM_ROLLBACK)/UNTIME tps=(事务提交次数+回滚次数)/启动的时间 ...
2022-04-23 14:54:20
373
原创 12.并发编程-JMM底层实现原理(杂)
并发编程领域的关键问题 JVM对java内存模型的实现 在java虚拟机中,所有对象的实列都是在推中,对象引用都在栈中,并且堆是线程共享区,栈是线程私有区。虽然说堆式线程共享区,但是前提是线程能够拿到这个对象的引用地址才行。 java调用方法时候,首先将方法打包成栈帧,加入到栈中。 ...
2022-04-17 15:27:34
308
原创 10.并发编程-线程安全
类的线程安全定义 如果多线程下使用这个类,不管多线程如何调度这个类,这个类总是表现出正确的行为,那么这个类就是线程安全的。 一般类的线程安全包括:操作的原子性、内存共享 栈封闭 所有的变量都是在方法内部中声明的,那么这些变量都属于栈封闭状态,是属于线程安全的。 无状态 没有任何成员变量的类,就叫无状态类。 让类不可变 让状态不可变。所有基本类型的包装类都是不可变类。对于一个类来说,所有的成员变量是私有的,同样的只要有可能,所有变量都应该加上final关键字。 ...
2022-04-09 14:16:06
234
原创 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
315
原创 7.并发编程-锁的探究
可重入锁 synchronized ReentrantLock 可重入锁存在是为了解决死锁的问题。可重入锁的实现原理就是基于aqs里面的state计数状态来实现的。如果一个线程已经拿到锁,并且再次调用加锁的方法时候,会首先使用tryAcquire方法判断拿到锁的线程是否是当前线程,不是的话抛出异常,是的话原来的state+1。当线程用完锁释放时候,在释放锁方法tryRelease里面,会对state-1,直到state=0时候,下个线程才会来取锁。 跟踪源码state变化 首先新建一个类,写上下面方法,
2022-04-02 09:16:15
300
原创 7.并发编程---AQS介绍和源码剖析
什么是AQS AQS全称为AbstractQueuedSynchronizer。其中的设计模板采用了,继承和模板方法设计模式。 其中常用的模板方法 独占式获取锁 1.accquire 2.acquireInterruptibly 3.tryAcquireNanos 共享式获取锁 1.acquireShared 2.acquireSharedInterruptibly 3.tryAcquireSharedNanos 独占式的释放锁 1.release 共享式释放锁 1.releaseShared 需要
2022-03-30 20:42:32
616
原创 6.并发编程---显示锁简单介绍
Lock 与Synchronized场景区别 Lock:获取锁可以被中断,超时获取锁,尝试获取锁,读多写少的时候优先使用lock,其他情况推荐使用Synchronized Lock加锁代码 public class LockDemo { //ReentrantLock实现Lock接口.默认无参构造是非公平锁。 Lock lock = new ReentrantLock(true); Integer count = 0; public void incre1() { .
2022-03-26 16:26:02
381
原创 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
523
原创 4.并发编程---并发工具类关键方法
CountDownlatch 作用:使一个线程等待其他线程执行完成后,才可继续执行,加强版的JOIN。不同于join的是,CountDaownLatch有两个方法,一个是await()用来等待,一个是countDown()用来计数,当countDown计数为0的时候,才会继续执行下面的线程。 举个列子: 在Main方法中,如果我想在main函数运行前,先去初始化两个方法(必须这两个方法执行完成),然后在继续执行main下面的业务。 先看上图:整体是个Main线程。中间横线分割线(相当于围栏),上面是初始化
2022-03-21 19:49:08
329
原创 3.并发编程---并发工具类Fork-Join
Fork-join概念图 分而治之:将一个大的任务分成N个小任务同时进行执行,等待所有的小任务执行完成后,进行结果汇总。 工作密取:因为多个小任务执行完成的时间不一样,比如A线程先完成计算的小任务的结果,将结果放到一个指定的队列中,A线程就不需要继续等待其他线程执行完成,A可以继续干其他事情了。 Fork-join使用标准范式 根据上面的用法,对比下单线程与使用fork多线程同步用法计算的结果消耗时间 /* * 产生整形数组的工具类 * * */ public class MakeArrays {
2022-03-20 14:35:59
405
原创 2.并发编程---常用的关键字
常用的synchronized锁 对象锁和类锁的区别‘ 对象锁:一般直接用synchronized修饰某个方法即可 类锁:一般是修饰static的方法,相当于是修饰整个类,所以称类锁 总结:如果是同一个对象调用对象锁的方法时候,他们会按照顺序去执行方法,如果是不同的对象调用对象锁的方法,他们会异步去执行方法。 如果是类锁,不管你是否是同一个对象,只要是方法属于类锁,他们都会按照顺序去执行方法。 代码演示类锁和对象锁 以后通用的线程睡眠工具类 public class SleepTools { //按
2022-03-16 21:40:02
282
原创 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
286
原创 二维码生成打包下载与浏览器上
引入依赖 <!-- 导入zxing的依赖 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </dependency>
2021-10-27 15:25:22
384
原创 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
166
原创 2021-06-11
idea运行Spirngboot项目,debug变成灰色 1:选择File–Project Structrue,如图 2:修改Src文件,如图然后就可以正常使用啦!
2021-06-11 14:36:04
173
1
原创 阿里云手机验证码发送
1:首先得在阿里云账户充值个几块钱,每条短信0.045元 2:如果没有用户组首先创建一个用户组 3:创建一个普通的用户,并且这个用户和上一个用户组进行关联 (编程访问启用 AccessKey ID 和 AccessKey Secret,支持通过 API 或其他开发工具访问)这个选项一定要勾上 4:将用户添加到你创建的用户组里面去,并且添加短信权限即可 5:到现在差不多准备好啦,接下来就是开通短信的服务,在搜素框搜索到短信服务,进入 自己申请好之后审核通过点击快速学习,里面有一个demo。把他填写完
2020-07-07 10:12:51
256
原创 EasyExcel使用
引入官方依赖 <!--EasyExcel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.0-beta2</version> </dependency>
2020-07-03 14:57:00
387
原创 一步教会你如何上传资源到云服务器
我使用的是Ucloud,没有账号请先去注册 下面是封装好的方法 @Data public class FileDtos { private Integer success; private String message; private String url; } Ucloud上传成功会返回这状态吗(0:1?失败:成功),url是当前资源的在线地址,如果是图片...
2020-04-23 11:53:51
1032
原创 如何解决跨域的问题
现在我们假设从8001端口的页面。页面上有一个按钮,点击他直接发送ajax请求到8002端口的请求进行获取一个集合的数据,虽然8002端口已经返回数据到8001的页面的上,但是http协议默认是解析不到的。 针对不同端口的异步请求,称为跨域,我们利用cors可以解决,方法很简单,注意以下两点 1.分清主次放,我们这里的主方就是8001端口的页面(发送异步请求)。次放是请求的8002端口(接受请求...
2020-04-10 16:32:15
219
原创 使用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
272
原创 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
192
原创 springcolud.5-Ribbon自定义负载分配
通过上篇我们知道Ribbon默认的是轮询,但是这个有个不好地方就是如果轮询的那个服务正好断开,就请求不到了,所有给大家价绍一下几种轮询 如何使用这个负载分配,很简单,在客服端80项目的ConfigBena配置里面注入你需要的分配方式。 public class ConfigBena { @Bean @LoadBalanced //因为请求都是通过RestTemplate进行请求...
2020-04-05 13:19:15
223
1
原创 springcloud4.Ribbon的服务端搭建
上一篇讲得是如何利用ribbon分摊客服端的eurake的集群,这次讲的是如何使用ribbon解决服务端的分摊 比如从客服端有十万个一样的请求,如果请求同一个服务端,回导致服务器奔溃,这时候就可以用ribbon将这十万个请求分配到n个服务端) 这次我们在原有的基础上在创建一个8002的服务端(一下注意几点:) 1.在创建一个和8001一样的数据库但是注意了,表明看红色圈1应该叫shriotex...
2020-04-05 12:23:33
138
原创 springcloud3.继承负载均衡ribbon搭建
简单的搭建ribbon ribbon **比如ABC是三个不同的用户,A每天早上用宽带,B是中午,C是下午,如果给每个人连接一个100明白宽带,ABC三个人一天中使用存在很大的资源浪费。如果将三个100mb的宽带合成一个300mb的宽带给三个人使用。不仅可以提升网速,还可以减少资源消耗。 Ribbon也是这个原理,比如十万个人请求同一个服务端,那么应该回奔溃,这时候ribbon作用就是将这十万...
2020-04-05 12:04:35
180
原创 springcloud2.Eurake的注册中心的使用
目录依然接着上一讲的代码 **首先我们创建一个注册中心的微服务叫springcloud_eurake_7001 Eurake主要作用是用来管理注册服务的,个人理解就是,服务端将自己的请求注册到eurake里面,然后客服端发送请求到eurake中,通过他获取服务端的请求 导入依赖` <?xml version="1.0" encoding="UTF-8"?> <project xm...
2020-04-04 14:19:28
315
原创 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
387
原创 sptingboot6-使用mybatis-plus
首先看下代码和数据库结构 关于如何配置数据库就不说了,不会的看下之前的文章,接下来就是导入我们本次测试的依赖 <!--测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s...
2020-04-01 16:30:42
201
原创 springboot5.Git与Idea集成
本篇文章主要讲将怎么把本地代码托管道远程仓库 安装Git自己去网上搜索,一键下一步安装成功桌面右击选可以看见Git Bash Here这个 我使用的是码云托管代码 点击去注册码云账号 1:创建一个自己的仓库, 1.克隆下载选项出现一个地址,拷贝下来。 2.刚刚创建的文件夹,右击选择Git Bash Here。在窗口输入指令git clone XXXXX (XXX代表你刚刚点击的克隆地址) 执...
2020-03-31 19:55:32
297
原创 sprinbboot4.整合shiro框架
直接看下代码结果 user目录下。还有add.html和update.html两个页面 引入依赖 <!--集成jdbc和mybatis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId&...
2020-03-31 15:59:09
224
原创 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
161
原创 springboot2.整合mybites
整合mybites IDEA直接连接mysql的Navicats视图 最重要的一步就是修改时区 然后点击Apply就可以看见你的数据库可以直接通过你的idea进行操作, 整合mybites 1.加入相关依赖 <!--集成jdbc--> <dependency> <groupId>org.springframew...
2020-03-29 19:39:10
188
原创 springboot-1 Github授权登录
1:先去Github注册一个账号 注册网站 点击查看官方文档: 根据流程创建号自己的应用:参考文档 查看你的Client ID和Client Secret 然后去创建一个web项目 ...
2020-03-29 18:47:12
373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅