自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JMH:让你的Java程序性能翻倍的神器

为什么拼接大量字符串,StringBuilder 比String 效率高 无论你是想优化现有的Java代码还是开发新的项目,JMH都能够帮助你准确、可靠地测量和分析代码的性能,让我们一起来探索JMH的神奇之处吧!JMH是由OpenJDK团队开发的一款专业的基准测试工具,旨在提供一个可靠的测试框架,帮助Java开发者进行代码性能的评估和优化。JMH是一款功能强大的Java性能测试工具,它能够帮助开发者准确、可靠地评估代码的性能,并为性能优化提供参考。

2023-10-20 09:53:22 270

原创 mybatis-plus 数据字段进行加解密入库,且加密字段支持模糊搜索

需求很简单: 就是将数据存储到数据库,并且将敏感数据字段进行加密处理保存(比如:身份证,手机号,银行卡 等等)需求也很变态:加密的数据要模糊搜素!!如果需求不需要模糊搜素,直接加密入库就完事了,直接看这篇文章mybatis-plus进行数据字段加密解密入库,就可以了!工具类import cn/**/*** iktry {Lexeme le;= null) {} /*** 部分分词} }/**/*** ik。

2023-09-09 15:39:11 1882 3

原创 RSA非对称加密算法工具类

【代码】RSA非对称加密算法工具类。

2023-07-31 18:01:00 283

原创 JVM内存结构—— 程序计数器,虚拟机栈 解析

全称: Java Virtual Machine Stacks (java 虚拟机栈)线程运行时的内存空间,一个线程运行需要一个栈,多个线程运行则需要多个虚拟机栈虚拟机栈的组成: 一个虚拟机栈是由多个栈帧(Frame)组成每个线程只能有一个活动栈帧(对应着当前正在执行的方法)栈帧:每个方法运行时内存空间(方法内的方法参数,局部变量,返回地址等等都需要内存空间)一个栈内一个栈帧一个栈内多个栈帧。

2023-07-15 23:08:18 635

原创 JVM内存结构——前言

1. 一次编写,到处运行的机制 (因为java语言是跨平台的,跨平台就是在jvm这个层面进行实现的,jvm屏蔽了字节码以及底层操作系统的差异,对外提供一致的运行环境)2. 自动内存管理机制,垃圾回收功能(跟C语言对比,c语言需要程序员自己去释放内存)3. 数组下标越界检查 (跟c语言对比,C语言不会进行下标越界检查,需要程序员自己去检查)4. 多态(让程序代码可扩展性有巨大提升,jvm内部使用虚方发表机制实现多态)

2023-07-15 22:54:25 169

原创 mysql——查询优化,重中之重

mysql优化,在工作中是重中之重,合理查询能大大加减少服务器压力,系统效率指数倍提升

2023-07-07 10:30:45 242

原创 mysql —案例复杂查询+索引使用+DBeaver中创建索引

接上章 我们 对一个简单的选课功能进行 设计分析实际上在工作中 拿到一个需求,也是这样的一个分析过程一个份 需求文档+原型 出来,只要是你负责这个模块,就需要你自己建表建库,设计接口文档,也许现在有的公司会有一个带你的大哥会帮你建表建库【甚至接口文档都帮你写好了,你只需要按照接口进行开发】,那也只是初步的【实习生】,到后面还是得靠自己再有的公司是需要开发人员写概要设计(里面就包含数据库设计)的 , 但总的来说是八九不离十,分析步骤还是一样的。

2023-07-07 10:18:47 1177

原创 mysql——数据库设计

之前我们已经了解了 mysql 的基本增删改查现在我们系统的进行一遍数据库的设计来个例子:下面我们将围绕这个例子来进行数据库的设计我们就来简单的模拟 大学教务处的选课 系统 中的 选课功能注意:简单的模拟,功能可能想到的没那么完善。

2023-06-30 10:17:03 1168

原创 mysql ——基本约束以及语法 以及 Dbeaver基本使用

