自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (8)
  • 收藏
  • 关注

原创 【无标题】

Spring Boot + Redis 延时双删功能,实战来了!一、业务场景在多线程并发情况下,假设有两个数据库修改请求,为保证数据库与redis的数据一致性,修改请求的实现中需要修改数据库后,级联修改Redis中的数据。请求一:A修改数据库数据 B修改Redis数据请求二:C修改数据库数据 D修改Redis数据并发情况下就会存在A —> C —> D —> B的情况一定要理解线程并发执行多组原子操作执行顺序是可能存在交叉现象的1、此时存在的问题。

2023-12-07 16:49:59 116

原创 人生处处有Bug

灵异事件!程序里发现了新Bug但是它正常运行啦!”、“谁敢信,我电脑死机竟然是因为放青藏高原的时候硬盘共振振幅太大了——”……人生处处有Bug,哪一个最令你目瞪口呆,久久不能忘怀?今天就来浅浅分享一下吧!

2023-08-16 09:35:46 207 2

原创 精心准备了1009道java面试题

Redis的数据类型有哪些? 请简述一下JVM的内存模型 说说堆和栈的区别 说说你对CAP的理解 你知道哪些分布式事务解决方案?什么是二阶段提交? 什么是 HTTP?HTTP 的作用是什么? 说说HTTP的优点和缺点 什么是长连接、短连接? 什么是反向代理?什么是TCP/IP ? 什么是 TCP/IP 通信传输流? 请说说TCP/IP 协议族中的 IP 协议 说一下OSI的七层体系结构说说TCP/IP 四层体系结构 说一下OSI模型(七层)和TCP/IP模型(四层)有什么关系 知道各个层使用的是哪个

2023-08-16 09:34:32 180 1

原创 MySQL事务的12连问,你顶得了嘛

因为RC隔离级别,加锁过程中,只需要对修改的记录加行锁。通俗的讲,数据库中同时存在多个版本的数据,并不是整个数据库的多个版本,而是某一条记录的多个版本同时存在,在某个事务对其进行操作的时候,需要查看这一条记录的隐藏列事务版本id,对比事务id并根据事物隔离级别去判断读取哪个版本的数据。综上所述,在读已提交(RC)隔离级别下,同一个事务里,两个相同的查询,读取同一条记录(id=1),却返回了不同的数据(第一次查出来是孙权,第二次查出来是曹操那条记录),因此RC隔离级别,存在不可重复读并发问题。

2023-08-16 09:34:04 140

原创 还分不清 Cookie、Session、Token、JWT?

而 Token ,如果指的是 OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对 App。当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。比如用在用户登录上。

2023-08-16 09:31:05 84 1

原创 SQL 性能优化梳理

select_type,有几种值:simple(表示简单的select,没有union和子查询),primary(有子查询,最外面的select查询就是primary),union(union中的第二个或随后的select查询,不依赖外部查询结果),dependent union(union中的第二个或随后的select查询,依赖外部查询结果)将多表关联查询的一次查询,分解成对单表的多次查询。数据迁移,表升级的过程中可以使用影子表的方式,通过修改原表的表名,达到保存历史数据,同时不影响新表使用的目的。

2023-08-16 09:29:54 63

原创 Spring夺命35连问

Java 是面向对象的编程语言,一个个实例对象相互合作组成了业务逻辑,原来,我们都是在代码里创建对象和对象的依赖。所谓的IOC(控制反转):就是由容器来负责控制对象的生命周期和对象间的关系。以前是我们想要什么,就自己创建什么,现在是我们需要什么,容器就给我们送来什么。引入IOC之前和引入IOC之后也就是说,控制对象生命周期的不再是引用它的对象,而是容器。对具体对象,以前是它控制其它对象,现在所有对象都被容器控制,所以这就叫控制反转。控制反转示意图DI(依赖注入)

2023-08-15 15:28:47 103

原创 并发环境下,先操作数据库还是先操作缓存?

在分布式系统中,缓存和数据库同时存在时,如果有写操作,先操作数据库还是先操作缓存呢?❝❞综上所述,在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,「先操作数据库,再操作缓存」。如下:1.读取缓存中是否有相关数据2.如果缓存中有相关数据value,则返回3.如果缓存中没有相关数据,则从数据库读取相关数据放入缓存中key->value,再返回4.如果有更新写数据,则先操作数据库,再操作缓存5.为了保证第四步更新缓存成功,使用binlog异步通知操作。

2023-08-15 15:12:23 122

原创 为什么要分库分表?

