php中urlencode与rawurlencode的区别

 更新时间:2016年11月25日 15:41  点击:2282
urlencode与rawurlencode函数是对url进行一些处理,但在处理时它们是有区别的,特别是对于些特殊字符时它们表现出来的是完全不一样的,下面我就来详细举例子来说明一下这两个url处理函数吧。

前段时间说自己遇到了个《URL加号引发错误》的BUG,引起这个bug的原因就是自己在URL中使用了 urlencode 函数,该函数会把空格转换成加号,这样就导致URL解析出错,而空格只有转换成 %20 才可以可以正常解析,这时我们就需要使用 rawurlencode 函数。下面就介绍一下 urlencode 函数与 rawurlencode 函数的区别:

urlencode 函数:

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。

rawurlencode 函数:

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 » RFC 3986 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。下面我们来看一下例子:

 代码如下 复制代码

<?php

$string = "hello world";

echo urlencode($string) . '<br/>'; //输出:hello+world
echo rawurldecode($string) . '<br/>';//输出:hello%20world

?>

具体例子比较:

 代码如下 复制代码

<?php
for ($i = 0x20; $i < 0x7f; $i++) {
$str .= dechex($i);
}

$asscii = pack("H*",$str);
echo "所有的可打印的asscii字符:(从空格到~)n". $asscii."\n";
echo "urlencode 的结果:\n".urlencode($asscii);
echo "\n";
echo "urlencode 不做编码的字符:\n".preg_replace("/%.{2}/","",urlencode($asscii));
echo "\n";
echo "rawurlencode 的结果:\n".rawurlencode($asscii);
echo "\n";
echo "rawurlencode 不做编码的字符:\n".preg_replace("/%.{2}/","",rawurlencode($asscii));
echo  "\n";

exit;
?>

输出结果:
———————————————————————————
所有的可打印的asscii字符:(从空格到~)
!"#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~
urlencode 的结果:
+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E
urlencode 不做编码的字符:
+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
rawurlencode 的结果:
%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E
rawurlencode 不做编码的字符:
-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz

---------------------------------------------------------------------------------
比较二者的结果:
1.  数字、大小写字母都不编码
2.  减号、点号、下划线  三个不编码
3. rawurlencode比urlencode多编码一个”加号“

关于JavaScript中escape与encodeURIComponent的区别:

 代码如下 复制代码

>>>  console.log(encodeURIComponent("统一注册1"));

%E7%BB%9F%E4%B8%80%E6%B3%A8%E5%86%8C1
>>> console.log(escape("统一注册1"));
%u7EDF%u4E00%u6CE8%u518C1

<?php
echo iconv("utf-8","gbk",urldecode("%E7%BB%9F%E4%B8%80%E6%B3%A8%E5%86%8C1"));
echo "\n";
echo urldecode("%u7EDF%u4E00%u6CE8%u518C1");
// 使用下面的unescape可以
//echo iconv("utf-8","gbk",unescape("%u7EDF%u4E00%u6CE8%u518C1");
exit;
?>

输出结果:
======================================
统一注册1
%u7EDF%u4E00%u6CE8%u518C1
======================================

结果说明:
1. encodeURIComponent 总是把输入转换成utf8编码处理的,按字节编码
2. escape是按照unicode编码处理的,因为它也对url中不安全的字符做了编码,所以也可以在url中做编码使用,但是,服务器端不会自动解码,下面提供一个PHP版的解码函数,是用手册里找的:

<?php

 代码如下 复制代码

function unescape($str) {
    $str = rawurldecode($str);
    preg_match_all("/(?:%u.{4})|&#x.{4};|&#d+;|.+/U",$str,$r);
    $ar = $r[0];
    foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u")
            $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));
        elseif(substr($v,0,3) == "&#x")
            $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));
        elseif(substr($v,0,2) == "&#") {
            $ar[$k] = iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
        }
    }
    return join("",$ar);
}

?>

 

>>> console.log(escape(" !\"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~"));
%20%21%22%23%24%25%26%27%28%29*+%2C-./0123456789%3A%3B%3C%3D%3E%3F@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E
>>> console.log(encodeURIComponent("!\"#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~"));
%20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~
>>> console.log(escape("!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~").replace(/%.{2}/g,""));

*+-./0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
>>> console.log(encodeURIComponent("!\"#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~").replace(/%.{2}/g,""));
!’()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~

结果比较:
escape未编码的字符: *+-./@_   共7个
encodeURIComponent未编码的字符: !’()*-._~  共9个

