鍍金池/ 問答/ C++問答
真難過 回答

vs 的調(diào)試器里應(yīng)該也會 條件斷點 這種東西,作用是某個條件成立時(比如,循環(huán)變量 i == 100)停止運行。
在這里打一個條件斷點后,再運行程序

情殺 回答
public class Solution {
    /**
     * @param n an integer
     * @return a list of Map.Entry<sum, probability>
     */
    public List<Map.Entry<Integer, Double>> dicesSum(int n) {
        // Write your code here
        // Ps. new AbstractMap.SimpleEntry<Integer, Double>(sum, pro)
        // to create the pair
         List<Map.Entry<Integer, Double>> results = 
                new ArrayList<Map.Entry<Integer, Double>>();
        
        double[][] f = new double[n + 1][6 * n + 1];
        for (int i = 1; i <= 6; ++i)
            f[1][i] = 1.0 / 6;

        for (int i = 2; i <= n; ++i)
            for (int j = i; j <= 6 * n; ++j) {
                for (int k = 1; k <= 6; ++k)
                    if (j > k)
                        f[i][j] += f[i - 1][j - k];

                f[i][j] /= 6.0;
            }

        for (int i = n; i <= 6 * n; ++i) 
            results.add(new AbstractMap.SimpleEntry<Integer, Double>(i, f[n][i]));

        return results;
    }
}
喜歡你 回答

沒人回答那我自己來吧

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
typedef unsigned char byte;

bool removeBytes(FILE *stream, int length) {
    if (length <= 0)
        return true;
    long pos1, pos2, oldLength, newLength, off;
    pos1 = pos2 = ftell(stream);
    fseek(stream, 0, 2);
    oldLength = ftell(stream);
    fseek(stream, pos1, 0);
    newLength = oldLength - length;
    off = newLength - pos1;
    while (off > 0) {
        int cSize = off>0x1000?0x1000:off;
        char *cache = new char[cSize];
        off -= cSize;
        if (fseek(stream, pos2 + length, 0)||
            fread(cache, 1, cSize, stream) != cSize||
            fseek(stream, pos2, 0)||
            fwrite(cache, 1, cSize, stream) != cSize)
            return false;
        pos2 += cSize;
        free(cache);
    }
    return !ftruncate(fileno(stream), newLength<pos1?pos1:newLength);
}

bool insertBytes(FILE *stream, byte *bytes, long length = 4) {
    if (length < 0)
        return true;
    long pos, oldLength, newLength, off;
    pos = ftell(stream);
    fseek(stream, 0, 2);
    oldLength = ftell(stream);
    fseek(stream, pos, 0);
    newLength = oldLength + length;
    off = oldLength - pos;
    if (ftruncate(fileno(stream), newLength))
        return false;
    while (off > 0) {
        int cSize = off>0x1000?0x1000:off;
        char *cache = new char[cSize];
        off -= cSize;
        if (fseek(stream, pos + off, 0)||
            fread(cache, 1, cSize, stream) != cSize||
            fseek(stream, pos + length + off, 0)||
            fwrite(cache, 1, cSize, stream) != cSize)
            return false;
        free(cache);
    }
    fseek(stream, pos, 0);
    if (fwrite(bytes, 1, length, stream) == length)
        return true;
    return false;
}
氕氘氚 回答

使用WebClient,然后設(shè)置請求頭部的ContentType為application/x-www-form-urlencoded,再調(diào)用WebClient實例的UploadString()方法,如下:

string URI = "http://www.myurl.com/post.php";
string myParameters = "param1=value1&param2=value2&param3=value3";

using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string HtmlResult = wc.UploadString(URI, myParameters);
}

更多解決方案,請參考:.NET/C#應(yīng)用程序開發(fā)中如何使用WebClient向指定的遠程請求地址發(fā)送(POST)數(shù)據(jù)?

初念 回答
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s("some string");
    if (s.begin() != s.end()) {
        auto it = s.begin();
        while (it != s.end()) {
            *it = toupper(*it);
            it++;
        }
        cout << s << endl;
    }
    return 0;
}

經(jīng)過評論區(qū)@zhenguoli 的提示改正了

替身 回答

這個是語言設(shè)定的時候?qū)?shù)值類型定死的。
就像int是整型,double是雙精度一樣。
你只要記得它能存儲多少有效數(shù)據(jù)就可以了。

笑忘初 回答
  1. 從網(wǎng)頁里找東西,不要用正則,因為會寫的很復(fù)雜,通用性很差。大部分語言都有現(xiàn)成的包,直接裝一個建樹遍歷吧。
  2. 學(xué)正則推薦 正則表達式30分鐘入門教程
我不懂 回答
因為javascript是高級語言

高級語言的定義和gc無關(guān), c++也是高級語言

