二、CSS筆記

(一)css概述


1、定義

CSS是Cascading Style Sheets的簡稱,中文稱為層疊樣式表,用來控制網頁數據的表現,可以使網頁的表現與數據內容分離。 

2、要點 

  1. 怎么找到標簽
  2. 怎么操作標簽對象(element) 

3、css的四種引入方式 

3.1 行內式 

在標簽的style屬性中設定CSS樣式。這種方式不需要再找標簽對象,但沒有體現出CSS樣式分離的優勢,不推薦使用。

<p style="background-color: rebeccapurple">hello yuan</p>

3.2 嵌入式:

將CSS樣式集中寫在網頁的<head></head>標簽對的<style></style>標簽對中。格式如下:

<head><style>p{background-color: #2b99ff;}</style>
</head>

3.3 鏈接式 

通過html語言規范將一個.css文件引入到HTML文件中:

<head><link href="mystyle.css" rel="stylesheet" type="text/css"/>
</head>

 3.4 導入式

將一個獨立的.css文件引入HTML文件中,導入式使用CSS規則引入外部CSS文件,<style>標記也是寫在<head>標記中,使用的語法如下:

<style type="text/css">@import"mystyle.css";   // 此處要注意.css文件的路徑
</style> 

3.5 推薦方式 

  • 導入式固有的一個缺陷:會在整個網頁裝載完后再裝載CSS文件,因此這就導致了一個問題,如果網頁比較大則會兒出現先顯示無樣式的頁面,閃爍一下之后,再出現網頁的樣式。
  • 鏈接式會在網頁文件主體裝載前裝載CSS文件,因此顯示出來的網頁從一開始就是帶樣式的效果的,它不會象導入式那樣先顯示無樣式的網頁,然后再顯示有樣式的網頁,這是鏈接式的優點。 
  • 推薦鏈接式。

(二)css選擇器


css的選擇器(Selector),指明了{}中的“樣式”的作用對象,也就是“樣式”作用于網頁中的哪些元素,是寫css代碼的第一個要點,找標簽

1、基礎選擇器 

1.1 通用選擇器* 

一個星號*,匹配任何元素,如:

* { margin:0; padding:0; }  // 設置所有標簽外邊距和內邊距為0像素

1.2 標簽選擇器E 

直接匹配標簽本身,如:

p { color:green; }  // 設置所有<p>標簽的字體顏色是green

1.3 class選擇器.info或E.info

匹配所有class屬性中包含info的元素,可與標簽選擇器配合使用,如:

.info { background-color:#ff0; }  // 設置class屬性包含info的標簽背景顏色是#ff0
div.info { background-color:#ff0; }  // 設置class屬性包含info的<div>標簽背景顏色是#ff0

1.4 id選擇器#info 

匹配id屬性等于info的元素,因為標簽的id是唯一標識的,所以只會匹配符合的那一個標簽,如: 

#info { background-color:#ff0; }  // 設置id為info的標簽背景顏色是#ff0

2、組合選擇器 

2.1 多元素選擇器E,F 

 同時匹配所有E元素和F元素,E和F之間用逗號分隔,如:

div,p { color:#f00; }  // 設置所有<div>標簽和<p>標簽的字體顏色是#f00

2.2 后代元素選擇器E F 

匹配所有屬于E元素后代的F元素(嵌套在E標簽里的F標簽,不論多少層),E和F之間用空格分隔,如:

li a { font-weight:bold;}  // 設置所有<li>標簽的所有子孫<a>標簽的字體加粗

2.3 子元素選擇器E>F 

匹配所有E元素的子元素F(只能是緊挨著嵌套的一層),如: 

div > p { color:#f00; }  // 設置所有<div>標簽的所有子標簽<p>元素的字體顏色是#f00

2.4 毗鄰元素選擇器E+F 

匹配所有緊隨E元素之后的同級元素F,如:

div + p { color:#f00; }  // 設置所有緊隨在<div>標簽之后的<p>標簽的字體顏色是#f00

3、屬性選擇器(主要用1和2,其他了解即可) 

3.1 E[att] 

匹配所有具有att屬性的E元素,不考慮它的值。(注意:E在此處可以省略,比如“[cheacked]”。以下同。),如:

p[title] { color:#f00; }  // 設置所有具有title屬性(不論何值)的<p>標簽字體顏色為#f00
[title] { color:#f00; }  // 設置所有具有title屬性(不論何值)的標簽字體顏色為#f00

3.2 E[att=val] 

匹配所有att屬性等于“val”的E元素,如: 

p[title="game"] { color:#f00; }  // 設置所有title屬性="game"的<p>標簽字體顏色為#f00
[title="game"] { color:#f00; }  // 設置所有title屬性="game"的標簽字體顏色為#f00

3.3 E[att~=val] 

匹配所有att屬性具有多個空格分隔的值、其中一個值等于“val”的E元素,如: 

p[title~="game"] { color:#f00; }  // 設置所有title屬性有多個值,其中一個值="game"的<p>標簽字體顏色為#f00
[title~="game"] { color:#f00; }  // 設置所有title屬性有多個值,其中一個值="game"的標簽字體顏色為#f00

3.4 E[att^=val] 

匹配屬性值以指定值開頭的每個元素,如:

p[title^="ga"] { color:#f00; }  // 設置所有title屬性的值以"ga"開頭的<p>標簽字體顏色為#f00
[title^="ga"] { color:#f00; }  // 設置所有title屬性的值以"ga"開頭的標簽字體顏色為#f00

3.5 E[attr$=val] 

 匹配屬性值以指定值結尾的每個元素,如:

p[title$="ga"] { color:#f00; }  // 設置所有title屬性的值以"ga"結尾的<p>標簽字體顏色為#f00
[title$="ga"] { color:#f00; }  // 設置所有title屬性的值以"ga"結尾的標簽字體顏色為#f00

3.6 E[attr*=val] 

 匹配屬性值中包含指定值的每個元素,如:

p[title*="ga"] { color:#f00; }  // 設置所有title屬性的值包含"ga"的<p>標簽字體顏色為#f00
[title*="ga"] { color:#f00; }  // 設置所有title屬性的值包含"ga"的標簽字體顏色為#f00

4、偽類(Pseudo-classes) 

  • CSS偽類是用來選擇元素的特定狀態或位置的選擇器。
  • 以冒號(:)開頭,用于向特定元素在特定狀態下應用樣式。
  • 偽類的作用是根據元素的狀態或位置來改變其樣式,這些狀態可能包括用戶交互(如鼠標懸停、點擊)或元素自身的狀態(如已訪問鏈接、禁用表單元素)。
  • 偽類通常與元素選擇器結合使用,以選擇元素的特定狀態,如a:hover用于選擇鼠標懸停時的鏈接。
  • 格式: 標簽:偽類名稱{ css代碼; }

4.1 anchor(錨點)偽類

又稱為鏈接偽類,主要用于選擇和樣式化HTML中的<a>標簽,控制鏈接的顯示效果,這些偽類根據錨點的不同狀態來應用特定的樣式。以下是常見的錨點偽類:

  1. ?:link?:

    • 選擇所有尚未訪問過的鏈接(即默認狀態下的鏈接)。
    • 用于定義了鏈接的常規狀態
    • 示例:a:link { color: blue; } 會將所有未訪問的鏈接文本設置為藍色。
  2. ?:visited?:

    • 選擇所有已經訪問過的鏈接。
    • 用于閱讀文章,能清楚的判斷已經訪問過的鏈接。
    • 示例:a:visited { color: purple; } 會將所有已訪問的鏈接文本設置為紫色。
    • 出于隱私考慮,現代瀏覽器對:visited偽類能應用的樣式有所限制,通常只能改變顏色。
  3. ?:hover?:

    • 選擇鼠標懸停時的鏈接。
    • 用于產生視覺效果。
    • 示例:a:hover { text-decoration: underline; } 會在鼠標懸停時給鏈接添加下劃線。
  4. ?:active?:

    • 選擇被用戶激活(通常是點擊)時的鏈接。
    • 用于表現鼠標按下時的鏈接狀態。
    • 示例:a:active { color: red; } 會在鏈接被點擊時將其文本顏色改為紅色。
  5. ?:focus?:

    • 選擇獲得焦點的鏈接(通常通過鍵盤(Tab)導航或點擊獲得)。
    • 常用于添加表單元素的樣式
    • 示例:a:focus { outline: 2px dashed #000; } 會在鏈接獲得焦點時給其添加一個黑色的外框虛線輪廓,焦點消失后消失。

這些偽類可以按照特定的順序來編寫(也稱為“Love-Hate”順序)::link -> :visited -> :hover -> :active。這個順序是基于用戶與鏈接交互的自然流程,從未訪問到訪問,再到懸停和激活。按照這個順序編寫樣式規則可以確保它們按照預期的方式覆蓋和應用。

<head lang='zh-CN'>
<style type="text/css">a:link {color: blue;text-decoration: none;}a:visited {color: purple;}a:hover {text-decoration: underline;}a:active {color: red;}a:focus {outline: 2px dashed #000;}// 補充:可以懸浮一個區域更改另一個區域的樣式,如:.outer:hover .right{color: red}
</style>
</head>
<body><div class="outer"><a href="#">hello-world</a><a class="right" href="#">go-on</a></div>
</body>
</html>

 4.2 其它偽類

  • 動態偽類(如:hover:active:focus)不僅限于鏈接元素,還可以應用于任何HTML元素。在表單中,這些動態偽類可以用來增強用戶交互體驗,例如當用戶將鼠標懸停在按鈕上時改變按鈕的樣式,或者當輸入框獲得焦點時改變其邊框顏色。 
  • 結構偽類(如:first-child:last-child:nth-child、:nth-of-type(n)、:only-child?、:only-of-type?等)則用于選擇具有特定結構關系的元素,與anchor偽類不同,它們不依賴于元素的狀態,而是基于元素在文檔樹中的位置。
  • ?否定偽類:not(selector)?:選擇不匹配指定選擇器的元素。例如,:not(.class)選擇沒有.class類的元素。

  • UI元素狀態偽類:checked?:選擇被選中的表單元素(例如,復選框或單選按鈕)。

  • UI元素狀態偽類:disabled?:選擇被禁用的表單元素。

  • :empty?:選擇沒有任何子元素(包括文本節點)的元素。

  • :target?:選擇當前活動的錨點目標元素。常用于制作頁面內跳轉。

  • :valid? 和 ?:invalid?:分別用于選擇通過驗證和未通過驗證的表單元素(如<input>元素)。

5、偽元素Pseudo-elements

  • 概念與用途:
    • 用來在元素的內容前面或后面插入額外的內容的選擇器。
    • 它們以雙冒號(::)開頭(盡管在CSS2中偽元素也可以使用單冒號,但為了區分偽類和偽元素,CSS3規范推薦使用雙冒號),用于向元素的特定部分應用樣式。
    • 偽元素的作用是在元素的內容前面或后面插入文檔樹之外的內容,并對其進行樣式修飾,雖然用戶可以看到這些偽元素生成的內容,但它們實際上并不存在于DOM樹中。
    • 常見的偽元素包括::before::after::first-letter::first-line
  • 使用方式?:在元素選擇器后添加雙冒號和偽元素名稱,如p::before用于在段落內容前插入額外內容。

5.1 before after偽元素

  • :before:after是CSS中的偽元素(在CSS3中更推薦使用雙冒號形式::before::after來表示偽元素,以與偽類區分開)
  • 它們允許你在一個元素的內容之前或之后插入內容。這些插入的內容不會出現在DOM中,而是通過CSS生成的,通常用于添加裝飾性內容,如圖標、引號或其他視覺效果。 
(1)基本用法 
  • :before:在選定元素的內容之前插入內容。
  • :after:在選定元素的內容之后插入內容。
  • 這兩個偽元素必須與content屬性一起使用,以定義要插入的內容,否則它們不會生效。
  • content屬性可以包含字符串、圖像或其他可用CSS生成的內容。
  • 不改變DOM結構?:雖然:before:after可以在視覺上添加內容,但這些內容不會出現在DOM中,因此不會改變文檔的實際內容。
  • 可以像對待普通元素一樣對:before:after偽元素應用樣式和行為,包括設置寬度、高度、背景、邊框等。
  • 兼容性?:雖然:before:after在大多數現代瀏覽器中都得到了很好的支持,但使用雙冒號形式::before::after可以提高代碼的清晰度和兼容性,因為雙冒號形式是CSS3的推薦寫法。
(2)示例
p::before {content: "《";color: blue;
}p::after {content: "》";color: blue;
}
// 上面的CSS代碼會在每個<p>元素的內容之前插入一個藍色的“《”,在其內容之后插入一個藍色的“》”
 (3)應用場景
  • 添加裝飾性內容?:如圖標、引號、分隔符等。
  • ?清除浮動?:通過:after偽元素和clear屬性來清除浮動元素對父元素高度的影響。
  • ?創建自定義列表樣式?:在列表項前或后插入自定義樣式。
(4)注意事項 

雖然:before:after偽元素非常強大且靈活,但它們應該被用于添加裝飾性內容,而不是有實際意義的內容,因為用戶無法復制或與之交互這些通過CSS生成的內容。


(三)css優先級和繼承


1、優先級Specificity

  • CSS樣式在瀏覽器中被解析的先后順序,決定當多個樣式規則應用于同一個HTML元素時,哪個樣式規則最終會被應用的機制。
  • 優先級由選擇器的類型決定,并且可以通過特定的計算方法來量化。

1.1 計分規則

CSS優先級由四個部分組成,按照優先級從高到低排列如下:

  1. ?內聯樣式(Inline Styles)?:

    • 優先級最高,直接寫在HTML元素的style屬性中。
    • 計算分數:1000分。
  2. ?ID選擇器(ID Selectors)?:

    • 優先級次之,使用#符號標識。
    • 計算分數:100分。
  3. ?類選擇器、偽類選擇器、屬性選擇器(Class Selectors, Pseudo-Class Selectors, Attribute Selectors)?:

    • 優先級再次之,分別使用.:[]標識。
    • 計算分數:10分。
  4. ?元素選擇器、偽元素選擇器(Element Selectors, Pseudo-Element Selectors)?:

    • 優先級最低,使用HTML元素名稱標識。
    • 計算分數:1分。

1.2 優先級算法 

  • 每個CSS選擇器都有一個特定的優先級分數,這個分數由選擇器的類型決定,參看1.1計分規則;
  • 當存在多個選擇器組合時,分數累加;
  • 總分越高,優先級越高;
  • 特殊權重:!important,使一個樣式的優先級高于其他任何非內聯樣式的優先級,但低于內聯樣式的優先級。
  • 如果!important聲明沖突,則比較優先權。
  • 優先級相同,按照代碼順序,后定義的樣式覆蓋前面的。
  • 由繼承而得到的樣式沒有specificity的計算,它低于一切其它規則,比如全局選擇符*定義的規則。
  • 使用!important雖然可以強制某一條樣式規則生效,但應盡量避免濫用,因為它會破壞CSS的層疊特性,導致樣式難以維護。

1.3 應用技巧 

  • 合理組合選擇器?:當需要覆蓋某個樣式時,可以通過組合多個選擇器來提高優先級。
  • ?避免過度復雜的選擇器?:雖然可以通過組合選擇器來達到較高的優先級,但也會使得選擇器變得過于復雜,不利于維護。
  • ?使用源順序作為最后的手段?:當兩個選擇器具有相同的優先級時,源順序(即樣式表的出現順序)決定了哪一個規則將被應用,后面的會覆蓋前面的,因為CSS的層疊順序決定了樣式的應用方式? 。

1.4 示例 

<head lang="en"><style>#p{color: rebeccapurple;}.p{color: #2459a2;}p{color: yellow;}</style>
</head>
<body><p id="p" class="p" style="color: deeppink">hello yuan</p> <!--最終顯示顏色:deeppink-->
</body>

1.5 注意事項 

  • 在實際開發中,合理利用優先級規則可以幫助我們更好地組織和管理樣式表。
  • 使用瀏覽器的開發者工具來檢查元素的實際樣式,可以幫助診斷樣式未按預期顯示的原因。

2、css繼承 

  • 繼承是CSS的一個主要特征,它是依賴于祖先-后代的關系的。
  • 繼承是一種機制,它允許樣式不僅可以應用于某個特定的元素,還可以應用于它的后代。
  • 例如一個BODY定義了的顏色值也會應用到段落的文本中。
  • 簡單來說,父標簽的樣式會被內嵌的子孫標簽所繼承,除非子元素顯式地設置了不同的值。 
  • 即使父元素的權重很高,子元素通過繼承得到的權重也是0,任何顯示申明的規則都可以覆蓋其繼承樣式。這是因為繼承的權重在CSS的優先級計算中是不被考慮的?。
  • 實際開發中,可以利用CSS的繼承特性來簡化樣式表的編寫,避免在多個子元素上重復設置相同的樣式屬性。
  • 同時,也需要注意非繼承屬性的使用,確保在需要時顯式地為子元素設置這些屬性?。

2.1 常見繼承屬性

字體(font)系列屬性、文本(text)系列屬性、顏色(color)屬性、可見性(visibility)屬性、光標(cursor)屬性等。這些屬性在父元素上設置后,子元素通常會繼承相同的值? 

2.2 常見非繼承屬性 

一些屬性是不會被繼承的,常見的非繼承屬性包括布局相關屬性,如寬度(width)、高度(height)、邊框(border)、外邊距(margin)、內邊距(padding)、背景(background)和顯示類型(display)等。這些屬性在父元素上設置后,子元素不會繼承相同的值,除非子元素顯式地設置了這些屬性?


(四)CSS的單位


在CSS中,單位用于指定元素的大小、間距、字體大小等屬性。這些單位可以分為絕對單位、相對單位和自動(auto)三種類型。 

1、絕對單位 

絕對單位表示一個固定的值,在不同設備和環境下保持固定,不會因屏幕大小或分辨率以及瀏覽器設置而改變。常見的絕對單位包括:

  1. ?px(像素)?:

    • 最常用的絕對單位,基于屏幕的分辨率。一個像素通常對應于屏幕上的一個點。
    • 由于不同設備和屏幕的像素密度不同,相同的像素值在不同設備上可能會呈現不同的物理尺寸。
  2. ?in(英寸)?:

    • 基于實際物理長度,1英寸等于2.54厘米。
  3. ?cm(厘米)?:

    • 基于實際物理長度。
  4. ?mm(毫米)?:

    • 基于實際物理長度。
  5. ?pt(點)?:

    • 通常用于打印樣式,1點等于1/72英寸。

2、相對單位 

相對單位是基于其他元素的大小或視口(viewport)的大小來定義的,因此它們會根據父元素或視口的大小而改變,使得布局更加靈活和響應式,因為它們能夠根據屏幕尺寸或用戶設置自動調整元素的大小。常見的相對單位包括:

  1. ?%(百分比)?:

    • 相對于父元素的大小。例如,如果父元素的寬度是200px,而子元素的寬度設置為50%,那么子元素的寬度就是100px。
  2. ?em?:

    • 相對于當前元素的字體大小。例如,如果元素的字體大小為16px,那么1em就等于16px。
  3. ?rem?:

    • 相對于根元素(<html>)的字體大小(很多瀏覽器的默認值是16px)的倍數。
    • 使用場景:
      • 響應式設計:通過簡單地改變根元素的字體大小來調整整個頁面的布局,而不需要逐個修改每個元素的 padding、margin 或其他長度屬性,這使得布局更加靈活和響應式
      • ?一致性?:使用 rem 可以確保在整個頁面中,不同元素之間的間距保持一致性,特別是當你想要在不同的屏幕尺寸或設備上保持一致的視覺效果時。

      • 可訪問性?:當用戶通過瀏覽器設置改變字體大小時,使用 rem 單位的布局會自動調整以適應新的字體大小,滿足可訪問性需求。

      • /* 設置所有段落元素的內邊距為 1rem */
        p {padding: 1rem;
        }/* 設置特定類的內邊距 */
        .my-class {padding: 1rem;
        }
        /*在上述示例中,無論是段落元素還是具有特定類的元素,它們的內邊距都將被設置為 1rem。這意味著,如果根元素的字體大小是 16px,那么這些元素的內邊距將是 16px。如果根元素的字體大小改變,那么這些元素的內邊距也會相應地改變
        */
  4. ?vw和vh(視口寬度和高度)?:

    • 相對于視口(視口是用戶網頁的可視區域,它隨著窗口的縮放而改變)寬度(Viewport Width)和高度(Viewport Height)的1%。
    • 例如,1vw等于視口寬度的1%,1vh等于視口高度的1%,100vw等于當前視口的完整寬度,100vh 等于當前視口的完整高度。
    • 使用場景:
      • 全屏布局?:當你想要創建一個占據整個瀏覽器窗口高度的元素時,可以使用 height: 100vh;。這對于創建全屏背景、全屏圖像或全屏視頻等效果特別有用。

      • 響應式設計?:雖然 vh 單位本身不是響應式的(因為它基于視口大小,而不是基于元素或父容器的大小),但你可以結合媒體查詢來使用它,以在不同的屏幕尺寸下調整元素的高度。

      • 創建垂直滾動效果?:如果你有一個內容區,你希望它在垂直方向上滾動,并且這個區域的高度應該與視口高度相匹配,那么你可以使用 height: 100vh; 來設置這個區域的高度。

    • 注意事項:
      • 視口變化?:當瀏覽器窗口的大小改變時,使用 vh 單位設置的高度也會相應地改變。這意味著,如果你的布局依賴于特定的視口高度,你需要確保在視口大小變化時,布局仍然能夠保持可用和美觀。
      • 兼容性?:雖然現代瀏覽器都支持 vw和vh 單位,但在一些較舊的瀏覽器或某些特定的瀏覽器環境中(如某些移動設備的瀏覽器),可能不支持或支持不完全。因此,在使用 vw或vh 單位時,最好進行跨瀏覽器測試。
      • 內邊距、邊框和外邊距?:記得 height 屬性只設置內容區的高度。如果你想要包括內邊距、邊框或外邊距在內的總高度與視口高度相匹配,你可能需要使用 box-sizing 屬性來調整元素的盒模型。
    • 示例:
      示例
      /* 設置全屏背景 */
      .full-screen-background {height: 100vh;background-color: #333; /* 示例背景顏色 */
      }/* 創建垂直滾動的內容區 */
      .content-area {height: 100vh;overflow-y: auto; /* 允許垂直滾動 */
      }
  5. ?vmin? 和 ?vmax?:

    • 分別基于視口的最小和最大邊。1vmin等于視口最小邊的1%,1vmax等于視口最大邊的1%。

3、自動auto 

auto不是一個具體的單位,而是一個特殊的關鍵字,用于讓瀏覽器自動計算元素的大小或位置,例如:

  • 使用width: auto;可以讓瀏覽器根據內容的大小自動調整元素的寬度;
  • margin: auto;可以用于水平居中對齊塊級元素。

4、適用場景 

  • 在實際開發中,選擇合適的單位取決于具體的需求和上下文。
  • 絕對單位適用于需要精確控制元素大小的情況;
  • 相對單位則更適合創建響應式布局;
  • 自動(auto)則提供了一種讓瀏覽器自動處理布局細節的方法,從而簡化了開發過程。 

(五)CSS的常用屬性


1、顏色屬性color

值的表示方法:

  • 顏色的英文單詞,如:<div style="color:blueviolet">ppppp</div>
  • 顏色的十六進制代碼,如:<div style="color:#ffee33">ppppp</div>
  • 用紅、綠、藍三種顏色的十進制調合表示,rgb(0~255,0~255, 0~255),如:<div style="color:rgb(255,0,0)">ppppp</div>
  • 用紅、綠、藍三種顏色的十進制調合表示+透明度,rgba(0~255,0~255, 0~255,0~1),如:<div style="color:rgba(255,0,0,0.5)">ppppp</div>

各種表示方法的顏色表,可以參照:https://blog.csdn.net/2301_78888169/article/details/143754235 

 2、字體屬性font

  • 字體大小:font-size,可用像素px/百分比%/較大larger或較小smaller表示: 20px/50%/larger(smaller)
  • 字體類型:font-family:'Lucida Bright'
  • 字體粗細:font-weight,用數字100到100以及lighter/bold/border表示
  • 斜體:font-style: inherit/italic/normal/oblique 

3、背景屬性background 

  • 背景顏色:background-color: cornflowerblue(值參考8.1顏色屬性)
  • 背景圖片:background-image: url('圖片路徑');(圖片尺寸不會變化,如果小于背景區域,則空白部分會復制圖片平鋪滿)
  • 背景圖片是否平鋪:background-repeat: no-repeat;(repeat:平鋪滿,repeat-x橫向平鋪,repeat-y縱向平鋪,no-repeat不平鋪)
  • 背景位置:background-position: right top(或20px 20px);(橫向位置:left center right)(縱向位置:top center bottom)(與左部橫向距離:20px)(與頂部縱向距離?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894438.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第三篇:模型壓縮與量化技術——DeepSeek如何在邊緣側突破“小而強”的算力困局

——從算法到芯片的全棧式優化實踐 隨著AI應用向移動終端與物聯網設備滲透&#xff0c;模型輕量化成為行業核心挑戰。DeepSeek通過自研的“算法-編譯-硬件”協同優化體系&#xff0c;在保持模型性能的前提下&#xff0c;實現參數量與能耗的指數級壓縮。本文從技術原理、工程實…

C++編程語言:抽象機制:泛型編程(Bjarne Stroustrup)

泛型編程(Generic Programming) 目錄 24.1 引言(Introduction) 24.2 算法和(通用性的)提升(Algorithms and Lifting) 24.3 概念(此指模板參數的插件)(Concepts) 24.3.1 發現插件集(Discovering a Concept) 24.3.2 概念與約束(Concepts and Constraints) 24.4 具體化…

DeepSeek-R1本地部署實踐

一、下載安裝 --Ollama Ollama是一個開源的 LLM&#xff08;大型語言模型&#xff09;服務工具&#xff0c;用于簡化在本地運行大語言模型&#xff0c;降低使用大語言模型的門檻&#xff0c;使得大模型的開發者、研究人員和愛好者能夠在本地環境快速實驗、管理和部署最新大語言…

AI技術路線(marked)

人工智能&#xff08;AI&#xff09;是一個非常廣泛且充滿潛力的領域&#xff0c;它涉及了讓計算機能夠執行通常需要人類智能的任務&#xff0c;比如感知、推理、學習、決策等。人工智能的應用已經滲透到各行各業&#xff0c;從自動駕駛到醫療診斷&#xff0c;再到推薦系統和自…

【leetcode詳解】T598 區間加法

598. 區間加法 II - 力扣&#xff08;LeetCode&#xff09; 思路分析 核心在于將問題轉化&#xff0c; 題目不是要求最大整數本身&#xff0c;而是要求解最大整數的個數 結合矩陣元素的增加原理&#xff0c;我們將抽象問題轉為可操作的方法&#xff0c;其實就是再找每組ops中…

【最后203篇系列】004 -Smarklink

說明 這個用來替代nginx。 最初是希望用nginx進行故障檢測和負載均衡&#xff0c;花了很多時間&#xff0c;大致的結論是&#xff1a;nginx可以實現&#xff0c;但是是在商業版里。非得要找替代肯定可以搞出來&#xff0c;但是太麻煩了&#xff08;即使是nginx本身的配置也很煩…

完全卸載mysql server步驟

1. 在控制面板中卸載mysql 2. 打開注冊表&#xff0c;運行regedit, 刪除mysql信息 HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->EventLog->Application->Mysql HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->Mysql …

1. 【.NET Aspire 從入門到實戰】--理論入門與環境搭建--引言

在當前軟件開發領域&#xff0c;云原生和微服務架構已經成為主流趨勢&#xff0c;傳統的單體應用正逐步向分布式系統轉型。隨著業務需求的不斷變化與用戶規模的迅速擴大&#xff0c;如何在保證高可用、高擴展性的同時&#xff0c;還能提高開發效率與降低維護成本&#xff0c;成…

Ubuntu 22.04系統安裝部署Kubernetes v1.29.13集群

Ubuntu 22.04系統安裝部署Kubernetes v1.29.13集群 簡介Kubernetes 的工作流程概述Kubernetes v1.29.13 版本Ubuntu 22.04 系統安裝部署 Kubernetes v1.29.13 集群 1 環境準備1.1 集群IP規劃1.2 初始化步驟&#xff08;各個節點都需執行&#xff09;1.2.1 主機名與IP地址解析1.…

基于SpringBoot的新聞資訊系統的設計與實現(源碼+SQL腳本+LW+部署講解等)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

每日一題——包含min函數的棧

包含min函數的棧 題目數據范圍&#xff1a;示例C語言代碼實現解釋1. push(value)2. pop()3. top()4. min() 總結大小堆 題目 定義棧的數據結構&#xff0c;請在該類型中實現一個能夠得到棧中所含最小元素的 min 函數&#xff0c;輸入操作時保證 pop、top 和 min 函數操作時&am…

RDP協議詳解

以下內容包含對 RDP&#xff08;Remote Desktop Protocol&#xff0c;遠程桌面協議&#xff09;及其開源實現 FreeRDP 的較為系統、深入的講解&#xff0c;涵蓋協議概要、歷史沿革、核心原理、安全機制、安裝與使用方法、擴展與未來發展趨勢等方面&#xff0c; --- ## 一、引…

【Linux系統】計算機世界的基石:馮諾依曼架構與操作系統設計

文章目錄 一.馮諾依曼體系結構1.1 為什么體系結構中要存在內存&#xff1f;1.2 馮諾依曼瓶頸 二.操作系統2.1 設計目的2.2 系統調用與庫函數 一.馮諾依曼體系結構 馮諾依曼體系結構&#xff08;Von Neumann Architecture&#xff09;是計算機的基本設計理念之一&#xff0c;由…

消息隊列應用示例MessageQueues-STM32CubeMX-FreeRTOS《嵌入式系統設計》P343-P347

消息隊列 使用信號量、事件標志組和線標志進行任務同步時&#xff0c;只能提供同步的時刻信息&#xff0c;無法在任務之間進行數據傳輸。要實現任務間的數據傳輸&#xff0c;一般使用兩種方式&#xff1a; 1. 全局變量 在 RTOS 中使用全局變量時&#xff0c;必須保證每個任務…

【NLP251】Transformer精講 殘差鏈接與層歸一化

精講部分&#xff0c;主要是對Transformer的深度理解方便日后從底層邏輯進行創新&#xff0c;對于僅應用需求的小伙伴可以跳過這一部分&#xff0c;不影響正常學習。 1. 殘差模塊 何凱明在2015年提出的殘差網絡&#xff08;ResNet&#xff09;&#xff0c;Transformer在2016年…

Android學習制作app(ESP8266-01S連接-簡單制作)

一、理論 部分理論見arduino學習-CSDN博客和Android Studio安裝配置_android studio gradle 配置-CSDN博客 以下直接上代碼和效果視頻&#xff0c;esp01S的收發硬件代碼目前沒有分享&#xff0c;但是可以通過另一個手機網絡調試助手進行模擬。也可以直接根據我的代碼進行改動…

圖書管理系統 Axios 源碼__新增圖書

目錄 功能介紹 核心代碼解析 源碼&#xff1a;新增圖書功能 總結 本項目基于 HTML、Bootstrap、JavaScript 和 Axios 開發&#xff0c;實現了圖書的增刪改查功能。以下是新增圖書的功能實現&#xff0c;適合前端開發學習和項目實踐。 功能介紹 用戶可以通過 模態框&#xf…

DeepSeek Janus-Pro:多模態AI模型的突破與創新

近年來&#xff0c;人工智能領域取得了顯著的進展&#xff0c;尤其是在多模態模型&#xff08;Multimodal Models&#xff09;方面。多模態模型能夠同時處理和理解文本、圖像等多種類型的數據&#xff0c;極大地擴展了AI的應用場景。DeepSeek(DeepSeek-V3 深度剖析&#xff1a;…

AJAX XML

AJAX XML 引言 隨著互聯網技術的不斷發展,Web應用對用戶交互性和實時性的要求越來越高。AJAX(Asynchronous JavaScript and XML)技術的出現,為Web應用開發提供了強大的支持。AJAX技術允許Web應用在不重新加載整個頁面的情況下,與服務器進行異步通信。XML作為數據傳輸格式…

OpenGL學習筆記(五):Textures 紋理

文章目錄 紋理坐標紋理環繞方式紋理過濾——處理紋理分辨率低的情況多級漸遠紋理Mipmap——處理紋理分辨率高的情況加載與創建紋理 &#xff08; <stb_image.h> &#xff09;生成紋理應用紋理紋理單元練習1練習2練習3練習4 通過上一篇著色部分的學習&#xff0c;我們可以…