1. 程式人生 > >會話控制(基於Coookie,session和Url)

會話控制(基於Coookie,session和Url)

該筆記為觀看高洛峰關於會話控制視訊後寫的。其中的很多例子直接採用的視訊中的例子。包括大部分筆記內容都是稍微修改後直接套用了。
1 什麼是會話控制
    出現原因:http是無狀態協議的,每次都是不同的伺服器請求,無法維護兩個請求事務之間的關係.
    會話控制:能夠在網站中跟蹤一個變數,通過對變數的跟蹤,就可以使多個請求事物之間建立聯絡,根據授權和使用者身份顯示不同的內容,不同頁面
    cookie:是伺服器設定在客戶端的文字檔案,儲存客戶端得個人資訊.
2 會話跟蹤技術
    1 隱藏表單域
    2 url重寫
    3 cookie技術
    4 session技術
    
    隱藏表單技術:
        <input type="hidden" name="name" value="設定隱藏值">,在gethuopost方法中指定指定有關訊息的會話名稱和值
        
    url(統一資源定位)重寫:
        將唯一會話的id新增到url結尾,來進行標識
        http://www.lampbrother.net?id=1000
    cookie:將唯一的會話id存放在客戶端
    session:將唯一的會話id存放在伺服器端
2 會話跟蹤方式
    第一:通過url傳遞引數,使用超連結或者header()函式
    第二:使用隱藏表單域,提交給php指令碼
    第三:使用Cookie將使用者的資訊儲存在客戶端檔案中
    第四:使用Session將使用者的資訊儲存在伺服器端的資訊儲存在伺服器端
    
