亚洲熟熟妇xxxx_亚洲欧美在线人成最新_久久久久国产一区二区_亚洲精品久久久久午夜福利_男女刺激床爽爽免费视频_99久久99久久精品免费观看_中文字幕欧洲有码无码_欧美熟妇丰满肥白大屁股免费视频_激情久久久久久久_亚洲高清www_老司机午夜免费福利视频_天天草综合网_欧美激情 亚洲_在线国产中文_亚洲日本视频在线观看_中文字幕一区二区三区乱码图片_曰韩精品无码一区二区三区视频_www.插插插.com_国产毛片毛片毛片毛片毛片毛片毛片_青娱乐国产精品

十年專注于品牌網站建設 十余年專注于網站建設_小程序開發(fā)_APP開發(fā),低調、敢創(chuàng)新、有情懷!
南昌百恒網絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡微信小程序

百恒網絡

南昌百恒網絡

如何進行程序性能優(yōu)化(一)

百恒網絡 2017-05-18 6192

相對電腦而言,移動設備具有內存少、CPU速度慢等特點,因此iOS開發(fā)人員需要盡可能優(yōu)化應用的性能。性能優(yōu)化需要考慮的問題很多,下面南昌網站制作公司小編和大家一起來學習幾個重要的優(yōu)化方法。今天我們來重點學習一下程序性能優(yōu)化之內存優(yōu)化。

在Swift語言中,內存管理采用ARC(Automatic Reference Counting,自動引用計數)。ARC是與MRC(ManualReference Counting,手動引用計數)相對而言的,這些概念來源自于Objective-C的內存管理方式。

1.內存管理

這里我們有必要先介紹一下Objective-C的內存管理方法,共有3種,分別介紹如下。

MRC。就是由程序員自己負責管理對象生命周期,負責對象的創(chuàng)建和銷毀。

ARC。采用與MRC一樣的內存引用計數管理方法,但不同的是,它在編譯時會在合適的位置插入對象內存釋放(如release、autorelease和retain等),程序員 不用關心對象釋放的問題。蘋果推薦在新項目中使用ARC,但在iOS 5之前的系統(tǒng)中不能采用ARC。

GC。在Objective-C 2.0之后,內存管理出現了類似于Java和C#的內存垃圾收集技術,但是垃圾收集與ARC完全不同,垃圾收集是后臺有一個線程負責檢查已經不再使用的對象,然后釋放之。由于后臺有一個線程一直運行,因此會嚴重影響性能,這也是Java和C#程序的運行速度無法超越C++的主要原因。GC技術不能應用于iOS開發(fā),只能應用于Mac OS X開發(fā)。

從上面的介紹可知,iOS采用MRC和ARC這兩種方式,ARC是蘋果推薦的方式,MRC方式相對比較原始,對于程序員的能力要求很高,但是它很靈活、方便,很不容易駕馭好。Swift采用ARC管理內存,因此使用起來比較簡單。

2.使用 Analyze 和 Instruments 工具解決內存泄漏問題

內存泄漏指一個對象或變量在使用完成后沒有釋放掉,這個對象一直占用這部分內存,直到應用停止。如果這種對象過多,內存就會耗盡,其他應用就無法運行。這個問題在C++C和Objective-C的MRC中是比較普遍的問題。

在Objective-C中,釋放對象的內存時,可以發(fā)送release和autorelease消息,它們都可以將引用計數減1。當引用計數為0時,release消息會使對象立刻釋放,autorelease消息會將對象放入內存釋放池中延遲釋放。

下面我們看看本節(jié)配套的Objective-C工程中ViewController的代碼片段:

- (void)viewDidLoad

{

[super viewDidLoad];

NSBundle *bundle = [NSBundle mainBundle];

NSString *plistPath = [bundle pathForResource:@"team"

ofType:@"plist"];

//獲取屬性列表文件中的全部數據

self.listTeams = [[NSArray alloc] initWithContentsOfFile:plistPath];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:

(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault

reuseIdentifier:CellIdentifier];

}

NSUInteger row = [indexPath row];

NSDictionary *rowDict = [self.listTeams objectAtIndex:row];

cell.textLabel.text = [rowDict objectForKey:@"name"];

NSString *imagePath = [rowDict objectForKey:@"image"];

imagePath = [imagePath stringByAppendingString:@".png"];

cell.imageView.image = [UIImage imageNamed:imagePath];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

NSUInteger row = [indexPath row];

NSDictionary *rowDict = [self.listTeams objectAtIndex:row];

NSString *rowValue = [rowDict objectForKey:@"name"];

NSString *message = [[NSString alloc] initWithFormat:@"您選擇了%@隊。", rowValue];

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"請選擇球隊"

message:message

delegate:self

cancelButtonTitle:@"Ok"

otherButtonTitles:nil];

[alert show];

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}

大家看看,上面的這3個方法會有什么問題呢?如果代碼基于ARC,這是沒有問題的,但遺憾的這是基于MRC的,都存在內存泄漏的可能性。從理論上講,內存泄漏是由對象或變量沒有釋放引起的,但實踐證明并非所有的未釋放對象或變量都會導致內存泄漏,這與硬件環(huán)境和操作系統(tǒng)環(huán)境有關,因此我們需要檢測工具幫助我們找到這些“泄漏點”。

