fd

情人节就要到了,教你如何用代码去表白!

有些话、适合烂在心里 提交于 2020-02-13 17:37:27
掐指一算 明天就是情人节了! 还没来得及准备的人 要么被打断腿,要么注孤生 不过目测已经有一大批直男 已经为送什么礼物发愁了 还在送掺杂着布偶的鲜花束? 还在发五块二毛的大红包? 有没有想过为啥别人家的男朋友 总能甩你八百条街? 当“昂贵的鲜花+浪漫的烛光晚餐”的标配表白方式早已落入俗套,身为程序员的我们,不应该拥有自己专属的浪漫吗? 是用代码表达爱意,或是用base64加密你对她的告白,还是以她的名字为域名,为她编写专属于她的网站? "我写过最得意的代码,就是让你答应做我女朋友的那串代码。" 撩妹可不能全靠一张嘴 礼物一定要走心又有心! 恋习Python教你一招 搞定速速开撩! 福利时刻 (1)静态心 import matplotlib.pyplot as plt import numpy as np t=np.arange(0,2*np.pi,0.1) x=16*np.sin(t)**3 y=13*np.cos(t)-5*np.cos(2*t)-2*np.cos(3*t)-np.cos(4*t) plt.plot(x,y,color="red") plt.show() 运行结果为: (2)动态心 import turtle from turtle import * def curvemove(): for i in range(200): right(1) forward(1)

PHP中on回调的实现(十六节)

