這是要實(shí)現(xiàn)正則表達(dá)式的部分匹配功能。如果只是要代碼可以搜索下相關(guān)提供的函數(shù)。
自己實(shí)現(xiàn)的話可以用遞歸,一個(gè)指向目標(biāo)串,一個(gè)指向匹配串,依次同時(shí)加1,或單向加1,一直到失敗或匹配完成為止。有點(diǎn)類似kmp或者a*的方式吧。
由于你沒(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編碼即可,
當(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
了解一下?
問(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)目
你完全可以使用一個(gè)第三方庫(kù)來(lái)解決這個(gè)問(wèn)題,https://github.com/truizlop/S...
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。