上面主要从:垂直和水平,两个方向介绍了我们的系统为什么要分库分表。说实话垂直方向(即业务方向)更简单。在水平方向(即数据方向)上,分库和分表的作用,其实是有区别的,不能混为一谈。分库:是为了解决数据库连接资源不足问题,和磁盘IO的性能瓶颈问题。分表:是为了解决单表数据量太大,sql语句查询数据时,即使走了索引也非常耗时问题。此外还可以解决消耗cpu资源问题。分库分表:可以解决 数据库连接资源不足、磁盘IO的性能瓶颈、检索数据耗时 和 消耗cpu资源等问题。

2023-08-15 15:08:24 90 1

原创 服务器性能如何优化?

内存用于存放程序的代码及数据,一般分为物理内存和虚拟内存,其中物理内存指的是服务器的内存,而虚拟内存指的是硬盘的一块空间。如上图所示,这是一个4核CPU服务器,在截图的时候其中3核CPU使用率都超过了75%,再观察一会发现所有CPU的使用率都在85%左右徘徊,说明CPU负载很高了,需要考虑增加新的服务器。一般情况下服务器的平均负载需要小于当前服务器的CPU核数,为了应对突发状况,服务器的平均负载应该在75%即3 以下,很显然,上图这台服务器平均负载超过了75%,需要考虑提升性能了。

2023-08-15 15:05:56 290

原创 如何用 Java 几分钟处理完 30 亿个数据?

根据 CPU 的能力初始化 n 个线程,每一个线程去消费一个队列,这样线程在消费的时候不会出现抢占队列的问题。现有一个 10G 文件的数据,里面包含了 18-70 之间的整数,分别表示 18-70 岁的人群数量统计。假设年龄范围分布均匀,分别表示系统中所有用户的年龄数,找出重复次数最多的那个数,现有一台内存为 4G、2 核 CPU 的电脑,请写一个算法实现。如果在运行了的时候,发现 GC 突然罢工不工作了,有可能是 JVM 的堆中存在的垃圾太多,没回收导致内存的突增。

2023-08-15 15:02:59 72

原创 10种定时任务

不知道你有没有遇到过这种场景:有时需要临时统计线上的数据,然后导出到excel表格中。这种需求有时较为复杂,光靠写sql语句是无法满足需求的,这就需要写java代码了。然后将该程序打成一个jar包,在线上环境执行,最后将生成的excel文件下载到本地。为了减小对线上环境的影响,我们一般会选择在凌晨1-2点,趁用户量少的时候,执行统计程序。(其实凌晨4点左右,用户才是最少的)由于时间太晚了,我们完全没必要守在那里等执行结果,一个定时任务就能可以搞定。那么,这种情况用哪种定时任务更合适呢?linux。

2023-08-15 15:01:42 1248

原创 Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化

至此,Nginx的大部分内容都已阐述完毕,关于最后一小节的性能优化内容,其实在前面就谈到的动静分离、分配缓冲区、资源缓存、防盗链、资源压缩等内容,也都可归纳为性能优化的方案。

2023-08-15 09:49:07 89

原创 大厂都怎么防止重复下单?

系统异常时 666 请求到了,单号更成 666,接着 888 请求到了,单号又更新成 888,但是 666 更新成功的响应丢了,调用方没收到成功响应,自动重试,再次发起 666 请求,单号又被更新成 666了,这数据显然就错了!更新订单服务,通过一个版本号机制,每次更新数据前校验版本号,更新数据同时自增版本号,这样的方式,来解决 ABA 问题,确保更新订单服务的幂等性。创建订单服务,可通过预生成订单号,然后利用 DB 的订单号唯一约束,避免重复写入订单,实现创建订单服务的幂等性。最简单的:DB 事务。

2023-08-15 09:47:20 66

原创 经典面试架构java---系统设计(你会几个)

常用的HTTP方法有GET、POST、PUT、PATCH和DELETE等,它们分别对应获取数据、创建数据、更新数据、部分更新数据和删除数据的操作。订单模型:定义订单模型,包括订单号、下单时间、订单状态、支付状态、收货地址、商品信息、价格等字段。订单生命周期:定义订单的生命周期,包括订单创建、待支付、已支付、待发货、已发货、待收货、已完成、已取消等状态。异步回调处理:如果支付渠道提供异步回调通知的功能,确保在接收到支付成功的通知后,进行订单状态更新等必要的操作,并返回正确的响应码,以避免重复支付。

2023-08-15 09:45:53 877

原创 面试官问我接口优化:我一口气说了十八种

