自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(284)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java8、9新特性

Java 8(2014年3月份发布):Lambda(函数式编程)Java 9(2017年9月份发布):Jigsaw(模块化)编程思想转换如果从北京,到上海,怎么去?走着去骑马马车自行车汽车、摩托车火车飞机…如何进行软件开发,怎么做?自己编写二进制:10101010……汇编语言面向过程面向对象函数式编程思想1. 面向对象强调“一切皆对象”,如果要想做事情,...

2020-01-09 17:10:43 1160

原创 Linux:查看应用占用内存大小

【代码】Linux:查看应用占用内存大小。

2023-04-18 15:14:21 630 1

转载 SpringCloud与SpringBoot的版本对应关系

json文件中描述的适配关系,相较于第一种方式中的兼容性表格,则更具体。表中描述了一个大概范围,比如与SpringCloud Hoxton版本适配的SpringBoot版本应该是2.2.x版本或者2.3.x SR5及以上版本。当SpringCloud的发布内容积累到临界点或者一个重大Bug被解决后,会发布一个"Service Releases"版本,简称"SR"版本。除了2020.0.X版本外,SpringCloud之前的版本名称是伦敦地铁站的站名命名,且首字母顺序与版本时间顺序一致,如,

2022-12-11 03:15:39 7540

转载 Spring事务的七种传播行为

事务的传播行为:当事务A被事务B调用时,必须得指定事务的传播行为。事务的传播行为有7种,分别为REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED。

2022-12-09 11:39:10 487

原创 MySQL Oracle行列互转

在Oracle 11g中增加了2个查询:pivot(行转列) 和unpivot(列转行)

2022-10-20 16:41:51 364

原创 Oracle递归函数:START WITH(树查询)

Oracle Start With关键字

2022-09-28 14:13:11 1407

原创 并发编程volatile

