自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 c语言平衡树代码

c语言平衡树代码avl_tree.h#ifndef _AVL_TREE#define _AVL_TREE#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <math.h>#include "queue.h"#define LH 1#define RH -1#define EH 0typedef struc

2021-11-19 17:00:37 466 1

原创 udp_socket

udp_client#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>int main(){ int fd; char buf[1024]; struct sockaddr_in addr; fd = socket(AF_INET, SOCK_DGRAM, 0); if ( fd < 0 ) { p

2021-10-18 17:40:19 381

原创 MySQL day03

MySQL day031、约束1.1、唯一性约束(unique)* 唯一约束修饰的字段具有唯一性,不能重复。但可以为NULL。* 案例:给某一列添加unique drop table if exists t_user; create table t_user( id int, username varchar(255) unique // 列级约束 ); insert into t_user values(1,'zhangsan'); insert into t_user val

2020-12-23 18:46:14 98 1

原创 MySQL day02

MySQL day021、关于查询结果集的去重?mysql> select distinct job from emp; // distinct关键字去除重复记录。±----------+| job |±----------+| CLERK || SALESMAN || MANAGER || ANALYST || PRESIDENT |±----------+mysql> select ename,distinct job from emp;

2020-12-23 18:45:43 89

原创 MySQL1

MySQL1、sql、DB、DBMS分别是什么,他们之间的关系?DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)DBMS: DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer...)SQL: 结构化查询语言,是一门标准通用的语言。标准的sql适合于所有的数据库产品。 SQL属于高级语言。只要能看懂英语单词的,写出来的sql语句,可以读懂什么意思。 SQL语句在执行的时

2020-12-23 18:45:07 84

原创 c++单例

c++单例懒汉模式#include <iostream>#include <thread>#include <mutex>using namespace std;class Singleton{private: // 构造函数私有化,因为创建一个对象要是用构造函数,直接屏蔽类外构造 Singleton() {} // 整个类只有这一个指针 static Singleton* s; // 加锁保护线程安全 static mute

2020-12-18 21:15:28 82 1

原创 四种强制类型转换

四种强制类型转换1. static_cast 用于基本类型转换,和子类向父类转换2. const_cast 用于去除指向常数的指针和引用的const属性3. dynameic_cast 用于父类向子类的转换,转换失败返回0,用于继承而且必须有虚函数不然编译报错4. reinterpret_cast 不想关类型的转换...

2020-12-18 20:33:12 226 1

原创 共享指针

共享指针#include <iostream>using namespace std;template <class T> class Share{public: // 构造函数 Share(T* p= NULL) : key(p), size(new int(1)) {} // 拷贝构造 Share(const Share& p) { key = p.key; size = p.size; (*size)++; }

2020-12-18 18:56:33 98

原创 LRUCache(最近最久未用)源码实现

