在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/ C++問答
嫑吢丕 回答

你需要自己通過下面的命令生成一套密鑰,包括公鑰和私鑰

ssh-keygen -t rsa -C "your email"

然后把公鑰復(fù)制到git 倉庫的SSH KEY 的設(shè)置當(dāng)中。

使用SSH其實(shí)是加密通信,省去了每次輸入賬號密碼的麻煩。每次通信時(shí)會(huì)拿線上的公鑰和本地的私鑰做校驗(yàn)

情已空 回答

可以使用管道或local套接字,構(gòu)建有一個(gè)cs架構(gòu)來處理

玄鳥 回答

以前沒有遇到過這個(gè)問題,我實(shí)驗(yàn)了一下,覺得原因應(yīng)該是:

  1. 父級容器上設(shè)置overflow、overflow-y和overflow-x屬性不為visible時(shí),會(huì)觸發(fā)一次容器寬高計(jì)算并裁剪
  2. box-shadow屬性不會(huì)影響元素的寬高,所以被overflow忽略,然后裁剪
  3. 由于設(shè)置了overflow,父級元素觸發(fā)BFC,沒有上外邊距合并,所以能夠顯示上邊的box-shadow

事實(shí)上,overflow不為visible與觸發(fā)BFC的條件很像,但不清楚是不是BFC的原因。

以上都是在chrome瀏覽器中發(fā)現(xiàn)的情況,因此可以試試上面兩位的解決方法。

但是

但是,如果你是在IE9瀏覽器中,那么僅僅是1px的margin是沒有辦法完整顯示box-shadow的,至少得是2px。

挽歌 回答

func 由于是形參,雖然a跟b的數(shù)值調(diào)換了(a,b是int *類型也就是你說的地址(地址也是值)),但是不是引用傳遞,所以對p,q沒有任何影響。

func1 你的int *c都沒初始化就賦值*c=*a;確定能跑通?

void fun1(int *a,int *b)
{
     int *c = new int;
     *c=*a;
     *a=*b;
     *b=*c;
}

func1 更改的是*a 和 *b的數(shù)值(*a指的是取a地址的內(nèi)容,也就是說把a(bǔ)地址的內(nèi)容和b地址的內(nèi)容交換了,內(nèi)存層面的操作全局都是有效的),所以最后輸出結(jié)果5,3

你的輸出結(jié)果3,3是怎么打印的?主要你的程序沒初始化指針肯定拋異常啊

舉個(gè)例子內(nèi)存里有4個(gè)值,A1->B1,A2->B2,A3->B3,A4->B4其中A是地址B是值,B1=A3,B2=A4也就是說A1和A2存的是A3,A4的指針,A1,A2,A3,A4分別對應(yīng)你程序的p, q, x, y變量

進(jìn)入func,p傳遞給a,A5->B1, q傳遞給b,A6->B2
func就是在函數(shù)局部交換了a,b的值對應(yīng)我的例子就是A5->B2,A6->B1交互B1和B2的值,但是func函數(shù)退出局部變量銷毀A5,A6,剩下A1->B1,A2->B2,A3->B3,A4->B4

進(jìn)入func,p傳遞給a,A5->B1, q傳遞給b,A6->B2
交換a,b的內(nèi)容(*a 就是取a地址的內(nèi)容對應(yīng)例子A5->B1=A3->B3取出來的是B3), 交換后A5->B1=A3->B4, A6->B2=A4->B3,直接看A3和A4內(nèi)存結(jié)構(gòu)變?yōu)锳3->B4和A4->B3
退出局部變量銷毀A5,A6,剩下A1->B1,A2->B2,A3->B4,A4->B3

安淺陌 回答

我是寫 Java 的,那么如果要用不那么 OO 的方式(我們一般喜歡用日志 slf4j 之類的),那么我會(huì)用下面兩種思路:

public static void printTimes(Object obj, int times) {
    String content = obj.toString();
    // 通過新建一個(gè)異常來獲取調(diào)用棧信息,不拋出即可。
    String where = new Exception().getStackTrace()[1].getClassName();
    // 后續(xù)省略
}

