主頁 > 後端開發 > php面試題之PHP核心技術

php面試題之PHP核心技術

2020-09-20 21:20:15 後端開發

一、PHP核心技術

更多PHP相關知識請關注我的專欄PHP?zhuanlan.zhihu.com

1.寫出一個能創建多級目錄的PHP函式(新浪網技術部)

<?php

    /**

     * 創建多級目錄

     * @param $path string 要創建的目錄

     * @param $mode int 創建目錄的模式,在windows下可忽略

     */

    function create_dir($path,$mode = 0777)

    {

        if (is_dir($path)) {

            # 如果目錄已經存在,則不創建

            echo "該目錄已經存在";

        } else {

            # 不存在,創建

            if (mkdir($path,$mode,true)) {

                echo "創建目錄成功";

            } else {

                echo "創建目錄失敗";

            }

        }

    }

?>

 

2.寫出smarty模板的特點(新浪網技術部)

速度快,編譯型,快取技術,插件機制,強大的表現邏輯

3.打開php.ini中的safe_mode,會影響哪些函式?至少說出6個,(新浪)

safe_mode,PHP安全模式,它提供一個基本安全的共享環境,在一個有多個用戶賬戶存在的php開發的web服務器上,當安全模式打開的時候,一些函式將被完全的禁止,而另一些函式的功能將會受到限制,如:chdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,mkdir,unlink等,
注意,在php5.3以上版本,safe_mode被棄用,在php5.4以上版本,則將此特性完全去除了,

