- 博客(252)
- 资源 (23)
- 收藏
- 关注
原创 MySQL索引测试
表中没有任何数据时,无论是否使用索引,查询结果都是一样的。但直接扫描表(全表扫描)可能比使用索引更快,因为即使是空表,访问索引也需要一定的开销,但并不会带来性能提升。使用如下SQL语句建表,并使用b列作为条件查询。按照索引最左匹配原则,此时应该无法使用索引。但如果表中只包含主键列和索引列,此时查询优化器还是会使用索引。在MySQL中,即使表中没有数据,查询优化器也会考虑使用索引来执行查询。但在某些情况下,查询优化器可能会选择不使用索引,这通常是基于成本效益分析的结果。
2024-09-20 19:31:51 360
原创 MyISAM引擎介绍
MyISAM是MySQL的一种存储引擎,它以其简单性和高速度而著称。在早期的MySQL版本中,MyISAM广泛使用,尤其是在那些以读操作为主的应用场景中。然而,随着InnoDB存储引擎的成熟和普及,MyISAM的使用逐渐减少。
2024-09-18 21:16:31 902
原创 MySQL行转列
在数据库操作中,有时我们需要将行数据转换为列数据,这在生成报表或进行数据汇总时尤为常见。本文将以一个学生成绩表为例,演示在MySQL中实现行转列的几种方法。
2024-09-18 16:10:32 293
原创 MySQL EXPLAIN输出信息
MySQL中的EXPLAIN语句提供了有关MySQL如何执行语句的信息。EXPLAIN适用于SELECT、DELETE、INSERT、REPLACE和UPDATE语句。那这些输出是什么意思呢?
2024-09-13 23:01:47 943
原创 垃圾收集器
垃圾收集器(Garbage Collector, GC)是Java虚拟机(JVM)中的一个关键组件,它自动地管理和释放不再使用的对象所占用的内存空间。这样可以防止内存泄漏,并简化了开发者的编程任务。
2024-09-04 16:00:28 672
原创 垃圾收集算法
在Java中,垃圾收集(Garbage Collection, GC)是一种自动化的内存管理机制,它负责回收不再使用的对象所占用的内存。Java虚拟机(JVM)提供了多种不同的垃圾收集器,每种垃圾收集器都有其特点和适用场景,使用的也是不同的垃圾收集算法。
2024-09-02 13:22:21 785
原创 JVM垃圾判定算法
垃圾收集技术是Java的一堵高墙。Java堆内存中存放着几乎所有的对象实例,垃圾收集器在对堆内存进行回收前,第一件事情就是要确定这些对象中哪些还存活,哪些已经死去(即不可能再被任何途径使用的对象)。也就是判定垃圾。
2024-09-01 18:00:42 840
原创 OutOfMemoryError
Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的几个运行时区域都可能发生OutOfMemoryError(OOM)。
2024-09-01 17:06:30 1056
原创 Java对象的访问定位技术
Java虚拟机规范中规定reference类型是一个指向对象的引用,但规定并没有定义这个引用应该通过什么方式去定位、访问堆中的对象的具体位置,所以对象访问方式取决于具体的虚拟机实现。目前主流的访问方式有两种:使用句柄和直接指针。
2024-08-31 22:04:36 390
原创 Java内存区域
这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么绝对了。由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。堆的大小可以是固定的,也可以根据计算的需要进行扩展,如果不需要更大的堆,则可以进行收缩。
2024-08-31 17:19:43 790
原创 JVM的五个 invoke 指令详解
Java 虚拟机 (JVM) 是 Java 语言的核心组件之一,负责执行 Java 字节码。在 JVM 中,invoke 指令用于执行方法调用。本文将详细介绍 JVM 设计的五个 invoke 指令,包括它们的作用和应用场景。invoke 指令在 JVM 中扮演着至关重要的角色,它们负责执行方法调用。理解这些指令的作用和应用场景对于深入理解 Java 字节码和 JVM 的工作原理非常重要。
2024-08-23 22:44:47 824
原创 使用Instrumentation创建代理程序监测Java对象信息
利用这个代理可以清晰的看到Java对象占用的内存大小,不过它的功能简单、操作复杂,其实也可以使用现成的JOL(Java Object Layout)来替代。你觉得呢?
2024-08-23 15:48:12 366
原创 Java对象的内存结构
Java 对象的内存结构对于理解 Java 内存管理和性能优化至关重要。本文将详细介绍 Java 对象的内部结构,并提供查看这些信息的方法。对象头 (Header)实例数据 (Instance Data)填充数据 (Padding Data)
2024-08-23 03:27:37 1157
原创 Java并发控制:volatile和synchronized的底层实现原理
在 Java 中,volatile 和 synchronized 是两种重要的并发控制机制,它们用于保证多线程环境下的数据一致性。volatile 用于声明一个变量的可见性和禁止指令重排,而 synchronized 用于确保代码块或方法的互斥访问。本文将深入探讨这两个关键字的底层实现原理和技术细节。结合JMM和内存屏障的信息,在HotSpot JVM中volatile的底层实现主要依赖于内存屏障,在读取和更新volatile变量的前后添加相应的内存屏障来规范了变量的访问方式。
2024-08-22 20:48:04 716
原创 JVM指令重排序
指令重排序是一种在编译器和处理器级别发生的优化过程,它改变了程序原有的指令执行顺序。这种优化可以在多个层面上发生,包括编译器优化、即时编译优化(JIT),以及处理器层面的优化。指令重排序是一种复杂但非常有效的优化技术。它使得处理器能够更加智能地利用自身的各种资源,如流水线、缓存和并行执行单元,从而提高整体性能。然而,这种优化也带来了额外的挑战,尤其是在多线程编程中,开发者需要对这种机制有所了解,以确保程序的正确性和效率。
2024-08-21 22:41:33 1013
原创 MESI 协议:多核处理器的一致性解决方案
随着整个世界的发展,CPU、内存以及各种I/O设备不断升级迭代,计算机性能有了很大的提升。原先那种简单的计算机架构也随之升级。程序是存储在磁盘,然后读取进内存中的,内存吞吐率虽然得到很大的提升,但是相对于处理器来讲,仍然非常慢。处理器要从内存中直接读取数据都要花大概几百个时钟周期,在这几百个时钟周期内,处理器除了等待什么也不能做。随着处理器技术的发展,现代计算机系统越来越多地采用多核处理器架构来提高性能。
2024-08-21 18:33:24 900
原创 idea安装二进制文本阅读插件
通过本文的指导,你现在应该能够轻松地在 IntelliJ IDEA 中安装并使用 BinEd 插件。这将大大提高你在查看和分析二进制文件时的工作效率。
2024-08-16 23:01:51 437
原创 dbeaver连接mysql8异常
部署了mysql8,尝试用dbeaver 24.1.2连接它。结果配置完成后测试连接时报错:Public Key Retrieval is not allowed.
2024-07-16 19:52:29 281
原创 nodejs安装配置
打开官网(https://nodejs.org/en/download/package-manager),参考安装步骤操作。
2024-05-27 22:05:02 471
原创 如何保证数据库、缓存的双写一致?
在我们日常研发过程中,由于数据库的一些限制,我们经常使用缓存(如:Redis)来提升访问速率。此时,数据库和缓存双写数据就存在一致性问题,这个问题跟开发语言无关,在高并发场景下,问题更加严重。另外,在面试、工作中也会经常遇到这个问题。所以这里跟大家一起探讨下数据库和缓存双写一致性问题的解决文案。
2024-04-11 17:22:42 555
原创 mysql笔记:25. docker环境中mysql主从复制、主主复制实操
Docker容器是现在的主流技术,容器提供了细粒度的系统隔离机制,每个容器都完全独立,其中包括了应用以及所有需要的系统依赖,可以把系统中每个服务放入容器,让各个服务都以容器的形式运行,这样就大大简化了系统的部署过程,更加便于维护。
2024-03-27 17:11:49 938
原创 mysql笔记:24. 主从同步环境搭建
MySQL的主从同步(Master-Slave Replication)是一个常用的数据备份和恢复策略,它允许在两个或多个数据库服务器之间实现数据同步。这种方案不仅可以提高数据备份的效率,还可以实现读写分离,从而提高整个系统的性能和可靠性。
2024-03-20 16:30:49 613
原创 mysql笔记:23. 在Mac上安装与卸载MySQL
MySQL对Mac电脑的适配十分强大,再加上Mac本身就是Unix操作系统演化而来的,所以在Mac上安装MySQL的方式有多种。常见的方法有如下三种:DMG、brew、TAR。介绍这些方法前,我们先了解下MySQL安装文件的下载。
2024-03-20 14:25:04 1439
原创 mysql笔记:22. 事务隔离级别的一种通俗讲解
事务隔离级别,是为了解决多个并行事务竞争导致的数据安全问题的一种规范。具体来说,多个事务竞争可能会产生三种不同的现象。
2024-03-18 21:01:11 576
原创 mysql笔记:21. 演示脏读、不可重复读和幻读现象
在MySQL中,事务有4种隔离级别,分别为READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交)、REPEATABLE READ(可重复读)和SERIALIZABLE(串行化)。
2024-03-18 17:35:57 1406
原创 mysql笔记:20. 什么是数据库六大范式
范式(Normal Form,简称NF)是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。数据库范式是数据库设计表结构所遵循的规范和指导方法,目的是为了减少冗余,建立结构合理的数据库,从而提高数据存储和使用的性能。这六大范式在数据库设计中是层层递进的,满足更高层次的范式通常意味着数据库的设计更加合理、数据冗余更少、维护更加方便。但在实际应用中,并不是一定要满足所有范式,而是要根据具体的应用场景和需求进行权衡和选择。
2024-03-15 18:32:35 1319 2
原创 mysql笔记:19. 主从复制和主主复制
主从复制(也称AB复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。根据参数文件的配置,可以复制数据库中的所有数据。横向扩展解决方案:在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显著提高了从设备的读取速度。
2024-03-14 16:19:46 1493
原创 mysql笔记:18. 示例数据库
MySQL示例数据库是MySQL官方提供的开源项目,旨在帮助用户学习和实践MySQL数据库。一个示例数据库可以提供真实的数据库环境,一般包含了多个表格,每个表格都有不同的结构和数据。通过使用示例数据库,用户可以通过实际操作来学习和理解MySQL数据库的各种功能和特性。MySQL官方网站提供了以下几个示例数据库:employee、world、sakila、airportdb以及menagerie。这些数据库既可以用于日常学习和测试,也可以作为我们设计数据库时的一个参考。
2024-03-14 14:37:33 1083
原创 mysql笔记:17. 数据库编程
自定义函数和存储过程类似,都是存储在数据库中的一段SQL语句集合;区别在于存储过程没有直接返回值,主要用于执行操作,而自定义函数可以通过RETURN语句返回数据。自定义函数创建之后,可以使用SHOW FUNCTION STATUS语句和SHOW CREATE FUNCTION语句分别显示存储过程的状态信息和创建信息,也可以在数据库information_schema的Routines数据表中查询。从语法来看,查看存储过程和自定义函数相似,只是使用的关键字不同。
2024-03-13 17:03:13 629
原创 mysql笔记:15. 事务和锁
在MySQL中,事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成。在程序执行过程中,只要有一条SQL语句执行失败或发生错误,其他语句都不会执行;也就是说,事务中的语句要么都执行,要么都不执行。为数据库的一组操作提供了一个从失败中恢复到正常状态的途径,同时保证了数据库即使在异常状态下也仍能保持数据的一致性。当多个应用程序并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
2024-03-12 19:45:01 953
原创 mysql笔记:14. 权限管理
在实际生产中,为了保证数据的安全,数据库管理人员需要为不同的操作人员分配不同的权限,限制登录MySQL服务器的用户只能在其权限范围内操作。同时管理员还可以根据不同的情况为用户授予权限或收回权限,从而控制操作人员的权限。
2024-03-12 12:25:17 1179
原创 mysql笔记:13. 用户管理
MySQL是一个多用户数据库管理系统,不同的用户分配不同的权限,其用户大致分为root用户和普通用户。root用户是超级管理员,拥有所有权限,如创建用户、删除用户、管理用户等。普通用户只有被授予的指定权限。在校学习和日常开发的时候,为了方便,一般都可以通过root用户登录数据库进行相关的操作;但生产环境为保证数据库的安全,需要对不同用户的操作权限进行合理的管理,让用户只能在指定的权限范围内操作。
2024-03-11 17:42:16 1197
原创 mysql笔记:12. 数据备份与还原
在操作数据库时,难免会发生一些意外情况造成数据丢失。为了确保数据的安全,需要定期对数据库中的数据进行备份,这样当遇到数据库中数据丢失或出错的情况时,就可以将数据还原,从而最大限度地降低损失。
2024-03-11 15:42:54 679
原创 mysql笔记:11. 性能优化
性能优化是通过合理安排资源,调整系统参数使MySQL运行更快、更节省资源。主要包括查询速度优化、更新速度优化、MySQL服务器优化等。
2024-03-08 19:38:54 1186
原创 mysql笔记:10. 日志
MySQL日志主要分为四类。错误日志:记录服务的启动、运行或停止MySQL服务时出现的问题。查询日志:记录建立的客户端连接和执行的语句。二进制日志:记录所有更改数据的语句,可以用于数据复制。慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。在默认情况下,所有日志创建于MySQL数据目录中。通过刷新日志,可以强制MySQL关闭和重新打开日志文件。当执行一个FLUSH LOGS语句或执行或时,将刷新日志。
2024-03-08 18:04:40 1425
Hyperledger Fabric kafka配置
2018-03-09
java记事本
2015-09-30
FilterAndInterceptor
2013-08-20
WebService开发入门(XFire)
2013-05-09
jQuery 1.4.1 速查表
2013-04-28
经典游戏-俄罗斯方块(二)
2013-03-27
SSI框架整合开发
2013-01-05
struts2_validation
2012-12-24
MD5校验工具
2012-04-24
ecside_1.30_full
2012-03-29
使用ant从多个SourceFolder的项目中导出jar包的测试项目
2012-03-19
数字转换成中文大写
2012-03-15
功能强大的java版代码行数统计程序
2012-02-21
点灯——好玩的java小游戏【免费】
2010-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人