自定义博客皮肤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)
  • 收藏
  • 关注

转载 什么?初级程序员才删库跑路,高级的都在代码投毒

事情是这样的,最近在做开源软件供应链安全相关的项目,之前没了解这方面知识的时候感觉服务器被黑,数据库被删,网站被攻,这些东西都离我们太遥远了,因为感觉好像都轮不到我们,直到我开始做这个项目,才发现网络安全,软件安全问题真的是无处不在。今天我们来聊聊删库跑路和代码投毒。 我们从可操作性及易发现性还有后果及预防策略上来探讨一下。 在软件行业,“删库跑路”流传已久,对,就是删完库,跑在监狱的路上,这个对于安全来说简直是小儿科。像数据这么敏感的权限控制得比较严格,比如人员的权限控制及防范:看到了没,首先第一步你让0

2022-07-09 14:54:02 763 1

原创 JAVA面试高频基础经典百问,拿下大厂offer

前言网上的 Java 基础面试题文章有非常多,但是大部分都比较老了。很多题目早已不是当前的热门题目,没有必要在这些题目上花太多时间。很多答案放现在已经不准确,可能会误导新人。因此,我花了几天时间整理了一些时下高频的 Java 基础题目,并反复斟酌,给出符合当前版本的解析。Java 面试题(一)1、面向对象的特征有哪些方面?2、访问修饰符 public,private,protected,以及不写(默认)时的区别?3、String 是最基本的数据类型吗?4、float f=3.4;是否正确?5、short s

2022-07-08 16:19:36 344

转载 使用Spring Data JPA的Specification构建数据库查询

Spring Data JPA最为优秀的特性就是可以通过自定义方法名称生成查询来轻松创建查询SQL。Spring Data JPA提供了一个Repository编程模型,最简单的方式就是通过扩展JpaRepository,我们获得了一堆通用的CRUD方法,例如save,findAll,delete等。并且使用这些关键字可以构建很多的数据库单表查询接口: findByEmailAddress生成的SQL是根据email_address字段查询Customer表的数据 findByLastname根据

2022-07-08 14:46:50 538

转载 微服务管理平台nacos虚拟ip负载均衡集群模式搭建

Nacos是用于微服务管理的平台,其核心功能是服务注册与发现、服务配置管理。当然Nacos作为一个微服务管理平台,除了面向spring Cloud,还支持很多其他的微服务基础设施,如:docker、dubbo、kubernetes等。除了核心的服务注册与发现和配置管理功能,还提供了各种服务管理的功能特性,如:动态DNS、服务元数据管理等。Nacos支持单点部署的模式,搭建过程非常简单,实际上nacos的standalone模式没有所谓的安装过程,就是下载和启动。但是这种情况没有高可用支持,所以只适合测试或学

2022-07-08 14:28:42 1059

原创 面试官:小伙子你来介绍一下MyBatis

什么是MyBatisMyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。Mybatis通过

2022-07-06 20:16:39 592

转载 java并发编程工具类:PriorityBlockingQueue优先级队列

1. PriorityBlockingQueue 特性我们写一个类Employee,该类实现了Comparable接口,所以其实例对象可以根据compareTo()函数定义的规则进行排序。构造一个PriorityBlockingQueue对象,并向其内部加入若干Employee对象,并使用poll方法从队列内取出元素。根据上文中compareTo()方法定义的排序规则,按照id为优先级,所以从队列中拿出对象并打印的顺序如下:3. 使用 Java8 Comparator 做优先级排序的实例

2022-07-06 17:04:49 453

原创 面试官:小伙子你知道什么是ZooKeeper 吗?

前言提到ZooKeeper,相信大家都不会陌生。Dubbo,Kafka,Hadoop等等项目里都能看到它的影子。但是你真的了解 ZooKeeper 吗?如果面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?一、ZooKeeper是什么ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2022-07-06 16:58:06 244

转载 你知道怎么为SpringBoot服务添加HTTPS证书嘛

