鍍金池/ 問答/ C++問答
玩控 回答

其實這個問題,很簡單,分析一下就知道了。分析如下:

var str = "我是/@小王@\\和/@小李@\\的好朋友"

你要轉(zhuǎn)成

  var arr = [{"text": "我是"}, {"name": 小王"}, {"text": "和"}, {"name": "小李"}, {"text": "的好朋友"}]

以我看來就是,通過/@和@\把字符串分割,并且以/@結(jié)尾的放到text屬性中,以@\結(jié)尾的放到name中,并且保持原有順序。
既然是有兩個分割字符,那么我們就分割兩次。我簡單寫了一下,但是沒有做太多檢驗和判斷?;仡^你對參數(shù)做下校驗。

我的代碼如下:

var str = "我是/@小王@\\和/@小李@\\的好朋友";
    var strs = str.split("/@");
    var arr = new Array();
    for (var i = 0 ;i < strs.length;i++)
    {
        if(strs[i].indexOf('@\\') != -1)
        {
            var temps = strs[i].split('@\\');
            for(var j=0;j<temps.length;j++)
            {
                if(j == temps.length -1)
                {
                    var text =
                    {
                        text:temps[j]
                    }
                }else
                {
                    var name =
                    {
                        name:temps[j]
                    }
                }
            }
        }else
        {
            var text =
            {
                text:strs[i]
            }
        }
        if(name != null && '' != name && 'undifined' != name)
        {
            arr.push(name);
        }
        if(text != null && '' != text && 'undifined' != text)
        {
            arr.push(text);
        }
    }
    console.log(arr);
那么,最后控制臺輸入如下:

圖片描述

如果沒問題,請采納,謝謝。

柒槿年 回答
int fac(int &&a, int &&b) {
  if (b == 0)
    return a > 0 ? fac(a-1, 0) * a : 1;
  return fac(a+b, 0);
}

int fac(int &&a, int &&b) {
  if (a > 0)
    return fac(a-1, b+0) * (a+b);
  else if (b > 0)
    return fac(a+0, b-1) * (a+b);
  else
    return 1;
}
凝雅 回答

MDN的new運算解釋

如果構(gòu)造函數(shù)返回了一個“對象”,那么這個對象會取代整個new出來的結(jié)果。

var aa = new a(name);
也就是說 aa 就是{say1:say}這個對象了,他是不具有say2的!

耍太極 回答

不是數(shù)組,是二維坐標系,只是這個坐標系能用二維數(shù)組表示而已。
方塊的變換也就是坐標的變換

離魂曲 回答

你是想生成一個全排列的結(jié)果吧
你這個一共有
3x3x4x3x3 種可能的
而且這個不應該用遞歸吧,直接就可以5層循環(huán)全遍歷啊,為什么要遞歸?
還有一種辦法,遞歸都不需要,用位運算就可以提取出來,根據(jù)你的情況,就是一個10位二進制數(shù),每2位代表一個就可以提取出來了,不過要注意做過濾。
我實現(xiàn)一下后面一種情況。

var wordList = [
    ['熱烈', '萬分', '非常', ''],
    ['歡迎', '感謝', '謝謝'],
    ['您', '親', '老板', '大神', ''],
    ['光臨', '惠顧', '支持'],
    ['小店', '本店', '火女菜館']
];
for(let i=0;i<1024;i++){
    //把i按2bit分成5份
    b2t0=i&3
    b2t1=(i>>2)&3
    b2t2=(i>>4)&3
    b2t3=(i>>6)&3
    b2t4=(i>>8)&3
    if( (b2t0==3)|| (b2t1==3) ||(b2t3==3) ||(b2t4==3)) continue
    console.log(wordList[0][b2t0]+wordList[1][b2t1]+wordList[2][b2t2]+wordList[3][b2t3]+wordList[4][b2t4])
}
維她命 回答

析構(gòu)函數(shù)忘定義了

命于你 回答

judge并沒有立即執(zhí)行,而是在(...arg)=>judge(...args,...arg);方法被調(diào)用時才被執(zhí)行
這個curry后的函數(shù)只有在傳入的最后一個參數(shù)可以被轉(zhuǎn)換為false的時候才開始執(zhí)行,它存參數(shù)的方法也很簡單
1,判斷如果最后一個參數(shù)是否可以是false
2,是的話就把所有保存的參數(shù)放到fn里執(zhí)行,結(jié)束
3,否則,返回一個新的匿名函數(shù),這個函數(shù)把所有傳入?yún)?shù)保存在arg數(shù)組中,而這個匿名函數(shù)被執(zhí)行后,就把以前收到的參數(shù)數(shù)組和當前的參數(shù)數(shù)組合并后,放到前面說的邏輯中,在judge函數(shù)里判斷,重復第1步

