科技新闻

利用select实现一个聊天室程序

倖福魔咒の 提交于 2020-02-29 19:18:55
实验要求 用户默认处于广播模式,一个客户在其客户端发送的消息,其它客户端用户全部可以收到; 程序支持下列命令 /help:显示帮助信息(思考:信息是放在客户端还是服务器端); /quit:用户退出聊天室,同时将退出信息广播给其他用户; /who:显示在线用户; /send 用户名 消息:向指定用户发送点到点消息 程序退出时清理所有的占用资源,包括内存资源、套接字等 支持最大连接数限制; 能够管理用户加入和退出。 实验环境 Red Hat 9 代码 chatserver.c # include <stdio.h> # include <stdlib.h> # include <string.h> # include <sys/socket.h> # include <netdb.h> # include <sys/time.h> # include <sys/types.h> # define PORT 1573 # define BACKLOG 10 # define BUFSIZE 2048 struct client_info { int id ; //Represents the socket the user is now accessing char name [ 256 ] ; int first ; //whether the user is visiting for

NSNotificationCenter

旧街凉风 提交于 2020-02-29 16:47:13
一个 NSNotificationCenter 对象(通知中心)提供了在程序中广播消息的机制,它实质上就是一个通知分发表。这个分发表负责维护为各个通知注册的观察者,并在通知到达时,去查找相应的观察者,将通知转发给他们进行处理。 本文主要了整理了一下 NSNotificationCenter 的使用及需要注意的一些问题,并提出了一些未解决的问题,希望能在此得到解答。 获取通知中心 每个程序都会有一个默认的通知中心。为此, NSNotificationCenter 提供了一个类方法来获取这个通知中心: 1 + (NSNotificationCenter *)defaultCenter 获取了这个默认的通知中心对象后,我们就可以使用它来处理通知相关的操作了,包括注册观察者,移除观察者、发送通知等。 通常如果不是出于必要,我们一般都使用这个默认的通知中心,而不自己创建维护一个通知中心。 添加观察者 如果想让对象监听某个通知,则需要在通知中心中将这个对象注册为通知的观察者。早先, NSNotificationCenter 提供了以下方法来添加观察者: 1 2 3 4 5 - (void)addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *

linux redis 多实例安装

南笙酒味 提交于 2020-02-29 16:40:09
前言: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 redis 是完全开源免费的,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下几个特点: 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 3.Redis支持数据的备份,即master-slave模式的数据备份。 4.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 1、下载Redis wget http://download.redis.io/releases/redis-3.2.4.tar.gz tar xzf redis-3.2.4.tar.gz 2、make编译 cd redis-3.2.4 make 可能会出现以下错误 /bin/sh: cc

springcloud微服务实战_09_消息驱动

家住魔仙堡 提交于 2020-02-29 15:10:36
9.1 spring cloud stream 简介 spring cloud stream 是一个用来为微服务应用提供消息驱动能力的框架. 它可以基于 springboot 来单独的创建独立的,可用于生产的 spring 的应用程序. 它通过使用 spring integration 来连接消息代理中间件以实现消息事件驱动. 它为一些一些供应商的消息中间件产品提供了个性化的自动化配置,并且引入了发布-订阅,消费组以及分区这三个核心概念. 快速入门 下面我们通过构建一个简单的示例来对Spring Cloud Stream有一个初步认识。该示例主要目标是构建一个基于Spring Boot的微服务应用,这个微服务应用将通过使用消息中间件RabbitMQ来接收消息并将消息打印到日志中。所以,在进行下面步骤之前请先确认已经在本地安装了RabbitMQ 构建一个Spring Cloud Stream消费者 创建一个基础的Spring Boot工程,命名为:stream-hello 编辑 build.gradle 中的依赖关系,引入Spring Cloud Stream对RabbitMQ的支持,具体如下: dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation

springcloud微服务实战_08_springcloudbus消息总线

半腔热情 提交于 2020-02-29 15:10:00
8.1 spring cloud bus 消息总线 在微服务架构中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有的微服务实例都连接上来,由于该主题当中产生的消息都会被所有实例监听和消费,所以我们称它为消息总线. 在总线上的各个实例都可以方便的广播一些需要让其他连接在该主题上的实例都知道的消息,例如配置信息的变更或者其他的一些管理操作等. spring cloud bus 就是这样一个消息总线系统, 可以配合 spring cloud config 实现微服务应用配置的动态更新等功能. 消息代理 消息代理 (message broker) 是一种消息验证,传输,路由的架构模式. 它是一个中间件产品. spring cloud bus 目前支持 rabbitmq 和 kafka. 整合 spring cloud bus 我们通过在 config-server 以及 config-client 项目增加 spring cloud bus 依赖, 即将它们加入到消息总线上 在 config sever 上发送 /bus/refresh 请求,并通过 destination 参数指定需要更新配置的服务或者实例. 来源: oschina 链接: https://my.oschina.net/u/4150612/blog/3179468

比原链研究院 | 一种弱同步网络假设下的门限签名系统

