PHP系列(三)PHP数组与数据结构

  PHP数组与数据结构

数组是把若干变量按有序的形式组织起来的一种形式。

这些数据元素的集

数组分为一维二维三维、索引数组(数组索引是整数)和关联数组

(1)数组的声明

1、一个数组中存的多个内容、数组中的内容叫作“元素”

2、每个元素都是由健和值组成的Key/value

$a=array(“one”=>”111”,”two”=>”2222”);

3、下标有二种类型:一种是整数(索引数组)、一种是字符串(关联数组)

4、[]和{}来操作下标

5、在使用下标时、如果是关联数组、一定要使用引号、不要使用常量名称(各种类型都可以作下标、但会强制转换)

6、数组的自动增涨下标、默认从0开始、出现最大值加1

7、关联数组的字符串下标、不影响索引下标的排列规则

8、使用array()函数声明数组、默认索引下标从0开始

9、使用=>符号指定下标

Php5.4以后可以像其他语言一样声明数组$arr=[“a”,”bb”];

10、删除数组中的一个元素使用unset(但不会重建索引)删除后重建用array_values()函数

二维数组(数组的数组)三维数组 $group=array(array(“1”,”2”), array(“1”,”2”),)

2)for循环遍历数组

当数组下标不是连续的时候、For循环遍历不了数组

$arr=array(“aa”,”bb”,”cc”);

For($i=0;$i<count($arr);$i++){

Echo$arr[$i].”<br>”;

}

(3)foreach循环遍历

数组有多少个元素、foreach就循环多少次

Foreach(数组 as自定义变理){

}

Foreach(数组 as 下标变理(键)=>自定义变理(值)){

}

$arr=array(“11”,”bb”);

Foreach($arras $key => $values){

Echo “{$key}====>{$values}”

}

$arr= array(

array("name"=>"ssw","age"=>22, "性别"=>"sex"),

array("name"=>"ssw1","age"=>29, "性别"=>"six"),

array("name"=>"ssw2","age"=>26, "性别"=>"sex")

);

echo"<table border=‘1‘ width=‘200‘>";

echo"<caption>数组转为表格</caption>";

foreach($arras $row){

echo "<tr>";

foreach($row as $col){

echo"<td>".$col."</td>";

}

echo "</tr>";

}

echo"</table>";

(4)联合使用list() each() while()循环遍历使用

List()作用:

1、等号左边用list()函数、等号右边只能是一个数组

2、数组中有几个元素、在list()中就用几个参数、而且参数必须是变量、不能是值

3、只能将索引数组(下标是连续)、转为变理、是按下标0开始找的

4、可以在list()参数中通过、空项选择性接收数组中的元素

$str=”天涯_海角”;

List($name,$sea)=explode(“_”,$str);

Echo $name;

Echo $sea;

天涯

海角

Each()是一个函数、参数为数组、返回值也是一个数组

1、返回值是一个数组、数组有4个固定元素、下标固定的1 值 value值 0 下标key下标

2、each()只处理当前元素、将当前元素转为数组信息、处理完后、指针向下一个元素移动

3、如果指定已经结束了、在使用each()获取元素、返回false

$arr =array("one"=>"Thinkphp","two"=>"Yii", "three"=>"smarty");

while(list($key,$val) = each($arr)){

echo"{$key}=>{$val}<br>";

}

显示:

one=>Thinkphp

two=>Yii

three=>smarty

(5)数组内部指针遍历数组

控制指定的位置next(下一个)  prev(上一个)  end(最后一个)  reset(第一个)

Key()获取数组当前下标 current()获取数组当前值

$arr =array("one"=>"Thinkphp","two"=>"Yii", "three"=>"smarty");

Echo “当前位置:” . ”key($arr)”. ”==>” . ”current($arr)” . ”<br>”;

(6)php超全局数组

超全局数组(变量)在系统中已预定好的、可以直接调用

$_SERVER   服务器变量

$_ENV    环境变量

$_GET    http get变量  接收用户通过url向服务器传的参数

$_POST    http post变量  接收用户通过http协议向服务器传的参数