let curry = function(fn) {
    var judge = function(...args) {
        if (Boolean(args[args.length - 1])===false) {
            return fn(args);//three(null)就到這里了
        } else {
            return function(...arg) { //one和two和three都是這個函數(shù)
                return judge(...args, ...arg);
            }
        }
    }
    return judge;
}
陌南塵 回答

補充一個使用循環(huán)的實現(xiàn)
現(xiàn):保證數(shù)組的序列是有序的連續(xù)的

$data = [
    ['AAA', 'aaa', 'aAa'],
    ['BBB', 'bbb', 'bBb'],
    ['CCC', 'ccc', 'cCc'],
];

$result = [];
foreach (array_keys($data) as $k) {
    $tmp = [];
    if (empty($result)) {
        $result = $data[$k];
    } else {
        foreach ($result as $item1) {
            foreach ($data[$k] as $item2) {
                $tmp[] = $item1 . '-' . $item2;
            }
        }
        $result = $tmp;
    }
}
var_dump($result);
夏木 回答

re.compile(r"select.*?from.*?where.*?;", re.S|re.M)?

懶豬 回答

了解一下https://wkhtmltopdf.org/

張老師寫過文章:http://www.cnblogs.com/shanyo...

C#版本的話,我用過WkHtmlToXSharp 和[WkHtmlToXDotNet](https://github.com/TimothyKho...
前者用的人比較多,后者一般般.
注意一點,不要在IIS中使用WkHtmlToXSharp方案,有內(nèi)存泄漏風險,在桌面環(huán)境就隨便玩了;
直接調(diào)用wkhtmltopdf.exe的話就無所謂了.

夏木 回答

如果確定是計算密集確實不適合使用python中的多線程,但是是可以考慮使用多進程的。你不需要通過自己創(chuàng)建一個queue來進行內(nèi)部分流,即使需要一個Queue, 也是需要通過給Queue設置大小來限制Queue的流量。

以rabbitmq為例, 請看https://www.rabbitmq.com/tuto...

在rabbitmq的官方例子中,是使用pika做為rabbitmq的客戶端的, 消息模型應該是和你的是一致的,稍微修改一下官方的work.py例子,通過建立多個rabbitmq客戶端來消費消息:

#!/usr/bin/env python
import pika
import time
from concurrent.futures import ProcessPoolExecutor
# from concurrent.futures import ThreadPoolExecutor


connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))

channels = [
    (1, connection.channel(1)),
    (2, connection.channel(2)),
    (3, connection.channel(3)),
]

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
    time.sleep(0.2)
    print(" [x] Done: %s" % ch.channel_number)
    ch.basic_ack(delivery_tag=method.delivery_tag)


for _, channel in channels:
    channel.queue_declare(queue='task_queue', durable=True)
    channel.basic_qos(prefetch_count=1)
    channel.basic_consume(callback, queue='task_queue')


def start_consumer(channel_name):
    dict(channels).get(channel_name).start_consuming()


print(' [*] Waiting for messages. To exit press CTRL+C')

with ProcessPoolExecutor(max_workers=len(channels)) as e:
    e.map(start_consumer, range(1, 4))

# with ThreadPoolExecutor(max_workers=len(channels)) as e:
#     e.map(start_consumer, range(1, 4))

彈性的創(chuàng)建worker我覺的從程序(worker.py)內(nèi)部去實現(xiàn)是比較困難的,從程序外部來看更容易實現(xiàn), 首先監(jiān)控流量, 流量增大可以通過啟動更多的worker.py腳本來加快消息的消費; 反之, 減少worker.py啟動的數(shù)量。

嘟尛嘴 回答
  1. 你nm命令看到的那些符號的“U”表示未定義的,你可以看到它們前面沒有內(nèi)存地址信息,這些符號是定義在你引入的mxml庫中的。

  2. 你是在生成可執(zhí)行程序main的失敗報錯的吧,如果是在編譯的時候再加上-lmxml選項,并使用-L選項指定mxml庫所在的目錄。

  3. 運行時可能會遇到提示找不到libmxml.so**庫的錯誤提示,可以把libmxml.so**庫發(fā)布到/usr/lib64目錄下,或者把libmxml.so**所在目錄配置到/etc/ld.so.conf中,然后執(zhí)行l(wèi)dconfig即可。

