第六期的知識點

1.volatile詳解

在應用程序中,volatile主要是被設計用來修飾被不同線程訪問和修改的變量

.volatile的本意是“易變的” 因為訪問寄存器要比訪問內存單元快的多,所以編譯器一般都會作減少存取內存的優化,但有可能會讀臟數據。當要求使用volatile聲明變量值的時候,系統總是重新從它所在的內存讀取數據

? int b=a; //語句2

??int c=a;? //語句3?

語句2與語句3中都使用了a的值,優化器在語句3中引用a的值時,認為語句2中已經將a的值讀到寄存器中了,并且在語句2與語句3之間沒有對a進行修改,因此沒必要再到內存中去讀a的值,所以直接使用了寄存器中的值。但是如果在語句3執行前,產生了中斷,中斷恰好對a進行了修改。那么語句3取出來的值就有問題了 如果上面的全局變量a是被修飾為volatile的話,那么優化器就不能去優化語句3,要到內存中去重新取值

2.同步和異步的區別(轉)

同步是阻塞模式,異步是非阻塞模式

同步是指:發送方發出數據后,等接收方發回響應以后才發下一個數據包的通訊方式。 ?
異步是指:發送方發出數據后,不等接收方發回響應,接著發送下個數據包的通訊方式

打電話時同步 發消息是異步

3.java的內存模型

?

Java內存模型中規定了所有的變量都存儲在主內存中,每條線程還有自己的工作內存(可以與前面將的處理器的高速緩存類比),線程的工作內存中保存了該線程使用到的變量到主內存副本拷貝,線程對變量的所有操作(讀取、賦值)都必須在工作內存中進行,而不能直接讀寫主內存中的變量。不同線程之間無法直接訪問對方工作內存中的變量,線程間變量值的傳遞均需要在主內存來完成

?

項目中使用的設計模式

?

MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器

?

Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。
  通常模型對象負責在數據庫中存取數據。

?

View(視圖)是應用程序中處理數據顯示的部分。
  通常視圖是依據模型數據創建的。

?

Controller(控制器)是應用程序中處理用戶交互的部分。
  通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據

?

最典型的MVC就是JSP +?servlet?+?javabean的模式

?

單例模式在項目中的應用

?

比如說我們在系統運行時候,就需要加載一些配置和屬性,這些配置和屬性是一定存在了,又是公共的,同時需要在整個生命周期中都存在,所以只需要一份就行,這個時候如果需要我再需要的時候new一個,再給他分配值,顯然是浪費內存并且再賦值沒什么意義,所以這個時候我們就需要單例模式(這個時候我們可以用來創建配置文件的類,完全可以使用單例模式)

?

4.MySQL的性能優化

1.當只要一行數據時使用LIMIT 1

當你查詢表的有些時候,你已經知道結果只會有一條結果,單因為你可能需要去fetch游標,或是你也許會去檢查返回的記錄數。
在這種情況下,加上LIMIT 1 可以增加性能。這樣一樣, MySQL數據庫引擎會在找到一條數據后停止搜索,而不是繼續往后查找下一條符合記錄的數據

2.千萬不要ORDER BY RAND()

3.避免使用select*

從數據庫里讀出越多的數據,那么查詢就會變得越慢。并且,如果你的數據庫服務器和WEB服務器是兩臺獨立的服務器的話,這還會增加網絡傳輸的負載。

4.永遠為表設置ID

我們應該為數據庫里的每張表都設置一個ID作為其主鍵,而最好的是一個INT型(推薦使用UNSIGNED),并設置上自動增長的AUTO INCREMENT標志。

5.使用 ENUM 而不是 VARCHAR ?

ENUM 類型是非常快和緊湊的。在實際上,其保存的是 TINYINT,但其外表上顯示為字符串。這樣一來,用這個字段來做一些選項列表變得相當的完美。

如果你有一個字段,比如“性別”,“國家”,“民族”,“狀態”或“部門”,你知道這些字段的取值是有限而且固定的,那么,你應該使用 ENUM 而不是 VARCHAR。1

6.盡可能的使用 NOT NULL