说到约束,就不得不想到命名规范,跟java一样,mysql也有一套自己的命名要求库名尽量与业务名称一致,比如这是一个办公系统,你可以命名 将数据库命名为office, 多个单词组成全小写 例如:officeoa表名 不使用复数MySQL 5.7 Keywords and Reserved Words (官方列出的)

2023-06-29 13:55:32 1094

原创 java进阶—重要概念反射

反射: 它是java中的一个很重要的概念,是框架设计的灵魂框架呢?就是一个半成品软件,我们在这半成品上进行开发,比如我们经常提到spring springmvc springboot spingcloud 等等也许有的小伙伴会说,框架别人都写好了,我只要在上进行CURD就行了,还要学习反射干什么?,话是这么说,但知道反射,对于后续框架的学习与应用会更加得心应手。

2023-06-27 10:17:55 647

原创 java进阶—通俗易懂线程池的概念(底层原理)及使用

首先,我们知道创建一个线程 可以直接 使用这种形式来创建,当线程的run 方法执行结束,线程就终止了,线程对象就会被垃圾回收机制(GC)释放然而在我们 开发工作中,特别是一些大厂,高并发的情况随处可见,就需要很多线程来支撑,在没了解线程池之前,我们创建多个线程是这样的无非就是new多个,你要多少个我给你创造多少个要知道,在高并发的情况下,这样创建多线程是很消耗性能的,不可取,这就需要对线程进行统一管控,就引入了线程池的概念。

2023-06-27 09:57:01 156

原创 java进阶—代码演示多线程的生命周期

回顾一下到现在,我们已经知道了今天,我们一起来看看线程的生命周期,生命周期这个词在后续的javaweb 相关知识点中会经常提起知己知彼,想要用好线程,就得先了解它。

2023-06-26 14:09:14 149

原创 mysql——初步认识

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库说人话 就是 数据库是一个电子仓库,里面存了一些数据我们要学习的mysql就是数据库中的一种,并且是一种关系型数据库,当然有关系型就会有非关系型,这边不再过多赘述,参考这篇文章。

2023-06-26 13:59:54 422

原创 java(SpringBoot)中操作Redis的两种方式

之前我们介绍过了redis的五中基本类型以及在可视化界面进行操作,那么在开发中(在代码中)我们通常使用,jedis进行操作redis,要是springboot 项目,我们通常使用redisTemplte进行操作首先将redis启动。

2023-06-25 19:30:22 1954

原创 redis 的基本介绍以及 五种 数据类型

一句话:redis 是一个开源的、使用C语言编写的、支持网络交互,基于内存也可持久化的 key-value (非关系型)数据库redis作者博客,有兴趣的小伙伴可以去逛一逛:http://github.com/antirez。

2023-06-21 09:36:02 1310 1

原创 redis—安装以及可视化

redis 是一种非关系型数据库,什么是非关系型数据库,之前我们在mysql专栏 也有提到过,这边就不再过多的赘述,忘记了的小伙伴可以再次阅读这篇文章 终于明白了数据库的【关系型】与【非关系型】redis 是一种非关系型数据库,什么是非关系型数据库,之前我们在mysql专栏 也有提到过,这边就不再过多的赘述,忘记了的小伙伴可以再次阅读这篇文章其实这还是挺重要的,上次我们有个初级程序员来面试,我作为旁听,主考官就问了关系型数据库跟非关系型数据库,答的模棱两可,会的不多。

2023-06-21 09:22:35 3499

原创 java8 (jdk 1.8) 新特性——Stream ApI以及具体实例

简单来说就是一个类库,里边有一些方法方便我们对集合数据进行操作,就好像使用 SQL 语句进行操作数据库一样优点就是,使我们代码简洁更高效的处理数据,高效!!一个完成的stream 流操作包含以下内容一个数据源,数据源可以是集合,数组中间链的操作 (比如 过滤, 去重,排序 等等)终止操作,产生一个结果(比如重新收集成集合)userInfoList . add(new UserInfo(1 , "张三" , 23));

2023-06-19 16:24:17 886

原创 java8 (jdk 1.8) 新特性—— 方法引用+构造器引用

