术语
Tensor —— 张量
TensorFlow 的核心数据单位就是张量。
- 张量的定义:张量可看做是由原始值组成的任意维度数组。张量的阶就是它的维度。
- 张量的形状(shape):这里形状是Tensorflow的专用术语,它同时刻画了张量的维(阶)和每一维的长度。
大致出现问题是因为MD5报错找不到:
|
|
解决方式:
修改在你下载解压缩之后的sticky模块文件夹中的ngx_http_sticky_misc.c文件
将这两个模块
下面”+”标注de地方:
该问题大致是因为nginx1.9.0以上版本API的改变,
ngx_http_upstream_rr_peer_data_t 中类型定义从
ngx_uint_t 变为 ngx_http_upstream_rr_peer_t*,
导致sticky出现类型不匹配错误,提示如下:
解决方法:
修改在你下载解压缩之后的sticky模块文件夹中的ngx_http_sticky_module.c文件,具体如下(“+”标注):
添加头文件:
|
|
修改code,大概在340行左右:
在学习Pthon过程中,装饰器算是一个蛮难理解的问题(对我来说,尤其是其效果看起来甚像Java中的AOP切面的织入)。
AOP采用的是Proxy模式,再利用反射机制。
Python中,函数 也是一个
要理解装饰器,首先必须知道,在python中,函数也是对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。
让我们用一个sample example来理解:
|
|
装饰模式有很多经典的使用场景,例如:插入日志,性能测试,事务处理等等。有了装饰器,我们就可以提取大量函数中与函数本身功能无关的代码,从而达到代码重用的目的。
一个简单的需求
现在,假设我们要增强shout()函数的功能,在调用shout()函数前后自动打印日志,但是我们不希望修改函数。这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
本质上,decorator就是一个返回函数的高阶函数。所以,我们要定义一个能打印日志的decorator,可以定义如下:
|
|
装饰器语法糖
在Python中,可以使用“@”语法糖(把decorator置于函数定义处)来精简装饰器的代码:
|
|
调用shout()函数,不仅会运行shout()函数本身,还会在运行函数shout前后各打印一行日志:
使用了“@”语法糖后,我们就不需要额外的代码来给“shout”重新赋值了,其实,@log的本质就是
背景:工行某分行发现小额MQ死信队列深度已超过1W,而且还一直在增加,但报文发送、接收均正常。
问题排查过程
1、检查应用日志、mq发送日志,均未发现异常。
2、查看mq死信队列信息
|
|
|
|
3、检查MQDLQ结构如下
|
|
4、查到其ReasonCode为 0000 0109
5、X’00000109’ 含义为:MQFB_APPL_CANNOT_BE_STARTED
Application cannot be started.
An application processing a trigger message was unable to start the
application named in theApplIdfield of the trigger message.
6、也就是说如下程序无法启动
|
|
7、启动不了的可能原因:文件不存在、没有执行权限等。
了解到其真实原因为路径错误(正确路径为/home/bepsmbfe/bin/lib/),将其路径改正确即可解决问题。
8、解决问题的步骤
第1步: 停止相关应用
第2步: 重新定义process
|
|
第3步:启动相关应用
第4步:继续观察死信队列的状况,发现不再增加,问题解决。
通道为每一条消息的传送分配了一个序列号,它会自动累计增值。
消息序列号由发送通道分配,是通道的一个永久属性,每当发送一条消息,消息序列号就加一。
通道的相关属性SEQWRAP 表示序号的最大值,缺省为999,999,999。序列号越界后自动归零,从头开始。
消息序列号是保证MQ消息传输不丢失、不复传的一个重要机制,通道利用消息序号来标识传送和确认的消息。
无论是在发送端还是接收端,在MQSC下输入如下命令,其中CURSEQNO即为当前消息序号:
|
|
正常情况下,通道两端的消息序列号或者相等或者相差为一。
A、通信故障:双方对前面的某一条(或一批) 消息是否发送成功理解不一致。在解决了不确定(In-doubt) 的消息后,可以用 MQSC 命令通过重置消息序号将双方调整到一致。
B、/var/mqm 使用旧的备份恢复
C、某一方MQ系统重新安装
D、队列管理器重建
E、某一方通道重建
F、某一方通道被重置
通道序号不一致会导致通道无法正常启动(即状态不是running),通道状态为retrying。
|
|
说明:
本地和远程队列管理器对下一个消息序号不一致。当希望消息序号 1 时,发送了序号为 101 的消息。
操作:
确定该不一致的原因。有可能同步信息已损坏, 或已被逆序恢复成先前的版本。如果问题不能解决, 可用 RESET CHANNEL
示例:在发送端将消息序号重置为1(默认为1,不是0) RESET CHANNEL (C) 等于 RESET CHANNEL (C) SEQNUM(1)
注意:在连接通道的主动方重置消息序号会将双方一起调整,在被动方重置则只设置一端。因为一旦连接断开后,通道重连时双方 MCA 会将消息序号同步。
建议:在发送端和接收端同时重置消息序号,这样能快速解决序号不一致的问题。
示例:将接收通道消息序号重置为与发送通道的101:
MQ的消息序号是通道的一个永久属性,正常情况下,无论是重新启动队列管理器还是重新启动计算机,通道序列号都不会因此而变化,因而不需要进行重置操作。
问题1:MQ 重置通道序列号不生效
请检查您重置的通道是发送通道还是接收通道,如果重置接收通道肯定只能重置接收通道的序号,并不能改变发送通道的序号,一样会消息序号出错,当然,也可以查找到发送通道的消息序号,然后将接收通道的消息序号重置成与发送通道相同的值。
具体请参考 - 6、消息序号不一致问题发生后怎么处理?
这种问题一般发送在发送端,在我们发出启动通道的命令之后,通道进入binding的状态,若网络连接畅通并且通道定义正确,它进入正常running状态,如果出现了如下的一些问题,则通道进入retrying状态。
检查通道状态示例
|
|
原因可能有如下几种
解决方法
|
|
检查其中CONNAME是否使用了主机名,如果使用了,请检查/etc/hosts文件中是否有其定义。
|
|
其中,DATALEN 表示 PING 数据包的大小,可以用 16 字节到 32,768 字节。
PING 命令可以检查对方的队列管理器或端口监听器是否启动,也可以检查对方的通道定义是否正确。但不检查通道的通性状态。换句话说,PING CHANNEL 只检查通道能否连连通,而不检查目前是否连通。
|
|
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
|
|
More info: Writing
|
|
More info: Server
|
|
More info: Generating
|
|
More info: Deployment