鍍金池/ 問(wèn)答/ C++問(wèn)答
憶往昔 回答

這是要實(shí)現(xiàn)正則表達(dá)式的部分匹配功能。如果只是要代碼可以搜索下相關(guān)提供的函數(shù)。
自己實(shí)現(xiàn)的話可以用遞歸,一個(gè)指向目標(biāo)串,一個(gè)指向匹配串,依次同時(shí)加1,或單向加1,一直到失敗或匹配完成為止。有點(diǎn)類似kmp或者a*的方式吧。

離夢(mèng) 回答

由于你沒(méi)有給出錯(cuò)誤提示,無(wú)法判斷錯(cuò)誤的具體原因。

考慮到Account只授予了std::vector<Account>訪問(wèn)權(quán)。一個(gè)可能得原因是在std::vector<Account>內(nèi)對(duì)Account的構(gòu)造是由另一個(gè)類/函數(shù)完成的,比方說(shuō)std::allocator<Account>。

class Account
{
    friend std::vector<Account>::allocator_type;
public:
    Account(const char *, double = 0.0);
private:
    Account() {}
};
莓森 回答

Header里面的Content-Disposition只支持ASCII,所以我們傳輸?shù)奈募仨毷茿SCII,當(dāng)文件名為中文時(shí),必須要將該中文轉(zhuǎn)換成ASCII。

如果服務(wù)端能處理,最好直接將filename通過(guò)URLEncode編碼。

根據(jù)你提供的代碼,你服務(wù)端返回的數(shù)據(jù)實(shí)際是GBK編碼,可參考以下代碼是可以獲取到正確名稱:

String url = "http://hk.azero-ng.cn/index2.php";
        URL obj = new URL(url);
        URLConnection conn = obj.openConnection();
        Map<String, List<String>> map = conn.getHeaderFields();

        String[] cells = map.get("Content-Disposition").get(0).split(";");
        String filename = cells[1].replace(" filename=", "");
        System.out.println(filename);

        String Wrong_utf8 = new String(filename.getBytes("ISO-8859-1"),"GBK");

        System.out.println(Wrong_utf8);

建議服務(wù)端直接名稱URLEncode編碼即可,

參考: http://blog.csdn.net/liuyaqi1...

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

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

Header + Data

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

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

所以理論上,你完全可以將這些文件的頭部存成一張大表,根據(jù)文件頭的特征確定是什么文件。但目前你沒(méi)必要自己這么做了,因?yàn)橛腥艘呀?jīng)幫你整理好了,MIME了解一下?

獨(dú)白 回答

問(wèn)題一,是的,listen參數(shù)backlog就是這個(gè)沒(méi)有建立(accept)的連接隊(duì)列的最大長(zhǎng)度,不過(guò)系統(tǒng)內(nèi)核還有另外一個(gè)上限控制,backlog不是隨便設(shè)多大就行。
問(wèn)題二,這個(gè)socket對(duì)象在內(nèi)核內(nèi)存里,你只有它的句柄(fd)。
內(nèi)核其中包括收發(fā)的緩沖區(qū)。你不能直接讀寫它,內(nèi)核收發(fā)時(shí)read或send時(shí),會(huì)把內(nèi)核緩沖區(qū)的數(shù)據(jù)拷貝到用戶空間或者反之。能接收多少數(shù)據(jù)取決于內(nèi)核和網(wǎng)卡驅(qū)動(dòng)的參數(shù)配置,即相應(yīng)內(nèi)核緩沖區(qū)的大小。不同的IP連接有不同的描述符,不同進(jìn)程之間也是隔離的,都在內(nèi)核里統(tǒng)一維護(hù)。如果放不下。UDP會(huì)導(dǎo)致丟包,TCP連接對(duì)方則會(huì)嘗試重發(fā)。

紓惘 回答

已解決??!Fortran生成dll時(shí)沒(méi)配置,默認(rèn)生成32位的dll了。而我的QT程序是64位的,我又重新把dll生成64位的沒(méi)問(wèn)題了

野橘 回答
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//** 聲明結(jié)構(gòu)
//** @result 返回對(duì)稱數(shù)數(shù)組
//** @length 數(shù)組的長(zhǎng)度
struct Symmetrical {
    int *result;
    int length;
};

typedef struct Symmetrical Symmetrical;

