自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中的集合类有哪些?如何分类的?

而Set相对于List来说,是无序的,同时也是一个去重的列表,既然会去重,就一定会通过equals,compareTo、hashCode等方法进行比较。1、通过Javadoc文档我们可以发现,Iterator和Iterable并不是同时出现的,Iterator于1.2就出现了,目的是为了代替Enumeration,而Iterable则是1.5才出现的。2、将<是否可以迭代>和<迭代方式>抽出来,更符合单一职责原则,如果抽出来,迭代方式就可以被多个可迭代的集合复用,更符合面向对象的特点。

2024-07-10 10:48:26 742

原创 数据库事务

在A向B转账的整个过程中,只要事务还没有提交(commit),查询A账户和B账户的时候,两个账户里面的钱是不会发生变化。如果在A向B转账的同事,有另外一个事务执行了C给B转账的操作,那么当两个事务都结束的时候,B账户里面的钱应该是A转给B的钱加上C转给B的钱,再加上自己原来的钱。在转账之前,A和B账户中共有500+500=1000,在转账之后,A和B账户中共有400+600=1000,也就是说,数据的状态在执行数据操作之后从一个状态改变到了另一个状态,同时一致性还能保证账户余额不会变成负数等。

2024-07-01 15:09:20 170

原创 MySQL InnoDB支持几种行格式

在存储时,如果发现数据可以通过压缩减小存储空间,就会使用压缩方式来存储数据,在查询时,会自动解压缩数据并返回结果。他保持了COMPACT格式的优点,同时在存储大的可变长度列时更加灵活,能够动态地选择存储在页内或页外。:Redundant是MySQL 5.0版本之前的行记录存储方式,用的比较少,Redundant行格式会把该记录中所有列(包括隐藏列)的长度信息都存储到“字段长度偏移列表“中。对于可变长度列,前768字节的数据存储在B树节点的索引记录中,超出部分索引在溢出页中。

2024-06-28 10:26:57 516

原创 MySQL一条SQL语句的执行过程

来执行SQL语句,这里具体的执行会操作MySQL的存储引擎来执行SQL语句,根据存储引擎类型得到查询结果,若开启了Query Cache则缓存,否则直接返回。如查询是select、表名是users、条件是age='18' AND name='student',例:SELECT * FROM USERS WHERE age = '18' AND name = 'student';,开启了Query Cache且命中完全相同的SQL语句,则将查询结果直接返回给客户端。生成执行计划,根据索引看看是否可以优化。

2024-06-27 15:52:41 289

原创 MySQL为什么不建议使用多表JOIN

之所以不建议使用JOIN查询,最主要的原因就是JOIN的效率比较低。MySQL是使用了嵌套循环(Nested-Loop Join)的方式实现关联查询的,简单点说就是要通过两层循环,用第一张表做外循环,第二张表做内循环,外循环的每条记录跟内循环中的记录作比较,符合条件的就输出。而具体到算法实现上主要是simpl nested loop,block nested loop和index nested loop这三种。而且这三种的效率都没有特别高的。

2024-06-26 18:00:13 391

原创 什么是数据库范式,为什么要反范式?

数据库范式其实是数据库的设计上的一些规范,这些规范可以让数据库的设计更加简洁、清晰,同时也会更好的保证一致性。

2024-06-26 09:34:22 222

原创 MySQL 5.x和8.0区别

在8.0版本中,索引可以被“隐藏”和“显示”。:8.0大幅改进了对JSON的支持,添加了其基于路径查询参数从JSON字段中抽取数据的JSON_EXTRACT()函数,以及用于数据分别组合到JSON数据和对象中的JSON_ARRAYAGG()和JSON_OBJECTAGG()聚合函数。:InnoDB现在支持表DDL的原子性,也就是InnoDB表上的DDL也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现DDL时部分成功的问题,此外还支持crash-safe特性,元数据存储在单个事务数据字典中。

2024-06-25 09:56:07 410

原创 MySQL中char和varchar的区别?

char是一种定长的数据类型,它的长度固定且在存储时会自动在结尾添加空格来将字符串填制定的长度,char的长度范围是0~255。varchar是一种可变长度的数据类型,它只会存储实际的字符串内容,不会填充空格。因此,在存储段字符串时,varchar可以节省空间,varchar的长度范围是0~65535(MySQL5.0.3之后的版本)。

2024-06-24 17:15:16 183

原创 MySQL的引擎InnoDB和MyISAM有什么区别

InnoDB和MyISAM是MySQL中比较常用的两个执行引擎,MySQL在5.5之前版本默认存储引擎是MyISAM,5.5之后版本默认存储引擎是InnoDB,MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及安全性较高的应用。如果应用需要高度的数据完整性和事务支持,那么InnoDB是更好的选择。所以频繁修改及数据安全性的情况适合。如果应用主要是读取操作,或者需要高校的全文搜索功能,那么MyISAM可能更适合。所以查询频繁的适合。

2024-06-20 15:57:38 330

原创 MySQL的数据存储一定是基于硬盘吗?

数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可以控制访问权限并快速处理事务,从而满足企业内大多数需要处理数据的应用程序的要求。使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系型数据库。这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。;;show create table 表名;在显示结果里参数engine后面的就是表示该表当前用的存储引擎。

2024-06-20 15:11:36 425

原创 有了关系型数据库,为什么还需要非关系型数据库(NoSQL)?

关系型数据库:是值采用了关系模型来组织数据的数据库(关系模型可以简单理解为二维表格模型),其以行和列的形式存储数据,以便于用户管理。关系型数据库中有表的概念,表中包含了行和列,多张或1张表可以组成数据库。关系型数据库具有一下几个特点:1、传统的关系型数据库中的数据以行和列的方式进行存储。2、关系型数据库采用结构化查询语言(即SQL)来对数据进行查询。

2024-06-19 15:52:12 265

原创 NFS服务配置、搭建、应用

NFS

2022-10-19 18:11:11 1584 1

原创 @PostConstruct注解

@PostConstruct@PostConstruct注解好多人以为是Spring提供的,其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。通常我们会是在Spring框架中使用到@PostConstruct注解,该注解的方法在整个Bean初始

2022-04-15 16:57:57 223

原创 SpringBoot请求体中的流只能读取一次的问题HttpServletRequest的流只能读取一次的原因

问题场景:在项目开发过程中需要记录用户的操作行为,即用户请求的url和相关url中带有的请求体参数,在springboot中只能在拦截器中读取了一次,在controller获取不到参数。经过代码排查,发现ServletInputStream的流只能读取一次,从而影响到controller层接受request内容。解决方案:1、声明BodyReaderHttpServletRequestWrapper类继承HttpServletRequestWrapp将请求体中的流copy一份,重写getInpu

2022-04-14 16:21:26 1688

原创 Java8 stream()用法

最近在项目里使用了很多stream()方法,现跟大家分享一下1、stream()操作分类解释:1)、无状态:指元素的处理不受之前元素的影响;2)、有状态:指该操作只有拿到所有元素之后才能继续下去。3)、非短路操作:指必须处理所有元素才能得到最终结果;4)、短路操作:指遇到某些符合条件的元素就可以得到最终结果,如 A || B,只要A为true,则无需判断B的结果。即:方法执行时数据获取的逻辑和数据判断的逻辑2、sorted()用法List<类> list

2022-04-02 11:30:10 539

原创 自定义分页

给大家介绍一个简单分页的方法(有兴趣的可以自己试一下)1、实体package com.hffss.entity.ext;import lombok.Builder;import lombok.Data;import java.io.Serializable;import java.math.BigDecimal;import java.util.Date;@Data@Builderpublic class CorpChangeAndAmendmentInfo implemen

2022-04-02 10:15:55 2038 1

原创 设计模式:单例模式

1、什么是单例模式单例:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种常用的软件设计模式之一,其目的是保证整个应用中只存在类的唯一个实例。比如我们在系统启动时,需要加载一些公共的配置信息,对整个应用程序的整个生命周期中都可见且唯一,这时需要设计成单例模式。如:spring容器,session工厂,缓存,数据库连接池等等。2、如何保证实例的唯一1)防止外部初始化2)由类本身进行实例化3)保证实例化一次4)对外提供获取实例的方法5)线程安全3、推举几

2022-03-31 09:20:34 156

原创 Java解决输出,出现[Ljava.lang.String;@3142b089]