之前工作中,遇到一个504超时问题。原因是因为接口耗时过长,超过nginx配置的10秒。然后 真枪实弹搞了一次接口性能优化,最后接口从11.3s降为170ms。本文将跟小伙伴们分享接口优化的一些通用方案。

2023-08-10 08:48:10 241

原创 Cookie、Session、Token、JWT?

通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)互联网中的认证:用户名密码登录邮箱发送登录链接手机号接收验证码只要你能收到邮箱/验证码,就默认你是账号的主人用户授予第三方应用访问该用户某些资源的权限你在安装手机应用的时候,APP 会询问是否允许授予权限(访问相册、地理位置等权限)你在访问微信小程序时,当登录时,小程序会询问是否允许授予权限(获取昵称、头像、地区、性别等个人信息)

2023-08-09 11:00:48 95

原创 最全的java面试题库

23种设计模式,面试重点。

2023-08-09 10:58:40 350 1

原创 6种对象拷贝工具

Mapstruct的使用和上面几种方式有些不同,因为上面的几种方式,spring和apache,hutool使用的都是反射,cglib是基于字节码文件的操作,都是在都代码运行期间动态执行的,但是Mapstruct不同,它在编译期间就生成了 Bean属性复制的代码,运行期间就无需使用反射或者字节码技术,所以具有很高的性能。星球中有很多独家的干货内容,比如:Java后端学习路线,分享实战项目,源码分析,百万级系统设计,系统上线的一些坑,MQ专题,真实面试题,每天都会回答大家提出的问题。

2023-08-09 10:55:20 1558 1

原创 8 个线程池最佳实践和坑!使用不当直接生产事故!!

一般建议是不同的业务使用不同的线程池,配置线程池的时候根据当前业务的情况对当前线程池进行配置,因为不同的业务的并发以及对资源的使用情况都不同,重心优化系统性能瓶颈相关的业务。

2023-08-09 10:52:45 136 1

原创 SpringBoot 项目使用 Redis 对用户 IP 进行接口限流

在下新建limit.lua-- 获取redis键-- 获取第一个参数(次数)-- 获取第二个参数(时间)-- 获取当前流量-- 如果current值存在,且值大于规定的次数,则拒绝放行(直接返回当前流量)end-- 如果值小于规定次数,或值不存在,则允许放行,当前流量数+1 (值不存在情况下,可以自增变为1)-- 如果是第一次进来,那么开始设置键的过期时间。end-- 返回当前流量@Slf4j@Aspect@Component@Autowired@Autowired。

2023-08-09 10:51:07 225

原创 SpringBoot实现人脸识别功能

去年在公司参与了一个某某机场建设智能机场的一个项目,人脸登机是其中的一个功能模块,当时只是写了后台的接口,调用人脸识别设备的api,给闸机回传数据信号,以保障该功能的正常使用。当时因为项目进度紧张,手里还有其他项目赶进度,也就没时间去分享这个功能的实现。前几天刷脸进公司大楼的时候,突然想起来应该写一个功能类似的demo分享个人的一些小小的经验。

2023-08-09 10:49:39 597 1

原创 52 类 110 个常用 Java 组件和框架整理

也有一些实在不好分类的,就放到最后了。

2023-08-09 10:47:42 126

原创 @Autowired, @Resource, @Inject 有什么区别?建议怎么使用?

Autowired@Resource@Inject三个注解的区别当你在使用@Autowired时,是否有出现过的警告?你知道这是为什么吗?Spring 依赖注入有哪几种方式?官方是怎么建议使用的呢?如果你对上述问题都了解,那我个人觉得你的开发经验应该是不错的。下面我们就依次对上述问题进行解答,并且总结知识点。

2023-08-09 10:42:56 90

原创 1-100期Java面试题及答案整理合集

1-100期Java面试题及答案整理合集。

2023-08-09 10:40:54 52

原创 Spring Bean 实例化过程

对于写Java的程序员来说,Spring已经成为了目前最流行的第三方开源框架之一,在我们充分享受Spring IOC容器带来的红利的同时,我们也应该考虑一下Spring这个大工厂是如何将一个个的Bean生产出来的,本期我们就一起来讨论一下Spring中Bean的实例化过程。容器启动阶段Bean实例化阶段容器的启动阶段做了很多的预热工作,为后面Bean的实例化做好了充分的准备,我们首先看一下容器的启动阶段都做了哪些预热工作。容器启动阶段1、配置元信息我们说Spring IOC容器将对象实例的创建与对象实例的使

2023-08-09 10:40:39 48

原创 Java面试题及答案整理