其实就是,之前已经知道 Lambda 是作为一个函数式接口的实例 ,因此,方法引用也就是一个当要将值传给Lambda 体,已经有实现的方法,不用自己在lambda 体里边写多行逻辑代码接口中抽象方法的形参列表 和 返回值类 与 方法引用 的形参列表和返回值类型 相同要是对lambda 体 是什么,跟函数式接口不明白,可以先看看这篇篇文章,循序渐进,很简单,总体概括细分:对象 : : 非静态方法 (适用)类 : : 静态方法 (适用)

2023-06-19 11:56:08 619

原创 java8 (jdk 1.8) 新特性——Lambda 以及函数式接口

目前已知的是,有个箭头 ->说一大段官方话,也没有任何意义我们直接看代码:之前我们创建线程是这样的初次认识可能会觉得有点离谱,看不懂别急,还有更离谱的很常见的一个例子,比较两个整数的大小之前是这样写的甚至还可以这样 (这个是方法引用)第一个数比第二个数大 :返回 1小:返回 -1相等:返回 0刚接触是不是黑人问号,这是什么玩意很好,到这,你认识到了lambda 一个缺点,可阅读性差 ,优点 代码简洁小结:看到 -> lambda 看到 : : 方法引用。

2023-06-16 16:46:50 713

原创 java8 (jdk 1.8) 新特性 ——初步,发现不一样的新特性

用一个例子来说明:有这么24个篮球,编号分别为1-24,需要将篮球分成六组应该怎么分这还不简单 :编号 1 -4 第一组 5-8 第二组 9-12 第三组编号 13-16 第四组 17-20 第五组 21-24 第六组。

2023-06-16 10:58:08 862

原创 IDEA 开发必备神级插件

工欲善其事, 必先利其器” 分享几款 自用好用到起飞的 IDEA插件插件下载方式file->settings->plugins->macketplace—>然后搜索。

2023-06-13 17:32:36 1001

原创 java进阶—线程间通信(通俗易懂等待唤醒机制)

今天我们来看一看,线程之间的通信,也就是我们所说的等待唤醒机制。

2023-06-10 16:52:50 764

原创 mysql 判断 某个值是否存在json数组中

【代码】mysql 判断 某个值是否存在json数组中。

2023-06-08 16:21:29 855

原创 Java 进阶—死锁造成原因及其解决

先举个通俗点的例子 小明跟小红分别同时参加两个会议,这时候办公室刚好只有一台笔记本(在小红手上),一台投影仪(在小明手上),这是两个都想要对方的东西,两人互不相让,开始争执,这样都开不成会议,就形成了死锁。今天我们来了解一下线程死锁,死锁很好理解,从字面上来看就是锁死了,解不开,在大街上看到一对卧龙凤雏的情侣,怎么说,你们给我锁死,不要分开去霍霍别人。把小明跟小红换成两个线程,所以,一句话,死锁就是两个或两个以上的线程争夺彼此的锁,造成阻塞。首先,死锁产生需要两个或者两个以上线程 (例子中的小明跟小红)

2023-06-08 11:31:06 1037 1

原创 Linux tomcat 8 配置访问本地文件,并且配置https

就可以通过 【http:// ip + 端口号+ tomcat配置的代理访问路劲+文件名】 来访问文件。这边注意打开 HTTP/1.1 下的注释配置,并且进行修改。keystorePass: 前边cmd回答问题的秘钥库口令。keystoreFile:生成的证书库文件地址。本地要有jdk 【已经配置好环境变量那些】一步一步回答问题,最后会在F 盘生成文件。端口号为配置的 8443 ,成功访问文件。

2023-06-07 15:53:32 1398

原创 java根据 【父类id】 【查询】其所【有子类id 集合】

【代码】java根据 【父类id】 【查询】其所【有子类id 集合】

2023-04-23 09:26:09 450 1

原创 java进阶—线程安全问题

