随记
就随便记记
羊霉吐气
这个作者很懒,什么都没留下…
展开
-
数据库整理2
MYSQL插件式存储引擎的数据库存储引擎: 存储方式 [磁盘]1.MyISAM 不支持外键,不支持事务 支持全文索引,底层用B+树; 支持表锁;2.InnoDB 支持外键,支持事务; 不支持全文索引,底层用B+树; 支持行锁;3.MEMORY 数据存在内存上,读写效率高,适合存储临时表数据;/*不考虑数据安全*/[从几个表中拼接出来的临时表]; 支持索引,底层哈希索引; varchar == char; 不支持text、BOLB类型字段; [文本] [图片原创 2020-11-02 12:53:54 · 142 阅读 · 0 评论 -
数据库整理
DDL,Data Definition Language,数据库定义语言用于定义和管理数据库所有对象的语言,包括:CREATE,ALERT,DROP,TRUNCATEDML,Data Manipulation Language,数据库操作语言SQL中处理数据等操作,包括:SELECT,INSERT,UPDATE,DELETE,CALL,EXPLAIN PLAN,LOCKDCL,Data Control Language,数据库控制语言用来授予或回收访问数据库和某种特权并控制数据库操纵事务发生的时原创 2020-10-28 22:34:41 · 223 阅读 · 0 评论 -
位运算呐~
C++中位运算指按二进制的形式运算,用以解决系统软件中的二进制待处理问题。并且在c语言中位操作运算符只能操作整形操作数,即带符号或者无符号的char、short、int、long类型!1.按位与 & 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=tr原创 2020-10-13 10:48:40 · 89 阅读 · 0 评论 -
排序
排序这块主要学习排序思想,排序算法思想,基础代码实现,稳定性,时间空间复杂度等;排序分为外部排序(排序数据量巨大,一次不能容纳完全的排序记录,在排序过程中需要访问外存)和内部排序(排序数据记录在内存中进行排序)1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储.原创 2020-10-08 15:01:31 · 116 阅读 · 0 评论 -
STL--笔记详细
标题1.容器容器(container) 用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在 STL 中都被实现为容器。程序员使用容器时,即将容器类模板实例化为容器类时,会指明容器中存放的元素是什么类型的。容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实际插入的是对象或变量的一个复制品。STL 中的许多算法(即函数模板),如排序、查找等算法,在执行过程中会对容器中的元素进行比较。这些算法在比较元素是否相等时通常用运算符进行,比较大小通常用<运算符进行原创 2020-09-26 16:18:30 · 230 阅读 · 2 评论 -
auto
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。1.识别变量类型2.用于迭代(已知范围的for循环)auto特性:1.auto不能作为函数参数2.auto不能直接声明数组3. 为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法4. au原创 2020-09-24 15:23:03 · 265 阅读 · 0 评论 -
文本文件操作
头文件:#include <fstream>输出(写操作):ofstream输入(读操作):ifstream同时读写:fstream通过一个流对象(文件在程序中被打开由流对象(所谓的上述几个类的对象)来操作)操作一个文件我们需要用到流对象的成员函数。这写所有的标识符可以用过 | 自由组合产生不一样的效果!三种类对文件进行打开操作时都分别有各自的默认打开方式,如果没有提前声明打开方式将会是默认打开方式;文本文件操作的类是从ostream、istream、iostrea.原创 2020-09-20 22:36:56 · 158 阅读 · 0 评论 -
详解C++多态的实现及底层原理 - 笔记
C++中引入了多态的思想,说白了就是拥有多种形态,可以分为静态动态(重载,编译阶段确认函数地址)和动态动态(继承重写基类的虚函数实现的多态,在运行时从虚函数表中寻找调用函数的地址); 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。 3:多态性是一个接口多种实现,是面向对象的核心,分为类的多态性和函数的多态性。 4:多态用虚函数来.原创 2020-09-18 11:09:37 · 2372 阅读 · 2 评论 -
C++ - 写时拷贝 截图
原创 2020-09-17 18:53:59 · 126 阅读 · 1 评论 -
红黑树 一看就会
red-black tree是自平衡 (非绝对平衡) 的二叉查找树!先尝试recolor,(置色红黑)再尝试rotation;(旋转)插入新节点,标红,如果为根节点,则标黑;如果不是根节点,且其parent是红,uncle是红:{1.将parent和uncle同时标黑;2.将grand parent标红;3.新节点标红;(让新节点的颜色与其grand parent颜色一致)}插入新节点,标红,如果为根节点,则标黑;如果不是根节点,且其parent是红,uncle是黑:{1.左左原创 2020-09-16 16:55:12 · 206 阅读 · 0 评论 -
C++三大特性笔记
C++ 三大特性 封装,继承,多态封装定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对象的使用者和设计者分开,以提高软件的可维护性和可修改性特性:1. 结合性,即是将属性和方法结合 2. 信息隐蔽性,利用接口机制隐蔽内部实现细节,只留下接口给外界调用 3. 实现代码重用继承定义:继承就是新类从已有类那里得到已有的特性。 类的派生指的是从已有类产生新类的过程。原有的类成为基类或原创 2020-09-16 12:54:35 · 634 阅读 · 0 评论 -
Linux-虚拟地址空间分布-笔记
Linux系统下,内核进程和用户进程所占的虚拟内存比例为1:3;windows系统下,内核进程和用户进程所占的虚拟内存比例为2:2(也可以修改为1:3);虚拟地址通过页表映射到物理地址,页表由操作系统维护并被处理器引用。(Linux系统通过对栈、堆、内存映射段的起始地址加上随机偏移量来打乱布局,避免恶意程序通过计算访问栈、库函数等地址);用户进程部分分段存储内容按照地址递减:内核空间: 内核总是驻留在内存中,其是操作系统的一部分。内核空间所占区域为内核所保留,不允许应用程序读写该区域或直接调用内核原创 2020-09-14 21:20:14 · 195 阅读 · 0 评论 -
new 和 malloc 区别 笔记
【转】new和malloc的区别申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。那么自由存储区是否能够是堆(问题等价于new是否能在堆上动态分配内存),这取原创 2020-09-14 20:44:40 · 867 阅读 · 0 评论 -
tcp/udp 区别?使用场景?
tcp与udp都是传输层协议,两者在特性上是对立的,但是有好便有坏,udp牺牲了可靠的连接换来了传播速度的提升,而tcp却将字节流安全可靠的连接传递。tcp协议的可靠性来自于其客户端与服务端的稳固连接,其独有的应答确认、超时重传、滑动窗口(流量控制)、数据检验、重复数据丢失等等;udp协议的高效率因为其是一个简单的面向数据报的传输层协议,其只负责将应用层传给IP层的数据报发送出去,并且不能保证发出去的数据都能被接收端接收到。细节(应答确认、超时重发、滑动窗口):应答确认: ACK机制,在TCP连接成原创 2020-09-13 21:19:42 · 127 阅读 · 0 评论 -
史上最全程序员技术增长宝典,不看后悔!(C\C++\Linux\Mysql\Java)
??????并没有!!!原创 2020-09-09 19:45:17 · 113 阅读 · 0 评论 -
Linux - tcp网络编程总结
回顾TCP网络编程;工具:gcc + ubuntu;ser端:1.创建一个socket连接;2.对sockaddr_in结构体初始化,保存建立的socket地址信息;3.bind(),将本地ip地址绑定到端口号;4.listen(),创建一个等待队列,将在其中存放未处理的cil端请求;5.accept(),等待并处理客户端的连接请求;6.建立连接后,使用send()或者recv()函数进行发送或者接收;cil端:1.创建一个socket连接;2.调用connect()请求连接服务器,并原创 2020-09-09 19:43:03 · 163 阅读 · 0 评论 -
ubuntu开机蓝屏重启问题最优解
对于ubuntu这番莫名其妙的蓝屏重启问题,如下,实在让人汗颜,所幸问题得到了解决!解决办法一:安装驱动精灵,将自己电脑的驱动重新更新安装一遍;不行?解决办法二:打开虚拟机,点击设置,将内存升到4-8G之间,重启;不行?解决办法三:找到你的虚拟机安装文件地址,将文件整体挪移到别的保存软件或文件较少硬盘,然后在VM上重新在新位置打开虚拟机;不行?只好杀手锏了~解决办法四:重启电脑;联网;打开虚拟机;按ctrl+alt+F4输入用户名输入密码输入 sudo apt-get原创 2020-09-08 23:31:51 · 8706 阅读 · 9 评论 -
多线程下子进程继承父进程锁时应如何处理?atfork()函数的作用
思考一下这样的一个问题:如果一个多线程程序的某个线程调用了fork()函数,那么新创建的子进程是否将自动创建和父进程相同数量的线程呢?答案是否定的,正确解释是子进程只拥有一个执行线程,他是调用fork()的那个线程的完整复制。并且子进程将自动继承父进程中的互斥锁(条件变量与之类似)的状态。可以说,父进程中被加锁的互斥锁在子进程中也是被锁住的。但同时又引出了新的问题,作为fork()过来的子进程,他从父进程中继承过来的互斥锁的状态是lock还是unlock?这样的话对子进程如果对该锁进行lock操作就会原创 2020-09-08 12:05:00 · 441 阅读 · 0 评论 -
线程同步 (Linux)
Linux下有多种方式来处理线程同步,常见的有如下几种机制:(1)信号量(2)互斥锁(3)条件变量(4)读写锁1、信号量类比进程一样,线程也是可以通过信号量来实现通信的,但相对于进程而言是轻量级的。#include <semaphore.h>初始化:int sem_init(sem_t* sem, int pshared, unsigned int value);参数:sem - 指定要初始化的信号量;pshared - 信号量 sem 的共享选项,linux只支持0,表示原创 2020-09-06 23:40:17 · 142 阅读 · 0 评论 -
string库-strtok();
strtok()是c库函数,功能是分解字符串;声明: char* strtok(char *str,const char *delim);参数解释: str 被分解的字符串 delim 分隔符(被分割后替换成\0)返回值: 返回被分解的首个子串,及首个分隔符前的字符串;如果没有可检索的剩余字符,则返回空指针。示例:(linux)char buff[] = "a b c d e 1 2 3 6 f g";char *str = strtok(buff,"原创 2020-09-06 15:17:52 · 311 阅读 · 0 评论 -
线程库 pthread_
记:pthread_createpthread_exitpthread_joinpthread_mutex_initpthread_mutex_lock阻塞调用pthread_mutex_trylock 非阻塞调用pthread_mutex_unlockpthread_mutex_destroypthread_mutexattr_settypepthread_mutexattr_gettypepthread_cond_initpthread_cond_waitpthread_con原创 2020-09-06 10:37:54 · 277 阅读 · 0 评论 -
安装微软常用库
链接:https://pan.baidu.com/s/1PPewK66aP8cCiAm2abWl_w提取码:z90p原创 2020-06-24 09:47:06 · 239 阅读 · 0 评论 -
递归程序的运行顺序
递归函数是一个方便理解又不方便理解的函数,如果对递归理解不清晰的话解决问题时也是十分棘手的!递归函数从名字可以解读,递出和回归。重点是在于递归过程中递归语句与上下文语句的顺序性关系,举个例子,用递归关系解决十进制转换二进制,C代码如下:void dectobin1(int dectobin){if(dectobin/ 2){dectobin1(dectobin/ 2); // 递归语句...原创 2020-05-02 22:55:48 · 1415 阅读 · 0 评论 -
选择排序分析
不同于冒泡排序,选择排序是第一个位置与后面所有位置的数比较,如果不满足要求就调换位置,直到第N-1个元素与第N个元素交换位置,选择排序结束。从算法逻辑上看,选择排序是一种简单直观的排序算法,在简单选择排序过程中,所需移动记录的次数相对而言较少。举例:用选择法对十个整数排序(12 34 5 689 -43 56 -21 0 24 65),由大到小。排序过程:输入:12 34 5 689 -43...原创 2020-04-03 13:22:38 · 271 阅读 · 0 评论 -
C语言自定义函数放在主函数之前之后有什么区别?
C语言自定义函数放在主函数之前之后有什么区别?如果是自定义函数在main函数之前,且在main函数之中不做声明运行的结果是:结果与在mian函数之中做出声明是一样的。如果是自定义函数在main函数之后,且在main函数之中不做声明呢?可以看到报错,说明是不可行的!如果我们加上函数声明结果正确!所以我们得出结论:自定义函数在main函数之前可以,mian函数调用可以不做声明;如果自...原创 2020-03-29 20:47:32 · 11044 阅读 · 8 评论 -
写文章、编代码时鼠标忽然变成一闪一闪的小方块怎么办?
在我们平常运用电脑进行输入文字操作过程中,偶尔会出现鼠标指针变粗,这样导致的结果是我们输入错误进行删除更改操作时,往往会误删,误插…怎么来解除呢?找到键盘上的Insert键,按一下即可!如果在键盘上和数字0共键盘,在按insert之前再按一下num IK键即可!Insert键:原来insert键是文字处理切换文本输入模式,关闭insert模式之后就可以正常操作!...原创 2020-03-16 14:45:08 · 2115 阅读 · 0 评论 -
SFML 和 Visual Studio
介绍如果将SFML与Visual Studio IDE(Visual C ++编译器)一起使用,则本教程是您应该阅读的第一篇。它将说明如何配置SFML项目。安装SFML首先,您必须从下载页面下载SFML SDK 。您必须下载与您的Visual C ++版本匹配的软件包。实际上,例如,使用VC ++ 10(Visual Studio 2010)编译的库与VC ++ 12(Visual Studio 2013)不兼容。如果没有针对您的Visual C ++版本编译的SFML软件包,则必须 自己构建SFM原创 2020-08-25 10:07:02 · 1000 阅读 · 0 评论 -
STL - set和multiset的区别
在学习掌握set和multiset过程中,我们会了解到set和multiset是存在一定差异的;在set中每个元素的值都唯一,并且元素在插入后会自动的为其升序排序,值得注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。区别:set不能插入已有的数据,原创 2020-07-30 14:04:23 · 237 阅读 · 0 评论 -
C++ —— STL中list容器中sort()排序规则
在使用STL写代码时运用到了list容器中的sort()排序,但现在需要的是给容器中数据的部分属性进行有前提的排序,这时候就不能直接使用sort()排序来操作;原因是sort()需要的时随机访问的迭代器,而list链表时双向链表,不允许有随机访问的操作。例如:按照年龄升序 如果年龄相同按照身高降序class Person{public: Person(string name,int age,int height) { m_Name = name; m_Age = age; m_He原创 2020-07-29 20:35:00 · 3472 阅读 · 0 评论 -
STL-评委打分(五名选手ABCDE,10各评委分别对每一位选手打分,去掉最高分去掉最低分取平均分)
代码:#include <iostream>#include <vector>#include <algorithm>#include <deque>#include <string>#include <ctime>using namespace std;//五名选手,ABCDE,10各评委分别对每一位选手打分,去掉最高分去掉最低分取平均分;//创建选手类class Person{public: P原创 2020-07-28 15:05:45 · 2099 阅读 · 0 评论 -
C++冒泡排序优化
冒泡排序:添加链接描述冒泡排序的思想是一种交换排序,两两相邻关键字比较,如果大小比较不符合条件即交换,直到没有反序。但假设给定数据中除了前三项之外其余都是有序数据,按照冒泡排序的操作,定会持续循环将[4]-最后一项循环比较。如此这般浪费时间,我们可以对其进行优化,不需要再继续后面的循环判断工作,改进一下代码,增加一个标记变量F在i变量的for()循环中,增加对F是否为真的判断,这样就会提升冒泡...原创 2020-05-07 21:54:03 · 397 阅读 · 0 评论 -
C++实现冒泡排序;
#include using namespace std;int main(){//利用冒泡排序实现数据小到大排序int arr[10] = {2,4,6,8,1,3,7,5,9,0};int len = sizeof(arr)/sizeof(arr[0]);//排序前结果cout << "冒泡排序前数组元素顺序:" << " " ;for(int i=0...原创 2020-05-07 21:35:18 · 199 阅读 · 0 评论 -
C++宠物商店管理系统
int Pet::xianshi(){int menu;cout<<“宠物店管理系统**”<<endl;cout <<endl;cout<< endl<<endl;cout<<" ╭╧╮ ╭╧╮ ╭╧╮ ╭╧╮ ╭╧╮ ╭╧╮ ╭╧╮ ╭╧╮╭╧╮╭╧╮╭╧╮ “<<endl;...原创 2019-07-02 16:47:45 · 3963 阅读 · 5 评论 -
进程、线程学习 (并发并行) (案例研究)
并发:同一时间段内发成2个及2个以上的活动;相比较与其概念相近的并行,并行就是两个活动同时进行。多线程并发在当个进程中运行多个线程也可以并发。线程就像轻量级的进程,每个线程相互独立运行,但它们共享地址空间,所有线程访问到的大部分数据如指针、对象引用或其他数据可以在线程之间进行传递,它们都可以访问全局变量。进程之间通常共享内存,但这种共享通常难以建立且难以管理,缺少线程间数据的保护。因此,在多线程编程中,我们必须确保每个线程锁访问到的数据是一致的。看下题:是否熟悉POSIX多线程编程技术?原创 2020-09-05 16:04:04 · 507 阅读 · 0 评论 -
贝叶斯 先验概率后验概率
转载自https://www.cnblogs.com/ohshit/p/5629581.html(1)条件概率公式 设A,B是两个事件,且P(B)>0,则在事件B发生的条件下,事件A发生的条件概率(conditional probability)为: P(A|B)=P(AB)/P(B)(2)乘法公式 1.由条件概率公式得: P(AB)=P(A|B)P(B)=P(B|A)P(A)原创 2020-09-02 10:22:02 · 218 阅读 · 0 评论 -
Linux-- 僵死进程 孤儿进程
僵死进程(僵尸进程):即子进程在父进程结束之前结束;孤儿进程:即父进程先于子进程之前结束;僵死进程的危害:生成僵死进程后,僵死进程不会删除PCB,仍会占据Pid,如此继续会造成进程表数据占满,造成fork()无法使用;僵死进程的内核栈无法被释放掉,为啥会留着它的内核栈,因为在栈的最低端,有着thread_info结构,它包含着 struct_task 结构,这里面包含着一些退出信息。...原创 2020-08-30 23:46:07 · 93 阅读 · 0 评论 -
linux中fork()函数 举例讲解!
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事。但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。来看看实例:int main(){ int i = 0; for(; i < 2; i++) { fork(); pr原创 2020-08-30 14:21:32 · 459 阅读 · 0 评论 -
fPIC 浅解
-fPIC与-fpic都是在编译时加入的选项,用于生成位置无关的代码**(Position-Independent-Code)。这两个选项都是可以使代码在加载到内存时使用相对地址,所有对固定地址的访问都通过全局偏移表(GOT)来实现。-fPIC和-fpic最大的区别在于是否对GOT的大小有限制。-fPIC对GOT表大小无限制,所以如果在不确定的情况下,使用-fPIC是更好的选择。**-fPIE与-fpie是等价的。这个选项与-fPIC/-fpic大致相同,不同点在于:-fPIC用于生成动态库,-fPIE原创 2020-08-29 13:14:16 · 871 阅读 · 0 评论 -
Linux--关于库
什么是库库是一种可执行代码的二进制形式,通常把一些常用的函数制作成各种函数库,然后被系统载入内存中运行两种库 - 载入的时间不同静态库:在链接阶段被加载到目标文件中程序运行时不需要静态库编译后的可执行程序体积较大命名:libXXX.a动态库:编译的时候不会被链接进来,在程序执行的时候被载入程序运行时需要动态库编译后的可执行程序体积不变命名:libXXX.so静态库的制作使用GNU下的ar 工具制作(1) 写好功能文件和头文件 - hello.c 和 hello.h(2) 将hello.原创 2020-08-29 10:16:03 · 111 阅读 · 0 评论 -
数据结构与算法 哈希表
例题:一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0,请你找出所有满足条件且不重复的三元组。给定数组 nums = {-1,0,1,2,-1,-4};满足三元组集合{{-1,0,1},{-1,-1,2}};思路:两层for循环就可以确定 a 和b 的数值了,可以使用哈希法来确定 0-(a+b) 是否在 数组里出现过,其实这个思路是正确的,但是我们有一个非常棘手的问题,就是题目中说的不可以包含重复的三元组。把符合条件的三元组放进vector中,然后在去原创 2020-08-26 23:26:36 · 110 阅读 · 0 评论