- 博客(86)
- 资源 (8)
- 收藏
- 关注
原创 46. 求1+2+3+...+n(C++实现)
题目:求1+2+3+…+n,要求不能使用乘除法、for、while、else、switch、case等关键字及条件判断语句(A?B:C)。代码实现:1.构造函数法class OneClass{public: OneClass() { ++m_objectTotalCount; m_totalSum += m_objectTotalCount; } static ...
2019-12-31 13:10:50 1919
原创 04. 替换空格(C++版本)
题目:请实现一个函数,把字符串中的每个空格替换成“%20"。例如输入"We are happy", 则输出"We%20are%20happy"。代码实现:void ReplaceBlankWithSpecialChar(char* pData, int size){ if (nullptr == pData || size < 1) return; int useSize ...
2019-12-30 20:50:34 1360
原创 MySQL 字段操作命令
实验表为tt:CREATE TABLE tt( a INT NOT NULL, b INT NOT NULL, c INT NOT NULL, PRIMARY KEY(a), UNIQUE uni_b(b), INDEX idx_c(c));显示表结构:mysql> show create table tt;+-------+-------------------...
2019-12-30 17:56:12 1373
原创 45. 圆圈中最后剩下的数字
题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里面剩下的最后一个数字。代码实现:int GetLastRemainData(int n, int m){ if (n < 2 || m < 1) return -1; std::list<int> datas; for (int curData...
2019-12-30 13:29:50 1281
原创 44. 扑克牌的顺子(C++版本)
题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1, J为11, Q为12, K为13, 而大王、小王可以看成任意数字。实现代码:bool IsContinusCards(int* pData, int size){ if (nullptr == pData || size != 5) return false; std::sor...
2019-12-30 13:08:26 1894
转载 MySQL 浅谈NOT NULL和DEFAULT的关系
MySQL在建表时,需要有字段名称、字段类型和约束条件,其中字段名称和字段类型是必填的,约束条件是选填的,约束条件主要有primary key、unique、not null、default等, 一个完整的建表语句如下:create table employees( 工号 varchar(4) primary key, 姓名 varchar(10) not null , 年龄 int defal...
2019-12-30 10:49:06 7146
转载 MySQL 时间戳(TimeStamp)自动更新
Mysql中时间戳自动更新 Mysql时间戳字段更新TimeStamp是Mysql中的时间戳字段,这个字段可以支持自动添加和更新。转自[https://www.cnblogs.com/zhaoyanghoo/p/5581710.html]1.概述在我们设计表的时候,考虑将行数据的创建时间和最后更新时间记录...
2019-12-30 10:30:01 2052
转载 MySQL 高性能索引策略和查询优化
高性能索引策略独立的列如果查询的列不是独立的,则MySQL就不会使用索引。“独立的列”是指索引列不能是表达式的一部分,也不能是函数的参数。前缀索引和索引选择性1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,...
2019-12-27 17:02:08 1389
转载 MySQL 索引最左匹配原则的理解
创建表create table test(a int ,b int,c int,d int,key index_abc(a,b,c))engine=InnoDB default charset=utf8;插入 10000 条数据DROP PROCEDURE IF EXISTS proc_initData;DELIMITER $CREATE PROCEDURE proc_in...
2019-12-27 11:56:16 1255
转载 MySQL 大数据量分页性能优化
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。直接用limit start, count分页语句, 也是我程序中用的方法:select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:select * from p...
2019-12-26 19:51:44 1354
转载 MySQL建表规范与常见问题
表设计库名、表名、字段名必须使用小写字母,“_”分割。库名、表名、字段名必须不超过12个字符。库名、表名、字段名见名知意,建议使用名词而不是动词。建议使用InnoDB存储引擎。存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。建议使用UNSIGNED存储非负数值。建议使用INT UNSIGNED存储IPV4。整形定义中不添加长度,比如使用INT,而不是INT(4)...
2019-12-26 19:05:33 1568
原创 42.翻转单词顺序 VS 左旋转字符串(C++版本)
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。实现代码:void Reverse(char* pBegin, char* pEnd){ if (nullptr == pBegin || nullptr == pEnd) ret...
2019-12-26 16:04:35 1420
原创 41. 和为s的两个数字VS和为s的连续正数序列(C++版本)
题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。实现代码:bool GetTwoNumWithDestSum(int* pData, int size, int destData, int& num1, int& num2){ if (nullptr == pData || size &...
2019-12-26 13:52:09 1353
原创 40. 数组中只出现一次的数字(C++版本)
实现代码:int GetIdxOfFirst1AtData(int curData){ int curIdx = 0; const int maxIdx = 32; while (curIdx != maxIdx) { if (0 == curData & 0x01) return curIdx; ++curIdx; curData >> 1; }...
2019-12-25 14:45:42 1699
原创 39. (附加)二叉树是不是平衡二叉树(C++版本)
基础版本:int GetBinaryTreeDepth(BinaryTreeNode* pRoot){ if (nullptr == pRoot) return 0; int leftTreeDepth = pRoot->pLeft != nullptr ? GetBinaryTreeDepth(pRoot->pLeft) : 0; int rightTreeDepth =...
2019-12-25 11:10:10 1255
原创 39. 二叉树的深度(C++版本)
实现代码:int GetBinaryTreeDepth(BinaryTreeNode* pRoot){ if (nullptr == pRoot) return 0; int leftTreeDepth = pRoot->pLeft != nullptr ? GetBinaryTreeDepth(pRoot->pLeft) : 0; int rightTreeDepth =...
2019-12-25 10:44:11 1246
原创 38. 数字在排序数组中出现的次数(C++版本)
实现代码:int GetFirstPosOfDestData(int* pData, int size, int destData, int begin, int end){ if (nullptr == pData || size < 1) return -1; if (begin > end) return -1; // 未找到 int middle = begin +...
2019-12-25 09:55:54 1370
原创 37. 两个链表的第一个公共节点(C++版本)
实现代码:int GetListLength(ListNode* pHead){ if (nullptr == pHead) return 0; int listLen = 0; ListNode* pCurNode = pHead; while (pCurNode != nullptr) { ++listLen; pCurNode = pCurNode->pNext...
2019-12-24 19:42:46 1345
转载 MySQL 开启慢查询日志
开启 MySQL 慢查询日志开启mysql的慢查询日志,可以记录查询超过指定时间的sql语句,可以方便更好的优化数据库系统的性能。一、参数说明slow_query_log: 慢查询日志开启状态slow_query_log_file: 慢查询日志存放位置long_query_time: 查询超过多少秒才记录二、设置步骤1、查询相关参数配置mysql> show variab...
2019-12-24 11:50:34 1296
转载 MySQL 58到家数据库30条军规解读
基础规范1 必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高2 必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间3 数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的4 禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网业务,架构设计思路是“解放数据库C...
2019-12-24 11:31:39 1380
原创 35. 第一个只出现一次的字符(C++版本)
char GetFirstNotRepeatChar(char* pData){ if (nullptr == pData) return '\0'; const int TEMP_DATA_SIZE = 256; int tempDatas[TEMP_DATA_SIZE]; // 用来存储字符出现的次数 std::memset(tempDatas, 0, sizeof(int) * ...
2019-12-23 17:50:41 1305
原创 34. 丑数(C++版本)
基础版本:bool IsUglyNum(int64_t data){ int64_t curData = data; while (curData % 2 == 0) curData /= 2; while (curData % 3 == 0) curData /= 3; while (curData % 5 == 0) curData /= 5; return 1 == curDa...
2019-12-23 15:33:36 1431
原创 33. 把数组排成最小的数(C++版本)
实现要点:将数组按照特定规则排序,依次组合起来就是最小的数。排序规则为 A + B < B + A时为true。代码实现:std::string GetMinNumber(const std::vector<int>& datas){ if (datas.empty()) return ""; std::vector<std::string> ...
2019-12-23 11:28:24 1543
原创 40. Use multiple inheritance judiciously
明智而审慎地使用多重继承多重继承只是面向对象工具箱里面的一个工具而已。和单一继承比较,它通常比较复杂,使用上也比较难以理解,所以如果有一个单一继承的设计方案,而它大约等价与一个多重继承设计方案,那么单一继承设计方法几乎比较受欢迎。如果你唯一能够提出的设计方案涉及多重继承,应该更努力想一想-几乎可以说一定会有某些方案让单一继承行得通。然而多重继承有时候的确是完成任务值最简洁、最易维护、最合理的...
2019-12-20 16:40:41 1338
转载 MySQL 随机获得一条数据的方法
最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从...
2019-12-20 15:26:28 4118 5
转载 MySQL IS NULL(IS NOT NULL)使用索引分析
简介mysql的sql查询语句中使用is null、is not null、!=对索引并没有任何影响,并不会因为where条件中使用了is null、is not null、!=这些判断条件导致索引失效而全表扫描。mysql官方文档也已经明确说明is null并不会影响索引的使用。MySQL can perform the same optimization on col_name IS...
2019-12-19 17:54:03 5343 3
原创 30. 最小的K个数(C++版本)
基于Partition的方法:int Partition(int* pData, int begin, int end){ int pivot = pData[begin]; // 以第一个元素作为基准值 int left = begin; int right = end; while (left < right) { while (left < right &...
2019-12-19 16:21:28 1440
原创 29. 数组中出现超过一半的数字(C++版本)
两种方法,找到具体值之后,均没有进行值得判断(是否出现次数超过一半)。1. 中位数法int Partition(int* pData, int begin, int end){ int pivot = pData[begin]; // 以第一个元素作为基准值 int left = begin; int right = end; while (left < right) {...
2019-12-19 15:15:23 1479 1
原创 MySQL error(2014) Commands out of sync; you can't run this command now(情形2)
使用connect函数连接数据库时使用设置选项CLIENT_MULTI_STATEMENTS后,可以一次执行多条通过;分割的sql语句。需要要注意的是:即使执行的是不会返回结果集的两条update语句,依旧需要对结果集进行处理。否则,在之后的sql语句执行中,进行报错:MySQL error(2014) Commands out of sync; you can't run this com...
2019-12-19 14:19:50 1561
原创 28. (附加)字符串的组合(C++版本)
实现代码:加粗样式void Conbination(char* pData, char* pDestData, int begin, int end, int curIdx, int remainCount){ if (0 == remainCount) { std::cout << pDestData << std::endl; return; }...
2019-12-18 17:56:29 1792
原创 28. 字符串的排列(C++版本)
实现代码:void Permutation(char* pInitData, char* pCurData){ if ('\0' == *pCurData) // 已经处理完毕 { std::cout << pInitData << std::endl; return; } for (char* pData = pCurData; *pData != ...
2019-12-18 16:44:26 1247
转载 MySQL 优化技巧
MySQL优化三大方向:1 优化MySQL所在服务器内核(此优化一般由运维人员完成)。2 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。3 对SQL语句以及表优化。MySQL参数优化:1 MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like 'max_connec...
2019-12-18 11:11:51 1351
转载 MySQL 表分区功能详解
1 什么是表分区?mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这一张表...
2019-12-18 10:57:51 1405
转载 MySQL 千万级数据SQL的查询优化30条总结
1 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2 应尽量避免在 where 子句中对字段进行null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t wh...
2019-12-17 18:11:54 1226
转载 MySQL 刷脏页问题
Mysql的刷脏页问题 平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存...
2019-12-17 16:39:02 1554
原创 39. Use private inheritance judiciously
明智而审慎地使用private继承请记住:Private继承意味is-implemented-in-terms of(根据某物实现出)。它通常比复合(composition)的级别低。但是当derived class需要访问protected base class的成员,或需要重新定义继承而来的virtual函数时,这么设计是合理的。和复合(composition)不同,pr...
2019-12-17 14:49:18 1294
原创 25. (附加)二叉树的所有路径(C++版本)
使用二叉树的相关定义及函数在:二叉树最小结构(C++版本)注意点:找到的是从根节点到叶子节点的所有路径。实现代码:void FindPath(BinaryTreeNode* pRoot, int destData){ if (nullptr == pRoot) return; std::vector<int> paths; FindPath(pRoot, paths,...
2019-12-17 13:43:26 1386
原创 25. 二叉树中和为某一个值的路径(C++版本)
使用二叉树的相关定义及函数在:二叉树最小结构(C++版本)注意点:找到的是从根节点到叶子节点的路径。实现代码:void PrintData(std::vector<int>& paths){ for (auto& curData : paths) std::cout << curData << " "; std::cout <...
2019-12-17 13:21:05 1450
原创 24. (附加)二叉搜索树的前续遍历序列(c++版本)
使用二叉树的相关定义及函数在:二叉树最小结构(C++版本)注意点:假设左子树小于等于根节点,右子树大于根节点。实现代码:bool IsPreOrder(int* pData, int begin, int end){ if (nullptr == pData || begin < 0 || end < 0) return false; if (begin > end...
2019-12-17 11:36:48 1335
Essential C++ 中文版 封面最新版 内容清晰 带目录
2018-11-08
Effective C++ 中文版 第三版 带目录 清晰
2018-11-06
提高C+性能的编程技术 中文版 带目录 清晰封面最新版
2018-11-06
Effective STL 中文版 带目录 封面是老版内容无差别
2018-11-02
More Effective C++中文版(封面绝对是最新版)(带目录)
2018-10-29
Exceptional C++中文版 绝对清晰带目录
2018-10-27
计算机网络(谢希仁)答案
2018-06-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人