Symmetrical *findSymmetrical() {
    //為結(jié)果分配內(nèi)存,最大可能為所有數(shù)都是對(duì)稱數(shù),即 sizeof(int)*1993
    int *result = (int *)malloc(sizeof(int)*1993);
    int length = 0;
    //數(shù)字轉(zhuǎn)換為字符串后存放的數(shù)組
    char *numStr = (char *)malloc(sizeof(char)*4);
    
    for (int i = 1; i <= 1993; i++) {
        //如果小于10,一定為對(duì)稱數(shù)
        if (i < 10) result[length++] = i;
        else {
            int is_symmetrical = 1;
            // 轉(zhuǎn)換數(shù)字到字符串,itoa是非標(biāo)準(zhǔn)函數(shù),可以用sprintf代替
            sprintf(numStr, "%d", i);
            // itoa(i, numStr, 10);
            int num_length = strlen(numStr);
            //對(duì)每一位進(jìn)行對(duì)比
            for (int j = 0; j < num_length / 2; j++) {
                //如果正數(shù)第j位和倒數(shù)第j位不一樣,則不為對(duì)稱數(shù),結(jié)束循環(huán)
                if (numStr[j] != numStr[num_length - j - 1]) {
                    is_symmetrical = 0;
                    break;
                }
            }
            
            //如果是對(duì)稱數(shù),存到結(jié)果數(shù)組里
            if (is_symmetrical) result[length++] = i;
        }
    }
    free(numStr);
    
    //創(chuàng)建對(duì)稱數(shù)結(jié)構(gòu),用于同時(shí)傳遞數(shù)組和數(shù)組長(zhǎng)度
    Symmetrical *symmetrical = (Symmetrical *)malloc(sizeof(Symmetrical));
    symmetrical->result = result;
    symmetrical->length = length;
    return symmetrical;
}

int main() {
    Symmetrical *result = findSymmetrical();
    
    //打印
    for (int i = 0; i < result->length; i++) {
        printf("%d ", result->result[i]);
    }
    free(result->result);
    free(result);
}

答案非最優(yōu)解,但思路是這樣。

別傷我 回答

behavior 屬性只有IE兼容吧? 應(yīng)該要盡量避免使用

蟲児飛 回答

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

卟乖 回答

bind函數(shù)的第二個(gè)參數(shù)應(yīng)該是指針吧

舊螢火 回答

基本思路:
假設(shè)你已經(jīng)有了一個(gè)成語(yǔ)詞典。
對(duì)于24個(gè)漢字,從第一個(gè)開始
{
找出該漢字開頭的所有成語(yǔ),對(duì)符合條件的所有成語(yǔ),
判斷第二個(gè)漢字是否包含在24個(gè)漢字中,對(duì)符合條件的依次判斷第三個(gè)第四個(gè),
找到則跳出循環(huán)。
}
這個(gè)最壞需要遍歷24遍詞典。
優(yōu)化:
對(duì)于成語(yǔ)詞典,假設(shè)是按拼音順序排列的。
首先對(duì)于你的24個(gè)漢字,按拼音順序排列一遍
從第一個(gè)開始,查找該漢字開頭對(duì)應(yīng)的成語(yǔ),依次判斷成語(yǔ)的第二三四個(gè)漢字。
如果找到則跳出,否則到下一個(gè)漢字,繼續(xù)向下查找詞典。
這個(gè)最壞只需要1遍。
其中有個(gè)問(wèn)題,假如有一個(gè)漢字沒(méi)有對(duì)應(yīng)的成語(yǔ)怎么辦,所以詞典可能也要包含該漢字來(lái)做標(biāo)記(低效率),或者對(duì)拼音比大小來(lái)判斷該漢字是否已經(jīng)掠過(guò)了。

賤人曾 回答

不用這些之前,前端界的界面組件很多是基于jQuery實(shí)現(xiàn)的,當(dāng)然還有一些自成一體的ui組件不依賴jQuery或使用其他一些框架,但基于jQuery的組件最為豐富。

怪痞 回答

C++標(biāo)準(zhǔn)只規(guī)定了編譯器可以幫我們把一個(gè){}定義的常量數(shù)組轉(zhuǎn)換為一個(gè)initializer_list對(duì)象,這樣接受initializer_list為參數(shù)的函數(shù)(通常是各種構(gòu)造函數(shù)),就可以接受{},通過(guò)這種方式擴(kuò)展了語(yǔ)法,使我們可以像初始化普通數(shù)組那樣初始化容器,簡(jiǎn)化了代碼。

但不要把initializer_list當(dāng)做一個(gè)普通的(容器)來(lái)用。

在GCC(4.8)的實(shí)現(xiàn)版本里,initializer_list的構(gòu)造函數(shù)被實(shí)現(xiàn)為private。除了通過(guò){}讓編譯器幫你構(gòu)造,你不能構(gòu)造一個(gè)有效的initializer_list。