public interface Printer {

    // 此法需要 Java 8
    // 聲明默認(rèn)方法,想要為某個(gè)類加上按次數(shù)打印功能時(shí)就 implements Printer
    default void printTimes(Object obj, int times) {
        String where = this.getClass().getSimpleName();
        // 后續(xù)省略
    }

}

事實(shí)上新建異常來獲取調(diào)用棧信息可以拿到非常完整的執(zhí)行環(huán)境信息:

所處類 | 所處方法 | 所在文件名稱 | 所在文件行數(shù)

歡迎討論。

慢半拍 回答

你的程序表明你開的是局部變量而不是全局變量(關(guān)于全局和局部變量你可以參考C++ 全局變量、局部變量、靜態(tài)全局變量、靜態(tài)局部變量的區(qū)別)。
所以你的數(shù)組是開在棧上的,這就涉及到編譯期限制棧大小的問題。如果你申請這么大的數(shù)組是會(huì)stackoverflow的,我記得我原來用devc++寫oj的時(shí)候開了一個(gè)100000的數(shù)組好像就爆棧了,但是現(xiàn)在換到osx的clion下面好像沒事了...
在一般情況下, 不同平臺(tái)默認(rèn)棧大小如下(僅供參考)

SunOS/Solaris 8172K bytes (Shared Version)

Linux 10240K bytes

Windows 1024K bytes (Release Version)

AIX 65536K bytes

當(dāng)然你可以修改你的默認(rèn)棧大?。?

1.SunOS/Solaris系統(tǒng):
limit # 顯示當(dāng)前用戶的棧大小
unlimit # 將當(dāng)前用戶的棧大小改為不限制大小
setenv STACKSIZE 32768 #設(shè)置當(dāng)前用戶的棧大小為 32M bytes

2.Linux系統(tǒng):
ulimit -a #顯示當(dāng)前用戶的棧大小
ulimit -s 32768 #將當(dāng)前用戶的棧大小設(shè)置為32M bytes

3.Windows (在編譯過程中的設(shè)置)

  • 選擇 "Project->Setting".
  • 選擇 "Link".
  • 選擇 "Category"中的 "Output".
  • 在 "Stack allocations"中的"Reserve:"中輸棧的大小,例如: 32768

在 Visual Studio 開發(fā)環(huán)境中設(shè)置此鏈接器選項(xiàng)

  • 打開此項(xiàng)目的“屬性頁”對話框。有關(guān)詳細(xì)信息,請參見設(shè)置 Visual C++ 項(xiàng)目屬性。
  • 單擊“鏈接器”文件夾。
  • 單擊“系統(tǒng)”屬性頁。
  • 修改下列任一屬性:
  • 堆棧提交大小
  • 堆棧保留大小

Reference

情未了 回答

使用char *p,會(huì)導(dǎo)致一個(gè)問題,看getp,*p的類型是char,而malloc返回值的類型是void*,類型不一致;若改成char **p??梢詮念愋偷慕嵌认胂?。

使用你提供的 SDK 下載鏈接,親測可編譯(linux x64 g++)。

源碼目錄結(jié)構(gòu)如下

.
├── a.cpp
├── a.h
├── aip-cpp-sdk-0.4.0
│?? ├── base
│?? │?? ├── base64.h
│?? │?? ├── base.h
│?? │?? ├── http.h
│?? │?? └── utils.h
│?? ├── face.h
│?? ├── image_censor.h
│?? ├── image_classify.h
│?? ├── image_search.h
│?? ├── kg.h
│?? ├── nlp.h
│?? ├── ocr.h
│?? ├── README.md
│?? └── speech.h
├── main.cpp
└── Makefile

文件 a.h 內(nèi)容如下

#ifndef _a_h_
#define _a_h_
bool call_speech();
#endif

文件 a.cpp 內(nèi)容如下

#include "aip-cpp-sdk-0.4.0/speech.h"
#include <json/json.h>

bool call_speech() {
    aip::Speech sp("app_id", "ak", "sk");
    Json::Value data;
    Json::Value result = sp.request_asr("url", data);
    return result.isString();
}

