自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Meiko记录

本博记录自己的过往积累和学习记录,所有内容并不是教科书式的解释,只是结合 我自己的情况来编写,若有不妥,请多见谅

  • 博客(31)
  • 收藏
  • 关注

转载 动态规划详解

什么是动态规划?动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler su...

2021-10-27 19:55:30 62319 29

原创 try-with-resource

 在stackoverflow偶尔看到的一个关于try()...catch()的用法,通常我们使用try...catch()捕获异常的,如果遇到类似IO流的处理,要在finally部分关闭IO流,当然这个是JDK1.7之前的写法了;在JDK7优化后的try-with-resource语句,该语句确保了每个资源,在语句结束时关闭。所谓的资源是指在程序完成后,必须关闭的流对象。写在()里面的流对象对应的类都实现了自动关闭接口AutoCloseable;与JDBC编程一样,程序里打开的文件IO资源不属于内存里

2021-10-26 11:45:02 750

原创 关于mysql的参数autocommit

背景知识:mysql事务支持的引擎是InnoDB默认情况下autocommit的值为11.首先准备一张innodb引擎的测试表:CREATE TABLE `test` ( `id` int(11) NOT NULL) ENGINE=InnoDB;INSERT INTO `test` VALUES ('1');INSERT INTO `test` VALUES ('3');INSERT INTO `test` VALUES ('5');2.执行如下命令可以发现mysql的autoc.

2021-10-22 17:43:09 4268

原创 mysql死锁分析