除非你有一個很特別的原因去使用 NULL 值,你應該總是讓你的字段保持 NOT NULL。這看起來好像有點爭議,請往下看。

首先,問問你自己“Empty”和“NULL”有多大的區別(如果是INT,那就是0和NULL)?如果你覺得它們之間沒有什么區別,那么你就不要使用NULL。(你知道嗎?在 Oracle 里,NULL 和 Empty 的字符串是一樣的!)

7.選擇一個正確的存儲引擎

MyISAM 適合于一些需要大量查詢的應用,但其對于有大量寫操作并不是很好。甚至你只是需要update一個字段,整個表都會被鎖起來,而別的進程,就算是讀進程都無法操作直到讀操作完成。另外,MyISAM 對于 SELECT COUNT(*) 這類的計算是超快無比的。

InnoDB 的趨勢會是一個非常復雜的存儲引擎,對于一些小的應用,它會比 MyISAM 還慢。他是它支持“行鎖” ,于是在寫操作比較多的時候,會更優秀。并且,他還支持更多的高級應用,比如:事務

?

?

?

轉載于:https://www.cnblogs.com/wnbahmbb/p/6517595.html

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

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

相關文章

在DelayQueue中更改延遲,從而更改順序

因此,我正在研究構建一個簡單的對象緩存,該緩存在給定時間后會使對象過期。 顯而易見的機制是使用Java并發包中的DelayedQueue類。 但我想知道是否有可能在將對象添加到隊列后更新延遲。 看一下Delayed接口,似乎沒有充分的理由不在文檔中&…

vi編輯器服務器維護,vi編輯器有哪幾種工作模式及如何轉換_網站服務器運行維護,vi編輯器,工作模式...

整理分享一些 Linux思維導圖(值得收藏)_網站服務器運行維護本篇文章整理分享了一些 Linux思維導圖(值得收藏)。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。vi編輯器有三種基本的工作模式,分別是:指令行模式、…

(八)cmockery中的calculator和run_tests函數的注釋代碼

所分析的calculator.c和calculator_test.c文件位于 工程中的 cmockery/src/example/ 目錄下,是一個相對而言比較全面的樣例程序,用到了cmockery項目中的大多數單元測試方法。基本上涵蓋了之前所有的樣例程序中的用法,還有兩組測試是database操…

家用雙wan口路由器推薦_請推薦雙WAN口的有線千兆硬路由器?