Read Through 和 WriteThrough 的流程类似,只是在客户端查询数据A时,如果缓存中数据A失效了(过期或被驱逐淘汰),则缓存会同步去数据库中查询数据A,并缓存起来,再返回给客户端。可见,最后缓存中的数据A和数据库中的数据A是一致的,理论上可能会出现一小段时间数据不一致,不过这种概率也比较低,大部分的业务也不会有太大的问题。可见,最后缓存中的数据A跟数据库中的数据A是不一致的,缓存中的数据A是旧的脏数据。客户端1 更新缓存中数据A,缓存同步更新数据库中数据A,再返回结果。

2023-08-04 11:15:58 159 2

原创 30 个 IDEA 常用小技巧

下面总结了常用的 30 个 IDEA 使用小技巧,让你的撸码效率直接起飞...查看代码历史版本调整idea的虚拟内存:idea设置成eclipse的快捷键设置提示词忽略大小写关闭代码检查设置文档注释模板显示方法分隔符设置多行tab快速匹配方法的大括号位置代码结尾补全模糊搜索方法预览某个类的代码查看方法在哪里被调用代码模板(代码快捷键)自动导包、自动移除没用的包codota插件:可以优先显示使用频率较高的类、方法快速查看类、字段的注释括号颜色区分。

2023-08-04 11:14:23 548

原创 EasyExcel 带格式多线程导出百万数据

以下为结合实际情况作的方案设计,导出阈值以及单sheet页条数都可以根据实际情况调整大佬可直接跳过新手教程,直接查看文末代码资源占用内存(也是资源的一个,单独说明)响应时间针对以上三个问题,大方向考虑的是多线程结合数据流写入的方式。多线程:使用空间换时间,主要是加快接口响应时间,但是这里线程数不宜过多,一味加快响应时间提升线程数,资源占用会非常严重,故会考虑线程池,线程池的线程数为10;

2023-08-04 11:13:41 406

原创 Java 生成各种 PDF 实战方案(图片、模板、表格)

新开一页的话,就相当于我在第二页开始动态生成表格,这个时候可能有朋友就要问了,那如果我的模板没有占到一页怎么办,这样第一页岂不是会有空白,这个问题我也想到了,因为我的需求是生成好几种不同的pdf,下面我会把这种情况如何生成的代码放出来,我们先看一下第一种生成出来后的结果,我测的数据比较多,就粘几个结果好了。新开一页,这个是因为,如果你不新开一页的话会导致你动态生成的表格会跟模板内容重叠,注意是重叠而不是覆盖!我说一下这个生成pdf需要注意的点,可能有的朋友很疑惑为什么要调用。实体类都是一样的没有变。

2023-08-04 11:13:01 261

原创 RocketMQ会重复消费吗

总得来说,RocketMQ中还是存在很多种导致消息重读消费的情况,并且官方也说了,只是在大多数情况下消息不会重复所以如果你的业务场景中需要保证消息不能重复消费,那么就需要根据业务场景合理的设计幂等技术方案。

2023-08-04 11:12:16 194

原创 MySQL 自增主键一定是连续的吗

自增锁是一种比拟非凡的表级锁。并且在事务向蕴含了列的表中新增数据时就会去持有自增锁,假如事务 A 正在做这个操作,如果另一个事务 B 尝试执行 INSERT语句,事务 B 会被阻塞住,直到事务 A 开释自增锁。

2023-08-04 11:11:34 97

原创 SpringBoot 启动流程

被标注的类等于在Spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个Spring的上下文环境。回顾整体流程,Springboot的启动,主要创建了配置环境(),并基于以上条件,在容器中开始实例化我们需要的Bean,至此,通过SpringBoot启动的程序已经构造完成。注解,其中Registrar类的作用是将启动类所在的包下的所有子包组件扫描注入到spring容器中。文件中找到所有的对应配置类,然后将这些自动配置类加载到spring容器中。

2023-08-04 11:10:51 72

原创 SpringBoot 调用外部接口的三种方式

在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求, 比如在apaas开发过程中需要封装接口在接口中调用apaas提供的接口(像发起流程接口submit等等)下面也是提供了三种方式(不使用dubbo的方式)供我们选择。此处因为我使用了所在项目,所以需要添加一定的请求头等信息,关于Feign的请求头添加也会在后续补充。同样提供了对外访问的接口API,这里主要介绍Get和Post方法的使用。三种方式,其中每种方式都有三种方法,下面介绍。定义controller。

2023-08-04 11:10:11 98

原创 Spring Boot + K8S

