不知道你說(shuō)的 “微信內(nèi)置的瀏覽器” 是指瀏覽器,還是小程序。
你要測(cè)試自己的手機(jī),還是別人的?
如果具體一點(diǎn)(最好有截圖),也許我能給出更好的建議。
這里給個(gè)思路參考下。
以測(cè)試自己手機(jī)的微信瀏覽器為例,可以采用 MITM(中間人攻擊)方式把 cookie 注入到瀏覽器。
假設(shè)要注入 cookie 到 x.y 網(wǎng)站,流程如下
全局安裝eslint試試看
使用模型和模型關(guān)系的好處是:
join的時(shí)候還得去關(guān)心join的外鍵是叫xx_id呢還是叫id呢join便于閱讀。而且關(guān)系可以一直連下去,如: $order->user->userAddress->province->name,如果用join的話得join3個(gè)表。creating、updating、deleting等事件,舉個(gè)例子,當(dāng)用戶下單時(shí)需要給用戶發(fā)一條短信,就可以監(jiān)聽(tīng)order的created事件進(jìn)行編碼,不用把發(fā)短信代碼放在創(chuàng)建訂單的代碼里;再舉個(gè)例子,添加商品分類需要加個(gè)日志功能,但是添加分類有多個(gè)入口,比如在添加商品的時(shí)候可以輸入個(gè)新分類添加商品同時(shí)添加分類,也可以在分類管理里去單獨(dú)加分類,而這兩個(gè)入口的添加分類的代碼都是Category::create([xx]),如果要寫(xiě)日志的話使用模型監(jiān)聽(tīng)器只需要在一個(gè)地方寫(xiě)即可。可以了解下。但如果他用的是DB::table()->insert的話是做不到只修改一個(gè)地方完成這功能的。比如這個(gè)user控制器要查詢用戶昵稱 還要先引入data模型use AppModelsData;還不如DB::table('data')->where('uid',$uid)->get()一句話完事了呢
不能只考慮眼前的控制器,假如還有個(gè)order,存了個(gè)user_id,要輸出user_name,定義好關(guān)系的話直接$order->user->user_name即可;假如還有個(gè)用戶地址、用戶優(yōu)惠、用戶xxx各種,每次join不覺(jué)得麻煩嘛。。
F12 -> Application -> Storage -> Cookies ,選中 Back 鍵可刪。
cookie是不允許跨域傳輸?shù)?,所以跨域的cookie的是不會(huì)自動(dòng)添加到請(qǐng)求中的。
你可以先獲取本地cookie,然后在請(qǐng)求的時(shí)候,添加到請(qǐng)求中,然后一起發(fā)送過(guò)去
fetch的話,默認(rèn)是不發(fā)送cookie的,你可以修改request.credentials來(lái)讓它帶上cookie
接口的credentials只讀屬性Request指示用戶代理是否應(yīng)該在來(lái)自其他域的cookie發(fā)送跨域請(qǐng)求的情況下發(fā)送cookie。這與XHR的withCredentials標(biāo)志類似,但有三個(gè)可用值(而不是兩個(gè)):
omit:絕不發(fā)送cookie(默認(rèn))。
same-origin:如果URL與調(diào)用腳本位于相同的源,則發(fā)送用戶憑證(cookie,基本http認(rèn)證等)。
include:始終發(fā)送用戶憑證(cookie,基本http認(rèn)證等),即使是跨源呼叫。
fetch(url, {credentials: 'include'})
我使用這個(gè)方法,是可以帶上cookie請(qǐng)求的
fetch('url', {
method: 'post',
credentials: 'include'
})
expires選項(xiàng)用來(lái)設(shè)置“cookie 什么時(shí)間內(nèi)有效”。expires其實(shí)是cookie失效日期,expires必須是 GMT 格式的時(shí)間(可以通過(guò) new Date().toGMTString()或者 new Date().toUTCString() 來(lái)獲得)。
如expires=Thu, 25 Feb 2016 04:18:00 GMT表示cookie講在2016年2月25日4:18分之后失效,對(duì)于失效的cookie瀏覽器會(huì)清空。如果沒(méi)有設(shè)置該選項(xiàng),則默認(rèn)有效期為session,即會(huì)話cookie。這種cookie在瀏覽器關(guān)閉后就沒(méi)有了。
expires 是 http/1.0協(xié)議中的選項(xiàng),在新的http/1.1協(xié)議中expires已經(jīng)由 max-age 選項(xiàng)代替,兩者的作用都是限制cookie 的有效時(shí)間。expires的值是一個(gè)時(shí)間點(diǎn)(cookie失效時(shí)刻= expires),而max-age 的值是一個(gè)以秒為單位時(shí)間段(cookie失效時(shí)刻= 創(chuàng)建時(shí)刻+ max-age)。
另外,max-age 的默認(rèn)值是 -1(即有效期為 session );若max-age有三種可能值:負(fù)數(shù)、0、正數(shù)。負(fù)數(shù):有效期session;0:刪除cookie;正數(shù):有效期為創(chuàng)建時(shí)刻+ max-age;
業(yè)務(wù)需求是關(guān)閉瀏覽器干掉cookie,之前的思路是想著不設(shè)置expire/max-age關(guān)閉瀏覽器即cookie失效,但繞了一大圈,發(fā)現(xiàn)還是不行,最后找了一個(gè)模棱兩可的辦法, 即監(jiān)聽(tīng)關(guān)閉瀏覽器觸發(fā)一個(gè)方法,設(shè)置cookie失效,但監(jiān)聽(tīng)瀏覽器的方法找找看
#include <stdlib.h>
#include <iostream>
using namespace std;
const int maxn = 102;
int a[maxn][maxn];
int si,sj;
int n,m;
int dx[]= {-1,0,1,0};
int dy[]={0,-1,0,1};
int f( int a,int b) {return a>b? (a-b):(b-a);}
void bfs(int x,int y,int time,int &ok)
{
a[x][y]=0; int r = 0,c=0,max =0;
for ( int i =0;i<4;++i )
if (x+dx[i]>=0&&x+dx[i]<n&&y+dy[i]>=0&&y+dy[i]<m && a[x+dx[i]][y+dy[i]]>max )
{
r= x+dx[i];c=y+dy[i]; max=a[r][c];
}
if (!r&&!c) return;
if (f(si,r)+f(sj,c)<=time ) {ok =time;return;}
bfs(r,c,time+1,ok);
}
int main(int argc, char** argv) {
while ( cin>>n>>m&&n>0&&m>0)
{
for ( int i =0;i<n;++i )
for ( int j =0;j<m;++j) cin>>a[i][j];
cin>>si>>sj;
int ok =0;
bfs(0,0,1,ok);
if ( ok) cout<<ok<<endl;
else cout<<"impossible\n";
}
return (EXIT_SUCCESS);
}我把你的大作業(yè)都看了遍, 發(fā)現(xiàn)有一個(gè)問(wèn)題: LIST結(jié)構(gòu)體里面的head是一個(gè)STUDENT *, 而你整個(gè)項(xiàng)目都沒(méi)有對(duì)head進(jìn)行過(guò)malloc, 所以直接對(duì)head進(jìn)行->解引用操作是undefined behavior.
而你這里的student正是newList->head, 所以"無(wú)法給結(jié)構(gòu)體中一個(gè)變量賦值"是很正常的, 因?yàn)橐呀?jīng)是undefined behavior, 所以不是正常的代碼, 產(chǎn)生任何結(jié)果都是合理的.
解決途徑: createNewList函數(shù)里面增加newList->head = malloc(sizeof STUDENT);
PS: 小小的codereview, 在c語(yǔ)言中, malloc不要在前面顯式cast, 這是多余的, 也會(huì)掩蓋你未include某些關(guān)鍵頭文件的錯(cuò)誤. c++則必須cast, 因?yàn)閏++不允許void*(malloc的返回類型)隱式轉(zhuǎn)換到任意指針.
PPS: 寫(xiě)純c不要用vs, vs的c標(biāo)準(zhǔn)是非常殘廢的, 用clion或者codeblocks吧.
不明白你的問(wèn)題,意思是沒(méi)取到cookie還是不應(yīng)該取到cookie但是取到了
你這個(gè)是開(kāi)源項(xiàng)目中的demo代碼吧,開(kāi)源項(xiàng)目中在第一級(jí)目錄下通常都一個(gè)README.md的文件或者install.md的文件,這個(gè)文件中有編譯和安裝的說(shuō)明。
如果在源代碼目錄下找不到1點(diǎn)中所說(shuō)的文件,則到開(kāi)源項(xiàng)目網(wǎng)站去查找相關(guān)的編譯和安裝的說(shuō)明。
function checkSum(array){
let sum = 0;
array.forEach(arr => sum += arr);
return (sum >>16) + (sum & 0xffff)
}
大概就是這樣
下面是我寫(xiě)的python,我編程比較差。。。求更好的方法
import itertools
def main():
list1 = ['A', 'B', 'C', 'D','E']
list2 = [1,2,3,4]
result = itertools.permutations(list1, 4)
newlist = []
for item in result:
newlist.append(list(item))
newnewlist = []
for item in newlist:
item[0] = [list2[0],item[0]]
item[1] = [list2[1], item[1]]
item[2] = [list2[2], item[2]]
item[3] = [list2[3], item[3]]
for item in newlist:
print(item)
if __name__ == '__main__':
main()找到了原因:
shutdown 可以選擇關(guān)閉某個(gè)方向或者同時(shí)關(guān)閉兩個(gè)方向,shutdown how = 0 or how = 1 or how = 2 (SHUT_RD or SHUT_WR or SHUT_RDWR),后兩者可以保證對(duì)等方接收到一個(gè)EOF字符(即發(fā)送了一個(gè)FIN段),而不管其他進(jìn)程是否已經(jīng)打開(kāi)了這個(gè)套接字。而close不能保證,只有當(dāng)某個(gè)sockfd的引用計(jì)數(shù)為0,close 才會(huì)發(fā)送FIN段,否則只是將引用計(jì)數(shù)減1而已。也就是說(shuō)只有當(dāng)所有進(jìn)程(可能fork多個(gè)子進(jìn)程都打開(kāi)了這個(gè)套接字)都關(guān)閉了這個(gè)套接字,close 才會(huì)發(fā)送FIN 段。
因?yàn)槲业腸lient_data_socket是在父進(jìn)程產(chǎn)生的,子進(jìn)程關(guān)閉了并沒(méi)有發(fā)送FIN段,所以我需要用shutdown來(lái)發(fā)送FIN
c 語(yǔ)言的 宏 是自動(dòng)根據(jù)值來(lái)確定類型的??
宏是不帶類型信息的, 只是preprocessor的一個(gè)文本替換的, 與之相對(duì)的c++的模板則帶有類型信息.
請(qǐng)問(wèn) 宏 的實(shí)際應(yīng)用價(jià)值是什么??
簡(jiǎn)單的說(shuō), 就是文本替換, 只不過(guò)基于文本替換可以玩出來(lái)些花樣.
#define max(a,b) ((a)<(b)?(b):(a)), 可以傳int, float等等, 你可以理解為支持了重載, 也可以理解為支持了泛型, 雖然很丑陋233. 再舉個(gè)不那么常見(jiàn)的:#define MAKE_PAIR(T) \
typedef struct MAKE_PAIR##T{ \
T first; \
T second; \
} ##T##_pair
MAKE_PAIR(char);
MAKE_PAIR(int);
MAKE_PAIR(float);
這樣就直接定義了多個(gè)類型的pair. 也是對(duì)泛型的模擬.
我感覺(jué)他和 變量 的作用是一樣的..,而且相比變量感覺(jué)由于沒(méi)有聲明數(shù)據(jù)類型,在使用上更加不方便...
就是不方便呀, 而且不只是缺乏類型, 更重要的是它的scope是dynamic scope, 而不是大家所熟知的lexical scope, 前者的name lookup是在調(diào)用處尋找, 而后者則是在定義處. 這有時(shí)候會(huì)造成混亂.
能不用的時(shí)候就別用
回復(fù)OP的疑問(wèn): 你給的這兩個(gè)鏈接的說(shuō)法都不對(duì). inline這個(gè)keyword和語(yǔ)義inline本身無(wú)關(guān), 你添加了inline其實(shí)不會(huì)對(duì)編譯器有什么影響. 編譯器有自己的判斷. c的inline是c99開(kāi)始出現(xiàn)的, 貌似是學(xué)c++的. c語(yǔ)言的odr(或者說(shuō)c其實(shí)是沒(méi)有odr的, 這里只是代指那套規(guī)則)我不是很熟悉, 不過(guò)在c++里面inline關(guān)鍵詞的作用就是屏蔽odr檢查. 和inline的語(yǔ)義(內(nèi)聯(lián))沒(méi)有任何關(guān)系. 泛型的話也別看百度百科, 里面問(wèn)題一大堆. 多搜英文資料. 或者寫(xiě)寫(xiě)c++的模板就知道了. 上面那個(gè)pair應(yīng)該還是很容易看出泛型在c里面的應(yīng)用的. 不只是primitive type, 其實(shí)你自己的結(jié)構(gòu)體也可以這樣很輕松的做出搞出來(lái)pair.
常量區(qū),屬于常量字符串。
GCC表示沒(méi)有這個(gè)問(wèn)題
猜測(cè)是你IDE的問(wèn)題,不知道你什么IDE,估計(jì)是啟用了默認(rèn)庫(kù)文件的選項(xiàng)
題目的代碼格式難以入目
在C++里使用C庫(kù)的函數(shù)時(shí),你加了 extern "C" { } 嗎? 否則就會(huì)鏈接找不到。
原則上是沒(méi)有問(wèn)題的。
setState中很重要的三個(gè)功能是:
而且并不是說(shuō)只有setState才可以改變state。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(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
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(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é)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(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)師。