文件 main.cpp 內(nèi)容如下

#include "a.h"

int main()
{
    return call_speech() ? 0: 1;
}

文件 Makefile 內(nèi)容如下

demo: a.cpp main.cpp
    g++ -Wall -std=c++11 -g $^ -o $@ -lcurl -lcrypto -ljsoncpp

使用命令 make 順利編譯。


由于你沒有貼出調(diào)用 SDK 的相關(guān)代碼,我無法準(zhǔn)確判斷原因。

以上面的代碼結(jié)構(gòu)為例,你很可能在 a.h 里引用了 SDK 的頭文件,然后在 a.cpp 里面引用了 a.h 頭文件,類似這樣

// a.h 文件內(nèi)容
#ifndef _a_h_
#define _a_h_
#include "aip-cpp-sdk-0.4.0/speech.h"
#include <json/json.h>

bool call_speech();
#endif


// a.cpp 文件內(nèi)容
#include "a.h"
#include <json/json.h>

bool call_speech() {
.......

這種寫法就會(huì)出現(xiàn) “重復(fù)定義” 的錯(cuò)誤,。


SDK 下載地址: http://ai.baidu.com/download?...

怣痛 回答

跨平臺(tái)方便。新的 arch 只需要寫一個(gè)從 plan 9 匯編到 target arch 匯編的轉(zhuǎn)譯器就行了。

孤慣 回答

這樣寫是沒有問題,只不過因?yàn)閍jax是異步的,所以你如果直接在fetch后面的代碼里拿text是拿不到的

夢一場 回答
電腦C盤每個(gè)文件夾作用:

1、Documents and Settings是什么文件?答案:是系統(tǒng)用戶設(shè)置文件夾,包括各個(gè)用戶的文檔、收藏夾、上網(wǎng)瀏覽信息、配置文件等。補(bǔ):這里面的東西不要隨便刪除,這保存著所有用戶的文檔和賬戶設(shè)置,如果刪除就會(huì)重新啟動(dòng)不能登陸的情況,尤其是里面的default user、all users、administrator和以你當(dāng)前登陸用戶名的文件夾。

2、Favorites是什么文件?答案:是收藏夾,存放你喜歡的網(wǎng)址??梢栽谄渲蟹啪W(wǎng)址快捷方式和文件夾快捷方式,可以新建類別(文件夾)。
 
3、Program Files是什么文件?答案:應(yīng)用軟件文件夾 裝軟件的默認(rèn)路徑一般是這里!當(dāng)然里面也有些系統(tǒng)自身的一些應(yīng)用程序。

4、Common Files是什么文件?答案:Common Files. 這個(gè)文件夾中包含了應(yīng)用程序用來共享的文件,很重要,不能亂刪除 Common Files這個(gè)文件是操作系統(tǒng)包擴(kuò)系統(tǒng)程序和應(yīng)用程序 Common Files是應(yīng)用程序運(yùn)行庫文件數(shù)據(jù)庫覆蓋了大約1000多個(gè)最流行的應(yīng)用程序的插件,補(bǔ)丁等等 文件夾common files里很多都是系統(tǒng)文件,不能隨意刪除,除非確定知道是干什么用的,沒用的可以刪掉。不過就算刪掉了有用的東西,也沒大的關(guān)系,頂多是某些軟件用不了,不會(huì)造成系統(tǒng)崩潰。

5、ComPlus Applications是什么文件? 答案:ComPlus Applications: 微軟COM+ 組件使用的文件夾,刪除后可能引起COM+ 組件不能運(yùn)行。

