主頁 > 移動端開發 > 系統啟動和內核管理-----centos的啟動流程

系統啟動和內核管理-----centos的啟動流程

2020-11-16 16:29:00 移動端開發

文章目錄

    • 一. CentOS 5 和 6 的啟動流程
    • 1 啟動流程
    • 2. 內核組成部分:
    • 3.重點centos6為例
  • 系二. 統啟動流程
    • 1.**init程式的型別:**
    • **2.為什么第一個行程是init**
    • 3.運行級別:
    • 4.init初始化
    • **5.CentOS 5 的inittab檔案**
    • 6.在單用戶模式下init 1
    • **7.CentOS 6 /etc/inittab和相關檔案**
    • 8 /etc/rc.d/rc.sysinit: 系統初始化腳本
    • **9.ntsysv命令**
    • **10.chkconfig命令**(**centos6**)
    • 寫一個服務腳本(測驗服務腳本)
    • 11.xinetd管理的服務
    • 12啟動流程
    • 總結:

一. CentOS 5 和 6 的啟動流程

查看詳細的流程http://s4.51cto.com/wyfs02/M02/87/20/wKiom1fVBELjXsvaAAUkuL83t2Q304.jpg
Linux組成
Linux: kernel+rootfslinux就相當于一個內核
kernel: 行程管理、記憶體管理、網路管理、驅動程式、檔案系統、安全功能
rootfs:程式和glibc庫
庫:函式集合, function, 呼叫介面(頭檔案負責描述)
程式:二進制執行檔案
內核設計流派:
單內核(monolithic kernel):Linux
把所有功能集成于同一個程式,分層實作不同功能,系統龐大復雜
微內核(micro kernel):Windows, Solaris
每種功能使一個單獨子系統實作,將內核功能移到用戶空間,性能差

linux最核心的檔案
在這里插入圖片描述

CentOS6啟動流程
在這里插入圖片描述
1.加載BIOS的硬體資訊,獲取第一個啟動設備
2.讀取第一個啟動設備MBR的引導加載程式(grub)的啟動資訊
3.加載核心作業系統的核心資訊,核心開始解壓縮,并嘗試驅動所有的硬體設備
4.核心執行init程式,并獲取默認的運行資訊
5.init程式執行/etc/rc.d/rc.sysinit檔案
6.啟動核心的外掛模塊
7.init執行運行的各個批處理檔案(scripts)
8.init執行/etc/rc.d/rc.local
9.執行/bin/login程式,等待用戶登錄
10.登錄之后開始以Shell控制主機

1 啟動流程

POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分,負責完成對
CPU、主板、記憶體、硬碟子系統、顯示子系統、串并行接鍵盤等硬體情況的檢測
ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程式,系統資訊設定、開機加電自檢程式和系統啟動自舉程式等
RAM:CMOS互補金屬訊訓物半導體,保存各項引數的設定
按次序查找引導設備,第一個有引導程式的設備為本次啟動設備
bootloader: 引導加載器,引導程式
windows: ntloader,僅是啟動OS
Linux:功能豐富,提供選單,允許用戶選擇要啟動系統或不同的內核版本;把用
戶選定的內核裝載到記憶體中的特定空間中,解壓、展開,并把系統控制權移交給內核
LILO:LInux LOader
GRUB: GRand Unified Bootloader
GRUB 0.X: GRUB Legacy,
在centos7中為grub2
查看gurb
centos7中用rpm -ql grub2

MBR:第一個扇區
前446位元組 bootloader
中間64位元組 磁區表
最后2位元組 55AA
GRUB
primary boot loader : 1st stage,1.5 stage
secondary boot loader :2nd stage,磁區檔案/boot/grub

kernel
自身初始化:
探測可識別到的所有硬體設備
加載硬體驅動程式(借助于ramdisk加載驅動)
以只讀方式掛載根檔案系統
運行用戶空間的第一個應用程式:/sbin/init

Linux內核特點:
支持模塊化.ko(內核物件)
如:檔案系統,硬體驅動,網路協議等
支持內核模塊的動態裝載和卸載

2. 內核組成部分:

核心檔案/boot/vmlinuz-VERSION-release
ramdisk:輔助的偽根系統
CentOS 5 /boot/initrd-VERSION-release.img
CentOS 6,7/boot/initramfs-VERSION-release.img

模塊檔案/lib/modules/VERSION-release/kernel/fs/檔案系統型別/