$_REQUEST    request变量  此关联数组包含$_GET $_POST$_COOKIE中全部内容

$_FILES    http文件上传变量

$_COOKIE    http cookies

$_SESSION    session变量

$_GLOBALS    global变量

Print_r($_SERVER);

(7)PHP常用数组函数

数组的键值操作函数(函数主要看功能 返回值)

Array_values()返回数组中所有的值,返回数组。

$sh=array(“shang”=>”上海”,”海”=>”海南”);

Print_r(Array_values($sh));

显示为:Array ( [0] => ”上海” [1] => ”海南” )

Array_keys(array,value,strict)返回数组中所有的键,返回数组。

Array为数组  value可选指定键值、然后只有该键值对应的键名被返回

Strict 可选 true 依赖类型 faLse不依赖类型

<?php

$a=array(10,20,30,"10");

print_r(array_keys($a,"10",true));

?>

显示为:Array ( [0] => 3 )

In_array(search, array,type)搜索数组中是否存在指定的值,返回真假。

Search 必需、规定要在数组搜索的值

Array 必需、规定要搜索的数组

Type 可选、设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

$sh=array(“shang”=>”上海”,”海”=>”海南”);

If(in_array(“上海”, $sh)){

Echo“在数组中”

}else{

Echo“不在数组中”:

}

显示:在数组中

array_search(search,array, type)函数在数组中搜索某个键值,并返回对应的键名,如果没找到,则返回 false

Search 必需、规定要在数组搜索的值

Array 必需、规定要搜索的数组

Type 可选、设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

$a=array("a"=>"5","b"=>5,"c"=>"5");

echoarray_search(5,$a,true);

显示:b

Array_key_exists(search, array, type)搜索数组中是否存在指定的键,返回真假。

Search 必需、规定要在数组搜索的值

Array 必需、规定要搜索的数组

Type 可选、设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

$a=array("a"=>"5","b"=>5,"kong"=>null);

If(array_key_exists(“kong”, $a)){

Echo“在数组中”

}else{

Echo“不在数组中”:

}

显示:在数组中

Array_flip(array)交换数组中所有的键名以及它们关联的键值、返回数组(只能处理整数和字符串)

$a=array("a"=>"5","b"=>5,"c"=>"cisoco");

print_r(array_flip($a));

显示:Array ( [5] => b [cisoco] => c )  //重复下标会被后面相同键名的覆盖

Array_reverse(array,preserve)将原数组中的元素顺序翻转,创建新的数组并返回

Array 必需、规定数组

Preserve可选(true/false)规定是否保留原始数组的键名

$a=array("a","b","c");

$reverse=array_reverse($a);

$preserve=array_reverse($a,true);

print_r($a);

echo"<br>";

print_r($reverse);

echo"<br>";

print_r($preserve);

显示为:

Array( [0] => a [1] => b [2] => c ) 
Array ( [0] => c [1] => b [2] => a ) 
Array ( [2] => c [1] => b [0] => a )

统计数组元素的个数与唯一性

Count(array,mode)返回数组中元素的数目(strlen是统计字符串长度)

Array 必需、规定数组

Mode 可选、0为不对多维数组统计、1递归统计数组中的元素

$cars=array

(

"Volvo"=>array( "XC60", "XC90"),

"BMW"=>array("X3","X5"),

"Toyota"=>array("Highlander")

);

echo "常规计数:" .count($cars)."<br>";

echo "递归计数:" .count($cars,1);

显示为:

常规计数:3
递归计数:8

Array_count_values(array)统计数组中所有值出现的次数、返回一个数组

$a=array("A","Cat","Dog","A","Dog");

print_r(array_count_values($a));

显示为:

Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )

Array_unique(array)移除数组中的重复的值,并返回结果数组

当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除

$a=array("a"=>"red","b"=>"green","c"=>"red");

print_r(array_unique($a));

显示为:Array ( [a] => red [b] => green )

使用回调函数处理数组的函数

Array_filter(array,callbackfunction);用回调函数过滤数组中的值、返回原数组

Callbackfunction 必需 规定要使用的回调函数

$arr = array(1,3,4,false,-2,-1,-6,null,-8);