HTTPS是HTTP的安全版本,旨在提供数据传输层安全性(TLS)。当你的应用不使用HTTP协议的时候,浏览器地址栏就会出现一个不安全的提示。HTTPS加密每个数据包以安全方式进行传输,并保护敏感数据免受窃听者或黑客的攻击。您可以通过在Web应用程序上安装SSL证书来实现HTTPS,互联网上受信任的证书通常是需要(CA)颁发的证书。为了学习目的,您也可以使用自签名证书,比如:使用Java Keytool生成自签名证书。您可以使用位于JDK bin文件夹下的Keytool生成证书。例如,C:\Program

2022-07-06 15:09:22 183

转载 进厂JAVA面试-Spring Boot必问:启动流程

一 面试提问面试官:说说SpringBoot启动流程吧我 :首先从main找到run()方法,在执行run()方法之前new一个SpringApplication对象进入run()方法,创建应用监听器SpringApplicationRunListeners开始监听然后加载SpringBoot配置环境(ConfigurableEnvironment),然后把配置环境(Environment)加入监听对象中然后加载应用上下文(ConfigurableApplicationContext),当做run方法的

2022-07-06 14:42:35 174

转载 一网打尽异步神器CompletableFuture

最近一直畅游在RocketMQ的源码中,发现在RocketMQ中很多地方都使用到了CompletableFuture,所以今天就跟大家来聊一聊JDK1.8提供的异步神器CompletableFuture,并且最后会结合RocketMQ源码分析一下CompletableFuture的使用。我们都知道,Java中创建线程的方式主要有两种方式,继承Thread或者实现Runnable接口。但是这两种都是有一个共同的缺点,那就是都无法获取到线程执行的结果,也就是没有返回值。于是在JDK1.5 以后为了解决这种没有返

2022-07-05 20:28:41 341

转载 抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高效的接收客户端连接,这就好比我们开了一个饭店,那么迎接客人就是饭店最重要的工作,我们要先把客人迎接进来,不能让客人一看人多就走掉,只要客人进来了,哪怕菜做的慢一点也没关系。本文笔者就来为大家介绍下netty这块最核心的内容,看看netty是如何高效的接收客户端连接的。下图为笔者在一个月黑风高天空显得那么深邃遥远的夜晚,闲来无事,于是捧起Netty关于如何接收连接这部分源码细细品读的时候,意外的发现了一个影响Netty接收连接吞吐的一个Bug。

2022-07-05 20:24:47 427

原创 面试官:小伙子你来讲讲什么是Elasticsearch

ElasticSearch的简介ElasticSearch:智能搜索,分布式的搜索引擎是ELK的一个组成,是一个产品,而且是非常完善的产品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K就是kibanaE:EalsticSearch 搜索和分析的功能L:Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统K:Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台 分析日志的用处:假如一个

2022-07-05 16:59:20 335

转载 Java项目如何实现限流?

众所周知,服务器能处理的请求数是有限的,如果请求量特别大,我们就可能需要做限流。限流处理的姿势:要么就让请求等待,要么就把请求给扔了从系统架构来看,我们的统一处理入口在austin-api接入层上,austin-api接入层做完简单的参数校验以及参数拼接后,就将请求转发到消息队列上了按正常来说,因为接了消息队列且接入层没有什么耗时的操作,那对外的接口压力是不大的。没错的,austin要接入限流也并不是在austin-api接入层上做,而是在austin-handler消息处理下发层。austin-handl

2022-07-05 16:25:47 216

转载 SpringBoot集成Kafka——如此简单

今天下午本打算整理一下服务器资源,给每个服务器打个标签,标明部署了哪些服务器,方便查找。发现之前搭建kafka的服务器到期没续费,被回收了。缺一套kafka的环境,闲来无事,搭一个吧,顺便踩踩坑。话不多说,开干。官网:kafka.apache.org/downloads目前最新是3.2版本,也是稳定版,scala的版本可选2.12和2.13。推荐2.13,不太重要。下载,搞到服务器上。如下:解压,改名,同时建一个文件夹存放数据。简单修改一下配置,不搞那么复杂。主要修改数据存放目录,listener地

