主頁 > 軟體設計 > 【C語言初階】初識c語言

【C語言初階】初識c語言

2021-04-11 10:44:39 軟體設計

1.什么是c語言

C語言是一門面向程序的計算機編程語言,與C++、Java等面向物件編程語言有所不同,C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存盤器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言,C語言描述問題比匯編語言迅速、作業量小、可讀性好、易于除錯、修改和移植,而代碼質量與匯編語言相當,C語言一般只比匯編語言代碼生成的目標程式效率低10%-20%,因此,C語言可以撰寫系統軟體,

  • (1) 語言組成

資料型別

C的資料型別包括:整型(short、int、long、long long)、字符型(char)、實型或浮點型(單精度float和雙精度double)、列舉型別(enum)、陣列型別、結構體型別(struct)、共用體型別(union)、指標型別和空型別(void),

常量與變數

常量其值不可改變,符號常量名通常用大寫,

變數是以某識別符號為名字,其值可以改變的量,識別符號是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字符必須為字母或下劃線,否則為不合法的變數名,變數在編譯時為其分配相應存盤單元,

陣列

如果一個變數名后面跟著一個有數字的中括號,這個宣告就是陣列宣告,字串也是一種陣列,它們以ASCII的NULL作為陣列的結束,要特別注意的是,中括號內的索引值是從0算起的,

指標

如果一個變數宣告時在前面使用*號,表明這是個指標型變數,換句話說,該變數存盤一個地址,而*(此處特指單目運算子*,下同,C語言中另有雙目運算子*)則是取內容運算子,意思是取這個記憶體地址里存盤的內容,指標是C語言區別于其他同時代高級語言的主要特征之一,

指標不僅可以是變數的地址,還可以是陣列、陣列元素、函式的地址,通過指標作為形式引數可以在函式的呼叫程序得到一個以上的回傳值,不同于return(z)這樣的僅能得到一個回傳值,

指標是一把雙刃劍,許多操作可以通過指標自然的表達,但是不正確的或者過分的使用指標又會給程式帶來大量潛在的錯誤,

字串

C語言的字串其實就是以'\0'字符結尾的char型陣列,使用字符型并不需要參考庫,但是使用字串就需要C標準庫里面的一些用于對字串進行操作的函式,它們不同于字符陣列,使用這些函式需要參考頭檔案,

檔案輸入/輸出

在C語言中,輸入和輸出是經由標準庫中的一組函式來實作的,在ANSI C中,這些函式被定義在頭檔案中,

標準輸入/輸出

有三個標準輸入/輸出是標準I/O庫預先定義的:

stdin標準輸入

stdout標準輸出

stderr輸入輸出錯誤

運算

C語言的運算非常靈活,功能十分豐富,運算種類遠多于其它程式設計語言,在運算式方面較其它程式語言更為簡潔,如自加、自減、逗號運算和三目運算使運算式更為簡單,但初學者往往會覺的這種運算式難讀,關鍵原因就是對運算子和運算順序理解不透不全,當多種不同運算組成一個運算運算式,即一個運算式中出現多種運算子時,運算的優先順序和結合規則就會顯得十分重要,

  • (2)關鍵字

關鍵字又稱為保留字,就是已被C語言本身使用,不能作其它用途使用的字,例如關鍵字不能用作變數名、函式名等識別符號,

資料型別關鍵字

short:修飾int,短整型資料,可省略被修飾的int,

long:修飾int,長整型資料,可省略被修飾的int,

long long:修飾int,超長整型資料,可省略被修飾的int,

signed:修飾整型資料,有符號資料型別,

unsigned:修飾整型資料,無符號資料型別,

restrict用于限定和約束指標,并表明指標是訪問一個資料物件的初始且唯一的方式,

復雜型別關鍵字

struct:結構體宣告,

union:聯合體宣告,

enum:列舉宣告,

typedef:宣告型別別名,

sizeof:得到特定型別或特定型別變數的大小,

inline:行內函式用于取代宏定義,會在任何呼叫它的地方展開,