var_dump(array_filter($arr));

echo "<br>";

function myfun($value){

if($value>= 0)

returntrue;

else

returnfalse;

}

var_dump(array_filter($arr,"myfun"));

var_dump(array_filter($arr,function($value){

return!($value%2==0);

}));

显示为:

array(7){ [0]=> int(1) [1]=> int(3) [2]=> int(4) [4]=> int(-2) [5]=>int(-1) [6]=> int(-6) [8]=> int(-8) } 
array(5) { [0]=> int(1) [1]=> int(3) [2]=> int(4) [3]=> bool(false)[7]=> NULL }

array_walk(array,myfunction, userdata)对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数

array必需。规定数组。

myfunction必需。用户自定义函数的名称。

Userdata可选。规定用户自定义函数的参数

事例一:

$arr = array(1,2,3,4,5);

function myfun(&$value){

$value=$value*$value;

}

print_r($arr);

echo "<br>";

array_walk($arr,"myfun");

print_r($arr);

显示为:

Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

事例二:

$_arr = array(22,44,66,76,43,24);

array_walk($_arr, function($value,$key){

var_dump($value, $key);

echo"<br>";

});

显示:int(22) int(0)

int(44) int(1)

int(66) int(2)

int(76) int(3)

int(43) int(4)

int(24) int(5)

事例三:

$arr =array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);

function myfun($key,$value){

echo"{$key}===={$value}<br>";

}

array_walk($arr,"myfun");

显示为:

1====one
2====two
3====three
4====four
5====five

事例四:

$arr =array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);

array_walk($arr, function($v,$k,$str){

echo"{$k} {$str} {$v}<br>";

}, "++++");

print_r($arr);

echo "<br>";

显示为:

1++++one
2++++two
3++++three
4++++four
5++++five

Array_map(callback,$array1,$array2)将回调函数作用到给定数组的单元上、返回一个数组。

callback 回调函数

array 为数组

$arr=array(1,2,3,4);

$brr=array("one","two");

function myfun($v,$bv){

echo" $v --- $bv <br>";

return1;

}

$rarr = array_map("myfun",$arr,$brr);

print_r($rarr);

显示为:

1--- one 
2 --- two 
3 --- 
4 --- 
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 )

$arr=array(1,2,3);

$brr=array("one","two");

$rarr = array_map(null,$arr,$brr);

echo "<pre>";

print_r($rarr);

echo "</pre>";

显示为:

Array
(
   [0] => Array
        (
            [0] => 1
            [1] => one
        )
    [1] => Array
        (
            [0] => 2
            [1] => two
        )
    [2] => Array
        (
            [0] => 3
            [1] =>
        )
)

数组的排序函数

1、冒泡法进行排序实例

代码:

<?php

/**

* PHP中的冒泡排序法使用

*/

// 预先声明一个数组

$arr= array(12,45,28,30,88,67);

echo"原数组";

print_r($arr);

echo"<br/>";

//冒泡排序

functionmaopao($arr){

// 进行第一层遍历

for($i=0,$k=count($arr);$i<$k;$i++) {

// 进行第二层遍历将数组中每一个元素都与外层元素比较

// 这里的i+1意思是外层遍历当前元素往后的

for($j=$i+1;$j<$k;$j++) {

// 内外层两个数比较

if($arr[$i]<$arr[$j]){

// 先把其中一个数组赋值给临时变量

$temp= $arr[$j];

// 交换位置

$arr[$j] = $arr[$i];

// 再从临时变量中赋值回来

$arr[$i] = $temp;

}

}

}

// 返回排序后的数组

return$arr;

}

// 直接打印排序后的数组

echo‘排序后‘;

print_r(maopao($arr));

2、二分法进行排序实例

$arr = array(20,18,12,9,45,34,28,22,99);

function qsort($arr){

if(!is_array($arr)|| empty($arr))

returnarray();

//获取数组的长度

$len= count($arr);

//如果数组中只有一个元素、直接返回这个数组

if($len<= 1)

return$arr;

$key[0]= $arr[0];

$left= array();

$right= array();

for($i=1;$i<$len;$i++){

if($arr[$i]<= $key[0]){

$left[]=$arr[$i];

}else{

$right[]= $arr[$i];

}

}

$left=qsort($left);

$right=qsort($right);

returnarray_merge($left,$key,$right);

}