6、DIFX是什么文件?答案:不可以刪除,已有的XML數(shù)據(jù)索引方法從實(shí)現(xiàn)思想上可分為兩類:結(jié)構(gòu)歸納法和節(jié)點(diǎn)定位法.這兩種方法都存在一定的問題,結(jié)構(gòu)歸納法的缺點(diǎn)是索引規(guī)模較大而且難以有效支持較復(fù)雜的查詢,而節(jié)點(diǎn)定位法的主要缺點(diǎn)是容易形成過多的連接操作.針對這些問題,提出了一種新的動(dòng)態(tài)的XML索引體系DifX,它擴(kuò)展了已有的動(dòng)態(tài)索引方法,采用一種動(dòng)態(tài)的Bisimilarity的概念,可以根據(jù)實(shí)際查詢需求以及最優(yōu)化的要求動(dòng)態(tài)決定索引中保存的結(jié)構(gòu)信息,以實(shí)現(xiàn)對各種形式的查詢最有效的支持.實(shí)驗(yàn)結(jié)果證明DifX是一種有效而且高效的XML索引方法,其可以獲得比已有的XML索引方法更高的查詢執(zhí)行效率.。

7、Internet Explorer是什么文件?答案:不用說了,肯定不能刪除,IE,瀏覽網(wǎng)頁的。

8、Kaspersky Lab是什么文件?答案:卡巴斯基的文件包,這個(gè)是卡巴的報(bào)告,在 C:\Documents and Settings\All Users\Application Data\Kaspersky Lab\AVP6\Report 的更新文件中有很多report文件 很占地方的 刪除了就好了, 1利用卡巴自帶的清理功能,但不能完全清理干凈。 2關(guān)閉自我保護(hù),然后將report文件夾下面的文件手動(dòng)刪除。

9、Messenger是什么文件?答案:系統(tǒng)自帶的MSN是完全可以刪除的。 相信有不少人都在使用MSN,可能有同樣的經(jīng)歷,安裝完 新的MSN 后,可每每打開 MSN 首先跳出來的是舊版,而不是新版。即使在系統(tǒng)中刪除了老版本,但過了不久也會(huì)自動(dòng)恢復(fù)回來。 如果要徹底刪除老版本.可以點(diǎn)擊"開始"->"運(yùn)行"-> 代碼: RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove。

10、microsoft frontpage是什么文件?答案:那個(gè)是系統(tǒng)自帶的網(wǎng)頁編輯器。

11、Microsoft Silverlight是什么文件?答案:Silverlight是于Adobe Flash基本相同的軟件,運(yùn)行在瀏覽器中的插件。實(shí)現(xiàn)交互、動(dòng)畫等功能。使用XAML文件支持,支持.net運(yùn)行庫。 program files是Windows操作系統(tǒng)中所有應(yīng)用程序的位置,大是正常的。很多情況都可能造成program files創(chuàng)建文件夾,一般是安裝應(yīng)用程序后創(chuàng)建的。您需要提供出文件夾名稱我們才可以確切的說是不是無用的文件夾。 一般情況這里的文件夾不可以刪除的,如果刪除會(huì)影響系統(tǒng)或應(yīng)用程序無法運(yùn)行。

12、Movie Maker是什么文件?答案:movie maker是 微軟提供的 捆綁系統(tǒng)的一個(gè)視頻編輯軟件 我的這個(gè)文件也是空的,據(jù)猜測,應(yīng)該是ghost版的系統(tǒng)優(yōu)化掉了這個(gè)軟件。 完全可以刪除,不過系統(tǒng)總是重建這個(gè)文件夾。 可以用unlocker軟件刪除。 你無法刪除的原因是仍然有桌面進(jìn)程調(diào)用這個(gè)文件。 不解除鎖定是無法刪除的。

13、MSBuild是什么文件?答案:沒找到,應(yīng)該是系統(tǒng)相關(guān)的,最好別刪!

14、MSN Gaming Zone是什么文件?答案:一些系統(tǒng)自帶的撲克牌等小游戲,可以刪除 控制面板-〉添加或刪除程序-〉添加/刪除windows組件,然后在列表里面找到你要?jiǎng)h除的outlook和msn explorer,把前面的勾去掉,就能刪除了。

15、MSXML 6.0是什么文件?答案:msxml 指微軟的xml語言解析器,用來解釋xml語言的。就好像html文本下再到本地,瀏覽器會(huì)檢查html的語法,解釋html文本然后顯示出來一樣。要使用xml文件就一定要用到xml parser。不過不僅僅微軟有,像ibm,sun都有自己的xml parser。

