主要是两个:MyISAM 和 InnoDB。 MyISAM的表在磁盘上存储成 3 个文件,其文件名都和表名相同,扩展名分别是:.frm(存储表定义) .MYD(MYData,存储数据) .MYI (MYIndex,存储索引) InnoDB的表在磁盘上有两个文件,其文件名都和表名相同,扩展名分别是:.frm(存储表的定义) .ibd(存储数据和索引)…
写在前面 所有代码加起来两千行,里面用到了语言、数据结构、计网、操作系统、数据库、redis等知识,可谓是麻雀虽小五脏俱全。 1、项目需求 客户端新用户注册 客户端用户登录 添加好友和添加群组 好友聊天 群组聊天 离线消息 nginx配置tcp负载均衡 集群聊天系统支持客户端跨服务器通信 2、Json Json是一种轻量级的数据交换格式。独立于编程…
一、关键技术点 使用C++语言级别的开发。 MySQL数据库编程、线程安全的懒汉单例模式、queue、C++11多线程编程、线程互斥、线程同步通信、生产者-消费者模型、基于CAS的原子整形、智能指针shared_ptr、lambda表达式等。 二、项目背景 为了提高MySQL数据库(基于C/S设计)的访问瓶颈,除了在服务端添加缓存服务器缓存常见的数…
前言 C++聊天服务器项目加上数据库连接池时出了bug。可我不会在Linux环境下调试,浪费了很多时间。虽然最后将这个bug解决了,但是这给了我一个警钟:必须要会GDB的简单使用 我将复现bug,使用GDB一步步地将bug揪出来。 其实这个bug,我事后回想了下,并不离谱,稍微推理下就应该知道大概在哪里出了岔子。 1、bug 复现 mysql Co…
其中,left join 和 right join统称为 “外连接查询”,inner join 是“内连接查询” inner join 用法 先按照这个文件里的语句创建好数据。 一共有三个表: student。uid(P)/name/age/sex course。cid(P)/cname/credit(绩点) exame。uid(P)/cid(P)…
一、朴素的爆搜 01背包的普通爆搜版 //输入 4 5 2 3 1 2 3 4 2 2 //输出 7 每种情况选或不选。这里给出没看书前自己写的。 #include <iostream> #include <stdio.h> #include <vector> void init() { freopen(&quo…
前言 把力扣学习计划之图论基础写完了,萌生出挑出几道我觉得好的题目出来的想法。 在“图论基础”学习计划中搜索占主体。本篇博客也将围绕搜索展开。 搜索中抓住:方向 + 去重 知识点:(循循渐进) 邻接矩阵 在矩阵中的搜索,这里更偏向 bfs 搜索,但是和 dfs 差不多,都是向四周拓展 邻接链表和在图中的搜索 计数搜索、起点到终点的最小步数搜索 二分…
一、二分图模板 二分图的性质: 集合内部没有边 二分图当且仅当图中不含奇数环 1.1. 染色法判断是否为二分图 简要介绍 采用 $dfs$ 遍历图。尝试把和一个点相连的所有的点涂为不同色(一共两种颜色)。 什么情况下图不是二分图呢?尝试涂色时相邻点已被涂同样的颜色。 模板 //尝试将u染成col 的同时尝试拓展它的临边 bool dfs(int u…
模板 需要读者对以下知识有所了解:权值非负最短路、权值带负数最短路、并查集 一、prim 简要介绍 和朴素版的 Dijkstra 算法 相似,区别在于 $Dijkstra$ 的 $dist$ 数组用于存储从起点到该点的最短距离;而 $prim$ 算法的 $dist$ 数组用于存储该点到集合中的任意一点的最短距离。 模板 int prim(int n…
前言与模板 需要读者对最短路之不含负权边:Dijkstra算法朴素和堆实现 有所了解。 1、bellman-ford 适用情况: 与拓展次数有关 可用于负权。因为有次数限制,所以可以有负环(负权回路) 简要介绍: 暴力法。每次大循环的含义是向外拓展一次,每次大循环将所有的边遍历一次。 模板: //循环k次(拓展k次边) 每次循环尝试更新所有的节点最…