自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速搭建Spring Boot项目及常用技术整合

Spring Boot简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot特点创建独立的Spring应用程序嵌入的Tomcat,无需部署WAR文件简化Maven配置自动配置Spring提供生产就绪...

2019-12-18 17:35:02 453

原创 vue 实现动态表单点击新增 增加一行输入框

点击增加后会新增一行,点击每行后面的删除图标则会删除该行,新增按钮只会出现在最后一行。

2023-08-11 09:27:08 1588

原创 Java8 Optional用法和最佳实践

Java8 Optional用法和最佳实践

2022-12-07 14:32:11 397 1

原创 docker-compose文件详解

docker-compose文件详解

2022-12-07 14:31:17 1616

原创 LibreSSL SSL_read: error:02FFF03C:system library:func(4095):Operation timed out, errno 60

LibreSSL SSL_read: error:02FFF03C:system library:func(4095):Operation timed out, errno 60

2022-12-07 14:30:41 2779

原创 ls-remote --tags --heads git://github.com/adobe-webplatform/eve.git

ls-remote --tags --heads git://github.com/adobe-webplatform/eve.git

2022-12-07 14:29:42 1047

原创 HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

2022-12-07 14:28:59 566

原创 Pig4Cloud之验证码

Pig4Cloud之验证码

2022-12-07 14:28:11 697

原创 Pig4Cloud之登陆验证(一)客户端认证处理

Pig4Cloud之登陆验证(一)客户端认证处理

2022-12-07 14:27:17 1737 1

原创 Pig4Cloud之登陆验证(二)发放token

Pig4Cloud之登陆验证(二)发放token

2022-12-07 14:26:48 1348

原创 Pig4Cloud之检验token

Pig4Cloud之检验token

2022-12-07 14:25:49 793

原创 Pig4Cloud之jasypt 配置文件加密

jasypt

2022-12-07 14:25:11 203

原创 SpringBoot动态定时任务

