6個知識點

一. CSRF跨站請求僞造 數組

首先說明一下什麼是CSRF(Cross Site Request Forgery)? 瀏覽器

跨站請求僞造是指攻擊者能夠在第三方站點製造HTTP請求並以用戶在目標站點的登陸態發送到目標站點,而目標站點未校驗請求來源使第三方成功僞造請求。 服務器

爲何會有CSRF? cookie

JS控制瀏覽器發送請求的時候,瀏覽器是根據目標站點,而不是來源站點,來發送cookie的,若是當前會話中有目標站點的cookie,就發送出去。核心問題是瀏覽器的會話機制,是跨站請求僞造漏洞的根源。 編碼


解決方法有三種: spa

1 使用token code

2 限制refer token

3 使用驗證碼技術 內存

 

二. 位圖(bitmap) 字符串

位圖是什麼?

位圖就是數組,通常來講是bit型的數組,具備快速定位某個值的功能,這種思想有很普遍的應用,好比下邊兩題:


1 找出一個不在5TB個整數中存在的數

假設整數是32位的,總共有4GB個數,咱們能夠用bitmap,每一個整數一個bit,這樣大概是4GB/8=512MB, 初始化時都爲0,

依次遍歷這個5TB個數,置相應位爲1,最後遍歷一次數組,找到第一個爲零數便可。


2 找出在5TB個數中只出現一次的數字

咱們至少須要「未出現」,「出現一次「,」出現屢次「等狀態,因此咱們能夠用2bit去表示,00,01,10分別表示「未出現」,「出現一次「,」出現屢次「。

又由於32位整數,得須要2*4GB/8=1GB, 因此基本還能夠存入內存,不然能夠先分區。

初始化bitmap爲00,而後依次遍歷這5TB個數,若是是00,則置爲01,若是是01,則置爲10,若是是10則不變。

最後遍歷此bitmap,找出全部值爲01的數字。

三. URI編碼(encodeURI)

由於瀏覽器會用一些特殊的字符做爲特定的意義,因此在要傳輸的內容上若是有這些特殊的字符的話,就須要對其進行轉義才能正確傳輸,如如下字符爲發送時候的關鍵字,即特殊字符

;/?:@&=+$,#


因此咱們在遇到傳輸此字符時能夠先編碼,而後服務器端在進行解碼,就能夠拿到正確的數據了。如要傳輸文本的內容爲:

A=b&c=d
則編碼爲
A%3Db%26c%3Dd


服務器端進行相應的解析便可拿到A=b&c=d

可能有人要問了,若是被編碼的裏邊含有%怎麼辦,一樣的,若是被編碼的字符串有%則被相應的編碼爲%25,解碼的時候看到%25就是一個%


經常使用的編碼有:

= %3D

& %26

% %25

 

四. 天平

用天平找次品問題

具體問題是有一堆硬幣(n個),其中有一個較輕的是次品,用天平稱,至少稱多少次才能找出這次品?

不少人直接想到的就是二分法,先均分爲2份,而後稱,次品必定在較輕的一邊,而後繼續二分,直到找到那個次品,因此須要log以2爲底n的對數次。其實還有更好的方法,此方法的侷限在於認爲天平一次只能分出來兩種狀態。實際上是能夠分紅三種狀態的。


方法以下:

每次把待測物品分紅三組,稱其中兩組,這時候咱們就能夠分辨出次品在哪一組中。若是天平平衡,則次品在沒有稱的那一組中,不然,次品在較輕的一組中。此時物品有n/3個,而後繼續這樣稱,能夠看到,每次都會將原物品數刪去2/3,因此總的此時是log以3爲底n的對數次

關係爲:
物品數目n                                         次數m
     2-3                                                    1
     4-9                                                    2
   10-27                                                  3
   28-81                                                  4 
   82-243                                                5

其實這道題還能夠進行變體,如有一堆硬幣(n個),其中有一個較輕的是次品,若是要求用天平稱m次就能將這次品找到,求最大的n

同理可知,答案是3的n次方

 

五. Catalan數

知識點:

 

1 通項公式:h(n)=C(n,2n)/(n+1)=(2n)!/((n!)*(n+1)!)

2遞推公式:h(n)=((4*n-2)/(n+1))*h(n-1); h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0).

3前幾項爲:h(0)=1,h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,......

應用:

網上不少,可搜,下面列出幾個簡單的。

 六. 海倫公式(求三角形的面積)

三邊長:a,b,c

則面積s = sqrt((p-a)*(p-b)*(p-c)*p) (其中p = (a+b+c)/2);

相關文章
相關標籤/搜索