在K8s中,当我们实现滚动升级之前,务必要实现应用级别的优雅停机。此外,若需使用回调钩子,需保证镜像中包含curl工具,且需注意应用管理端口(50000)不能暴露到公网。探针类型:exec(进入容器执行脚本)、tcpSocket(探测端口)、httpGet(调用接口)定义访问端口、路径及权限 application.yaml。定义访问端口、路径及权限 application.yaml。定义访问端口、路径及权限 application.yaml。定义访问端口、路径及权限 application.yaml。

2023-08-04 11:08:44 184

原创 布隆过滤器

1.面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗 资源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是 最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特 性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点: 性能比面向过程低 2. Java 语言有哪些特点 1. 简单易学; 2. 面向对象(封装,继承,多态); 3.

2023-08-04 11:05:57 76

原创 微服务注册中心产品ZooKeeper、Eureka、Consul、Nacos对比

从ZooKeeper的实际应用情况来看,在使用ZooKeeper获取服务列表时,如果此时的ZooKeeper集群中的Leader宕机了,该集群就要进行Leader的选举,又或者ZooKeeper集群中半数以上服务器节点不可用(例如有三个节点,如果节点一检测到节点三挂了 ,节点二也检测到节点三挂了,那这个节点才算是真的挂了),那么将无法处理该请求。Eureka的集群中,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。

2023-08-02 11:01:58 416

原创 注解@PostConstruct作用

Autowired是用于注入对象,注入对象到this.beanDefinitionMap是在invokeBeanFactoryPostProcessors()方法中实现的,而@PostConstruct标识的方法,用于在前置处理阶段,而之前都已经走过了实例化createBeanInstance和属性注入populateBean阶段。前面提到了@PostConstruct在项目启动的时候执行方法,那么@PostConstruct到底在springboot的执行流程中,什么时候执行呢?

2023-08-02 10:55:52 144

原创 postconstruct注解的作用

做过微信或支付宝支付的童鞋,可能遇到过这种问题,就是填写支付结果回调,就是在支付成功之后,支付宝要根据我们给的地址给我们进行通知,通知我们用户是否支付成功,如果成功我们就要去处理下面相应的业务逻辑,如果在测试服务,那么这个回调地址我们就需要填写测试服务的,如果发布到线上那么我们就需要改成线上的地址。有的朋友可能就比较自信了,那我直接加个static修饰下不就好了,如果你真是打算这样做,那你就准备卷好铺盖走人吧。针对上面的场景,我们一般都会通过如下的方式,进行一个动态配置,不需要每次去改,防止出现问题。

2023-08-02 10:53:23 108

原创 列出 @Transactional 注解下,事务失效的七种场景

也不会回滚,因为spring实现事务的原理是通过ThreadLocal把数据库连接绑定到当前线程中,新开启一个线程获取到的连接就不是同一个了。是一种基于注解管理事务的方式,spring通过动态代理的方式为目标方法实现事务管理的增强。,原理很简单,private修饰的方式,spring无法生成动态代理。(以非事务的方式执行,如果当前有事务则把当前事务挂起)。失效的场景,本文总结了七种情况,下面进行逐一分析。当异常被捕获后,并且没有再抛出,那么。类型的异常,依旧不会生效。是不会回滚的,其原因就是。

2023-08-02 10:49:24 219

毕业设计.zip 在进行Java毕业设计时,可以选择与自己感兴趣的领域相关的项目,如Web应用、移动应用、数据分析等

需求分析:在开始项目之前,需要进行充分的需求分析,明确项目的功能要求、技术要求和约束条件。这包括与项目相关的业务需求、用户需求和系统需求等方面的分析。 设计与架构:在毕业设计中,设计合理的软件架构是至关重要的。根据项目需求,要使用适当的设计模式和设计原则来组织代码,并明确各个模块之间的关系和交互。 技术选型:根据项目需求和自己的技能水平,选择合适的Java技术和框架来支持开发。常见的Java技术包括Spring框架、Hibernate ORM、Java EE等,根据具体的项目需求来决定使用哪些技术。 实现与编码:在项目实现阶段,根据项目设计和需求分析的结果,进行具体的编码实现。注意编写可读性高、可维护性好、符合编码规范的代码。 测试与调试:在项目开发过程中,要进行充分的测试和调试,确保软件的正确性和稳定性。可以采用单元测试、集成测试和验收测试等不同层次的测试方法。 文档撰写:在完成项目开发后,还需要撰写相关的文档

2023-07-25

并发编程面试题汇总.docx并发编程是指在一个程序中同时执行多个独立的任务或操作的能力 在面试中,常常会问到与并发编程相关的问题

