sub

Linux下使用ZMQ实践“发布-订阅”模型

匿名 (未验证) 提交于 2019-12-02 21:59:42
一、背景 二、相关知识 2.1 ZMQ_PUB ZMQ_PUB A socket of type ZMQ_PUB is used by a publisher to distribute data. Messages sent are distributed in a fan out fashion to all connected peers. The zmq_recv(3) function is not implemented for this socket type. When a ZMQ_PUB socket enters the mute state due to having reached the high water mark for a subscriber, then any messages that would be sent to the subscriber in question shall instead be dropped until the mute state ends. The zmq_send() function shall never block for this socket type. ZMQ_PUB为发布端socket类型,用于消息分发,消息以扇出的方式分发到各个连接端上。该socket类型仅支持zmq_send进行发送

Spring4学习回顾之路11-AOP

南楼画角 提交于 2019-12-02 21:42:07
  Srping的核心除了之前讲到的IOC/DI之外,还有一个AOP(Aspect Oriented Programming:面向切面编程):通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要的功能: 日志记录,性能统计,安全控制,事务处理,异常处理等等。   在介绍AOP之前,先介绍动态代理;代理设计模式的原理:使用一个 代理将对象包装起来, 然后用该代理对象取代原始对象,任何对原始对象的调用都要通过代理,代理对象决定是否以及何时将方法调用转到原始对象上。 案例:基于接口实现的动态代理:JDK动态代理 首先定义一个接口,用于运算的Operation.java package com.lql.proxy; /** * @author: lql * @date: 2019.10.29 * Description: */ public interface Operation { //加法 int add(int i,int j); //减法 int sub(int i,int j); } 再来定义实现类OperationImpl.java package com.lql.proxy; /** * @author: lql * @date:

Oracle排名函数(Rank)实例详解

拈花ヽ惹草 提交于 2019-12-02 15:01:29
这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下 --已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:dense_rank,rank ·查询原始数据:学号,姓名,科目名,成绩 select * from t_score S_ID S_NAME SUB_NAME SCORE 1 张三 语文 80.00 2 李四 数学 80.00 1 张三 数学 0.00 2 李四 语文 50.00 3 张三丰 语文 10.00 3 张三丰 数学   3 张三丰 体育 120.00 4 杨过 JAVA 90.00 5 mike c++ 80.00 3 张三丰 Oracle 0.00 4 杨过 Oracle 77.00 2 李四 Oracle 77.00 ·查询各学生科目为Oracle排名(简单排名) select sc.s_id,sc.s_name,sub_name,sc.score, rank() over ( order by score desc ) 名次 from t_score sc where sub_name='Oracle' S_ID S_NAME SUB_NAME SCORE 名次 4 杨过 Oracle 77.00 1 2 李四 Oracle 77.00 1 3 张三丰 Oracle 0

构造方法详解。

我们两清 提交于 2019-12-02 14:36:13
重载构造方法 、默认构造方法、子类调用父类的构造方法、构造方法的作用域、构造方法的访问级别 在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。构造方法必须满足以下语法规则: (1) 方法名必须与类名相同。 (2)不要声明返回类型。 (3)不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承,所以用final和 abstract修饰没有意义。构造方法用于初始化一个新建的对象,所以用static修饰没有意义。多个线程不会同时创建内存地址相同的同一个对象,因此用synchronized修饰没有必要。此外,Java语言不支持native类型的构造方法。 在以下Sample类中,具有int返回类型的Sample(int x)方法只是个普通的实例方法,不能作为构造方法: public class Sample { private int x; public Sample() { // 不带参数的构造方法 this(1); } public Sample(int x) { //带参数的构造方法 this.x=x; } public int Sample(int x) { //不是构造方法 return x++; } } 以上例子尽管能编译通过

通过窗口hwnd获取hInstance

余生颓废 提交于 2019-12-02 12:46:23
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Const GWL_HINSTANCE = (-6) Private Sub Command1_Click() MsgBox CStr(GetWindowLong(Form1.hwnd, GWL_HINSTANCE)) + vbCrLf + CStr(App.hInstance) End Sub 来源: https://blog.csdn.net/yyzhan12ysx/article/details/102761442

C语言中的4种强制类型转换!

半世苍凉 提交于 2019-12-02 11:39:35
前言 在C语言中,我们需要做类型转换时,常常就是简单粗暴,在C++中也可以用C式强制类型转换,但是C++有它自己的一套类型转换方式。 C式的显示类型转换 先来说说C式的强制类型转换,它的用法非常简单,形如下面这样 Type b =111; Typea a = (Typea)b; 只需要用括号将你要转换的类型扩起来,放在要转换的变量前面即可。 举个例子: #include<stdio.h> intmain(void) { inta =0x01020304; char*b = (char*)&a; inti =0; for(;i <4;i++) { printf("%02x\n",b[i]); } return0; } 编译运行输出结果: 04 03 02 01 如果你好奇为什么会是这样的结果,请参考 《字节序的那些事》 。 C++ 四种强制类型转换。 当然,C++也是支持C风格的强制转换,但是C风格的强制转换可能带来一些隐患,让一些问题难以察觉.所以C++提供了一组可以用在不同场合的强制转换的函数。 const_cast , static_cast , dynamic_cast , reinterpret_cast const_cast 常量指针被转化成非常量的指针,并且仍然指向原来的对象; 常量引用被转换成非常量的引用,并且仍然指向原来的对象; const_cast一般用于修改指针

c++11 regex

时光怂恿深爱的人放手 提交于 2019-12-02 10:58:08
c++ regex 库,通过 #include <regex> 来使用,是c++11标准引入的功能。 regex 库提供三个最基本的正则表达式函数 regex_match -> 完全匹配 regex_search -> 局部匹配 regex_replace -> 匹配后替换 regex 有几个基本的类(其实都是模板类) : basic_regex -> 存储正则表达式 match_results -> 存储匹配结果们 sub_match -> 一个独立的比对结果,可以无感觉转化为字符串 regex_iterator -> 迭代执行regex_search的语法糖 basic_regex 通过传入正则表达式来构建,默认是ECMAScript格式,也支持其他的比如POSIX 格式,grep 格式等,其他格式需要通过第二个参数指定就是。 // explicit basic_regex ( const charT* str, flag_type flags = ECMAScript ); std : : regex seventh ( "[0-9A-Z]+" , std : : regex : : ECMAScript ) ; match_results 存储匹配结果(也就是n个sub_match),如果匹配失败,就是空的,否则,数组的第0位置是完整的匹配原始字符串

Sparksql 日期加减函数

独自空忆成欢 提交于 2019-12-02 10:55:15
spark sql 日期加减,date_sub,date_addval dateDF=spark.range(10) .withColumn("today",current_date()) .withColumn("now",current_timestamp()) dateDF.createOrReplaceTempView("dateTable") dateDF.printSchema() dateDF.select(date_sub(col("today"),5),date_add(col("today"),5)).show(1) spark.sql("select date_sub(today,5),date_add(today,5) from dateTable").show(1) 来源: https://www.cnblogs.com/ssqq5200936/p/11742290.html

Task04:字符串与序列(1day)

独自空忆成欢 提交于 2019-12-02 06:49:50
我们准备利用17天时间,将 Python 基础的刻意练习分为如下任务: Task01:变量、运算符与数据类型(1day) Task02:条件与循环(1day) Task03:列表与元组(2day) Task04:字符串与序列(1day) Task05:函数与Lambda表达式(2day) Task06:字典与集合(1day) Task07:文件与文件系统(2day) Task08:异常处理(1day) Task09:else 与 with 语句(1day) Task10:类与对象(2day) Task11:魔法方法(2day) Task12:模块(1day) 摘要: 此章节是 对pyhon 字符串 方法的一些操作 list 的一些内置方法 Python基础语法 1. 字符串 字符串的定义 Python 中字符串被定义为引号之间的字符集合。 Python 支持使用成对的 单引号 或 双引号。 t1 = 'i love Python!' print ( t1 , type ( t1 ) ) # i love Python! <class 'str'> t2 = "I love Python!" print ( t2 , type ( t2 ) ) # I love Python! <class 'str'> print ( 5 + 8 ) # 13 print ( '5' + '8'

Go语言基础之函数

。_饼干妹妹 提交于 2019-12-02 06:49:20
Go语言基础之函数 函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。 一 、函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 1.1 函数定义 Go语言中定义函数使用 func 关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用 , 分隔。 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用 () 包裹,并用 , 分隔。 函数体:实现指定功能的代码块。 我们先来定义一个求两个数之和的函数: func intSum(x int, y int) int { return x + y } 函数的参数和返回值都是可选的,例如我们可以实现一个既不需要参数也没有返回值的函数: func sayHello() { fmt.Println("Hello 沙河") } 1.2 函数的调用 定义了函数之后,我们可以通过 函数名() 的方式调用函数。 例如我们调用上面定义的两个函数,代码如下: func main() { sayHello() ret := intSum(10, 20)