自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SQL执行顺序详解

这是一条标准的查询语句:这是我们实际上SQL执行顺序:我们先执行from,join来确定表之间的连接关系,得到初步的数据where对数据进行普通的初步的筛选group by 分组各组分别执行having中的普通筛选或者聚合函数筛选。然后把再根据我们要的数据进行select,可以是普通字段查询也可以是获取聚合函数的查询结果,如果是集合函数,select的查询结果会新增一条字段将查询结果去重distinct最后合并各组的查询结果,按照order by的条件进行排序。

2024-05-30 14:31:11 1163

原创 断网后,还能ping通127.0.0.1嘛

你女神爱不爱你,你问她,她可能不会告诉你。但网通不通,你ping一下就知道了。可能看到标题,你就知道答案了,但是你了解背后的原因吗?那如果把127.0.0.1换成0.0.0.0或localhost会怎么样呢?你知道这几个IP有什么区别吗?以前面试的时候就遇到过这个问题,大家看个动图了解下面试官和我当时的场景,求当时我的心里阴影面积。话不多说,我们直接开车。拔掉网线,断网。断开wifi。网线一拔,恩怨去了。然后在控制台输入。^C说明,拔了网线,是能ping通的。

2024-05-29 15:09:01 868

原创 集群高并发环境下,如何保证分布式唯一全局ID生成

系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。这篇文章就是给各位看官提供一个生成分布式唯一全局id生成方案的思路,希望能帮助到大家。不足之处,请多多指教!Twitter的分布式自增ID算法,Snowflake最初Twitter把存储系统从MySQL迁移到Cassandra(由Facebook开发一套开源分布式NoSQL数据库系统)因为Cassandra没有顺序ID生成机制,所有开发了这样一套全局唯一ID生成服务。

2024-05-27 15:39:40 1149

原创 主流微服务注册中心详解

微服务的注册中心目前主流的有以下五种:ZookeeperEurekaConsulNacosKubernetes那么实际开发中到底如何选择呢?这是一个值得深入研究的事情,别着急,今天陈某就带大家深入了解一下这五种注册中心以及如何选型的问题。这几款开源产品都已经考虑如何搭建高可用集群,这个地方有些差别而已;

2024-05-24 17:30:32 865 1

原创 Redis主从、哨兵、集群讲解

哨兵模式,就是由一个或多个哨兵实例组成的哨兵系统,它可以监视所有的Redis主节点和从节点,并在被监视的主节点进入下线状态时,自动将下线主服务器属下的某个从节点升级为新的主节点。假如节点A标记节点B为主观下线,一段时间后,节点A通过消息把节点B的状态发到其它节点,当节点C接受到消息并解析出消息体时,如果发现节点B的pfail状态时,会触发客观下线流程;Gossip是一种谣言传播协议,每个节点周期性地从节点列表中选择 k 个节点,将本节点存储的信息传播出去,直到所有节点信息一致,即算法收敛了。

2024-05-23 16:52:53 1153 1

原创 使用@Transactional 注解下,事务失效的场景

是一种基于注解管理事务的方式,spring通过动态代理的方式为目标方法实现事务管理的增强。使用起来方便,但也需要注意引起失效的场景,本文总结了七种情况,下面进行逐一分析。

2024-05-21 11:46:55 805 1

原创 Java开发规范

一、编程规约(一) 命名风格1. 【强制】所有编程相关的命名均不能以下划线或美元符号开始 ,也不能以下划线或美元符号结束。反例:_name/ __name/$Object/name_ /name$ / Object$2. 【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意即使纯拼音命名方式也要避免采用。正例:ali/ alibaba/ taobao/kaike

2024-05-20 17:26:54 522 1

原创 网关 GateWay 的使用详解、路由、过滤器、跨域配置

有时候SpringCloudGateWay提供的过滤器工厂不能满足自己的要求。可能有时候需要在过滤时做一些其它的逻辑操作。那么这时候可以选择使用java代码自定义全局过滤器。@Component@Override// 1.获取请求参数//1.这里的request并不是servlet中的request//2.返回值是一个多键的map集合、也就是说这个map集合的键可以重复// 2.获取userName参数// 3.校验// 放行// 4.拦截// 4.1.禁止访问,设置状态码。

2024-05-20 11:02:57 860

原创 Lambda 表达式中的 forEach 如何提前终止

但是,在实际运行中,往往有很多不突发情况导致代码提前终止,比如:空指针异常,其实,我们也可以通过抛出假异常的方式来达到终止 forEach() 方法的目的。这里,需要注意的一点是:要确保你 forEach() 方法体内不能有其它代码可能会抛出的异常与自己手动抛出并捕获的异常一样;否则,当真正该因异常导致代码终止的时候,因为咱们手动捕获了并且没做任何处理,岂不是搬起石头砸自己的脚。forEach(),说到底是一个方法,而不是循环体,结束一个方法的执行用什么?,就会出现 foreach 的代码提示。

2024-05-18 15:29:28 551

原创 SpringBoot启动优化

公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢,常常需要6-7分钟才能暴露端口,严重降低开发效率。通过 SpringBoot 的原理和源码调试等手段排查发现,在 Bean 扫描和 Bean 注入这个两个阶段有很大的性能瓶颈。通过 JavaConfig 注册 Bean, 减少 SpringBoot 的扫描路径,同时基于 Springboot 自动配置原理对第三方依赖优化改造,将服务本地启动时间从7min 降至40s 左右的过程。

2024-05-17 17:10:23 778

原创 flowable多人会签与一票否决