2022-07-05 16:08:27 199

原创 22年互联网裁军大潮下偶得JAVA宝典秘籍,苦修数月,终进阿里

朋友说自己实力不过关,很多面试题都答不上,问我有没有之前的面试总结,于是我给了他这份(核心知识点)还有一些面试题总结。现在他拿到了offer,我觉得这个文档对大家应该也有帮助,现在分享给大家!JAVA面试宝典内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈Java 面试题(一)1、面向对象的特征有哪些方面?

2022-07-04 21:24:32 115

转载 Flux和Mono的常用API源码分析

Flux定义了一个普通的响应式流,它可以产生零个,一个或多个元素,乃至无限个元素。我们就先来研究一下Flux产生元素的代码Flux.just其实是返回了一个FluxArray对象。那么我们来看看FluxArray的源码是如何。看的关键点是构造方法和subscribe方法从源码中就可以看出,1个或多个的数据原理就是因为内部有一个数组,这个数组长度可能是1个或多个,然后保存起来通过一个 ArraySubscription 传递给消费者。消费者的代码逻辑可以参照上一篇说的 LambdaSubscriber

2022-07-04 16:33:45 5014

原创 程序猿最终之路-架构师:Spring boot实战战役解析

所谓架构师,通俗地说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计与实施、负责软件架构和关键技术决策的人员。软件架构师应能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能

2022-07-04 16:13:36 1205

转载 SpringBoot启动代码和自动装配源码分析

随着互联网的快速发展,各种组件层出不穷,需要框架集成的组件越来越多。每一种组件与Spring容器整合需要实现相关代码。SpringMVC框架配置由于太过于繁琐和依赖XML文件;为了方便快速集成第三方组件和减少对配置文件的依赖,SpringBoot应运而生,其中采用了约定大于配置的理论让开发者不需要过多配置即可进行开发。SpringBoot底层使用的Spring ,默认集成了N多组件的自动装配。使用SpringBoot很简单,在主类中添加一个@SpringBootApplication,以及调用SpringA

2022-07-04 15:11:30 214

转载 Net 应用考虑x64生成

在x86架构下使用32位应用程序,理论上32位能够分配4G的大小空间,但实际上默认 .NET Framework 可以创建一个不超过 2 GB 的对象,在实际使用过程中可能使用到1.5G的样子就会报内存溢出异常。刚写了一个读取数据在内存中组装xml的程序,有10多万条数据,结果程序运行一段时间后就报内存溢出。而我本机是16GB,内存消耗不到8G,我又不想修改程序。所以我就将程序生成x64,不仅成功处理而且速度提升不少。目前只要是比较新的vs在程序生成的时候VS默认选择的是32位,所以生成的时候尽管你的PC是

2022-07-04 14:58:03 253

原创 一文初识 Quarkus 的王者之路,实战杀敌,终成王

QuarkusQuarkus是红帽面向云原生推出的java技术体系,它已经不能被称为框架了,体系这个词也许更适合它,它有不少非常好的新思路。它侧重于对GraalVM的支持,倾向于使用GraalVM来打包为Native原生应用。Java曾经的优势是Write once run anywhere,但是现在这个优势已经被docker取代,有了docker,只要制作好镜像,其它语言也可以做到Write once run anywhere。而Java庞大的JVM运行时反而就成了它的劣势之一,所以Oracle发布了Gr

2022-07-03 21:21:54 685

原创 华为OD java后端两面 热经

分享一位小伙伴刚去华为面试回来的经历,希望可以帮到有需要的小伙伴们Base西安 华为云,本科双非一本 通信工程,毕业后因为日语不错进了日企互联网公司干了一年,同学内推跳槽华为。考前HR邮箱发送机考链接,自选时间参加考试。考试期间全程录屏录像,手机也要扫二维码停在考试监督界面,考前建议把手机设置关闭自动锁定。 可以用本地编译器,不记录切屏次数。但是不要打开无关应用,被怀疑作弊就太冤了。最长连续子序检查 数组中是否存在满足条件的数组堆栈中的剩余数字结果第二天就出来了1 2题100%,第三题50%,分