在Xcode中,共提供了兩種工具幫助查找泄漏點:Analyze和Instruments。Analyze是靜態(tài)分析工具。可以通過Product→Analyze菜單項啟動。圖1所示為使用Analyze工具進行靜態(tài)分析之后的代碼界面。Instruments是動態(tài)分析工具,它與Xcode集成在一起,可以在Xcode中通過Product→Profile菜單項啟動。如圖2所示,Instruments有很多跟蹤模板可以動態(tài)分析和跟蹤內存、CPU和文件系統(tǒng)。

使用Analyze進行靜態(tài)分析之后的代碼界面

圖1 使用Analyze進行靜態(tài)分析之后的代碼界面

Instruments分析工具

圖2 Instruments分析工具

我們可以結合使用這兩個工具查找泄漏點。先使用Analyze靜態(tài)分析查找可疑泄漏點,再用Instruments動態(tài)分析中的Leaks和Allocations跟蹤模板進行動態(tài)跟蹤分析,確認這些點是否泄漏,或者是否有新的泄漏出現等。

在圖1所示的Analyze靜態(tài)分析結果中,凡是有 圖標的行都是工具發(fā)現的疑似泄漏點。點擊viewDidLoad方法中疑似泄漏點行末尾的 圖標,會展開分析結果,具體如圖3所示。

viewDidLoad方法的疑似泄漏點展開結果

圖3 viewDidLoad方法的疑似泄漏點展開結果

圖3中的線表明了程序執(zhí)行的路徑。在這個路徑中,第1處說明在第25行中,Objective-C對象的引用計數是1,說明在這里創(chuàng)建了一個Objective-C對象。第2處說明在第27行中引用計數為1,該對象沒有釋放,懷疑有泄漏。這樣的說明已經很明顯地告訴我們問題所在了,[[NSArray alloc]initWithContentsOfFile:plistPath]創(chuàng)建了一個對象,并賦值給listTeams屬性所代表的成員變量,然而完成了賦值工作之后,創(chuàng)建的對象并沒有顯式地發(fā)送release和autorelease消息。這里可以將代碼修改如下:

NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];

self.listTeams = array;

[array release];

點擊tableView:cellForRowAtIndexPath:方法中疑似泄漏點行末尾的 圖標,展開分析結果,如圖4所示。

tableView:cellForRowAtIndexPath:方法的疑似泄漏點展開結果

圖4 tableView:cellForRowAtIndexPath:方法的疑似泄漏點展開結果

這主要說明UITableViewCell *類型的cell對象在第64行有可能存在泄漏。在表視圖中tableView:

cellForRowAtIndexPath:方法用于實例化表視圖單元格并設置數據,因此cell對象實例化后不能馬上釋放,而應該使用autorelease延遲釋放。可以在創(chuàng)建cell對象時發(fā)送autorelease消息,將代碼修改如下:

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault

reuseIdentifier:CellIdentifier] autorelease];

}

我們再看一下tableView:didSelectRowAtIndexPath:方法中的疑似泄漏點,共有兩個。點擊行末尾的 圖標,展開分析結果,具體如圖5和圖6所示。

tableView:didSelectRowAtIndexPath:方法疑似泄漏點1的展開結果

圖5 tableView:didSelectRowAtIndexPath:方法疑似泄漏點1的展開結果

tableView:didSelectRowAtIndexPath:方法疑似泄漏點2的展開結果

圖6 tableView:didSelectRowAtIndexPath:方法疑似泄漏點2的展開結果

圖5所示的是message對象創(chuàng)建之后沒有釋放,我們只需要在[alert show]之后添加[message release]語句代碼就可以了。

在Objective-C中,實例化對象有如下兩種方式:

NSString *message = [[NSString alloc] initWithFormat:@"您選擇了%@隊。", rowValue]; ①

NSString *message = [NSString stringWithFormat:@"您選擇了%@隊。", rowValue]; ②

第①行所示的以init開頭的構造方法在alloc之后調用,我們將其稱為“實例構造方法”。對于使用該方法創(chuàng)建的對象,其所有權是調用者,調用者需要對它的生命周期負責,具體說就是負責創(chuàng)建和釋放。第②行所示的以string開頭的方法,它通過類直接調用,我們將其稱為“類級構造方法”。

南昌網站制作小編提示:采用alloc、new、copy和mutableCopy所創(chuàng)建的對象,所有權屬于調用者,它的生命周期由調用者管理,調用者負責通過release或autorelease方法釋放對象。

圖6所示的是UIAlertView *類型的alert對象創(chuàng)建后沒有釋放,我們只需要在[alert show]之后添加[alertrelease]語句就可以了。修改之后的代碼如下:

UIAlertView *類型的alert對象創(chuàng)建后沒有釋放,我們只需要在[alert show]之后添加[alertrelease]語句就可以了。修改之后的代碼

上面介紹的是使用Analyze靜態(tài)分析查找可疑泄漏點。之所以稱為“可疑泄漏點”,是因為這些點未必一定泄漏。確認這些點是否泄漏,還要通過Instruments動態(tài)分析工具中的Leaks和Allocations跟蹤模板。Analyze靜態(tài)分析只是一個理論上的預測過程。在Xcode中通過Product→Profile菜單項啟動Instruments動態(tài)分析工具,接著選擇Leaks模板,打開的界面如圖7所示。

Instruments的Leaks模板

圖7 Instruments的Leaks模板