存盤級別關鍵字

auto:指定為自動變數,由編譯器自動分配及釋放,通常在堆疊上分配,與static相反,當變數未指定時默認為auto,

static:指定為靜態變數,分配在靜態變數區,修飾函式時,指定函式作用域為檔案內部,

register:指定為暫存器變數,建議編譯器將變數存盤到暫存器中使用,也可以修飾函式形參,建議編譯器通過暫存器而不是堆疊傳遞引數,

extern:指定對應變數為外部變數,即標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模塊中尋找其定義,

const:指定變數不可被當前執行緒改變(但有可能被系統或其他執行緒改變),

volatile:指定變數的值有可能會被系統或其他執行緒改變,強制編譯器每次從記憶體中取得該變數的值,阻止編譯器把該變數優化成暫存器變數,

流程控制關鍵字

跳轉結構

return:用在函式體中,回傳特定值(如果是void型別,則不回傳函式值),(K&R時期引入)

continue:結束當前回圈,開始下一輪回圈,

break:跳出當前回圈或switch結構,

goto:無條件跳轉陳述句,

分支結構

if:條件陳述句,后面不需要放分號,

else:條件陳述句否定分支(與if連用),

switch:開關陳述句(多重分支陳述句),

case:開關陳述句中的分支標記,與switch連用,

default:開關陳述句中的“其他”分支,可選,

  • (3)語法結構

順序結構

順序結構的程式設計是最簡單的,只要按照解決問題的順序寫出相應的陳述句就行,它的執行順序是自上而下,依次執行,

例如:a=3,b=5,現交換a、b的值,這個問題就好像交換兩個杯子里面的水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程式為:c=a;a=b;b=c,執行結果是a=5,b=c=3,如果改變其順序,寫成:a=b;c=a;b=c;則執行結果就變成a=b=c=5,不能達到預期的目的,初學者最容易犯這種錯誤,順序結構可以獨立使用構成一個簡單的完整程式,常見的輸入、計算、輸出三步曲的程式就是順序結構,例如計算圓的面積,其程式的陳述句順序就是輸入圓的半徑r,計算s=3.14159*r*r,輸出圓的面積s,不過大多數情況下順序結構都是作為程式的一部分,與其它結構一起構成一個復雜的程式,例如分支結構中的復合陳述句、回圈結構中的回圈體等,

選擇結構

順序結構的程式雖然能解決計算、輸出等問題,但不能做判斷再選擇,對于要先做判斷再選擇的問題就要使用選擇結構,選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照陳述句出現的物理順序,選擇結構的程式設計方法的關鍵在于構造合適的分支條件和分析程式流程,根據不同的程式流程選擇適當的選擇陳述句,選擇結構適合于帶有邏輯或關系比較等條件判斷的計算,設計這類程式時往往都要先繪制其程式流程圖,然后根據程式流程寫出源程式,這樣做把程式設計分析與語言分開,使得問題簡單化,易于理解,程式流程圖是根據解題分析所繪制的程式執行流程圖,

回圈結構

回圈結構可以減少源程式重復書寫的作業量,用來描述重復執行某段演算法的問題,這是程式設計中最能發揮計算機特長的程式結構,C語言中提供四種回圈,即goto回圈、while回圈、do while回圈和for回圈,四種回圈可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto回圈,因為強制改變程式的順序經常會給程式的運行帶來不可預料的錯誤,

特別要注意在回圈體內應包含趨于結束的陳述句(即回圈變數值的改變),否則就可能成了一個死回圈,這是初學者的一個常見錯誤,

三個回圈的異同點:用while和do while回圈時,回圈變數的初始化的操作應在回圈體之前,而for回圈一般在陳述句1中進行的;while回圈和for回圈都是先判斷運算式,后執行回圈體,而do while回圈是先執行回圈體后判斷運算式,也就是說do while的回圈體最少被執行一次,而while回圈和for就可能一次都不執行,另外還要注意的是這三種回圈都可以用break陳述句跳出回圈,用continue陳述句結束本次回圈,而goto陳述句與if構成的回圈,是不能用break和continue陳述句進行控制的,