就比如,快五一了,12306 购票,假设从北京到上海的 高铁票 一共只有200 张,现在3个人同时在线抢票,可以把一个人的app理解成一个线下窗口,这样在没有处理线程安全的情况下,就会出现抢到同一张票的可能性。比如,你去上厕所,一个坑位一个人,你刚蹲进去,刚好另一个人也很着急,他刚好也进去了,这就出事了,解决办法,是不是给厕所上了锁,你进去,锁住,别人只能等,等你出来他才能进去。这里先说明一点,这里加了sleep,并不说明 加了才出现 错票的线程问题,为了演示,我们只是把概率提升了,不加也会出现。

2023-03-07 16:18:30 377

原创 java 进阶—线程的常用方法

解析(看的懂得小伙伴可以略过): 我们在主线程中,直接加了 join, 所以得等主线程执行完成再执行主线程,由于我们是在主线程之后加的判断线程 thread-0是否存活,这时候 thread-0 已经执行完任务了,生命周期结束,所以此时的thread-0 已经终止了。举个例子:比如还是前面 thread-0 跟 主线程 抢占cpu执行权,现在我们在主线程中加一个 限制 条件,当主线程 循环到 10 时,让主线程进入阻塞状态,thread-0优先执行完,主线程再开始执行。今天,我们来看看线程的基础操作。

2023-03-02 16:47:12 341

原创 java进阶—多线程

学习线程,我们先来了解了解什么是进程?什么是线程:就是在操作系统中运行的程序:就是进程的一个执行单元,或者一条执行路劲比如:我们打开应用商店,这个应用商店就是一个进程,应用商店里面也可以同时下载很多应用,每个应用的下载就是线程一个进程至少有一个线程,一个进程里面如果有多个线程,我们称这个进程为多线程进程我们先来看看程序没有多线程是怎样运行的现在有一个售票的窗口 Ticket ,里面有可以买票的功能, 模拟两个人进行购票。

2023-03-01 16:54:45 282

原创 java进阶Map 集合

泛型里面,贴的标签是 键值对的类型 , ,括号里面的3 是设置这个Map 容器的大小 ,开发中一定要设置map的初始化大小,具体多少按需求而定。可以说HashMap在开发中最常用,代码中随处可见,创建也很简单,new 一个 ,一样的集合创造出来了,不用就浪费了。创建三个学生,有属性(姓名,年龄),给每个学生定义上整形编号, 保存在map中,并且遍历输出学生编号,姓名,年龄。可以看到,entrySet效率是最高的 forEach 效率是最低的。【最后来一个例子,加深对map集合的使用】

2023-02-23 09:28:58 316

原创 java进阶—一篇文章搞懂set 集合 及其底层实现

linkedHashSet (这个是HashSet的子节点),它是有序且唯一,底层结构为链表加哈希表,链表保证了元素有序(这个有序是顺序,不是排序的大小),有序是因为它在节点处增加了前和后 (属性维护节点的前后添加顺序)那如果我要找 16 号篮球球在哪个组呢?这数据才24, 要找到也方便,要是数据量变大,成百上千,分成多个组,要快速找到想要的编号在哪个组,就显得困难了。这要我们要找一个编号就很方便,比如找16,16%6 =4 16 在第四组 ,这种方式就是高效的散列,我们称之为Hash。

2023-02-03 16:55:03 1205

原创 java进阶—List

上节回顾List 是一个有序的,允许重复的Collection,其下的子类主要有 ArrayList LinkedList,Vector(这个官方不推荐使用)那么同为list的子类,ArrayList 跟 LinkedList 有什么区别呢?数组的角标从0 开始 这个我们之前已经知道了,数组的好处查询快,有角标直接定位就好了,但是增删的效率比较慢当进行删除一个元素操作时,其他元素需要向前或者向后移动。

2022-12-22 14:32:03 1667

原创 一篇文章彻底明白重要概念——注解

好,看不懂没关系一步一步慢慢来先不管注解,注释这个概念应该就很熟悉了,文档注释,单行注释,多行注释注释是对一段程序,一个方法,一个类进行描述,是给我们程序员看的,都知道,注解是不会被编译的,会被忽略注解,同样的道理,其实就是用来说明代码的,但是注解是 给计算机看的,是会被编译的因此: 注解概念:jdk1.5之后出现,是对程序进行说明,并且会被编辑,给计算机看的来看看toString 方法