print_r($arr);

echo "<br>";

print_r(qsort($arr));

显示:

Array( [0] => 20 [1] => 18 [2] => 12 [3] => 9 [4] => 45 [5] => 34[6] => 28 [7] => 22 [8] => 99 ) 
Array ( [0] => 9 [1] => 12 [2] => 18 [3] => 20 [4] => 22 [5]=> 28 [6] => 34 [7] => 45 [8] => 99 )

3、数组排序系统函数

Sort()  对数组进行升序排序、排列后数组被赋予新的键名、成功返加true、失败false

Rsort() 对数组进行降序排序、排列后数组被赋予新的键名、成功返加true、失败false

$arr = array(20,18,12,9,45,);

sort($arr);

print_r($arr);

显示为:

Array( [0] => 9 [1] => 12 [2] => 18 [3] => 20 [4] => 45 )

Ksort() 对数组按照键名排序、成功,返回 TRUE,否则返回 FALSE。

Krsort()对数组按照键名逆向排序、成功,返回 TRUE,否则返回 FALSE。

Asort() 对数组进行排序并保持索引关系、、成功,返回 TRUE、失败 FALSE

Arsort() 对数组进行逆向排序并保持索引关系、、成功,返回 TRUE、失败 FALSE

Natsort() 用自然顺序算法对给定数组中的元素排序、保留原始的键名、成功,返回 TRUE、失败 FALSE

Natcasesort()用自然顺序算法对给定数组中的元素排序、不区分大小写、保留原始的键名、成功,返回 TRUE、失败 FALSE

Usort() 使用用户自定义的比较函数对数组中的值进行排序、成功,返回 TRUE、失败 FALSE

Uasort()使用用户自定义的比较函数对数组中的值进行排序并保持索引关系、成功,返回 TRUE、失败 FALSE

Uksort()使用用户自定义的比较函数对数组中的键进行排序、成功,返回 TRUE、失败 FALSE

$data = array("FILE32.TXT","file.txt","file11.txt");

usort($arr, function($a,$b){

$alen= strlen($a);

$blen= strlen($b);

if($alen> $blen){

return1;

}elseif($alen< $blen){

return-1;

}else{

return0;

}

});

print_r($arr);

Array_multisort()对多个数组或多维数组进行排序、成功,返回 TRUE、失败 FALSE

$data = array(

array("id"=>1,"name"=>"aa", "age"=>10),

array("id"=>2,"name"=>"ww", "age"=>30),

array("id"=>3,"name"=>"cc", "age"=>30),

array("id"=>4,"name"=>"dd", "age"=>40),

);

$ages = array();

$names = array();

foreach($data as $value){

$ages[]= $value["age"];

$names[]= $value["name"];

}

array_multisort($ages,SORT_DESC,$name,SORT_DESC,$data);

echo "<pre>";

print_r($data);

echo "</pre>";

显示为:

Array

(

[0]=> Array

(

[id] => 1

[name] => aa

[age] => 10

)

[1]=> Array

(

[id] => 2

[name] => ww

[age] => 30

)

[2]=> Array

(

[id] => 3

[name] => cc

[age] => 30

)

[3]=> Array

(

[id] => 4

[name] => dd

[age] => 40

)

)

拆分、合并、分解与结合数组

Array_slice(array,start,length,preserve)在数组中根据条件取出一段值,并返回数组

Array 必需、数组

Start 必需、开始、0第一个元素

Length 可选、取数组的长度

Preserve 可选、true保留键名、false重置键名

$data =array("a","b","c","d","e");

$arr = array_slice($data,-3,2,true);

print_r($arr);

显示为:Array ( [2] => c [3]=> d )

array_splice(array,start,length,array)从数组中移除元素,并用新元素取代它,该函数也将返回包含被移除元素的数组

Array 必需、数组

Start 必需、开始、0第一个元素

Length 可选、取数组的长度

Array 插入数组

