// ======== 下面的几个int常量是给waitStatus用的 =========== /** waitStatus value to indicate thread has cancelled */ // 代码此线程取消了争抢这个锁 staticfinalint CANCELLED = 1; /** waitStatus value to indicate successor's thread needs unparking */ // 官方的描述是,其表示当前node的后继节点对应的线程需要被唤醒 staticfinalint SIGNAL = -1; /** waitStatus value to indicate thread is waiting on condition */ // 本文不分析condition,所以略过吧,下一篇文章会介绍这个 staticfinalint CONDITION = -2; /** * waitStatus value to indicate the next acquireShared should * unconditionally propagate */ // 同样的不分析,略过吧 staticfinalint PROPAGATE = -3; // =====================================================
后来又碰到了一个坑是nginx有个client_body_buffer_size的配置参数,nginx在32位和64位系统里有8K和16K两个默认值,当请求内容大于这两个值的时候,会把请求内容放到临时文件里,这个时候openresty里的ngx.req.get_post_args()就会报“failed to get post args: requesty body in temp file not supported”这个错误,将client_body_buffer_size这个参数配置调大一点就好了
local json = require("cjson.safe") local str = [[ {"key:"value"} ]]
local t = json.decode(str) if t then ngx.say(" --> ", type(t)) end
cjson.safe包会在解析失败的时候返回nil
还有一个是redis链接时如果host使用的是域名的话会提示“failed to connect: no resolver defined to resolve “redis.xxxxxx.com””,这里需要使用nginx的resolver指令, resolver 8.8.8.8 valid=3600s;
Cluster status of node rabbit@rabbit1 ... [{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2,rabbit@rabbit3]}]}, {running_nodes,[rabbit@rabbit2,rabbit@rabbit1]}] ...done.
这里碰到过一个坑,对于使用exchange来做消息路由的,会有一个情况,就是在routing_key没被订阅的时候,会将该条找不到路由对应的queue的消息丢掉What happens if we break our contract and send a message with one or four words, like "orange" or "quick.orange.male.rabbit"? Well, these messages won't match any bindings and will be lost.对应链接,而当使用空的exchange时,会保留消息,当出现消费者的时候就可以将收到之前生产者所推送的消息对应链接,这里就是用了空的exchange。
<?php interface int1{ const INTER1 = 111; function inter1(); } interface int2{ const INTER1 = 222; function inter2(); } abstract class abst1{ public function abstr1(){ echo 1111; } abstract function abstra1(){ echo 'ahahahha'; } } abstract class abst2{ public function abstr2(){ echo 1111; } abstract function abstra2(); } class normal1 extends abst1{ protected function abstr2(){ echo 222; } }
result
1 2 3
PHP Fatal error: Abstract function abst1::abstra1() cannot contain body in new.php on line 17
Fatal error: Abstract function abst1::abstra1() cannot contain body in php on line 17
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn’t one, return 0 instead.
For example, given the array [2,3,1,2,4,3] and s = 7, the subarray [4,3] has the minimal length under the problem constraint.
classSolution { public: intminSubArrayLen(int s, vector<int>& nums){ int len = nums.size(); if(len == 0) return0; int minlen = INT_MAX; int sum = 0; int left = 0; int right = -1; while(right < len) { while(sum < s && right < len) sum += nums[++right]; if(sum >= s) { minlen = minlen < right - left + 1 ? minlen : right - left + 1; sum -= nums[left++]; } } return minlen > len ? 0 : minlen; } };