在Instruments中,雖然選擇了Leaks模板,但默認情況下也添加Allocations模板。基本上凡是分析內存都會使用Allocations模板,它可以監(jiān)控內存分布情況。選中Allocations模板(圖中①區(qū)域),右邊的③區(qū)域會顯示隨著時間的變化內存使用的折線圖,同時在④區(qū)域會顯示內存使用的詳細信息以及對象分配情況。點擊Leaks模板(圖中②區(qū)域),可以查看內存泄漏情況。如圖8所示,如果在③區(qū)域有紅線出現,則有內存泄漏,④區(qū)域則會顯示泄漏的對象。

Instruments檢測到的內存泄漏

圖8 Instruments檢測到的內存泄漏

圖8中出現的泄漏是在點擊表視圖中單元格測試tableView:didSelectRowAtIndexPath:方法時發(fā)生的,點擊泄漏對象Address列后面的 按鈕,會進入如圖9所示的詳細界面。可以發(fā)現,里面有兩個對象,可以看到它們的內存地址、占用字節(jié)、所屬框架和響應方法等信息。

查看泄漏的詳細信息

圖9 查看泄漏的詳細信息

在圖9中,點擊右邊的跟蹤堆棧信息按鈕 ,如圖10所示,其中 圖標所示的條目是我們自己應用的代碼,點擊它即可進入程序代碼,如圖11所示。

查看堆棧信息

圖10 查看堆棧信息

查看泄漏點

圖11 查看泄漏點

圖11所示的第84行代碼是可能的泄漏點。事實上,內存泄漏是極其復雜的問題,工具使用是一方面,經驗是另一方面。提高經驗,然后借助于工具才是解決內存泄漏的根本。

3.查找和解決僵尸對象

內存泄漏指一個對象或變量在使用完成后沒有釋放掉。如果我們走了另外一個極端情況,會是什么樣呢?這就導致過度釋放問題,從而使對象“僵尸化”,該對象則被稱為僵尸對象。如果一個對象已經被釋放過了,或者調用者沒有這個對象的所有權而釋放它,都會造成過度釋放,產生僵尸對象。

對于很多人來說,僵尸對象或許聽起來很恐怖、也很陌生,但是如果說起EXEC_BAD_ACCESS異常,可能大家并不陌生。如果應用的某個方法試圖調用僵尸對象,則會崩潰(應用直接跳出),并拋出EXEC_BAD_ACCESS異常。

下面我們看看本節(jié)配套Objective-C工程中ViewController的代碼片段:

Objective-C工程中ViewController的代碼片段

注意看上述代碼中的粗體部分,你會發(fā)現什么問題嗎?程序運行時,拋出EXEC_BAD_ACCESS異常。假設我們現在無法找到問題,可以使用Instruments工具的Zombies跟蹤模板。按照圖12所示選擇Zombies模板,接著點擊Profile按鈕就可以進入了。

Instruments的Zombies模板

圖12 Instruments的Zombies模板

這樣在程序運行時,如果發(fā)現僵尸對象,就會彈出一個對話框,如圖13所示,點擊其中的 按鈕,便會在屏幕下方顯示僵尸對象的詳細信息(如圖14所示)。

僵尸對象信息

圖13 僵尸對象信息

僵尸對象的詳細信息

圖14 僵尸對象的詳細信息

從圖14可見,僵尸對象為UIAlertView類型,從上到下僵尸對象的引用計數變化是:1(創(chuàng)建)→ 0(釋放)→ ?1(僵尸化)。點擊View中的 按鈕,打開堆棧跟蹤信息視圖,然后在右邊的跟蹤堆棧信息中點擊 條目進入我們的程序代碼并定位到僵尸對象,如圖15所示。

定位僵尸對象

圖15 定位僵尸對象

在圖15中,3條高亮顯示的代碼會影響對象的引用計數,從中我們不難發(fā)現問題。就本例而言,我們需要將本節(jié)開頭第②行代碼[alert show]放在[alert release]語句之前調用就可以了。

4.autorelease 的使用問題

在MRC中,釋放對象通過release或autorelease消息實現,其中release消息會立刻使引用計數減一,autorelease消息會使對象放入內存釋放池中延遲釋放,對象的引用計數并不變化,而是向內存釋放池中添加一條記錄,直到池被銷毀前通知池中的所有對象全部發(fā)送release消息才真正將引用計數減少。

由于使用autorelease消息會使對象延遲釋放,所以除非必須,否則不要使用它釋放對象。在iOS程序中,內存釋放池的釋放默認在程序結束。應用程序入口main.m文件的代碼如下:

int main(int argc, char *argv[])

{

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

}

}

代碼被包裹在@autoreleasepool {…}之間,這是池的作用范圍,默認是整個應用。如果產生大量對象,采用autorelease釋放也會導致內存泄漏。那么什么時候才必須使autorelease呢?我們看看下面的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:

(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault

reuseIdentifier:CellIdentifier] autorelease];

}

NSUInteger row = [indexPath row];

NSDictionary *rowDict = [self.listTeams objectAtIndex:row];

cell.textLabel.text = [rowDict objectForKey:@"name"];

NSString *imagePath = [rowDict objectForKey:@"image"];

imagePath = [imagePath stringByAppendingString:@".png"];

cell.imageView.image = [UIImage imageNamed:imagePath];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;

}

在上述代碼中,cell對象不能馬上釋放,我們需要使用它設置表視圖界面。autorelease一般用在為其他調用者提供對象的方法中,對象在該方法中不能馬上釋放,而需要延遲釋放。

此外,還有一種情況需要使用autorelease,就是使用靜態(tài)工廠方法獲得對象時,因為靜態(tài)工廠方法內部使用了autorelease。使用靜態(tài)工廠方法的代碼如下:

NSString *message = [NSString stringWithFormat:@"您選擇了%@隊。", rowValue];

該對象的所有權雖然不是當前調用者,但它是由iOS系統(tǒng)通過發(fā)送autorelease消息放入到池中的。當然,這一切對于開發(fā)者都是不可見的,我們也要注意減少使用這樣的語句。

5.響應內存警告

好的應用應該在系統(tǒng)內存警告的情況下釋放一些可以重新創(chuàng)建的資源。在iOS中,我們可以在應用程序委托對象、視圖控制器以及其他類中獲得系統(tǒng)內存警告消息。

(1) 應用程序委托對象

在應用程序委托對象中接收內存警告消息,需要寫applicationDidReceiveMemoryWarning:方法,具體可參考本節(jié)實例代碼中AppDelegate的代碼片段:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

{

NSLog(@"AppDelegate中調用applicationDidReceiveMemoryWarning:");

}

(1) 視圖控制器

在視圖控制器中接收內存警告消息,需要重寫didReceiveMemoryWarning方法,具體可參考本節(jié)實例代碼中

ViewController的代碼片段:

- (void)didReceiveMemoryWarning

{

NSLog(@"ViewController中didReceiveMemoryWarning調用");

[super didReceiveMemoryWarning];

//釋放成員變量

[_listTeams release];

}

注意,釋放資源代碼應該放在[super didReceiveMemoryWarning]語句后面。

(1) 其他類

在其他類中可以使用通知。在發(fā)生內存警告時,iOS系統(tǒng)會發(fā)出UIApplicationDidReceiveMemoryWarningNotification通知,凡是在通知中心注冊了該通知的類都會接收到內存警告通知,具體可參考本節(jié)實例代碼中ViewController的代碼片段:

- (void)viewDidLoad

{

[super viewDidLoad];

NSBundle *bundle = [NSBundle mainBundle];

NSString *plistPath = [bundle pathForResource:@"team"

ofType:@"plist"];

//獲取屬性列表文件中的全部數據

NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];

self.listTeams = array;

[array release];

//接收內存警告通知,調用handleMemoryWarning方法處理

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

[center addObserver:self

selector:@selector(handleMemoryWarning)

name:UIApplicationDidReceiveMemoryWarningNotification

object:nil];

}

//處理內存警告

-(void) handleMemoryWarning

{

NSLog(@"ViewController中handleMemoryWarning調用");

}

在上述代碼中,我們在viewDidLoad方法中注冊UIApplicationDidReceiveMemoryWarningNotification消息,接收到報警信息后調用handleMemoryWarning方法。這些代碼完全可以寫在其他類中,直接在ViewController中重寫didReceiveMemoryWarning方法就可以了。本例只是示意性地介紹一下UIApplicationDidReceiveMemoryWarningNotification報警消息。

內存警告在設備上并不經常出現,一般我們沒有辦法模擬,但模擬器上有一個功能可以模擬內存警告。啟動模擬器,選擇“硬件”→“模擬內存警告”模擬器菜單,這時我們會在輸出窗口中看到內存警告發(fā)生了,具體如下所示:

2014-11-19 15:58:51.032 MemoryLeakSample[1396:41574] Received memory warning.

2014-11-19 15:58:51.033 MemoryLeakSample[1396:41574] AppDelegate中調用applicationDidReceiveMemoryWarning:

2014-11-19 15:58:51.034 MemoryLeakSample[1396:41574] ViewController中handleMemoryWarning調用

2014-11-19 15:58:51.034 MemoryLeakSample[1396:41574] ViewController中didReceiveMemoryWarning調用

了解更多相關資訊,關注南昌網站制作公司--百恒網絡官方網站。百恒網絡是一家專業(yè)從事南昌網站建設、微信開發(fā)、APP開發(fā)、網絡營銷等服務的南昌網絡公司,技術過硬,經驗豐富。如有任何網站方面的問題,百恒網絡隨時歡迎大家來電咨詢,我們專業(yè)為您解答!


