个人简介

Echo Blog


江湖无名 安心练剑
  • 操作系统 动态内存管理 OS
    动态内存管理 在计算机中,操作系统负责管理整个内存空间,主要概括为两个方面:内存的分配与回收。 本章中会详细介绍计算机中用于管理存储空间的方法,以及如何对产生的内存碎片进行处理。 数据结构之动态内存管理机制 通过前面的学习,介绍很多具体的数据结构的存储以及遍历的方式,过程中只是很表面地介绍了数据的存储,而没有涉及到更底层的有关的存储空间的分配与回收,从本节开始将做更深入地介绍。 在...
    2020-10-17 08:15:55 | OS
  • mysql-20-mysql 查询出现笛卡尔积,如何解决?
    背景 我有三张表。raw, mapping 和 route。 其中 mapping 中记录了每一次 raw 的通知,raw_uid 和 notify_uid 多对多,每一次通知 notify_uid 在 route 表中可能对应多个渠道。 select route.id, raw.type from route r join mapping m on m.notify_uid=r.n...
    2020-10-17 08:15:55 | Database
  • mysql-19-mysql 版本兼容性报错 java.sql.SQLNonTransientConnectionException Could not create connection to database server
    背景 mysql 服务端为 5.7x 版本,本地 springboot 2.x,默认引入 mysql 版本为 8.x。 应用执行报错: java.sql.SQLNonTransientConnectionException Could not create connection to database server 解决方式 明确指定 mysql 的版本为低版本: <de...
    2020-10-17 08:15:55 | Database
  • mysql-18-mysql 如何命令行执行脚本文件?
    背景 希望通过命令行执行脚本文件 chat 如何通过 mysql 如何命令行执行脚本文件? 在 MySQL 中,你可以通过命令行执行脚本文件(例如 .sql 文件)使用以下命令: 打开终端或命令提示符。 使用以下命令登录到 MySQL 数据库: mysql -u 用户名 -p 输入你的 MySQL 密码。 ...
    2020-10-17 08:15:55 | Database
  • mysql-17-mysql 字段如何 split?
    背景 mysql 中的表标题字段,基本的格式为 xxxx;yyyy yyyy 是一些无关的信息拼接。 希望按照 ; 分割,或者 xxxx 部分的内容。 实现方式 在MySQL中,你可以使用SUBSTRING_INDEX()函数来截取分号;之前的内容。 SUBSTRING_INDEX()函数接受三个参数:字符串、分隔符和一个数字,表示在分隔符之前或之后返回多少个子字符串。 如果你想...
    2020-10-17 08:15:55 | Database
  • mysql-16-buffer pool 缓冲池
    揭开 Buffer Pool 的面纱 为什么要有 Buffer Pool? 虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。 要想提升查询性能,加个缓存就行了嘛。所以,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取。 为此,Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库...
    2020-10-17 08:15:55 | Database
  • mysql-15-mysql undo log、redo log、binlog 有什么用? 组提交 group commit mysql 主从复制如何实现的?
    MySQL 日志:undo log、redo log、binlog 有什么用? 语句的执行 那么,执行一条 update 语句,期间发生了什么?比如这一条 update 语句: UPDATE t_user SET name = 'xiaolin' WHERE id = 1; 查询语句的那一套流程,更新语句也是同样会走一遍: 客户端先通过连接器建立连接,连接器自会判断用户身份; ...
    2020-10-17 08:15:55 | Database
  • mysql-14-mysql 死锁 deadlock
    MySQL 死锁了,怎么办? 有个业务主要逻辑就是新增订单、修改订单、查询订单等操作。然后因为订单是不能重复的,所以当时在新增订单的时候做了幂等性校验,做法就是在新增订单记录之前,先通过 select … for update 语句查询订单是否存在,如果不存在才插入订单记录。 而正是因为这样的操作,当业务量很大的时候,就可能会出现死锁。 接下来跟大家聊下为什么会发生死锁,以及怎么避免死...
    2020-10-17 08:15:55 | Database