下面来给各位朋友推荐一个非常不错基于php curl函数进行的数据post例子,希望此例子对各位朋友会有所帮助。
 代码如下 复制代码

////二纬码 
$QRCode_URL="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$ACC_TOKEN; 
 
$data ='{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}} '; 
/*
$ch = curl_init($MENU_URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length:'.strlen($data)));
$info = curl_exec($ch);
*/ 
function post($url, $params = false, $header = array()){ 
$ch = curl_init(); 
$cookieFile = 'sdadsd_cookiejar.txt'; 
 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); 
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookieFile); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE); 
curl_setopt($ch, CURLOPT_HTTPGET, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
if($params !== false){ curl_setopt($ch, CURLOPT_POSTFIELDS , $params);} 
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0'); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
  www.111cn.net
$result = curl_exec($ch); 
curl_close($ch); 
 
return $result; 

$result = post($QRCode_URL,$data); 
下面本文章总结了三种把数组转换成字符串然后写入到数据库中,一是直接利用implode函数,另外就使用serialize与eval函数进行转换,下面来一起看看吧。

最简单的办法

转换implode

 代码如下 复制代码

数组->字符
$txt=implode("?",arr[]);

字符->数组
$arr[]=explode("?",txt);

使用php的serialize函数。

例子:

 代码如下 复制代码

$data = array('上海', '北京', '武汉');
$data = serialize($data);
echo $data;

如何再将从数据库中取出的数组字符串,转换成数组呢?用unserialize函数:

 代码如下 复制代码
$data = unserialize($data);
echo $data;

 
当然这样我们还可以直接写入到文件中

serialize和反序列unserialize来实现。

 代码如下 复制代码

<?php
$file="./data/file.cache";
$array = array("count" => "3000",
              "num"  =>"300");
 //缓存
file_put_contents($file,serialize($array));//写入缓存
$cacheArray = unserialize(file_get_contents($file));
print_r($cacheArray);
?>

例子

使用期php的eval函数

string2array,array2string PHP数组转字符串写入数据库,字符串数组转可执行

 代码如下 复制代码

/**
* 将字符串转换为数组
*
* @param    string  $data   字符串
* @return   array   返回数组格式,如果,data为空,则返回空数组
*/ 
 function string2array($data) {  
    if($data == '') return array();  
    @eval("$array = $data;");  
    return $array;  
}  
 /**
* 将数组转换为字符串
*
* @param    array   $data       数组
* @param    bool    $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
* @return   string  返回字符串,如果,data为空,则返回空
*/ 
function array2string($data, $isformdata = 1) {  
    if($data == '') return '';  
    if($isformdata) $data = new_stripslashes($data);  
    return addslashes(var_export($data, TRUE));  

根据IP地址来获取用户所在的地区,这个需要借助一个外部api或一个数据库来记录IP地址是哪里的,下面我总结一些常用的方法给各位参考。

先用php获取本机的ip,再用php的curl函数来获取用户的详细地区.下面来看一下代码;

 代码如下 复制代码


/*
 * 这个函数是获取客户端和IP

 */
function GetIP()
{
 if(!empty($_SERVER["HTTP_CLIENT_IP"]))
 {
  $cip = $_SERVER["HTTP_CLIENT_IP"];
 }
 else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
 {
  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
 }
 else if(!empty($_SERVER["REMOTE_ADDR"]))
 {
  $cip = $_SERVER["REMOTE_ADDR"];
 }
 else
 {
  $cip = '';
 }
 preg_match("/[d.]{7,15}/", $cip, $cips);
 $cip = isset($cips[0]) ? $cips[0] : 'unknown';
 unset($cips);
 return $cip;

方法一,利用QQWry.Dat IP库,我们只胖乎乎

用简单的办法。

使用示例

示例一:

 代码如下 复制代码

$IpLocation = new IpLocation();
$client = $IpLocation->getlocation();
print_r($client);

示例二:

 代码如下 复制代码

$IpLocation = new IpLocation('../qqwry/QQWry.Dat');
$client = $IpLocation->getlocation('115.148.101.72');
print_r($client);

具体的IP库与Iplocation类文件这里不介绍了大家百度搜索吧。


方法二,利用api接口

示例一,

 代码如下 复制代码

  /**
  * 获取IP地区
  * Enter description here ...
  * @param unknown_type $ip
  */
 function GetArea($ip){

 $url = "http://ip168.com/ip/?ip=".$ip;
 $contents = file_get_contents($url);
// preg_match_all('/<h3[sS]*?(<a[sS]*?</h3>)/',$contents,$rs);
 preg_match_all('|<div>本站主数据:.*</div>|',$contents,$rsR);
 $rsR[0][0] = str_replace("<div>本站主数据:", "", $rsR[0][0]);
 $rsR[0][0] = str_replace("</div>", "", $rsR[0][0]);
 return $rsR[0][0];
 }


示例二,


下面这个函数是用php的curl函数从网路上获取详细地区

 代码如下 复制代码

function lazdf($ip){

$curl= curl_init();

curl_setopt($curl,CURLOPT_URL,"http://www.ip138.com/ips138.asp?ip=".$ip);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$ipdz=curl_exec($curl);
curl_close($curl);
preg_match("/<ul class="ul1"><li>(.*?)</li>/i",$ipdz,$jgarray);
preg_match("/本 www.111cn.net 站主数据:(.*)/i", $jgarray[1],$ipp);

return  "<div class="global_widht global_zj zj" style="background: none repeat scroll 0% 0% rgb(226, 255, 191); font-size: 12px; color: rgb(85, 85, 85); height: 30px; line-height: 30px; border-bottom: 1px solid rgb(204, 204, 204); text-align: left;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎来自&nbsp;<b>".$ipp[1]."</b>&nbsp;的朋友!</div>";

}

echo lazdf(GetIP());//输出ip

欢迎来自长沙地区的朋友

文章先是给各位普及一下关于cookie与session的两个例子,然后再以利用cookie自动登录为例子给大家介绍了它们之间的关系及后面总结了区别,希望此文章对你理解cookie与session会有所帮助。

session的使用:

session_start();定义$_SESSION数组变量。

session_start()使用前,不能有任何形式的输出,包括php中的输出和html代码。

$_SESSION数组不可以使用数值下标,只可以使用字符串下标。

php.ini中的session_save_path配置项决定了session的保存位置。

默认情况下,session是保存在文件中。我们可以使用session_set_save_handler()函数来重写session机制。

设置有效时间

 代码如下 复制代码
SESSION:
ini_set('session.gc_maxlifetime',24*3600);//session保存一天
session_start();
$_SESSION[‘web_name’]='网易';

说明:好像默认是时间是:20-24分钟,但是关闭浏览器session就自动消失了!

删除session:

删除某个元素 unset($_SESSION[key]);

删除所有session $_SESSION=array();

删除保存session数据的文件 session_destroy();

session_distroy()方法只是删除了服务器端的session文件,并不会释放内存中的$_SESSION变量,如果我们在session_distroy()后,立即var_dump($_SESSION),仍然可以看到session输出。因此如果想完全的释放session,必须配合使用$_SESSION=array()。

cookie的使用:

设置cookie:setcookie(变量名,变量值,生存时间(时间戳))。

删除cookie:setcookie(变量名,值,time()-1)。原理:设置cookie的生存时间过期。

读取cookie:$_COOKIE[变量名]。

$path="/";  //设置cookie存放的路径;1.默认存放是本目录,只有本目录下才能访问,2.“/”表示存放在根目录,3.“/foo/”只有foo文件夹下面文件才能访问

 代码如下 复制代码


setcookie("cookiename","网易'", time()+intval(24*3600),$path); /* 有效期 1天 */

注意:cookie存放的值只能是string类型的,但是要存放数值怎么解决呢!

存储:

 代码如下 复制代码

$array=array('a','b');
//"serialize:"返回值是一个字符串。有的时候为了把一些数据转为字符串存起来,但是希望保持数据原来有结构和内容。就要用到这个函数。
$res=serialize($array);
setcookie("snsresult",$res,time()+intval(24*3600));

读取:

 代码如下 复制代码

//恢复serialize对象

 $other = StripSlashes($_COOKIE['snsresult']);//必须执行这步
  $arr=unserialize($other);//先将加密cookie进行解码 www.111Cn.net

注意:setcookie在代码中存取值时前面是不可以输出任何内容的,空行也不可以,不然cookie是没有值的。

1、$_COOKIE只可以读取cookie的值,并不能对cookie进行设置。

2、在使用setcookie之前,不能有任何类型的输出。

3、在脚本第一次设置cookie后,是不能在当前脚本使用$_COOKIE获取到的。需刷新页面或者在其他脚本中获取。

自动登录

 代码如下 复制代码

//检查用户是否登录


function checklogin(){ 
     if(empty($_SESSION['user_info'])){    //检查一下session是不是为空 
     if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){  //如果session为空,并且用户没有选择记录登录状 
     header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);  //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。 
}else{   //用户选择了记住登录状态 
     $user = getUserInfo($_COOKIE['username'],$_COOKIE['password']);   //去取用户的个人资料 
     if(empty($user)){    //用户名密码不对没到取到信息,www.111Cn.net 转到登录页面 
     header("location:login.php?req_url=".$_SERVER['REQUEST_URI']); 
     }else{ 
     $_SESSION['user_info'] = $user;   //用户名和密码对了,把用户的个人资料放到session里面 
     } 
     } 
     } 
}


二,用户提交登录信息


username = trim($_POST['username']); 
$password = md5(trim($_POST['password'])); 
$validatecode = $_POST['validateCode']; 
$ref_url = $_GET['req_url']; 
$remember = $_POST['remember']; 
 
$err_msg = ''; 
if($validatecode!=$_SESSION['checksum']){ 
$err_msg = "验证码不正确"; 
}elseif($username=='' || $password==''){ 
$err_msg = "用户名和密码都不能为空"; 
}else{ 
$row = getUserInfo($username,$password); 
 
if(empty($row)){ 
$err_msg = "用户名和密码都不正确"; 
}else{ 
$_SESSION['user_info'] = $row; 
if(!empty($remember)){     //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面 
setcookie("username", $username, time()+3600*24*365); 
setcookie("password", $password, time()+3600*24*365); 

if(strpos($ref_url,"login.php") === false){ 
header("location:".$ref_url); 
}else{ 
header("location:main_user.php"); 


}


三,当用户点退出时,清出记录登录状态


//退出登录


function logout(){ 
unset($_SESSION['user_info']); 
if(!empty($_COOKIE['username']) || !empty($_COOKIE['password'])){ 
setcookie("username", null, time()-3600*24*365); 
setcookie("password", null, time()-3600*24*365); 

}

两者的联系与区别:

联系:

两者都被成为会话技术,用于解决http的无状态性。

sessionID是保存在cookie中的。默认情况下,session是依赖cookie的,如果浏览器端完全禁用了cookie,那么session也就不能用了。但是我们有其他的方法可以让session继续有用。比如url重写,将sessionID放在url中;给表单增加隐藏域,讲sessionID存放在隐藏域中,发送至浏览器。

区别:

cookie保存早浏览器端,每次访问服务器的时候,都会讲cookie带过去,保证让服务器知道两次请求来自于同一个客户端。安全性较低。

session保存在服务器,每次请求都会通过cookie带来的sessionID去服务器匹配。安全性较高。

session的有效期从session_start()开始,到浏览器关闭结束。

cookie可以设定有效期。默认为浏览器关闭cookie就失效,sessionID丢失,即使服务器端的session文件还在,也不会被找到。

[!--infotagslink--]

相关文章

  • mysql_connect与mysql_pconnect的区别详解

    在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25
  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • php中json_decode()和json_encode()用法与中文不显示解决办法

    本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • VSCode 配置uni-app的方法

    这篇文章主要介绍了VSCode 配置uni-app的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • vscode安装git及项目开发过程

    这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
  • Vscode上使用SQL的方法

    这篇文章主要介绍了Vscode上使用SQL的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-26
  • PHP json_encode() 函数详解及中文乱码问题

    在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<&#63;php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
  • C#中out与ref的区别实例解析

    这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • vscode搭建STM32开发环境的详细过程

    这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
  • 谈谈Jquery中的children find 的区别有哪些

    精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • VSCode C++多文件编译的简单使用方法

    这篇文章主要介绍了VSCode C++多文件编译的简单使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-29
  • 浅谈Vue开发人员的7个最好的VSCode扩展

    这篇文章主要介绍了浅谈Vue开发人员的7个最好的VSCode扩展,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • VSCode配置C#运行环境的完整步骤

    这篇文章主要给大家介绍了关于VSCode配置C#运行环境的完整步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PS中像素大小、文档大小的区别

    在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
  • vscode和cmake编译多个C++文件的实现方法

    这篇文章主要介绍了vscode和cmake编译多个C++文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h”或者检测到 #include 错误,请更新includePath)(POSIX API)

    这篇文章主要介绍了VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h” 或者 检测到 #include 错误。请更新includePath) (POSIX API),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-13
  • IntelliJ IDEA 刷题利器 LeetCode 插件详解

    这篇文章主要介绍了IntelliJ IDEA 刷题利器 LeetCode 插件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-21