利益相關:TP-LINK一線銷售人員(來看看會不會有推薦我司產品的2333 )路由器:TL-ER3220G,帶機量300終端,可管理50個AP,最大支持四條寬帶接入POE交換機:TL-SF1005P(5口百兆) TL-SG1005P(5口千兆) TL-SF1009PH(…

第一章魔獸窗口

開始顯示第一個窗體 用戶直接點登陸的話就會提示用戶名不能為空密碼不能為空 沒有賬號的話只能先注冊,點擊藍色摁鈕進入下一個窗體 這里有判斷是否為空,注冊成功后利用窗體傳值,并且打開第一個窗口 把注冊的用戶名和密碼寫上去就可以的登陸到…

Apache Digester示例–輕松配置

解決問題–硬編碼,需要為您的應用程序創建自定義配置,例如struts配置文件,以僅通過更改文件來改變應用程序行為。 Apache Digester可以輕松為您完成此任務。 使用Apache Digester相當容易將XML文檔轉換為相應的Java bean對象層次結構。 請參閱…

騰訊云搭svn服務器,騰訊云使用筆記二: 安裝svn服務器及web同步

A01:安裝subversionsudo apt-get install subversionA02:創建倉庫很多目錄可以放subversion文件倉庫,最常見的是/usr/local/svn和/home/svnsudo mkdir -p /home/svn/youshengyousesudo svnadmin create /home/svn/youshengyouse//說明:先創建…

python將圖像轉換為8位單通道_使用Python將圖片轉換為單通道黑白圖片

本文介紹如何使用python將圖片轉換為純黑白的單通道圖片。文中用到的腳本支持彩色、灰度、帶alpha通道的輸入圖片以及SVG矢量圖,支持調整輸出圖片大小以及設置灰度閾值。最后介紹如何輸出SSD1306 OLED顯示屏可用的XBM文件,并利用輸出的XBM數據在0.96寸的…

Java FlameGraph 火焰圖

上周一個偶然的機會聽同事提到了Java FlameGraph,剛實驗了一下,效果非常好。 一、什么是FlameGraph 直接看圖說話。FlameGraph 是 SVG格式,矢量圖,可以隨意擴大縮小,看不清的信息可以放大看。圖中,各種紅橙…

ADB 常用命令

獲取Android設備號 adb shell getprop ro.serialno 獲取系統版本 adb shell getprop ro.build.version.release>4.2.2 獲取系統api版本 adb shell getprop ro.build.version.sdk>17 獲取設備分辨率(SDK4.3) adb shell wm size獲取設備屏幕密度&am…

哪個Java線程消耗了我的CPU?

當您的Java應用程序占用100%的CPU時,您該怎么辦? 事實證明,您可以使用內置的UNIX和JDK工具輕松找到有問題的線程。 不需要探查器或代理。 為了進行測試,我們將使用以下簡單程序: public class Main {publi…

煙草局計算機筆試,2020年廣西南寧煙草局什么時候筆試?

最近廣西煙草局各地市社招通知頻發,南寧煙草局報名截止至今都無任何消息,根據往年的考情,通知近期很大可能會發布,將于6月底完成筆面!你備考好了嗎?今天廣西中公國企小編來給大家說一下南寧煙草局社招的筆試內容及備考…

JAVA Swing 組件演示***

下面是Swing組件的演示: package a_swing;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.…

Spring 3.1緩存和@CacheEvict

我的上一個博客演示了Spring 3.1的Cacheable批注的應用, Cacheable批注用于標記返回值將存儲在緩存中的方法。 但是, Cacheable只是Spring的Guy為緩存而設計的一對注釋??中的一個,另一個是CacheEvict 。 像Cacheable一樣, Cache…

centos 獲取硬件序列號_如何在 Linux 上查找硬件規格

在 Linux 系統上有許多工具可用于查找硬件規格。-- Sk(作者)在 Linux 系統上有許多工具可用于查找硬件規格。在這里,我列出了四種最常用的工具,可以獲取 Linux 系統的幾乎所有硬件(和軟件)細節。好在是這些…

位置服務器管理器,查看 DIMM 位置

鍵入:-> show /System/Memory/DIMMs -t locationTarget | Property | Value-----------------------------------------------------------------------/System/Memory/DIMMs/ | location | CMIOU0/CM/CMP/BOB00/CH0/DIMM (CPU MemoryDIMM_0 | | IO Unit 0 Memor…

Spring –持久層–編寫實體并配置Hibernate

歡迎來到本教程的第二部分。 當您看到本文有多長時間時,請不要驚慌–我向您保證,這主要是簡單的POJO和一些生成的代碼。 在開始之前,我們需要更新我們的Maven依賴項,因為我們現在將使用Hibernate和Spring。 將以下依賴項添加到pom…

無線服務器主機名是,wifi默認服務器主機名

wifi默認服務器主機名 內容精選換一換以CentOS 7操作系統的彈性云服務器為例:登錄Linux彈性云服務器,查看“cloud-init”的配置文件。檢查“/etc/cloud/cloud.cfg”文件中“update_hostname”是否被注釋或者刪除。如果沒有被注釋或者刪除,則需…

pygame里面物體閃爍運動_利用自閃爍發光二極管探究小車在傾斜軌道上的運動規律...

2020年11月23日,周一,24小時安全值班。利用當班中午的時間,微主在創客空間測試了自閃爍發光二極管在勻加速運動中的效果,結果還比較滿意。將小車放置在傾斜的軌道上,將自閃爍發光二極管和紐扣電池構成頻閃光源&#xf…

python網絡爬蟲與信息提取 學習筆記day3

Day3: 只需兩行代碼解析html或xml信息 具體代碼實現:day3_1 注意BeautifulSoup的B和S需要大寫,因為python大小寫敏感 import requests r requests.get("http://python123.io/ws/demo.html") r.text demo r.text from bs4 import Beauti…