- 博客(57)
- 资源 (1)
- 收藏
- 关注
原创 C++获取礼拜一的时间戳
获取礼拜一的时间戳UINT64 GetWeekBeginTime(){ time_t t; t = time(0); tm* t_tm = localtime(&t); t_tm->tm_hour = 0; t_tm->tm_min = 0; t_tm->tm_sec = 0; t_tm->tm_wday = 0; 不生效 t = mktime(t_tm); return (UINT64)t;}源码没有用到这个逻辑问题 从现网拉
2022-04-20 12:07:51
982
原创 python粘结shell监听端口设置
通过python粘接,替代了shell判断状态是否ok的步骤。简单方便#encoding=utf8import osimport timeimport socketimport commandsdef checktcp(ip,port,ser): cmdstra="netstat -atn|grep "+port (status, output) =...
2018-12-06 12:12:05
398
原创 一个简易的http服务器。
从代码逻辑我们可以很清晰的看出简单的http服务器锁遵循的框架,以及后台调用的过程 并在此,应用了,多进程,进程间通信的管道,以及网络通信socket的知识/************************************************************************* > File Name: httpd.c > Author:Victor Qi
2016-04-04 18:47:36
1437
转载 一些后台开发的基本问题(需要懂得)
Linux后台开发应该具备技能 一、linux和os: 1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握 3、awk sed需掌握 4、共享内存的使用实现原理、然后共享
2016-04-02 12:05:16
1254
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(st
2016-04-02 11:32:12
499
原创 WEB服务器、应用程序服务器、HTTP服务器区别
WEB服务器、应用程序服务器、HTTP服务器区别 WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了:Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。因为Web服务器主要支持的协议就是HT
2016-03-31 19:45:30
997
原创 典型的进程间通信IPC问题-生产者消费者问题
本实例详细解释了生产者消费者问题的简易模型,对于同步互斥以及多线程处理此问题提出了一个较好的解决方案。#include <stdio.h>#include <pthread.h>#define MAX 10000000000 //定义缓冲区数量,就是生产品数量pthread_mutex_t the_mutex;pthread_cond_t condc,condp;int buf
2016-03-30 01:35:20
1180
原创 基础之快速排序(霍尔排序)
#include<stdio.h>void quicksort(int *array,int left,int right){ int i,j int t; int temp; if(left>right||array==NULL) return -1; temp=array[left]; i=left; j=right;
2016-03-29 00:12:41
3515
原创 leetcode反转链表
要点,三个标识指针,来回交换,将遍历到的节点放在首节点头部。//leetcode反转反转链表struct ListNode*reverselist(struct ListNode*Node){ if(!Node||!Node->next)//判断前提条件,传进来的指针是否为空 return Node; struct ListNode *p=Node,*pnext
2016-03-28 23:06:11
513
原创 arpa/inet.h
从man手册获取到的inet.h信息。在linux下网络编程程中常用头文件,主要是信息转换,将客户端信息,转换为字符串信息。<arpa/inet.h>(0P) POSIX Programmer's Manual <arpa/inet.h>(0P)NAME arpa/inet.h - definitions for internet operationsSY
2016-03-25 00:48:33
17726
原创 对于sizeof的用法测试
如果你不懂sizeof的用法,我想看了这个代码你就会一清二楚,甚至不用讲解。 话不多说:上代码~~~/************************************************************************* > File Name: Testsizeof.c > Author:Victor Qi > Mail:Victor_QiG
2016-03-07 22:58:02
490
原创 APUE之对于系统中缺失的error.c文件的阶段性总结
大多数人在学习APUE过程中都会受到缺失apue.h和error.c文件的困扰本文意指在学习完整个APUE的过程中对于error.c 文件由原官方文件的基础上做出的N次扩充,也就是说在以后的学习中,基本上所有代码的包含了apue.h的时候,也会利用到error.c文件。如若不信,我把github地址放在这里(https://github.com/VVictorQi/APUE你可以将我的代码拷过去进行学习
2016-02-26 23:25:34
831
原创 python之干什么可以走的路线
pickle腌制loads函数将序列化的对象原样返回python RESTful API 概述展示微博开放平台的RESTfulRESTful设计原则1 Uniform interface 2 无状态 Stateless3 Cacheable 可缓存的4 Client-Sever 客户端服务端分离5 Layered System 分层系统6 Code on Demand 按需编码
2016-02-26 23:07:11
696
原创 关于APUE第十六章的客户端程序返回Servname not supported for ai_socktype错误的解决方法
出现这种错误的原因是因为没有给服务分配端口号,可以手动添加端口号,就是在/etc/services文件里加上一行:使用vi /ect/services 按住Shift+G跳到最后一行,按住i进入插入模式,进行编辑 ruptime 39001/tcp ruptime 是服务名,就是getaddrinfo的第二个参数名,而不是程序名。39001是分配的端口号,可以任意,但不要与
2016-02-22 02:30:27
10192
1
转载 使用消息队列的 10 个理由--IPC通信
过去几年中,我们一直在使用、构建和宣传消息队列,我们认为它们是很令人敬畏的,这也不是什么秘密。我们相信对任何架构或应用来说,消息队列都是一个至关重要的组件,下面是十个理由:1 . 解耦在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束
2016-02-20 02:16:10
922
原创 阿里云Centos下安装mysql找不到mysql-sever安装包的解决方案
解决方案采用yum源安装,yum install mysql mysql-sever mysql-client很多教程上都这么写,实际上也是对的,对于大多数centos系统默认源来讲,确实如此。但是在阿里云服务器上,默认是阿里云自己配置的yum源 ,所以上述方法就会出问题,因为人家的yum源里面根本就没有这些东西。可能是包名改了吧,反正不是我们熟悉的那些。
2016-02-14 13:13:39
3240
转载 Python元编程-遗忘的远古凶兽
元编程黑魔法防御元编程是一种黑魔法,正派人士都很畏惧。——张教主何谓元编程编写一个程序,能够操纵,改变其他程序,这就是元编程 最简单的来说,C的宏就是元编程的一种 元编程的另一大代表则是lisp的宏 虽然不常见,但是汇编级别也是可以元编程的,例如可执行文件压缩 如果源语言和目标语言一样,就是我们最常见的反射 元编程的几种形式文本宏语言,C宏,M4,Flex,Bison,Gperf
2016-02-05 02:54:41
2387
原创 Python学习之面向对象
#当机械有了思想,当对象有了灵魂#面向对象最大的概念就是类和实例,类是抽象的模板#Python中对于变量数据的隐藏利用开头双下划线class People(object): def __init__(self,name,age,sex): self.__name=name self.__age=age self.__sex=sex
2016-02-05 02:36:54
548
原创 Python学习基础之函数
当出现函数的时候世界的曙光出现了,重复的事情变得简单 def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny
2016-02-04 18:29:01
1095
转载 编译器的工作过程-节选自阮一峰的博文中并加以整理
来源: 阮一峰的网络日志 原文: http://www.ruanyifeng.com/blog/2014/11/compiler.html比如,下面这段源码(假定文件名叫做test.c)。#include <stdio.h>int main(void){ fputs("Hello, world!\n", stdout); return 0;}要先用编译器处理一下,才能运行。$
2016-02-03 20:33:16
719
原创 UNIX环境高级编程__针对apue.h找不到的情况以及log错误信息输出的问题
今天开始进行UNIX环境高级编程的额学习之旅,刚开始的额代码中就发现apue.h找不到,本来还以为他是系统文件,但后来看了下格式,确定不是系统文件,是原作者写的头文件,目的是为了避免以后重复的头文件书写,提高代码复用在运行《unix环境高级编程》这本书中的程序时,编译器会提示没有apue.h这个头文件。apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数,所以应该将它放入系
2016-01-02 01:57:50
1390
原创 C++primer_拷贝控制之13.26联系控制成员实现类值行为
这是StrBlob.h头文件,所有函数均定义为内联函数#ifndef _MY_STRBLOB_H#define _MY_STRBLOB_H#include<vector>#include<string>#include<initializer_list>#include<memory>#include<stdexcept>using namespace std;clas
2015-12-15 01:23:44
480
原创 C++primer--拷贝控制__构造函数和析构函数的执行时期
#include<iostream>#include<vector>using namespace std;struct X{ X() { cout << "这里是构造函数X()" << endl; } X(const X&) { cout << "这里是拷贝构造函数" << endl; } X&operator =(const X&rhs) { cout << "这
2015-12-14 21:46:58
493
原创 UML初识__基本图元
学习了uml,我觉得总结一下基本的图还是不错的 ,我将它化作了思维导图,放在这里,以供使用。基本uml图就在下面的图中了,这个图主要参考计算机科学导论中,一节简单的内容介绍,对此,如果而现在最新版本的uml是2.0结构,图上的uml构造图,采用的是开源uml软件WhiteStarUml绘制,由于本人水平有限,只能将图绘制简单,一边理解,一边画图,在此,如有错误,请谅解。
2015-12-05 18:22:13
605
原创 C++primer_关联容器之map
针对C++primer中关联容器11.9的问题先来一道程序看看吧。程序如下如题目要求是定义一个map,将单词与一个行号的list关联,list中保存单词出现的行号、现在继续//定义一个map,将单词与一个行号的list关联,list中保存单词出现的行号//map<string,list<int>>word_lineno#include <iostream>#include<fstream>#
2015-12-02 23:14:30
618
原创 一步一步熟知设计模式--初识
设计模式-初识–对于设计模式早已神往已久,有幸得来设计模式:可复用的面向对象软件的基础。决定花点时间学习学习。刚开始,对于这本书有个总体概念,思维导图是利用xmind制作,当然市面上还有其他类似的软件。我觉得下面的还是很棒的,就一直用的这个。对于设计模式,根据两条准则对模式进行划分,第一是目的准则:模式是用来干什么的,完成什么工作的。那么根据其目的可以划分为创建型、结构型、或者行为型 创建型:创建
2015-11-30 17:43:19
488
原创 C++primer_泛型算法-插入迭代器和iostream迭代器
三种插入迭代器的区别? 插入迭代器本质上是一种适配器迭代器,标准库为了保证通用性,并不直接操作容器,而是通过迭代器间接操作容器,因此,算法不具备直接向容器插入元素的能力,而插入器正是帮助算法实现向容器内插入元素的机制。除了 back_inserter,标准库还提供了front_inserter和inserter,三者的差异主要在如何向容器内插入元素back_inserter是通过用push_b
2015-11-26 17:20:16
505
原创 C++primer--lambda表达式-参数绑定之bind
在绑定参数这一节,C++11有了新的特性,由于旧版本的绑定参数的语言特性限制更多,也更复杂,所以标准库定义了两个分别名为bind1st和bind2nd的函数,类似bind,这两个函数接受一个函数作为参数,生成一个新的可调用对象,该对象调用给定函数,并将绑定的参数传递给他。但是这些函数分别只能绑定第一个或第二个参数。由于这些函数局限太强,在新标准中已被弃用(deprecated).所谓被起用的特性就
2015-11-13 18:10:37
636
原创 C++primer--泛型算法初识
在这里,我想说的重点是对于泛型算法,他的特点是不直接操纵容器,这是最主要的特点,这也就意味着他不会直接对容器进行操作。 例如容器的增删改移,算法接受的是迭代器,对迭代以及接收到的迭代器范围元素进行算法处理,而在这个过程中,就算容器发生了元素的增删改移的事件,算法对容器也不负责,主要是迭代器的责任,这也是算法的特殊之处。前两个小节的主要算法如下: #include<iostream>
2015-11-11 02:14:58
220
原创 C++primer--stack处理括号表达式(顺序容器)
这是最后一个大题 9-51,通过栈来处理括号化的表达式,题目算是一道经典的例题,我看代码,特别不容易理解,当然,掌握了关键的几个点,程序调理就很清晰了,如果你在做这道题的时候不理解,这个时候可以通过单步调试,一步一步看这段代码的运行过程,一遍一遍的来,慢慢的就可以知道他到底是怎么运行的了。简易代码如下#include<iostream>#include<string>#include<sta
2015-11-10 00:31:54
1060
原创 黑客帝国之酷炫屏保数字雨
本程序vs2013 测试通过,不排除其他测试通过用例,主要是windows API的应用#include <windows.h> #define ID_TIMER 1 #define STRMAXLEN 25 //一个显示列的最大长度 #define STRMINLEN 8 //一个显示列的最小长度 LRESULT CALLBACK WndProc(HWND, UINT, WPARA
2015-11-09 22:52:28
2268
原创 C++primer_顺序容器之string操作
本例以代码形式整理了C++primer第九章string操作的基本函数方法,其中每个函数 的作用在代码注释中解释到位,若是仍有疑惑,请仔细阅读课本习题#include <iostream>#include<string>#include<vector>using namespace std;void replace_string(string &s, const string &oldVa
2015-11-09 22:08:33
530
原创 对于重载new函数所遇到的问题记录
出现的问题bad_alloc(); 在这里G++里面没有bad_alloc(const char * _Message)构造函数#include<iostream>//#include<memory>#include<cstdlib>using namespace std;void *operator new(size_t size){ void *p = NULL;
2015-11-08 14:39:23
547
原创 VS-注释技巧
以前经验不足,对于注释,虽然知道有几种,但是至始至终在vs里面除了快捷键注释//外就不会其他了。偶尔出现自动化了一下/**/,却不知道怎么弄后来机缘巧合,被我使了出来。//此注释通过手动输入但也只是针对一行如果针对于多行怎么弄? void input_string(string&s) { s.reserve(100); char c;
2015-11-08 02:09:29
818
原创 顺序容器--字符串操作
对于字符串string的额外操作 s.substr(pos,n) 返回一个string包含从pos开始的n个字符串的拷贝。pos默认为0. n的默认值为s.size()-pos,就是拷贝从pos开始的所有字符const char *cp = "Hello world!!!!";char noNuLL[] = { 'H', 'i' };string s1(cp);string s
2015-11-06 01:53:33
545
原创 容器操作--管理迭代器
管理迭代器 –当使用迭代器或指向容器元素的引用时,最小化要求迭代器必须保持有效的程序片段 –由于向迭代器添加元素时或者删除元素的时候可能会使迭代器失效,因此在容器内做插入删除等操作的时必须重新定位迭代器位置对于vector 、deque、string等线性存储结构尤为重要,但是对于链式存储不影响,他的迭代器,指针和引用都不会失效。如果在一个循环中插入或者删除deque、string、或者vec
2015-11-05 18:27:22
593
原创 顺序容器--添加及访问元素
#include<iostream>#include <vector>#include<string>#include <list>#include <deque>#include<forward_list>using namespace std;int main(int argc, char**argv){ list<string>slist; slist.inse
2015-11-05 02:02:13
499
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人