4 Cookie:
    1 Cookie的介紹:
        1 cookie是在http協議下,伺服器或指令碼在客戶端儲存維護資訊的一種方式
        2 cookie是web伺服器儲存在客戶端的一個很小的文字檔案,儲存客戶端的資訊,提高網頁的處理效率,降低伺服器負擔
        3 cookie儲存在客戶端,通常在瀏覽器的cookie臨時資料夾中,可以手動的刪除.如果cookie太多超過系統的允許範圍,系統將自動刪除
    
    2 cookie的工作原理
         1 當用戶訪問基於php技術的網站時,在php中可以使用setcookie()函式生成一個cookie,系統經過處理,將cookie傳送到客戶端並儲存在C:\Documents and Setting\使用者名稱\Cookies目錄下
        2 cookie是http標頭的一部分,在它之前不能有任何輸出空格和換行都不可以
        3 當客戶端再次訪問網站時,瀏覽器會自動把cookie目錄下與該站點對應的cookie資訊傳送到伺服器,伺服器將自動把客戶端傳來的cookie轉化成php的變數,.php5中存放在$_COOKIE全域性資料中
        4 接受和處理cookie.使用$_COOKIE獲取
    
        Setcookie()為頭資訊設定,在此之前不能有任何輸出
        boolsetcookie( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
        Name:呼叫名為cookiename的cookie 
        value :name對應的值
        exprice :設定cookie的過期時間和日期,用一個標 準的Unix時間標記,可以用time()函式取得,以秒為單位. 
        path :伺服器端的有效路徑,設定為“/”表示這個域中所有陣列都可以被訪問讀取。 
        Domain:設定cookie有效域名 
        secure :指明cookie只能通過安全的https傳送, 設為true時只能通過安全的https,預設為false.即設定是否僅在https安全連線時才傳送cookie到客戶端:0或 1
    
        刪除cookie:
            1 呼叫一個引數名為已經存在的cookied的名稱,則刪除就會刪除cookie
            2 設定cookie的失效時間為time()或者time()-1
    
        注意:當cookie被刪除時,它的值在當前頁面仍然有效.如果要把cookie設定成在瀏覽器關閉後就失效.那麼可以吧expiretime的值設為0,或者不設此值
    
        /*設定cookie*/
        $time=time()+3600;//設定時間為一個小時
        //儲存變數
        setcookie('username','admin',$time);
        setCookie('password','123456',$time);
    
        //儲存陣列
        setCookie("cookie[one]",'coo1',$time);
        setCookie("cookie[two]",'coo2',$time);
        /*刪除cookie*/
        //方式1:設定值為空
        setCookie('username',"");
        setCookie('cookie[one]',"");
        //方式1:設定過期時間
        setCookie('password',"coo1",time()-1);
        setCookie('cookie[two]',"coo2",time()-1);
        if(isset($_COOKIE)){
        }
    3 COOKIE的注意事項
        1 setcookie()之前不能有任何的輸出,空白和空格也不行(Setcookie()為頭資訊設定)
        2 setcookie()之後在當前頁面echo時不會輸出,必須重新整理或到下一個頁面才會輸出
        3 不同瀏覽對cookie的處理不同,客戶端可以禁用cookie,而且對瀏覽器的數量有限制.一個瀏覽器可以最多建立300個cookie,每個不能超過4kb,每個站點最多設定20個
        4 避免過度依賴cookie,因為客戶端會禁止掉cookie
    
7 session
    1 什麼是session?
        1 session從使用者訪問頁面開始,到斷開與網站的連線為止,形成一個會話的生命週期.在會話期間,分配客戶唯一的一個sessionID,用來標識當前使用者,與其他使用者進行區分
        2 session會話時,session會分別儲存在客戶端和伺服器端得兩個文職,對於客戶端:使用臨時的cookie儲存(cookie的名稱為PHPSESSID)或者通過url字串的形式傳遞.伺服器端也以文字的形式儲存在指定的session目錄中
        3 session通過id接受每一次訪問的請求,從而識別當前使用者,跟蹤和保持使用者的具體資料,以及session變數,可在session中國儲存數字或文字資料.比如session_name.這些資訊都儲存在伺服器端
        4 sessionID可以作為會話資訊儲存到資料庫中,進行session持久化.這樣可以跟蹤使用者的登陸次數,線上與否,線上時間
    2 cookie和session的區別:
        相同點:都可以在解決http無狀態的問題,使同一個客戶端在訪問網站的多次請求中,可以儲存,設定資訊,並且在整個web應用中共享
        
        不同:
        cookie的資訊儲存在客戶端
        session:儲存在伺服器端
    
        聯絡:當使用基於cookie的session時,session DI一般儲存在cookie中
    3 設定session
        1 開啟會話
            session_start()        功能 : 1開始一個會話,2 返回已經存在會話
            說明:這個函式沒有引數,且返回值為true,如果使用基於cookie的sessin,那麼在session_satrt()之前不能有任何的輸出,包括空白
    
        2 註冊會話
            php5 使用$_SESSION['KEY']=VALUE方式,類似於GET,POST,COOKIE
    
        3 使用會話之前必須session_start()啟動會話,這樣就可以使用$_SEESION超全域性陣列訪問變量了
            判斷是否設定session
            if(isset($_SESSION))...;
        
        如果在php.ini中session.auto_start=1;開啟,則在每個頁面執行session_start(),不需要手工設定.
        缺點:不能將物件放入session中
        
        //開啟一個session會話,或者返回已經存在的session
        session_start();
        //這隻session
        $_SESSION['USER']='admin';
        $_SESSION['username']='admin_root';
        //獲得session_id()
        //1 PHPSESSID
        echo $_COOKIE['PHPSESSID'].'<br>';
        //2 session_name()
        echo $_COOKIE[session_name()].'<br>';
        //3 session_id()
        echo session_id().'<br>';
    4 銷燬session
        
        登出變數:
            1 unset($_SESSION['XXX']):用於刪除單個session變數
                注意:不要使用unset($_SESSION),此函式不可用,會刪除全域性的$_SESSION銷燬
        
            2 $_SESSION=array():刪除多個session變數
            3 session_unset():刪除所有的session變數
        銷燬session_destroy():結束當前的會話,並清空會話中的所有資源.該函式不會unset(釋放)和當前session相關的全域性變數,也不會刪除客戶端的session cookie
                //返回已經存在的session
                session_start();
    
                //清空session值
                $_SESSION=array();
    
                //如果是基於Cookie的session,則清空cookie中的session_id()
                if(isset($_COOKIE[session_name()])){
                    //  '/':在php.ini中年的cookie.path='/';
                    setCookie($_COOKIE[session_name()],'',time()-3600,'/');
                }
                //銷燬session
                session_destroy();
            注:php預設的session是基於cookie的,如果要刪除cookie的話,必須藉助setcookie()函式
        
    5 儲存session資料
        1 儲存基本資料型別
        2 儲存陣列
        3 儲存物件
        session_start();
        //存取標量
        $_SESSION['USER']='ADMIN';//STRING
        $_SESSION['COUNT']=10;//INT
        $_SESSION['PRICE']=99.99;//FLOAT
        $_SESSION['IS_GOOD']=true;//BOOLEAN
        //存取陣列
        $_SESSION['USER_INFO']=array('username'=>'root','password'=>123456);
        //存取物件
        class Person{public $name='admin';public $age=23;    }
        $_SESSION['OBJ']=new Person;
        
        函式:
        1 session_id():用於獲取或取得當前的session的唯一識別符號號SID,php5中既可以附載入url取得當前會話的session_id和session_name
            SID:即使是一個字串session_name()=session_id();
            解釋:
            a 如果session_id()有具體指定的值得話,將取代當前的session_id值.當cookie沒有被禁用時,如果指定了一個session_id()值,每次啟動session_start()都會網客戶端傳送一個cookie值.不論當前SESSION_ID值是否與指定值相等
            b 如果session_id()沒有指定的值,則返回當前的SESSIONID,當前會話沒有開啟則返回空字串
            c 使用該函式必須在session_start()之前
            <?php
                //在session_start()之前設定session_id()
                session_id('lamp');
                session_start();
                echo '當前的session_id()為:'.session_id().'<br>';//輸出lamp
            ?>
        
        2 session_regenerate_id():該函式更換當前的session_id,但不改變當前的session資訊
            返回值:bool型
            session_id:命名規則[a-z, A-Z, 0-9 and '-,' ]
            //設定session_id=old_session[a-z, A-Z, 0-9 and '-,' ]
            session_id('old-session');
            $old_session_id=session_id();
    
            session_start();
            //更改session_id=new_session
            session_regenerate_id('new-session');
            $new_session_id=session_id();
            $_SESSION['USER']='ADMIN';//STRING
            echo '原來的session_id:'.$old_session_id.'<br>';
            echo '新的的session_id:'.$new_session_id.'<br>';
            print_r($_SESSION);
        3 session_name():獲取或者更改當前的session_name,注意:不能只有數字組成,必須至少包含一個字母,否則每時每刻會生成新的session_id
        
            注意: session_id()和session_name()都要在session_start()之前設定
            session_id('lamp2012');
            session_name('mySession');
            session_start();
            $_SESSION['USER']='ADMIN';//STRING
            echo 'session_id:'.session_id().'<br>';
            echo 'session_name:'.session_name().'<br>';
            print_r($_SESSION);
         
    6 session跨頁傳遞的三種問題:
        1 客戶端禁用了cookie
        2 瀏覽器出現了問題無法儲存cookie
        3 php.ini中的session.user_trans_sid=0或者編譯時沒有開啟--enable-trans-sid選項
        解決的三條途徑:
        1 在php.ini中開啟session.user_trans-sid=1,或者編譯時開啟--enable-trans-sid選項,讓php自動跨頁傳遞session_id
        2 手動通過url傳值,隱藏表單傳遞session_id
            <a href="index.php?<?php echo SID?>">sid</a>
            <a href="index.php?<?php echo session_name().'='.session_id()?>">sid</a
        3 用檔案,資料庫等形式儲存sessin_id,在跨頁過程中手工呼叫
            
    7 持久化session
        1 請求結束後所有的註冊變數都會自動被序列化(為了方便儲存到伺服器端得會話文字檔案中),獲取的時候在進行還原
        手動編碼:
        session_encode():序列號-編碼
        session_decode():還原-解碼
        
        警告:有些型別的資料不能被序列化因此也就不能儲存.包括resource變數和有迴圈引用的物件
    9 配置會話控制
        session.auto_start=0;//在請求啟動時初始化
        session.auto_start=0;//無需每次手動sessin_start(),不過該選項有一些限制,不能將物件放入會話,因為類的定義必須在會話之前載入在會話中重建物件
        session.cache_expire=180;//設定快取中的會話過期時間在n分鐘後
        session.cookie_lifetime=0;//設定按秒記的cookie的儲存時間,0表示知道瀏覽器被重啟
        session.cookie_path=/;//cookie的有效路徑
        session.cookie_domain=;//cookie的有效域
        session.name=PHPSSESID;//又在cookie裡的session_name()
        session.save_hander=files;//用於儲存/取回資料的控制方式
        session.save_path=/tmp;//在save_handler設為檔案是傳給控制器的引數,這是資料檔案的儲存路徑
        session.user_cookie=1;//是否使用cookies
        
        session.gc_maxlifetime=40;//指定過了多少秒之後資料就會被視為“垃圾”,並被清楚
    
        session.gc_probability=1//
        session.gc_divisor=100;//這兩個合起來就是啟動gc程序管理概率的,在session初使化時(session_start())
            session.gc_probability/session.gc_divisor:1/100,在session_start100次,有一次的概率刪除垃圾檔案
    10 用檔案儲存session資訊
        1: 將php.ini中的session.save_handler的cookie儲存方式選項user    
        2: 設定session操作中的回撥函式,在session_start()之前使用session_set_save_handler('open','close','read','write','destroy','gc');
        3: 開啟session_start();
            函式解析:
            open($session_path,$session_name):在session_start()時啟動,返回true
            close():session_close()和session_destroy()時呼叫,return true
            read($session_id):session_start()時和從$_SESSION取值的時呼叫,return true
            write($session_id,$session_data):在session_write_close()強制將資料寫入到$_SESSION全域性陣列中時呼叫,return true;
            destroy($session_id):在執行session_destroy()自動呼叫,return true
            gc($session_gc_lifetime):在執行session_start().read(),write()時自動呼叫,return true
        
        //引數:$save_path,$session_name
        function open($save_path, $session_name){
            //設定全域性的session資訊儲存路徑
            global $sess_save_path;
            //為session的儲存路徑賦值
            $sess_save_path=$save_path;
            return true;
        }
        //session_write_close()和session_destroy()時呼叫
        function close(){
            //在銷燬和關閉寫入時,不進行任何操作,返回true
            return true;
        }
        //在session_start(),$_SESSION,將session資料讀取到$_SESSION中時
        //引數:session_id
        function read($id){
            //獲得全域性的session儲存路徑
            global $sess_save_path;
            //拼接所需的檔案路徑名稱
            $sess_file=$sess_save_path.'/king_'.$id;
            //返回檔案的資訊,沒有檔案時返回false
            return    (string)@file_get_contents($sess_file);
        }
        //結束時和session_write_close()強制將SESSION資料防止在$_SESSION全域性變數時
        function write($id,$sess_data){
        
            global $sess_save_path;
            $sess_file=$sess_save_path.'/king_'.$id;
            //以w模式開啟檔案
            if(
[email protected]
($sess_file,'w')){ 將session資訊寫入指定的資源中 $return=fwrite($fp,$sess_data); fclose($fp); return $return; }else{ return false; } } //在destroy時呼叫 function destroy($id){ global $sess_save_path; $sess_file=$sess_save_path.'/king_'.$id; //刪除session路徑下指定的session信心 return @unlink($sess_file); } //在session_start(),read(),write()時 function gc($maxlifetime){ global $sess_save_path; //glob — 尋找與模式匹配的檔案路徑,返回陣列 //將路徑寫的所有超過gc生命週期的檔案刪除 foreach(glob($sess_save_path.'/king_*') as $filename){ if(filemtime($filename)+$maxlifetime < time()){ @unlink($filename); } } return true; } @session_set_save_handler('open','close','read','wite','destroy','gc'); @session_start(); 11 將session資訊儲存到資料庫 sql:測試表 create table session( PHPSSESID char(32), //session_id update_time int(10), //檔案的gc_maxlifetime client_ip char(15), //客戶端ip地址 data text) //session資訊 1:設定session.save_handler=user;//自定義session儲存方式 2 session.gc_maxlifetime=time;//gc回收垃圾的時間 3 在session_start()之前呼叫session_set_save_handler('open','close','read','write','destroy','gc'); 4 寫session處理類,靜態屬性和方法 5 開啟session_start(); <?php //session_set_save_handler class Session{ private static $handler=null;//傳進來的pdo控制代碼 private static $client_ip=null;//客戶端ip private static $lifetime=null;//生存時間(session.gc_maxlifetime) private static $time;//訪問時的時間戳 //設定初始化引數 private static function init($handler){ self::$handler=$handler; self::$client_ip=!empty($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:"unKnown";//設定客戶端的ip地址 self::$lifetime=ini_get('session.gc_maxlifetime');//gc回收垃圾的最大生命週期 self::$time=time(); } //設定自定義的session處理方式,並開啟session_start() public static function start(PDO $pdo){ self::init($pdo);//設定當前使用的pdo控制代碼 //__CLASS__:php起,返回類的名稱 session_set_save_handler( array(__CLASS__,'open'), array(__CLASS__,'close'), array(__CLASS__,'read'), array(__CLASS__,'write'), array(__CLASS__,'destroy'), array(__CLASS__,'gc') ); //開啟session session_start(); } //open處理方法,不進行任何操作,返回true public static function open($session_path,$session_name){ return true; } //close處理方法,不進行任何操作,返回true public static function close(){ return true; } //讀取session資料的操作 public static function read($session_id){ $sql='select update_time,client_ip,data from session where PHPSSESID="'.$session_id.'"'; $stmt=self::$handler->prepare($sql); $stmt->execute(array($session_id)); $result=$stmt->fetch(PDO::FETCH_ASSOC); //沒有查詢結果返回:'' if(!$result){ self::destroy($session_id); return ""; } //ip地址有誤返回:'' if($result['client_ip'] != self::$client_ip){ self::destroy($session_id); return ''; } //資料合法返回資料 return $result['data']; } //寫入資料庫 public static function write($session_id,$session_data){ $sql_select='select PHPSSESID,update_time,client_ip,data from session where PHPSSESID="'.$session_id.'"'; $stmt=self::$handler->prepare($sql_select); $stmt->execute(); //資料已經存在記錄則更新 if($result=$stmt->fetch(PDO::FETCH_ASSOC)){ if($result['data'] != $session_data || self::$time > ($result['update_time']+10)){ $sql_update='update sessoin set update_time=?,data=? where PHPSSESID="'.$session_id.'"'; $stmt_update=self::$handler->prepare($sql_update); if($stmt_update->execute(array(self::$time,$session_data))){ return true; } } }else{ //資料不存在記錄則插入記錄 if(!empty($session_data)){ $sql_insert='insert into session(PHPSSESID,update_time,client_ip,data) values(?,?,?,?)'; $stmt_insert=self::$handler->prepare($sql_insert); if($stmt_insert->execute(array($session_id,self::$time,self::$client_ip,$session_data))){ return true; } } } } //呼叫該方法刪除指定的session資訊 public static function destroy($session_id){ $sql='delete from session where PHPSSESID="'.$session_id.'"'; $stmt=self::$handler->prepare($sql); if($stmt->execute(array($session_id))){ return true; } } //超過最大生命週期的時候刪除資料 static function gc($session_gc_maxlifetime){ $sql="delete from session where update_time <?"; $stmt=self::$handler->prepare($sql); $stmt->execute(array(self::$time-$session_gc_maxlifetime)); return true; } } try{ $pdo=new PDO('mysql:host=localhost;dbname=demo;charset=utf8','root','123456'); }catch(PDOException $e){ echo $e->getMessage(); } Session::start($pdo); ?> 12 session儲存在memcache中 <?php class MemSession { private static $handler=null; private static $lifetime=null; private static $time = null; const NS='session_'; private static function init($handler){ self::$handler=$handler; self::$lifetime=ini_get('session.gc_maxlifetime'); self::$time=time(); } public static function start(Memcache $memcache){ self::init($memcache); session_set_save_handler( array(__CLASS__, 'open'), array(__CLASS__, 'close'), array(__CLASS__, 'read'), array(__CLASS__, 'write'), array(__CLASS__, 'destroy'), array(__CLASS__, 'gc') ); session_start(); } public static function open($path, $name){ return true; } public static function close(){ return true; } public static function read($PHPSESSID){ $out=self::$handler->get(self::session_key($PHPSESSID)); if($out===false || $out == null) return ''; return $out; } public static function write($PHPSESSID, $data){ $method=$data ? 'set' : 'replace'; return self::$handler->$method(self::session_key($PHPSESSID), $data, MEMCACHE_COMPRESSED, self::$lifetime); } public static function destroy($PHPSESSID){ return self::$handler->delete(self::session_key($PHPSESSID)); } public static function gc($lifetime){ return true; } private static function session_key($PHPSESSID){ $session_key=self::NS.$PHPSESSID; return $session_key; } } $memcache=new Memcache; $memcache->connect("localhost", 11211) or die("could not connect!");


相關推薦

會話控制基於Coookie,sessionUrl

該筆記為觀看高洛峰關於會話控制視訊後寫的。其中的很多例子直接採用的視訊中的例子。包括大部分筆記內容都是稍微修改後直接套用了。1 什麼是會話控制 出現原因:http是無狀態協議的,每次都是不同的伺服器請求,無法維護兩個請求事務之間的關係. 會話控制:能夠在網站

php進階篇--3.會話控制session與cookie

一、cookie簡介 Cookie是儲存在客戶端瀏覽器中的資料,我們通過Cookie來跟蹤與儲存使用者資料。一般情況下,Cookie通過HTTP headers從服務端返回到客戶端。多數web程式都支援Cookie的操作,因為Cookie是存在於HTTP的標頭

Fidder簡單使用方法HTTPS抓取url替換

session art 連接 nbsp rules 添加 代理 detail 接下來 Fidder是一個windows端主流的抓包工具,可以配置代理,抓https的數據,還可以修改請求體和內容下面是一些簡單的使用方法   安裝完畢後Tools

Python之進程同步控制鎖信號量事件 、進程間通信——隊列管道

load 很快 容器 數據安全 全部 傳遞 幫我 之前 引入 進程同步(multiprocess.Lock、multiprocess.Semaphore、multiprocess.Event) 鎖 —— multiprocess.Lock 通過剛剛的學習,我們千方百計實現了

select設置text的值選中兼容iosAndroid基於jquery

ios name aid UNC 其中 style 粘貼 one 部分   前一段時間改了一個bug,是因為select引起的。當時我沒有仔細看,只是把bug改完了就完事了,今天來總結一下。   首先說option中我們通常會設置value的屬性的,還有就是text值的,

CentOS7連線無線網有線網基於VMWare Workstation 14 Pro

1、連線有線網路 1)本機(Windows系統)中,開啟網路和共享中心,ip地址改為自動獲取; 2)保證本機連線有線網; 2)CentOS中選擇“應用程式”,“系統工具”,“設定”,“網路”,選擇開啟“有線連線”,即可上網,如下圖所示; 至此,可以發現VMWare啟用的Cent