并发和并行的区别:并发是指同时处理多个任务的能力,而并行是指同时执行多个任务的能力。并发通常发生在单处理器系统中,通过任务切换的方式实现多个任务之间的迅速切换。而并行则需要多个处理器或多核处理器,并且每个任务在不同的处理器或核上同时执行。 线程和进程:线程是操作系统进行调度的最小单位,它是进程内的一个执行流。一个进程可以包含多个线程,共享进程的资源(如内存),但每个线程有自己的堆栈和寄存器状态。并发编程中常用线程来处理并发任务,通过线程之间的协调和通信来实现任务的并发执行。 共享资源和竞态条件:并发编程中,多个线程对共享资源的并发访问可能导致竞态条件和数据不一致的问题。竞态条件指的是多个线程访问共享资源时的执行顺序和时间导致的不确定结果。为了避免竞态条件,需要使用同步机制(如锁、信号量、互斥量等)来保证对共享资源的互斥访问。 死锁和活锁:死锁指的是多个线程相互等待对方释放资源,导致程序无法继续执行的情况。而活锁指的是线程不断尝试解决

2023-07-25

mysql索引失效.docx MySQL索引失效是指在查询执行过程中,数据库无法有效地使用索引来提高查询性能

使用了不适当的数据类型:如果列的数据类型与索引的数据类型不匹配,MySQL可能无法使用索引进行有效的查询。例如,将字符串类型的列与索引类型为整数的索引进行比较。 非匹配的查询条件:如果查询条件与索引列的顺序不匹配,或者使用了函数或表达式来处理索引列,MySQL可能无法使用索引。比如,如果索引列是"timestamp"类型,但查询条件中使用了函数对该列进行了处理,索引可能失效。 表达式和函数的使用:当查询中使用了大量表达式或函数来处理列时,MySQL可能无法使用索引。这是因为MySQL只能在索引存储的原始列上进行查询匹配。 索引列上使用了函数:如果在索引列上使用了函数(如LOWER、UPPER、TRIM等),MySQL可能无法使用索引,因为索引是依赖于列值的原始形式。 多列索引的顺序问题:如果查询中的条件和多列索引的顺序不匹配,MySQL可能无法使用索引。多列索引按照定义的顺序进行匹配,如果查询不是按照相同的顺序来进进行查询,索引将无法有效使用。 查询范围过大:如果查询的结果集涵盖了太多的行,MySQL可能会放弃使用索引而选择全表扫描。这是因为在这种情况下,全表扫描可能更快。

2023-07-25

MySQL在面试中经常被问到.docx MySQL是一个流行的关系型数据库管理系统(RDBMS),在面试中经常被问

开源性:MySQL是一个开源软件,由社区贡献者共同开发和维护。这意味着用户可以自由获取、使用和修改MySQL,且不需要支付额外的费用,使得它成为许多开发者首选的选项。 可靠性和稳定性:MySQL被认为是一个可靠且稳定的数据库系统,已经经过多年的市场验证和广泛应用。它具有强大的容错机制和数据一致性保证,能够处理大量并发请求和高负载。 性能优化:MySQL通过多种性能优化技术,如索引、查询优化和内部缓存等,提供了快速的数据处理能力。开发人员可以通过合理地设计数据库结构、优化查询语句和配置参数等方式来提升MySQL的性能。 可扩展性:MySQL支持水平和垂直两个方向的扩展。在水平扩展方面,可以通过主从复制、分片和集群等技术来实现可扩展性;在垂直扩展方面,可以通过增加硬件资源来提高MySQL的性能。 数据安全性:MySQL提供了各种安全功能,如用户身份验证、数据加密和访问控制等,以保护数据库的安全。此外,MySQL还支持备份和恢复机制,使数据能够在出现故障时得到可靠的保护。 SQL兼容性:MySQL符合SQL标准,并支持广泛的SQL语法和函数。这使得开发人员可以使用标准的SQL语句来

2023-07-25

Spring+Vue全栈实战i项目.pdf Spring和Vue.js是两个流行的开发框架,可以通过前后端分离的方式进行整合

创建Spring Boot项目:使用Spring Initializr或其他方式创建一个基于Spring Boot的项目。 设置后端API:在Spring Boot项目中,创建后端API接口,用于与前端进行数据交互。可以使用Spring MVC来创建控制器类,并定义接收请求和返回响应的方法。 搭建前端Vue.js环境:在项目中创建一个目录用于存放Vue.js相关文件(如 ​src/main/resources/static​),然后初始化Vue.js项目。使用Vue CLI可以帮助您初始化并管理Vue.js项目结构。 开发前端组件:使用Vue.js开发前端页面和组件。可以使用Vue的模板语法、指令和组件系统来创建交互式的前端界面。 发送API请求:在Vue.js组件中,使用Axios或其他HTTP库发送异步请求调用后端API。通过向后端发送请求并处理响应,实现前后端数据交互。 集成前后端:将前端Vue.js项目编译打包为静态资源(如HTML、JS、CSS文件等),然后将其复制到Spring Boot项目的静态资源目录中。在Spring Boot项目中配置好前端静态资源的访问路