namespace std
{
  /// initializer_list
  template<class _E>
    class initializer_list
    {
    public:
      typedef _E                value_type;
      typedef const _E&         reference;
      typedef const _E&         const_reference;
      typedef size_t            size_type;
      typedef const _E*         iterator;
      typedef const _E*         const_iterator;

    private:
      iterator                  _M_array;
      size_type                 _M_len;

      // The compiler can call a private constructor.
      constexpr initializer_list(const_iterator __a, size_type __l)
      : _M_array(__a), _M_len(__l) { }

    public:
"/usr/include/c++/4.8/initializer_list" [readonly] 107 lines --17%--                   

在VC++ 2017的的實(shí)現(xiàn)版本里,initializer_list的構(gòu)造函數(shù)是public。

constexpr initializer_list(const _Elem *_First_arg,
        const _Elem *_Last_arg) _NOEXCEPT
        : _First(_First_arg), _Last(_Last_arg)
        {    // construct with pointers
        }

所以下面的代碼在VC++2017上是ok的:

#include <iostream>

void test(std::initializer_list<int> lst) {
    for (auto l : lst)
        std::cout << l << std::endl;
}

int main() {
    int a[] = { 1, 2, 3, 4 };

    test({ 1, 2, 3, 4 }); // c++ standard 

    test(std::initializer_list<int>(a, a + 4)); // compile error in gcc 4.8 but ok in vc++2017

    return 0;
}

但這是不被保證的。

C++通過(guò)庫(kù)代碼配合編譯器的方式支持了一種新的語(yǔ)法,這可能是讓人容易困惑的原因。

喵小咪 回答

已經(jīng)解決了,直接去github上面扒issue,原來(lái)是html-webpack-plugin版本問(wèn)題,我的環(huán)境下用v3.0.7就可以了(蛋疼的是為了更好地兼容webpack4,這個(gè)插件升級(jí)到v4后這個(gè)問(wèn)題又卷土重來(lái),但是應(yīng)該不影響項(xiàng)目運(yùn)行的,只好忽略)。

這只是消除了entrypoint = undefined的問(wèn)題,npm run dev后打包生成的js已經(jīng)通過(guò)html-webpack-plugin插入頁(yè)面,卻沒(méi)有執(zhí)行,因此現(xiàn)在頁(yè)面只有靜態(tài)資源被成功加載到。不過(guò)這是另一個(gè)問(wèn)題了,繼續(xù)研究。

前端工程化和自定義設(shè)置一定要謹(jǐn)慎,才能少挖點(diǎn)坑,解放生產(chǎn)力。

尐懶貓 回答

C或C++程序編譯后就會(huì)失去程序中的很多信息,包括類名、方法名、字段名等,所以想在運(yùn)行期間獲得這些內(nèi)容是很難的。這一點(diǎn)與Python等支持反射的語(yǔ)言有很大不同。

至于導(dǎo)出調(diào)試信息,只是說(shuō)在可執(zhí)行程序中加了一段數(shù)據(jù),用來(lái)標(biāo)識(shí)可執(zhí)行文件與源代碼的一些映射,從而讓調(diào)試變得方便。但是調(diào)試信息是給調(diào)試器用的,程序自身并不能夠直接獲取這些信息,除非你自己解析二進(jìn)制格式的可執(zhí)行文件。

所以回到你的問(wèn)題上來(lái),雖然很多語(yǔ)言都提供了反射機(jī)制,但C/C++這種相對(duì)比較“底層”的語(yǔ)言并沒(méi)有提供。

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

2.flex布局。

敢試 回答

Lish.h

Class A
{
Public:
int func(); //聲明
}

Lish.cpp

#include "Lish.h"  //包含頭文件
A::int func()    //定義
{
    return 0;
}

main.cpp

#include "Lish.h"
A a;
a.func(); //調(diào)用
亮瞎她 回答

你沒(méi)有把原型寫清楚,如果getitem函數(shù)/方法有一個(gè)返回值來(lái)指示錯(cuò)誤信息,那對(duì)于 C++ 這種單返回值的語(yǔ)言,只能把返回的數(shù)據(jù)通過(guò)指針傳回來(lái)。
如果不是,那可能寫書的這個(gè)人喜歡這樣寫吧。

深記你 回答

有一些優(yōu)化的思路,不知道是不是適合你們的項(xiàng)目

  1. 使用happyPack,多進(jìn)程構(gòu)建
  2. 把公共文件拆分到webpack的external里面去,沒(méi)必要每次都去編譯
  3. 開啟tree-shaking和對(duì)進(jìn)程壓縮

你完全可以使用一個(gè)第三方庫(kù)來(lái)解決這個(gè)問(wèn)題,https://github.com/truizlop/S...