其实SchedulingConfigurer实现方法很简单,只需要实现SchedulingConfigurer并重写configureTasks方法,在启动类必须加上@EnableScheduling注解即可。@Configuration@EnableScheduling@Slf4jpublic class RuleTask implements SchedulingConfigurer { private volatile ScheduledTaskRegistrar registr.

2021-03-12 14:59:11 361

原创 单表查询和多表连接查询哪个效率更快

一.第一个解答来源于《高性能Mysql》中的回答很多高性能的应用都会对关联查询进行分解。简单地,可以对每个表进行一次单表查询,然后将结果在应用程序中进行关联。例如,下面这个查询:select * from tagjoin tag_post on tag_post.tag_id=tag.idjoin post on tag_post.post_id=post.idwhere tag.tag=’mysql’;可以分解成下面这些查询来代替:Select * from tag wher

2021-02-07 10:20:14 1220

原创 windows下安装redis并设置自启动

一、下载windows版本的Redis下载地址:https://github.com/tporadowski/redis/releases。Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 E 盘,解压后,将文件夹重新命名为 redis。解压后打开文件夹,内容如下:二、启动命令启动在路径处输入cmdredis-server.exe redis.windows.conf如果想方便的话,可以把 red

2020-09-30 08:30:11 164

原创 MySQL 常见存储引擎的区别

MySQL 常见的存储引擎,可以使用SHOW ENGINES命令,来列出所有的存储引擎EngineSupportCommentTransactionsXASavepointsFEDERATEDNOFederated MySQL storage engineMRG_MYISAMYESCollection of identical MyISAM tablesNONONOMyISAMYESMyISAM storage engineNONO

2020-09-30 08:28:55 193

原创 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid“ failed(2:No such file or directory)

问题[root@localhost sbin]# ./nginx -s reloadnginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)解决./nginx -c /usr/local/nginx/conf/nginx.conf[root@localhost local]# cd nginx[root@localhost nginx]# ll总用量 4dr

2020-09-14 16:45:24 1030

原创 幸存者偏差

​幸存者偏差(英语:survivorship bias),另译为“生存者偏差”,是一种认知偏差。其逻辑谬误表现为过分关注于目前人或物“幸存了某些经历”然而往往忽略了不在视界内或无法幸存这些事件的人或物。在第二次世界大战期间,英国几乎每天派遣轰炸机飞越英吉利海峡,许多飞行员在这个冒险行动中不幸牺牲。为了提高飞行员的生存机会,统计学沃德教授应军方要求,利用其在统计方面的专业知识来提供关于《飞机应该如何加强防护,才能降低被炮火击落的几率》的相关建议。沃德教授提出的建议非常奇怪:装甲位置不该是弹孔最密集的机翼,而

2020-09-14 16:42:00 5446

原创 分布式事务TCC

之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。###一、业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做下面的步骤:更改订单的状态为“已支付”扣减商品库存给会员增加积分创建销售出库单通知仓库发货这是一

2020-09-14 16:40:45 2854 3

原创 微信小程序版本自动更新

公司的小程序项目上线, 后期还会有小型的版本迭代. 为了让用户能在我们进行版本迭代后及时使用最新版本的功能. 做了以下优化…小程序的销毁当用户点击左上角关闭,或者按了设备Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。“冷启动” 和 “热启动”.热启动是指: 小程序打开后,在一段时间内(目前:5分钟)再次被打开,此时会将后台的小程序切换到前台。冷启动是指: 小.

2020-09-14 16:39:55 354

原创 Error:java: JDK isn‘t specified for module ‘xxx‘

错误:idea报错Error:java:JDK isn’t specified for module “XXXX”原因:项目中的.idea文件夹被删掉,导致项目目录出错解决:idea中关掉该项目,删除文件目录下的 .idea文件,重新打开项目即可。

2020-09-14 16:38:41 169

原创 /bin/bash^M: 坏的解释器: 没有那个文件或目录

问题描述在安装完成gitblit之后,运行gitblit.sh文件时报错[root@localhost gitblit-1.9.0]# ./gitblit.sh -bash: ./gitblit.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录错误原因这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r。修改错误使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令会把 xxxxxx

2020-09-14 16:38:08 161

原创 使用 Travis CI 自动更新 GitHub Pages

前言Github Pages 不能运行动态程序,只能输出一些静态内容。因此 Github Pages 非常适合用于前端项目的展示。可用于存放项目介绍、项目文档或者个人博客。本文介绍了怎么用 Travis CI 自动化部署 Github Pages。CI持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现.

2020-09-14 16:36:31 147

原创 免费CDN:jsDelivr + Github

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。放在Github的资源在国内加载速度比较慢,因此需要使用CDN加速来优化网站打开速度,jsDelivr + Github便是免费且好用的CDN,非常适合博客网站使用。1、新建Github仓库2、克隆

2020-09-14 16:35:36 253

转载 MySQL中update修改数据与原数据相同会再次执行吗

背景本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗?环境MySQL5.7.25Centos 7.4binlog_format为ROW参数root@localhost : (none) 04:53:15> show variables like 'binlog_row_image';+------------------+-------+| Variable_name | Value |+----

2020-08-22 08:25:44 232 1

原创 为什么阿里规定需要在事务注解@Transactional中指定rollbackFor?

阿里巴巴Java规范:方法【edit】需要在Transactional注解指定rollbackFor或者在方法中显示的rollback。异常的分类Throwable:有两个重要的子类:Exception(异常)和Error(错误),二者都是Java异常处理的重要子类,各自都包含大量子类。Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM (Java虚拟机)出现的问题。例如。Java虚拟机运行错误(Virtual.

2020-08-22 08:23:39 302

原创 SpringIOC容器设计

IOC简介在Spring IoC容器的设计中,作者设计了两个接口来表示容器BeanFactoryBeanFactory简单粗暴,可以理解为HashMap,key是BeanName,value是Bean实例,通常只提供put和get。这系列容器只实现了容器的最基本功能,可看做为简单容器。ApplicationContextApplicationContext应用上下文,它作为容器的高级形态而存在。应用上下文在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境做了许多适配。Spr

2020-08-22 08:22:22 335

原创 Linux安装Oracle

官方最低要求配置内存:1G(官方最低要求1G)硬盘:40G(企业版安装所需4.29G和1.7G数据文件)准备工作安装环境介绍系统:CentOS 7 64位Oracle版本:Oracle 11gR2下载Oracle安装文件官网下载地址下载出来是这样两个压缩包:linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip检查系统版本uname -m[root@localhost ~]# uname -m

2020-08-22 08:21:22 835

原创 Index column size too large. The maximum column size is 767 bytes.

创建索引的时候报错 :Index column size too large. The maximum column size is 767 bytes.错误原因由于MySQL的Innodb引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现此错误。以utf8mb4字符集字符串类型字段为例,utf8mb4是4字节字符集,则默认支持的索引字段最大长度是191字符(767字节/4字节每字符≈191字符),因此在varchar(255)或char(.

2020-07-30 08:19:18 1526

原创 JVM&GC(四)-通用术语

G1(Garbage First).G1是一个并行回收器,他把内存分割为很多不相关的区间(Region),每个区间可以属于老年代或者年轻代,并且每个年代区间可以是物理上不连续的。垃圾回收时都是需要停下应用程序,不然没有办法防止应用程序的干扰,然后G1 GC可以集中精力在垃圾最多的区间上,并且只费一点点时间就可以清空这些区间里的垃圾,腾出完全空闲的区间。由于这种方式的侧重点在于处理垃圾最多的区间,所以我们给G1取一个名字:垃圾优先(Garbage First).G1内部主要有四个操作阶段:年轻代回收(

2020-07-23 14:47:35 216

原创 Linux安装Oracle

官方最低要求配置内存:1G(官方最低要求1G)硬盘:40G(企业版安装所需4.29G和1.7G数据文件)准备工作安装环境介绍系统:CentOS 7 64位Oracle版本:Oracle 11gR2下载Oracle安装文件官网下载地址下载出来是这样两个压缩包:linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip检查系统版本uname -m[root@localhost ~]# uname -m

2020-07-23 14:45:48 1707 4

原创 JVM&GC(三)-System.gc()方法

前言在默认情况下,System.gc()会显示直接触发Full GC,同时对老年代和新生代进行回收。而一般情况下,垃圾回收应该是自动进行的,无需手工触发,否则就太麻烦了。示例public class TestGC { public static void main(String[] args) { new TestGC(); System.gc(); System.runFinalization(); }}如果在idea查看日志输

2020-07-19 10:19:37 938

原创 JVM&GC(二)对象提升规则

前言虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一次Minor GC,年龄就将增加1岁,当他的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代中。分配原则对象优先分配在Eden区,如果Eden区,如果Eden区没有足够的空间,虚拟机执行一次Minor GC。大对象直接进入老年代,这样做的目的是为了避免在

2020-07-19 10:19:06 190

原创 垃圾回收算法(7)-分代回收算法

前言Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:年轻代 ( Young )、老年代 ( Tenured)。年轻代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆大小 = 年轻代 + 老年代年轻代 = eden space (新生代) + from survivor +

2020-07-12 10:14:43 304

原创 垃圾回收算法(6)-增量算法

前言在垃圾回收过程中,应用软件处于一种Stop the World的状态。在Stop the World的状态下,应用程序的所有线程都会挂起,暂停一切工作,等待垃圾回收的完成。如果垃圾回收时间过长,应用程序会被挂起很久,将严重影响用户体验或者系统的稳定性。为了解决这个问题,即对实时垃圾手机算法的研究直接导致了增量收集算法的诞生。多进程运行思路最初,为了进行实时垃圾收集,可以设计一个多进程的运行环境,比如用一个进程执行垃圾收集工作,另一个进程执行程序代码。这样一来,垃圾收集工作看上去仿佛是在后台悄悄的干

2020-07-11 09:15:56 414

原创 垃圾回收算法(5)-标记整理算法

前言标记清除算法的确可以应用在老年代中,但是该算法不仅执行效率低下,而且在执行完内存回收后会产生内存碎片。所以JVM的设计者在此基础上做了改进,标记压缩法(也称标记整理法)由此诞生。算法原理当成功标记出内存中的垃圾对象之后,标记压缩法会将所有的存活对象都移动到一个规整且连续的内存空间中,然后执行Full GC(老年代的垃圾回收,或者被称为Major GC)回收无用对象所占用的内存空间。当成功压缩后,已用和未用的内存都各自一遍,彼此之间维系着一个记录下一次分配起始点的标记指针,当为新对象分配内存时,则可

2020-07-10 10:40:13 627

原创 垃圾回收算法(4)-复制算法

算法原理复制算法首先将或者的内存空间分为2块,每次只使用其中一块,在垃圾会搜时将正在使用的内存中的存活对象复制到未被使用的内存块中,之后清楚正在使用的内存块中的所有对象,交换2个内存的角色,最后完成垃圾回收。年轻代中的GCHotSpot JVM把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from和to)。默认比例为8:1,为啥默认会是这个比例,接下来我们会聊到。一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍

2020-07-10 10:39:20 342

原创 垃圾回收算法(3)-标记清除算法

前言标记清除算法(Mark-Sweep)是一种非常基础和常见的垃圾收集算法,该算法被J.McCarthy等人在1960年提出并成功的发明并应用于Lisp语言。涉及概念先来了解一下mutator和collector。这2个名词经常在垃圾收集算法中出现。collector指的就是垃圾收集器。mutator是指除了垃圾收集器之外的部分,比如说我们的应用程序本身。mutator的职责一般是NEW(分配内存)、READ(从内存中读取内容)、WRITE(将内容写入内存),而collector则就是回收不在使

2020-07-10 10:38:07 321

原创 垃圾回收算法(2)-根搜索算法

前言相对于引用计数算法而言,根搜索算法不仅同样具备实现简单和执行高效等特点,更重要的是该算法可以有效的解决在引用记数法中一些已经死亡的对象因为相互引用而导致的无法正确被标记的问题,防止内存泄漏的发生。算法原理根搜索算法是以根对象集合为起始点,按照从上至下的方式搜索被根对象集合所连接的目标对象是否可达(使用根算法后,内存中的存活对象都会被根对象集合直接或间接连接着)如果目标对象不可达,就意味着该对象已经死亡,便可将其标记为垃圾对象。在根搜索算法中不可达的对象,也并非是“非死不可”,这时候他们暂时处

2020-07-10 10:35:35 457

原创 垃圾回收算法(1)-引用计数法

算法原理引用记数法在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活的对象,哪些是已经死亡的对象,只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间。比如说,当我们编写以下代码时String p = new String("abc")abc这个字符串对象的引用计数值为1.而当我们去除abc字符串对象的引用时,则abc字符串对象的引用计数减1p = null由此可见,当对象的引用计数为0时,垃圾回收就发生了。引用计数算法很简单,它实际上是通过在对象头中分

2020-07-10 10:34:26 396

空空如也

空空如也

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

TA关注的人

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