光碟下也有這么一個檔案和/boot/vmlinuz-很像
/misc/cd/isolinux/vmlinuz
內容一樣
在這里插入圖片描述
如果將/boot/vmlinuz-檔案刪掉
解決方案

查找檔案系統驅動
在這里插入圖片描述

3.重點centos6為例

/boot/vmlinuz-VERSION-release這個檔案不帶檔案系統驅動
利用內核,重新掛載作業系統的根,就得識別根的檔案系統的驅動(centos6:ext4,,,,centos7:xfs)

根(ext4)的驅動
在這里插入圖片描述

內核檔案要掛載/ ,而的驅動在/lib/modules/中,
為了掛載 / 找驅動,而驅動在 /lib里面(死回圈)

在這里插入圖片描述
所以需要有一個地方來掛載 根 的檔案系統驅動
可以找這個檔案
初始化的initramfs檔案
fs檔案系統(centos6,7)
dis硬碟(centos5)
在這里插入圖片描述

這個檔案時一個壓縮檔案gzip
在這里插入圖片描述
但不是以gz結尾
加后綴.gz之后才能解壓縮
在這里插入圖片描述
解壓縮完就可以查看到cpio

在這里插入圖片描述
打開cpio格式的檔案 -it預覽
在這里插入圖片描述
這里相當于一個小的作業系統
查看檔案系統驅動
在這里插入圖片描述

如果這個/boot/initramfs-VERSION-release.img檔案被破壞驅動找不到了,根掛在不上,作業系統就起不來了

/boot/initramfs檔案被破壞 解決方案

lsmod查看所有內核驅動
例如只有啟動ext3,并且掛載,才能看到ext3的驅動模塊

這兩個檔案是完全一樣的
在這里插入圖片描述

啟動流程
ramdisk: 虛擬記憶體盤
內核中的特性之一:使用緩沖和快取來加速對磁盤上的檔案訪問,并加載相應的硬體驅動
ramdisk --> ramfs 提高速度

CentOS 5 里面是initrd.img檔案
mkinitrd用來生成initrd檔案

CentOS 6,7 里面是initramfs.img
mkinitrd, dracut用來生成initrd檔案

在這里插入圖片描述
ramdisk檔案的制作:
(1) mkinitrd命令
為當前正在使用的內核重新制作ramdisk檔案

 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

(2) dracut命令
為當前正在使用的內核重新制作ramdisk檔案

 dracut /boot/initramfs-$(uname -r).img $(uname -r)

系二. 統啟動流程

系統初始化:
POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只讀) --> init(systemd)

1.init程式的型別:

SysVinit, CentOS 5之前
組態檔:/etc/inittab