volatile关键字多线程下变量的不可见性概述在多线程并发执行下,多个线程修改共享的成员变量,会出现一个线程修改了共享变量的值后,另一个线程不能直接看到该线程修改后的变量的最新值。演示public class Demo { // main方法,作为一个主线程。 public static void main(String[] args) { // a.开启一个子线程 MyThread t = new MyThread(); t.

2022-05-26 13:31:59 198

原创 JDK 14新特性

JDK 14新特性预览JDK 14一共发行了16个JEP(JDK Enhancement Proposals,JDK 增强提案),即是筛选出的JDK 14新特性。305: instanceof 的模式匹配 (预览,预览版本意味着暂时可以先尝试)343: 打包工具 (Incubator)345: G1的NUMA内存分配优化349: JFR事件流352: 非原子性的字节缓冲区映射358: 友好的空指针异常359: Records (预览)361: Switch表达式 (标准)362: 弃

2022-05-25 11:26:03 920

原创 规则引擎 Drools:决策表

Drools除了支持drl形式的文件外还支持xls格式的文件(即Excel文件)。这种xls格式的文件通常称为决策表(decision table)。决策表(decision table)是一个“精确而紧凑的”表示条件逻辑的方式,非常适合商业级别的规则。决策表与现有的drl文件可以无缝替换。Drools提供了相应的API可以将xls文件编译为drl格式的字符串。决策表的例子:决策表语法:关键字说明是否必须RuleSet相当于drl文件中的package必须,只能有一个。如

2021-08-18 15:43:24 973

原创 规则引擎 Drools:WorkBench动态规则

WorkBench简介WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包,安装到tomcat中就可以运行。使用WorkBench可以在浏览器中创建数据对象、创建规则文件、创建测试场景并将规则部署到maven仓库供其他应用使用。下载地址:https://download.jboss.org/drools/release/7.10.0.Final/kie-drools-wb-7.10.0

2021-08-18 10:21:35 2919 1

原创 GitLab汉化

查看GitLab安装版本查看GitLab版本cat /opt/gitlab/embedded/service/gitlab-rails/VERSION克隆GitLab汉化源代码仓库安装gityum install -y git克隆GitLab汉化源代码仓库git clone https://gitlab.com/xhang/gitlab.git或git clone https://gitlab.com/larryli/gitlab.git larryli项目 :只更新到

2021-07-20 20:57:57 611

原创 SpringCloud服务调用(RestTemplate)

使用微服务架构的分布式系统,微服务之间通过网络通信。我们通过服务提供者与服务消费者来描述微服务间的调用关系。 服务提供者:服务的被调用方,提供调用接口的一方服务消费者:服务的调用方,依赖于其他服务的一方 我们以电商系统中常见的用户下单为例,用户向订单微服务发起一个购买的请求。在进行保存订单之前需要调用商品微服务查询当前商品库存,单价等信息。在这种场景下,订单微服务就是一个服务消费者,商品微服务就是一个服务提供者在用户下单时需要调用商品微服务获取商品数据。那应该怎么做呢?众人皆知商品微服务.

2021-06-16 10:43:16 449 1

原创 SpringCloud概述

微服务中的相关概念服务注册与发现服务注册:服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机IP和提供服务的Port,以及暴露服务自身状态以及访问协议等信息。 服务发现:服务实例请求注册中心获取所依赖服务信息。服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。负载均衡负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。熔断熔断这一概念来源于电子工程中

2021-06-16 09:57:14 252

原创 微服务基础知识

系统架构的演变随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单体应用架构Web应用程序发展的早期,大部分web工程(包含前端页面,web层代码,service层代码,dao层代码)是将所有的功能模块,打包到一起并放在一个web容器中运行。比如搭建一个电商系统:客户下订单,商品展示,用户管理。这种将所有功能都部署在一个web容器中运行的系统就叫做单体架构。 优点:所有的功能集成在一个项目

2021-06-15 20:54:53 416

原创 数据安全:基于不可见字符的文本水印技术

信息媒体的数字化为信息的存取提供了极大的方便,越来越多的业务现在都是基于网络信息完成的。与此同时,信息的泄露,篡改,盗版等也困扰这很多公司以及个人。那么如何降低这些风险或者说泄露了信息如何溯源呢?数字水印技术则在这方面提供了一系列追溯的功能,可以追溯信息在那个环节泄露。数字水印技术由很多,基于多媒体图片,音频以及视频等技术研究比较深入,受限制于文本的特性,单独对文本的数字水印技术研究比较少,一般需要结合特定的文本格式进行解析。不可见编码技术Unicode 中有一类格式字符,不可见,不可打印,主要作用于

2021-06-15 20:35:37 1014

原创 MySQL:主从复制

复制概述复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。复制原理MySQL 的主从复制原理如下。从上层来看,复制分成三步:Master 主库在事务提交时,会把数据变更作为时间 Events 记录在二进制日志文件 Binlog 中。主库推送二进制日志文件 Binlog 中的日志事

2021-06-11 16:05:04 280 2

原创 MySQL:日志

在任何一种数据库中,都会有各种各样的日志,记录着数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件。MySQL 也不例外,在 MySQL 中,有 4 种不同的日志,分别是错误日志、二进制日志(BINLOG 日志)、查询日志和慢查询日志,这些日志记录着数据库在不同方面的踪迹。错误日志错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。 .

2021-06-11 15:42:18 166 1

原创 SpringBoot四十四:整合EasyCaptcha(图形验证码)

EasyCaptcha简介Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。效果展示算术类型:中文类型:内置字体:maven方式引入<dependencies> <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</a

2021-06-11 09:47:34 2297

原创 Redis删除指定前缀的key

keys “test*" | xargs del./redis-cli -a password keys "*" | xargs ./redis-cli -a password del./redis-cli -h 192.168.16.141 -p 6379 keys "dev-merge*" | xargs ./redis-cli -h 192.168.16.141 -p 6379 del

2021-06-10 15:50:55 5795

原创 SpringBoot四十三:使用脚本命令启动程序

启动应用脚本:startup.shnohup java -jar test-1.0.jar > nohup.out 2>&1 &停止应用脚本:stop.shPID=$(ps -ef | grep test-1.0.jar | grep -v grep | awk '{ print $2 }')if [ -z "$PID" ]thenecho Application is already stoppedelseecho kill -9 $PIDkill -9 $

2021-06-10 15:31:15 302

原创 MySQL:常用工具

mysql该mysql不是指mysql服务,而是指mysql的客户端工具。 语法mysql [options] [database]连接选项参数 :-u, --user=name 指定用户名-p, --password[=name] 指定密码-h, --host=name 指定服务器IP或域名-P, --port=# 指定连接端口 示例 :mysql -h 127.0.0.1 -P 3306 -u root -pmysql -h127.0.0.1 -P3306 -uro

2021-06-10 10:09:23 90

原创 策略模式+工厂方法优化冗余的if else

反例String medalType = "guest";if ("guest".equals(medalType)) { System.out.println("嘉宾勋章"); } else if ("vip".equals(medalType)) { System.out.println("会员勋章");} else if ("guard".equals(medalType)) { System.out.println("展示守护勋章");}...首先,我们把每个条件逻辑代码块,.

2021-06-09 15:58:07 219

原创 MySQL:常用SQL技巧

SQL执行顺序

2021-06-09 14:13:48 114

原创 MySQL:锁问题

锁概述

2021-06-09 13:55:39 104

转载 MySQL:并发参数调整

从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在Mysql中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_cache_size、table_open_cahce。max_connections采用max_connections 控制允许连接到MySQL数据库的最大数量,默认值是 151。如果状态变量 connection_errors_max_connecti.

2021-06-08 18:05:05 96

原创 MySQL:内存管理及优化

内存优化原则将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。MyISAM 内存优化myisam存储引擎使用 key_buffer 缓存索引块,加速myis

2021-06-08 17:53:09 268

原创 MySQL:查询缓存优化

概述开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存。操作流程客户端发送一条查询给服务器;服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;将结果返回给客户端。查询缓存配置查看当前的MySQL数据库是否

2021-06-08 17:01:41 148

原创 MySQL:应用层优化

使用连接池对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据库连接池,以提高访问的性能减少对MySQL的访问避免对数据进行重复检索 在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两次连接,这样可以大大减少对数据库无用的重复请求。 比如 ,需要获取书籍的id 和name字段 , 则查询如下select id , name from tb_book;之后,在业务逻辑中有需要获取到书籍状

2021-06-08 16:40:03 132

原创 MySQL:SQL优化

优化insert语句当进行数据的insert操作的时候,可以考虑采用以下几种优化方案。如果需要同时对一张表插入很多行数据时,应该尽量使用多个值表的insert语句,这种方式将大大的缩减客户端与数据库之间的连接、关闭等消耗。使得效率比分开执行的单个insert语句快。 示例, 原始方式为:insert into tb_test values(1,'Tom');insert into tb_test values(2,'Cat');insert into tb_test values(3,'J

2021-06-08 16:16:07 145

原创 MySQL:大批量插入优化

当使用load 命令导入数据的时候,适当的设置可以提高导入的效率。对于 InnoDB 类型的表,有以下几种方式可以提高导入的效率:主键顺序插入因为InnoDB类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效的提高导入数据的效率。如果InnoDB表没有主键,那么系统会自动默认创建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这点,来提高导入数据的效率。 脚本文件介绍 :sql1.log ----> 主键有序sql2.log ----> .

2021-06-08 11:39:43 395

原创 MySQL:索引优化

索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。验证索引提升查询效率在准备的表结构tb_item 中, 一共存储了 300 万记录;根据ID查询select * from tb_item where id = 1999\G;查询速度很快, 接近0s , 主要的原因是因为id为主键, 有索引;根据 title 进行精确查询select * from tb_item where title = 'iphoneX 移动3G .

2021-06-08 11:23:15 105

原创 SpringBoot四十二:Https

https 现在已经越来越普及了,特别是做一些小程序或者公众号开发的时候,https 基本上都是刚需了。 不过一个 https 证书还是挺费钱的,个人开发者可以在各个云服务提供商那里申请一个免费的证书。我印象中有效期一年,可以申请 20 个。 今天要和大家聊的是在 Spring Boot 项目中,如何开启 https 配置,为我们的接口保驾护航。https 简介我们先来看看什么是 https,根据 wikipedia 上的介绍:超文本传输安全协议(HyperText Transfer .

2021-06-07 23:27:19 396

原创 Java对象转JSON时动态的增删改查属性

前言日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。JSON 字符串增加额外字段假如我们有这样结构的 JSON:{ "username":"javakf", "age":18}期望增加一个性别字段gender:{ "username": "javakf", "age": 18, "gender": "male"}首先使用 ObjectMapper 加载

2021-06-07 14:59:56 236 3

原创 Git

Git基本配置Git安装好之后,需要通过如下两行命令做一个基本配置,配置的信息将展示在我们每一次提交的后面,所以不要使用不方便公开的信息,如果不配置以后每次提交的时候都会让你输入用户名和密码。git config --global user.name "java" git config --global user.email "123456@qq.com"这个配置会保存在当前用户目录下的.gitconfig文件中。Git基本操作工作区和暂存区Git中引入了暂存区/缓存区(Stag

2021-06-07 14:09:24 159

原创 MySQL:SQL优化步骤

在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化。当面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题。查看SQL执行频率MySQL 客户端连接成功后,通过 show [session|.

2021-06-04 10:33:32 139

转载 MySQL:存储引擎

存储引擎概述和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。MySQL5.0支持的存储引擎包含 : InnoDB 、MyISAM 、BDB、MEM

2021-06-03 10:11:48 97

原创 MySQL:体系结构

Mysql的体系结构概览整个MySQL Server由以下组成Connection Pool : 连接池组件Management Services & Utilities : 管理服务和工具组件SQL Interface : SQL接口组件Parser : 查询分析器组件Optimizer : 优化器组件Caches & Buffers : 缓冲池组件Pluggable Storage Engines : 存储引擎File System : 文件系统1) 连接层最

2021-06-02 17:13:11 225

原创 MySQL:触发器

介绍触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。触发器类型NEW 和 OLD的使用INSERT 型触发器NEW 表示将要或者已经新增的数据UPDATE 型触发器O

2021-06-02 16:53:13 107

转载 MySQL:存储过程和函数

存储过程和函数概述存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程和函数的区别在于函数必须有返回值,而存储过程没有。函数 : 是一个有返回值的过程 ;过程 : 是一个没有返回值的函数 ;创建存储过程delimiter $create procedure pro_test1()beginselect 'Hello Mysql';en

2021-06-02 11:45:33 109

原创 SpringBoot四十一:防止重复提交

前言在传统的web项目中,为了防止重复提交,通常做法是:后端生成唯一的提交令牌(token),存储在服务端,页面在发起请求时,携带次令牌,后端验证请求后删除令牌,保证请求的唯一性。但是,上诉的做法是需要前后端都需要进行改动,如果在项目初期,是可以实现的,但是,在项目的后期,很多功能都实现好了,不可能大范围的去改动。思路自定义注解@NoRepeatSubmit 标记所有Controller中提交的请求通过AOP对所有标记了@NoRepeatSubmit 的方法进行拦截在业务方法执行前,获取当前用

2021-04-23 17:38:39 1176

drools决策表模版.xls

drools决策表模版

2021-08-18

ojdbc8.zip

安装:mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc8.jar

2020-07-14

空空如也

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

TA关注的人

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