文章最开头介绍了 获取时间的C/S 模型的代码, 还用了实现了IPV6的版本 unix 介绍了errno值,以及在多进程/多线程中的问题 多线程中不用全局errno,而是用返回值 处理error 详细见第26章 //可以这么写 int n; if( (n=pthread_mutex_lock(&ndone_mutex)) !=0 ) errno=n,err_sys("ptherad_mutex_lock error");// 逗号分割,不用{} 花括号 //当然我们也可以封装下…
13~22章 重要 第2章 传输层: TCP/ UDP / STCP (Stream Control Transmission Protocol) TCP 可靠,有重传机制,SYN队列号 UDP 不可靠 STCP 可靠(还包装了一些其他的) TCP,STCP 协议中 有数据包的序列号SYN,和重传机制, 保证了数据的正确性,可靠性. SYN就是序列号,ACK 是回应 TCP 连接的建立 和终止 2.6.1 TCP建立连接 TCP建立连接有3路分节 ( 容易被攻击,因为server要等待clien…
第13章 守护进程和inetd 超级服务器 syslog() daemon_init() setuid() setgid() 第14章 高级IO 标准I/O函数库,支持3种缓冲 缓冲(读写存储设备(硬盘),或者网络 合并读写,可以大大提高性能, 当然也可以不合并: 每次读写操作就立即 发送到指定输入输出(写进硬盘)) 全缓冲(fully buffering):意味着只在出现下列情况才发生I/O 1.缓冲区满 2.进程显示调用fflush 3.进程调用exit终止自己 标准IO缓冲区的大小 通常为…
此配置实例亲测成功,共勉,有问题大家留言. 环境:VMware 10 + unbuntu 14.04 为了unix进行网络编程,编程第一个unix程序时遇到的问题,不能包含unp.h文件,这个感觉和apue.h差不多,不过这里需要编译源代码,为了以后方便,现在整理如下: 主要有两点一是生成libunp.a这个库,二是得到unp.h.config.h这两个个头文件. 1,安装编译器,为了齐全还是安装一下build-essential sudo apt-get install build-essen…
一.初衷 近期正在做网络计算编程的作业.要求平台为unix/linux,想着Raspberry Pi装的Debian系统也是Linux改的,也应该能够勉强用着,所以就用它来做作业了! 二.说明 先把环境搭了(配置unp.h头文件环境),具体步骤见下文 http://www.voidcn.com/blog/liyuefeilong/article/p-5697814.html 编译出错 ,如上图,解决方案: http://www.cnblogs.com/instorm/p/3415483.html…
下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程.这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端. 这里涉及到了编写代码,因此要 搭建unix网络编程环境 unix系统我没安装,系统不易获得而且也没必要安装unix.用linux是最佳选择.再者我本来就是ubuntu系统,所以就在ubuntu下搭建环境了. 1,安装编译器,为了齐全还是安装一下build-essential sudo apt-get install build-essential 2,下载本书的头…
source code下载地址:unpv13e.tar.gz下载 (也有放一份在google cloud storage) compile 1. ./configure 2. cd lib make 3.     cd libfree 修改inet_ntop.c size_t size; 變成 socklen_t size; make 4.(感覺這一步應該不用做) cd ../libgai    make 5. cd ../intro # build and test a basic clien…
1. 下载源代码:http://www.ituring.com.cn/book/download/60498ad9-ede6-4023-a92b-04d47be23578 2. 解压文件后进入文件根目录并运行以下命令: $ autoconf $ ./configure 3. 进入lib目录并且make 4. 进入libfree目录并且make 在该目录运行时出现错误,错误代码如下: gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o inet_ntop.o…
刚看完 UNIX 第五章内容,我想按照自己的方式将自己获得的知识梳理一遍,以便日后查看!先贴上一段简单的 TCP 服务器端代码: #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <error.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #d…
第一章: Architecture(体系结构) Protocol Layers(协议层) ISO OSI Protocol 每层的功能: 网络层提供交换及路由技术 传输层提供了终端系统之间的数据透明传输,并且负责端到端的错误恢复及流程控制 会话层用来建立.管理.以及终止应用程序之间的连接 表现层提供数据表现差异的独立性(例如加密) 应用层支持应用程序和用户程序 TCP/IP Protocol Gateways(网关) 网关是一个统称,它用于连接起一个或多个网络. 其中的中继器在物理层面上进行操作…
Book Description Learn to develop iPhone and iPad applications for networked enterprise environments The iPhone and iPad have made a powerful impact on the business world. Developers creating iOS apps for the enterprise face unique challenges involvi…
关于网络编程以及socket 等一些概念和函数介绍就不再重复了,这里示例性用python 编写客户端和服务器端. 一.最简单的客户端流程: 1. Create a socket 2. Connect to remote server 3. Send some data 4. Receive a reply  Python Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3…
Fast portable non-blocking network programming with Libevent Fast portable non-blocking network programming with Libevent…
PyTorch Prerequisites - Syllabus for Neural Network Programming Series PyTorch先决条件 - 神经网络编程系列教学大纲 每个人都在发生什么事?欢迎来到PyTorch神经网络编程系列. 在这篇文章中,我们将看看做好最佳准备所需的先决条件. 我们将对该系列进行概述,并对我们将要开展的项目进行预览. 这将使我们对我们将要学习什么以及在系列结束时我们将拥有哪些技能有一个很好的了解. 不用多说,让我们直接了解细节. 此系列需要两个…
原文:https://www.binarytides.com/python-socket-programming-tutorial/ ------------------------------------------------------- Network programming in python   This is a quick guide/tutorial on socket programming in python. Socket programming python is ve…
第二周:神经网络的编程基础(Basics of Neural Network programming) 二分类(Binary Classification) 这周我们将学习神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧.例如有一个包含 \(m\) 个样本的训练集,你很可能习惯于用一个 for 循环来遍历训练集中的每个样本,但是当实现一个神经网络的时候,我们通常不直接使用 for 循环来遍历整个训练集,所以在这周的课程中你将学会如何处理训练集.…
第二周:神经网络的编程基础 (Basics of Neural Network programming) 2.1.二分类(Binary Classification) 二分类问题的目标就是习得一个分类器,它以图片的特征向量(RGB值的矩阵,最后延展成一维矩阵x,如下)作为输入,然后预测输出结果…
<Unix编程艺术>读书笔记(1) 这两天開始阅读该书,以下是自己的体会,以及原文的摘录,尽管有些东西还无法全然吃透. 写优雅的代码来提高软件系统的透明性:(P134) Elegance is a combination of power and simplicity. Elegant code does much with little. Elegant code is not only correct but visibly, transparently correct. It does…
<Linux/Unix系统编程手册>读书笔记1  (创建于4月3日,最后更新4月7日) <Linux/Unix系统编程手册>读书笔记2  (创建于4月9日,最后更新4月10日) <Linux/Unix系统编程手册>读书笔记3  (创建于4月15日) <Linux/Unix系统编程手册>读书笔记4  (创建于4月20日) <Linux/Unix系统编程手册>读书笔记5  (创建于4月22日) <Linux/Unix系统编程手册>读书笔记…
<Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有更深入的研究一定会写出来. 下图为磁盘分区与文件系统的关系 文件系统中的文件(目录)在i-node表上都有唯一的记录(i-node).i-node通过数据块指针指向数据块,这些数据块就是该i-node对应的文件的数据. i-node与数据块的关系如下: 因为Linux支持很多类型的文件系统,但是每种文件系统的…
<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候都会发生缓冲.通过缓冲可以在一定程度上将用户空间与实际的物理设备分离,还可以减少内核访问磁盘的次数. 先来看看关于内核缓冲区高速缓冲:read和write调用在对磁盘文件进行操作的时候不会直接访问磁盘,如下图所示. 例如:write(fd, "abc", 3) write调用会将"…
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h>文件中的常量. 通过cat 命令查看: lancelot@debian:~/Code/tlpi$ cat /usr/include/limits.h /* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Free Software Fo…
<Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组ID. 实际用户ID决定执行者是谁. 有效用户ID决定该进程执行时获取的文件权限.PS:有效用户ID为0的进程拥有超级用户的所有权限. 认识保存设置用户ID(saved set-user-ID)的时候先来看看设置用户ID(set-user-ID)(对于文件的). 如果可执行文件设置了设置用户ID,当该文件执行…
<Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/group. 每个用户都有唯一的用户名和相关的用户标识符(UID).用户可以属于一个或多个组,每个组都有唯一的组名和相关的组标识符(GID). 用户和组的用途为:1.可以确定各种系统资源的所有权:2.对赋予进程访问上述资源的权限加以控制. 首先来看一下密码文件/etc/passwd lancelot@debia…
<Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过malloc来分配内存,而malloc都基于brk()和sbrk(). #include <unistd.h> int brk(void *end_data_segment); int *sbrk(intptr_t increment); brk()系统调用会将program break设置为end_dat…
<Linux/Unix系统编程手册>读书笔记 目录 第6章 这章讲进程.虚拟内存和环境变量等. 进程是一个可执行程序的实例.一个程序可以创建很多进程. 进程是由内核定义的抽象实体,内核为此实体分配执行程序所需的系统资源. 从内核的角度来看,进程是由用户内存空间和内核数据结构组成的.程序的代码和代码中的变量存放在用户内存空间,内核数据结构用于维护进程状态信息. 对于每个进程都有一个唯一的进程号(进程ID)(正数),用来标识系统中的某个程序. getpid(),返回调用该函数的进程的进程ID. #…
<Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于Linux的学习记录,因为觉得自己学得不好,老是写不出东西.但是现在觉得学习记录应该坚持写,慢慢就会有收获,坚持写才可以锻炼自己的表达能力. <Linux/Unix系统编程手册>这本书的评价很高,但是个人觉得翻译得不太好.其实终究是因为自己的英文阅读能力太差和没什么钱,只能看翻译版.看了接近一个月,…
<Linux/Unix系统编程手册>读书笔记 目录 第5章: 主要介绍了文件I/O更深入的一些内容. 原子操作,将一个系统调用所要完成的所有动作作为一个不可中断的操作,一次性执行:这样可以避免竞争状态(两个或多个共享资源的进程或线程的运行结果是一个无法预期的顺序). 以独占方式创建一个文件:对文件是否存在的检查和创建文件属于同一个原子操作.防止新建文件的时候因为检查文件是否存在和新建文件之间发生中断(而其他进程也在新建相同文件名的文件),导致两个进程都认为自己是文件的创建者. 向文件尾部追加数…
从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是不是unix或者和unix的关系是什么这样的问题,只针对对自己有价值的知识点进行分析. 第一节 登录 第一节中,作者叙述了unix下用户登录的基本过程,包括保存用户口令的文件 /etc/passwd , 以及该文件的格式,该口令文件中的登录项的组成结构为由7个冒号分隔的字符串,依次是 : 登录名 加…
原文:<Programming WPF>翻译 第9章 5.默认可视化 虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定义可视化.这个控件应该正好工作,当以它最直接的方式使用时.这意味着控件应该提供一组默认的值. 这些默认的可视化存储在组件的二进制资源中,使用的源文件为theme"generic.xaml.如果你在Visual Studio 2005中创建了一个WPF 控件库的工程,这将自动添加这个文件到你的工程中,并且设置它的Build Act…