HttpServletRequestWrapper使用技巧自定義session快取InputStream

一、前言   javax.servlet.http.HttpServletRequestWrapper 是一個開發者可以繼承的類,我們可以重寫相應的方法來實現session的自定義以及快取InputStream,在程式中可以多次獲取request body的內容。 二、自定義seesion impo

Spring Security會話控制單使用者登入

在專案開發過程中很難避免說單使用者登入系統,或者說對登入會話進行限制,例如說,只能兩臺機器登入使用者 那麼話不多說,直接看配置程式碼: XML配置 如果你想限制單個使用者訪問你的應用程式的能力。Spring Security通過後面簡單的配置馬

js中特殊符號轉義base64作為引數url作為引數傳遞要注意的問題

+ 空格 / ? % & = # %2B %20 %2F %3F %25 %26 &3D %23 str = str.replace(/\+/g,"%2B"); 將+號替換為十六進位制 1.當圖片base64碼作為引數

cmake工具使用簡明教程基於命令列gui,編譯到windowslinux雙平臺

cmake可以用來構建跨平臺的專案,本文簡要講解針對多目錄原始碼專案使用cmake構建和編譯的方法。 專案結構 整個工程多目錄多檔案組織而成,其中build目錄用於生成各平臺解決方案檔案的,程式碼如下 bird.h class bird