$data =array("a","b","c","d","e");

$arr =array_splice($data,-3,2,array("hhhh","wwww"));

print_r($arr); //该函数也将返回包含被移除元素的数组

echo "<br>";

print_r($data);

显示为:

Array( [0] => c [1] => d ) 
Array ( [0] => a [1] => b [2] => hhhh [3] => wwww [4] => e )

Array_combine (keys,values);通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值、键名数组和键值数组的元素个数必须相同、不同返回false

Keys必需。键名数组

Values必需。键值数组。

$key =array("a","b","c","d","e");

$value = array(11,22,33,44,55);

$all = array_combine($key,$value);

print_r($all);

显示为:

Array( [a] => 11 [b] => 22 [c] => 33 [d] => 44 [e] => 55 )

Array_merge(array1,array2,array3...)把一个或多个数组合并为一个数组如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素果您仅向函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引

$a =array("a","one"=>"b","c");

$b = array(10,"one"=>11,12);

$c =  array_merge($a , $b);

print_r($c);

显示为: //下标相同的会覆盖、是前面的覆盖后面的

Array( [0] => a [one] => 11 [1] => c [2] => 10 [3] => 12 )

$a =array("a",5=>"b","c"); //只输入一个数组

$c = array_merge($a);

print_r($c);

显示为:Array ( [0] => a [1]=> b [2] => c )

Array_intersect()计算数组的交集、返回数组的键名保留不变

Array_diff()计算数组差集、返回的数组中,键名保持不变

桟和队列

桟:先进后出(子弹夹)

入栈:array_push,在桟尾放入元素!

出栈:array_pop,在桟尾删除元素

队列,先进先出

入队列:array_push()在数组的尾端将数据压入数组

出队列:array_shift();在数组的顶端,将数据取出

array_unshift()可以将数据由数组的顶端压入数组!

事例:

$a=array("a"=>"red","b"=>"green");

array_push($a,"blue","yellow");

print_r($a);

array_pop($a);

echo "<br>";

print_r($a);)

显示为:

Array( [a] => red [b] => green [0] => blue [1] => yellow ) 
Array ( [a] => red [b] => green [0] => blue )

事例:

$a=array("a"=>"red","b"=>"green","c"=>"blue");

echoarray_shift($a);

echo"<br>";

print_r ($a);

显示为:

red
Array ( [b] => green [c] => blue )

事例:

$a=array("a"=>"red","b"=>"green");

array_unshift($a,"blue");

print_r($a);

显示为:

Array ( [0] =>blue [a] => red [b] => green )

其他有用的数组处理函数

Array_rand (array,number)函数从数组中随机选出一个或多个元素,并返回键名的数组

Number可选。规定返回多少随机键名

$a =array("red","green","linux");

print_r(array_rand($a,1));

显示为:Array ( [0] => 0 [1]=> 2 )

Shuffle(array)把数组中的元素按随机顺序重新排序、返回bool型。该函数为数组中的元素分配新的键名。已有键名将被删除

$a =array("r"=>"red","g"=>"green","l"=>"linux");

shuffle($a);

print_r($a);

显示为:Array ( [0] => red [1]=> linux [2] => green )

Array_sum(array)计算数组中所有值的和

$a=array("a"=>5,"b"=>13);

echo array_sum($a);

显示为:18

Range (low,high,step)创建一个包含指定范围的元素的数组

Low必需。规定数组的最低值。

High必需。规定数组的最高值。

Step可选。规定元素之间的步进制。默认是 1。

$number= range(0,50,10);

print_r($number);

显示为:Array ( [0] => 0 [1] => 10 [2] => 20 [3]=> 30 [4] => 40 [5] => 50 )

Array_fill (index,number,value);用给定的值填充数组,返回的数组有 number个元素,值为 value

Index必需。被返回数组的第一个索引。

Number必需。规定要插入的元素数。

Value必需。规定供填充数组所使用的值。

$number = array_fill(3,4,"blue");

print_r ($number);

显示为:Array ( [3] => blue [4]=> blue [5] => blue [6] => blue )

时间: 2024-10-11 16:28:24