優(yōu)雅和細節(jié)關(guān)系大么, 雖然c++的確不優(yōu)雅, 畢竟有那么重的歷史包袱, 但是js可是公認的不優(yōu)雅啊, 雖然這并不影響js的流行.

允許處理細節(jié)也和優(yōu)雅無關(guān), 現(xiàn)代c++用好11開始的那些工具. 這只是允許處理罷了, 當然也可以選擇不處理, 比如各種smart pointer也可以寫的比較優(yōu)雅

舊時光 回答

源碼沒有問題,你只需要按照文檔操作便可編譯成功。

以 Ubuntu 16.04 LTS 為例,主要參考文檔(均來自項目源碼)如下

  1. bitcoin-0.16.0rc1/doc/build-unix.md
  2. btcpool/docs/INSTALL-BTCPool.md

下面是一鍵安裝 btc-pool 腳本,主要參考上述文檔,已測

#!/bin/bash
# 一鍵安裝 btc-pool
#
# OS: Ubuntu 16.04 LTS
# @author 李毅
set -e

build_dir=/tmp

# 由 jarven 測試提供,https://segmentfault.com/q/1010000014060045?_ea=3538159
#   不需要兼容舊版 bitcoin,及不需要錢包功能的時候,可以使用系統(tǒng)默認的 libdb-dev
#   及 libdb++-dev 庫,請把下一行的 false 改成 true。
use_latest_libdb=false

cpus=`grep -Ee 'processor\s:' /proc/cpuinfo | wc -l`


# 禁止 root 用戶運行此腳本
#=========================
if [ "$UID" -eq 0 ] ; then
    echo "禁止 root 用戶運行此腳本"
    exit 1
fi


# 創(chuàng)建臨時目錄
#=============
[ -d $build_dir ] || mkdir -p $build_dir


# 安裝系統(tǒng)必要組件
#==================

# aptitude
if ! which aptitude >/dev/null 2>&1 ; then
    sudo apt-get update
    sudo apt-get install -y aptitude
fi

# 安裝 libboost-all-dev 需要人工干預(yù)
if ! aptitude show libboost-all-dev > /dev/null 2>&1 ; then
    echo ""
    echo "!!! 安裝 libboost-all-dev 需要人工干預(yù),以降級某些依賴項的版本 !!!"
    echo "<1> 第一次詢問時按下 'n' 鍵"
    echo "<2> 第二次詢問時按下 'y' 鍵"
    aptitude install libboost-all-dev
fi

#
sudo aptitude install -y \
    build-essential autotools-dev libtool autoconf automake pkg-config cmake \
    openssl libssl-dev libcurl4-openssl-dev libconfig++-dev \
    libgmp-dev libmysqlclient-dev libzookeeper-mt-dev \
    libzmq3-dev libgoogle-glog-dev libevent-dev


# 編譯安裝 librdkafka-v0.9.1
#===========================
if ! pkg-config --libs rdkafka ; then
    sudo aptitude install -y zlib1g zlib1g-dev python
    cd $build_dir
    if [ ! -f librdkafka-0.9.1.tar.gz ]; then
        wget -O librdkafka-0.9.1.tar.gz https://github.com/edenhill/librdkafka/archive/0.9.1.tar.gz
        tar zxvf librdkafka-0.9.1.tar.gz
    fi
    cd librdkafka-0.9.1
    make clean
    ./configure
    make
    sudo make install
fi


# 編譯 biticoin
#==============
sudo aptitude install -y \
    build-essential libtool autotools-dev automake pkg-config libssl-dev \
    libevent-dev bsdmainutils python3

if [ "$use_latest_libdb" = true ]; then
    sudo aptitude install -y libdb-dev libdb++-dev
else if ! aptitude show libdb4.8++-dev >/dev/null 2>&1 ; then
    # 安裝低版 libdb4.8
    sudo apt-get install -y software-properties-common
    sudo add-apt-repository -y ppa:bitcoin/bitcoin
    sudo apt-get update
    sudo apt-get install -y libdb4.8-dev libdb4.8++-dev
fi

cd $build_dir
if [ ! -f bitcoin-0.16.0rc1.tar.gz ]; then
    wget -O bitcoin-0.16.0rc1.tar.gz https://github.com/bitcoin/bitcoin/archive/v0.16.0rc1.tar.gz
    tar zxf bitcoin-0.16.0rc1.tar.gz
fi
cd $build_dir/bitcoin-0.16.0rc1
./autogen.sh

if [ "$use_latest_libdb" = true ]; then
    ./configure --with-incompatible-bdb --disable-wallet
else
    ./configure
fi
make -j $cpus


# 編譯 btcpool
#=============
cd $build_dir
if [ ! -d btcpool ]; then
    git clone https://github.com/btccom/btcpool.git