三世轮回 提交于 2020-02-13 12:54:39
  各位好,我是老李。和老李一同完成《PHP网络编程》,虽然我知道实际上从头到尾可能只有我一个人在搞。我告诉你们一定要好好在家好好学习、远程工作,不要折腾地自己最后连班都没法上了,要好好学习、要不断学习、要终身学习。   上个章节我送了大家一篇番外:   同步异步阻塞非阻塞,了解一下?(十三节)   今天这篇是和上篇番外紧密结合的,因为我答应大家了,要通过今天这一篇中的代码表演一波儿啥叫阻塞、啥叫非阻塞、啥叫异步非阻塞...这年月,听到的异步非阻塞次数太TM多了,似乎每个高IO的程序都离不开这个组合词!   这个词语,席卷八荒,说出去拉风又嚣张   所以呢,今天我们搞一个非常有意思的科研方向,那就是Workerman里的那种on是咋实现的。作为一个24k的泥腿子,php-fpm才是星光大道,复制粘贴是拿手兵器,composer install是撒手锏,CURD一把梭,PHP里的一大坨函数几乎都是[ 同步阻塞 ],复制粘贴起来毫无后顾之忧,上来就是干,最后在在业务里随手搞两个sleep( one ),以后优化响应速度就是这么轻松简单,So easy!哪里不会点哪里~   但是用Workerman或者Nodejs,on是一定避免不了的,天生丽质的[ 异步非阻塞 ]注定会让程序写法变成这样。因为调用方(研究僧)自己不会主动获取数据,靠的是被调用方(阿梅)的通知,所以调用方(研究僧

java nio多路复用 selector

房东的猫 提交于 2020-02-12 19:36:59
文章目录 多路复用selector 多路复用 unix内核中的select/epoll/poll select poll epoll 代码样例 多路复用selector 多路复用 I/O多路复用,I/O是指网络I/O, 多路指多个TCP连接(即socket或者channel),复用指复用一个或几个线程;简单来说:就是使用一个或者几个线程处理多个TCP连接;最大优势是减少系统开销小,不必创建过多的进程/线程,也不必维护这些进程/线程;多路复用分为三种形式select/epoll/poll,在 Java 中, Selector 这个类是 select/epoll/poll 的外包类 , 在不同的平台上, 底层的实现可能有所不同, 但其基本原理是一样的, 其原理图如下所示: unix内核中的select/epoll/poll select 函数: int select ( int maxfdp1 , fd_set * readset , fd_set * writeset , fd_set * exceptset , const struct timeval * timeout ) 返回值:就绪描述符的数目,超时返回 0 ,出错返回 - 1 maxfdp1:描述符个数 * readset、 * writeset、 * exceptset:读、写和异常条件的描述字 * timeout

2.1/2.2字符的编码方式及显示

非 Y 不嫁゛ 提交于 2020-02-11 00:06:17
1.字符集 ASCII码 一字节;包括英文数字这些符号 GB2312编码 汉字为两字节;与ASCII码兼容,后来扩展汉字又有了GBK编码 Unicode编码 包括中,日,韩,英文等格式;有Utf-32,Utf-16,Utf-8三种格式 Utf-32:每个字符都采用4字节(32bit),缺点浪费空间 Utf-16(错一个字符则整个乱码):每个字符的长度为2字节(16bit),常用 Utf-8(容错能力强):每个字符的长度为1~4字节,越常用的字符越短 一般一个文件的开头都会有标志,通过16进制编辑文件便可看到 Utf-8: EF BB BF Utf-16:FE FE Utf-32:FF FE 没有前缀的表示ANSI格式(GBK) 2.文件的格式不同,执行的结果也不同 3.如何解决文件格式不同,编码也不同的问题? eg: gcc -finput-charset=GBK -fexec-charset=UTF-8 -o utf-8_2 ansi.c 告诉gcc编译器该文件是GBK编码,需要转换为UTF-8编码后在编译 注: -finput-charset= ? // 表示源文件的编码格式,默认UTF-8 -fexec-charset= ? // 表示可执行程序里的字以什么方式表示,默认UTF-8 4.点阵显示 说明: 这里字符选用8*16(内核中有),汉字HZK16*16(自己找库) 链接

c&cpp中的#error用法

我与影子孤独终老i 提交于 2020-02-10 11:01:38
在c或者c++中,可以通过#error来实现编译期的报错功能,看下面一个示例: #if defined(F_FULLFSYNC) /* In Mac OS X >= 10.3 this call is safer than fsync() (it forces the disk's cache and guarantees ordered writes). */ if (!(res= fcntl(fd, F_FULLFSYNC, 0))) break; /* ok */ /* Some file systems don't support F_FULLFSYNC and fail above: */ DBUG_PRINT("info",("fcntl(F_FULLFSYNC) failed, falling back")); #endif #if defined(HAVE_FDATASYNC) && HAVE_DECL_FDATASYNC res= fdatasync(fd); #elif defined(HAVE_FSYNC) res= fsync(fd); #elif defined(_WIN32) res= my_win_fsync(fd); #else #error Cannot find a way to sync a file, durability in danger

ESP8266 SDK 2.0 学习记录7

守給你的承諾、 提交于 2020-02-08 20:22:08
TCPServer #include "esp_common.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "lwip/sockets.h" #include "lwip/dns.h" #include "lwip/netdb.h" #include "espressif/espconn.h" #include "espressif/airkiss.h" #include "tcpserver.h" #define SERVERADDR "192.168.0.106" #define SERVERPORT 6008 void ATaskTcpServer(void *pvParameters) { int iVariableExample = 0; int fd = -1; int cfd = -1; int NetTimerOut = 5000; int ret; struct sockaddr_in serverAddr; struct sockaddr ClientAddr; socklen_t ClientAddrlen = sizeof(struct sockaddr); char Tcpmsg[48]; STATION_STATUS StaStatus; //等待连接wifi

ESP8266 SDK 2.0 学习记录6

谁说胖子不能爱 提交于 2020-02-08 18:46:59
TCPClient #define SERVERADDR "192.168.0.106" #define SERVERPORT 6008 void ATaskTcpClient(void *pvParameters) { int iVariableExample = 0; int fd = -1; int NetTimerOut = 5000; int ret; struct sockaddr_in serverAddr; char Tcpmsg[48]; STATION_STATUS StaStatus; do { StaStatus = wifi_station_get_connect_status(); vTaskDelay(100); } while (StaStatus != STATION_GOT_IP); fd = socket(PF_INET, SOCK_STREAM, 0); if (fd == -1) { printf("get socket fail!\n"); vTaskDelete(NULL); } setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &NetTimerOut, sizeof(int)); memset(&serverAddr, 0, sizeof(serverAddr)); serverAddr.sin

ESP8266 SDK 2.0 学习记录5

岁酱吖の 提交于 2020-02-08 18:05:48
UDPServer 和Client不同的是要实现blink功能 #define SERVERADDR "192.168.0.106" #define SERVERPORT 6008 void ATaskUdpServer(void *pvParameters) { int iVariableExample = 0; int fd = -1; int NetTimerOut = 5000; int ret; struct sockaddr_in serverAddr; struct sockaddr from; socklen_t fromlen = sizeof(struct sockaddr); char udpmsg[48]; STATION_STATUS StaStatus; do { StaStatus = wifi_station_get_connect_status(); vTaskDelay(100); } while (StaStatus != STATION_GOT_IP); fd = socket(PF_INET, SOCK_DGRAM, 0); if (fd == -1) { printf("get socket fail!\n"); vTaskDelete(NULL); } setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO,

对flock的理解

╄→гoц情女王★ 提交于 2020-02-08 13:22:08
有时候需要保证同时只能有一个进程存在, 类似singleton的概念. 这时候简单方法就是对文件尝试加锁, 加锁成功就继续, 否则退出 函数定义如下: int flock(int fd, int operation); // 第一个参数是fd man-pages中对fd参数说明如下: Locks created by flock() are associated with an open file table entry. This means that duplicate file descriptors (created by, for example, fork(2) or dup(2)) refer to the same lock, and this lock may be modified or released using any of these descriptors. 锁是和内核的file-entry绑定, 因此指向相同file-entry的fd是共享一个锁的. 比如父子进程, 或者通过dup复制的fd, 由于指向相同file-entry, 因此共享一个锁. 这里就有一个问题: 假设两个进程A和B. 分别open lockfile. 两个fd指向不同的file-entry. 此时A和B进程对fd加锁, 锁并没有关联到相同file-entry. 可以推断,

网络编程并发编程面试题

泄露秘密 提交于 2020-02-07 23:47:48
网络编程,并发编程 面试题1. 简述 OSI 七层协议。应用层与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。表示层这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。会话层它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。传输层这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。网络层这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址