- 博客(29)
- 收藏
- 关注
原创 Ideal必备宝藏插件
Ideal必备宝藏插件1.CodeGlance 代码迷你缩放图插件:方便拉到对应的代码2.Codota代码提示工具3.Alibaba Java Coding Guidelines 阿里巴巴的编码规约检查插件4.Lombok 实体类插件5.Free Mybatis plugin6.MyBatis Log Free7.EasyCode-MyBatisCodeHelper8.RESTfultoolkit: 根据 URL 直接跳转到对应的方法定义 ( Ctrl +\ 根据url 查找controll
2022-05-25 13:51:11
584
原创 Activity工作流引擎
Activiti是一个工作流引擎关键表ACT_RE:流程定义和流程静态资源 (图片,规则)ACT_RE_DEPLOYMENT:部署单元信息deploymentACT_RE_MODEL:模型信息ACT_RE_PROCDEF:已部署的流程定义ACT_RU:运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据ACT_RU_EVENT_SUBSCR:运行时事件ACT_RU_EXECUTION:运行时流程执行实例ACT_RU_IDENTITYLINK:运行时用户关系信息,存储任务节点与参与
2022-05-19 22:41:59
515
原创 常见算法题
零钱兑换给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1解题思路动态规划采用自下而上的方式进行思考。仍定义 F(i)为组成金额 i所需最少的硬币数量,假设在计算F(i) 之前,我们已经计算出 F(0)-
2022-05-16 10:53:18
396
原创 Spring源码
BeanFactory与ApplicationContext的区别与联系BeanFactory是ApplicationContext的父接口。ApplicationContext 实现都 [组合]了BeanFactory的功能。ApplicationContext 比 BeanFactory 多实现了四个接口:MessageSource: 国际化功能,支持多种语言ResourcePatternResolver: 通配符匹配资源路径EnvironmentCapable: 环境信息,系统环境变量,.p
2022-05-15 22:04:34
315
原创 设计模式实践
1.创建型模式工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)2.结构型模式适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)过滤器模式(Filter、Criteria Pattern)组合模式(Composite Pattern)装饰器模式(Decorator
2022-05-14 15:29:58
182
原创 K8S基础概念和实践
虚拟化技术虚拟化技术是一种资源管理技术,将计算机硬件抽象。Docker 技术是基于 LXC(Linux container- Linux 容器)虚拟容器技术的。LXC 技术主要是借助 Linux 内核中提供的 CGroup 功能和 namespace 来实现的,通过 LXC 可以为软件提供一个独立的操作系统运行环境。CGroup:是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物力资源 的机制namespace 是 Linux 内核用来隔离内核资源的方式。cgroup 和 nam
2022-04-27 14:36:11
301
原创 Mybatis知识
{}和${}的区别是什么?${}属于静态文本替换,#{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换为? 号Xml 映射文件中,除了常见的 select|insert|update|delete 标签之外,还有哪些标签<、resultMap> 、 <、parameterMap> 、 <、sql> 、 <、include> 、 <、selectKey> ,加上动态 sql 的 9 个标签, trim|where|set
2022-04-27 14:12:37
624
原创 分布式理论知识
BASE理论BASE是对 CAP 中 AP 方案的一个补充Basically Available(基本可用):分布式系统在出现不可预知故障的时候,允许损失部分可用性**(**响应时间上的损失,系统功能上的损失)Soft-state(软状态):系统中的数据存在中间状态。Eventually Consistent(最终一致性)系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态实现最终一致性的具体方式读时修复: 在读取数据时,检测数据的不一致,进行修复写时修复: 在写入数据,检
2022-04-23 16:16:58
2013
原创 java基础知识总结
面向过程和面向对象的编程思想面向过程:问题分解成多个函数,依次进行调用分别创建:开始—黑走—棋盘—判断—白走—棋盘—判断—循环的函数。面向对象:问题抽象成多个对象,对象之间彼此调用分别创建黑白对象,棋盘对象,规则对象等。重复使用。优劣对比:面向过程:占用资源低,速度快面向对象:占用资源高,速度慢面向对象的三大基本特征封装:把客观事物封装成抽象的类,并且将类中的数据和方法进行隐藏。继承:对现有的类进行扩展。有实现继承和接口继承两种方式。多态:一个类实例的相同方法在运行期有不同的表现形式。
2022-04-23 16:03:10
367
原创 计算机网络与系统
计算机网络OSI 七层模型:物链网,传话表应 物理层:节点之间的传输介质 数据链路层:管理相邻节点的数据通信 网络层:路由和寻址 传输层:两台主机进程之间的通讯传输 会话层:管理应用程序之间的会话 表示层:数据处理 应用层:用户服务TCP/IP 四层模型 网络接口层:两个相邻节点间的链路上传送帧 网络层:路由分组交换网上的不同主机提供通信服务 传输层:数据传输服务 传输控制协议TCP:提供面向连接的,可靠的数据传输服务。TCP 一般用于文件传输、发送和接收
2022-04-23 15:43:33
512
原创 消息队列RabbitMQ
微服务间通讯有同步和异步两种方式同步通讯:就像打电话,需要实时响应。同步调用的优点:- 时效性较强,可以立即得到结果同步调用的问题:- 耦合度高- 性能和吞吐能力下降- 有额外的资源消耗- 有级联失败问题异步通讯:就像发邮件,不需要马上回复。好处:- 吞吐量提升:无需等待订阅者处理完成,响应更快速- 故障隔离:服务没有直接调用,不存在级联失败问题- 调用间没有阻塞,不会造成无效的资源占用- 耦合度极低,每个服务都可以灵活插拔,可替换- 流量削峰:不管发布事件的流量波动多大,都由
2022-04-22 17:18:04
2573
原创 Nginx知识
Nginx是一个轻量级/高性能的反向代理Web服务器,实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,采用一种进程池+IO多路复用的这种模式。应用场景http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。处理请求过程1.Nginx
2022-04-22 15:20:53
1412
原创 分布式锁Redisson
集群库存问题如果是单机情况下(单JVM),线程之间共享内存,只要使用线程锁就可以解决并发问题如果是分布式情况下(多JVM),线程A和线程B很可能不是在同一JVM中,这样线程锁就无法起到作用了,这时候就要用到分布式锁来解决分布式锁实现机制分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁基于Redis的分布式锁SETNX lock:168 1命令来自于SET if Not eXists的缩写,意思是:如果 key 不存在,则设置
2022-04-21 21:27:21
600
原创 分布式事务Seata
Seata架构TC-事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。TM-事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。RM-资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。集成Seata步骤1.下载seata-server2.解压配置,注册nacosregistry { # tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等 type = "nacos"
2022-04-21 16:33:55
760
原创 Spring Cloud知识
Spring Cloud 就是微服务系统架构的一站式解决方案。提供服务发现注册 、配置中心 、消息总线 、负载均衡 、断路器 、数据监控 等操作。微服务组件服务注册发现,统一配置管理,服务远程调用,统一网关路由,服务链路监控,流控,降级,保护创建微服务项目步骤1.聚合项目的pom文件 <packaging>pom</packaging> springboot的<parent>,微服务的版本,alibaba的版本,版本存在冲突的问题。 <modules
2022-04-21 15:08:50
398
原创 Spring知识
Spring源码解读方法一:this.prepareRefresh();该方法主要作用:1、设置容器的状态2、初始化属性设置(应用监听器)3、检查必备属性是否存在方法二:this.obtainFreshBeanFactory();该方法主要作用:配置文件就会解析成一个个 Bean 定义,注册到 BeanFactory 中1、设置beanFactory序列化id2、获取beanFactory方法三:this.prepareBeanFactory(beanFactory);作用:主要
2022-04-21 14:35:29
575
原创 多级缓存知识
传统的缓存策略一般是请求到达Tomcat后(代码处理),先查询Redis,如果未命中则查询数据库。问题:请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈。 Redis缓存失效时,会对数据库产生冲击多级缓存多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能浏览器访问静态资源时,优先读取浏览器本地缓存访问非静态资源(ajax查询数据)时,访问服务端请求到达Nginx后,优先读取Nginx本地缓存如果Nginx本地缓存未命中,则去直接查询Redi
2022-04-20 18:35:07
378
原创 Redis知识
常见数据结构string:简单动态字符串常用命令:set,get,strlen,exists,decr,incr,setex应用场景: 一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量list: 双向链表,即可以支持反向查找和遍历常用命令: rpush,lpop,lpush,rpop,lrange,llen例子:rpush myList value1lpop myListlrange myList 0 1 // lrange myList 0 -1应用场景: 发布与
2022-04-20 18:28:24
459
原创 Mysql知识
基础架构连接器: 身份认证和权限相关。查询缓存:执行查询语句的时候,会先查询缓存。分析器:检查你的 SQL 语句语法是否正确。优化器:按照 MySQL 认为最优的方案去执行。执行器:调用引擎的接口,返回接口执行的结果。存储引擎show enginesMyISAM:表级锁;不支持事务;不支持外键;不支持安全恢复,使用B+树作为索引结果,叶节点的data域存放的是数据记录的地址(非聚集索引)InnoDB:行级锁,表级锁;支持事务;支持外键;支持安全恢复,主键索引是聚集索引;辅助索引是非聚集索引
2022-04-20 17:25:00
922
原创 JVM知识
运行时数据区域线程私有的:**程序计数器:**字节码解释器依次读取指令;恢复线程切换的位置。唯一不会出现 OutOfMemoryError虚拟机栈:(StackOverFlowError,OutOfMemoryError)方法压栈弹栈,栈由一个个栈帧组成,而每个栈帧中都拥有:**局部变量表:**编译期可知的各种数据类型;对象引用操作数栈:存放方法执行过程中产生的中间计算结果动态链接:当一个方法要调用其他方法,需要将常量池中指向方法的符号引用转化为其在内存地址中的直接引用。动态链接的作用就是为了将符
2022-04-20 16:53:30
926
原创 Java并发知识
进程的状态创建状态(new) :进程正在被创建,尚未到就绪状态。就绪状态(ready) :进程已处于准备运行状态,即进程获得了除了处理器之外的一切所需资源,一旦得到处理器资源(处理器分配的时间片)即可运行。运行状态(running) :进程正在处理器上上运行(单核 CPU 下任意时刻只有一个进程处于运行状态)。阻塞状态(waiting) :又称为等待状态,进程正在等待某一事件而暂停运行如等待某资源为可用或等待 IO 操作完成。即使处理器空闲,该进程也不能运行。结束状态(terminated) :进
2022-04-20 16:10:49
240
原创 Java集合
Java集合List, Set, Queue, MapList:有序的、可重复的Arraylist: Object[] 数组Vector:Object[] 数组LinkedList: 双向链表Set:无序的、不可重复的HashSet: (无序,唯一) 基于 HashMap 实现的,底层采用 HashMap 来保存元素LinkedHashSet: 内部是通过 LinkedHashMap 来实现的TreeSet: (有序,唯一)红黑树(自平衡的排序二叉树)Queue:有序的、可重复的Pri
2022-04-20 14:28:16
231
原创 Vue详细回顾之旅
用户的后端接口写得七七八八了。但是没有前端页面的展示,具体的画面都是自己脑海中展示,太过于虚拟化了。前端已经有半年也没碰过了。大多知识都停留在概念阶段,许多方法都遗忘了差不多了,如今是时候重新拿起来回顾一下。毕竟基础的前端知识作为web开发的程序员还是要掌握的。太基础的html那些就不复习了,那些学校耗费一学期的课程进行教学,难度也不大。就直接复习Vue前端框架吧。以下都是我2月份跟着教程学习的前端知识。重新拿着笔记,实践一下,再描述一下自己的思想,回顾上手。1.vue的概念Vue是渐进式Java
2020-12-17 10:17:50
227
1
原创 电商数字化-电商数据分析平台day01
经过两个多星期的商业分析课程的研究,对电商行业有了初步的认识。接下来就要实现自己从调研,分析需求,确定需求逐步进行了。电商三要素:人,货,场。首先我先来研究人。第一,我得思考,我们的用户是谁?每一个店铺的用户都不一样,我要通过对用户数据的探索整合,应用匹配的分析框架,不断加深对用户的认识。理解用户是谁?用户的需求是什么?通过对数据的分析,勾画出用户画像。就这像心理罪中的情节,通过犯罪现场获得的数据,初步了解罪犯的心理特征。画出罪犯画像。不是说用户就是罪犯,这个比如都是为了更深刻地去了解对方。我们对待用户
2020-12-14 09:42:40
391
原创 LeetCode485(力扣485)最大连续1的个数java多种思路{单指针遍历,双指针遍历,暴力模拟,滑动窗口,动态规划,字符串切割}
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-consecutive-ones著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。public class
2020-12-11 10:53:11
272
原创 LeetCode100(力扣100) :相同的树java多种思路多种树{前序,中序,后序,深搜,宽搜}遍历方式总结
package class2;import java.util.ArrayList;import java.util.List;/**这道题本身解题思路非常简单,但是这道题真正的价值是树的构建。如何自己构建一棵树?这道题就给出了标准首先使用封装一棵树,树有三要素,结点,左子树,右子树然后定义构造方法,形成一颗树。这道题的价值就是在这里,下次需要树结构的时候,直接照搬即可。*/public class 相同的树 {public static class TreeNode {
2020-12-10 10:45:19
158
原创 LeetCode509(力扣509) :斐波那契数列 java多种思路
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1.示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2.示例 3:输入
2020-12-09 10:22:18
356
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人