2022-12-21 14:34:57 562

原创 java进阶—集合

在面向对象那刚熟悉的 类(class)、接口(interface)、枚举、字符串(String 以及 他的衍生类 StringBuild、StringBuffer,数组 等等)Map集合中的每一个元素都包含键值对,并且key是唯一的,使用map集合可以根据指定的key找到value,这一个特性在开发中合理使用,能极大提高性能。前面我们知道了一个能存东西的数据结构,数组 java 基础——数组,现在我们来看一个高级一点的东西,集合。现在我们已经清楚的明白了,集合是什么,集合的作用。

2022-11-28 13:57:53 342

原创 java基础—String

这两种创建最主要的区别在于,一个在公共池中,一个在堆内存中,不用想new 出来的都在内存中,代码的高效能节省很多成本,尽量不要让堆内存有压力,后面我们会知道,JVM 的优化都是在 堆内存中。是在堆内存中重新开辟一块新的空间,因此msg1跟msg3不是同一个内存地址,返回false。接着执行第二行代码,会在公共区找有没有“java资讯” 这个对象,有就直接拿来用 ,所以msg1跟 msg2 内存地址相同,返回true。这在堆内存中又开辟了一个新的空间,所以两个内存地址不同,返回 false。

2022-11-23 11:26:19 390

原创 java8 (jdk 1.8) 新特性——Stream ApI

简单来说就是一个类库,里边有一些方法方便我们对集合数据进行操作,就好像使用 SQL 语句进行操作数据库一样优点就是,使我们代码简洁更高效的处理数据,高效!!官方java8 Api中文文档 在公众号内 回复关键字 【文档】 获取一个完成的stream 流操作包含以下内容一个数据源,数据源可以是集合,数组中间链的操作 (比如 过滤, 去重,排序 等等)终止操作,产生一个结果(比如重新收集成集合)userInfoList . add(new UserInfo(1 , "张三" , 23));

2022-11-22 14:43:37 598

原创 vue 使用screenfull 实现全屏展示,全局水印实现, 以及全屏放大后部分组件无法使用,水印无法全屏显示问题的解决

加上 :popper-append-to-body=“false” 后 el-select 下拉文字会肯会出现没有对齐情况。以当前(水印为当前登录用户姓名)场景为例,用户登录成功将用户姓名存储进store。解决: 加上 :popper-append-to-body=“false”加上 popper-class=“select-popper”解决: 加上 :append-to-body=“false”解决:加上 :append-to-body=“false”监听是否全屏,未全屏,移除水印节点。

2022-11-17 15:57:05 3384 2

原创 mysql 从入门到放弃— 数据库设计

之前我们已经了解了 mysql 的基本增删改查直接进入主题来个例子:下面我们将围绕这个例子来进行数据库的设计我们就来简单的模拟 大学教务处的选课 系统 中的 选课功能注意:简单的模拟,功能可能想到的没那么完善,不要杠我。

2022-11-16 14:35:18 1015

原创 Java 重写、重载,这篇文章看了就明白

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写也就是说:重写就是子类去重新写父类可以给你访问的方法,你的方法跟父类的方法名字,返回值,参数类型一模一样,外部的基本结构不变,方法里面的核心,逻辑内容自己重新写比如:父类 Animal 的方法System . out . println("动物会睡觉");} }子类 猫 CatSystem . out . println("猫会睡觉");} }

2022-11-07 10:51:33 132

原创 MYSQL5.7 保姆级安装教程

现在要是说mysql是什么东西,就不礼貌了虽然有的同学没有进行系统的深入学习,但应该也有个基本概念【不了解也没关系,后续会进行mysql专栏讲解】简单来说,存储数据的学习mysql,就要先安装它上官网 :打开网址,我们可以看到最新版本,但我们不安装最新版本,我们安装5.7 ,可以这么说,目前大多数公司使用最多的版本还是5.7 ,[当然也有8.0的] 为什么都选择5.7 呢?

2022-11-03 13:53:05 292

空空如也

空空如也

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

TA关注的人

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