單例模式
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、嘉祥網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為嘉祥等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
:使得類的一個(gè)對象成為系統(tǒng)中的唯一實(shí)例.
PHP中使用單例模式最常見的就是數(shù)據(jù)庫操作了。避免在系統(tǒng)中有多個(gè)連接數(shù)據(jù)庫的操作,浪費(fèi)系統(tǒng)資源的現(xiàn)象,就可以使用單例模式。每次對數(shù)據(jù)庫操作都使用一個(gè)實(shí)例。
簡單示例
class
AClass
{
//
用來存儲(chǔ)自己實(shí)例
public
static
$instance;
//
私有化構(gòu)造函數(shù),防止外界實(shí)例化對象
private
function
__construct()
{}
//
私有化克隆函數(shù),防止外界克隆對象
private
function
__clone()
{}
//
靜態(tài)方法,單例訪問統(tǒng)一入口
public
static
function
getInstance()
{
if
(!(self::$instance
instanceof
self)){
self::$instance
=
new
self();
}
return
self::$instance;
}
//
test
public
function
test()
{
return
"done";
}
//
私有化克隆函數(shù),防止外界克隆對象
private
function
__clone()
{}
}
class
BClass
extends
AClass{
}
//
獲取實(shí)例
$aclass
=
AClass::getInstance();
$bclass
=
BClass::getInstance();
//
調(diào)用方法
echo
$aclass-test();
對一些比較大型的應(yīng)用來說,可能連接多個(gè)數(shù)據(jù)庫,那么不同的數(shù)據(jù)庫公用一個(gè)對象可能會(huì)產(chǎn)生問題,比如連接句柄的分配等,我們可以通過給$instance變成數(shù)組,通過不同的參數(shù)來控制
簡單示例
class
DB
{
//
用來存儲(chǔ)自己實(shí)例
public
static
$instance
=
array();
public
$conn;
//
私有化構(gòu)造函數(shù),防止外界實(shí)例化對象
private
function
__construct($host,
$username,
$password,
$dbname,
$port)
{
$this-conn
=
new
mysqli($host,
$username,
$password,
$dbname,
$port);
}
//
靜態(tài)方法,單例訪問統(tǒng)一入口
public
static
function
getInstance($host,
$username,
$password,
$dbname,
$port)
{
$key
=
$host.":".$port;
if
(!(self::$instance[$key]
instanceof
self)){
self::$instance[$key]
=
new
self($host,
$username,
$password,
$dbname,
$port);#實(shí)例化
}
return
self::$instance[$key];
}
//query
public
function
query($ql)
{
return
$this-conn-query($sql);
}
//
私有化克隆函數(shù),防止外界克隆對象
private
function
__clone()
{}
//釋放資源
public
function
__destruct(){
$this-conn-close();
}
}
本文實(shí)例講述了PHP利用pdo_odbc實(shí)現(xiàn)連接數(shù)據(jù)庫。分享給大家供大家參考,具體如下:
目的:從sql
server數(shù)據(jù)庫里面把某個(gè)視圖文件調(diào)用出來,以鍵值對的方式顯示在頁面上。
利用pdo
odbc來實(shí)現(xiàn)PHP連接數(shù)據(jù)庫:
在PHP配置文件里面開啟pdo_odbc.dll服務(wù)。重啟Apache服務(wù)器。
在ThinkPHP5.1的項(xiàng)目中在模塊里添加config添加規(guī)定好的樣式數(shù)據(jù)庫:
代碼如下:
?php
return
[
//
數(shù)據(jù)庫類型
'type'
=
'sqlsrv',
//
服務(wù)器地址
'hostname'
=
'localhost',
//
數(shù)據(jù)庫名
'database'
=
'mysql',
//
用戶名
'username'
=
'sa',
//
密碼
'password'
=
'123456',
//
端口
'hostport'
=
'',
//
連接dsn
'dsn'
=
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
數(shù)據(jù)庫連接參數(shù)
'params'
=
[],
//
數(shù)據(jù)庫編碼默認(rèn)采用utf8
'charset'
=
'utf8',
//
數(shù)據(jù)庫表前綴
'prefix'
=
'',
//
數(shù)據(jù)庫調(diào)試模式
'debug'
=
true,
//
數(shù)據(jù)庫部署方式:0
集中式(單一服務(wù)器),1
分布式(主從服務(wù)器)
'deploy'
=
0,
//
數(shù)據(jù)庫讀寫是否分離
主從式有效
'rw_separate'
=
false,
//
讀寫分離后
主服務(wù)器數(shù)量
'master_num'
=
1,
//
指定從服務(wù)器序號
'slave_no'
=
'',
//
是否嚴(yán)格檢查字段是否存在
'fields_strict'
=
true,
//
數(shù)據(jù)集返回類型
'resultset_type'
=
'array',
//
自動(dòng)寫入時(shí)間戳字段
'auto_timestamp'
=
false,
//
時(shí)間字段取出后的默認(rèn)時(shí)間格式
'datetime_format'
=
'Y-m-d
H:i:s',
//
是否需要進(jìn)行SQL性能分析
'sql_explain'
=
false,
//
Builder類
'builder'
=
'',
//
Query類
'query'
=
'\\think\\db\\Query',
//
是否需要斷線重連
'break_reconnect'
=
false,
//
斷線標(biāo)識字符串
'break_match_str'
=
[],
];
?
在控制器controller里面建一個(gè)控制文件Test.php
代碼如下:
?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')-select();
echo
json_encode($data);
}
}
?
最后調(diào)用入口文件即可訪問。
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend
FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:ThinkPHP實(shí)現(xiàn)多數(shù)據(jù)庫連接的解決方法tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫查詢的方法ThinkPHP3.1新特性之多數(shù)據(jù)庫操作更加完善tp5(thinkPHP5)框架連接數(shù)據(jù)庫的方法示例PHP7使用ODBC連接SQL
Server2008
R2數(shù)據(jù)庫示例【基于thinkPHP5.1框架】thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)實(shí)例tp5(thinkPHP5)操作mongoDB數(shù)據(jù)庫的方法tp5(thinkPHP5)框架數(shù)據(jù)庫Db增刪改查常見操作總結(jié)thinkPHP5框架實(shí)現(xiàn)多數(shù)據(jù)庫連接,跨數(shù)據(jù)連接查詢操作示例
搭建好php開發(fā)環(huán)境,這個(gè)就不多講了,能找單例模式的應(yīng)該有一定的php基礎(chǔ)
2
新建一個(gè)database.php文件存放數(shù)據(jù)庫信息
?php
$db = array(
'host'='localhost',//地址
'user'='root',//數(shù)據(jù)庫用戶名
'password'='root',//數(shù)據(jù)庫密碼
'database'='ceshi',//數(shù)據(jù)庫名
)
?
3
新建Mysql.class.php編寫數(shù)據(jù)庫連接類操作類添加需要的屬性和構(gòu)造方法
構(gòu)造函數(shù)加載數(shù)據(jù)庫配置文件連接數(shù)據(jù)庫
?php
class db {
public $conn;
public static $sql;
public static $instance=null;
private function __construct(){
require_once('database.php');
$this-conn = mysqli_connect($db['host'],$db['user'],$db['password']);
if(!mysqli_select_db($this-conn,$db['database'])){
echo "失敗";
};
mysqli_query($this-conn,'set names utf8');
}
}
?這樣試試吧如果你對php這類有興趣的話,可以和我一樣在后盾人經(jīng)常看看教材,自己多看幾遍,慢慢的以后就明白了,希望能幫到你,給個(gè)采納吧謝謝
本文實(shí)例講述了PHP基于單例模式實(shí)現(xiàn)的數(shù)據(jù)庫操作基類。分享給大家供大家參考,具體如下:
配置文件:
?php
$db
=
array(
'host'='localhost',
'user'='root',
'password'='',
'database'='test',
)
?
php
數(shù)據(jù)庫基類:
?php
class
db
{
public
$conn;
public
static
$sql;
public
static
$instance=null;
private
function
__construct(){
require_once('db.config.php');
$this-conn
=
mysql_connect($db['host'],$db['user'],$db['password']);
if(!mysql_select_db($db['database'],$this-conn)){
echo
"失敗";
};
mysql_query('set
names
utf8',$this-conn);
}
public
static
function
getInstance(){
if(is_null(self::$instance)){
self::$instance
=
new
db;
}
return
self::$instance;
}
/**
*
查詢數(shù)據(jù)庫
*/
public
function
select($table,$condition=array(),$field
=
array()){
$where='';
if(!empty($condition)){
foreach($condition
as
$k=$v){
$where.=$k."='".$v."'
and
";
}
$where='where
'.$where
.'1=1';
}
$fieldstr
=
'';
if(!empty($field)){
foreach($field
as
$k=$v){
$fieldstr.=
$v.',';
}
$fieldstr
=
rtrim($fieldstr,',');
}else{
$fieldstr
=
'*';
}
self::$sql
=
"select
{$fieldstr}
from
{$table}
{$where}";
$result=mysql_query(self::$sql,$this-conn);
$resuleRow
=
array();
$i
=
0;
while($row=mysql_fetch_assoc($result)){
foreach($row
as
$k=$v){
$resuleRow[$i][$k]
=
$v;
}
$i++;
}
return
$resuleRow;
}
/**
*
添加一條記錄
*/
public
function
insert($table,$data){
$values
=
'';
$datas
=
'';
foreach($data
as
$k=$v){
$values.=$k.',';
$datas.="'$v'".',';
}
$values
=
rtrim($values,',');
$datas
=
rtrim($datas,',');
self::$sql
=
"INSERT
INTO
{$table}
({$values})
VALUES
({$datas})";
if(mysql_query(self::$sql)){
return
mysql_insert_id();
}else{
return
false;
};
}
/**
*
修改一條記錄
*/
public
function
update($table,$data,$condition=array()){
$where='';
if(!empty($condition)){
foreach($condition
as
$k=$v){
$where.=$k."='".$v."'
and
";
}
$where='where
'.$where
.'1=1';
}
$updatastr
=
'';
if(!empty($data)){
foreach($data
as
$k=$v){
$updatastr.=
$k."='".$v."',";
}
$updatastr
=
'set
'.rtrim($updatastr,',');
}
self::$sql
=
"update
{$table}
{$updatastr}
{$where}";
return
mysql_query(self::$sql);
}
/**
*
刪除記錄
*/
public
function
delete($table,$condition){
$where='';
if(!empty($condition)){
foreach($condition
as
$k=$v){
$where.=$k."='".$v."'
and
";
}
$where='where
'.$where
.'1=1';
}
self::$sql
=
"delete
from
{$table}
{$where}";
return
mysql_query(self::$sql);
}
public
static
function
getLastSql(){
echo
self::$sql;
}
}
$db
=
db::getInstance();
//$list
=
$db-select('demo',array('name'='tom','password'='ds'),array('name','password'));
//echo
$db-insert('demo',array('name'='腳本之家','password'='123'));
//echo
$db-update('demo',array("name"='xxx',"password"='123'),array('id'=1));
echo
$db-delete('demo',array('id'='2'));
db::getLastSql();
echo
"pre";
?
更多關(guān)于PHP操作數(shù)據(jù)庫相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫操作入門教程》、《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
PHP的輕量消息隊(duì)列php-resque使用說明
消息隊(duì)列處理后臺任務(wù)帶來的問題
項(xiàng)目中經(jīng)常會(huì)有后臺運(yùn)行任務(wù)的需求,比如發(fā)送郵件時(shí),因?yàn)橐B接郵件服務(wù)器,往往需要5-10秒甚至更長時(shí)間,如果能先給用戶一個(gè)成功的提示信息,然后在后臺慢慢處理發(fā)送郵件的操作,顯然會(huì)有更好的用戶體驗(yàn)。
為了實(shí)現(xiàn)類似的需求,Web項(xiàng)目中一般的實(shí)現(xiàn)方法是使用消息隊(duì)列(Message Queue),比如MemcacheQ,RabbitMQ等等,都是很著名的產(chǎn)品。
消息隊(duì)列說白了就是一個(gè)最簡單的先進(jìn)先出隊(duì)列,隊(duì)列的一個(gè)成員就是一段文本。正是因?yàn)橄㈥?duì)列實(shí)在太簡單了,當(dāng)拿著消息隊(duì)列時(shí),反而有點(diǎn)無從下手的感覺,因?yàn)檫@僅僅一個(gè)發(fā)送郵件的任務(wù),就會(huì)引申出很多問題:
消息隊(duì)列只能存儲(chǔ)字符串類型的數(shù)據(jù),如何將一個(gè)發(fā)送郵件這樣的“任務(wù)”,轉(zhuǎn)換為消息隊(duì)列中的一個(gè)“消息”?
消息隊(duì)列只負(fù)責(zé)數(shù)據(jù)的存放與進(jìn)出,本身不能執(zhí)行任何程序,那么我們要如何從消息隊(duì)列中一個(gè)一個(gè)取出數(shù)據(jù),再將這些數(shù)據(jù)轉(zhuǎn)化回任務(wù)并執(zhí)行。
我們無法預(yù)知消息隊(duì)列何時(shí)會(huì)有數(shù)據(jù)產(chǎn)生,所以我們的任務(wù)執(zhí)行程序還需要具備監(jiān)控消息隊(duì)列的能力,也就是一個(gè)常駐后臺的守護(hù)進(jìn)程。
一般的Web應(yīng)用PHP都以cgi方式運(yùn)行,無法常駐內(nèi)存。我們知道php還有cli模式,那么守護(hù)進(jìn)程是否能以php cli來實(shí)現(xiàn),效率如何?
當(dāng)守護(hù)進(jìn)程運(yùn)行時(shí),Web應(yīng)用能否與后臺守護(hù)進(jìn)程交互,實(shí)現(xiàn)開啟/殺死進(jìn)程的功能以及獲得進(jìn)程的運(yùn)行狀態(tài)?
Resque對后臺任務(wù)的設(shè)計(jì)與角色劃分
對以上這些問題,目前為止我能找到的最好答案,并不是來自php,而是來自Ruby的項(xiàng)目Resque,正是由于Resque清晰簡單的解決了后臺任務(wù)帶來的一系列問題,Resque的設(shè)計(jì)也被Clone到Python、php、NodeJs等語言:比如Python下的pyres以及PHP下的php-resque等等,這里有各種語言版本的Resque實(shí)現(xiàn),而在本篇日志里,我們當(dāng)然要以PHP版本為例來說明如何用php-resque運(yùn)行一個(gè)后臺任務(wù),可能一些細(xì)節(jié)方面會(huì)與Ruby版有出入,但是本文中以php版為準(zhǔn)。
Resque是這樣解決這些問題的:
后臺任務(wù)的角色劃分
其實(shí)從上面的問題已經(jīng)可以看出,只靠一個(gè)消息隊(duì)列是無法解決所有問題的,需要新的角色介入。在Resque中,一個(gè)后臺任務(wù)被抽象為由三種角色共同完成:
Job | 任務(wù) : 一個(gè)Job就是一個(gè)需要在后臺完成的任務(wù),比如本文舉例的發(fā)送郵件,就可以抽象為一個(gè)Job。在Resque中一個(gè)Job就是一個(gè)Class。
Queue | 隊(duì)列 : 也就是上文的消息隊(duì)列,在Resque中,隊(duì)列則是由Redis實(shí)現(xiàn)的。Resque還提供了一個(gè)簡單的隊(duì)列管理器,可以實(shí)現(xiàn)將Job插入/取出隊(duì)列等功能。
Worker | 執(zhí)行者 : 負(fù)責(zé)從隊(duì)列中取出Job并執(zhí)行,可以以守護(hù)進(jìn)程的方式運(yùn)行在后臺。
那么基于這個(gè)劃分,一個(gè)后臺任務(wù)在Resque下的基本流程是這樣的:
將一個(gè)后臺任務(wù)編寫為一個(gè)獨(dú)立的Class,這個(gè)Class就是一個(gè)Job。
在需要使用后臺程序的地方,系統(tǒng)將Job Class的名稱以及所需參數(shù)放入隊(duì)列。
以命令行方式開啟一個(gè)Worker,并通過參數(shù)指定Worker所需要處理的隊(duì)列。
Worker作為守護(hù)進(jìn)程運(yùn)行,并且定時(shí)檢查隊(duì)列。
當(dāng)隊(duì)列中有Job時(shí),Worker取出Job并運(yùn)行,即實(shí)例化Job Class并執(zhí)行Class中的方法。
至此就可以完整的運(yùn)行完一個(gè)后臺任務(wù)。
在Resque中,還有一個(gè)很重要的設(shè)計(jì):一個(gè)Worker,可以處理一個(gè)隊(duì)列,也可以處理很多個(gè)隊(duì)列,并且可以通過增加Worker的進(jìn)程/線程數(shù)來加快隊(duì)列的執(zhí)行速度。
php-resque的安裝
需要提前說明的是,由于涉及到進(jìn)程的開辟與管理,php-resque使用了php的PCNTL函數(shù),所以只能在Linux下運(yùn)行,并且需要php編譯PCNTL函數(shù)。如果希望用Windows做同樣的工作,那么可以去找找Resque的其他語言版本,php在Windows下非常不適合做后臺任務(wù)。
以Ubuntu12.04LTS為例,Ubuntu用apt安裝的php已經(jīng)默認(rèn)編譯了PCNTL函數(shù),無需任何配置,以下指令均為root帳號安裝Redis
apt-get install redis-server
安裝Composer
apt-get install curl
cd /usr/local/bin
curl -s | phpchmod a+x composer.phar
alias composer='/usr/local/bin/composer.phar'
使用Composer安裝php-resque
假設(shè)web目錄在/opt/htdocs
apt-get install git git-core
cd /opt/htdocs
git clone git://github.com/chrisboulton/php-resque.gitcd php-resque
composer install
php-resque的使用
編寫一個(gè)Worker
其實(shí)php-resque已經(jīng)給出了簡單的例子, demo/job.php文件就是一個(gè)最簡單的Job:
class PHP_Job
{
public function perform()
{
sleep(120);
fwrite(STDOUT, 'Hello!');
}
}
這個(gè)Job就是在120秒后向STDOUT輸出字符Hello!
在Resque的設(shè)計(jì)中,一個(gè)Job必須存在一個(gè)perform方法,Worker則會(huì)自動(dòng)運(yùn)行這個(gè)方法。
將Job插入隊(duì)列
php-resque也給出了最簡單的插入隊(duì)列實(shí)現(xiàn) demo/queue.php:
if(empty($argv[1])) {
die('Specify the name of a job to add. e.g, php queue.php PHP_Job');}
require __DIR__ . '/init.php';
date_default_timezone_set('GMT');
Resque::setBackend('127.0.0.1:6379');
$args = array(
'time' = time(),
'array' = array(
'test' = 'test',
),
);
$jobId = Resque::enqueue('default', $argv[1], $args, true);echo "Queued job ".$jobId."\n\n";
在這個(gè)例子中,queue.php需要以cli方式運(yùn)行,將cli接收到的第一個(gè)參數(shù)作為Job名稱,插入名為'default'的隊(duì)列,同時(shí)向屏幕輸出剛才插入隊(duì)列的Job Id。在終端輸入:
php demo/queue.php PHP_Job
結(jié)果可以看到屏幕上輸出:
Queued job b1f01038e5e833d24b46271a0e31f6d6即Job已經(jīng)添加成功。注意這里的Job名稱與我們編寫的Job Class名稱保持一致:PHP_Job查看Job運(yùn)行情況
php-resque同樣提供了查看Job運(yùn)行狀態(tài)的例子,直接運(yùn)行:
php demo/check_status.php b1f01038e5e833d24b46271a0e31f6d6可以看到輸出為:
Tracking status of b1f01038e5e833d24b46271a0e31f6d6. Press [break] to stop.
Status of b1f01038e5e833d24b46271a0e31f6d6 is: 1我們剛才創(chuàng)建的Job狀態(tài)為1。在Resque中,一個(gè)Job有以下4種狀態(tài):
Resque_Job_Status::STATUS_WAITING = 1; (等待)Resque_Job_Status::STATUS_RUNNING = 2; (正在執(zhí)行)Resque_Job_Status::STATUS_FAILED = 3; (失敗)Resque_Job_Status::STATUS_COMPLETE = 4; (結(jié)束)因?yàn)闆]有Worker運(yùn)行,所以剛才創(chuàng)建的Job還是等待狀態(tài)。
運(yùn)行Worker
這次我們直接編寫demo/resque.php:
?php
date_default_timezone_set('GMT');
require 'job.php';
require '../bin/resque';
可以看到一個(gè)Worker至少需要兩部分:
可以直接包含Job類文件,也可以使用php的自動(dòng)加載機(jī)制,指定好Job Class所在路徑并能實(shí)現(xiàn)自動(dòng)加載包含Resque的默認(rèn)Worker: bin/resque
在終端中運(yùn)行:
QUEUE=default php demo/resque.php
前面的QUEUE部分是設(shè)置環(huán)境變量,我們指定當(dāng)前的Worker只負(fù)責(zé)處理default隊(duì)列。也可以使用QUEUE=* php demo/resque.php
來處理所有隊(duì)列。
運(yùn)行后輸出為
#!/usr/bin/env php
*** Starting worker
用ps指令檢查一下:
ps aux | grep resque
可以看到有一個(gè)php的守護(hù)進(jìn)程已經(jīng)在運(yùn)行了
1000 4607 0.0 0.1 74816 11612 pts/3 S+ 14:52 0:00 php demo/resque.php再使用之前的檢查Job指令
php demo/check_status.php b1f01038e5e833d24b46271a0e31f6d62分鐘后可以看到
Status of b1f01038e5e833d24b46271a0e31f6d6 is: 4任務(wù)已經(jīng)運(yùn)行完畢,同時(shí)屏幕上應(yīng)該可以看到輸出的Hello!
至此我們已經(jīng)成功的完成了一個(gè)最簡單的Resque實(shí)例的全部演示,更復(fù)雜的情況以及遺留的問題會(huì)在下一次的日志中說明。
當(dāng)然是重新連接了,你是跳轉(zhuǎn)不是包含。
跳轉(zhuǎn)兩者之間共享值要專門的傳值操作,cookie\
session\
POST/GET
\靜態(tài)輸出
網(wǎng)站題目:php數(shù)據(jù)庫模式 PHP可以支持目前主流的數(shù)據(jù)庫
分享URL:http://vcdvsql.cn/article46/hiodhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、微信小程序、網(wǎng)站建設(shè)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)