`
pjwqq
  • 浏览: 79643 次
社区版块
存档分类
最新评论
文章列表
       1.创建springboot项目       接口: package pj.com.cn.myframework.register; public interface MyPrint { void printDemo(String s); }    实现: package pj.com.cn.myframework.register; import org.springframework.stereotype.Component; @Component public class TestUtil implements MyPrint{ @Overrid ...
    pyqt5与老的pyqt4很多地方不一样,慢慢摸索.     qt使用信号和槽,这个叫法 蛮有意思的,不过原理和其它语言的差不多.     早上研究了下如何自定义信号并处理                  书中(P95),原例是pyqt4,现环境是py3.5+pyqt5,我做了修改     左侧dial转动值,与右侧spinbox的值保持同步.另外,在dial中自定义过零刻度信号,指针到零刻度时发出信号.      import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5 ...
    昨天群里讨论mina的ExecutorFilter,有点不明白的地方,早上看了下mina的ExecutorFilter源码,感觉主要逻辑还是很简单的。     源码头的注释: /** 38 * A filter that forwards I/O events to {@link Executor} to enforce a certain 39 * thread model while allowing the events per session to be processed 40 * simultaneously. You can apply vario ...
     最简单的android推送client模型,特点:读写使用同一线程,逻辑非常简单;断线重连;心跳;发消息等。要求不高的基本可以凑合用了呵呵。   package com.example.nbctts; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.InetSock ...
      AndroidPN客户端分别启动了读和写线程之后,如果有某种写必须等待结果的又如何处理呢?比如客户端向服务端发个消息,要求等待服务端返回后再对本地逻辑做处理。想象一下客户端要求修改密码,PacketWriter把请求write出去后,成功或失败信息肯定是从PacketReader线程中获得,那么如何把二者关联起来呢,看看asmack的做法。      PacketCollector类 public class PacketCollector { private PacketFilter packetFilter; private ArrayBlocki ...
      androidPN服务端用的是mina,略去不表,客户端的socket通讯用的是asmack,期间使用xmpp协议通讯,这个xmpp通用是通用了,但用的是xml格式互发,之间不得不加了一堆的xml解析,大部分篇幅都是干这个,对此没多大兴趣,这里只是简单记录一下阅读源码中client与server的阻塞读写,寻找可以借鉴之处。      客户端启动之后,负责管理连接的XMPPConnection初始化: if (isFirstInitialization) { packetWriter = new PacketWriter(this); ...
  (原文在zguide,有兴趣慢慢看)     提升REQ/REP模式的客户端侧可靠性,由于在此模式下,客户端与服务端严格遵循你一下我一下的乒乓规则,当然现实中不可能这么配合,比如服务器突然挂了,客户端就会阻塞在socket.recv(),然后过段时间,服务器又ok了,客户端也自动重连。但是有的场景客户端需要及时知道服务端状况而不是在那一直等,需要返回个错误之类。     手册提供这种方法:    Client-side Reliability (Lazy Pirate Pattern)     不知道作者起这名字有啥含义,海盗?客户端代码: import sys impor ...
    前面讲过zmq的device,用来充当客户端与服务端的中间件,以增加灵活性,让服务端也变成可插拔。然而device是zmq封装好的,怎样才能一窥内部的数据流呢?看图     一看这图就明白了,MonitoredQueue在创建Queue同时,还提供第3个PUB socket来发布途经这个Queue的进出信息。 import time import zmq from zmq.devices.basedevice import ProcessDevice from zmq.devices.monitoredqueuedevice import MonitoredQueue fr ...
  Polling and Sockets   一个线程中有多个sokect,同时需要收发数据,zmq提供polling sockets实现,不用在recv()时阻塞。   下面这个例程中创建一个command server来告诉worker何时退出,worker从Publisher获得订阅并打印,('exit'时退出)。     1.PUSH server ,命令服务 import zmq import time import sys import random from multiprocessing import Process def server_push( ...
    Queue device     这是一个位于客户端可服务端的中间件,拓展了之前的REQ/REP模式,图   通过这种方式,REQ socket和REP socket之间不需要明确绑定了,大家都绑定到Queue这个device就可以了,Queue device来处理请求的发送与返回,灵活度大大提升(不这样估计没人用),看看代码                        Queue-device: #coding=utf-8 import zmq def main(): try: context = zmq.Context(1)#IO线 ...
   这个是 PUSH/PULL 模式,又叫做pipeline管道模式,取其一去不回头之意,一推一拉,数据滚滚向前。    这种socket封装的原本用意呢,是把数据交给一组worker端干活,PUSH会把任务均匀的(这个好像是zmq的招牌)的分配给下游的worker们,保证大家都有活干,图: Producer:产生代处理数据,并将数据push出去 consumer(worker):pull到来自producer的数据,处理后,push出去 resultcolltor:pull到consumer的数据处理结果 Producer: import time import zmq ...
    Pub/Sub pattern  发布/订阅模式 发布订阅模式:发布方不用管理发布给哪个订阅方(看到这句话感觉不太好),有2种场景   场景2比较常见,多客户端向一个服务端订阅,场景1类似与REP/REQ的多服务器模式,避免单个PUB撑不住,(2个PUB的数据都能收到) pub-server.py port = '5556' pub_server_name = 'pub-server01' context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind('tcp://*:%s'%por ...
  REP/REQ模式就是最常见的Client/Server模式,zmq有亮点,翻译下:     特点 1. 和pair模式不同的是这种模式下客户端socket可以连接多个server           2. 客户端请求会被交替发送到server组的server     要注意的2个地方:           1. 客户端的 socket zmq.REQ 发送后会被阻塞直到新消息到来           2. 服务端的 socket zmq.REP 会阻塞直到新请求到来    然后保证:Each Request/Reply is paired and has to be su ...
    今天学习下pyzmq,感觉怎么样呢,看了官网开头,记录之,基本上也可以算个翻译      Exclusive pair pattern 特点:            1. 双向通讯            2. 套接字无状态(封装的很好吧)            3. 只能有一个对等连接(这能干嘛用,似乎没啥用)            4. 服务端监听,客户端连接 然后:你根本不用考虑message接收的完整不完整,你照做就是了!(原文) 官方example在此: pairserver.py 1 2 3 4 5 6 7 ...
   学python没多久,遇到一个解析xml的需求,边学边练,用的是ElementTree,感觉没有说的那么方便,也许E文不好,看漏api,root.findall()搞的象正则表达式,瞎了。希望知道的朋友告诉我       题目这样,比如有个xml: <?xml version="1.0" encoding="UTF-8"?> <students> <student no="2009081097"> <name>Hongten</name& ...
Global site tag (gtag.js) - Google Analytics