Java解决输出错误 ('[Ljava.lang.String;@3142b089]')解析:1、“[”:表示一位数组2、“L”:表示一个对象3、"java.lang.String":表示对象数据类型4、“@3142b089”:表示该对象的HashCodeHashCode:散列码是由对象导出的一个整型值。散列码是没有规律的。类的hashCode()方法继承自Object类,因此每个对象都有一个默认的散列码,他的值为对象的存储地址(由对象的物理存储地址通过散列转换来的)。解决方法:

2022-03-30 18:26:09 1731

原创 List<Map<String, Object>>类型升序、降序

需求:对List<Map<String, Object>>类型的数据key值为"removeDate",类型为Long进行升序和降序1、升序 /** * 升序 * @param list */ private static void listSortUp(List<Map<String, Object>> list) { Collections.sort(list, (o1, o2) -> { try { l

2022-03-30 17:34:25 497

原创 注解:@Data和set、get

@Data注解优化代码

2022-03-22 15:05:32 1779

原创 IOException while sending message; nested exception is:java.io.FileNotFoundException

异步发送邮件出现的异常情况1、问题描述近期做了一个发送邮件的功能,因为在处理发送邮件联系人上出现过失效的邮箱地址,为了快速定位到问题。现将批量发送的方式改为单独发送。Failed messages: javax.mail.MessagingException: IOException while sending message; nested exception is: java.io.FileNotFoundException: /tmp/tomcat.8268785341862084

2022-03-04 11:27:15 3823

原创 log4j2(spring-boot-starter-log4j2)高危漏洞

2021-12-14今天大家都很忙吧!因为出现了log4j2的高危漏洞,大家都在修复代码吧废话不多说,上代码1、pom.xml文件配置中<!-- 引入log4j2依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId></d

2021-12-14 10:35:10 1086

原创 Java并发编程(一)

1、多线程作用1.1、发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少都是双核、4核、8核甚至16核的,如果单线程的程序,那么在双核CPU上浪费就是50%,在4核CPU上浪费就是75%。单核CPU上的所谓“多线程”那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程“同时”运行罢了。多核CPU上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程可以真正发挥多核CPU的优势,达到充分利用CPU的目的。2.1、防止阻.

2021-11-26 11:22:59 378

原创 Java 基础篇(三)

1、Oracle JDK和Open JDK的对比 版本发布:Oracle JDK版本每三年发布一次、Open JDK版本每三个月发布一次。 开源比较:OpenJDK是一个参考模型并且完全开源,而Oracle JDK是Open JDK的一个实现,并不是完全开源的。 稳定性:Oracle JDK比Open JDK更稳定。Open JDK和 的代码几乎相同,但Oracle JDK有更过的类和一些错误修复。因此,如果开发企业/商业软件,建议选择Oracle JDK,因为它经过了彻底的测试和稳定。...

2021-11-15 09:26:47 877

原创 Java 基础篇(二)

蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。1、JDK、JRE和JVM的区别 1.1、JDK JDK(Java SE Development Kit),Java标准的开发包,提供了编译、运行Java程序所需要的各种工具和资源,包括了Java编译器、Java运行环境、以及常用的Java类库等。 1.2、JRE JRE(Java Runtime Environment),Java运行时的环境,用于解释执行Java的字节码文件。普通用户只需要...

2021-11-12 17:36:31 587

原创 Java 基础篇(一)

东风夜放花千树。更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。‘1、什么是Java Java是一门面向对象的高级编程语言,不仅吸收了C++的各种优点,比如继承了C++语言面向对象的技术核心,还摒弃了C++里难以理解的多继承、指针等概念,同时也增加了“垃圾回收机制”,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。2、Java特点 Java语言是一种分布式面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等众多特点。 2.1、面向对...

2021-11-09 15:51:20 232

原创 Map集合value值降序排序

废话不多说 Map集合value值降序排序 直接上代码// Map的value值降序排序 public static <K, V extends Comparable<? super V>> Map<K, V> sortDescend(Map<K, V> map) { List<Map.Entry<K, V>> list = new ArrayList<>(map.entrySet());..

2021-05-19 14:39:31 195

原创 Java接口请求加密验签处理

Java接口请求加密验签处理最近做了一个接口的加密验签的功能,今天和大家分享一下***注(以下出现的参数字符串都是测试处理,方便大家理清思路,非真实正确的数据)***1、参数说明 字段名称:appcode(产品编码)、servercode(业务编码)、redirect(业务跳转地址)、timestamp(时间)、addParas(附属参数)、sign(签名)。2、sign签名计算规则采用md5加密方法,参与计算的参数为上述的appcode、servercode、redirectU..

2021-04-15 16:45:06 2173

原创 Apollo分布式部署

今天和大家分享一下apollo应用环境的部署运行环境的要求1、Java版本 1.7或者1.82、MySQL版本 5.6.5以上3、部署机器地址172.16.37.86、172.16.37.85、172.16.37.84部署步骤1、创建数据库分别创建ApolloPortalDB、ApolloConfigDB数据库ApolloPortalDB数据库https://github.com/ctripcorp/apollo/blob/master/scripts/sql/a

2021-01-28 16:01:01 574

原创 Linux简单命令(一)

这两天机房的测试机出了一些问题,相关服务命令都需要重新安装1、安装解压zip文件命令apt-get install zip 或 yum install ziplinux安装unzip命令:apt-get install unzip 或 yum install unzip2、JDK安装2.1、查找jdk安装列表yum -y list java*2.2、安装jdk命令yum install java-1.8.0-openjdk.x86_642.3、验证安装版本..

2021-01-21 11:27:37 63

原创 大众点评CAT集成Springboot(windows环境)

大众点评CAT分布式监控系统集成windows环境的springboot项目前提背景:1、大众点评CAT我部署的是linux环境、不会部署的小伙伴可以看我的博文2、springboot是在windows7本地环境开发的项目windows环境sspringboot集成CAT1、配置文件相关1.1、本地环境创建目录/data/appdatas/cat、具体的创建目录的磁盘根据你本地的springboot项目的磁盘一致即可。1.2、在创建的目录中新建client.xml文件.

2021-01-07 11:41:14 379

原创 大众点评CAT分布式监控部署

大众点评CAT分布式监控部署

2020-12-29 14:18:56 311

原创 Jenkins自动部署,mvn不同的环境打包配置

今天看了个问题,就是在Jenkins里如何根据不同的环境发布代码。我本地的代码环境有,开发环境、测试环境、预发布环境和线上环境。基于项目的风险控制,安全控制,我只有开发环境和测试环境的权限,所以我通过Jenkins将代码部署到测试环境上。1、先判断java-web下的pom文件,查看pom文件下不同环境的配置情况<profiles></profiles>...

2020-04-13 17:20:07 2365

原创 Tomcat虚拟路径设置

前几天写了一个关于登录页面banner图的展示。需求:banner图的存放地址在项目包的外部,不能占用项目资源。这种通过外部存储位置渲染图片的实现方式有两种,1:目录映射(虚拟路径)、2:读取流,这两种方式我选择了第一种:目录映射(虚拟路径),其实虚拟路径的这种方式很简单。开发环境 Windows 7 、开发工具 idea、服务 Tomcat 8.0配置共分两步:请看仔细1、首...

2020-04-07 16:41:35 186 1

原创 linux环境 mongdb根据主键id批量更新字段

今天领导安排一个任务:“根据主键id给mongdb库录入一个字段,数据大约一百多万吧!!!”需求:保持mongdb库同一条数据的其他内容不变,根据主键id新增一个字段,并且录入相应的值。策略:这种需求明显用代码和工具实现是不明智的行为(我就是个写java代码的)(工具Robot 3T 还TMD都是英文),所以最好的方法就是登录到当前mongdb的机器上,我们的mongdb库是部署在...

2019-12-11 15:04:50 556

原创 zookeeper集群,机器时间必须同步

今天遇到一个问题,分享一下 zookeeper集群配置查看当前机器是leader还是follower,命令:zkServer.sh statusfollower表示 从机leader表示 主机还有一点,部署zookeeper集群的机器,必须保证机器的时间必须一致,否则会对你未来在集群上的操作报出一些难以发现的错误。...

2019-11-04 14:43:12 1390

原创 MySql数据查询,导出数据

MySql数据查询,导出数据在linux环境下,进入mysql数据库查询数据导出结果。进入mysql数据库命令:mysql -h(数据库ip地址) -u(数据库用户名) -p(数据库密码)正常的数据库服务器是不可以直接使用ssh命令直接访问的,需要在项目部署的机器上连接相关配置的数据库。例如:mysql 192.100.2.41 -uabcd -pabcd进入数据库中选择要是空...

2019-08-14 14:11:03 278

原创 如何查看linux是32位还是64位

如何查看linux是32位还是64位使用命令  “getconf LONG_BIT”  如果返回的是32,那么就是32位  如果返回的是64,那么就是64位

2019-08-14 13:57:12 183

原创 Java 调用Http和Https接口

Java调用Http接口和Https接口大多数我们调用的接口都是Http的,很少有Https的接口,近期做了个项目就用到和Https接口的请求调用,和大家分享一下心得。Http接口和Https接口主要是区别还是Https存在一个证书验证。针对Https和Http做出逻辑判断,对Https接口的证书,咱们可以进行忽略。话不多说,请看代码Service层,http和https的接口请求...

2019-08-09 16:44:21 5374 1

原创 SQL查询速度慢的原因分析和解决方案

SQL查询速度慢的原因分析和解决方案查询速度慢的原因很多,常见如下几种:    1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2、I/O吞吐量小,形成了瓶颈效应。    3、没有创建计算列导致查询不优化。    4、内存不足    5、网络速度慢    6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)    7、锁或...

2019-08-05 08:58:02 2245

空空如也

空空如也

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

TA关注的人

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