2022-07-03 19:55:08 1419 5

转载 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在分布式、微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合MongoDB的两种方法:MongoRepository和MongoTemplate。代码结构如下: 为了方便,使用Docker来启动MongoDB,详细指导文档请参考:用Docker安装一个MongoDB最新版玩玩 ,这里不再赘述。主要的依赖为Web和MongoDB的starter,把下面代码加入到pom.xml中即可:

2022-07-03 17:13:00 197

转载 SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证

Spring Security作为成熟且强大的安全框架,得到许多大厂的青睐。而作为前后端分离的SSO方案,JWT也在许多项目中应用。本文将介绍如何通过Spring Security实现JWT认证。用户与服务器交互大概如下:我们把要整合的Spring Security和JWT加入到项目的依赖中去:2.1 JWT整合2.1.1 JWT工具类JWT工具类起码要具有以下功能:具体代码如下:工具类还实现了另一个功能:从HTTP请求头中获取JWT。Filter是Security处理的关键,基本上都是

2022-07-03 16:23:49 570

原创 苦修数月,掌握JAVA核心秘籍,看我这样吊打面试官

朋友说自己实力不过关,很多面试题都答不上,问我有没有之前的面试总结,于是我给了他这份(核心知识点)还有一些面试题总结。现在他拿到了offer,我觉着这个文档对大家应该也有帮助,现在分享给大家!一、Java篇1.Java基本功1.Java入门(基础概念与常识)1.Java语言有哪些特点?.2.关于JVMJDK和JRE最详细通俗的解答JVM1.1.2.2.JDK和JRE3.OracleJDK和OpenJDK的对比.4.Java和C++的区别?5.什么是Java程序的主类应用程序和小程序的主类有何不同?.6.Ja

2022-07-01 16:55:42 64

转载 「Java必修课」判断String是否包含子串的四种方法及性能对比

判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇、判断日志是否有ERROR信息等。本文将介绍四种方法并进行性能测试。在String的函数中,提供了indexOf(subStr)方法,返回子串subStr第一次出现的位置,如果不存在则返回-1。例子如下:2.2 JDK原生方法String.contains最直观判断的方法是contains(subStr),返回类型为boolean,如果包含返回true,不包含则返回false。例子如下:实际上,String的co

2022-07-01 16:06:31 2760

原创 京东商城架构师-是怎样打造出一个亿级流量网站的?

近年来,中国的互联网产业正在以前所未有的速度迅猛发展。而技术在业务发展中所扮演的角色日益重要,随着各个业务形态的发展涌现出了许多技术应用上的成功案例和先进技术的研究成果。而作者在本书中则通过对工作中的探索和总结来将系统高可用这个神秘莫测的面纱揭开,让对此有兴趣的人得以窥其真容。在以往的交流和面试过程中,大多数的研发人员在其所研发的系统中很少有机会获得确实不需要和繁多的上下游系统、海量的业务数据、复杂的部署环境以及极端灾难(如机房断电、光纤损坏)打交道,因此也没有契机和计划去详细了解、研究系统的高可用,对于系

2022-07-01 15:57:34 242

转载 nginx开启ssl并把http重定向到https的两种方式

Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。https相关文章如下:(1)Springboot整合https原来这么简单(2)HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer(3)Springboot以Tomcat为容器实现http重定向到https的两种方式(4)Springboot以Jetty为容器实现http重定向到httpsNginx的特点:(1)热启动:例如当修改配置文件后,不需要停止与启动

2022-07-01 14:32:25 645

转载 如何查看Docker容器环境变量,如何向容器传递环境变量