400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡小程序

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
主站蜘蛛池模板: 虎霸建设机械有限公司| 鑫宇五金制品有限公司| 川味观餐饮有限公司| 兴达塑胶制品有限公司| 深圳市通达光电有限公司| 新时代通讯有限公司| 成都整体家居有限公司| 家乐威顿家具有限公司| 安阳汽车零部件有限公司| 杭州余杭食品有限公司| 文博工艺品有限公司| 仕达威实业有限公司| 余姚液压管件有限公司| 安徽宁国密封件有限公司| 一电电池技术有限公司| 南一机机床有限公司| 山东点石设计有限公司| 珠海华夏生物有限公司| 在诺威实业有限公司| 次方信息技术有限公司| 北京园林古建工程有限公司| 广州市金属回收有限公司| 山东出入境有限公司| 当代北辰置业有限公司| 上海 创意有限公司怎么样| 宁波变压器制造有限公司| 金融租赁有限公司怎么样| 河南新野纺织有限公司| 广州化妆用具有限公司| 河南安阳化工有限公司| 东莞市君业有限公司| 安徽力科工程有限公司| 山东铝业有限公司地址| 东莞塘厦五金有限公司| 平安普惠上海有限公司| 丽鑫化妆品有限公司| 永旺天河城商业有限公司| 莱芜 无纺织造有限公司| 爱索佳实业有限公司| 龙煜精密铜管有限公司| 日启亚机电有限公司| 常州市常宏有限公司| 广西贵港药业有限公司| 铜陵上峰水泥有限公司| 恒昌涂料(惠阳)有限公司| 莱尼电气系统 济宁 有限公司| 河南正大机械有限公司| 东鹏不锈钢有限公司| 东莞元宗家具有限公司| 武汉邦迪管路系统有限公司| 神州通医药有限公司| 华南建材 深圳 有限公司| 佛山市销售有限公司招聘| 赛思达机械设备有限公司| 三利中德美水设备有限公司 | 轩盛国际贸易有限公司| 青岛汽车空调有限公司| 蚌埠医疗器械有限公司| 苏州苏宁床垫有限公司| 中艺建筑设计院有限公司| 昆山太祥电子有限公司| 广州陈李济药厂有限公司| 深圳亚美电子有限公司| 江苏德源药业有限公司| 东莞智科机械有限公司| 山东防腐保温工程有限公司| 深圳市融易投有限公司| 冠联高分子材料有限公司| 诸城兴贸玉米有限公司| 西安金业置业有限公司| 鞍钢国际贸易有限公司| 乳品机械制造有限公司| 招商局码头有限公司| 欧时电子(上海)有限公司| 南通江天化学有限公司| 中润兴认证有限公司| 湖北金源化工有限公司| 广西玉柴机械有限公司| 环球香港有限公司官网| 深圳泰瑞捷有限公司| 上海中帝置业有限公司| 安徽云贸易有限公司| 广州金融街置业有限公司| 安固建筑技术有限公司| 上海希爱化成有限公司| 广州市欧亚床垫家具有限公司 | 普朗医用设备有限公司| 凯源电力工程有限公司| 中钞钞券设计制版有限公司| 沪防建筑设计有限公司| 深圳市美博电子有限公司| 明辉工业技术有限公司| 深圳塑胶礼品有限公司| 太仓市政工程有限公司| 东方希望碳素有限公司| 宝莱特机械有限公司| 金石包装嘉兴有限公司| 奥瑞那光子技术有限公司| 惠州辉煌涂料有限公司| 无锡康迪克电梯有限公司| 能科新能源有限公司| 上海市航运有限公司| 康硕电子(苏州)有限公司| 枣庄市玻璃有限公司| 青岛大地化工有限公司| 广州园林建设有限公司| 东莞市以俊服饰有限公司| 无锡金比机械制造有限公司| 长青家居用品有限公司| 广州友迪资讯有限公司| 广州天丰化工有限公司| 普天天纪楼宇智能有限公司| 浙江省医疗器械有限公司| 天润一舟(北京)有限公司| 南通工业气体有限公司| 广州汗马电子有限公司| 健鼎电子有限公司怎么样| 中核工业建设有限公司| 常州汽车部件制造有限公司| 李群自动化有限公司| 佛山科霖电器有限公司| 瑞鸿机电设备有限公司| 柏年光电标饰有限公司| 阿路米(无锡)有限公司| 伊顿森源开关有限公司| 能源化工设备有限公司| 上海晶艺玻璃有限公司| 湖南省水利水电第一工程有限公司| 台州东方机械有限公司| 江汉石油机械有限公司| 沈阳东亿机械有限公司| 深圳市天伟电子有限公司| 京鑫源工贸有限公司| 华泰汽车座椅有限公司| 太好环保工程有限公司| 棕榈园林工程有限公司| 济南电力安装有限公司| 妙字号食品有限公司| 澳宝化妆品惠州有限公司| 株洲易力达有限公司| 北京绿发园林绿化有限公司| 深圳鼎丰电子有限公司| 山东春雪食品有限公司-| 华达微电子有限公司| 南京汇赢百货有限公司| 银大贵金属有限公司| 信阳保温建材有限公司| 陕西塑料制品有限公司| 兆翔临港置业有限公司| 有限公司 董事长 专访| 威海达而达机械有限公司| 本田制锁(广东)有限公司| 英孚语言培训有限公司| 新中环建筑设计有限公司| 龙仕翔塑胶有限公司| 上海菱运国际货运有限公司| 波路梦食品有限公司| 道然进出口有限公司| 全品装饰工程有限公司| 北京 凯新认证有限公司| 北京美容仪器有限公司| 百度91无线有限公司| 东莞通有限公司招聘| 欧米特机械有限公司| 辽宁 石材 有限公司| 景众汽车销售有限公司| 中粮油脂(钦州)有限公司| 恒大美森美实业有限公司| 齐鲁制药(海南)有限公司| 上海汽车装饰用品有限公司| 西藏尼玛生物有限公司| 银河星文具有限公司| 柯惠医疗上海有限公司| 凯凯电动工具有限公司| 耀华进出口有限公司| 科瑞思机械有限公司| 金山自来水有限公司| 正方电子(深圳)有限公司| 高银地产天津有限公司| 三鹰生物技术有限公司| 顶金贵金属经营有限公司| 中油恒燃石油燃气有限公司| 漳州市裕食品有限公司| 重庆建设 雅马哈摩托车有限公司| 广州广业置业有限公司| 烟台 苹果 有限公司| 北京风腾机械有限公司| 深圳市金联电子有限公司| 江苏恒江包装有限公司| 北京顶津食品有限公司| 昆山福伊特造纸有限公司| 台州台驰贸易有限公司| 三角洲化工有限公司| 厦门兴厦塑料有限公司| 中山市中振有限公司| 镇江江腾电器有限公司| 安徽生物化工有限公司| 飞利浦香港有限公司| 尚氏化妆品有限公司| 尼康仪器(上海)有限公司| 仙桃的包装有限公司| 成都石油天然气工程有限公司| 深圳杰亮光电有限公司| 太原 饲料 有限公司| 中孚泰实业有限公司| 广西南宁涂料有限公司| 天津日板玻璃有限公司| 石家庄工业炉有限公司| 四川防火门窗有限公司| 西安钢构工程有限公司| 罗格朗低压电器有限公司| 厦门南亚塑胶有限公司| 高昌液压机电有限公司| 北京医药产业有限公司| 立昂微电子有限公司| 上海灿瑞半导体有限公司| 成都国酿食品有限公司| 物联网工程与技术有限公司| 上海电力工程设计有限公司| 华龙工艺品有限公司| 设备零部件有限公司| 科尔达电子有限公司| 临沂佰易理财有限公司| 新世纪通讯有限公司| 山东服装有限公司招聘| 青岛瑞智精密机电有限公司| 山东淄博纸业有限公司| 天成农业发展有限公司| 企派信息技术有限公司| 上海驿家物业有限公司| 飞宏电子(苏州)有限公司| 常州大亚进出口有限公司| 重庆电缆有限公司招聘| 茂迪新能源有限公司昆山| 合肥的机械有限公司| 深圳博特贸易有限公司| 歌莉娅服饰有限公司| 苏州润泽制药有限公司| 深圳现代监理有限公司| 杭州 纺织品贸易有限公司| 杭州阿斯莫有限有限公司| 华泰模塑电器有限公司| 天时达电子有限公司| 益维汽车工业有限公司| 桑尼尼汽车零部件有限公司| 广州喻丝实业有限公司| 凯赫威精密制造有限公司| 广州市物资贸易有限公司| 常州化工厂有限公司| 深圳顺章电器有限公司| 大连鑫兴家具有限公司| 中铁融资租赁有限公司| 华宁机械制造有限公司| 中燃能源有限公司招聘| 上海德机电工程有限公司| 大唐西市置业有限公司| 深圳美诺电子有限公司| 劳特斯空调江苏有限公司| 全风机电设备有限公司| 常州延陵电子有限公司| 青海能源发展有限公司| 泰山耐火材料有限公司| 固铂成山山东轮胎有限公司| 广州市防火门有限公司| 上海经贸国际货运有限公司| 鞍山市门窗有限公司| 海虹交易中心有限公司| 深圳市宸宸贸易有限公司| 东莞市金顺电子有限公司| 恒尚装饰工程有限公司| 深圳人防设备有限公司| 深圳杉本贸易有限公司| 福耀上海汽车玻璃有限公司| 天津镁富贵金属经营有限公司| 深圳鼎富电子有限公司| 世邦集运厦门有限公司| 帝玛尔藏药药业有限公司| 江苏汽车零件有限公司| 四川总府物业有限公司| 京弘建设工程有限公司| 杨凌金海生物有限公司| 陕西福友电器有限公司| 河南都业置业有限公司| 山东电力设备制造有限公司| 新安金融 有限公司| 深圳市陆舟电动车有限公司| 卡特比勒郑州有限公司| 高士线业(深圳)有限公司| 重庆比诺食品有限公司| 上海众恒信息有限公司| 通达五金深圳有限公司| 华海消防工程安装有限公司| 上海园林绿化有限公司地址| 洛阳钨钼制品有限公司| 凯蓝 深圳有限公司| 临沂市拍卖有限公司| 厦门贸旭工贸有限公司| 山东金展置业有限公司| 法鑫忠信新材料有限公司| 大赛璐安全系统有限公司| 潍坊 健康 有限公司| 嘉兴新嘉爱斯热电有限公司| 泸州市窖酒有限公司| 希尔登楼梯有限公司| 超越金属制品有限公司| 宁波爱柯迪有限公司| 北京机电院机床有限公司| 亚鹰幕墙工程有限公司| 佛山服装有限公司招聘| 重庆中中物资有限公司| 上海素原首饰有限公司| 广州润金属制品有限公司| 武汉形象设计有限公司| 天津博纳艾杰尔有限公司| 广州科奥信息技术有限公司| 上海加冷松芝汽车空调有限公司| 广东省英德市有限公司| 浙江交联电缆有限公司| 欧波同纳米技术有限公司| 达仁有限公司 招聘| 深圳市赛美电子有限公司| 江南快速电梯有限公司| 北海 仪器 有限公司| 通环建设工程有限公司| 神力混凝土有限公司| 联振电子(深圳)有限公司| 东莞东城电子有限公司| 武冠新材料有限公司| 明辉机电有限公司招聘| 茂昌装饰工程有限公司| 天津柒一拾壹有限公司| 蒙发利电子有限公司| 华泰混凝土有限公司| 汇丰源食品有限公司| 珠海长宇建筑设计有限公司| 哈尔滨食品经销有限公司| 青岛食品机械制造有限公司| 华南建设工程有限公司| 喜洋洋便利店有限公司| 北京新纪元建筑工程设计有限公司 | 北京云图微动有限公司| 东莞市建筑设计院有限公司| 华润宜昌电力有限公司| 佛山奇新家具有限公司| 鄂尔多斯绿能光电有限公司| 香港三菱电梯有限公司| 光大通信设备有限公司| 业全电子深圳有限公司| 瑞康医疗用品有限公司| 北京佳艺印刷有限公司| 万峰装饰工程有限公司| 韩泰轮胎(嘉兴)有限公司| 无锡久保田有限公司| 北京寰宇汽车有限公司| 湘潭 酒 有限公司| 特福隆(上海)有限公司| 江森自控有限公司怎么样| 泰克国际贸易上海有限公司| 深圳通达五金有限公司| 数慧信息技术有限公司| 依工净化吴江有限公司| 东莞智科机械有限公司| 鞍山重型矿山机器有限公司| 锦州有限塑料制品有限公司| 苏州精英电脑有限公司| 湖北御金丹药业有限公司| 景德镇德韵有限公司| 深圳 酷动数码有限公司| 高鼎化工昆山有限公司| 连云港通信有限公司| 深圳证大速贷小额贷款有限公司| 上海明治巧克力有限公司| 吉林松花江热电有限公司| 江西洪城水业有限公司| 深圳华宝饲料有限公司| 广州 欧姆龙有限公司| 福建晋江有限公司招聘| 深圳市旺鑫精密有限公司| 罗西尼表业有限公司| 上海纳路涂料有限公司| 琉璃河水泥有限公司| 东莞市滤清器制造有限公司| 万家装饰设计工程有限公司 | 天成化妆品有限公司| 允升吉电子有限公司| 北方信息产业有限公司| 岳阳长炼机电工程有限公司| 内蒙古消防工程有限公司| 哈尔滨森鹰窗业有限公司| 大禹水利工程有限公司| 沈阳好丽友有限公司| 深圳市恒嘉电子有限公司 | 东莞游乐设备有限公司| 康嘉信息技术有限公司| 南昌金属制品有限公司| 新景园林建设有限公司| 文制品有限公司招聘| 西安航天自动化有限公司| 金地置业发展有限公司| 中金融资租赁有限公司| 深圳市明伟电子有限公司| 昂科信息技术有限公司| 山东恒瑞电子有限公司| 长沙新联汽车零部件有限公司| 深圳市拓瑞电子有限公司| 苏州信能机械有限公司| 汕头 服装 有限公司招聘| 安特优(苏州)有限公司| 大地旅游规划设计有限公司| 天妃枇杷酒有限公司| 德昌祥药业有限公司| 普瑞科精密压铸有限公司| 华润置业有限公司地址| 小松山推机械有限公司| 东爵有机硅有限公司| 红旗电线电缆有限公司| 山东新华置业有限公司| 盈康医疗器械有限公司| 中韩石油化工有限公司| 福建燕京啤酒有限公司| 肇庆高新区机械有限公司| 彩耀装饰工程有限公司| 成都鑫电缆有限公司| 华润大东船务工程有限公司| 宿迁化工有限公司招聘| 上海迪爱斯通信设备有限公司| 上海中正威有限公司| 开心仁食品有限公司| 广州周立功单片机有限公司| 东莞华仪仪表有限公司| 深圳市车视电子有限公司| 洋河镇名河酒业有限公司| 丑丑婴儿用品有限公司| 深圳西部公共汽车有限公司| 世联地产经纪有限公司| 天津钢化玻璃有限公司| 敦扬广州汽车电子有限公司| 辽宁堂医药有限公司| 博瑞生物医药技术有限公司| 中建深圳实业有限公司| 广州悦然化妆品有限公司| 西北医疗器械有限公司| 陕西益丰置业有限公司| 山西建设工程有限公司地址| 斯迈普电梯有限公司| 北京华旅旅行社有限公司| 伊斯特食品有限公司| 上海佩纳沙士吉打机械有限公司| 上海管易云计算有限公司| 丰亿(广州)电子有限公司| 德尔制冷设备有限公司| 盈成油脂工业有限公司| 安徽徽商金属有限公司| 广州田鲜农业有限公司| 北京绿发园林绿化有限公司| 临沂市热力有限公司| 汉方现代药业有限公司| 嘉业天成建设有限公司| 格瑞特实业有限公司| 重庆新型材料有限公司| 上海朗赛贸易有限公司| 建准电机工业有限公司| 北京医用品有限公司| 贝亲婴儿用品有限公司| 南京江南永新有限公司| 联视电子工程有限公司| 广州霸天美容美发用品有限公司| 杭州杭邦建设有限公司| 山东淄博纸业有限公司| 深圳恒基电子有限公司| 利亚华南便利店有限公司| 丰联汽车销售有限公司| 中船重工海装风电设备有限公司 | 金旺鑫五金有限公司| 悦虎电路苏州有限公司| 微卡 北京有限公司| 台州工程建设有限公司| 亚盛工程机械有限公司| 中博健康产业有限公司| 湖南建筑安装工程有限公司| 山宏装饰工程有限公司| 品天信息技术有限公司| 东莞恩斯克转向器有限公司| 成都家具设计有限公司| 牛尾电机(苏州)有限公司| 广州州涛电子有限公司| 欧莎世家服饰有限公司| 星光树脂昆山有限公司| 乐满家咖啡食品有限公司| 创业装饰工程有限公司| 兴农融资担保有限公司| 超声波自动化设备有限公司| 天和汽车贸易有限公司| 岑溪 食品 有限公司| 深圳煜彩光电有限公司| 青岛安迈铝业有限公司| 名艺名居古典家具有限公司| 江苏海宏工程有限公司| 泰州市换热设备有限公司| 新恒基置业有限公司| 北京城市热点有限公司| 四川泸州有限公司招聘信息| 餐饮策划有限公司官网| 达涅利冶金设备有限公司| 深圳亿源电子有限公司| 深圳泛华工程有限公司| 广州市轩服装有限公司| 美图公司的发展有限公司| 上海宾得医疗器械有限公司| 巢湖路桥工程有限公司| 广州淮杰实业有限公司| 康达塑料制品有限公司| 天泽恩源医药技术有限公司| 华宇半导体有限公司| 佛山三水饮料有限公司| 深圳锦绣中华有限公司| 东莞天瑞电子有限公司| 易可纺家纺有限公司| 伟业五金制品有限公司| 飞宏电子(苏州)有限公司| 郑州恒越电子有限公司| 三星法绅贸易上海有限公司 | 日铭电脑配件有限公司| 华达机械制造有限公司| 得利时钟表有限公司| 谦杭重锻造有限公司| 南京信雅达有限公司| 石家庄通合电子有限公司| 杭州中石化有限公司| 常熟达明电子有限公司| 奥兰多杭州实业有限公司| 佛山港码头有限公司| 成都慧融金融有限公司| 佛山市金日有限公司| 青岛环卫设备有限公司| 有限公司 股东数量| 苏州爱普电子有限公司| 汽车机械设备有限公司| 索尼(美国)有限公司| 三伊电力电子有限公司| 广州南科电子有限公司| 贵州茅河酒业有限公司| 泰昌消防工程有限公司| 富士美电梯有限公司| 纳米生物技术有限公司| 华为技术有限公司西安| 电科电气设备有限公司| 国际轮胎橡胶有限公司| 味珍香食品有限公司| 弘科电子深圳有限公司| 艾斯工程机械有限公司| 艺海装饰设计有限公司| 华兴五金机械有限公司| 日立空调(苏州)有限公司| 益阳市机械有限公司| 安徽淮酒酒业有限公司| 广州市宠物用品有限公司| 天地图(天津)有限公司| 华电 北京 热电有限公司| 凯特信息技术有限公司| 三比冠食品有限公司| 伟士德诚运输上海有限公司| 天津动力总成有限公司| 山东服装有限公司招聘| 临沂教学设备有限公司| 北京比特大陆有限公司| 纳贝斯克食品 苏州 有限公司| 汇金石(厦门)有限公司| 蓝希络食品有限公司| 华润五丰营销有限公司| 恒海电子深圳有限公司招聘| 台州城市的发展有限公司| 华强新城市发展有限公司| 晋中 能源有限公司| 北京洗涤用品有限公司| 上海信谊制药有限公司| 淄博圣圣工贸有限公司| 福斯水泵有限公司官网| 逸景园林景观有限公司| 萨驰华辰机械苏州有限公司| 广州三菱电机压缩机有限公司 | 月盛斋清真食品有限公司| 葛兰素史克制药有限公司| 海伯机械制造有限公司| 鼎峰机器人有限公司| 昌源建筑工程有限公司| 先锋商泰电子技术有限公司| 苏州和阳金属有限公司| 中益油墨涂料有限公司| 四川成蜀电力有限公司| 宁波盛事达有限公司| 尼岛(上海)有限公司| 江南制药机械有限公司| 片仔癀医药有限公司| 郑州购物广场有限公司| 上海艺星医院有限公司| 深圳经典装饰工程有限公司| 深圳力贝电子有限公司| 山西体育设施有限公司| 盛和建设工程有限公司| 昆山鑫源环保热电有限公司| 华冠包装材料有限公司| 金德精密配件 苏州 有限公司| 聚升有限公司怎么样| 北京康而福药业有限公司| 丰田纺织汽车部件有限公司| 远纺织染染苏州有限公司| 武汉轨道交通有限公司| 兴通装饰有限公司招聘| 美商宏鹰国际货运有限公司| 薇美姿个人护理用品有限公司| 西安古光通信有限公司| 甘肃中粮可口可乐有限公司 | 云南滇云茶业有限公司| 东莞金豪机械有限公司| 青岛通用航空有限公司| 丰亿广州电子有限公司| 神舟制冷设备有限公司| 深圳宏鼎电子有限公司| 品冠精密模具有限公司| 东莞邦阳电机有限公司| 四川 楼 有限公司| 青岛工控设备有限公司| 中海集装箱有限公司招聘| 青州石油机械有限公司| 荣丰机械制造有限公司| 上海从友建材有限公司| 上海管道配件有限公司| 浙江科友信息有限公司| 众艺装饰工程有限公司| 天诚电子深圳有限公司| 东莞奥科电子有限公司| 康泰斯工程有限公司| 有限公司 皮革助剂| 福州弘创机电设备有限公司| 广州市塑料工业有限公司| 新盛机械设备有限公司| 君达医疗器械有限公司| 东北的工业发展有限公司| 江宜机械制造有限公司| 华能电气设备有限公司| 礼来制药苏州有限公司| 深圳科虹通信有限公司| 兰宝传感器有限公司| 晶创光电(深圳)有限公司| 深圳旭振电气有限公司| 杭州华东化工有限公司| 阿斯利康贸易有限公司| 代斯米泵业技术有限公司| 延边金刚山食品有限公司| 格莱特休闲用品有限公司| 深圳拓飞电子有限公司| 华信技术有限公司待遇| 陕西星 电梯有限公司| 深圳市和鑫电子有限公司| 深圳市飞科电子有限公司| 安迈铝业青岛有限公司| 成都当纳利印刷有限公司| 兰精纤维(南京)有限公司| 中山快特电器有限公司| 苏州体育设施有限公司| 锦绣明天建材有限公司| 百德机械设备有限公司| 佛山市 恒 有限公司招聘| 山东金亿机械有限公司|