16、NetMeeting是什么文件?答案:是Windows自帶的MSN的文件,如果你不用MSN以及Outlook Express,你完全可以把它刪掉。 不過也占不多大地方的。是Windows自帶的MSN的文件,如果你不用MSN以及Outlook Express,你完全可以把它刪掉。不過還是推薦看下網(wǎng)上的卸載方式,畢竟用系統(tǒng)自帶的卸載方式比較安全。NetMeeting文件夾是系統(tǒng)自帶的有關(guān)遠(yuǎn)程控制的部分,你刪掉后這個(gè)功能不能使用,但不影響正常操作,但是由于是系統(tǒng)自帶所以會(huì)自動(dòng)生成,也有病毒喜歡潛伏在此文件夾內(nèi),不過并不是簡單的通過刪除文件夾可以解決的 NetUpdateService.exe這個(gè)進(jìn)程如果用戶名項(xiàng)是system的話應(yīng)該就是你的自動(dòng)更新服務(wù)了,如果不用自動(dòng)更新的話最好關(guān)掉,省得浪費(fèi)資源。

17、Online Services是什么文件?答案:上網(wǎng)用的!不能刪除!

18、Outlook Express是什么文件?答案:Outlook express 是Windows內(nèi)置的郵件收發(fā)端 他的作用就是你不必每次登郵箱都要上網(wǎng)頁只要打開outlook express就可以收發(fā)郵件了!?。。?!級別:先知是收發(fā)電子郵件的軟件。 他是一個(gè)收發(fā)電子郵件的軟件,由微軟研發(fā)。

19、Reference Assemblies是什么文件?答案:系統(tǒng)相關(guān)的!最好別刪除。

20、SigmaTel是什么文件?答案:這個(gè)文件是有用的文件!此文件是計(jì)算機(jī)聲卡的驅(qū)動(dòng)!注意!系統(tǒng)磁盤里的文件不懂的話,千萬不可亂刪除哦!

21、VMware是什么文件?答案:系統(tǒng)文件,不要亂動(dòng)。

22、Windows Media Connect 2是什么文件?答案:程序的東西,別刪除!

23、Windows Media Player是什么文件?答案:是系統(tǒng)自身的一個(gè)播放軟件!

24、Windows Media Player 答案:使用 Microsoft Windows Media Player,您可以播放和組織計(jì)算機(jī)和 Internet 上的數(shù)字媒體文件。這就好象把收音機(jī)、視頻播放機(jī)、CD 播放機(jī)和信息數(shù)據(jù)庫等都裝入了一個(gè)應(yīng)用程序中。使用 Windows Media Player,您可以收聽世界各地電臺(tái)的廣播、播放和復(fù)制您的 CD、查找在 Internet 上提供的視頻,還可以創(chuàng)建您的計(jì)算機(jī)上所有數(shù)字媒體文件的自定義列表。 總之,就是一種多媒體播放器,集視頻與音頻于一身。

25、Windows NT是什么文件?答案:一種網(wǎng)絡(luò)操作系統(tǒng),特點(diǎn)如下: 1.將聯(lián)網(wǎng)能力加入到操作系統(tǒng)中,使之成為操作系統(tǒng)功能的一個(gè)組成部分。 2.系統(tǒng)直接支持網(wǎng)絡(luò)上各主機(jī)之間的文件復(fù)制、用戶之間的電子郵件、支持作為仿真終端實(shí)現(xiàn)對遠(yuǎn)程主機(jī)的登錄等等。而用戶不需要在機(jī)器上再安裝此類網(wǎng)絡(luò)服務(wù)軟件。 3.由于系統(tǒng)支持多個(gè)網(wǎng)絡(luò)協(xié)議,因此對現(xiàn)存的多種網(wǎng)絡(luò)、網(wǎng)絡(luò)服務(wù)器,都能很容易地實(shí)現(xiàn)數(shù)據(jù)交換4.網(wǎng)絡(luò)具有開放式結(jié)構(gòu),網(wǎng)絡(luò)中使用地各種數(shù)據(jù)傳輸、網(wǎng)絡(luò)驅(qū)動(dòng)程序都可以被動(dòng)態(tài)地裝入和卸出,而且不同種類地功能部件可以并存。這些都有利于網(wǎng)絡(luò)功能地修改和擴(kuò)充。