了解Docker容器的运行环境非常重要,我们把应用放在容器里执行,环境变量会直接影响程序的执行效果。所以我们要知道容器内部的环境变量,也要知道如何改变这些环境变量。通过docker inspect命令不仅能查看环境变量,还能查看容器其它相关信息,非常丰富,以Json格式输出。截取片段来看看: 可读性还可以,但也不算很高,可以通过grep命令过滤一下:或者可以解析一下Json文本:2.2 方式二:doecker exec env这种方式获取的环境变量就跟我们平时获取linux环境变量是一

2022-07-01 14:19:57 2533

原创 步入刺激战场,手撕微服务实战Dubbox+Spring Boot+Docker战役讲解

刚开始进入软件行业时还是单体应用的时代,前后端分离的概念都还没普及,开发的时候需要花大量的时间在“强大”的JSP上面,那时候SOA已经算是新技术了。现在,微服务已经大行其道,有哪个互联网产品不说自己是微服务架构呢?第1章:架构设计。本章详细讲解了秒杀抢购的应用场景并对该应用场景进行深 度剖析。通过业务分析,提出相应的业务级解决方案及系统级解决方案,并规划出技 术栈的实现重点和难点。最后基于秒杀抢购的实际业务规划出“双11”抢购项目的业务 务架构、应用架构、技术架构及部署架构。第2章:微服务架构。...

2022-06-30 16:52:40 233

转载 「Springboot」用Prometheus+Grafana监控Springboot应用

项目越做越发觉得,任何一个系统上线,运维监控都太重要了。关于Springboot微服务的监控,之前写过【Springboot】用Springboot Admin监控你的微服务应用,这个方案可以实时监控并提供告警提醒功能,但不能记录历史数据,无法查看过去1小时或过去1天等运维情况。本文介绍Prometheus + Grafana的方法监控Springboot 2.X,实现美观漂亮的数据可视化。Prometheus是一套优秀的开源的监控、报警和时间序列数据库组合系统,在现在最常见的Kubernetes容器管理系

2022-06-30 15:46:11 498

转载 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在分布式、微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合MongoDB的两种方法:MongoRepository和MongoTemplate。代码结构如下:为了方便,使用Docker来启动MongoDB,详细指导文档请参考:用Docker安装一个MongoDB最新版玩玩 ,这里不再赘述。主要的依赖为Web和MongoDB的starter,把下面代码加入到pom.xml中即可:

2022-06-30 15:28:34 340

转载 超级好用的轻量级JSON处理命令jq

jq是一个轻量级的命令行工具,让你可以非常方便地处理JSON数据,如切分、过滤、映射、转化等,就像sed、awk、grep文本处理三剑客一样。jq是用C写的,没有运行时依赖,你可以直接下载可执行文件就可以使用了。官网提供了可执行文件,可以直接下载使用,当然也可以通过源码编译。我是直接下载的,然后给可执行权限:更名为jq:再加入PATH即可。3 如何使用官方提供了线上版本,可以直接使用,还给出了很多常用的例子,简直不要太方便:过滤:获取全部内容:过滤:获取特定key值:计算长

2022-06-30 15:12:07 223

转载 Docker安装Kong API Gateway并使用

Kong不是一个简单的产品,本文讲的Kong主要指的是Kong API Gateway,即API网关。这次主要是简单体验一把,通过Docker安装,然后使用它的Route功能。创建Docker的Network:Kong可以使用无数据库模式,为了窥探一下它的配置,我们还是使用数据库,启动如下:接着进行migrations操作,可以理解为是准备数据库:准备就绪后,就可以启动Kong了:它的Admin端口为8001,通过下面命令验证:3 测试Route功能先创建一个服务,可以理解

2022-06-30 15:01:31 276

原创 万变不离其宗,spring常考知识点总结

万变不离其宗,只要理解透了spring常考知识点,那么面试时的问题就好回答了。Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO为基础的编程模型促进良好的编程风格。由于spring解决的问题是对单个数据库进行局部事务处理的,具体的实现首先用spring中的IoC划分了事务处理单元。并且将对事务的各种配置放到了ioc

2022-06-29 16:24:30 118

