学习笔记
XITMan
这个作者很懒,什么都没留下…
展开
-
MySQL数据库学习笔记03(多表查询,取别名,分组查询,子查询,连接查询,约束,外键,标识列,索引,视图)
1、多表查询当需要查询的数据在多张表中,这种查询叫多表查询。select 字段 from 表1,表2 where 条件。注意:一定要where条件,否则会产生笛卡乐积。练习1:班级编号是2086的属于哪所学校,查出学校的名字。练习2:查询出每个班级的班主任的姓名,教授的课程。2、取别名给字段取别名,提高查询结果的可读性。select 字段 as 别名 from 表名;给表取别名,可以精简SQL语句。select 别名.字段 from 表名 as 别名;3、分组查询select 字段原创 2020-10-18 11:17:40 · 1040 阅读 · 0 评论 -
MySQL数据库学习笔记02(事务控制,数据查询)
一、事务控制什么是事务控制:在操作数据时需要让有关系的数据进行联动(一起有效、无效)。注意:数据定义语句立即有效,不需要事务控制,只有数据操作语句才需要事务控制。1、commit提交 一个用户向表中插入一条记录,其它用户并不能立即查询到,只有执行提交命令才确定有效。 注意:MySQL数据库默认设置了自动提交 查看是否开启自动提交:show variables like 'autocommit'; 'autocommit', 'OFF' 关闭 'a原创 2020-10-18 11:14:19 · 418 阅读 · 0 评论 -
MySQL数据库学习笔记
一、数据库介绍1、为什么需要数据库内存掉电后数据丢失,计算机的资源有限,因此需要把程序中用的数据存储下来以便于关机后还能继续使用(数据持久化),而保存数据最简单的方法就是把数据以文件形式写入到磁盘中。 随着程序的功能越来越复杂,需要操作的数量也就是越来越来大,管理数据就成了很大的问题,因为读写文件并解析数据需要大量重复的操作,并且从大量数据的增、删、改、查需要非常复杂的逻辑和耗时的操作。 如果程序都各息实现读写数据的代码,一方面效率低、容易出错,另一方面是每个程序访问数据的接口、业务逻原创 2020-10-11 09:02:57 · 353 阅读 · 0 评论 -
ubuntu系统linux虚拟机安装MySQL步骤详解(附过程)
1、确保ubuntu系统的网络畅通在ubuntu系统关机状态下 方案一、设置-》网络-》连接方式-》网络地址转换(NAT) 方案二、设置-》网络-》连接方式-》桥接 选择正确的网卡2、更新软件源 sudo apt-get update3、安装MySQL数据库软件 sudo apt-get install mysql-server 安装MySQL数据库管理软件 sudo apt-get install mysql-client 安装MySQL数据库客户端,用户访问数据库原创 2020-10-07 21:41:31 · 2331 阅读 · 0 评论 -
ftp部分功能的实现(可以实现断点重传和断点续传)
仿照Linux系统下的ftp功能进行编写。main.c#include <stdio.h>#include <stdlib.h>#include <signal.h>#include "ftp_client.h"// 创建FTP客户端对象FTPClient* ftp = NULL;void sigint(int num){ if(ftp->is_get) { printf("------------------------\n");原创 2020-09-10 21:37:23 · 838 阅读 · 0 评论 -
线程池的简介及线程池封装
线程池:线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。线程池的伸缩性对性能有较大的影响。创建太多线程,将会浪费一定的资源,有些线程未被充分使用。销毁太多线程,将导致之后浪费时间再次创建它们。创建线程太慢,将会导致长时间的等待,性能变差。销毁线程太慢,导致其它线程资源饥饿。th原创 2020-09-08 09:38:33 · 269 阅读 · 0 评论 -
网络通信socket套接字函数封装
写网络通信的时候发现这个流程是差不多的不管是udp还是tcp通信都有很多地方是相同的,那么能不能把这些流程封装一下,下次再写的时候就可以节约很多的时间。所以代码如下:network.h#ifndef NETWORK_H#define NETWORK_H#include <stdio.h>#include <stdbool.h>#include <netinet/in.h>// 网络通信结构typedef struct NetWork{ int so原创 2020-09-07 17:25:35 · 414 阅读 · 0 评论 -
Linux环境编程6(持续更新中)
一、基本概念1、线程就是进程的进程路线,它是进程内部的控制序列,或者说它是进程的一部分(进程是一个资源单位,线程是的一部分负责真正的执行)。2、线程是轻量级的,没有自己独立的代码段、数据段、bss段、堆、环境变量、命令行参数、文件描述符、信号处理函数、当前目录等资源。3、线程有自己独立的栈内存、线程ID、错误码、信号掩码等。4、一个进程中可以包含多个线程(多个执行路线),但至少有一个,这个线程要主线程,//默认情况下主线程结束其它线程会跟着一起结束。5、ps -T -p 或者使用htop命令查看原创 2020-09-04 14:57:30 · 330 阅读 · 0 评论 -
Linux环境编程5(持续更新中)
一、套接字基本特点:socket是一种接口技术,被抽象成一个文件操作,可以让进程之间通信,也可以让不同计算机的进程通信(网络)。int socket(int domain, int type, int protocol);功能:创建套接字domain: AF_UNIX/AF_LOCAL 本地通信,进程间通信 AF_INET 基于IPv4地址通信 AF_INET6 基于IPv6地址通信type: SOCK_STREAM 数据流协议 SOCK_DGRAM 数据原创 2020-09-01 21:41:03 · 157 阅读 · 1 评论 -
Linux环境编程4(持续更新中)
基本概念:什么是进程间通信:是指两个或多个进程之间交互数据的过程,因为进程之间是相互独立,为了协同工作必须交互数据。进程间通信的分类:简单的进程间通信:信号、文件、环境变量、命令行参数。传统的进程间通信:管道文件(有名管道、匿名管道)XSI进程间通信:共享内存、消息队列、信号量。网络进程间通信:套接字传统进程间通-管道管道是UNIX系统中最古老的进程间通信方式,古老就意味着所有系统都支持,早期的管道都是半双工,现在有些系统的管道是全双工(但要假定系统仅支持半双工)。管道是一种特殊的文件,它原创 2020-08-26 19:45:15 · 771 阅读 · 0 评论 -
Linux环境编程3(持续更新中)
基本概念1、中断当程序接收消息后中止当前正在执行的程序,转而执行其它任务,等其它任务执行完成后再返回,这种执行模式叫中断,分为硬件中断和软件中断。2、信号是一种软件中断,由操作系统发出,程序接收后会执行相应的操作。3、常见信号kill -l 显示所有信号SIGINT Ctrl+c 终止SIGQUIT Ctrl+\ 终止+coreSIGFPE 除0 终止+coreSIGSEGV 非常内存访问 终止+coreSIGKILL 终止信号 终止4原创 2020-08-25 20:08:57 · 961 阅读 · 2 评论 -
Linux环境编程2(持续更新中)
文件同步:1、在写入数据时内存与磁盘之间也有一个缓冲区,这种机制降低了磁盘读写次数,提高了读写的效率。2、但这种机制带来的后果就是磁盘中的数据与实写入的数据不匹配,系统提供了一个函数可以让缓冲区中的数据立即写入到磁盘。void sync(void);功能:把缓冲区中的数据同步到磁盘注意:并不等到数据同步完成后才返回,而是把缓冲区的数据加入到写入队列。int fsync(int fd);功能:把指定文件的内容从缓冲区同步到磁盘注意:会等到完全定稿磁盘才返回int fdatasync(int原创 2020-08-21 21:56:24 · 875 阅读 · 2 评论 -
Linux环境编程(持续更新中)
UNIX系统介绍:最早版于1970年问世于贝尔实验室,作者是丹尼斯.里奇和肯.汤普逊。是最早的多用户、多任务、支持多种CPU架构,高安全性、高稳定性、高可靠性。既能构架大型关键性业务系统的商用服务器,也能支持嵌入式设备。MiniX基于微内核加载的类UNIX系统,名为MINIX(即小型的UNIX),并开放全部源代码给大学教学和研究工作,Linux之父林纳克斯,正是在受了MiniX的启发,才开发了Linux系统。Linux系统介绍:Linux,全称GNU/Linux,其内核由林纳斯・托瓦兹于1991原创 2020-08-20 21:22:07 · 1002 阅读 · 1 评论 -
QT学习笔记(持续更新)
QT是跨平台C++图形用户界面应用程序开发框架。项目名称和路径不能有中文默认的三个基类 QWidget QMainWindow QDialog默认创建的文件 .pro工程文件 main.cpp入口函数 自己新建的.cpp和.h文件.proQT +=core gui //QT包含的模块greaterThan(QT_MAJOR_VERSION, 4):QT += widgets//4版本以上加入widgetTARGET = 01_QtFirst //目标 生成的.exe程序名称TEMPLAT原创 2020-07-04 08:45:57 · 415 阅读 · 1 评论 -
C++学习笔记(day6)(函数对象和一些算法)
STL函数对象概念:重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数函数对象的使用:特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递谓词返回bool类型的仿函数称为谓词如果operator()接收一个参数,那么叫做一元谓词如果operator()接收两个参数,那么叫做二元谓词举例:(一元谓词原创 2020-07-01 14:24:03 · 1179 阅读 · 0 评论 -
C++学习笔记(day5)持续更新中(STL所有容器完结)
vector容器功能:vector数据结构和数组非常相似,也称为单端数组vetcor与普通数组的区别:不同之处子啊与数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝到新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器vector构造函数:创建vector容器vector v;//采用模板实现类实现,默认构造函数vector[v.begin(),v.end());//将v[begin(),end()]区间中的元原创 2020-06-29 20:19:42 · 281 阅读 · 0 评论 -
C++学习笔记(day4)持续更新中
STL1.STL诞生长久以来,软件界一直希望建立一种可重复利用的东西c++的面对对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STL2.STL基本概念STL(standard Tempalte Library)标准库模板STL从广义上分为:容器 算法 迭代器容器和算法之间通过迭代器无缝连接STL几乎所有的代码都采用了模板类或者模板函数3.STL六大组件STL大体分为六大组件,分别是:原创 2020-06-28 19:23:42 · 221 阅读 · 0 评论 -
C++学习笔记(day3)持续更新中
运算符重载可以利用局部函数和全局函数进行运算符+的重载只能利用全局函数进行左移运算符的重载cout的数据类型是ostream继承的好处:减少重复代码语法:class 子类:继承方式 父类子类页称为派生类 父类也称为基类派生类的成员包含基类继承过来的和自己增加的成员(体现了共性和个性)父类中的私有内容 子类不能继承公共继承父类中的保护内容和公共内容原封不动的继承给子类保护继承 公共的内容会变为保护内容传给子类私有继承 公共和保护的内容都会变成私有的传给子类父类中所以非静态的成员属性都会原创 2020-06-28 14:04:50 · 198 阅读 · 0 评论 -
C++学习笔记(day2)持续更新中
面向对象:objected-oriented programmingC语言是一系列函数描述程序的工作过程,称为面向过程。c++把程序里面的数据和对数据的操作合起来看作一个实体(称为对象),编程工作就是操纵这些对象相互作用来完成程序的功能,这样的编程方式称为面向对象编程抽象:每个实体都有很多的数据和行为,只提取关心的数据和行为封装:用抽象的结果来描述实体的类型,称为封装。在c++中,可以用结构来实现封装,但出于跟c语言兼容,一般在c++中结构也只封装数据,用class关键字来实现真正的封装,称为类。封原创 2020-06-21 18:56:24 · 244 阅读 · 0 评论 -
C++学习笔记(day1)持续更新中
c和c++的一些输入输出以及一些定义上面的区别gcc hello.cpp -lstdc++ 链接c++库hello.cpp#include<iostream>int main{ std::cout<<"hello world\n"; return 0;}可以使用c语言的头文件前面加c去掉.h stdio.h==》cstdio名字空间:标准库中的所有名字都放在一个叫std的名字空间中,使用时要加std::前缀。偷懒的办法是用 using namesp原创 2020-06-19 22:25:19 · 234 阅读 · 0 评论 -
《C Primer Plus》学习笔记(第十一章到第十二章)
第十一章:字符串和字符串函数字符串是以空字符(\0)结尾的char类型数组。puts()函数只显示字符串,而且自动在显示的字符串末尾加上换行符。用双引号括起来的内容称为字符串字面量,也叫做字符常量。用单引号括起来的内容是一个字符。字符串常量属于静态存储类别。定义字符串数组时,必须要让编译器知道需要多少空间。要多一位存储‘\0’。可以在初始化的时候让编译器计算数组的大小。字符串的字面量被视为const数据(类似常量)。如果不修改字符串,不要用指针指向字符串字面量。通常,程序要完成某项操作只原创 2020-06-19 15:36:38 · 284 阅读 · 0 评论 -
c语言数组定义(详细)
数组:什么是数组:变量的组合,是一种定义变量的手段。定义:类型 数组名[数量];数组定义后,默认值同样不确定,因此也需要初始化。int arr[5] <==> int num1,num2,num3,num4,num5;使用:数组名[编号]编号 (下标) 从0开始,范围[0,数量-1]遍历:配合for循环从头到尾显示,循环变量i就当做数组的下标。int arr[5];f...原创 2019-12-04 20:16:25 · 21995 阅读 · 1 评论 -
《C Primer Plus》学习笔记(第九章到第十章)
第九章:函数函数是完成特定任务的独立程序代码单元,使用函数可以省去编写重复代码的苦差。如果程序要多次完成某项任务,用函数会方便很多。函数让程序更加模块化,从而提高了代码的可读性,更方便后期的修改、完善。描述性的函数名能清楚的表达函数的用途和组织结构。然后单独设计和测试每个函数,直到函数都能正常完成任务。在动手编写代码之前,仔细考虑一下函数应该完成什么任务,以及函数和程序整体的关系。函数原型告诉编译器函数的类型,函数调用表明在此处执行函数;函数定义明确的指定了函数要做什么,任何程序在使用函数之前都要声明原创 2020-06-09 18:33:47 · 254 阅读 · 0 评论 -
《C Primer Plus》学习笔记(第七章到第八章)
第七章:C控制语句:分支和跳转分支结构:让程序根据测试条件执行相应的行为跳转语句:它将程序流转换到程序的其他部分1.if语句即使if语句由复合语句构成,整个if语句仍被视为一条语句。条件为真则执行语句内的内容,为假则跳过if,继续执行程序。如果要在if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个块。如果不括则只认为下一条指令是if或else的一部分。if只和最近的一个else配对。else if多重选择 可以配合if使用2.getchar()和putchar()getc原创 2020-06-06 22:56:54 · 248 阅读 · 0 评论 -
C语言优先级全(转)
说明:同一优先级的运算符,运算次序由结合方向所决定。简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符‘!’属于单目运算符,并不属于逻辑运算符。单目运算符、条件运算符、赋值运算符的结合性是从右至左,其他运算符结合性是从左至右。同一运算符有优先级之分(比如算符运算符的乘法的优先级比加法优先级高)。运算符的优先级分为15个等级。...转载 2020-06-06 08:26:43 · 295 阅读 · 0 评论 -
C语言代码规范(编程规范)
什么叫规范?在C语言中不遵守编译器的规定,编译器在编译时就会报错,这个规定叫作规则。但是有一种规定,它是一种人为的、约定成俗的,即使不按照那种规定也不会出错,这种规定就叫作规范。虽然我们不按照规范也不会出错,但是那样代码写得就会很乱。大家刚开始学习C语言的时候,第一步不是说要把程序写正确,而是要写规范。因为如果你养成一种非常不好的写代码的习惯,代码就会写得乱七八糟,等到将来工作面试的时候,这样的习惯可能会让你失去机会。代码如何写才能规范那么代码如何写才能写得很规范呢?代码的规范化不是说看完本节内容后就转载 2020-06-06 08:04:57 · 403 阅读 · 1 评论 -
《C Primer Plus》学习笔记(第五章到第六章)
第五章:运算符、表达式和语句1.while循环原理当程序第一次到达while循环时,会检查圆括号中的条件是否为真,为真会运行块(花括号以及被花括号括起来的部分),如果不用花括号会运行到下一个;为止,运行完后会继续回到入口部分检查条件。while适合用来处理一些循环次数不确定的循环2.赋值运算符:=‘=’号左侧的项必须是一个变量名,右值指的是能赋值给可修改左值的量,且本身不是左值,赋值的顺序是从左往右。a=b=c=6;首先6赋值给c,c赋值给b,b最后赋值给a。3.符号运算符:-和+二元运算符需原创 2020-06-05 14:55:59 · 486 阅读 · 0 评论 -
《C Primer Plus》学习笔记(第三章到第四章)
第三章:数据和C1.常量和变量常量是整个程序运行中没有变化,变量会被改变或者赋值。2.数据类型关键字signed char 1 -128~127signed short 2 -32768~32767signed int 4 -2147483648~2147483647signed long 4/8 -9223372036854775808~9223372036854775807unsigned char 1 0~255unsigned short 2 0~65535unsigned in原创 2020-06-04 16:40:28 · 211 阅读 · 0 评论 -
《C Primer Plus》学习笔记(第一章到第二章)
第一章:初识C语言1.1C语言起源1972,贝尔实验室 丹尼斯.里奇和肯.汤姆逊在开发UNIX操作系统时设计了C语言(B语言基础上设计的)。1.2C语言的优点:1.C语言编写的程序更易懂、更可靠。2.C语言是高效的语言(更接近机器语言)。3.可移植性强4。强大而且灵活,用在很多方面5.面向程序员(对程序员很友好)。1.3C语言的缺点1自由度高但也更容易出错,需要小心。2.运算符多,需要多加注释,否则有时候很难阅读。1.4编译器的功能编译器是将高级计算机语言转化为机器语言。1.5使原创 2020-06-03 14:23:50 · 270 阅读 · 0 评论