fi
cd $build_dir/btcpool
[ ! -d build ] && mkdir build
cd build

# Release build
cmake -DCHAIN_TYPE=BTC -DCHAIN_SRC_ROOT=$build_dir/bitcoin-0.16.0rc1 ..
make -j $cpus

若有問題,請隨時留言。

當然可能!你試試用文本編輯器打開一個MP4視頻文件,看看開頭5-12字節(jié)是不是ftypmp42? 再比如任意一個zip壓縮包,你打開前兩個字節(jié)看看,是不是PK?(這是為了紀念它的發(fā)明人Philip Katz,使得無損壓縮領(lǐng)域絕無可能被壟斷)

對于任意一種二進制格式(除文本文件外的),基本都會按照以下套路存儲文件:

Header + Data

Header部分基本都存在于文件開頭部分若干的固定長度的字節(jié),里面大部分內(nèi)容都是純文本內(nèi)容,因此可以用文本編輯器直接看到這些內(nèi)容,一般都是文件長度啊,作者信息啊,一些編碼數(shù)據(jù)啊等等元數(shù)據(jù)信息。之后才是Data部分。

一些文件甚至還會包含Tail部分,表示文件已經(jīng)結(jié)束了。比如jpeg就屬于這一種。這也是早年流行一時的將壓縮包隱藏到圖片文件中的黑科技的原理。因為有Tail部分,所以圖片瀏覽器就認為文件已經(jīng)結(jié)束了,后面的部分不再視為圖片,于是乎將壓縮包追加到后面的文件內(nèi)容中,可以被壓縮工具識別到。

所以理論上,你完全可以將這些文件的頭部存成一張大表,根據(jù)文件頭的特征確定是什么文件。但目前你沒必要自己這么做了,因為有人已經(jīng)幫你整理好了,MIME了解一下?

心夠野 回答

沒上線,費點力氣還是能改的。
把項目工程的編碼、文件存儲的編碼、過濾器編碼全部修改一下吧,如果有jsp的話頁面中encoding的聲明也要改一下。

如果有判斷字段長度的地方,UTF8是按照三個字節(jié),GBK是2個字節(jié),也需要修改。

當然,最好的辦法是說服客戶,如果是空數(shù)據(jù)庫,客戶不想費事修改,給權(quán)限的話你自己動手來吧;但如果和其它數(shù)據(jù)庫放在一塊就不太可能修改了。

維他命 回答

socket()是創(chuàng)建一個socket描述符,用于后續(xù)的bind和accpet調(diào)用(或者connect調(diào)用)。對于服務(wù)器程序,accept傳入的參數(shù)是socket()創(chuàng)建出來的,返回的描述符表示一個可以跟對端客戶端通信(read,write)用的描述符。accept每次返回正確的話,都會得到一個新的描述符。

有你在 回答

可能是跟編譯的平臺有關(guān),試著修改一下生成菜單下的 目標平臺

六扇門 回答

把重復(fù)的代碼提取出來,類似于這樣:

const props = {
                hidden: fieldObj.hidden===true?'hidden':undefined,
                disabled: fieldObj.disabled===true,
                key: fieldObj.id,
                value: !fieldObj.value||typeof fieldObj.value=="string"?fieldObj.value:fieldObj.value[this.props.index],
                onChange: (e)=>this.props.changeValue(e,fieldObj),
                style: style,
                placeholder: fieldObj.placeholder,
}

再傳到組件中

<component ...{props}/>
蟲児飛 回答

請求頭中的content-Type字段內(nèi)容沒有在Access-Control-Allow-Headers中被設(shè)置為允許。服務(wù)端配置下Access-Control-Allow-Headers。

吃藕丑 回答

<?php

public function b($arr = array()) {
    if (!empty($arr)) {
        return "";
    } else {
        foreach ($arr as &$v) {
            if (is_array($v)) {
                $v = $this->b($v);
            } else {
                $v = $v + 1;
            }
        }
        return $arr;
    }
}

?>

檸檬藍 回答

1.左邊菜單position設(shè)置為absolute,height:100%,這樣試試。

2.flex布局。

墻頭草 回答
  1. 逗號就是匹配一個逗號啊。
  2. +表示最少一個,?表示最多一個
  3. ^.+?是懶惰模式,就匹配一個任意字符。
情已空 回答
  1. 小屋里既然收不到無線信號,那說明信號已經(jīng)很差了,再用WDS這種犧牲帶寬的技術(shù),即便能連上意義也不大,它的意義在于擴大使用范圍而不是提升信號強度。
  2. 最簡單粗暴的方法就是拉網(wǎng)線。無線的坑其實挺多的。
  3. 172開頭的ip一般只有出故障時才會比較常見吧。一般內(nèi)網(wǎng)還是以192開頭居多,如果DHCP不夠分一般把掩碼開個口子就行了。