順序結構、分支結構和回圈結構并不彼此孤立的,在回圈中可以有分支、順序結構,分支中也可以有回圈、順序結構,其實不管哪種結構,均可廣義的把它們看成一個陳述句,在實際編程程序中常將這三種結構相互結合以實作各種演算法,設計出相應程式,但是要編程的問題較大,撰寫出的程式就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程式設計成模塊化結構,

具體內容:

for回圈

for回圈結構是c語言中最具有特色的回圈陳述句,使用最為靈活方便,它的一般形式為:

for(運算式1;運算式2;運算式3)回圈體陳述句,(其中;不能省略)

運算式1為初值運算式,用于在回圈開始前為回圈變數賦初值,

運算式2是回圈控制邏輯運算式,它控制回圈執行的條件,決定回圈的次數,

運算式3為回圈控制變數修改運算式,它使for回圈趨向結束,

回圈體陳述句是在回圈控制條件成立的情況下被反復執行的陳述句,

但是在整個for回圈程序中,運算式1只計算一次,運算式2和運算式3則可能計算多次,也可能一次也不計算,回圈體可能多次執行,也可能一次都不執行,

先執行運算式2,然后執行回圈結構,最后運算式3,一直這樣回圈下去,

for回圈陳述句是c語言種功能最為強大的陳述句,甚至在一定程度上可以代替其他的回圈陳述句,

do

do回圈結構,do 1 while(2);的執行順序是1->2->1...回圈,2為回圈條件,

while

while回圈結構,while(1) 2;的執行順序是1->2->1...回圈,1為回圈條件

以上回圈陳述句,當回圈條件運算式為真則繼續回圈,為假則跳出回圈,

  • (4)函式

C程式是由一組變數或是函式的外部物件組成的,函式是一個自我包含的完成一定相關功能的執行代碼段,我們可以把函式看成一個“黑盒子”,你只要將資料送進去就能得到結果,而函式內部究竟是如何作業的,外部程式是不知道的,外部程式所知道的僅限于輸入給函式什么以及函式輸出什么,函式提供了編制程式的手段,使之容易讀、寫、理解、排除錯誤、修改和維護,

C程式中函式的數目實際上是不限的,如果說有什么限制的話,那就是,一個C程式中必須至少有一個函式,而且其中必須有一個并且僅有一個以main為名的函式,這個函式稱為主函式,整個程式從這個主函式開始執行,

C語言程式鼓勵和提倡人們把一個大問題劃分成一個個子問題,對應于解決一個子問題編制一個函式,因此,C語言程式一般是由大量的小函式而不是由少量大函式構成的,即所謂“小函式構成大程式”,這樣的好處是讓各部分相互充分獨立,并且任務單一,因而這些充分獨立的小模塊也可以作為一種固定規格的小“構件”,用來構成新的大程式,

C語言發展的那么多年來,用C語言開發的系統和程式浩如煙海,在發展的同時也積累了很多能直接使用的庫函式,

ANSIIC提供了標準c語言庫函式,

  • (5)運算子號

比較特別的是,位右移(>>)運算子可以是算術(左端補最高有效位)或是邏輯(左端補0)位移,例如,將11100011右移3位元位,算術右移后成為11111100,邏輯右移則為00011100,因算術位元位右移較適于處理帶負號整數,所以幾乎所有的編譯器都是算術位元右移,

運算子的優先級從高到低大致是:單目運算子算術運算子關系運算子邏輯運算子條件運算子賦值運算子(=)和逗號運算子

2.第一個c語言程式

#include <stdio.h>
int main()
{
    printf("hello world\n");
    printf("he he\n");
    return 0;
}
//解釋:
//main函式是程式的入口
//一個工程中main函式有且僅有一個

3.基本資料型別

char        //字符資料型別
short       //短整型
int         //整形
long        //長整型
long long   //更長的整形
float       //單精度浮點數
double      //雙精度浮點數