4.抓取遠程圖片到本地,你會用什么函式?(http://51.com筆試題)

file_get_contents或者curl

5.PHP的垃圾收集機制是怎樣的(騰訊)

PHP可以自動進行記憶體管理,清除不再需要的物件,
PHP使用了參考計數(reference counting)這種單純的垃圾回收(garbage collection)機制,每個物件都內含一個參考計數器,每個reference連接到物件,計數器加1,當reference離開生存空間或被設為NULL,計數器減1,當某個物件的參考計數器為零時,PHP知道你將不再需要使用這個物件,釋放其所占的記憶體空間,

6.請寫一段PHP代碼,確保多個行程同時寫入同一個檔案成功(騰訊)

核心思路:加鎖

<?php

    $fp = fopen("lock.txt","w+");

    if (flock($fp,LOCK_EX)) {

        //獲得寫鎖,寫資料

        fwrite($fp, "write something");

  

        // 解除鎖定

        flock($fp, LOCK_UN);

    } else {

        echo "file is locking...";

    }

    fclose($fp);

?>

 

7.寫一個函式,盡可能高效的,從一個標準url里取出檔案的擴展名,例如:

http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或.php(新浪)

<?php

    // 方案一

    function getExt1($url){

        $arr = parse_url($url);

        //Array ( [scheme] => http [host] => www.sina.com.cn [path] => /abc/de/fg.php [query] => id=1 )

  

        $file = basename($arr['path']);

        $ext = explode('.', $file);

        return $ext[count($ext)-1];

    }

  

    // 方案二

    function getExt2($url){

        $url = basename($url);

        $pos1 = strpos($url,'.');

        $pos2 = strpos($url,'?');

  

        if (strstr($url,'?')) {

            return substr($url,$pos1+1,$pos2-$pos1-1);

        } else {

            return substr($url,$pos1);

        }

  

    }

  

    $path = "http://www.sina.com.cn/abc/de/fg.php?id=1";

    echo getExt1($path);

    echo "<br />";

    echo getExt2($path);

?>

 

相關題目:使用五種以上方式獲取一個檔案的擴展名,要求:dir/upload.image.jpg,找出.jpg或者jpg,必須使用PHP自帶的處理函式進行處理,方法不能明顯重復,可以封裝成函式,比如get_ext1(file_name)

8.寫一個函式,能夠遍歷一個檔案夾下的所有檔案和子檔案夾,(新浪)

<?php

    function my_scandir($dir){

        $files = array();

        if(is_dir($dir)){

            if ($handle = opendir($dir)) {

                while (($flie = readdir($handle))!== false) {

                    if ($flie!="." && $file!="..") {

                        if (is_dir($dir."/".$file)) {

                            $files[$file] = my_scandir($dir."/".$file);

                        } else {

                            $files[] = $dir."/".$file;

                        }

                    }

                }

                closedir($handle);

                return $files;

            }

        }

    }

?>

 

9.簡述論壇中無限分類的實作原理,(新浪)

創建類別表如下:

CREATE TABLE category(

cat_id smallint unsigned not null auto_increment primary key comment'類別ID',

cat_name VARCHAR(30)NOT NULL DEFAULT''COMMENT'類別名稱',

parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT'類別父ID'

)engine=MyISAM charset=utf8;

 

撰寫一個函式,遞回遍歷,實作無限分類

<?php

    function tree($arr,$pid=0,$level=0){

        static $list = array();

        foreach ($arr as $v) {

            //如果是頂級分類,則將其存到$list中,并以此節點為根節點,遍歷其子節點

            if ($v['parent_id'] == $pid) {

                $v['level'] = $level;

                $list[] = $v;

                tree($arr,$v['cat_id'],$level+1);

            }

        }

        return $list;

    }

?>

  

10.寫一個函式,算出兩個檔案的相對路徑,如b='/a/b/12/34/c.php';計算出a的相對路徑應該是../../c/d(新浪)

<?php

    function releative_path($path1,$path2){

        $arr1 = explode("/",dirname($path1));

        $arr2 = explode("/",dirname($path2));

  

        for ($i=0,$len = count($arr2); $i < $len; $i++) {

            if ($arr1[$i]!=$arr2[$i]) {

                break;

            }

        }

  

        // 不在同一個根目錄下

        if ($i==1) {

            $return_path = array();

        }

  

        // 在同一個根目錄下

        if ($i != 1 && $i < $len) {

            $return_path = array_fill(0, $len - $i,"..");

        }

  

        // 在同一個目錄下

        if ($i == $len) {

            $return_path = array('./');

        }

  

        $return_path = array_merge($return_path,array_slice($arr1,$i));

        return implode('/',$return_path);

    }

  

    $a = '/a/b/c/d/e.php';

    $b = '/a/b/12/34/c.php';

    $c = '/e/b/c/d/f.php';

    $d = '/a/b/c/d/g.php';

  

    echo releative_path($a,$b);//結果是../../c/d

    echo "<br />";

    echo releative_path($a,$c);//結果是a/b/c/d

    echo "<br />";

    echo releative_path($a,$d);//結果是./

    echo "<br />";

?>

 

11.mysql_fetch_row()和mysql_fetch_array()有什么分別?

mysql_fetch_row()把資料庫的一列儲存在一個以零為基數的陣列中,第一欄在陣列的索引0,第二欄在索引1,依此類推,
mysql_fetch_assoc()把資料庫的一列儲存在一個關聯陣列中,陣列的索引就是欄位名稱,例如我的資料庫查詢送回“first_name”、“last_name”、“email”三個欄位,陣列的索引便是“first_name”、“last_name”和“email”,
mysql_fetch_array()可以同時送回mysql_fetch_row()和mysql_fetch_assoc()的值,

12.有一個網頁地址,比如PHP開發資源網主頁:http://www.phpres.com/index.html,如何得到它的內容?

方法1(對于PHP5及更高版本):

$readcontents=fopen("http://www.phpres.com/index.html","rb");

$contents=stream_get_contents($readcontents);

fclose($readcontents);

echo $contents;

 

方法2:
echo file_get_contents("http://www.phpres.com/index.html");

 

13.談談對mvc的認識

由模型(model),視圖(view),控制器(controller)完成的應用程式,
model層負責提供資料,和資料庫有關的操作都交給模型層來處理,view層則提供互動的界面,并輸出資料,而controller層則負責接收請求,并分發給相應的model來處理,然后呼叫view層來顯示,

14.What does the GD library do?(Yahoo)

GD庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片,在網站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網站資料生成報表,自從PHP 4.3.0版本后GD便內建在PHP系統中,

15.What function can you use to open a file for reading and writing?(Yahoo)

A.fget();
B.file_open();
C.fopen();
D.open_file();
答案:C
fget()這不是一個PHP函式,會引致執行錯誤,
file_open()這不是一個PHP函式,會引致執行錯誤,
fopen()這是正確答案,fopen()可以用來開啟檔案以便讀寫,
open_file()這不是一個PHP函式,會引致執行錯誤,

16.Smarty的原理

smarty是一個模板引擎,使用smarty主要是為了實作邏輯和外在內容的分離,如果不使用模板的話,通常的做法就是php代碼和html代碼混編,使用了模板之后,則可以將業務邏輯都放到php檔案中,而負責顯示內容的模板則放到html檔案中,
Smarty在執行display方法的時候,讀取模板檔案,并進行資料替換,生成編譯檔案,之后每次訪問都會直接訪問編譯檔案,讀取編譯檔案省去了讀取模板檔案,和字串替換的時間,所以可以更快,編譯檔案里時間戳記錄模板檔案修改時間,如果模板被修改過就可以檢測到,然后重新編譯(編譯是把靜態內容保存起來,動態內容根據傳入的引數不同而不同),
如果啟用了快取,則會根據編譯檔案生成快取檔案,在訪問的時候如果有快取檔案并且快取檔案沒有過期,則直接訪問快取檔案,

相關題目1:能夠使HTML和PHP分離開使用的模板

smarty,phplib等

相關題目2:您是否用過模板引擎?如果有您用的模板引擎的名字是?

Smarty

17.PHP如何實作頁面跳轉

方法一:php函式跳轉,缺點,header頭之前不能有輸出,跳轉后的程式繼續執行,可用exit中斷執行后面的程式,
header("Location:網址");//直接跳轉
header("refresh:3;url=http://axgle.za.NET");//三秒后跳轉

方法二:利用meta
echo"<meta http-equiv=refresh content='0;url=網址'>";

18.PHP可以和sql server/oracle等資料庫連接嗎?

可以

19.使用哪些工具進行版本控制?

SVN或者CVS

相關題目:您是否用過版本控制軟體?如果有您用的版本控制軟體的名字是?

TortoiseSVN-1.2.6

20.寫出一個正則運算式,過慮網頁上的所有JS/VBS腳本(即把script標記及其內容都去掉):

過濾JavaScript腳本參考:

<?php

    header("content-type:text/html;charset=utf-8");

  

    $script = "以下內容不顯示:<script type='text/javascript'>alert('cc');</script>";

    $pattern = '/<script[^>]*?>.*?</script>/si';

  

    echo preg_replace($pattern, "腳本內容", $script);//以下內容不顯示:腳本內容

?>

 

21.給定一行文本$string,如何撰寫一個正則運算式來去掉所有的HTML標記?

方案一,使用PHP內建函式strip_tags()除去HTML標簽

方案二,自定義函式,如下:

<?php

    header("content-type:text/html;charset=utf-8");

  

    function strip_html_tags($str){

        $pattern = '/<("[^"]*"|\'[^\']\*\'|[^>"\'])*>/';

        return preg_replace($pattern,'',$str);

    }

  

    // 實體

    $html = '<p id="">ddddd<br /></p>';

    echo strip_html_tags($html);

    echo "<br />";

  

    $html = '<p id=">">bb<br />aaa<br /></p>';

    echo strip_html_tags($html);

?>

 

22.請寫一個函式驗證電子郵件的格式是否正確(要求使用正則)(新浪)

preg_match('/^[\w\-\.]+@[\w\-]+(\.\w+)+$/',$email);

相關題目:請用正則運算式寫一個函式,驗證電子郵件的格式是否正確,(鑫眾人云)

23.請對POSIX風格和兼容Perl風格兩種正則運算式的主要函式進行類比說明(騰訊)

主要區別有以下三種:

preg_replace()里面的正則可以寫成型如:"/.xxx/"而ereg_replace()里面的正則需寫成型如 "xxx"

preg_replace()能操作陣列,而ereg_replace()不可以

在逆向參考用preg_replace()可使用0-99個,而ereg_replace()最多為9個

使用Perl兼容正則運算式語法的preg_match()函式通常是比ereg()更快的替代方案,

24.請寫出并說明如何在命令列下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞引數?(騰訊)

首先進入php安裝目錄
php -f d:/wamp/www/1.php 其中-f引數指定要執行的php檔案
php -r phpinfo(); 其中-r表示直接執行php代碼,無需寫開始結束標記

25.使用正則運算式提取一段標識語言(html或xml)代碼段中指定標簽的指定屬性值(需考慮屬性值對不規則的情況,如大小寫不敏感,屬性名值與等號間有空格等),此處假設需提取test標簽的attr屬性值,請自行構建包含該標簽的串(騰訊)

撰寫如下函式:

<?php

    header("content-type:text/html;charset=utf-8");

  

    function getAttrValue($str,$tagName,$attrName){

        $pattern1="/<".$tagName."(\\s+\\w+\s*=\\s*([\\'\\\"]?)([^\\'\\\"]*)(\\2))*\\s+".$attrName."\\s*=\\s*([\\'\\\"]?)([^\\'\\\"]*)(\\5)(\\s+\\w+\\s*=\\s*([\\'\\\"]?)([^\\'\\\"]*)(\\9))*\\s*>/i";

  

        $arr=array();

        $re=preg_match($pattern1,$str,$arr);

  

        if($re){

            echo"<br/>\$arr[6]={$arr[6]}";

        }else{

            echo"<br/>沒找到,";

        }

    }

  

    // 示例

    $str1="<test attr='ddd'>";

    getAttrValue($str1,"test","attr");//找test標簽中attr屬性的值,結果為ddd

    $str2="<test2 attr='ddd'attr2='ddd2't1=\"t1 value\"t2='t2 value'>";

    getAttrValue($str2,"test2","t1");//找test2標簽中t1屬性的值,結果為t1 value

?>

 

26.What does the following code do?Explain what's going on there.date);(Yahoo)

這是把一個日期從MM/DD/YYYY的格式轉為DD/MM/YYYY格式,
輸出26/08/2003

27.What function would you use to redirect the browser to a new page?(Yahoo)

A.redir()
B.header()
C.location()
D.redirect()
答案:B
redir()這不是一個PHP函式,會引致執行錯誤,
header()這個是正確答案,header()函式發送頭資訊,可以用來使瀏覽器轉向到另一個頁面,例如:header("Location:http://www.search-this.com/"),
location()這不是一個PHP函式,會引致執行錯誤,
redirect()這不是一個PHP函式,會引致執行錯誤,

28.When turned on____________will_________your script with different variables from
HTML forms and cookies.(騰訊)
A.show_errors,enable
B.show_errors,show
C.register_globals,enhance
D.register_globals,inject
答案:C

29.一個函式的引數不能是對變數的參考,除非在php.ini中把____設為on,
allow_call_time_pass_reference
是否啟用在函式呼叫時強制引數被按照參考傳遞

30.在HTML語言中,頁面頭部的meta標記可以用來輸出檔案的編碼格式,以下是一個標準的meta陳述句<META http-equiv='Content-Type'content='text/html;charset=gbk'>,請使用PHP語言寫一個函式,把一個標準HTML頁面???的類似meta標記中的charset部分值改為big5,(新浪)

請注意:
(1)需要處理完整的html頁面,即不光此meta陳述句
(2)忽略大小寫
(3)'和"在此處是可以互換的
(4)'Content-Type'兩側的引號是可以忽略的,但'text/html;charset=gbk'兩側的不行
(5)注意處理多余空格
撰寫正則運算式如下:
$reg1="/(<meta\\s*http-equiv\\s*=\\s*(['\"]?)Content-Type(\\2)\\s*content\\s*=\\s*(['\"])text\/html;charset=)(UTF-8)(\\4)(\\s*\/?>)/i";

31.PHP中如何判斷一個字串是否是合法的日期模式:2007-03-13 13:13:13,要求代碼不超過5行,(酷訊)

<?php

    function checkDateTime($data){

        if (date('Y-m-d H:i:s',strtotime($data)) == $data) {

            return true;

        } else {

            return false;

        }

    }

  

    // 示例

    $data = '2015-06-20 13:35:42';

    var_dump(checkDateTime($data));//bool(true)

  

    $data = '2015-06-36 13:35:42';

    var_dump(checkDateTime($data));//bool(false)

?>

 

32.PHP中,如何獲得一個陣列的鍵值?(酷訊)

使用key()可以獲得陣列中當前元素的鍵名,使用current()則可以回傳當前元素的值,
使用array_keys()則可以得到陣列中所有的鍵名,
使用foreach結構foreach($arr as value)可以通過value分別獲取鍵名和值,

33.如果模板是用smarty模板,怎樣用section陳述句來顯示一個名為$data的組,比如:

$data=https://www.cnblogs.com/a609251438/p/array(

0=>array('id'=>8,'name'=>'name1'),

1=>array('id'=>10,'name'=>'name2'),

2=>array('id'=>15,'name'=>'name3')

);

 