26、WinRAR是什么文件?答案:winrar,是一款比較優(yōu)秀的壓縮解壓縮軟件,支持鼠標(biāo)拖放及外殼擴(kuò)展,完美支持 ZIP 檔案,內(nèi)置程序可以解開 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多種類型的壓縮文件;具有估計(jì)壓縮功能,你可以在壓縮文件之前得到用 ZIP 和 RAR 兩種壓縮工具各三種壓縮方式下的大概壓縮率;具有歷史記錄和收藏夾功能;壓縮率相當(dāng)高,而資源占用相對較少、固定壓縮、多媒體壓縮和多卷自釋放壓縮是大多壓縮工具所不具備的;使用非常簡單方便,配置選項(xiàng)不多,僅在資源管理器中就可以完成你想做的工作;對于 ZIP 和 RAR 的自釋放檔案文件( DOS 和 WINDOWS 格式均可),點(diǎn)擊屬性就可以輕易知道此文件的壓縮屬性,如果有注釋,還能在屬性中查看其內(nèi)容。

27、Xerox是什么文件?答案:Xerox文件夾是XP自己安裝的,為自帶的一些圖像處理軟件作臨時(shí)空間用。 文件夾的名稱源自Microsoft采用了Xerox公司授權(quán)的技術(shù),該文件夾受WFP (Windows File Protection)保護(hù),所以不可能(也沒必要)刪除。 ATI Technologies是顯卡控制程序,跟電腦芯片有關(guān),不要?jiǎng)铀?Online Services是網(wǎng)絡(luò)服務(wù)文件夾 NetMeeting是MS最早基于IP聊天的一種工具,Netmeeting功能強(qiáng)大,除了語音、視頻,它還有文字聊天、電子白板、文件傳送、程序共享等等。 可以刪除 不過,在這個(gè)文件夾內(nèi)的文件夾都是比較重要的,或者經(jīng)常用的,最好不要?jiǎng)樱缓镁蜁?huì)對系統(tǒng)造成影響,還不好恢復(fù)。

>>原文來源<<

初心 回答

此tree非彼tree

每一次遞歸的時(shí)候 這個(gè)tree的指向是不同的

夕顏 回答

ISO C 標(biāo)準(zhǔn)中寫到

6.3.1.3 Signed and unsigned integers

When a value with integer type is converted to another integer type
other than _Bool, if the value can be represented by the new type, it
is unchanged. Otherwise, if the new type is unsigned, the value is
converted by repeatedly adding or subtracting one more than the
maximum value that can be represented in the new type until the value
is in the range of the new type. Otherwise, the new type is signed and
the value cannot be represented in it; either the result is
implementation-defined or an implementation-defined signal is raised.

換句話說,unsigned char 的表示范圍是 [0, 255],不能表示 -1,于是將 -1 加上 256 得到 255。

如果是把 signed char 型 -1 轉(zhuǎn)成 unsigned int,則用 -1 加上 4294967296 得到 4294967295。

對硬件來說,從有符號到無符號的轉(zhuǎn)換就是簡單地在前面補(bǔ)符號位或者直接截?cái)唷?/p>

黑與白 回答

路徑改成
val bankText = sc.textFile("file:\\D:/Projects/Zeppelin/bank/bank-full.csv")

雨蝶 回答

socket進(jìn)程數(shù)跟CPU核數(shù)有關(guān)系,一般2核開4個(gè)進(jìn)程,保持幾十萬的并發(fā)鏈接是沒問題的

朽鹿 回答

我覺得可以這樣理解

首先理解方法本身的意思:
Streamreduce方法,翻譯過來是聚合或者是匯聚成一個(gè)的意思,由于Stream本身就代表著一堆數(shù)據(jù),那stream.reduce()方法顧名思義就是把一堆數(shù)據(jù)聚合成一個(gè)數(shù)據(jù)