獨特范 回答

只有0和-1才能這樣初始化吧

淺淺 回答

*.cpp文件沒有加入CMakeLists.txt中, 檢查一下這個文件吧.

青裙 回答

設置心跳檢測時間試試
array(

'heartbeat_idle_time' => 600,
'heartbeat_check_interval' => 60,

);
https://wiki.swoole.com/wiki/...

妖妖 回答

是的,一個類的public static方法可以靜態(tài)調(diào)用

扯不斷 回答

@felix 老大已經(jīng)完全解答了OP你的問題, 窩稍微做點微不足道的補充:

  1. 將其聲明為類模板的友元會破壞類的封裝性, 比如X<int>的友元函數(shù)foo此時會對所有X<T>可見. 那么就等于X<int>間接不合理的獲取了所有X<T>的信息(比如其private member). 所以不建議使用, 比如下段代碼可以過編譯.
#include<iostream>
using namespace std;
template<typename T>
class A
{
private:
    T x;
    void setter(T y)
    {
        x = y;
    }
public:
    explicit A(T a) : x(a) {}
    template<typename U>
    friend void foo(A<U> a);
};
A<int> x(7);
template<typename U>
void foo(A<U> a)
{
    x.x = 2;
}
int main()
{
    A<int> a(7);
    A<float> b(1.1);
    foo(b);
}
  1. 還有第三種方式, 是使用前置聲明的方法, 詳見下面代碼.
  2. 首先靜態(tài)成員變量count需要在類外定義從c++1z開始可能需要改成首先non-constexpr的靜態(tài)成員變量count需要在類外定義。詳見http://eel.is/c++draft/depr.s... . demo可以在寫個odr-use函數(shù)試出.
  3. 題主你的const出問題了.
#include<iostream>
using namespace std;

template<class T, int n>
class Array;

template<class T, int n>
 istream & operator>> (istream & in, Array<T,n>& a);


template<class T,int n>
ostream & operator << (ostream & out,const Array<T,n>& a);

template<class T, int n>
class Array
{
private:
    T p[n];
    static int count;
public:
    friend istream & operator>> <> (istream & in, Array<T,n>& a);
    friend ostream & operator << <> (ostream & out,const Array<T,n>& a);
    int getSize()
    {
        return n;
    }
    static int getArrayCount()
    {
        return count;
    }
};
template<class T,int n>
istream & operator >> (istream & in, Array<T,n>& a)
{
    for(int i=0;i<n;i++)
    {
        in>>a.p[i];
    }
    a.count++;
    return in;
}
template<class T,int n>
ostream & operator << (ostream & out,const Array<T,n>& a)
{
    for(int i=0;i<n;i++)
    {
        out<<a.p[i]<<" ";
    }
    return out;
}

template<class T, int n>
int Array<T, n>::count = 0;


int main()
{
    Array< int, 5 > intArray1;
    cin >> intArray1;
    Array< int, 5 > intArray2;
    cin >> intArray2;
    Array< float, 5 > floatArray;
    cin >> floatArray;
    cout << "\nIntArray1 contains " << intArray1.getSize() << " Elements.\n";
    cout << "The values in intArray are:\n";
    cout << intArray1;
    cout << "\nIntArray2 contains " << intArray2.getSize() << " Elements.\n";
    cout << "The values in intArray are:\n";
    cout << intArray2;
    cout << "\nDoubleArray contains " << floatArray.getSize() << " Elements.\n";
    cout << "The values in the doubleArray are:\n";
    cout << floatArray;
    cout << "\nThere are " << Array<int,5>::getArrayCount() << " Array<int,5> objects.\n";
    cout << "\nThere are " << Array<float,5>::getArrayCount() << " Array<float,5> objects.\n";
    return 0;
}
離殤 回答

很簡單的問題,npm這個報錯我也是服了,就是flash這個用戶名被注冊過了,換一個就好了,我解決了在這里記錄一下,怕以后忘了...

心上人 回答

后面你維護的時候,原則上只需要保證那些暴露出去的方法的兼容性即可。