- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 C/S模式下---多线程编程
服务器采用单进程/线程编程,在同一时刻,服务器只能与一个客户端进行交互。只有与当前客户端的通信结束后,才能为下一个客户端进行服务。所以,如果采用线程,让主线程连接客户端,而函数线程为每个客户端进行服务,这样就可以保证服务器可以同时为多个客户端提供服务,实现并发。采用多线程的优势1.线程占用资源少。2.从CPU的工作角度上看,线程的切换速度要比进程快。3.资源共享,线程之间的通信更加简单。...
2018-11-29 15:27:33 524
原创 C/S模式下---多进程编程
在单进程下进行socket的编程,服务器通过accept()获取到客户端的文件描述符,并且与该客户端进行交互。但是实际有两方面的因素都促使服务器应该能够同时与多个客户端进行交互。1.listen()函数将已经完成三次握手和即将完成三次握手的客户端文件描述符存放到队列中。2.在实际客户端与服务器进行交互时,服务器必须能够同时与多个客户端进行交互。多进程编程的优势:1.能够处理同时处理多个客户...
2018-11-29 14:25:47 318
原创 linux--解决登陆mysql数据库出现 “Access denied for user 'root'@'localhost' (using password: YES)”的问题
我的平台为redhat-linux,其它版本linux类同。请按照下列步骤依此执行,亲测有效:1.切换为root用户,停止mysql服务,service mysqld stop。2.在当前终端中输入mysqld_safe --user=mysql --skip-grant-tables --skip-networking。3.新打开一个终端输入mysql。4.进入mysql后,输入upd...
2018-11-25 22:58:25 1829
原创 软链接和硬链接
软链接-符号链接:相当于windows的快捷方式。创建命令:ln s 文件名 软链接的名字 ln-link s-soft特点:1.在linux中,软链接文件的颜色为浅蓝色。2.软链接的大小为原文件的文件名大小,即路径长度。3.软链接仅可在当前路径下使用,即和原文件在同一目录下。...
2018-11-24 20:29:11 344
原创 string类的实现
#include <cstring>class Cstring{private: char* _data;public: Cstring(const char* str){ if(str!=NULL){ _data = new char[strlen(str)+1]; strcpy(_data,str); } else{ _data =new ...
2018-11-17 11:35:15 276
原创 浅拷贝和深拷贝(用string类分析)
区分什么是初始化和赋值。对于一个类来讲,如果用一个已经存在的对象去构造一个新对象,这个过程就是初始化的过程。如果用一个已经存在的对象去给另一个已经存在的对象赋值,这就是赋值的过程。在初始化和赋值的过程中,假设类涉及到堆内存,如果采用编译器系统默认给定的拷贝构造函数和赋值运算符的重载函数进行对象之间的初始化过程和赋值过程,轻则发生浅拷贝,重则内存泄漏,这样的程序都是不不合格的程序员...
2018-11-17 11:24:22 623
原创 二叉堆类模板的实现以及使用它进行堆排序
二叉堆:二叉堆一棵完全二叉树,从递归的定义来讲,对于完全二叉树的任何一个节点,其左孩子要么是空树要么是一个完全二叉树,右孩子同上。堆的性质:对于一个堆来讲,可以是一个大根堆,也可以是一个小根堆。大根堆的性质:对于在大根堆任何一个节点,其值不小于左右孩子的值。小根堆的性质:对于在大根堆任何一个节点,其值不大于左右孩子的值。由于堆的底层数据结构是由完全二叉树实现的,就可以利用完全二叉树的一些...
2018-11-16 22:43:20 317
原创 CVTE笔试题目--删除链表中的重复元素
题目描述:有时候列表中的重复元素占用空间但是并没有什么作用,请实现下列函数帮忙删除有序链表中的重复元素。只保留第一个出现的元素。输入样例:1-&gt;2-&gt;2-&gt;4-&gt;4-&gt;4-&gt;5-&gt;6-&gt;6-&gt;7输出样例:1-&gt;2-&gt;4-&gt;5-&am
2018-11-16 20:41:50 256 1
原创 使用优先级队列实现堆排序
代码实现:#include &lt;iostream&gt;#include &lt;queue&gt;using namespace std;template&lt;typename T&gt;void heapSort(T arr[],int n){ //构建小根堆 //如果T类型不是基本类型,是class/struct,则需要重载小于号运算符 priority_queue
2018-11-12 17:20:43 324
原创 java中Iterable接口的使用,实现一个单链表的迭代器
单链表实现:public class MyLinkedList &lt;T&gt;{ private static class Entry&lt;E&gt;{ private E value; private Entry next; Entry(E e){this.value = e;this.next = null;} ...
2018-11-11 12:31:46 963
原创 BST(二叉搜索/排序树)类模板的实现
BST树的递归定义:(1)BST树是一棵空树。(2)BST树由根节点、左子树和右子树。左子树和右子树分别都是一棵BST树。由于二叉树的递归定义,使得在二叉树中许多操作中可以以递归的方式书写操作,代码更加浅显易懂。重点条件:左子树中的所有节点的数据域都小于或等于根节点的数据域,而右子树中的所有节点的数据域都大于等于根节点的数据域。根据这个特点,BST树的中序遍历是一个由小到大的顺序序列。B...
2018-11-04 20:43:31 5373
原创 编写一个程序区分是C源代码还是C++源代码
C++是在C语言的基础上建立的,所以在C++程序中沿用了很多C语言的东西,如printf函数既可以在C程序中使用,也可以在C++程序中使用,只需要引入相关的库文件即可。如何区分是.c文件还是.cpp文件?test.cpp#include&amp;lt;cstdio&amp;gt;int main(void){ printf(&quot;hello world&quot;); return 0;}test.c
2018-11-02 09:33:47 1891
原创 一个C程序辨别系统是64位还是32位
知识储备:计算机的位数取决CPU中寄存器的宽度,具体来说就是算术逻辑运算单元(ALU)的宽度,用来表征计算机的计算能力,ALU一次可以计算最大长度整数即计算机的位数。在32bit的计算机中,ALU一次可以计算的最大整数为4个字节。在64bit的计算机中。ALU一次可以计算的最大整数为8个字节。实际上,int这种类型是用来描述机器字长的,也就是说它可以代表寄存器的宽度。但是实际上int和lo...
2018-11-01 22:39:09 2074 3
LinkedListProblems.pdf
2019-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人