那么每種型別的大小就是:

4.變數和常量

生活中的有些值是不變的(比如:圓周率,性別(?),身份證號碼,血型等等) ,有些值是可變的(比如:年齡,體重,薪資),

不變的值c語言用常量表示,會變的量用變數表示;

  • (1)變數

定義變數的方法

char ch='a';
int age=20;
float high=180.5;

變數的分類

  • 區域變數
  • 全域變數
#include <stdio.h>
int global = 2019;//全域變數
int main()
{
    int local = 2018;//區域變數
    int global = 2020;//區域變數
    printf("global = %d\n", global);
    return 0;
}

值得注意的是,當區域變數和全域變數同名時,區域變數優先使用,

變數的使用


#include <stdio.h>
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    printf("輸入兩個運算元:>");
    scanf("%d %d", &a, &b);
    sum = num1 + num2;
    printf("sum = %d\n", sum);
    return 0;
}

變數的作用域和生命周期

作用域,程式設計概念,通常來說,一段程式代碼中所用到的名字并不總是有效/可用 的 而限定這個名字的可用性的代碼范圍就是這個名字的作用域,

1. 區域變數的作用域是變數所在的區域范圍,

2. 全域變數的作用域是整個工程,

生命周期, 變數的生命周期指的是變數的創建到變數的銷毀之間的一個時間段,

1. 區域變數的生命周期是:進入作用域生命周期開始,出作用域生命周期結束,

2. 全域變數的生命周期是:整個程式的生命周期,

(2)常量

C語言中的常量分為以下以下幾種:

  • 字面常量
  • const 修飾的常變數
  • #define 定義的識別符號常量
  • 列舉常量
#include <stdio.h>
enum Sex
{
 MALE,
 FEMALE,
 SECRET
};
//括號中的MALE,FEMALE,SECRET是列舉常量
int main()
{
    3.14;//字面常量
    1000;//字面常量
    const float pai = 3.14;   //const 修飾的常量
    pai = 5.14;
 #define MAX 100            //#define的識別符號常量    
    return 0;
}

5.字串+轉義字符+注釋

  • 字串

"hello world!\n"

注意:字串的結束標志是一個'\0' 的轉義字符,在計算字串長度的時候 \0 是結束標志,不算作字串 內容,

接下來展示'\0'的重要性:

這里的arr1為字串陣列,“bit”中本身含有‘\0’,所以能列印bit,

arr2為字符陣列,沒有‘\0’,所以列印不會結束,bit之后是文字,

而arr3則有‘\0’,所以能列印bit,

  • 轉義字符

假如我們要在螢屏上列印一個目錄: c:\program\test.c ,我們該如何寫代碼?

#include <stdio.h>
int main()
{
 printf("c:\program\test.c\n");
    return 0;
}

這是我們認為的;但列印出來是:

這里就得介紹一下轉義字符:

注意:

1. 區分,斜杠:"/" 與 反斜杠:"\" ,此處不可互換

2. \xhh 十六進制轉義不限制字符個數 '\x000000000000F' == '\xF' ;

所以正確寫法應該是:

在螢屏上列印一個單引號和雙引號:

printf("%c",'\'');//列印字符的單引號
printf("%s","\"");//列印字串的雙引號

下面來看一個轉義字符的應用:

注意:這里的“:”號算一個字符,“\t”算一個字符,“\32”是8進制所代表的字符,而8進制只有0到7,沒有8,所以“\328”算為兩個字符,結果為14.

  • 注釋

1. 代碼中有不需要的代碼可以直接洗掉,也可以注釋掉

2. 代碼中有些代碼比較難懂,可以加一下注釋文字

c語言注釋風格:

/* xxxxxx*/

缺點:不能嵌套注釋,

c++語言注釋風格:

// xxxxxx//

可以注釋一行也可以注釋多行,

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

標籤:其他

上一篇:【排序演算法】之lowb三人組(冒泡、插入、選擇)

下一篇:力扣(LeetCode) -- 演算法第八十八題--合并兩個有序陣列

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

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more