Q: 两台服务器A和B的网络配置,
A | B | |
---|---|---|
IP address | 192.168.26.129 | 192.168.26.3 |
Subnet mask | 255.255.255.0 | 255.255.255.224 |
Default gateway | 192.168.26.2 | 192.168.26.2 |
子网掩码本都为255.255.255.0
, B的子网掩码不小心配成了255.255.255.224
。它们还能正常通信吗?
如果看到这个问题能自信回答。下文无须再看。
与扣斗,其乐无穷
Q: 两台服务器A和B的网络配置,
A | B | |
---|---|---|
IP address | 192.168.26.129 | 192.168.26.3 |
Subnet mask | 255.255.255.0 | 255.255.255.224 |
Default gateway | 192.168.26.2 | 192.168.26.2 |
子网掩码本都为255.255.255.0
, B的子网掩码不小心配成了255.255.255.224
。它们还能正常通信吗?
如果看到这个问题能自信回答。下文无须再看。
CocoaPods manages library dependencies for your Xcode projects.
The dependencies for your projects are specified in a single text file called a Podfile. CocoaPods will resolve dependencies between libraries, fetch the resulting source code, then link it together in an Xcode workspace to build your project.
Ultimately the goal is to improve discoverability of, and engagement in, third party open-source libraries by creating a more centralised ecosystem.
python 搭建rest API有两大主流 Django 与 Flask
Django 较重 组件齐全
Flask 较轻,灵活
Representational state transfer 表现层状态转换
Roy Thomas Fielding博士提出的一种网络服务架构的风格。也叫restful。
表现层状态转换是基于超文本传输协议之上的一族约束和属性,是一种设计网络服务的软件构建风格。
客户端发出请求以统一资源标识符
访问和操作网络资源
当前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的Web服务开始采用REST风格设计和实现。
Django rest 框架 django-rest-framework
安装
mysql下载:https://dev.mysql.com/downloads/
navicat下载:https://www.navicat.com.cn/
出现个问题 .bash_profile 添加路径 但是在terminal上无效,还需要手动 设置PATH
PATH=${PATH}:/usr/local/mysql/bin
mysql -u root -p
-u 代表user 这里用户名为root
-p password
使用MYSQL的图形化程序navicat
###
套接字接口的起源
套接字接口是加州大学伯克利分校的研究员在20世纪80年代早期提出来的。因为这个原因,它也常被叫做伯克利套接字。伯克利的研究者使得套接字接口适用于任何底层的协议。第一个实现的就是针对TCP/IP协议的,他们把它包括在Unix 4.2BSD的内核里,并且分发给许多学校和实验室。这在因特网的历史上是一个重大事件。几乎一夜之间,成千上万的人们接触到了TCP/IP和它的源代码。它引起了巨大的轰动,并激发了新的网络和网络互联研究的浪潮
节选自 《深入理解计算机系统》第三版
伯克利 Berkeley
Core Foundation通过CFNetwork提供了封装套接字的CFSocket和CFStream,此外还进一步提供了一些协议的封装,例如CFFTP、CFHTTP等
BSD套接字是XNU中所有网络组件的核心
在macOS app 上创建socket server
发现创建失败
抛出异常代码如下
1 | try checkNotMinus1{ Darwin.bind(ipv4Socket, addrPtr, UInt32(MemoryLayout<sockaddr_in>.size)) |
1 | /// 封装检测是否为-1 |
catch
中的error 为ssocketCreateFailed(1)
也就是errno
为1