#pragma once #include<iostream> #include<string.h> using std::ostream; using std::istream; class my_string { private: char *data; int len; public: static const int npos = -1; //返回错误时的验证值 //构造函数 my_string() { data = new char[1]; data[0] = '\0'; len = 0; } my_string(const char *str); my_string(const my_string &s); my_string(const my_string &s, int begin, int end); my_string(int size, ch 继续阅读 >>


李佳灏 17/12/23 13:13:04
题目描述 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807. 这个题其实是大数相加的链表实现,而且相比大数相加更加好处理一些,因为输入的数字是逆序 继续阅读 >>


李佳灏 17/12/17 18:11:31
#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<pthread.h> #define COUNT 10 static int i = 1; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t even = PTHREAD_COND_INITIALIZER; pthread_cond_t uneven = PTHREAD_COND_INITIALIZER; //1 3 5 7 9 void* funA(void *arg) { while(i <= COUNT) { pthread_mutex_lock(&mutex); if(i % 2 != 0) { printf("funA : %d\n",i); ++i; 继续阅读 >>


李佳灏 17/12/10 19:06:37
性能优化 在刚接触c++时候就觉得c++很有意思,比如在c中用”=”赋值的一些语句可以使用”()”进行初始化,但是之前并没有十分理解初始化相比于赋值语句有什么优点,后来在学习了类之后,初始化列表的出现,让我对初始化有了更加深刻的理解。 首先看代码 #include<iostream> using namespace std; struct Test1 { Test1() //无参析构 { cout<<"Construct Test1"<<endl; } Test1(const Test1& t1) //拷贝构造 { cout<<"Copy constructor for Test1"<<endl; this->a = t1.a; } Test1& operator=(const Test1& t1) //赋值运算 { co 继续阅读 >>


李佳灏 17/12/03 21:44:15
题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的。为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外一台计算机连接。 为了使得任意两台计算机之间都是连通的(不管是直接还是间接的),需要在若干台计算机之间用网线直接连接,现在想使得总的连接费用最省,让你编程计算这个最小的费用。 输入描述 Input Description 输入第一行为两个整数n,m(2<=n<=100000,2<=m<=100000),表示计算机总数,和可以互相建立连接的连接个数。接下来m行,每行三个整数a,b,c 表示在机器a和机器b之间建立连接的话费是c。(题目保证一定存在可行的连通方案, 数据中可能存在权值不一样的重边,但是保证没有自环) 输出描述 Output Description 输出只有一行一个整数,表示最省的总连接费用。 样例输入 Sample Input 3 3 1 2 1 1 3 2 2 3 1 样例输出 Sample Outpu 继续阅读 >>


李佳灏 17/11/24 21:49:49
main函数 test.c #include<stdio.h> #include<unistd.h> #include<pthread.h> #include"rwlock.h" my_pthread_rwlock_t rwlock = MY_PTHREAD_RWLOCK_INITIALIZER; #define N 5 void* thread_fun(void *arg) { my_pthread_rwlock_wrlock(&rwlock); printf("main thread get wrlock,\n"); sleep(12); my_pthread_rwlock_unlock(&rwlock); } void* thread_fun1(void *arg) { int index = *(int*)arg; printf("This is [%d]thread get rdlock. 继续阅读 >>


李佳灏 17/11/08 22:54:36
信号量 信号量是一个计数器,常用于处理进程或线程的同步问题,特别是对临界资源访问的同步。 信号量的值大于或等于0时表示可供并发进程使用的资源实体数;小于0时代表正在等待使用临界资源的进程数 1、信号集的创建或打开 int semget(key_t key, int sems, int sem_flags); key 是由ftok()的到的键值。 nsems指明要创建的信号集包含的信号个数,改参数后面还会提到。semflg为操作标志 IPC_CREATE:调用semget()时,会将本信号集中的key值和其他信号集中的key进行对比,如果存在相同的key,说明信号集已存在,此时返回该信号集的标识符,否则新建一个信号集并返回其标识符。 IPC_EXCL:该宏和IPC_CREATE一起使用,否则没有意义。当 semflg取PC_CREATE|IPC_EXCL时,表示如果发现信号集已经存在,则返回错误,错误码 为EEXIST。 2、信号量的操作 int semop(int semid, struct sembuf *sops, size 继续阅读 >>


李佳灏 17/11/07 16:59:19
介绍 c语言风格的注释为块注释,c++风格为行注释。 /*块注释*/ //行注释 在项目中人们喜欢用不同风格的注释,或者两种风格的注释混用,这并不影响代码的功能,但是在一些工具当中要求代码的注释风格统一为c或者c++风格。 所以写了一个处理文件注释的代码。 分析 我们使用了状态机的概念,即在对文件中各个字符检测的时候遇到特定的字符对全局变量赋不同的状态值,来代表代码所处的状态,下面为不同状态间相互转换的示意图。 例如 //Xi/*You*/Linux//Group 首先检测到了”//”这两个字符,进入c++状态,我们将”//”替换为”/* “然后将后面的”/ “,” /”,”//”换成两个空格代替,然后在最后加上”*/”.转换后如下 /*Xi You Linux Group*/ c语言状态下同理。 需要注意的是还有一种状态是引号的状态,在图中并未列出,在” “中的两种注释风格的注释都是无效的,它们被当作字符串处理,所以在” “中的注释的字符原样输出并不进行处理 代码 convertcomment.h #if 继续阅读 >>


李佳灏 17/09/24 16:09:40
开学自己就大二了,自己这一年里面学习了不少的东西,放假回家和同学们聊了一下,感觉自己确确实实提升很大,单就暑假留校的知识就够自己喝一壶的了。 第一周 学习了文件操作 ,了解了Linux的文件结构,大概了解了Linux根目录下主要目录的作用。 然后是文件的输入输出操作使用了creat,open,close,read,write等文件的输入输出函数。 最后是文件属性操作,移动和删除,以及目录操作。 这些知识大部分在自己写ls的时候都有使用,比如在递归遍历目录的时候判断文件是否为目录,并且根据文件的属性来获取权限信息,所属信息,创建时间等等。 第二周 学习了进程控制,知道了进程就是运行中的程序,以及进程的各种状态,然后比较有用的有进程的内存映像,因为在学习fork和vfork时要结合进程的内存映像图来理解这两个函数的不同。 在学习守护进程的时候了解了一些信号的内容,以及在进程中exit,return的区别 在这一章学习完毕后自己写了一个简单的shell,里面用到了exec函数来调用不同的系统命令,值得一提的是cd命令不是系统内置的命令需要用到在写l 继续阅读 >>


李佳灏 17/09/03 21:12:34
博主最近刚买的阿里云服务器,自己迫不及待的用ssh远程联接,但是一直没有动静 什么鬼!然后一直等啊等,出现 ssh: connect to host xx.xx.xx.xxx port 22: Connection timed out Connection timed out …,当时对端口还没有很深的了解,只知道端口是设备与外界通讯交流的出口,然后忽视了port 22这个提示…然后就在阿里云的控制台登陆服务器,然后联接自己的主机,没毛病(震惊!!!),说明服务器是有网的,而且用wget也是没问题的,然后就各种猜测(阿里云出bug了?服务器美响应过来?黑人问号?),然后用Nmap扫描了一下 Starting Nmap 7.40 ( https://nmap.org ) at 2017-08-11 08:35 CST Nmap scan report for xx.xx.xx.xxx Host is up (0.026s latency). Not shown: 997 filtered ports PORT STATE SERVICE 继续阅读 >>


李佳灏 17/08/11 10:07:33