到这里就结束了,大概流程就是这样,因为这是测试代码,所以这里写的是审批人是相当于直接塞进去的,也可以手动的塞进去,就是add的那个方法,在进行加载xml的时候,创建一个map,然后序列化一下,放到那个方法的第二个参数的位置就行了。我这里为了能体现否决和同意,我一共设置了三个任务,第一个任务是会签,第二个任务和第三个任务一个是同意一个是否决对应的任务,他们是通过路由进行相关联的,路由判断outcome是"否决"还是"通过"然后路由到第二个任务或者第三个任务。接下来就可以运行了,数据库的名称要对应好。

2024-05-17 10:30:32 661

原创 SpringBoot最核心的注解

Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成,而Spring Boot 之所以能够轻松地实现应的创建及与其他框架快速集成,最核心的原因就在于它极大地简化了项目的配置,最大化地实现了“约定大于配置”的原则,然而基于Spring Boot 虽然极大地方便了开发,但是也很容易让人“云里雾里”,特别是各种注解很容易让人“知其然而不知其所以然”。

2024-05-16 17:01:50 896

原创 在多线程中常见锁的策略

每次读写数据都认为不会发生冲突,线程不会阻塞,一般来说,只有在进行数据更新时才会检查是否发生冲突,若没有冲突,直接更新,只有冲突(多个线程都在更新数据)了才解决冲突问题。当线程冲突不严重的时候,可以采用乐观锁策略来避免多次的加锁解锁操作。每次去读写数据都会冲突,每次在进行数据读写时都会上锁(互斥),保证同一时间段只有一个线程在读写数据。当线程冲突严重时,就需要加锁,来避免线程频繁访问共享数据失效带来的CPU空转问题。

2024-05-16 10:19:31 1022

原创 为什么不建议用 equals 判断对象相等

比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true。而 a.equals(b) 是进行逻辑比较,当内容相同时,返回true,所以通常需要重写该方法来提供逻辑一致性的比较。如果不相等,后面的表达式的意思是,先判断a不为空,然后根据上面的知识点,就不会再出现空指针。与情况1 行为一致。

2024-05-15 14:59:06 397

转载 flowable常用表达式

请注意,不需要在变量名周围加引号:var:get(varName)相当于var:get(‘varName’) or var:get(“varName”)。="123"}或者${var.eq(myparam,"same")} -- 两个值是否相等。${var:gt('myparam', 10) ${var:gte('myVar', 10)}--变量值是否大于或大于等于。${var:containsAny(myparam, 1, 2)} -- 判断list中是否存在该1,2变量。auditPass}

2024-05-15 10:08:26 86

原创 POST为什么会发送两次请求

最近遇到这样一个面试题,这个问题也是前端面试的高频问题,因为在前端开发的日常开发中我们总是会与post请求打交道,一个小小的post请求也是牵扯到很多知识点的,博主在这给大家细细道来。同源策略是一个重要的安全策略,它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。如果两个 URL 的协议、主机和端口都相同,我们就称这两个 URL 同源。协议:协议是定义了数据如何在计算机内和之间进行交换的规则的系统,例如 HTTP、HTTPS。

2024-05-15 09:58:19 942

原创 IDEA实用配置及插件

实用配置提示词忽略大小写File -> Settings,找到Code Completion,把这个勾去掉,(有的idea版本是选择选项 选择none即可),例如String 输入string 、String 都可以提示设置多行tabidea默认是选择显示单行的,File -> Settings,找到Editor Tabs,如下图,我们把这个去掉,就可以显示多行tab(注意:tab过多也会自动关闭,将settings->editor->General->->

2024-05-14 16:58:28 722 2

原创 Java中反射和new效率对比

其中JIT在程序运行期会对程序进行优化,但是反射是通过动态解析的方式,因此可能无法执行某些java虚拟机的优化。但是随着我们技术的不断提升,我们也学习到了,可以通过反射技术实现对象的创建。接下来,程序运行期间,可能会通过一个JIT,即时编译器将字节码文件转换为计算机认识的机器码文件。可是,你有没有想一下,什么时候我们改用new创建对象,什么时候我们改用反射创建对象呢?首先第一点,一般我们的Java代码是需要编译后在虚拟机里面运行的。new的对象无法访问其中的私有属性,反射出来的可以通过设置。

2024-05-14 16:46:34 426 1

原创 数据库表设计的规范

系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。在product_sku表中有个字段,是product_spu表的主键,这时候可以取名:product_spu_id或product_spu_sys_no。另外,还有有个好处是,如果哪天有非订单的业务,比如:金融业务,也需要建一个名字叫做pay的表,可以取名:finance_pay,就能非常轻松的区分。其实还有很多公共字段,在不同的表之间,可以使用全局统一的命名规则,定义成相同的名称,以便于大家好理解。

2024-05-14 16:14:46 628

原创 Flowable 数据库表结构说明、Flowable 数据字典说明

RE’表示repository(存储)。RepositoryService接口操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。’RU’表示runtime。RuntimeService、TaskService等接口操作的表。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。flowable只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。’ID’表示identity(组织机构)。

2024-05-14 15:40:41 913

原创 flowable多任务实现会签、或签

做工作流,基本会遇到会签、或签的需求。而flowable是通过多任务方式来实现的。

2024-05-14 15:29:49 1268

RUOYI-YD 商城模块sql文件

基于若依框架开发的商城模块,懂得都懂

2024-05-20

RUOYI-YD CRM模块sql文件

基于若依框架做的CRM模块 懂得都懂

2024-05-17

空空如也

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

TA关注的人

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