2023-07-25

LINUX使用及相关命令.pdf

开源性:Linux是开源软件,允许用户自由地使用、修改和分发。这使得Linux成为一个高度灵活、可定制和可扩展的操作系统。 多用户和多任务:Linux支持多用户同时登录,并能同时执行多个任务。这使得多个用户可以在同一台机器上进行独立的工作。 稳定性和安全性:Linux以其稳定性和安全性而闻名。它具有强大的稳定性和鲁棒性,可以长时间运行而不会出现崩溃或性能下降。此外,Linux也有着广泛的安全性措施来保护系统免受恶意攻击。 强大的命令行界面:Linux提供了强大的命令行界面,使得用户可以通过命令来执行各种操作和管理任务。命令行界面还提供了丰富的工具和管道操作,使得系统管理和任务自动化变得容易。 多样的发行版:Linux有许多不同的发行版(例如Ubuntu、Debian、CentOS、Fedora等),每个发行版都有特定的目标和特性,以满足不同用户的需求。 社区支持和文档资源丰富:由于开源性质,Linux拥有庞大和活跃的用户社区。这意味着用户可以从众多的论坛、社区和文档资源中获取支持、交流经验和解决问题。 安装Linux的方法取决于您选择的发行版。通常,您需要下载一个适合您计算

2023-07-25

整合Spring和MyBatis,开发人员可以充分发挥两个框架的优势,实现更高效、更灵活、更可维护的持久层操作,并使应用程序的开

简化数据库操作:通过整合,可以利用MyBatis提供的强大的SQL映射能力和数据库访问功能来简化数据库操作。MyBatis可以帮助开发人员更轻松地编写和执行SQL语句,并将结果映射到Java对象。 提供事务管理:Spring提供了强大的事务管理功能,可以与MyBatis无缝集成。通过整合,可以使用Spring事务管理器对数据库操作进行事务控制,实现数据一致性和事务边界的管理。 注解驱动的开发:MyBatis支持使用注解来配置和描述SQL语句,而Spring提供了注解驱动的开发方式。通过整合,可以灵活地使用MyBatis注解来定义SQL语句,同时享受Spring提供的依赖注入、AOP等功能。 模块化管理:通过整合,可以将MyBatis作为Spring应用程序架构的一部分进行管理和组织。可以使用Spring的IoC容器来管理MyBatis的会话工厂、数据源和其他相关的对象,使整个应用程序更易于维护和扩展。 增加开发效率:整合Spring和MyBatis可以减少开发人员的工作量。Spring提供了许多便捷的特性和工具,如自动扫描、依赖注入、面向切面编程等,与MyBatis结合使用,能

2023-07-25

pod文档免费转换、程序员无广告网站、ppt免费下载、在线ps、文库文档下载

1.Pod文档转换:Pod文档转换是一种将文档格式从Markdown转换为其他格式(如PDF、HTML等)的工具。这些工具可以帮助您将Markdown格式的文档转换为可打印或在线浏览的其他格式。 2.程序员无广告网站:程序员无广告网站是专门为开发者提供技术资源、工具和信息的网站,以满足程序员在学习和开发过程中的需求。这些网站通常不会显示烦人的广告,以提供更好的阅读和使用体验。 3.PPT免费下载:有许多网站提供免费下载PPT(演示文稿)的服务,您可以在这些网站上浏览并下载其他人共享的PPT文件,以便在您的演示中使用或参考。 4.在线PS:在线PS是一种通过网络浏览器使用的在线图像编辑工具,类似于Adobe Photoshop。您可以通过这些在线工具进行图像编辑、调整、修饰等操作,而无需安装额外的软件或购买许可证。 5.文库文档下载:文库文档下载是指从文库网站上下载各种文档(例如论文、报告、教程等)的行为。这些文库网站通常提供用户上传和共享自己的文档,其他用户可以在上面搜索并下载这些文档。

2023-07-24

计算机专业毕业设计-Java.rar