LRUCache(最近最久未用)源码实现用链表加哈希表(哈希表key记录key,value记录key前驱结点的指针)class Node{public: Node(int k = -1, int v = -1, Node* n = NULL) :key(k), value(v), next(n) {}; int key; int value; Node* next;};class LRUCache{public: LRUCache(int capacity) { size

2020-12-05 13:36:07 60

原创 独享指针unique_简单实现

独享指针unique_简单实现#include <iostream>#include <memory>using namespace std;template <class T>class UniquePtr{public: UniquePtr(T* ptr = NULL) :key(ptr) { } virtual ~UniquePtr() { decrease(); } T* get() { return key; } // 赋值

2020-12-04 20:00:25 133

原创 共享指针shared_ptr

共享指针shared_ptr就是用了一个类来绑定一个对象,这个智能指针是在栈上,当栈回收共享指针的引用计数会减1,为0时释放这个对象资源,将堆区的资源绑定到栈区让系统回收。#include <iostream>using namespace std;// 使用模板template <class T>class SharePtr{public: // 构造函数函数 SharePtr(T* ptr = NULL) :key(ptr), size(new int(

2020-12-04 19:18:42 109

原创 最长上升子序列

[300. 最长上升子序列][(https://leetcode-cn.com/problems/longest-increasing-subsequence/)难度中等1194给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能

2020-12-04 13:47:21 60

原创 IO多路复用eopll的练习

IO多路复用eopll的练习#include <stdio.h>#include <errno.h>#include <sys/epoll.h>#include <ctype.h>#include <string.h>#include <sys/types.h>#include <stdlib.h>#include <netinet/in.h>#include <unistd.h>

2020-12-02 10:10:55 144

原创 IO多路复用select模型

IO多路复用select模型#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <arpa/inet.h>int main(){ // 创建一个socket的文件描述符 int lfd = socket(AF_INET, SOCK_STREAM, 0

2020-12-01 17:22:47 76

原创 多进程简单练习

多进程简单练习#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/wait.h>#include <sys/types.h>int main(){ int fd[2]; int ret = pipe(fd); int n = 2; int i; // 创建2个进程,这里pid==0

2020-11-30 19:52:50 82

原创 大端小端问题

大端小端问题大端字节序:高端字节序(网络字节序),高端地址存放低位数据,底端地址存放高位数据小端字节序:底端字节序,低端地址存放低位数据,高端地址存放高位数据// 拿这个共享体来举例// short 类型是2个字节的换成16进制应该为0x0000(0x表示16进制)// 因为共享体只能存储一个有效数据所以我们来看一下// 我们存储16进制0x0102我们认为地址中应该是也是0x0102这样存储的,这样就是小端字节序,但是你把下面的// 程序输出一下就知道// v.c[0] = 2, v.c

2020-11-30 10:20:39 62

原创 进程间通信(CC++)

进程间通信(C/C++)// 无名管道#include <stdio.h>#include <unistd.h>#include <string.h>#include <sys/stat.h>#include <sys/types.h>#include <fcntl.h>int main(){ int fd[2]; // 创建无名管道 int ret = pipe(fd); if (ret < 0)

2020-11-29 19:24:37 277

原创 OSI7层模型

OSI7层模型OSI 7 层模型物理层-双绞线,将模拟信号转化为数字信号(高低电压)数据链路层-定义了网络传输的基本单位-帧网路程-两台机器传输路径的点到点传输(A->?->?->->B)//A到B是端到端,相连的是点到点比如A->?.传输层-传输数据,tcp,udp端到端传输会话层-建立起与传输层的传输通道表示层-解编码,翻译工作应用层-为客户端提供各种服务TCP头部(20字节)16位源端口号 16位目的端口号32位序号32位确认序号*****

2020-11-29 11:36:39 74

原创 信号量实现生产者消费者(代码逻辑有问题,不适合多个消费者,不常用)

信号量实现生产者消费者(代码逻辑有问题,不适合多个消费者,不常用)#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <sys/types.h>#include <string.h>#include <semaphore.h>struct Node{ int val; Node* next

2020-11-26 10:41:46 261 1

原创 生产者消费者

生产者消费者#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <sys/types.h>#include <string.h>struct Node{ int val; Node* next;};pthread_mutex_t mutex; //锁的声明pthread_cond_t cond

2020-11-25 20:33:38 44

原创 死锁的几种玩法

死锁的几种玩法////一, 加锁顺序不当,下面这份代码首先线程1申请了mutex1锁,再去申请mutex2锁,有可能mutex2锁被线程2领走了,造成了线程1拿了mutex1再等mutex2,线程2拿了mutex2再等mutex1,循环等待造成死锁,正确方法是让两个线程都先拿mutex1再拿mutex2(下面代码演示)//二, 连续加锁,比如 pthread_mutex_lock(&mutex1);pthread_mutex_lock(&mutex1);连续出现两次。#includ

2020-11-25 11:21:07 75

原创 互斥锁

互斥锁#include <stdio.h>#include <unistd.h>#include <pthread.h>// 创建一个互斥锁pthread_mutex_t mutex;void* mythread1(void* argv) { for (int i = 0; i < 10; i++) { // 加锁 pthread_mutex_lock(&mutex); printf("HELLO"); sleep(2);

2020-11-25 10:47:26 82

原创 socket:client

socket:client#define WIN32_LEAN_AND_MEAN#include <winsock2.h>#include <windows.h>#include <stdio.h>#include <string.h>#pragma comment(lib, "ws2_32.lib")using namespace std;int main(){ WORD ver = MAKEWORD(2, 2); WSADATA da

2020-11-23 15:18:18 63

原创 Socket :sever

Socket :sever#define _WINSOCK_DEPRECATED_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#define WIN32_LEAN_AND_MEAN#include <winsock2.h>#include <windows.h>#include <stdio.h>#include <string.h>#pragma comment(lib, "ws2_32.lib")u

2020-11-23 15:18:00 58

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除