理解了reduce方法的意思,再來看看這個(gè)方法掛靠的對象是stream,是一個(gè)流,了解一下流的工作方式:
流底層核心其實(shí)是Spliterator接口的一個(gè)實(shí)現(xiàn),而這個(gè)Spliterator接口其實(shí)本身就是Fork/Join并行框架的一個(gè)實(shí)現(xiàn),所以歸根結(jié)底要明白流的工作方式,就要明白一下Fork/Join框架的基本思想,即:以遞歸的方式將可以并行的任務(wù)拆分成更小的子任務(wù),然后將每個(gè)子任務(wù)的結(jié)果合并起來生成整體的最后結(jié)果,畫了個(gè)草圖如下

clipboard.png

理解了方法本身的意思以及流的工作方式,再結(jié)合到一起理解一下stream.reduce()方法,即用Fork/Join的方式把一堆數(shù)據(jù)聚合成一個(gè)數(shù)據(jù),因此可以畫出reduce方法的運(yùn)行草圖

clipboard.png

結(jié)合草圖,要實(shí)現(xiàn)stream.reduce()方法,必須要告訴JDK

  1. 你有什么需求數(shù)據(jù)要匯聚?(Stream已經(jīng)提供了數(shù)據(jù)源,對應(yīng)上面草圖的A元素)

  2. 最后要匯聚成怎樣的一個(gè)數(shù)據(jù)類型(對應(yīng)reduce方法的參數(shù)一,對應(yīng)上面草圖的B元素)

  3. 如何將需求數(shù)據(jù)處理或轉(zhuǎn)化成一個(gè)匯聚數(shù)據(jù)(對應(yīng)reduce方法的參數(shù)二,對應(yīng)上面草圖的匯聚方式1)

  4. 如何將多個(gè)匯聚數(shù)據(jù)進(jìn)行合并(對應(yīng)reduce方法的參數(shù)三,對應(yīng)上面草圖的匯聚方式2)

再結(jié)合你給的map方法,其實(shí)是要把O類數(shù)據(jù)的流,最后轉(zhuǎn)化為一個(gè)I類數(shù)據(jù)的List,因此按照上面的步驟可以進(jìn)行對照

  1. 你有什么需求數(shù)據(jù)要匯聚?(O類數(shù)據(jù)流)

  2. 最后要匯聚成怎樣的一個(gè)數(shù)據(jù)類型(一個(gè)集合,new ArrayList()

  3. 如何將需求數(shù)據(jù)處理或轉(zhuǎn)化成一個(gè)匯聚數(shù)據(jù)(根據(jù)mapper把O轉(zhuǎn)化為I,再用List.add方法)

  4. 如何將多個(gè)匯聚數(shù)據(jù)進(jìn)行合并(兩個(gè)集合合并,用List.addAll()

最后補(bǔ)充一點(diǎn),若是你的參數(shù)真是Stream<I> streamFunction<I, O> mapper,建議不要用reduce方法,這么寫可能會(huì)更好一點(diǎn)

public static <I, O> List<O> map(Stream<I> stream, Function<I, O> mapper) {
        return stream.map(mapper).collect(Collectors.toList());
    }
蝶戀花 回答

解決了,已AC。

#include <iostream>
#include <cstring>
#define maxn 85
using namespace std;
int main(){
    int n,flag;
    char a[maxn];
    cin>>n;
    while(n--){
        cin>>a;
        for(int i=1;i<=strlen(a);i++){
            if(strlen(a)%i==0){
                flag=1;
                for(int j=i;j<strlen(a);j++){
                    if(a[j]!=a[j%i]){
                        flag=0;
                        break;
                    }
                }
                if(flag){
                    cout<<i<<endl;
                    if(n) cout<<endl;
                    break;
                }
            }
        }
    }
    return 0;
}
背叛者 回答

你都對需求進(jìn)行交付了!

可以重構(gòu),但是你要考慮當(dāng)下適不適合重構(gòu)!

你覺得有很大問題需要重構(gòu),那你要跟領(lǐng)導(dǎo)商量啊