寫出在模板頁的代碼?若用foreach陳述句又要怎樣顯示呢?

用section陳述句:

<{section name=test loop=$data start=0 step=1}>

id:<{$data[test].id}><br/>

name:<{$data[test].name}><br/><br/>

<{sectionelse}>

陣列為空

<{/section}>

 

用foreach陳述句:

<{foreach from=$data item=test}>

id:<{$test.id}><br/>

name:<{$test.name}><br/><br/>

<{foreachelse}>

陣列為空

<{/foreach}>

 

34.哪個選項會匹配下邊的這個正則運算式?(/.*xyz\d/)
A.*****xyz

B.*****xyz1
C.******xyz2
D.*xyz
答案:C

35.以下哪個錯誤無法被標準的錯誤控制器獲取?

A.E_WARNING
B.E_USER_ERROR
C.E_PARSE
D.E_NOTICE
答案:B

36.以下哪種錯誤型別無法被自定義的錯誤處理器捕捉到?(奇矩互動)

A.E_WARNING
B.E_USER_ERROR
C.E_PARSE
D.E_NOTICE
答案:C

37.(^\s)|(\s$)這個正則運算式作用是:__________;

匹配以0個或多個空白符開頭或者0個或多個空白符結尾的字串

38.撰寫函式取得上一月的最后一天

