自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 try-catch-finally执行顺序

1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。最终结论:任何执行

2023-07-17 14:52:13 109

原创 Bean的生命周期

Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:生命周期简单说明:

2023-03-20 21:36:21 235

原创 什么是JMM

先全局描述: 在处理指令时,CPU会拉取数据,优先级是从L1到L2到L3,如果都没有,需要去主内存中拉取,JMM就是在CPU和主内存之间,来协调,保证可见、有序性等操作。缓存是CPU的缓存,CPU的缓存分为L1(线程独享),L2(内核独享),L3(多核共享)JMM就是Java内存模型的核心,可见性,有序性都基于这实现。CPU核心,就是CPU核心(寄存器)主内存JVM,就是你堆内存。

2023-03-20 20:43:32 115

原创 服务器重启后jar包自动重启

添加本地Java环境,这两句必须添加!不然报错,找不到java命令。#系统引导后延迟5秒执行脚本,以保证稳定性。将自起脚本代码加入系统引导文件。

2023-03-01 14:26:09 704

原创 单链表双链表的反转

单链表反转:public class Node { public int value; public Node next; public Node(int value) { this.value = value; }}public class Test { public static void main(String[] args) { Node n1 = new Node(1); n1.next =

2022-04-05 14:58:38 678

原创 Redis学习笔记--SortedSet

SortedSet:按照分值排序的setzadd k1 3 apple 7 banana 9 orange:添加元素及分值zrange 0 -1 withscores:按索引取出zrangebyscore k1 3 7:按分值取出zscore k1 apple:根据元素取分值zrank k1 apple:根据元素取排名zincrby k1 apple 5:元素apple分值加5...

2021-11-26 09:21:32 365

原创 Ionic + Angular创建一个App的小demo

1、安装Node.js2、Install Ionic Tooling:npm install -g @ionic/cli native-run cordova-res3、Create an App:ionic start myApp tabs这里,myApp是项目名称,tabs是启动模板,项目类型是angular。tabs不是唯一可用的项目模板。在所有项目类型之间,有三个模板可用:tabs:基于选项卡的布局 sidemenu:基于侧边菜单的布局 blank: 一个单页的空项目ion

2021-11-23 14:03:24 620

原创 Redis学习笔记--set

特征:无序,去重sadd k1 a b a c d a e f:添加元素smembers k1:查看。a会被去重操作srem k1 d:删除k1中的dsadd k2 1 2 3 4 5sadd k3 4 5 6 7 8sinter k2 k3:取k2 k3交集的结果,即4 5sinterstore result k2 k3:取k2 k3交集的结果放入key result中sunion k2 k3:取k2 k3并集的结果,即1 2 3 4 5 6 7 8sunionstor

2021-11-22 22:39:10 357

原创 Redis学习笔记--hash

类似于集合中的Maphset tom name tom:存key为tom的name为tomhmset tom age 18 address shanghai:批量存key为tom的age addresshget tom name:取key为tom的namehmget tom name age:批量取key为tom的name agehkeys tom:key为tom的所有字段hincrbyfloat tom age 0.5:key为tom的age加0.5...

2021-11-22 22:07:16 349

原创 Redis学习笔记--list

list

2021-11-19 21:52:39 578

原创 Redis学习笔记--string、bitmap

String字符串:set k1 keyName nx:只有keyName不存在的时候才能设置成功,可实现分布式锁。set k1 keyName xx:只有keyName存在的时候才能设置成功,即更新操作。mset k1 a k2 bmget k1 k2批量set和get。append k1 "hello":将"hello"追加到k1字符串的后面。getrange k1 3 4:取k1的第4个到第五个字符。getrange k1 3 -1:取k1的第4个到最后一个字符,利用.

2021-11-09 22:27:51 787

原创 Java反射

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。在编译后产生字节码文件的时候,类加载器子系统通过二进制字节流,负责从文件系统加载class文件。在执行程序(java.exe)时候,将字节码文件读入JVM中--->这个过程叫做类的加载。然后在内存中对应创建一个java.lang.Class对象-->这个对象会被放入字节码信息中,这个Clas

2021-10-26 22:53:33 103

原创 SpringBoot动态刷新yml中的配置

/** * 动态刷新yml配置Controller * @author Forest */@Slf4j@RestController@RequiredArgsConstructor@RequestMapping("/refresh")public class RefreshYmlController { private final ContextRefresher contextRefresher; private final MockConfig mockConfig.

2021-08-25 18:33:34 2180

原创 项目打jar包后resources目录下文件的读取

1.踩坑,本地编辑器运行,这种方式完全可以ClassPathResource classPathResource = new ClassPathResource("/template.xlsx");InputStream inputStream = classPathResource.getInputStream();2.一旦项目打包jar发布到服务器上就会出问题原因:在本地进行调试时,文件是真实存在于磁盘的某个目录。此时通过获取文件路径,是可以正常读取的,因为文件确实存在。.

2021-01-13 14:50:47 1035

原创 生活应该过成现在的样子吗?

从小,或者说从我们有自己的独立想法时,我们就喜欢畅想自己未来是什么样子。但不知大家有没有一种感觉,我们活得越来越不像自己当年想象的那种样子。 我的童年是快乐的,废话,大部分人现在回头看看自己的童年应该都挺开心的,如果小部分感觉自己小时候不快乐,呵呵,你总有一天会改变这个幼稚的看法吧!童年给我留下印象最深刻的是五六年级时,那时候生活虽质朴,但家庭是给我最富有的财富。每天放学后,可以从书桌上搜集爸爸妈妈买菜找回的零钱放进自己的存钱罐,那清脆的声响是我记忆中最美妙的。待到罐子满了,我就可以拿着我...

2020-11-09 14:13:28 706 1

原创 解决RestTemplate请求返回结果中文乱码??????

清除所有messageConverters,由于我项目中使用FastJson解析的,所以加入FastJsonHttpMessageConverter,由于FastJsonHttpMessageConverter默认字符集就是UTF8 ,故解决乱码问题。@Bean RestTemplate getRestTemplate() { RestTemplate restTemplate = new RestTemplate(); restTemplate.get

2020-07-20 10:34:31 1681

原创 Java实现RSA+AES混合加解密

import javax.crypto.SecretKey;import java.security.PrivateKey;import java.security.PublicKey;public class EncryptDecryptUtil { /** * 获取公钥加密后的AES秘钥 * @param publicKeyStr Base64编码后的公钥 */ public static String getPublicEncryptAESKe.

2020-06-29 15:49:56 846

原创 MySQL之索引优化的一些细节

1.当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层2.尽量使用主键查询,而不是其他索引,因为主键查询不会触发回表查询3.union all,in,or都能够使用索引时,但是推荐使用in4.范围列可以用到索引,范围条件是:<、<=、>、>=、between,范围列可以用到索引,但是范围列后面的列无法用到索引,索引最多用于一个范围列5.强制类型转换会全表扫描6.更新十分频繁,数据区分度不高的字段上不宜建立索引。更新会变更B+树,更新频繁的

2020-05-10 17:09:49 162

原创 MySQL之锁机制

1.MySQL锁的基本介绍​ 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。​ 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储..

2020-05-10 12:25:01 265

原创 MySQL之分区表

1.分区表的底层原理分区表由多个相关的底层表实现,这个底层表也是由句柄对象标识,我们可以直接访问各个分区。存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个完全相同的索引。从存储引擎的角度来看,底层表和普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。​ 分区表的操作按照以下的操作逻辑进行:​select查询​ 当查询一个分区表的时候,分区层先打开并锁住所有的底层表,优化器先判断是否可以.

2020-05-10 11:08:10 167

原创 MySQL行转列、列转行

1.行转列建表语句如下:CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `USER_NAME` varchar(20) DEFAULT NULL, `COURSE` varchar(20) DEFAULT NULL, `SCORE` float DEFAULT '0', PRIMARY KEY (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAUL...

2020-05-09 21:55:26 168

原创 前缀索引实例说明

有时候需要索引很长的字符串,这会让索引变的大且慢,通常情况下可以使用某个列开始的部分字符串,这样大大的节约索引空间,从而提高索引效率,但这会降低索引的选择性,索引的选择性是指不重复的索引值和数据表记录总数的比值,范围从1/#T到1之间。索引的选择性越高则查询效率越高,因为选择性更高的索引可以让mysql在查找的时候过滤掉更多的行。​ 一般情况下某个列前缀的选择性也是足够高的,足以满足查询的性...

2020-05-03 21:55:56 191

原创 回表,覆盖索引,最左匹配,索引下推

回表:假设现为name列建立索引,此时最后面的节点存放的是主键。当我们现在用name做查询的时候,第一次会查找name列的B+树,根据name列的B+树的叶子节点取到主键,再根据主键去查主键的B+树,从中取出整行记录,这就叫回表。覆盖索引:select id from t_user;(此时就是覆盖索引)因为叶子节点就存在id主键,不需要再从主键的B+树里获取数据,因此就没了回表的过...

2020-05-03 18:30:53 428

原创 MySQL执行计划

​ 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。​ 可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。​ 官网地址:https://dev.mysql.com/doc/refman/5.5/en/explain-output.html1、执行计划中包含的信息...

2020-05-03 16:27:45 135

原创 分布式锁之(RedLock)红锁

需要锁的条件:多任务环境下。(进程,线程) 任务都对同一共享资源进行写操作。 对资源的访问是互斥的。操作周期:竞争锁。获取锁后才能对资源进行操作。 占有锁。操作中。 其他竞争者,任务阻塞。 占有锁者,释放锁。继续从1开始。JVM 锁 解决不了分布式环境中的加锁问题。手写Redis锁:redis:内存存储的数据结构服务器,内存数据库。可用于:数据库,高速缓存,消息队列。...

2020-05-02 11:42:00 8781 2

原创 接口安全问题及解决方案

数据在网络中传输,中间会经历无数路由器,而每个路由器都可以抓包。 为防止被窃取需要加密,有对称加密和非对称加密。 对称加密:两个密钥一样。(安全隐患,密钥会被泄露)非对称加密:密钥不一样。非对称更安全,性能低。如果黑客拿到密文,也没啥用,因为密钥他不知道。加密(对称加密DES,AES,非对称加密RSA),加解密:https://www.sojson.com/encry...

2020-05-02 10:38:39 1454

原创 分布式事务解决方案

1.二阶段提交协议基于XA协议的,采取强一致性,遵从ACID.2PC:(2阶段提交协议),是基于XA/JTA规范。XAXA是由X/Open组织提出的分布式事务的架构(或者叫协议)。XA架构主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transacti...

2020-05-01 18:38:53 230

原创 分布式事务解决方案之Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT 模式前提基于支持本地 ACID 事务的关系型数据库。 Java 应用,通过 JDBC 访问数据库。整体机制两阶段提交协议的演变: 一阶段:业务数据和回滚日志记录在同一个本地事...

2020-05-01 18:25:52 370

原创 K8S集群部署

1.环境准备,使用三台机器一主两从1. 设置主机名与时区timedatectl set-timezone Asia/Shanghai #三台虚拟机都要执行hostnamectl set-hostname master #132执行hostnamectl set-hostname node1 #133执行hostnamectl set-hostname node2 #...

2020-04-25 16:04:14 463

原创 容器编排工具之K8S基本概念

Docker:Google:

2020-04-19 21:30:25 210

原创 Docker之容器间的通信与共享数据

1.容器间单向通信--link:容器间单向通信启动tomcat容器,并赋予名字web,与名字为database的容器建立单向通信2.基于Bridge容器间双向通信创建一个名称为my-bridge的网桥:将两个容器都与这个网桥连接后,就可以互通了:3.容器间共享数据...

2020-04-19 16:30:16 347

原创 Dockerfile基础命令与运行指令

1.Dockerfile基础命令FROM:基于基准镜像LABEL&MAINTAINER:说明信息MAINTAINER:forest.comLABEL version = "1.0"WORKDIR:设置工作目录ADD&COPY:复制文件ENV:设置环境常量2.Dockerfile运行指令RUN&ENTRYPOINT&a...

2020-04-19 15:45:38 345

原创 Docker之Dockerfile构建镜像

Dockerfile:镜像描述文件eg:Dockerfile自动部署tomcat应用Dockerfile文件的书写:#设置基准镜像FROM tomcat:latest#当前镜像属于什么机构MAINTAINER forest.com#切换工作目录,不存在则创建WORKDIR /usr/local/tomcat/webapps#复制目录下的所有文件到容器目录ADD doc...

2020-04-19 15:00:46 112

原创 Docker之容器的内部结构与生命周期

Tomcat容器的内部结构:进入容器中执行命令:Docker容器与镜像默认存储位置:容器的生命周期:

2020-04-19 11:37:10 197

原创 Docke之快速部署Tomcat

Docke常用命令:Dockerhub中央仓库:https://hub.docker.com/默认拉取latest版本镜像:拉取指定版本镜像:创建tomcat容器,启动应用:Docker宿主机与容器通信:设置宿主机8000端口映射tomcat8080端口:启动成功后,浏览器访问宿主机ip:8000即可请求到tomcat。后台...

2020-04-19 11:13:38 208

原创  Docker基本概念与CentOS7上安装Docker

Docker基本概念:docker是提供应用打包,部署与运行应用的容器化平台:docker体系结构:容器与镜像:docker执行流程:CentOS7安装Docker:yum-utils:yum的工具集device-mapper-persistent-data | vm2:安装数据存储的驱动包设置新的安装源为阿里云的检测那个安...

2020-04-19 10:40:58 132

原创 mac上安装配置maven

1、下载Maven 打开Maven官网下载页面:http://maven.apache.org/download.cgi 下载:apache-maven-3.5.0-bin.tar.gz 解压下载的安装包到某一目录,比如:/Users/xxx/Documents/maven 2、配置环境变量打开terminel输入以下命令:vim ~/.bash_profile打开.b...

2020-04-17 23:06:18 392

原创 mac上安装JDK1.8及环境变量配置

首先本次安装的系统版本和配置如下:由于系统版本各有差异,会导致菜单选项各有不同,请大家注意。教程内容为在MAC苹果系统下安装JDK1.8并配置系统环境变量。主要分为以下几个步骤:1.到Oracle官网下载JDK1.8安装包。2.打开获取到的安装包按步骤安装到系统上。3.配置系统的环境变量。4.验证JDK1.8是否安装成功。1.到Oracle官网下载JDK1.8安...

2020-04-17 23:02:20 1840

原创 tomcat安装

一、下载tomcat用浏览器打开tomcat官网:http://tomcat.apache.org/在左侧的导航栏Download下方选择最新的Tomcat 9,点击页面下方的“ 64-bit Windows zip (pgp, md5, sha1)“进行下2.下载完成二、安装tomcat解压后即可使用三、配置环境变量配置jdk的环境变量(略) 在...

2020-04-17 22:49:09 410

原创 http协议

2020-04-17 22:36:15 121

空空如也

空空如也

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

TA关注的人

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