第一年
恩嗯
一个正在学习的,普通人
展开
-
新的语言新的方向,未来到底指向何方?
C语言的创始时间是1972年因其优秀的特质(快),在2020年的今天仍然在语言的前几名,新出的语言花样繁多,到底什么样的方向才是我们追求的目的,更快更正确更稳定,现在衡量算法的好坏,我觉得还得再加上新的要求,更好的支持多核处理。...原创 2020-10-29 14:45:55 · 226 阅读 · 0 评论 -
文件复制(Go语言实现)
在这里插package mainimport ( "fmt" "io" "os" "strconv" "time")type MyCopy struct{}func NewMyCopy() *MyCopy { return new(MyCopy)}//保存上次文件读取到的位置var last string = "./last"/*** 功能:文件复制(支持断点续传)* Seek(offset int64, whence int) (ret int64, err er原创 2020-10-05 21:53:56 · 730 阅读 · 0 评论 -
Go语言认知
Go语言——面向一线开发的语言go语言,最近有时间进行较为深度的学习,在了解go语言的过程中,(我是在官网看文档的),go语言有很多小细节,针对一线开发中的麻烦点,进行简化,为一线开发人员大开方便之门。...原创 2020-09-19 16:05:18 · 176 阅读 · 0 评论 -
2020-9-16实习工作小结
从公司到学校考试2周后,又来到深圳打工,在深圳一家做人工智能的公司做后台开发实习生,这段时间,我的产品经理没有需求,在对代码了解过后,对测试环境进行了解,每天都在等待新的bug,并协助调查引起错误的原因,在学校都是通过调试来进行排查,在公司这种项目上出现的问题,都是通过日志进行查验。...原创 2020-09-16 17:04:00 · 158 阅读 · 0 评论 -
工作日记(第一周)
在昨天结束一周的工作后,做了串讲,忙活了一周去做准备,走错了路,又和提出问题的人进行商量,进行目标转移,进行更进一步的操作。学习如何学习,嗯解释一下,学习如何更有效地学习,从目的出发,拿到需要的资料,进行针对性阅读。事情就很快的完成了,找到合适的路,很快就会抵达终点....原创 2020-08-19 17:43:26 · 169 阅读 · 0 评论 -
最短路径——Floyd算法
#include<iostream>using namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;const int INFINITY = 65535;typedef int Pathmatirx[MAXVEX][MAXVEX];typedef int ShortPathTable[MAXVEX][MAXVEX];typedef str原创 2020-07-14 09:22:31 · 143 阅读 · 0 评论 -
BST——C++
BST树,是指左子树上所有节点都小于双亲结点,右子树上所有节点都大于双亲结点的二叉树,BST树又称为二叉排序树和二叉搜索树,理想状态下真的很不错,如果不是频繁的对树进行增删其实哈、还好,嘻嘻,就怕你改成了斜树,那样就是废品。怎么说呢,这些搜索树,都是为了模仿二分查找的,好好学习吧少年。#include<iostream>/*BST的类写好了,增删改查,emmm不难,但是发现书上给的代码有问题,大话数据结构324页,4-11行。错的离谱,感觉就像开玩笑,可能是我看错了,我没按照书上写。原创 2020-07-13 23:22:29 · 517 阅读 · 0 评论 -
最短路径(Dijkstra)
#include<iostream>using namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;const int INFINITY = 65535;typedef int Patharc[MAXVEX];typedef int shortPathTable[MAXVEX];typedef struct{ VertexT原创 2020-07-01 10:26:38 · 189 阅读 · 0 评论 -
最小生成树(kruskal算法)
#include<iostream>using namespace std;//kruskal算法中对边集数组要求必须是根据全职升序排序的typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;const int MAXEDGE = 100;typedef struct Edge{ int begin ,end; EdgeType weight原创 2020-06-30 14:46:37 · 152 阅读 · 0 评论 -
最小生成树(Prim)
#include<iostream>using namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;const int INFINITY = 65535;typedef struct{ VertexType vexs[MAXVEX]; EdgeType arc[MAXVEX][MAXVEX]; int numV原创 2020-06-30 11:58:03 · 3515 阅读 · 5 评论 -
超级详细的python爬虫提高CSDN页面访问量,学不会,我吃奥利给
首先你要有能够运行python3.0的运行环境,其次还要有这些三方库:其他就不需要了,本人自学4天就写出来了,相信你也可以我本来想发源代码,想了想还是发图片吧,需要源码可以私聊我如果你要用的话,只需要改两个地方就好了:拿我的博客举个例子,把红色的部分放到baseurl中,把绿色的数字放到arr列表中,你可以多放几个博客的数字,然后点击运行就好了。...原创 2020-06-28 15:50:55 · 571 阅读 · 5 评论 -
图——DFS,BFS(邻接表)
DFS你可以当成树的先根遍历来做,BFS你可以当做树的层次遍历来做,这里因为图不一定是连通图,所以每个顶点都要尝试一下,用一个BOOL数组来表示这个顶点是否经历过遍历。#include<iostream>#include<queue>using namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;typedef struct Edg原创 2020-06-27 11:09:27 · 871 阅读 · 0 评论 -
图——DFS,BFS(邻接矩阵)
DFS你可以当成树的先根遍历来做,BFS你可以当做树的层次遍历来做,这里因为图不一定是连通图,所以每个顶点都要尝试一下,用一个BOOL数组来表示这个顶点是否经历过遍历。(这个编辑器插入代码段为啥只能是黑色)#include<iostream>#include<queue>using namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;c原创 2020-06-27 10:32:57 · 827 阅读 · 0 评论 -
图——边集数组
#includeusing namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;const int MAXEDGE = 100;typedef struct Edges{int begin ,end;EdgeType weight;}Edges;typedef struct Graph//图{VertexType vexs[MAXVEX]原创 2020-06-23 17:01:47 · 1596 阅读 · 0 评论 -
图——邻接表
#includeusing namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;typedef struct EdgeNode//边表结点{int adjvex;EdgeType weight;EdgeNode * next;}EdgeNode;typedef struct VertexNode//顶点表结点{VertexType data;E原创 2020-06-23 16:33:49 · 230 阅读 · 0 评论 -
图——邻接矩阵
#includeusing namespace std;typedef char VertexType;typedef int EdgeType;const int MAXVEX = 100;const int INFINITY = 65535;typedef struct{VertexType vexs[MAXVEX];EdgeType arc[MAXVEX][MAXVEX];int numVertexes,numEdges;}MGraph;/*建立原创 2020-06-23 15:35:10 · 274 阅读 · 0 评论 -
线索化二叉树
我们把指向前驱或者后继的指针称为线索,加上线索的指针就称之为线索二叉树#includeusing namespace std;typedef char Elemtype;typedef enum{Link,Thread} PointTag;typedef struct BiTNode{Elemtype data;BiTNode *lchild,*rchild;PointTag LTag,RTag;}BiTNode,*BiTree;BiTNode * BuyBiTNode原创 2020-06-22 11:44:08 · 126 阅读 · 0 评论 -
二叉树的建立
#includeusing namespace std;typedef char Elemtype;typedef struct BiTNode{Elemtype data;BiTNode *lchild,*rchild;}BiTNode,*BiTree;BiTNode * BuyBiTNode(Elemtype val){BiTNode * s = new BiTNode();s->data = val;return s;}BiTree CreatBiTr原创 2020-06-21 11:15:31 · 644 阅读 · 0 评论 -
二叉树遍历
二叉树的遍历,是将树形结构线性化的过程。#include<iostream>#include<queue>using namespace std;typedef char Elemtype;typedef struct BiTNode{ Elemtype data; BiTNode *lchild,*rchild;}BiTNode,*BiTree;void PreOrderTraverse(BiTree T)//前序{ i原创 2020-06-21 10:08:31 · 265 阅读 · 0 评论 -
循环队列
#include const int MAXSIZE = 10;template class Myqueue{public:Myqueue(){data = new TMAXSIZE;real = front = 0;}~ Myqueue(){delete [] data;}bool Empty(){return real == front;}bool Full(){return (real + 1 + MAXSIZE) % MAXSIZE == front原创 2020-06-14 10:56:47 · 643 阅读 · 0 评论 -
两栈共享空间
大话数据结构:打个比方,两个大学室友毕业同时到北京工作,开始时,他们觉得住了这么多年的集体宿舍,现在工作了一定要有自己的私密空间。于是他们都希望租房时能租到独住的一居室,可找来找去才发现,最便宜的一居室要1500,地段还不好,实在是承受不起,最终他们两还是合租了一套两居室,一共2000各出一半还不错。对于两个一居室都有独立的卫生室和厨房,是私密了,但大部分空间的利用率却不高。而两居室,两个人各有卧室,还共享了客厅,厨房,卫生间,房间的利用率就显著提高,而且租房的成本也大大下降。/*使用前提:相同数据类原创 2020-06-13 12:10:08 · 313 阅读 · 0 评论 -
智能指针(简单版)
#include/*智能指针,面向对象的指针。该指针可以实现自动回收内存的功能。通过将指针交给对象来管理,对象放到栈中,栈由系统进行管理,来实现自动回收功能,独辟蹊径,妙啊。实现该智能指针的主要问题在于运算符的重载上。*/template class SmartPtr{public:SmartPtr(T * ptr):mptr(ptr){}~SmartPtr(){delete [] mptr;}T& operator *(){return *mptr;}原创 2020-06-11 11:26:08 · 140 阅读 · 0 评论 -
通用内存池
#include#include/*目的:实现一个通用的内存池过程:通过 MEM_POOL(内存池类),中的alloc实现其他类的new,dealloc实现其他类的delete,使用内存池的类,在一个类下,使用同一个内存池。(通过static关键字来进行实现:单例模式,本次实现线程安全),*/const int MEM_SIZE = 10;template class MEM_POOL{public:static MEM_POOL* getInstance()//单例模式(线程原创 2020-06-10 19:51:31 · 643 阅读 · 0 评论 -
简易内存池
#include/*new1.开辟内存2.初始化delete1.释放资源2.释放内存//new1.开辟内存operator new 系统2.调用构造函数delete1.调用析构函数2.释放对象的内存operator delete 系统*//*自主的内存管理机制 :通过对new,delete进行重载来实现。*//*系统允许new,delete进行重载/template class Queue{public:Queue(){pfront =原创 2020-06-06 15:39:09 · 217 阅读 · 0 评论 -
字符串类的写时拷贝
/*系统提供的,是深拷贝,不提供写时拷贝,因为系统不知道你使用【】是写还是读,读的话用写时拷贝反倒是浪费空间。*/#include#include<string.h>#include<vld.h>class String{public:String(){mptr = NULL;} String(const char * ptr) { mptr = new char(strlen(ptr)+1+4); mptr += 4; st原创 2020-06-04 11:23:11 · 667 阅读 · 0 评论 -
字符串类的写时拷贝(自己想的)
纯自己想,想到用指针的方式访问计数器,计数器与数据域同时间段开辟出来,放在头部,是个int类型。之后会写一个科学一点的,这个里面采用了强转这种不安全的方法。#include#include<string.h>#include#include<vld.h>class String{public:String(){pcount = NULL;mptr = NULL;} String(const char * ptr) { mptr = new cha原创 2020-06-02 18:47:33 · 197 阅读 · 0 评论 -
字符串类迭代器
#include#include//C++ string/*迭代器:1.作用:为容器提供统一的遍历方式,再提供遍历的前提下,使得使用人员无法清楚内部的存储结构,加强封装性。2.面向对象的指针:作为对象却做一个指针在做的事情。由于字符串类型,物理地址连续,采用下标访问的方式,更快,更方便,更好。所以做了优化。总结:迭代器的设计应该由容器开发人员来进行开发,根据不同容器的特点设计不同设计方案的迭代器,必须要有4个函数,1.开始迭代的函数2.结束迭代的函数3.进行迭代的函数,也就是++;4原创 2020-06-01 10:04:27 · 708 阅读 · 0 评论 -
字符串运算符重载
目的,实现自定义类型字符串,部分运算符重载。#include#include<string.h>#includeclass String{public:String(){}String(char* ptr){mptr = new charstrlen(ptr) + 1;strcpy_s(mptr, strlen(ptr) + 1, ptr);}const String operator +(const char *source){ char * tmp = n原创 2020-06-01 08:08:22 · 1401 阅读 · 0 评论 -
学生选课系统
#include<stdio.h>#include<stdlib.h>typedef struct Cou_num //课程编号以及成绩{int number;int achieve;}Cou_num;typedef struct Student{bool sex;//1代表男生,0代表女生signed int grade;//年级,比如2017年入学的就是2017级。char name[20];long Stu_number;Cou_原创 2020-05-29 11:07:54 · 1369 阅读 · 16 评论 -
C++Vector
//使用C++函数模板实现一个Vector。#include#include<string.h>template class Vector{public:Vector(int size = 20){parr = new T[size];cursize = 0;totalsize = size;}bool VectorEmpty();//判空void ClearVector();//清空void Resize_double();//内存扩充为当前空间的二倍T&原创 2020-05-19 08:10:16 · 365 阅读 · 0 评论 -
数组排序(通用)
使用函数模板实现数组排序,使其可以解决内置类型数组排序,增加排序函数的通用性。#include #include <string.h>#define E 0.0000001using namespace std;template void BubberSort(T arr[],int len)//解决整型,字符型{if(arr == NULL) return ;bool ISswap = 0;for(int i = 0; i < len-1;i++){IS原创 2020-05-13 18:15:22 · 377 阅读 · 0 评论 -
使用C++实现链表
看吧:在公有区域,实现了以下这些功能,对这些功能进行拆分和优化,可以满足不同的需求,缺点:没有对申请内存的地方做很好的优化,我也想了想,如果要去做优化的话,自己去做一个内存池会比较好一点,抽时间去做做吧。私有的话,我放的是一个头指针,这里仁者见仁,智者见智。void LinkList ::ShowList(){LNode *tmp = node->next;while(tmp){cout<data<<"->";tmp = tmp->next;}cou原创 2020-05-13 18:08:39 · 241 阅读 · 0 评论 -
二维数组怎样存储
大家对二位数组的存储方式有许许多多奇怪的错误看法,这里来梳理一下其实呢,二维数组的说法是不准确的,因为C/C++都不存在二维数组的数据结构,只不过一些入门教程为了让初学者快速理解产生的名词,所以在C/C++仅存在数组的数组的说法。所以说二维数组不过是方遍我们去理解的。举个例子吧:int nums[2][2] = {{1, 2},{2, 3}};这是一个很普通的二维数组,从某个维度上...原创 2020-04-27 16:34:15 · 6337 阅读 · 0 评论 -
01背包(动态规划(回溯))
#include<stdio.h>/*所谓动态规划,就是分治策略加上不同的区域之间相互影响,如何从局部最优解,到全局最优解,这便是我们所关注的重点,因为还是分割成一块一块的,递归入手更好去理解。//现有n件物品,其中第i件物品的重量为w[i],价值为v[i],有一容量为j的背包,求在不超过背包容量的情况下,使取得的商品的价值总和最大。注意:物品只有两种状态0不放,1放...原创 2020-03-17 23:28:26 · 218 阅读 · 0 评论 -
递归与循环,为什么老是写错?
递归与循环,通常是我们用来解决,问题规模大,并且有重复性的步骤的问题我一般会使用递归,因为递归的逻辑清晰,代码实现起来方便,今天我们不去关注,时间复杂度,空间复杂度,栈溢出的情况,只去考虑两种编程的理论与代码的相结合。就拿一个简单的二分法来讲吧。如果你脑海里是递归的想法,去写一个循环解决的方法的话,相信我你会遍体鳞伤,不信,你可以去试试,很多细节之处,你可能考虑不到位,导致你的程序出现错误。如...原创 2020-03-08 20:28:26 · 273 阅读 · 0 评论 -
串匹配算法.BF算法
#include<stdio.h>#include<string.h>//BF算法的时间复杂度:O(n*m)int BF(char *s,char *p,int pos){if(s == NULL&&p == NULL){return -1;}int lens = strlen(s);int lenp = strlen(p);if...原创 2020-02-17 16:22:13 · 179 阅读 · 0 评论 -
生产者和消费者
先分析生产者消费者模型描述的问题,然后根据题目给出的具体场景,实现代码。生产者消费者模型描述:生产者/消费者问题可以描述为:两个或者更多的进程(线程)共享同一个缓冲区,其中一个或多个进程(线程)作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个进程(线程)作为“消费者”从缓冲区中取走数据。生产者/消费者模型关注的是以下几点: 生产者和消费者必须互斥的使用缓冲区 缓冲区空时,消费者...原创 2020-02-12 21:45:01 · 1110 阅读 · 0 评论 -
内存划分
原创 2020-02-12 11:32:35 · 106 阅读 · 0 评论 -
基数排序
#include<stdio.h>#include<time.h>#include<stdlib.h>#define LENGTH 10typedef struct Que{int *data;int head;int tail;}Que;void ShowData(int *arr,int len){for(int i ...原创 2020-02-10 19:52:05 · 118 阅读 · 0 评论 -
二路归并排序
#include <stdio.h>#include <time.h>#include <stdlib.h>#define LENGTH 13//时间复杂度:n*logn 空间复杂度: n 稳定性:稳定//根据width进行一次归并排序void Meger(int arr[],int len,int width) //width == ...原创 2020-02-03 12:55:17 · 137 阅读 · 0 评论