bind

Python 黏包及黏包解决方案

巧了我就是萌 提交于 2020-12-08 08:33:05
粘包现象      说粘包之前,我们先说两个内容,1.缓冲区、2.windows下cmd窗口调用系统指令    1 缓冲区(下面粘包现象的图里面还有关于缓冲区的解释)           每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。 write() / send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。 TCP协议独立于 write() / send() 函数,数据有可能刚被写入缓冲区就发送到网络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,这取决于当时的网络情况、当前线程是否空闲等诸多因素,不由程序员控制。 read() / recv() 函数也是如此,也从输入缓冲区中读取数据,而不是直接从网络中读取。 这些I / O缓冲区特性可整理如下: 1.I/ O缓冲区在每个TCP套接字中单独存在; 2.I/ O缓冲区在创建套接字时自动生成; 3 .即使关闭套接字也会继续传送输出缓冲区中遗留的数据; 4 .关闭套接字将丢失输入缓冲区中的数据。 输入输出缓冲区的默认大小一般都是 8K,可以通过 getsockopt() 函数获取: 1 .unsigned

AngularJS参数绑定 --AngularJS

牧云@^-^@ 提交于 2020-12-07 04:21:05
AngularJS参数绑定有三种方式。第一种插值表达式“{{}}”表示,第二种在标签中使用ng-bind属性表示,第三种针对input框(标签)的ng-module属性表示。针对三种参数绑定方式,设定了以下三个小案例。 1、 插值表达式 案例核心代码: demo01.html: <!DOCTYPE html> <html lang="en" ng-app="myapp" > <head> <meta charset="UTF-8"> <title>AnjularJS数据绑定-插值表达式</title> </head> <body> <div ng-controller="demo01Controller" > <span> {{name}} </span> <span> {{num1+num2}} </span> <span> {{num1*num2}} </span> <span> {{obg.address}} </span> <span> {{address[0]}} </span> <ul> <li ng-repeat="item in address track by $index"> {{item}} </li> </ul> <ul> <li ng-repeat="item in university"> {{item.name}} <ul> <li ng-repeat

QQ版网络聊天室完整项目+MFC\C++\C(更改服务器IP可实现异机沟通)

江枫思渺然 提交于 2020-12-06 10:31:23
QQ版网络聊天室完整项目+MFC\C++\C 资源地址1 资源地址2 项目简介 服务器端部分代码 客户端响应部分代码 数据库连接 理论~ 实例展示 资源地址1 https://github.com/Msrumo/QChatRoom 资源地址2 https://gitee.com/it-future/QChatRoom 项目简介 声明::使用服务器IP来实现不同客户端的通信,本代码可能会有些许问题,需自行调试使用! 并不说明这个源码可以直接成功实现网络通信!仅本地局域网不出错! 设计功能 : 1.ChatRoom模仿QQ界面实现局域网消息互通; 2.用户注册获得ID,这些将保存在mysql数据库中,可以自定义头像、昵称等; 3.登录后,选中私信模式,在好友列表中可以双击选中某位好友,来进行私信聊天; 4.群聊世界,可以跟局域网内所有在线用户交流; 5.用户主界面额外设置了Bing网页搜索功能,供用户使用。 初始化套接字: Socket创建套接字 :af地址族 tcp/IP都是 AF_INET 流式套接字是TCP,数据包套接字是UDP 0 选择合适协议 bind 本地地址与套接字关联起来 套接字,指针地址sockaddr(包含了IP地址,端口号),长度 创建线程 Createthread 第三个是线程函数 第4个为线程传入参数 LP代表长指针(使用结构体来传入多个值) 线程函数

flask-sqlalchemy组件

房东的猫 提交于 2020-12-06 07:28:58
一、简介   flask本身没有内置orm框架,需要依赖第三方模块,这里介绍flask-sqlalchemy,而flask-sqlalchemy是一个flask的扩展,本质上是对sqlalchemy的进一步封装,当然也需要sqlalchemy的支持,使用起来和本来的sqlalchemy的orm是一样的。本文主要介绍sqlalchemy的使用以及如何在flask中是用orm。 二、sqlalchemy   SQLAlchemy是 Python 编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。图示: 基本使用 安装: pip3 install sqlalchemy 注:SQLAlchemy无法修改表结构,如果需要可以使用SQLAlchemy开发者开源的另外一个软件Alembic来完成,官网doc:http://docs.sqlalchemy.org/en/latest/core/expression_api.html 原生SQL 使用 Engine/ConnectionPooling/Dialect 进行数据库操作,Engine使用ConnectionPooling连接数据库,然后再通过Dialect执行SQL语句 # !/usr/bin/env python3 # _

RestFul风格接口示例

回眸只為那壹抹淺笑 提交于 2020-12-06 05:26:33
REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想 Rest架构的主要原则 网络上的所有事物都被抽象为资源 每个资源都有一个唯一的资源标识符 同一个资源具有多种表现形式(xml,json等) 对资源的各种操作不会改变资源标识符 所有的操作都是无状态的 符合REST原则的架构方式即可称为RESTful 什么是Restful: 对应的中文是rest式的;Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构). 为什么会出现Restful 在Restful之前的操作: http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据 http://127.0.0.1/user/save POST 新增用户 http://127.0.0.1/user/update POST 修改用户信息 http://127.0.0.1/user/delete GET

Bitcoin 使用及配置记录