Upstart: init,CentOS 6
組態檔:/etc/inittab, /etc/init/*.conf

Systemd:systemd, CentOS 7
組態檔:/usr/lib/systemd/system/etc/systemd/system

2.為什么第一個行程是init

看原始碼包----linux-5.1.4.tar.xz
在這里插入圖片描述
在這里插入圖片描述
查看啟動流程
在這里插入圖片描述

3.運行級別:

/sbin/init CentOS6之前
為系統運行或維護等目的而設定;0-6:7個級別
0:關機
1:單用戶模式(root自動登錄), single, 維護模式(沒有網路
2: 多用戶模式,啟動網路功能,但不會啟動NFS;維護模式
3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別
5:多用戶模式,正常模式;圖形界面
6:重啟
默認級別:3, 5
切換級別:init # ?查看級別:runlevel ; who -r

4.init初始化

init讀取其初始化檔案:/etc/inittab
初始運行級別(RUN LEVEL)
系統初始化腳本
對應運行級別的腳本目錄
捕獲某個關鍵字順序
定義UPS電源終端/恢復腳本
在虛擬控制臺生成getty
在運行級別5初始化X

5.CentOS 5 的inittab檔案

組態檔:/etc/inittab
每一行格式:

id:是惟一標識該項的字符序列
runlevels: 定義了操作所使用的運行級別
action: 指定了要執行的特定操作
 		wait: 切換至此級別運行一次
		respawn:此process終止,就重新啟動之(殺不死的行程)
 		initdefault:設定默認運行級別;process省略
 		sysinit:設定系統初始化方式
process:定義了要執行的行程

例如
在這里插入圖片描述
如果將這個5(圖形化界面)改成3那么就會進入(文本界面)
在這里插入圖片描述
將/etc/inittab中的runlevels改成0----開機就關機
解決方案

6.在單用戶模式下init 1

在這里插入圖片描述
可以輕松破解root口令(centos6) 例如

7.CentOS 6 /etc/inittab和相關檔案

/etc/inittab
設定系統默認的運行級別

/etc/init/control-alt-delete.conf
/etc/init/tty.conf
/etc/init/start-ttys.conf
/etc/init/rc.conf
/etc/init/prefdm.conf

8 /etc/rc.d/rc.sysinit: 系統初始化腳本

(1) 設定主機名
(2) 設定歡迎資訊
(3) 激活udev和selinux
(4) 掛載/etc/fstab檔案中定義的檔案系統
(5) 檢測根檔案系統,并以讀寫方式重新掛載根檔案系統
(6) 設定系統時鐘
(7) 激活swap設備
(8) 根據/etc/sysctl.conf檔案設定內核引數
(9) 激活lvm及software raid設備
(10) 加載額外設備的驅動程式
(11) 清理操作

在這里插入圖片描述
這個/etc/rc.d/rc.sysinit腳本運行完之后會運行指定模式在這里插入圖片描述
/etc/rc.d/rc也是一個腳本

說明:rc N --> 意味著讀取/etc/rc.d/rcN.d/
K* 開頭關閉服務 K##*:## 運行次序;數字越小,越先運行;數字越小的服務,通常為 依賴到別的服務
S* 開頭啟動服務 S##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務
在這里插入圖片描述

for srv in /etc/rc.d/rcN.d/K*; do
$srv stop
done
for srv in /etc/rc.d/rcN.d/S*; do
$srv start
done

例如
4模式的atd(計劃任務)開啟狀態
在這里插入圖片描述
將3,5的atd變成啟動狀態
在這里插入圖片描述

第一個數字345啟動哪些模式 , - 所有模式都不啟動
第二個數字 開機啟動的編號 S
第三個數字 關機的編號 K
注意這些服務檔案都放在/etc/init.d/下面
也就是說自己自作的服務也可以放在這個下面

在這里插入圖片描述

9.ntsysv命令

調整當前服務init 5模式開機是否啟動關閉

*開機啟動(空格可以調整)
在這里插入圖片描述

可以加選項 --level=模式在這里插入圖片描述

Service 是臨時設定服務的狀態
Chkconfig設定的是開機服務的狀態

10.chkconfig命令centos6

同時修改多個服務狀態

1.添加:服務腳本放置于/etc/rc.d/init.d (/etc/init.d)

chkconfig --add 服務名

2.洗掉:
chkconfig --del name
3.修改

chkconfig [--level levels] name <on|off|reset>

--level LLLL: 指定要設定的級別;省略時表示2345
#LLLL 表示初始在哪個級別下啟動,-表示都不啟動

4.查看服務在所有級別的啟動或關閉狀態chkconfig --list 服務名
在這里插入圖片描述

只要將服務腳本放到/etc/init.d下面加上執行權限,就可以用service操作該服務

寫一個服務腳本(測驗服務腳本)

首先腳本得放在/etc/init.d/下面

vim  testsrv
#! /bin/bash
#    -表示所有模式下都不啟動
# chkconfig: -  98  3
# discription:test service

#呼叫函式庫action函式
. /etc/init.d/functions
#定義函式
start(){
	touch /var/lock/subsys/`basename $0`
	action "starting testsrv "
}
stop(){
	rm -f /var/lock/subsys/`basename $0`
	action "stopping testsrv"
}
#status是判斷/var/lock/subsys/name是不是存在
status(){
	[ -f /var/lock/subsys/testsrv ] && echo `basename $0` is running || echo testsrv is stopped
}
#判斷
case $1 in
start)
	start   
	;;
stop)
	stop
	;;
restart)
	stop
	start
	;;
status)
	status
	;;
*)
	echo "Usage : /etc/init.d/`basename $0` {start|stop|status|restart}"
esac

然后加執行權限,
直接用
在這里插入圖片描述
加入到服務串列中用

chkconfig --add 服務名

在這里插入圖片描述
就可以在/etc/rc.d/rc*.d/*服務名查找到
注意:這里的…/rc*.d檔案下面的內容是基于/etc/rc.d/init.d的鏈接
在這里插入圖片描述
chkconfig --list 服務名就可以列出該服務所有級別的啟動狀態
在這里插入圖片描述

如果某個服務出故障卡住了解決方案

11.xinetd管理的服務

xinetd服務(超級守護代理服務)----可以幫其他服務盯班(非獨立服務在/etc/xinetd.d下面)

xinetd服務得安裝包
并且得啟用service

守護行程通常以d結尾:sshd,crond,httpd,mysqld等

當沒有用戶訪問該服務就由xinetd**代理他盯班**

當由用戶訪問該服務--xinetd就會**喚醒該服務**

service 命令:手動管理服務
service 服務 start|stop|restart
service --status-all 列出所有服務狀態
瞬態(Transient)服務被xinetd行程所管理獨立服務(當某個服務用戶訪問的并不頻繁–就可以將其設定為獨立服務)-----進入的請求首先被xinetd(超級代理)代理

組態檔:/etc/xinetd.conf、/etc/xinetd.d/
與libwrap.so檔案鏈接
用chkconfig控制的服務:

示例:chkconfig service on

如:telnet-server服務得安裝包

會出現----依賴于 超級代理服務
啟用
在這里插入圖片描述
這些off表示當前xinetd服務不能管理他們,除非啟動
在這里插入圖片描述

啟用這些服務-----得改一個檔案/etc/xinetd.d/這些檔案(都是非獨立服務)

在這里插入圖片描述
打開檔案將disable(禁用)----yes改為no
在這里插入圖片描述
在這里插入圖片描述
也可以直接用chkconfig telenet on啟用該服務

telnet服務埠23

然后啟動超級守護行程

service xinetd start

查看埠23開啟
在這里插入圖片描述
查看23埠發現是xinetd超級守護行程(在監聽)
在這里插入圖片描述
例如
1.利用遠程主機訪問telnet

在這里插入圖片描述
2.然后就會出現telnet而不是超級守護行程(這個時候xinetd就會喚醒telent服務)
在這里插入圖片描述
3.如果用戶退出,telnet就會退出

在centos7中用systemd來實作(代替)xinetd

12啟動流程

注意:正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d一個
服務腳本,而是指向了/etc/rc.d/rc.local腳本
不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local檔案中
/etc/rc.d/rc.local在指定運行級別腳本后運行
可以根據情況,進行自定義修改

只在2,3,4,5中有…/rc.local
或者S99local
在這里插入圖片描述
這個檔案----在最后init初始化后面運行(最后運行)
在這里插入圖片描述
/etc/rc.d/rc.local檔案
centos6可以直接用
centos7不能直接用(沒有執行權限)

ctrl+alt+delete
相當于這個(必須在字符界面才能用)
/etc/inittab(centos5)
如果將這一行注釋掉,快捷鍵就沒有用(建議
在這里插入圖片描述
/etc/inittab(centos6)
在這里插入圖片描述
在這里插入圖片描述
UPS不間斷電源(防止例外關機)
如果斷電,就執行第一行,2分鐘后關機
如果電來了,就取消關機
在這里插入圖片描述
respawn殺不死的行程(再生)
在這里插入圖片描述
為什么5模式是圖形界面
因為這一行----加載了圖形軟體行程(可以修改成3…)
在這里插入圖片描述

總結:

/sbin/init --> (/etc/inittab) --> 設定默認運行級別 --> 運行系統初始腳本、完成系統初始化 --> (關閉對應下需要關閉的服務)啟動需要啟動服務 --> 設定登錄終端
CentOS 6 init程式為: upstart, 其組態檔:
/etc/inittab, /etc/init/*.conf,組態檔的語法 遵循 upstart組態檔語法格式,和CentOS5不同

與內核啟動有關的檔案:
/boot/vmlinuz-
/boot/initramfs-.img

CentOS 6啟動流程:

POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) -->rootfs --> switchroot --> /sbin/init -->(/etc/inittab,/etc/init/*.conf) --> 設定默認運行級別 --> 系統初始化腳本/etc/rc.d/rc.sysinit --> 關倍訓啟動對應級別的服務
–> 啟動終端

查看詳細的流程http://s4.51cto.com/wyfs02/M02/87/20/wKiom1fVBELjXsvaAAUkuL83t2Q304.jpg

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

標籤:其他

上一篇:詳解Squid代理服務器(如何搭建傳統代理、透明代理、ACL控制、squid日志分析、squid代理)

下一篇:4 款超級好用的終端檔案管理器,提高你的使用效率!

標籤雲
其他(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)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more