转载 完整责任链模式——回旋链

在实际的源码中也是这样使用的,一块看下代码吧!首先需要一个Filter接口,以及doFilter方法。FilterChain chain存储多个Filter,及链中的结点。下面就到核心部分,之前需要先创建几个Filter实现类,最少两个。有了实现类,我们来看FilterChain怎么搞。首先需要有一个添加Filter到链中的方法,同时应该把目标方法的目标类传进来。如下:思考:从HttpFilter到EncodingFilter,即filter链的执行过程由谁来控制?对,FilterChai

2022-06-29 16:01:12 46

转载 Spring Framework源码解析-BeanPostProcessor讲解

BeanPostProcessor接口作用是:如果我们需要在Spring容器完成Bean的实例化、配置和其他的初始化前后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProcessor接口的实现,然后注册到容器中。(类似于拦截器和过滤器)。 BeanPostProcessor分为三大类如下图:Spring Bean的实例化图解:在检查完 Aware 接口后,就开始调用 BeanPostProcessor 进行前置处理后置处理。下面来看一下Spring中的几类继承:BeanPostProc

2022-06-29 15:46:05 314

转载 MySQL索引底层为什么用B+树?看完这篇文章,轻松应对面试。

面试开始,直入正题。面试官: 你知道MySQL索引底层数据结构为啥用B+树?而不用B树、红黑树或者普通二叉树?我: 这事谁知道作者咋想的?他可能是用B+树习惯了,个人爱好吧。面试官: 你倒是挺看得开。今天的面试就先到这吧,后面有消息会主动联系你。我: 要知道MySQL索引底层数据结构为啥用B+树,先要了解一下什么样的数据结构更适合建索引。为了保证数据安全性,一般都是把数据存储在磁盘里面。当我们需要查询数据的时候,需要读取磁盘,就产生了磁盘IO,相比较内存操作,磁盘IO读取速度是非常慢的。由于所需数据可能在磁

2022-06-29 15:04:37 168

转载 一条update语句到底加了多少锁?带你深入理解底层原理

面试开始,直入正题。面试官: 看你简历上面写着精通MySQL,我问你一个MySQL锁相关的问题,你看一下这条SQL会对哪些数据加锁?表结构是这样的:我: age是非唯一性索引,MySQL的锁是加在索引上面的,应该只会对age=10的数据加锁。面试官: 确定吗?我: 嗯...,应该是的。面试官: 【嘲讽】,这就是你精通MySQL的水平吗?今天面试就先到这里吧,后面有消息会主动联系你。我: 这条SQL具体对哪些数据加锁,还需要看表中有哪些数据。MySQL有三种类型的行锁:记录锁(Record Loc

2022-06-29 14:52:31 2312 1

转载 在海思芯片上使用GDB远程调试

使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其他静态库等,尝试解决,但是遇到了一些其他问题,因为时间问题折腾了一段时间就放弃使用10.2的版本了)。通过使用 gdb+gdbserver 远程调试目标板,之后就可以通过 VSCode 配置好后实现和 IDE 集成开发环境一样的比较直观方便调试。1)下载 gdb(网上很多,搜索就能下载,我选择的是 gdb-8.2)2)解

2022-06-29 14:46:48 475

转载 居然还有人说ArrayList是2倍扩容,今天带你手撕ArrayList源码

ArrayList是我们开发中最常用到的集合,但是很多人对它的源码并不了解,导致面试时,面试官问的稍微深入的问题,就无法作答,今天我们一起来探究一下ArrayList源码。切记:无参初始化的时候,默认是空数组,并没有初始化容量大小,容量是在第一次添加元素的才进行初始化。看一下扩容逻辑:可以看到:再看一下数组拷贝的逻辑,这里都是Arrays类里面的方法了:最终调用了System类的数组拷贝方法,是native方法:4. 删除单个元素可以知道,删除元素,就是遍历数组,循环

2022-06-28 15:51:34 207

空空如也

空空如也

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

TA关注的人

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