孤者浪人 提交于 2020-02-29 14:51:00
近几年门限密码学在区块链系统里开始逐渐被应用,分为门限加密和门限签名,一般见于随机预言机、防审查、减少通信复杂度(HotStuff)、共识网络中防拜占庭(HoneyBadgerBFT 中用于 BA 环节的 common coin)以及作为分布式伪随机数生成器(coin tossing)的重要原语,其优越的资产协同防盗特性也慢慢被新兴数字资产托管机制所重视,今天我们主要讨论公钥密码学(PKC)里的门限签名机制。一种理想的门限签名系统是可以在异步的网络环境里做到容错容灾不可伪造(non-forgeability),并且拥有极度可靠安全的消息传输通道,签名份额的生成和验证是完全非交互式的,在初始密钥阶段具备可以防止拜占庭行为的异步分布式密钥生成(DKG)机制。 与基础签名机制类似,门限签名机制(Threshold Signature Schemes)也分为两部分: 门限密钥生成(Thresh-Key-Gen):基于安全参数构造一种分布式密钥生成协议 DKG,协议运行输出一个共同的公钥 pk 和分属不同参与方各自所有的私钥份额 ski,聚集起满足阈值数量的私钥份额可以构建出真正的私钥 sk。 门限签名(Thresh-Sig):基于分布式通信网络,各参与方通过自己的私钥份额 ski 完成对消息 m 的分布式协作签署并输出最终的可验证签名 Sig(sk, m),这个签名跟单独用 sk

storm是什么

*爱你&永不变心* 提交于 2020-02-29 14:36:49
storm是一种用于实时计算的分布式系统,一般用于流数据分析,处理速度比较快,不单独使用,一般与消息队列一起使用。 主要有spout,用于获取数据源 bolt,用于处理计算数据,类似于hdfs中的mapreduce tuple用于封装的数据,并且传递。 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3176334

架构十三:引入企业级服务总线

时光总嘲笑我的痴心妄想 提交于 2020-02-29 14:18:07
1.简要说明 什么事EGB ESB是Enterprise Service Bus的简称,中文翻译为企业服务总线,企业服务总线是一个实现系统间集成和互联互通的重要技术架构,可以理解为是一种消息和服务集成的中间件平台。 ESB解决了什么问题 ESB为了解决刚才说的问题,就需要保证多个应用系统的服务接入,协议转换,提供可靠的消息传输,数据格式转换,基于内容路由等功能。 ESB的服务接入方式 RPC 远程过程调用(面向方法) SOAP 面向服务的架构(面向消息) REST 资源的状态转变(面向资源) 2.架构图 参考资源 关于ESB(企业服务总线) 来源: CSDN 作者: 谦奕爸爸 链接: https://blog.csdn.net/weinichendian/article/details/104571694

kafka学习(1)了解kafka

我的梦境 提交于 2020-02-29 13:56:23
1.消息中间件\消息系统 将数据从一个系统传递给另一个系统 如果只是单纯的传递数据的方法,有很多,http,rpc,webservice,定时任务 如果接收方,一下子接收不过来那么多数据怎么办? 2.消息系统的分类:点对点,发布-订阅 点对点:主要采用队列的方式,如A->B, 当B消费掉队列中的数据,队列中的数据就会被删除,如果B一直不消费,队列中就会有很多脏数据。 发布-订阅:必须要有主题的概念,主题:一个消息分类 发布者:一般情况下是将消息以推的方式,发送给消息系统。 订阅者:可以采用拉和推的方式从消息系统中拿数据 3.kafka的说明:开发语言是scala,kakafka_2.11-2.2.0 其中,2.11是scala的版本,2.2.0是kafka的版本 4.kafka的架构: broker服务:一般情况下一台主机就一个broker服务,也可以一台主机中有多个broker服务,只要端口不一样,存储路径不一样可以,但是不推荐。 zookeepr服务:管理broker集群,管理元数据。 producer:生产者,发布消息的,这个消息,需要指定主题。 consumer:消费者,当多个消费者订阅同一个主题,那这个主题的同一条消息,会被重复消费。 consumer group:消费组,在同一个消费组中的消费者,对同一条消息,只能消费一次。 offset:某一个消费组

知识点备忘录

烈酒焚心 提交于 2020-02-29 13:42:00
kafaka,消息持久化,duboo,zookeeper,nginx跨域, tcp-ip ,broker,docker,nginx,springmvc,queue,主从,主主,设计模式,序列化,jvm,redis, netty nio; 多线程,泛型,springmvc注解;spring 事务 ;分布式事务;秒杀系统设计;并发编程,锁的使用,死锁,visualvm,visualgc,redis分片, jdk1.8 ,spring4.0新特性,数据同步DataX,rabbitMQ,rocketMQ,单点登录,跨域登录,qmq,hadoop,habse,数据库引擎,spark,luence, GC 标记 - 清除算法,运行时内存结构,hashmap实现细节,静态代理,动态代理,前端:React(facebook),angularjs(google)后端:node ,工具:IntelliJ IDEA,enum的应用,DataGrip数据库工具,脚本语言:paython,shell(任意门),《Java并发编程实践》,lua脚本,nodejs,netty,bootstrap,jenkins,python,spring boot,监控工具,后台管理系统经典模式:rbac,kasai;springboot,Spring Security,MybatisPageInfo, 拦截器 来源: