- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 springboot的main方法启动原理源码跟踪
启动流程步骤开始:1.首先点击run方法进入SpringApplication.run(WechatPortalBootServletInitializer.class, args);2.找到run方法的直接调用方法public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start();
2021-09-16 14:33:13
250
1
原创 1.8 HashMap.put 源码解读
put 操作:/*** Implements Map.put and related methods** @param hash hash for key* @param key the key* @param value the value to put* @param onlyIfAbsent if true, don’t change existing value* @param evict if false, the table is in creation mode.* @ret
2021-08-02 15:17:38
137
转载 RocketMQ-02
1. 案例介绍1.1 业务分析模拟电商网站购物场景中的【下单】和【支付】业务###1)下单[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FmvVpJJC-1627788012991)(img/下单组件图.png)]用户请求订单系统下单订单系统通过RPC调用订单服务下单订单服务调用优惠券服务,扣减优惠券订单服务调用调用库存服务,校验并扣减库存订单服务调用用户服务,扣减用户余额订单服务完成确认订单###2)支付[外链图片转存失败,源站可能有防盗链机制
2021-08-01 11:20:34
124
转载 RocketMQ-03
1. 高级功能1.1 消息存储分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3yoMCfB-1627787860480)(img/消息存储方式.png)]消息生成者发送消息MQ收到消息,将消息进行持久化,在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者,然后等待消费者返回ACK如果消息消费者在指定时间内成功返回ack,那么MQ认为消息消费成功,在存储中删除消息,即执行第6步;
2021-08-01 11:18:11
239
转载 RocketMQ-02
1. 案例介绍1.1 业务分析模拟电商网站购物场景中的【下单】和【支付】业务###1)下单[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49XNkX9g-1627787820381)(img/下单组件图.png)]用户请求订单系统下单订单系统通过RPC调用订单服务下单订单服务调用优惠券服务,扣减优惠券订单服务调用调用库存服务,校验并扣减库存订单服务调用用户服务,扣减用户余额订单服务完成确认订单###2)支付[外链图片转存失败,源站可能有防盗链机制
2021-08-01 11:17:21
82
转载 RocketMQ-01
1. MQ介绍##1.1 为什么要用MQ消息队列是一种“先进先出”的数据结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V5dnq5yt-1627787628352)(img/queue1.png)]其应用场景主要包含以下3个方面应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。[外链图片转存失败,源站
2021-08-01 11:15:07
130
转载 解决使用redisTemplate set方法保存出现\x00\问题
**解决使用redisTemplate set方法保存出现\x00\问题(这是一个细节问题,很容易被坑: 引用博客 https://www.cnblogs.com/linyb-geek/archive/2020/06/17/13153775.html?ivk_sa=1024320u)**在项目有个需求要保存一个字符串到redis,并设置一个过期时间。这个需求一看非常简单,使用redisTemplate一行代码搞定,代码如下redisTemplate.opsForValue().set(“userK
2021-06-17 10:37:50
671
原创 挑选集合中重复元素出现的次数(利用 group by 的思想)
直接上代码import java.util.*;public class CollectionTest { public static void main(String[] args) { Integer[] integers = {1,8,9,10,7,4,2,5,9}; //sortList(integers); duplicateCount(integers,9); } //挑选重复的值出现的次数 public
2020-10-24 15:39:08
396
原创 ehcache-demo
```javascript```javascript```javascript```java搭建本地缓存ehcache的demo1.pom.xml<?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" xsi:schemaLocatio.
2020-06-29 00:18:26
214
原创 fork/join任务拆分的用法
1.当我们遇到任务量比较大,计算耗时任务可以用该框架充分利用cpu的并行处理快速得到结果!import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;/** * @program: * @description:
2020-06-15 16:10:21
557
原创 冒泡排序算法
直接上代码,很简单!public class UpSort {public static void main(String[] args) { int[] arr = {1,4,3,8,6,18,9,5}; myUpSort(arr); System.out.println(Arrays.toString(arr));}private static void myUpSort(int[] arr) { //控制比较多少轮! for (int i = 0; i
2020-06-15 14:43:10
88
原创 快排算法(简单易懂)
import java.util.Random;/** * @program: * @description: 快排 * @author: sw * @create: 2020-06-15 10:06 **/public class QStart { public static void main(String[] args) { Random random = new Random(); //int[] arr = {5,6,3,9,10,7,
2020-06-15 13:08:41
869
原创 原生的JDBC事物
原生的JDBC编程主要分一下几个步骤:(转载)(原生的JDBC编程指,仅应用java.sql包下的接口和数据库驱动类编程,而不借助任何框架)1. 加载JDBC驱动程序;2. 负责管理JDBC驱动程序的类 DriverManager 会识别加载的驱动程序,用 DriverManager 类的方法 getConnection()来创建一个数据库连接类的实例对象;3. 获取Connection对象的实例,用Connection对象的方法创建一个 Statement 对象实例,执行标准的SQL语句,
2020-06-03 23:05:16
532
原创 java类加载器
Java的ClassLoader(类加载器)2.jvm的基本结构 类加载器,执行引擎,运行时数据区,本地接口Class Files à classLoader à 运行时数据区à执行引擎,本地库接口à本地方法库类的装置(类的加载是用的双亲委派模型) 加载,连接(验证,准备,解析),初始化,使用,卸载 加载:取得类二进制的字节流,通过类的全限定名称,将字节流的静态存储 结构(放在方法区中),转化为数据区Class 保存类的定义或者结构 ...
2020-06-03 13:42:22
97
原创 sso单点登录系统的概述
单点登录系统的概述(看到的一个word文档具体作者不详)术语解析 用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系1. 局部会话存在,全局会话一定存在2. ...
2020-06-03 11:30:50
579
原创 synchronized&volatile硬件层面以及源码实现原理
java并发的底层实现1.java代码在编译后会变成java字节码,字节码被类加载器加载到jvm里,jvm执行字节码,最终转化为汇编指令在cpu上执行2.volatile和synchronized在并发中都有很重的作用,volatile是一个轻量级的synchronizedvolatile保证了线程的可见性,当一个变量声明成volatile时,java内存模型确保所有线程可以看到变量值是一致...
2020-05-04 23:45:48
768
1
原创 Thread.join的用法&实现原理
Thread.join的用法&实现原理1.作用:在当前线程内,等待目标线程执行完毕再执行(在当前线程内部调用join方法的线程执行完了后执行),把并行执行的任务,窜行化,保证执行顺序2.代码举例如main方法(它为当前线程),内部由new 了三个线程,他们都调用了当前线程都join方法,那么main方法必须要保证他们都执行顺序,在他们执行完毕再执行!注意:join方法必须在star...
2020-04-08 18:04:44
1408
原创 mybatis sql 判空和空串踩的坑解决,以及转义字符的用法
mybatis sql 判空和空串踩的坑解决,以及转义字符的用法写注解式 sql 的时候一直报错,不知道怎么转义这里做个举例和列举一些转义符踩坑点: 入参是字符串列下,我并没有传入参数,但是 sql 再组装的时候还是把字符串拼接进去了,所以必须要判断是否为 null 和是否是空串@Select()但是在 mybatis 中判断空窜的写法必须转义单引号,这样转义即可 ‘’...
2020-03-11 14:29:25
1732
2
原创 Linux下轻松配置环境变量教程
Linux下轻松配置环境变量教程大家都知道mac和linux下的环境变量一般都是配置在 /etc/profile文件里我们可以用vim /etc/profile 命令更改配置环境变量文件!配置环境变量是很简单的一个事情,但是前提是要理解配置的几个最建立的脚本参数举例:#配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置path就是一个变量不断叠加JAVA_HO...
2020-02-26 23:56:20
178
原创 mysql安装后无法使用mysql命令行的问题解决
mysql安装后,无法使用mysql命令行的问题解决如: 执行mysql -uroot -p 找不到命令的问题问题关键:没有配置mysql环境变量! 这里写下mac电脑用dmg安装无法使用命令行的问题解决步骤1.首先找到安装到目录whereis mysql是看不了的因为你本身就没有配置变量通过find去查找某个文件 find / -name mysql(你知道安装目录最好)我这是dm...
2020-02-24 16:44:03
4826
原创 fastjson常用api接口举例
fastjson使用教程1.这里推荐一篇博客,博主写的挺好的,我这里做一些fastjson使用举例https://blog.csdn.net/srj1095530512/article/details/825297592.Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言,下面代码演示下阿里fastjs...
2020-02-22 16:50:45
654
原创 对象排序
1.利用Collections.sort方法并重写comparetor方法,进行自定义对象排序2.场景,一般通讯录排序等,列表排序用的很多3.代码实现,这里为了方便展示都写在了一个类中了package com.aop.aspect.datastructure;import lombok.extern.slf4j.Slf4j;import java.util.Arrays;import ...
2020-02-20 23:17:24
189
原创 数据结构(二分查找算法)
数据结构(二分查找算法)简介: 自己用java写一个二分查找算法!package com.aop.aspect.datastructure;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class BinarySearch {public static void...
2020-02-20 21:49:19
339
原创 数据结构(单链表)
基础数据结构(单循环链表)1.简介: 一个闭环的单链表,未节点指向头节点2.单链表图片3.代码展示这个就不写了就是在单链表的基础上,在最后一个尾节点加一个执行头节点的指针就ok了,简单!4.应用场景就简单了基本的循环算法,循环执行基本就是这种...
2020-02-20 12:34:32
84
原创 数据结构(双链表)
基础数据结构(双链表)1.简介: 你可以把双链表看成一个头尾接在一起的链子,他们手拉手! 一个接一个2.双链表的头节点的上一个节点指向链表的尾部,下一个节点指向下一个节点(nextNode),环环相扣!如图:3.自己实现一个java的双链表代码如下:package com.aop.aspect.datastructure;//双向循环链表实现!public class Double...
2020-02-20 12:25:25
149
原创 数据结构(单链表)
数据结构(单链表)1.简介: 你可以把链表看成是一条链子,一环扣一环,必须通过上一个节点找到下一个节点next2.单向链表的每一个节点都包含一个数据和一个指向下一个节点的地址值(头结点和未节点除外,头结点没有数据只有一个地址值,尾节点的next地址值是空的,最后面因为没有数据了),链表图片3,应用场景高速缓存的应用,用链表存储数据极快! 因为你们知道链表的插入和删除是很快的,但是查询很慢...
2020-02-19 11:39:19
132
原创 数据结构(队列)
数据结构(队列)1.简介: 你可以把队列比作排队,先排队的先办理业务,后来的后办理2.先进先出!3.队列的应用场景消息中间件基本都是用的队列,rabbitMQ , redis等...
2020-02-18 10:34:27
130
原创 数据结构(栈)
基础数据结构(栈)1.简介: 你可以把栈比作子弹的弹夹,先进的后出…2.入栈就相当于把子弹压入弹夹,下图中红色的表示栈顶,绿色表示栈底你可以把弹夹最上面的那颗子弹看成是栈顶,最下面的那颗子弹表示栈底!3,先进后出的栈数据结构的应用参加递归算法是最常见的栈的应用了大家是不是遇到过递归无法结束,出现栈溢出的错误! 没错递归就是一个栈的数据结构还有求最大公约数会反复执行,先进的后出!...
2020-02-18 10:16:19
131
原创 多线程基础
1.线程和进程的区别进程:进程是允许并发执行的程序在某个数据集合上的允许过程,进程有正文段,用户数据,以及进程控制块共同组成的执行环境线程: 线程是进程中最小的执行单元,进程包含线程,一个进程有一个或者多个线程2.java多线程的基础API介绍3.基本api用法演示public class TestMain { public static void main(String[]...
2020-02-16 13:53:47
78
原创 springAop
springAop前言:这里介绍AOP的基本使用,aop知识点比较多后续会不断补充~1.概念介绍(通俗易懂介绍)(1).Join point(连接点)对哪个方法进行处理增强,这个方法就是点程序执行过程中的一点,例如方法执行或异常处理。在Spring AOP中,连接点始终代表方法的执行(2).Pointcut(切入点)作用范围,如在哪个包下,哪个类中等等!切入点是与连接点匹配的表达式(...
2020-02-12 16:16:55
139
原创 动态代理
jdk动态代理 & cglib动态代理注意:这里为了方便代码展示,代理的方法都是匿名类部内进行的重写方法.jdk动态代理demo:第一步: 新建一个接口package com.proxy;public interface JdkClass {String print();}第二步:写一个实现类继承上面的接口package com.proxy;public class j...
2020-02-08 22:42:02
158
原创 java基础之反射
反射一个Class实例包含了该class的所有完整信息:在实例中保存了该class的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等,因此,如果获取了某个Class实例,我们就可以通过这个Class实例获取到该实例对应的class的所有信息这种通过Class实例获取class信息的方法称为反射Reflection ┌───────────────────────────...
2020-01-15 16:09:37
83
原创 跨域问题解决
跨域问题解决问题 : 什么是跨域问题?是两个项目之间使用ajax (前端类似于后端技术httpClient) 实现通讯如果浏览器访问的域名地址与ajax访问地址不一致的情况下,默认情况下浏览器会有安全机制,这个机制跨域问题,会无法获取到返回结果1,跨域问题解决方案使用jsonp解决跨域问题(不推荐 因为只能支持get请求,不支持post请求)2.使用httpClient 进行转...
2019-12-22 11:52:50
137
原创 feign微服务问题
feign.FeignException$NotFound: status 404 reading PaymentChannelFeign#selectAll() 问题解决根据实际情况不同,问题点会不一样可能出现问题的几个点:@FeignClient("") 调用的服务在eureka中没有,可能是你的调用名写错与被调用的系统 applicationName名称不一致调用的时候在项目yml...
2019-12-22 10:06:00
249
原创 思考人生
关于人生的思考深入思考怎么投资自己为你想做的事情制定你的价值观,目标和计划做事情要有理由和目标,一旦你做出决定,你最好就要知道为什么你要这样做,你究竟在做什么,不断接受教育接收经验1.一直行动,去行动去尝试2.持之以恒,一致性和重复性,持之以恒做出最好的作品(保持创造力)3.强化你的优势,消灭你的弱势列出自己的优势,寻求外部的确认,并不断回忆,增强自己的信心你的强项是什么,着眼于你...
2019-12-05 11:23:39
118
dubbo-admin-2.5.10.war
2020-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人