<?php

    date_default_timezone_set('PRC');

  

    /**

     * 獲取給定月份的上一月最后一天

     * @param $date string 給定日期

     * @return string 上一月最后一天

     */

    function get_last_month_last_day($date = ''){

        if ($date != '') {

            $time = strtotime($date);

        } else {

            $time = time();

        }

        $day = date('j',$time);//獲取該日期是當前月的第幾天

        return date('Y-m-d',strtotime("-{$day} days",$time));

    }

  

    // 測驗

    echo get_last_month_last_day();

    echo "<br />";

    echo get_last_month_last_day("2013-3-21");

?>

 

39.在很多時候,我們可以通過apache的主組態檔來設定對test目錄的訪問權限控制,如http://IP/test請問如果需設定test下的一個子目錄的訪問控制權限,是否可以在主組態檔中修改,如果不可以應如何解決,

可以,還可以在需要控制的子目錄下創建.htaccess檔案,寫入訪問控制,

40.如果我的網站用的utf-8編碼,為防止亂碼出現,都需要注意哪些地方?

從以下幾個方面考慮:

資料庫中庫和表都用utf8編碼

php連接mysql,指定資料庫編碼為utf8 mysql_query(“set names utf8”);

php檔案指定頭部編碼為utf-8header(“content-type:text/html;charset=utf-8”);

