自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 split 分割字符串方法解析,substring 截取字符串方法解析;二者的作用和区别?使用时需要注意什么?附代码和运行图

众所周知,开发过程中,我们时常会遇到需要切割字符串或截取字符串的需求,例如按照特殊符号切割、或按照标点符号截取等。对于切割字符串方法和截取字符串方法,Java为我们提供了 split 切割方法,substring 截取方法,下面小编就来说说二者的用法和区别。

2024-09-12 15:28:17 575

原创 BigDecimal 接收数据库 decimal 类型数据,格式化为 #.000(#.角分厘)

经过查询之后,通常会将金额进行格式化,例如100元要格式化显示为100.00元;而我们在开发时,从数据库中查到 "decimal"、"float" 数据类型的数据,通常都是使用。数据库存储金额时,通常也是使用的 "decimal"、"float"等高精度类型。格式化的方式很简单,Java 提供了现成的格式化 API 供我们使用。开发过程中,我们在接触到关于金额的计算时,通常都会进行非常的精确的计算。举例 123456.789 元,拆解为如下表格所示。在实际的开发过程中,通常业务逻辑都是下面这样的,

2024-09-10 18:58:26 351

原创 万字精解 JavaScript 鼠标事件,键盘事件,事件处理程序,表单事件,看这一篇就够了(带源码和运行图)

事件其实也可以简单的理解为用户进行的每一步操作,用户访问我们的页面,一定会做各种各样的操作。比如我点击某个链接、某张图片、或填写个人信息然后提交按钮等这一系列用户执行的操作都可以称之为事件。用户点击页面可以交互的区域,也会受到交互的反馈。比如我输入账号密码登录,过一会就会反馈我登陆成功;又或者我填写个人信息然后提交,会反馈给我提交成功或保存成功;其实,这种效果都是由事件处理程序来完成的,当用户er各种交互,也会产生各种不同的事件,我们通过写代码对各种事件去进行捕获处理,然后将处理后的结果返回给用户。

2024-09-05 09:42:23 1045

原创 document对象获取元素,创建元素

但是,调用这三个方法创建的三个对象是各自独立存在的,当我们需要将它们组合在一起形成一个完整的标签时,就需要调用 appendChild 方法和 setAttributeNode 方法,此方法可以将节点文本对象和属性对象加入到标签之内从而形成一个完整的标签;该方法返回指定Id属性值的元素节点,由于各个Id值唯一,所以该方法返回值也只有一个,即指定的某个标签,而不会是多个,此外,该方法参数区分大小写。此外该方法返回匹配到的单个节点元素,如果匹配到多个,只会返回第一个,如果没有匹配到,则返回null;

2024-08-26 17:50:05 975

原创 HTML标签入门(2)——超文本链接、有序列表、无序列表、表格、表单、块元素标签、内联元素标签、特殊内联元素标签

来进行包裹,而无序标签则是使用来进行包裹,内部每个选择同样时使用标签。有序列表标签语法如下所示,最外层由一对标签进行填充,每个

2024-08-23 18:41:09 884

原创 HTML标签入门篇(1)——标题标签、段落标签、换行标签、水平线标签、图片标签、文本标签

一级标题二级标题三级标题四级标题五级标题六级标题

2024-08-21 15:28:06 903

原创 给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示

删除其实都没什么好说的,因为开发过程中我们几乎都是去添加或者修改注释,不会去删除注释,但还是提一嘴,删除注释函数为 dorp ,然后下方8个参数不需要写注释,因为要删掉注释,当然不需要写注释内容,所以剩下7个参数,其他语法不变;但在它们二者中间,还有一个中间者,叫"SCHEMA",一个数据库可以有多个"SCHEMA","SCHEMA"是数据库的一个逻辑结构,,用于组织数据库对象,如表、视图、存储过程等。:我们知道,数据库都是一个个的链接,我们都过IP和端口去连接各个数据库服务器,所以连接是最大的一个单位;

2024-08-13 18:17:17 1107

原创 JavaScript快速入门,满满干货总结,快速掌握JS语法,DOM,BOM,事件