PHP系列(三)PHP数组与数据结构的相关文章

[转]C# 互操作性入门系列(三):平台调用中的数据封送处理

传送门 C#互操作系列文章: C#互操作性入门系列(一):C#中互操作性介绍 C#互操作性入门系列(二):使用平台调用调用Win32 函数 C#互操作性入门系列(三):平台调用中的数据封送处理 C#互操作性入门系列(四):在C# 中调用COM组件 本专题概要 数据封送介绍 封送Win32数据类型 封送字符串的处理 封送结构体的处理 封送类的处理 小结 一.数据封送介绍 看到这个专题时,大家的第一个疑问肯定是--什么是数据封送呢?(这系列专题中采用假设朋友的提问方式来解说概念,就是希望大家带着问题

C# 互操作性入门系列(三):平台调用中的数据封送处理

好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------------------------------------------------------------------- C#互操作系列文章: C#互操作性入门系列(一):C#中互操作性介绍 C#互操作性入门系列(二):使用平台调用调用Win32 函数 C#互操作性入门系列(三):平台调用中的数据封

php的数组与数据结构

php编程中30%的地方会用到数组,可见php数组的重要性. php中的数组数组概述--- php是弱类型语言,故数组可存放任意多个,任意类型的数据,且可实现堆,栈,队列等数据结构的功能.数组容量可根据元素个数自动调整. 分类      索引数组---下标是整数,类似大多数语言中的数组.      关联数组---下标是无序不重复的key,映射到对应的value. (一)数组的定义1.直接赋值的方式声明数组    在变量名后面通过方括号“[]”中使用数字声明索引数组,使用字符串声明关联数组.   

iOS开发UINavigation系列三——工具栏UIToolBar

iOS开发UINavigation系列三--工具栏UIToolBar iOS中除了UINavinationBar之外,还有工具栏UIToolBar可以供我们使用,工具栏和导航栏十分类似,只是功能更加简单,工具栏中也有UIBarButtonItem按钮,在前两篇博客中,对导航栏和导航项都进行的讨论,地址如下: UINavigationBar:http://my.oschina.net/u/2340880/blog/527706 UINavigationItem:http://my.oschina.

漫谈可视化Prefuse(三)---Prefuse API数据结构阅读有感

前篇回顾:上篇<漫谈可视化Prefuse(二)---一分钟学会Prefuse>主要通过一个Prefuse的具体实例了解了构建一个Prefuse application的具体步骤.一个Prefuse Application需要经过数据导入(文本数据.数据库)->Prefuse数据结构接收数据->注册各种效果的Actions->渲染Renderer->交互展现Display的流程. 摸清了Prefuse那些看似眼花缭乱的框架结构,剩下的就是抽丝剥茧,顺藤摸瓜,结合Manua

PHP08 数组和数据结构

学习要点 数组的分类 数组的定义 数组的遍历 预定义数组 数组的相关处理函数 PHP操作数组需要注意的细节 数组的分类 关于PHP数组 由于PHP是弱类型的编程语言,所以PHP数组中的数组变量可以存储任意多个,任意类型的数据,并且可以实现其他语言强类型数据类型的堆.栈.队列等数据结构. PHP中使用数组的目的就是将多个相互关联的数据组织在一起形成集合,作为一个单元进行操作和处理. 员工信息表: ID 姓名 部门 邮箱 2016001 张三 开发部 [email protected] 201600

[转]JVM系列三:JVM参数设置、分析

[转]JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率.但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(

Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节

Exchange 2013SP1和O365混合部署系列三

继续,基本上大多数都是截图,在某些地方,会有一些提示. 下面就是和本地域进行同步,主要用到的是Dirsync工具. 全都是下一步. 继续下一步. 继续下一步. 这里输入的就是O365的管理员账号.也就是当时注册的那个. 本地管理员账号. 继续下一步. 开始自动配置. 开始同步本地的账户.到WAAD. 图上我们可以看到同步状态. 继续下面的操作,激活已同步的用户. 根据需要选择. 有印象没?安装同步工具的时候选的那个密码同步的选项. 先到这吧,下篇开始在本地Exchange 2013 SP1上配置