计算机管理系统:这是一种用于管理计算机设备和网络的软件系统。它可以帮助管理员对计算机资源进行监控和管理,包括硬件设备、软件安装和更新、用户账户和权限等。 考试系统:考试系统是一种用于电子化考试管理和评估学生知识水平的软件系统。它能够提供在线考试、自动评分、生成成绩报告等功能,方便学校和教育机构进行高效的考试管理。 小游戏:小游戏指的是简单且不需要太复杂操作的电子游戏。这些游戏通常具有简单的规则和操作方式,适合休闲娱乐和放松心情。 物业管理系统:物业管理系统是一种用于管理和优化物业运营的软件系统。它可以帮助物业管理公司或物业所有者进行租赁管理、维修保养、费用管理等工作,提高管理效率和服务质量。 聊天系统:聊天系统是一种用于实时沟通和交流的软件系统。它可以提供人与人之间的文字、语音、视频通话等功能,方便个人、团队或组织进行即时沟通和协作。 购物系统:购物系统是一种用于在线购物和交易的软件系统。它可以提供商品浏览、购物车、支付和订单管理等功能,方便用户进行线上购物,商家进行电子商务运营。 宿舍管理系统:宿舍管理系统是一种用于管理学生宿舍的软件系统。它可以帮助学校管理方案分配、住宿

2023-07-21

大学智能教务管理系统.war

随着时代的发展,教育也在逐步创新和变革。在这个信息化的时代,智慧校园已经成为了未来教育的趋势和方向。智慧校园作为一种新型的教育模式,将信息技术与教育相结合,能够提高教学效率,优化学生体验,提高学校管理水平。而教务管理系统就是智慧校园中的重要组成部分之一,它可以帮助学校更好地完成教学管理、资源管理和学生成绩管理等工作,提供了一种全新的管理方式。本文将详细介绍教务管理系统以及其在智慧校园建设中的应用。 一、什么是教务管理系统 教务管理系统简称教务系统,是一种基于信息技术的学校管理软件,主要用于教学计划编制、课程安排、成绩管理、学籍管理、教师管理等教务工作,是学校管理的关键系统之一。教务管理系统通过整合学校各类信息资源,实现了信息共享、数据交换、业务协同等功能,并且可以将各项服务自动化,提高了学校的管理效率和水平。 二、教务管理系统的功能 1.教学计划管理:教务管理系统可以对学校的教学计划进行全面排查和编制。管理员可以依据实际情况进行课程设置、时间安排、学生分班等操作,保证教学质量和可行性。 2.学籍管理:教务管理系统可以对学生资料进行全面的管理,包括学号、姓名、年级、专业。

2023-07-21

大华设备---人脸识别及行为分析

人脸及行为分析设备配置说明书 1. 设备初始IP地址:192.168.1.108 2. 设备登录用户名及密码 用户名:admin 密 码:admin123 3.配置行为动作分析详情: 1>.人脸识别功能配置:先点击设置--》事件管理--》人脸识别—》配置功能如下图所示: 2>.行为动作配置:先点击设置--》事件管理--》课堂行为分析--》 配置功能如下图所示: 3>.立体行为动作配置:先点击设置--》事件管理--》立体行为分析--》 配置功能如下图所示: 4>.智能方案配置:先点击设置--》事件管理--》--》智能方案 4.开始进行人脸识别及行为分析:

2022-04-20

java数据库面试题目

1.数据库三大范式: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。 第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式,如下表所示。 上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。 2.第二范式(确保表中的每列都和主键相关) 第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 比如要设计一个订单信息表,因为订单中可能会

2022-04-20

MongDB篇.pdf

java面试--主要针对java面试者,结合实际项目整合的问题;

2021-04-25

JVM性能优化相关问题.pdf

主要针对java面试者,在结合项目场景问到的问题;

2021-04-25

Dubbo面试题.pdf

主要针对java面试者,在面试结合项目所问到的问题

2021-04-25

ActiveMQ消息中间件面试题.pdf

主要对ActiveMQ消息中间件的使用,以及面试结合项目问到的问题;

2021-04-25

本地ftp服务创建软件

1.操作简单,只需将下载包进行解压,点击exe就可以安装; 2.填写你的ip,端口; 3.设置你的用户名和密码; 4.新建文件夹,将你的共享文件放入;别人只要知道你的密码就可以访问;

2020-11-07

web端调用大华摄像头demo及大华控件开发包编程指南文档

html页面调用大华摄像头,实现实时监控,以及回放、视频下载,云控制、视频窗口个数、预览、通道等并且是根据时间范围下载视频demo,并且附带了exe用于快速安装ocx控件

2020-11-07

空空如也

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

TA关注的人

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