JavaScript是一个跨平台,面向对象的脚本语言。跨平台,面向对象,脚本语言。前两个特性,学过Java的小伙伴们一定不陌生,因此,有Java基础的同学,学习JavaScript会相对来说比较轻松。再者,JavaScript是脚本语言,所以它是不需要编译,而是由浏览器直接执行的(这句话记住,后面要考哦!!!。本篇主要讲解JavaScript,但是我们又不得不将 JavaScript 与 HTML,CSS做比对。因为它们三者都是构成前端的重要元素,只是各自的分工有所不同。1.1 HTML简介和举例说明。

2024-08-07 16:11:40 821

原创 Java跨平台的原理是什么?JDK,JRE,JVM三者的作用和区别?xxx.java和xxx.class有什么区别?看这一篇就够了

跨平台的意思就是说Java代码的运行可以不受平台的约束,只需要将代码进行一次编译,就可以在多种平台上运行。即一次编译,到处执行(Write Once,Run Anywhere)。(1)Java虚拟机:通过Java虚拟机将 Class 文件编译转化成对应平台的二进制文件;(2)Class 文件:所有Java文件都由javac编译器编译成class文件,规范文件一致性;(3)Java语言规范:规定了Java语言中基本数据类型的取值范围和行为;

2024-07-18 15:00:04 1030 1

原创 Redis 管道(Pipeline)是什么?有什么用?

虽然 Pipeline 能够显著提高命令的执行效率,但一次性发送的命令数量也不宜过大,否则可能会导致数据包过大进而对网络传输造成较大压力,但是,如果发送的请求量过于庞大,Redis 也是会分多批次发送的。众所周知,redis 是一个客户端-服务端的模型设计,客户端向服务端发送存储数据的请求共分为四步(发送命令——>命令排队——>命令执行——>返回结果),简单来说就是一问一答的交互方式,在等待返回结果的期间,通常是以阻塞的模式等待服务端响应。类比到 Redis 中,Redis管道就是用来批量传输命令的。

2024-07-04 12:00:23 974

原创 开发常见的http状态码.——400,401,403,404,500,501,503,状态码大全!

服务器拒绝用户请求,有可能因为用户的权限不足,没有相应的访问权限,紧接着刚才的401,401是用户没有验证身份,如果用户验证了身份,但是没有访问权限,就会爆出403。示意请求者应当继续发送请求,客户端返回此码表示请求有效,但是请求不完整,服务器只接收到了一部分,用户应当继续发送剩余部分;服务器目前从不同的网页位置响应请求,表示资源被临时分配到了新的URL,但请求者无需任何操作,可继续使用原来的位置进行请求。请求的网页已经被永久的移动到了其他位置,资源分配到了新的URL,服务器也会随之重定向至新的网页位置。

2024-07-02 18:42:32 1483

原创 开发常用的实体属性转化API,copyProperties方法的用途,需要注意的点。

在开发过程中,我们通常会在 Entity,model,DTO,VO,POJO,Param 等众多实体类之间进行互相转换,传统的做法就是 new 一个新的要转化的对象然后一个属性一个属性的 set 进去,如果是集合,外边再加一层循环嵌套即可,但尽管如此,步骤还是较为繁琐,而且当实体类中的属性较多时,代码还会显得特别臃肿,不美观。

2024-05-15 13:42:30 1014

原创 null和空集合有什么区别?集合List的判断 list == null,list.size() == 0,isEmpty() == true有什么区别和联系?

集合 List 是我们在开发过程中非常常用的,这两天我在做一个功能的时候,用 PostMan 测试接口总是报空指针异常,后来经过调试发现了问题所在,原因就是对于数组的判断方式有误;所以写这篇文章记录下来,防止以后再犯类似的错误,也为了给小伙伴分享让小伙伴们在日后开发过程中也可以避。

2024-05-08 20:12:39 1337

原创 设计模式(2)——工厂方法模式

本篇文章主要讲述23种设计模式中的工厂方法模式。这里我们用一个咖啡店系统的小案例来引出简单工厂模式的使用,在简单工厂模式的基础上延申介绍工厂方法模式。// 加奶方法// 加糖方法// 定义抽象方法,获取咖啡名称,由子类实现@Overridereturn "美式咖啡";@Overridereturn "拿铁咖啡";if ("美式咖啡".equals(type)) {}else if ("拿铁咖啡".equals(type)) {}else {

2024-04-29 20:46:29 1277 2

原创 UML——类图详解

UML全称(Unified Modeling Language),译为统一建模语言,是用来设计软件的可视化建模语言。它的特点是简单,统一,图形化,能表达软件设计中的动态与静态信息。UML从目标系统的不同角度出发,定义了用例图,类图,对象图,状态图,活动图,时序图,协作图,构件图,部署图九种图,本篇文章重点描述类图。类图(Class Diagram)是显示了模型的静态结构,特别是模型中静态的类,类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。

2024-04-25 08:00:00 1779

原创 POJO,Entity,model,domain,view,DTO,VO,Param这些分别都是什么含义?怎样理解?

在日常开发的过程中,如果我们接手一个新的项目之后,通常会有各种各样的包,想要搞清楚项目的基本架构,当然就需要知道各种包做什么用的,里面存放了那些东西。以便于我们理解项目的整体结构。我们都知道项目是要和数据库打交道的,数据库中的一张表映射到Java代码种是一个实体类。在形目中,我们通常会发现实体类用很多种不同的定义方法,有叫 entity 的,有叫 domain 的,有叫 model 的,有叫 pojo 的,到底哪一种是最规范的呢?本篇我们就来说说它们的区别。

2024-04-24 14:30:00 2642

原创 数据库主键ID自增,两种方法获取插入数据库那条数据自动生成的主键ID值

在开发过程中,我们可能会遇到这样的一种情况,我们保存一条数据。如果这条数据的主键ID是由用户决定的,这样我们在获取主键ID的时候,只需要让前端的同时传递给我们就可以了;如果主键ID设置为自增,是在用户新增数据操作时自动生成的,在后续业务逻辑中需要使用生成的主键ID值,我们又该如何获取呢?本篇我们就来说说两种常用方法获取自动生成的主键ID;

2024-04-23 16:28:39 2169

原创 MyBatis-Plus分页查询IPage的使用方法,如何自定义分页查询功能?

介绍 MyBatisPlus 分页插件IPage的使用和条件构造器 LambdQueryWrapper 的使用

2024-04-19 15:49:21 11983 4

原创 MySQL中空值和NULL的区别,开发过程中注意避坑!

在 MySQL 中,NULL 值和空值是两个不同的概念,空值就是我们常说的空字符串,用两个单引号 '' 代替即可;NULL 值在MySQL中是占用空间的,而空值则是不占用长度空间的。举个最简单的例子。如果把数据比作水果,表中的每一个空位比作一个个箱子,水果要放进箱子里存储;NULL就可以理解为空位上有一个箱子,但箱子是空的,没有存放任何水果;空值就可以理解为空位上连箱子都没有,真空状态;2. NULL和空值在表中显示的区别如下SQL创建一张 user 用户表,

2024-04-18 21:28:22 3004

原创 十三款好用的 IDEA 插件,强烈推荐!!!不容错过

然后在右侧CodeGeeX中,他就会跟我们说这段代码的逻辑,做了什么事,在你接手别人的项目时,没有注释就直接选中问CodeGeeX,懒人必备神器,如下,它就帮我解释了刚才我选中的方法的功能,以后再遇到读不懂的方法时,别忘了询问CodeGeeX;然后我们回到项目中,随便选中一个单词,点击右键,就会出现 "Translate",点击翻译,他就可以直接讲的那次的意思翻译出来,不需要我们在去浏览器翻译,非常方便,对英语不好的同学简直是救星;然后,控制台下方就会出现方法的调用过程,我们可以清楚的知道它的执行逻辑;

2024-04-03 18:28:25 14324

原创 windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写

我们修改 log.dirs 的值为刚才创建的 data 文件夹的路径,在路径末尾再添加上 "/kafka" ,用来和刚才的zk做区分,kafka 文件夹用来存放kafka的日志文件,zk 文件夹用来存放zoopeeper的日志文件;如下图所示,我在生产者命令窗口输入 "hello kafka",点击回车,我们就可以在消费者中命令窗口中看到发送过来的 "hello kafka" 消息。打开文件夹后可以发现内部含有bin文件夹,config配置夹,libs依赖夹等,和JDK,maven 问价夹的格式如出一辙;

2024-04-02 20:34:58 4591 5

原创 MySQL 中 JSON 字段增删改查相关函数及使用演示,简单易学,5分钟上手

JSON数据是我们在开发过程中几位常用的一种数据存储方式,主要以KV键值对的形式存储数据,在 MySQL5.7 之后,提供了JSON字段,在 MySQL8之后得到了很好的优化,下面就是JSON格式数据与的例子,以KV键值对的形式存储数据,每个键值对之间使用 "," 隔开即可。我们先准备好一张 product 商品表,字段类型如下图所示,方便一会操作展示然后在表中存放一些数据,如下图,数据均为编造,仅为演示建表SQL和数据SQL如下,想动手尝试小伙伴们可自行CV。

2024-04-01 14:51:11 2550

原创 设计模式(1)——单例模式

静态内部类是通过JVM的方式保证线程安全,JVM会保证每个类之加载一次,但类中的静态内部类是不会被加载的,只有当我们调用 get 方法时,get 方法会返回给我们一个静态内部类的INSTANCE,而INSTANCE在静态内部类中指代的就是外部类的实例对象,非常神奇,非常花哨,并且可以做到线程安全,任何人来访问get方法获取Mgr03对象的实例,获取到的都是同一个INSTANCE。一个类只实例化自己的一个实例,并且不允许再创建多余的实例,在对外提供访问时,访问的都是同一个实例对象。

2024-03-29 09:47:57 702

原创 Git,GitHub,Gitee,GitLab 四者有什么区别?

总结来说就四句话即可概括全部内容(1)Git 只是本地仓库的代码管理工具;(2)GitHub 是国外公司基于git制作的远程仓库;(3)Gitee 是国内公司基于git制作的远程仓库;(4)GitLab 是想搭建自己仓库时用的工具;t=N7T8。

2024-03-28 14:05:51 2117

原创 如何理解Java不可变集合?有什么使用场景?

不可变集合最经典的一个使用场景就是我们常玩的斗地主,斗地主中已经规定好了的规则,我们就可以把它放在不可变数组中,这些规则不能修改,也不能再继续添加,只能按照他已经规定好的游戏规则去进行。然后我们调用 list.add() 方法,发现方法报错,不支持的操作异常,下面的 Set 和 Map 我就不重复尝试了,感兴趣的小伙伴可以自行动手操作一遍。(2)当集合对象被不可信的库调用时,集合内部数据不可变也保证了数据的安全性;,不可变通常说的是内存地址(也就是引用)不可变,但引用的值是可以改变的;

2024-03-26 10:30:00 376

原创 精炼总结阿里巴巴Java编程规范,养成良好编程习惯,提高编程素质(1)

(1)long或Long 初始赋值时,必须使用大写 L,因为小写的 l 容易和数字1 产生混肴;正确示例:Long num = 2L;错误示例:long num = 2l,极容易将num 认为是21,但实际上定义的是2;(2)不允许出现未经定义的变量只出现在代码中;错误示例 String key = "ID" + tradeId,这样定义容易造成内存溢出,不允许出现。(3)不要使用一个常量类维护所有常量,应该对常量进行分类维护,后期排查方便,维护也方便。

2024-03-25 14:53:47 889

原创 怎样在一台电脑安装多个版本的JDK并切换使用?一篇文章教会你所有细节

配置完成之后,我们一路点击确认,将刚才打开的对话框全部关闭。

2024-03-22 10:17:50 9280 4

原创 Kotlin 中List,Set,Map的创建与使用

本篇主要为已经有Java基础的同学展示Kotlin语言中的List,Set,Map的创建和使用,所以Java代码省略,主要展示Kotlin代码。

2024-03-13 19:01:38 753

原创 Kotlin 空类型,区间,数组

除此以外,Kotlin 中还有定制数组,如下所示,如果当前数组你只会存放 Int 类型的数据,就定义IntArray 数组,如果存放字符,就定义CharArray。我们知道任何一种数据类型都有为空或不为空两种状态,在 Kotlin 中,若允许一个数据为空,则需要使用 "?",默认都不能为空。在 Kotlin 中,有区间这么一个概念,它就是我们数学上说的区间,有开区间或者闭区间之分,通常可以用在循环内。简单理解,就是我们Java中的数据,数组中可以存放各种类型的数字,String字符串,或自定义对象。

2024-03-13 11:24:26 653

原创 Koltin 语言与Java语言有哪些差异?

Java中的方法定义方式方法修饰符 方法返回值 方法名(参数1类型 参数1名称,参数2类型 参数2名称,......){方法体}Koltin 中方法定义方式fun(固定位fun,function的缩写) 方法名 (参数1名称 参数1类型,参数2名称 参数2类型,......):方法返回值类型{方法体}

2024-03-11 20:05:09 1097

原创 MySQL 子查询优化如何做?

子查询通常是将一个表的查询结果作为另一个表的查询条件,也就是我们常说的嵌套查询。使用子查询,我们让我们一次性完成需要很多步查询操作才能得到的结果。子查询的SQL语句通常比较长,而且执行效率普遍非常的差,是慢查询的主要贡献者,尽管它可以使用一条SQL语句达到查询效果,但实际并不是特别推荐使用,但我们在不得已的情况下也可以考虑使用子查询,那么我们就要最大程度上提高子查询的效率,这里就涉及到了子查询的优化。

2024-02-26 15:30:34 786

原创 用户,角色,权限三者的关系?让你设计用户权限系统,你会设计几张表?为什么要这样设计?

第二种方案要比第一种方案在编码层面更复杂,需要用到5张表,并需要用到多表查询,但是却非常利于系统对各个用户的权限控制,加入角色表我们可以将所有的用户划分为不同的角色,让权限关系更加清晰,当我们需要添加新的用户时,只需要让他与角色表相关联,然后就可以通过角色与权限关联表确认当前用户都具有哪些权限,程序的健壮性和可扩展性更强。在有些小的项目中,我们通常会发现关于用户权限的设计非常简单,通常都是设计一个权限表列出各种权限,然后就是用户表,用户表中设计一个权限字段关联权限表的主键,从而达到设计用户权限的目的。

2024-02-21 16:00:00 2045

原创 MySQL 锁的内存结构

在 MySQL 中,有很多种锁,例如行锁,表锁,页锁,全局锁,它们锁的粒度都不一样。更多情况下,我们只是关注这些锁的区别和作用,却很少关注它们本身,本篇我们就来简单了解一下MySQL 中锁的内存结构,锁中都包含了哪些信息。

2024-02-20 17:23:32 1008

原创 冒泡排序,选择排序,插入排序,快速排序的核心思想和代码实现

经过了第一次循环之后,最大的数据5此时在数组的最后,但是现在数组还不是完全有序的,我们只确定了最大的一个,其余的数据还需要继续使用冒泡排序,现在我们除去刚才的数据5,那么就剩下了4个数据需要进行排序,就需要进行 4 - 1 = 3 次,经过排序之后,我们又能确定数据4。(3)遍历得到5,拿5和 [3,38,44] 数组后面的树比较,以此往前比,和上一步一样,直到确定5插入在3和38的中间,此时数组为 [3,5,38,44];

2023-11-17 09:45:00 327

原创 Git 常用命令总结

3. git reset --hard "版本号" ——将当前 git 回退到指定的某个版本;13. git remote origin "远端仓库地址" ——添加远端仓库地址到本地;12. git checkout -b "分支名" ——创建并切换到某个分支;12. git merge "分支名" ——将指定分支合并当当前分支上;11. git checkout "分支名" ——切换到某个分支;10. git branch "分支名" ——创建一个分支;8. git init ——初始化 git 仓库;

2023-11-16 09:15:00 131

原创 Redis 事务是什么?又和MySQL事务有什么区别?

从语法上来讲,所有命令本身并没有错误,所以 redis 是检查不出来的,但是在逻辑上我们不能让字符串类型的数据自增1,所以 incr email 这个命令时执行失败的,但是其他命令都没有问题,是可以正常执行的,这就是 redis 于 MySQL最大的区别,MySQL是同成功同失败,redis 则是能执行成功的就会保存不进行回滚,执行失败的那就是失败了。Redis 事务仅仅保证事务里的操作会被连续独占的执行,Redis 命令执行是单线程架构,在执行事务内所有命令请求之前无法去执行其他客户端请求;

2023-11-15 09:00:00 619 1

原创 数据库表的设计——范式

范式的英文名称位 Normal Form,简称NF。在关系型数据库中,关于数据表设计的基本原则,规则称之为范式。可以简单的理解为,一张数据表的设计结构需要满足某种设计标准的级别,满足某种规则。

2023-11-14 08:00:00 887 1

原创 索引下推(ICP)是什么意思?如何理解?

ICP 全称 Index Condition Pushdown,是MySQL5.6之后的一个新特性,它是一种在存储引擎层使用索引过滤数据的一种优化方式。

2023-11-13 09:43:44 173

原创 反转字符串的四种算法及算法的思想 (Java代码实现)

然后再次进入递归,3无法再拆分,但"45" 又可以拆分为 "4" 和 "5",再次递归,"5" 在最前面,"4" 跟在 "5" 的后面,然后 "3","2","1"第二次遍历,取1索引的 "2" ,拼接在 "1" 的前面,就变成了 "21",后续第三四五次遍历同理,就可以得到反转结果 "54321" 了。第二次遍历,取3索引的 "4" ,拼接在 "5" 的前面,就变成了 "54",后续第三四五次遍历同理,就可以得到反转结果 "54321" 了。第一次遍历,取4索引的 "5";

2023-11-10 09:00:00 326

原创 MySQL 中COUNT(*),COUNT(1),COUNT(普通字段),COUNT(索引字段)的效率和区别?

(3)在没有非聚簇索引的情况下,COUNT(1),COUNT(*),COUNT(普通字段),COUNT(索引字段)都是通过聚簇索引来进行统计,如果字段为NULL也是统计不进去的,所以COUNT(普通字段)统计的结果一定小于等于 COUNT(1),COUNT(*),COUNT(索引字段) 的结果。执行效率 COUNT(*) = COUNT(1) > COUNT(主键字段) > COUNT(普通字段);COUNT(*)和COUNT(1)都是对所有结果进行COUNT,二者区别不大,效率没有明显差别;

2023-11-09 08:30:00 352

空空如也

空空如也

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

TA关注的人

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