網站下所有檔案的編碼為utf8

html檔案指定編碼為utf-8<meta http-equiv="Content-Type"content="text/html;charset=utf-8"/>

41.在url中用get傳值的時候,若中文出現亂碼,應該用哪個函式對中文進行編碼?

urlencode()

42.寫出兩種對變數加密的函式?

md5(str);

43.如何把2009-9-2 10:30:25變成unix時間戳?

<?php

    date_default_timezone_set("PRC");

  

    // 將字串轉成Unix時間戳

    $unix_time = strtotime("2009-9-2 10:30:45");

    echo $unix_time;

    echo "<br />";

  

    // 格式化Unix時間戳為正常時間格式

    echo date("Y-m-d H:i:s",$unix_time);

?>

 

44.如何把一個GB2312格式的字串裝換成UTF-8格式?

<?php

    iconv('GB2312','UTF-8','悄悄是別離的笙簫');

?>

 

45.如果需要原樣輸出用戶輸入的內容,在資料入庫前,要用哪個函式處理?

htmlspecialchars或者htmlentities

46.寫出五種以上你使用過的PHP的擴展的名稱(提示:常用的PHP擴展)

mb_sring、iconv、curl、GD、XML、socket、MySQL、PDO等

47.了解MVC模式嗎?請寫出三種以上目前PHP流行的MVC框架名稱(不區分大小寫)