环境准备数据库隔离级别:mysql> select @@tx_isolation;+-----------------+| @@tx_isolation |+-----------------+| REPEATABLE-READ |+-----------------+1 row in set, 1 warning (0.00 sec)复制代码自动提交关闭:mysql> set autocommit=0;Query OK, 0 rows affected (

2021-10-22 17:33:48 708

原创 内部类解析

一、什么是内部类?在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性 定义方式一致。一个内部类的例子:public class Outer { private int radius = 1; public static int count = 2; public Outer() { } class inner{ public void visitOuter() { .

2021-10-21 17:35:35 159

原创 float和double不适合做商品金额的运算原因分析

先看现象涉及诸如float或者double这两种浮点型数据的处理时,偶尔总会有一些怪怪的现象,不知道大家注意过没,举几个常见的栗子:典型现象(一):条件判断超预期System.out.println(1f==0.9999999f);//打印:falseSystem.out.println(1f==0.99999999f);//打印:true 纳尼?典型现象(二):数据转换超预期floatf=1.1f;doubled=(double...

2021-10-21 11:45:16 581

转载 GIT详细

文章目录Git是什么? Git的相关理论基础 日常开发中,Git的基本常用命令 Git进阶之分支处理 Git进阶之处理冲突 Git进阶之撤销与回退 Git进阶之标签tag Git其他一些经典命令Git是什么在回忆Git是什么的话,我们先来复习这几个概念哈~什么是版本控制?百度百科定义是酱紫的~版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。那些年,我们的毕业论文,其实就是版本变更的真实写照...脑洞一下,

2021-10-20 18:08:34 208

原创 sql建议

1、查询SQL尽量不要使用select *,而是select具体字段。反例子:select * from employee;复制代码正例子:select id,name from employee;复制代码理由:只取需要的字段,节省资源、减少网络开销。 select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit 1假设现在有employee员工表,要找出一个名字叫jay的人.

2021-10-20 14:25:13 194

原创 类加载的时机

类加载时机什么情况需要开始类加载过程的第一阶段:加载?Java虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现来自由把握。但是对于初始化阶段,虚拟机规范则严格规定了以下几种情况必须立即对类进行初始化,如果类没有进行过初始化,则需要先触发其初始化。创建类的实例为了验证类加载,我们先配置一个JVM参数-XX:+TraceClassLoading 监控类的加载复制代码在IDE配置如下:demo代码:public class Clas..

2021-10-20 11:54:43 791

原创 索引失效杂症

一、查询条件包含or,可能导致索引失效新建一个user表,它有一个普通索引userId,结构如下:CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userId` int(11) NOT NULL, `age` int(11) NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `idx_userId` (`userId`))

2021-10-19 18:56:53 123

原创 Redis的使用规范

1、Redis的使用规范1.1、 key的规范要点我们设计Redis的key的时候,要注意以下这几个点:以业务名为key前缀,用冒号隔开,以防止key冲突覆盖。如,live:rank:1 确保key的语义清晰的情况下,key的长度尽量小于30个字符。 key禁止包含特殊字符,如空格、换行、单双引号以及其他转义字符。 Redis的key尽量设置ttl,以保证不使用的Key能被及时清理或淘汰。1.2、value的规范要点Redis的value值不可以随意设置的哦。第一点,如果.

2021-10-19 11:55:01 888

原创 Redis SCAN 命令

Redis Scan 命令用于迭代数据库中的数据库键。SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。相关命令:SSCAN命令用于迭代集合键中的元素。 HSCAN命令用于迭...

2021-10-18 15:38:36 283

转载 Flowable工作流快速入门

最近要处理一个oa工作流相关需求,这里记录一下,有完整的代码及相关资源。抛砖引玉,有不对的地方请指教。本项目里面有两个工作流--报销的工作流和请假的工作流,这里我只演示一个请假的工作流github资源包括idea插件资源github.com/zhuliangnan…项目目录,其中lib中为两个idea插件资源,因为我用的是最新版的idea插件库里面找不到这个插件所以一并提供。一个是actibpm.jar用于生成bpmn文件,注意: jBPM文件为上面那个jar...

2021-10-18 11:52:26 1471

转载 Flowable 引擎技术调研

主要概念BPMBusiness Process Management,业务流程管理BPMNBusiness Process Modeling Notation,BPMN是一个广泛接受与支持的,展现流程的注记方法:OMG BPMN标准,BPMN2.0正式版本于2011年1月3日发布,常见的工作流引擎如:Activiti、Flowable、jBPM 都基于 BPMN 2.0 标准。事件事件(event)通常用于为流程生命周期中发生的事情建模。事件总是图形化为圆圈。例如:顺序流

2021-10-18 11:51:08 1882

转载 Flowable工作流

SpringBoot+Flowable工作流SpringBoot项目中简单使用flowable工作流1 pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <ver

2021-10-18 11:49:58 647

转载 一文带你掌握flowable工作流引擎所有业务概念

1.什么是工作流审批根据本人的理解,就是审批流程管理。2.什么是flowable1.官方解释官方解释如下:Flowable 项目提供了一套核心的开源业务流程引擎,这些引擎紧凑且高效。它们为开发人员、系统管理员和业务用户提供工作流和业务流程管理 (BPM) 平台。它的核心是一个闪电般快速、久经考验的动态 BPMN 流程引擎,伴随着 DMN 决策表和 CMMN 案例管理引擎,所有这些引擎都是用 Java 编写的。它们是 Apache 2.0 许可的开放源代码,拥有一个承诺社区。所有

2021-10-18 11:48:41 8133 1

转载 Flowable学习笔记(一、入门)

一、Flowable简介1、Flowable是什么Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。这个章节将用一个可以在你自己的开发环境中使用的例子,逐步介绍各种概念与API。Flowable可以十分灵活地加入你的应用/服务/构架。可以将JAR形式发布的Flowable库加入应用或服务,来嵌入引擎。 以JA

2021-10-18 11:45:43 842

转载 Flowable学习笔记(二、BPMN 2.0-基础 )

1、BPMN简介业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图形化表示法,用于以业务流程模型详细说明各种业务流程。它最初由业务流程管理倡议组织(BPMI, Business Process Management Initiative)开发,名称为"Business Process Modeling Notation",即“业务流程建模标记法”。BPMI于2005年与对象管理组织(OMG, Object Manage.

2021-10-18 11:44:46 1137

转载 SpringBoot整合Flowable工作流-3(全局事件监听)

1. 前言上一篇博客【SpringBoot整合Flowable工作流-2(代码整合) 】介绍代码整合部分。这篇博客主要介绍 Flowable 的全局事件监听器,并且基于事件监听器实现业务的通知等业务。2. 代码实现2.1 实现 FlowableEventListener 接口@Component@Slf4jpublic class FlowableBaseEventListenerImpl implements FlowableEventListener { @Aut

2021-10-18 11:43:21 3645

转载 SpringBoot整合Flowable工作流-2(代码整合)

1. 前言上一篇博客【SpringBoot整合Flowable工作流-1(画流程定义) 】介绍用 Flowable-ui 画了一个简单的流程图。这篇博客将介绍代码整合部分,主要内容有:【发布流程定义】、【开启流程任务】、【获取用户任务】、【用户审批任务】、【添加审批意见】、【获取流程图】、【获取我的待办任务】、【获取我发起的流程】、【我审批过的流程】...2. 代码添加依赖<dependency> <groupId>org.flowable</gr

2021-10-18 11:42:30 970

转载 SpringBoot整合Flowable工作流-1(画流程定义)

1. 前言由于内容比较多,一篇文章可能还介绍不完,接下来可能会分成几篇文章进行介绍。相信很多人都听说过或者了解过工作流,也在生活中接触不少,比如OA系统的审批。 目前国内有很多工作流引擎,但是大多数都是集成第三方国外的引擎做二次开发的。2. Flowable 简单介绍Flowable 是一个用Java编写的轻量级业务流程引擎。Flowable 流程引擎允许您部署BPMN 2.0流程定义(用于定义流程的行业XML标准)、创建这些流程定义的流程实例、运行查询、访问活动或历史流程实例和相关数据

2021-10-18 11:41:14 988 1

转载 TCP协议经典十五问

1. 讲下TCP三次握手流程开始客户端和服务器都处于CLOSED状态,然后服务端开始监听某个端口,进入LISTEN状态第一次握手(SYN=1, seq=x),发送完毕后,客户端进入 SYN_SEND 状态 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端进入 SYN_RCVD 状态。 第三次握手(ACK=1,ACKnum=y+1),发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLIS.

2021-10-13 17:25:12 1450

转载 order by 原理和优化

一个使用order by 的简单例子假设用一张员工表,表结构如下:CREATE TABLE `staff` (`id` BIGINT ( 11 ) AUTO_INCREMENT COMMENT '主键id',`id_card` VARCHAR ( 20 ) NOT NULL COMMENT '身份证号码',`name` VARCHAR ( 64 ) NOT NULL COMMENT '姓名',`age` INT ( 4 ) NOT NULL COMMENT '年龄',`city` VAR

2021-10-12 17:06:01 1835 1

转载 MySQL日志15连问

1. redo log是什么? 为什么需要redo log?redo log 是什么呢?redo log 是重做日志。 它记录了数据页上的改动。 它指事务中修改了的数据,将会备份存储。 发生数据库服务器宕机、或者脏页未写入磁盘,可以通过redo log恢复。 它是Innodb存储引擎独有的为什么需要 redo log?redo log主要用于MySQL异常重启后的一种数据恢复手段,确保了数据的一致性。 其实是为了配合MySQL的WAL机制。因为MySQL进行更新操作,为了能够快速响应

2021-10-12 16:39:23 121

转载 MySQL 是如何执行一条查询语句的?

MYSQL体系结构先看一张架构图,如下:模块详解 Connector:用来支持各种语言和 SQL 的交互,比如 PHP,Python,Java 的 JDBC; Management Serveices & Utilities:系统管理和控制工具,包括备份恢复、MySQL 复制、集群等; Connection Pool:连接池,管理需要缓冲的资源,包括用户密码权限线程等等; SQL Interface:用来接收用户的 SQL 命令,返回用户需要的查询结果

2021-10-12 16:05:27 127

转载 Java 开发最容易写的 10 个bug

错误一:Array 转换成 ArrayListArray 转换成 ArrayList 还能出错?这是哪个笨。。。。。。等等,你先别着急说,先来看看是怎么回事。如果要将数组转换为 ArrayList,我们一般的做法会是这样List<String> list = Arrays.asList(arr);复制代码Arrays.asList() 将返回一个 ArrayList,它是 Arrays 中的私有静态类,它不是 java.util.ArrayList 类。如下图所示

2021-10-12 10:35:13 137

转载 Redis与MySQL双写一致性如何保证

一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 弱一致性:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态 最终一致性:最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。这里之所以将最终一致

2021-10-09 17:18:57 123

原创 lambda表达式详解

Lambda 表达式− Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)Lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。先看几个例子:1.使用lambda表达式实现Runnable2.使用lambda表达式实现Comparator...

2021-10-09 15:00:04 813

原创 安全对外的接口--加签验签

前言我们在求职面试中,经常会被问到,如何设计一个安全对外的接口呢? 其实可以回答这一点,加签和验签,这将让你的接口更加有安全。接下来,本文将和大家一起来学习加签和验签。从理论到实战,加油哦~密码学相关概念 加签验签概念 为什么需要加签、验签 加密算法简介 加签验签相关API 加签验签代码实现 公众号:捡田螺的小男孩本文已经收录到个人github,文章有用的话,可以给个star呀:github.com/whx123/Java…密码学相关概念明文、密文、密钥、加密、解密

2021-10-09 11:41:35 1485

转载 如何解决MySQL深分页问题

我们日常做分页需求时,一般会用limit实现,但是当偏移量特别大的时候,查询效率就变得低下。本文将分4个方案,讨论如何优化MySQL百万数据的深分页问题,并附上最近优化生产慢SQL的实战案例。limit深分页为什么会变慢?先看下表结构哈:CREATETABLEaccount(idint(11)NOTNULLAUTO_INCREMENTCOMMENT'主键Id',namevarchar(255)DEFAULTNULLCOMMENT'账户名',bala...

2021-10-08 14:10:32 431

转载 redis 分布式锁再这么用,我就劝退你

由于是做商城业务,要频繁的对商品库存进行扣减,应用是集群部署,为避免并发造成库存超买超卖等问题,采用 redis 分布式锁加以控制。本以为给扣库存的代码加上锁lock.tryLock就万事大吉了 /** * @author xiaofu * @description 扣减库存 * @date 2020/4/21 12:10 */ public String stockLock() { RLock lock = redissonClie

2021-10-08 11:28:59 162

空空如也

空空如也

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

TA关注的人

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