喜你入骨 提交于 2020-12-06 03:13:54
常用配置 bitcoin-qt.exe -testnet -printtoconsole -conf=D:\Bitcoin\bitcoin.conf -datadir=D:\Bitcoin\Data bitcoin-qt.exe -testnet -printtoconsole -conf=D:\Bitcoin\bitcoin-0.15.2\bin\bitcoin.conf -datadir=D:\Bitcoin\Data bitcoin-cli -rpcport=18332 -rpcuser=rpcuser -rpcpassword=rpcpassword getblockchaininfo bitcoin-cli -rpcport=18333 -rpcuser=rpcuser -rpcpassword=rpcpassword getinfo bitcoin-cli -rpcconnect=192.168.101.142 -rpcport=8332 -rpcuser=rpcuser -rpcpassword=rpcpassword getblockchaininfo 配置文件如下: ## ## bitcoin.conf configuration file. Lines beginning with # are comments. ## # Network-related

Rabbitmq---消息队列

随声附和 提交于 2020-12-05 05:13:03
一 . MQ:message queue   消息队列的作用:    1 通信解耦   2 高峰限流 原理分析: 一开始,认证系统是强耦合的,A系统传递认证系统消息接收计算结果的过程中   1 传给认证系统   2 认证系统计算   3 返回计算结果   4 读取A系统逻辑 只要当前计算没有完成,对于认证系统来讲消耗线程资源.并存在强耦合现象 有了消息队列,每一次连接不管是生成消息还是消费消息,都有各自的逻辑与其他逻辑无关--通信解耦    通信强耦合的情况下高峰访问拒绝,达到了高峰限流的效果 二 . Rabbitmq    1 rabbitmq的结构(组件)    外部: 生产者和消费者     生产者:对于消息来讲,生成消息客户端是生产者     消费者:消费消息执行消费后的逻辑的客户端是消费者    客户端可以使用各种其他技术或者语言 都不是rabbitmq自身的技术    2 rabbitmq内部组件    connection: 基于底层通信逻辑的长连接    channel: 基于长连接创建的;可以在一次长连接的基础上多次频繁的创建和销毁,占用资源非常少    交换机Exchange 优点:并发能力高 并发稳定      客户端连接发送消息,多种情况都需要并发的发送,如果从客户端执行并发的发送逻辑,rabbitmq的并发能力就限制在了客户端    

mysql c api (总结)

人盡茶涼 提交于 2020-12-05 03:17:12
MySQL_C_API 编程实践 1MySQL C API helloWorld 1.1 有关 mysqlclient 库 C APIs包含在 mysqlclient 库文件当中,与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询 1.2helloworld 应用程序编写 int main() { int ret = NULL; MYSQL mysql; MYSQL *connect; //MYSQL_RES *res; //MYSQL_ROW row; //char *query; //int t, r; /* if (mysql_library_init(0, NULL, NULL)) { fprintf(stderr, "could not initialize MySQL library\n"); exit(1); } */ mysql_init(&mysql); /* MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) */ /* unsigned

访问权限控制系统|全方位认识 mysql 系统库

巧了我就是萌 提交于 2020-12-04 15:53:46
在上一期《权限系统表|全方位认识 mysql 系统库》中,我们针对mysql 系统库中的权限表做了一个简单的认识,本期我们将在上一期的基础上详细介绍MySQL 的访问权限控制系统,下面请跟随我们一起开始 mysql 系统库的系统学习之旅吧。 1、访问权限控制系统概述 什么是访问权限控制系统? MySQL的mysql 系统库提供了user、db、tables_priv、columns_priv、procs_priv、proxies_priv几张表用于存放不同权限范围的用户帐号相关的数据,这些表共同组成了MySQL 的访问权限系统。 MySQL权限系统的主要功能是对从给定主机连接到MySQL Server的用户进行身份验证,并校验该用户在该Server中的数据库对象访问的权限(如SELECT,INSERT,UPDATE和DELETE),另外,还包括管理匿名用户访问和授予特定的MySQL权限的功能(如执行 LOAD DATA INFILE 语句和管理操作权限等)。 MySQL访问权限系统的用户界面由几个SQL语句组成:如CREATE USER、GRANT和REVOKE。 在Server内部,MySQL 将权限信息存储在mysql数据库的权限表中。MySQL Server在启动时将这些表的内容读入内存,后续针对用户的访问控制决策基于权限表的内存副本实现。

访问权限控制系统|全方位认识 mysql 系统库

喜夏-厌秋 提交于 2020-12-04 15:03:55
在上一期《权限系统表|全方位认识 mysql 系统库》中,我们针对mysql 系统库中的权限表做了一个简单的认识,本期我们将在上一期的基础上详细介绍MySQL 的访问权限控制系统,下面请跟随我们一起开始 mysql 系统库的系统学习之旅吧。 1、访问权限控制系统概述 什么是访问权限控制系统? MySQL的mysql 系统库提供了user、db、tables_priv、columns_priv、procs_priv、proxies_priv几张表用于存放不同权限范围的用户帐号相关的数据,这些表共同组成了MySQL 的访问权限系统。 MySQL权限系统的主要功能是对从给定主机连接到MySQL Server的用户进行身份验证,并校验该用户在该Server中的数据库对象访问的权限(如SELECT,INSERT,UPDATE和DELETE),另外,还包括管理匿名用户访问和授予特定的MySQL权限的功能(如执行 LOAD DATA INFILE 语句和管理操作权限等)。 MySQL访问权限系统的用户界面由几个SQL语句组成:如CREATE USER、GRANT和REVOKE。 在Server内部,MySQL 将权限信息存储在mysql数据库的权限表中。MySQL Server在启动时将这些表的内容读入内存,后续针对用户的访问控制决策基于权限表的内存副本实现。