FleaPHP、Zend Framework、CakePHP、Symfony、ThinkPHP、YII、CodeIgniter等

48.php中WEB上傳檔案的原理是什么,如何限制上傳檔案的大小?

上傳檔案的表單使用post方式,并且要在form中添加enctype='multipart/form-data',
一般可以加上隱藏域:<input type=hidden name='MAX_FILE_SIZE' value=https://www.cnblogs.com/a609251438/p/dddddd>,位置在file域前面,
value的值是上傳檔案的客戶端位元組限制,可以避免用戶在花時間等待上傳大檔案之后才發現檔案過大上傳失敗的麻煩,
使用file檔案域來選擇要上傳的檔案,當點擊提交按鈕之后,檔案會被上傳到服務器中的臨時目錄,在腳本運行結束時會被銷毀,所以應該在腳本結束之前,將其移動到服務器上的某個目錄下,可以通過函式move_uploaded_file()來移動臨時檔案,要獲取臨時檔案的資訊,使用$_FILES,

限制上傳檔案大小的因素有:

客戶端的隱藏域MAX_FILE_SIZE的數值(可以被繞開),

服務器端的upload_max_filesize,post_max_size和memory_limit,這幾項不能夠用腳本來設定,

自定義檔案大小限制邏輯,即使服務器的限制是能自己決定,也會有需要個別考慮的情況,所以這個限制方式經常是必要的,

49.簡述UBB code的實作原理,(YG)

UBB代碼是HTML的一個變種,通程序式自定義我們的標簽,比如“[a]PHP中UBB的使用[/a]”這樣的標簽,其實質就是查找[a][/a]標簽,將其替換成的標準html,說白了,就是將標準的html標記通過技術手段使其簡化,其輸出出來的結果還是標準的html,
明白了ubb的原理,那么再制作一個簡單的ubb編輯器就不難了,和fck之類的編輯器比較起來,ubb代碼最大的優點就是代碼簡單,功能很少,簡單的ubb只需要一個檔案,而且ubb標簽可以自己來定義,更改起來很方便,在php中就是利用替換函式就可以將
html進行標簽化,輸出時進行標簽的轉化,

50.怎么把檔案保存到指定目錄?怎么避免上傳檔案重名問題?

可以自己設定上傳檔案的保存目錄,與檔案名拼湊形成一個檔案路徑,使用move_uploaded_file(),就可以完成將檔案保存到指定目錄,
可以通過上傳的檔案名獲取到檔案后綴,然后使用時間戳+亂數+檔案后綴的方式為檔案重新命名,這樣就避免了重名,

51._____函式能回傳腳本里的任意行中呼叫的函式的名稱,該函式同時還經常被用在除錯中,用來判斷錯誤是如何發生的,(奇矩互動)

debug_print_backtrace()

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91801.html

標籤:PHP

上一篇:PHP版本微信支付開發

下一篇:idea控制臺一直列印【[http-bio-8085-exec-2] DEBUG】

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more