C#中自定義控制元件隱藏基類成員屬性、方法事件的方法

       編寫自定義控制元件時,總是繼承C#中提供的Control類,而Control類是C#中所有窗體控制元件的基類,裡面定義了大量的屬性、方法和事件,而很多基類成員在自定義控制元件中可能不需要,因為編寫者會希望在自定義控制元件中隱藏這些成員,避免使用者呼叫這些成員。

爬蟲原理與會話保持cookies、session詳解--python實現

一、爬蟲原理     我們知道網際網路是由大量計算機和網路構成的複雜系統,我們可以將其形象的比喻成一張蜘蛛網。網路的節點是計算機,計算機中儲存著大量的資料。爬蟲程式就是通過網路去採集指定計算機中資料的工具。一般來說,我們採集的資料大多是網頁上的資料,

Dojo初探之3:dojo的DOM操作、query操作domConstruct元素位置操作基於dojo1.11.2版本

前言: 前面兩章講了dojo的基本規範和配置,當然這個配置不是必須的,當你有這需求的時候就可以用到dojo的config配置。 綴述: 這章開始真正講解dojo的所有基本操作,包含dom、quer

php會話控制總結

1.什麼是SESSION?在web中的session指的就是使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是使用者瀏覽這個網站所花費的時間。從這個角度上看,session是一個特定的時間概念。例如:好比我們兩個人對話,從開始對話到結束對話,所經歷的這段時

Tensorflow 入門一 安裝配置,會話控制,變數常量,傳入值

Tensorflow: TensorFlow是谷歌基於DistBelief進行研發的第二代人工智慧學習系統,主要是深度神經網路模型。 也是一時興起開始學習這玩意,走到哪,部落格寫到哪裡,全當記錄。 主要參考資料一方面是0.8.0版極客學院翻譯版資料,另一方面是油管上週莫煩的

Apache+mod_wsgi 部署多個django專案基於同樣IP同樣埠,不同path

最近由於要在apache部署多個django專案,兩個專案要求使用同一個ip和port,請求不同path來訪問不同的專案。 環境:centos7+apache2.4.6 本次通過配置虛擬主機的方式實現。 1.在/etc/httpd/conf下建立extra目錄 2.在

Redis叢集研究實踐基於redis 3.0.5

前言 redis 是我們目前大規模使用的快取中介軟體,由於它強大高效而又便捷的功能,得到了廣泛的使用。現在的2.x的穩定版本是2.8.19,也是我們專案中普遍用到的版本。 redis在年初發布了3.0.0,官方支援了redis cluster,也就是叢集。至此結束了redi

快速瞭解會話管理三劍客cookie、sessionJWT

更多內容,歡迎關注微信公眾號:全菜工程師小輝。公眾號回覆關鍵詞,領取免費學習資料。 儲存位置 三者都是應用在web中對http無狀

java解析xml文件練習——通過應用包名獲取應用圖標即其他信息基於魅族應用商店

fin vma tdm row con smartd enter music close 1、解析包名數據文件(txt文件),並生成包名數組: package jsouphtml; import java.io.BufferedReader; import j

深度學習綜述LeCun、BengioHinton

想法 會有 區分 足夠 乘法 開發 訓練 repr 追蹤 原文摘要:深度學習可以讓那些擁有多個處理層的計算模型來學習具有多層次抽象的數據的表示。這些方法在很多方面都帶來了顯著的改善,包含最先進的語音識別、視覺對象識別、對象檢測和很多其他領域,比如藥物發現和基因組學等。深