java实现加减乘除运算符随机生成十道题并判断对错_2020年Java面试题(3年的工作总结),最全的知识点总结...
這份Java面試題整整花了三個(gè)月的時(shí)間來(lái)整理,都是自己再工作中總結(jié)出來(lái),記住多少就寫多少,希望這份資料可以幫助你們,文末有其余部分資料的領(lǐng)取方式.
Redis12道面試題
1.什么是Redis?
答:Remote Dictionary Server(Redis)是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器
2. Redis有哪些數(shù)據(jù)結(jié)構(gòu)?
字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。如果你是Redis中高級(jí)用戶,還需要加上下面幾種數(shù)據(jù)結(jié)構(gòu)HyperLogLog、Geo、Pub/Sub。如果你說(shuō)還玩過(guò)Redis Module,像BloomFilter,RedisSearch,Redis-ML
3.Redis的特點(diǎn)什么是?
(1). 支持多種數(shù)據(jù)結(jié)構(gòu),如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數(shù)估算)
(2). 支持持久化操作,可以進(jìn)行aof及rdb數(shù)據(jù)持久化到磁盤,從而進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù)等操作,較好的防止數(shù)據(jù)丟失的手段。
(3). 支持通過(guò)Replication進(jìn)行數(shù)據(jù)復(fù)制,通過(guò)master-slave機(jī)制,可以實(shí)時(shí)進(jìn)行數(shù)據(jù)的同步復(fù)制,支持多級(jí)復(fù)制和增量復(fù)制,master-slave機(jī)制是Redis進(jìn)行HA的重要手段。單進(jìn)程請(qǐng)求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數(shù)據(jù)一致性問(wèn)題。
4.Redis的操作是原子性的,怎么保證原子性的?
對(duì)于Redis而言,命令的原子性指的是:一個(gè)操作的不可以再分,操作要么執(zhí)行,要么不執(zhí)行。Redis的操作之所以是原子性的,是因?yàn)镽edis是單線程的。Redis本身提供的所有API都是原子操作,Redis中的事務(wù)其實(shí)是要保證批量操作的原子性。多個(gè)命令在并發(fā)中也是原子性的嗎?不一定, 將get和set改成單命令操作,incr 。使用Redis的事務(wù),或者使用Redis+Lua==的方式實(shí)現(xiàn).
5.Redis 內(nèi)部結(jié)構(gòu)
(1).dict 本質(zhì)上是為了解決算法中的查找問(wèn)題(Searching)是一個(gè)用于維護(hù)key和value映射關(guān)系的數(shù)據(jù)結(jié)構(gòu),與很多語(yǔ)言中的Map或dictionary類似。 本質(zhì)上是為了解決算法中的查找問(wèn)題(Searching)
(2).sds sds就等同于char * 它可以存儲(chǔ)任意二進(jìn)制數(shù)據(jù),不能像C語(yǔ)言字符串那樣以字符’0’來(lái)標(biāo)識(shí)字符串的結(jié) 束,因此它必然有個(gè)長(zhǎng)度字段。
(3).skiplist (跳躍表) 跳表是一種實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,單層多指針的鏈表,它查找效率很高,堪比優(yōu)化過(guò)的二叉平衡樹(shù),且比平衡樹(shù)的實(shí)現(xiàn),
(4).quicklist(5).ziplist 壓縮表 ziplist是一個(gè)編碼后的列表,是由一系列特殊編碼的連續(xù)內(nèi)存塊組成的順序型數(shù)據(jù)結(jié)構(gòu),
6.Redis的配置以及持久化方案有幾種?
以下兩種
RDB方式
AOF方式
什么是RDB方式?
是RDB是對(duì)內(nèi)存中數(shù)據(jù)庫(kù)狀態(tài)進(jìn)行快照RDB方式:將Redis在內(nèi)存中的數(shù)據(jù)庫(kù)狀態(tài)保存到磁盤里面,RDB文件是一個(gè)經(jīng)過(guò)壓縮的二進(jìn)制文件,通過(guò)該文件可以還原生成RDB文件時(shí)的數(shù)據(jù)庫(kù)狀態(tài)(默認(rèn)下,持久化到dump.rdb文件,并且在redis重啟后,自動(dòng)讀取其中文件,據(jù)悉,通常情況下一千萬(wàn)的字符串類型鍵,1GB的快照文件,同步到內(nèi)存中的 時(shí)間是20-30秒)
RDB的生成方式:
1、執(zhí)行命令手動(dòng)生成有兩個(gè)Redis命令可以用于生成RDB文件,一個(gè)是SAVE,另一個(gè)是BGSAVE SAVE命令會(huì)阻塞Redis服務(wù)器進(jìn)程,直到RDB文件創(chuàng)建完畢為止,在服務(wù)器進(jìn)程阻塞期間,服務(wù)器不能處理任何命令請(qǐng)求,BGSAVE命令會(huì)派生出一個(gè)子進(jìn)程,然后由子進(jìn)程負(fù)責(zé)創(chuàng)建RDB文件,服務(wù)器進(jìn)程(父進(jìn)程)繼續(xù)處理命令請(qǐng)求,創(chuàng)建RDB文件結(jié)束之前,客戶端發(fā)送的BGSAVE和SAVE命令會(huì)被服務(wù)器拒絕
2、通過(guò)配置自動(dòng)生成可以設(shè)置服務(wù)器配置的save選項(xiàng),讓服務(wù)器每隔一段時(shí)間自動(dòng)執(zhí)行一次BGSAVE命令,可以通過(guò)save選項(xiàng)設(shè)置多個(gè)保存條件,但只要其中任意一個(gè)條件被滿足,服務(wù)器就會(huì)執(zhí)行BGSAVE命令
7. 使用過(guò)Redis分布式鎖么,它是什么回事?
先拿setnx來(lái)爭(zhēng)搶鎖,搶到之后,再用expire給鎖加一個(gè)過(guò)期時(shí)間防止鎖忘記了釋放。
這時(shí)候?qū)Ψ綍?huì)告訴你說(shuō)你回答得不錯(cuò),然后接著問(wèn)如果在setnx之后執(zhí)行expire之前進(jìn)程意外crash或者要重啟維護(hù)了,那會(huì)怎么樣?
這時(shí)候你要給予驚訝的反饋:唉,是喔,這個(gè)鎖就永遠(yuǎn)得不到釋放了。緊接著你需要抓一抓自己的腦袋,故作思考片刻,好像接下來(lái)的結(jié)果是你主動(dòng)思考出來(lái)的,然后回答:我記得set指令有非常復(fù)雜的參數(shù),這個(gè)應(yīng)該是可以同時(shí)把setnx和expire合成一條指令來(lái)用的!對(duì)方這時(shí)會(huì)顯露笑容,心里開(kāi)始默念:嗯,這小子還不錯(cuò)。
8. Redis里面有1億個(gè)key,其中有10w個(gè)key是以某個(gè)固定的已知的前綴開(kāi)頭的,如何將它們?nèi)空页鰜?lái)?
使用keys指令可以掃出指定模式的key列表。對(duì)方接著追問(wèn):如果這個(gè)redis正在給線上的業(yè)務(wù)提供服務(wù),那使用keys指令會(huì)有什么問(wèn)題?這個(gè)時(shí)候你要回答redis關(guān)鍵的一個(gè)特性:redis的單線程的。keys指令會(huì)導(dǎo)致線程阻塞一段時(shí)間,線上服務(wù)會(huì)停頓,直到指令執(zhí)行完畢,服務(wù)才能恢復(fù)。這個(gè)時(shí)候可以使用scan指令,scan指令可以無(wú)阻塞的提取出指定模式的key列表,但是會(huì)有一定的重復(fù)概率,在客戶端做一次去重就可以了,但是整體所花費(fèi)的時(shí)間會(huì)比直接用keys指令長(zhǎng)。
9.如果有大量的key需要設(shè)置同一時(shí)間過(guò)期,一般需要注意什么?
如果大量的key過(guò)期時(shí)間設(shè)置的過(guò)于集中,到過(guò)期的那個(gè)時(shí)間點(diǎn),redis可能會(huì)出現(xiàn)短暫的卡頓現(xiàn)象。一般需要在時(shí)間上加一個(gè)隨機(jī)值,使得過(guò)期時(shí)間分散一些
10. Redis的同步機(jī)制了解么?
從同步。第一次同步時(shí),主節(jié)點(diǎn)做一次bgsave,并同時(shí)將后續(xù)修改操作記錄到內(nèi)存buffer,待完成后將rdb文件全量同步到復(fù)制節(jié)點(diǎn),復(fù)制節(jié)點(diǎn)接受完成后將rdb鏡像加載到內(nèi)存。加載完成后,再通知主節(jié)點(diǎn)將期間修改的操作記錄同步到復(fù)制節(jié)點(diǎn)進(jìn)行重放就完成了同步過(guò)程。
11. 是否使用過(guò)Redis集群,集群的原理是什么?
Redis Sentinal著眼于高可用,在master宕機(jī)時(shí)會(huì)自動(dòng)將slave提升為master,繼續(xù)提供服務(wù)。Redis Cluster著眼于擴(kuò)展性,在單個(gè)redis內(nèi)存不足時(shí),使用Cluster進(jìn)行分片存儲(chǔ)。
12. 如果有大量的key需要設(shè)置同一時(shí)間過(guò)期,一般需要注意什么?
如果大量的key過(guò)期時(shí)間設(shè)置的過(guò)于集中,到過(guò)期的那個(gè)時(shí)間點(diǎn),redis可能會(huì)出現(xiàn)短暫的卡頓現(xiàn)象。一般需要在時(shí)間上加一個(gè)隨機(jī)值,使得過(guò)期時(shí)間分散一些。
Java基礎(chǔ)十道題:
1、面向?qū)ο蟮奶卣饔心男┓矫?#xff1f;
1.封裝:定義與自己相關(guān)的屬性和方法,隱藏實(shí)現(xiàn)的細(xì)節(jié),只向外界提供最簡(jiǎn)單的編程接口。
2.繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過(guò)程。繼承可以提高代碼的重用性,JAVA中只允許單一繼承。
3.多態(tài)性:不同子類型的對(duì)象對(duì)同一消息作出不同的響應(yīng)。方法重載(overload)實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性(也稱為靜態(tài)多態(tài)),而方法重寫(override)實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性(也稱為動(dòng)態(tài)多態(tài))。一般多態(tài)通過(guò)方法重寫來(lái)實(shí)現(xiàn)。
2、訪問(wèn)修飾符public,private,protected,以及不寫(默認(rèn))時(shí)的區(qū)別?
修飾符 當(dāng)前類 同 包 子 類 其他包
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
類的成員不寫訪問(wèn)修飾時(shí)默認(rèn)為default。默認(rèn)對(duì)于同一個(gè)包中的其他類相當(dāng)于公開(kāi)(public),對(duì)于不是同一個(gè)包中的其他類相當(dāng)于私有(private)。受保護(hù)(protected)對(duì)子類相當(dāng)于公開(kāi),對(duì)不是同一包中的沒(méi)有父子關(guān)系的類相當(dāng)于私有。Java中,外部類的修飾符只能是public或默認(rèn),類的成員(包括內(nèi)部類)的修飾符可以是以上四種。
3、String 是最基本的數(shù)據(jù)類型嗎?
答:不是。Java中的基本數(shù)據(jù)類型只有8個(gè):byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type)和枚舉類型(enumeration type),剩下的都是引用類型(reference type)。
4、int和Integer有什么區(qū)別?
http://1.int是基本數(shù)據(jù)類型, Integer是int的包裝類,包裝類提供了很多操作方法,如各種類型直接轉(zhuǎn)換等
http://2.int默認(rèn)值為0,integer的默認(rèn)值為null
3.integer的取值范圍-128到127之間4.保存方式不同:Integer實(shí)際是對(duì)象的引用,當(dāng)new一個(gè)Integer時(shí),實(shí)際上是生成一個(gè)指針指向此對(duì)象;而int則是直接存儲(chǔ)數(shù)據(jù)值
5、&和&&的區(qū)別?
&運(yùn)算符有兩種用法:
(1)按位與;
(2)邏輯與。
&&運(yùn)算符是短路與運(yùn)算。邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運(yùn)算符左右兩端的布爾值都是true整個(gè)表達(dá)式的值才是true。&&之所以稱為短路運(yùn)算是因?yàn)?#xff0c;如果&&左邊的表達(dá)式的值是false,右邊的表達(dá)式會(huì)被直接短路掉,不會(huì)進(jìn)行運(yùn)算。
6、解釋內(nèi)存中的棧(stack)、堆(heap)和靜態(tài)區(qū)(static area)的用法。
基本數(shù)據(jù)類型的變量,一個(gè)對(duì)象的引用,還有就是函數(shù)調(diào)用的現(xiàn)場(chǎng)保存都使用內(nèi)存中的棧空間;
通過(guò)new關(guān)鍵字和構(gòu)造器創(chuàng)建的對(duì)象放在堆空間;
直接書(shū)寫的100、"hello"和常量都是放在靜態(tài)區(qū)中。
棧空間操作起來(lái)最快但是棧很小,通常大量的對(duì)象都是放在堆空間,理論上整個(gè)內(nèi)存沒(méi)有被其他進(jìn)程使用的空間甚至硬盤上的虛擬內(nèi)存都可以被當(dāng)成堆空間來(lái)使用。
7.數(shù)組有沒(méi)有l(wèi)ength()方法?String有沒(méi)有l(wèi)ength()方法?
數(shù)組沒(méi)有l(wèi)ength()方法,有l(wèi)ength 的屬性。
String 有l(wèi)ength()方法。JavaScript中,獲得字符串的長(zhǎng)度是通過(guò)length屬性得到的,這一點(diǎn)容易和Java混淆。
8.在Java中,如何跳出當(dāng)前的多重嵌套循環(huán)?
答:用break ;可以跳出多重循環(huán)。
直接結(jié)束所有的循環(huán)continue結(jié)束本次循環(huán)
9構(gòu)造方法(constructor)是否可被重寫(override)?
答:構(gòu)造器不能被繼承,因此不能被重寫,但可以被重載。
10.兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對(duì)不對(duì)?
答:不對(duì),如果兩個(gè)對(duì)象x和y滿足x.equals(y) == true,它們的哈希碼(hash code)應(yīng)當(dāng)相同。Java對(duì)于eqauls方法和hashCode方法是這樣規(guī)定的:
(1)如果兩個(gè)對(duì)象相同(equals方法返回true),那么它們的hashCode值一定要相同;
(2)如果兩個(gè)對(duì)象的hashCode相同,它們并不一定相同。
MySQL十五道面試題:
1.數(shù)據(jù)庫(kù)三范式:
第一范式:對(duì)屬性的原子性約束,要求字段具有原子性,不可再分解;
第二范式:在滿足第一范式的前提下,非主鍵字段不能出現(xiàn)部分依賴主鍵;
解決:消除復(fù)合主鍵就可避免出現(xiàn)部分以來(lái),可增加單列關(guān)鍵字。
第三范式:在滿足第二范式的前提下,非主鍵字段不能出現(xiàn)傳遞依賴,比如某個(gè)字段a依賴于主鍵,而一些字段依賴字段a,這就是傳遞依賴。
解決:將一個(gè)實(shí)體信息的數(shù)據(jù)放在一個(gè)表內(nèi)實(shí)現(xiàn)。
2.事務(wù)四大特性
(1).原子性:不可分割的操作單元,事務(wù)中所有操作,要么全部成功;要么撤回到執(zhí)行事務(wù)之前的狀態(tài)
(2).一致性:如果在執(zhí)行事務(wù)之前數(shù)據(jù)庫(kù)是一致的,那么在執(zhí)行事務(wù)之后數(shù)據(jù)庫(kù)也還是一致的;
(3).隔離性:事務(wù)操作之間彼此獨(dú)立和透明互不影響。事務(wù)獨(dú)立運(yùn)行。這通常使用鎖來(lái)實(shí)現(xiàn)。一個(gè)事務(wù)處理后的結(jié)果,影響了其他事務(wù),那么其他事務(wù)會(huì)撤回。事務(wù)的100%隔離,需要犧牲速度。(4).持久性:事務(wù)一旦提交,其結(jié)果就是永久的。即便發(fā)生系統(tǒng)故障,也能恢復(fù)
3.MySQL的事務(wù)隔離級(jí)別
(1).未提交讀(Read Uncommitted):允許臟讀,其他事務(wù)只要修改了數(shù)據(jù),即使未提交,本事務(wù)也能看到修改后的數(shù)據(jù)值。也就是可能讀取到其他會(huì)話中未提交事務(wù)修改的數(shù)據(jù)
(2).提交讀(Read Committed):只能讀取到已經(jīng)提交的數(shù)據(jù)。Oracle等多數(shù)數(shù)據(jù)庫(kù)默認(rèn)都是該級(jí)別 (不重復(fù)讀)。
(3).可重復(fù)讀(Repeated Read):可重復(fù)讀。無(wú)論其他事務(wù)是否修改并提交了數(shù)據(jù),在這個(gè)事務(wù)中看到的數(shù)據(jù)值始終不受其他事務(wù)影響。
(4).串行讀(Serializable):完全串行化的讀,每次讀都需要獲得表級(jí)共享鎖,讀寫相互都會(huì)阻塞MySQL數(shù)據(jù)庫(kù)(InnoDB引擎)默認(rèn)使用可重復(fù)讀( Repeatable read)
4.MySQL數(shù)據(jù)庫(kù)的四類索引:
(1)index ---- 普通索引,數(shù)據(jù)可以重復(fù),沒(méi)有任何限制。(即針對(duì)數(shù)據(jù)庫(kù)表創(chuàng)建索引)
(2)unique ---- 唯一索引,要求索引列的值必須唯一,但允許有空值;如果是組合索引,那么列值的組合必須唯一。
(3)primary key ---- 主鍵索引,是一種特殊的唯一索引,一個(gè)表只能有一個(gè)主鍵,不允許有空值,一般是在創(chuàng)建表的同時(shí)創(chuàng)建主鍵索引。
(4)組合索引 ---- 在多個(gè)字段上創(chuàng)建的索引,只有在查詢條件中使用了創(chuàng)建索引時(shí)的第一個(gè)字段,索引才會(huì)被使用。
(5)fulltext ---- 全文索引(基本不使用),是對(duì)于大表的文本域:char,varchar,text列才能創(chuàng)建全文索引,主要用于查找文本中的關(guān)鍵字,并不是直接與索引中的值進(jìn)行比較。fulltext更像是一個(gè)搜索引擎,配合match against操作使用,而不是一般的where語(yǔ)句加like。
注:全文索引目前只有MyISAM存儲(chǔ)引擎支持全文索引,InnoDB引擎5.6以下版本還不支持全文索引
索引可以提高查詢的速度,但是創(chuàng)建和維護(hù)索引需要耗費(fèi)時(shí)間,同時(shí)也會(huì)影響插入的速度,如果需要插入大量的數(shù)據(jù)時(shí),最好是先刪除索引,插入數(shù)據(jù)后再建立索引。
索引生效條件
假設(shè)index(a,b,c)
最左前綴匹配:模糊查詢時(shí),使用%匹配時(shí):’a%‘會(huì)使用索引,’%a‘不會(huì)使用索引
條件中有or,索引不會(huì)生效
a and c,a生效,c不生效
b and c,都不生效
a and b > 5 and c,a和b生效,c不生效。
5.delete、drop、truncate區(qū)別truncate 和 delete只刪除數(shù)據(jù),不刪除表結(jié)構(gòu) ,drop刪除表結(jié)構(gòu),并且釋放所占的空間。刪除數(shù)據(jù)的速度,drop> truncate > deletedelete屬于DML語(yǔ)言,需要事務(wù)管理,commit之后才能生效。drop和truncate屬于DDL語(yǔ)言,操作立刻生效,不可回滾。使用場(chǎng)合:當(dāng)你不再需要該表時(shí), 用 drop;當(dāng)你仍要保留該表,但要?jiǎng)h除所有記錄時(shí), 用 truncate;當(dāng)你要?jiǎng)h除部分記錄時(shí)(always with a where clause), 用 delete.
6.sql語(yǔ)句分類:
DDL:數(shù)據(jù)定義語(yǔ)言(create drop)
DML:數(shù)據(jù)操作語(yǔ)句(insert update delete)
DQL:數(shù)據(jù)查詢語(yǔ)句(select )
DCL:數(shù)據(jù)控制語(yǔ)句,進(jìn)行授權(quán)和權(quán)限回收(grant revoke)
TPL:數(shù)據(jù)事務(wù)語(yǔ)句(commit collback savapoint)
7.有哪些數(shù)據(jù)庫(kù)優(yōu)化方面的經(jīng)驗(yàn)?定位:
查找、定位慢查詢?cè)陧?xiàng)目自驗(yàn)項(xiàng)目轉(zhuǎn)測(cè)試之前,在啟動(dòng)mysal數(shù)據(jù)庫(kù)時(shí)開(kāi)啟慢查詢,并且把執(zhí)行慢的語(yǔ)句寫到日志中,在運(yùn)行一定時(shí)間后,通過(guò)查看日志找到慢查詢語(yǔ)句.使用explain慢查詢語(yǔ)句,來(lái)詳細(xì)分析語(yǔ)句的問(wèn)題.
優(yōu)化手段:
創(chuàng)建索引:創(chuàng)建合適的索引,我們就可以現(xiàn)在索引中查詢,查詢到以后直接找對(duì)應(yīng)的記錄.分表:當(dāng)一張表的數(shù)據(jù)比較多或者一張表的某些字段的值比較多并且很少使用時(shí),采用水平分表和垂直分表來(lái)t化讀寫分高:當(dāng)一臺(tái)服務(wù)器不能滿足需求時(shí),采用讀寫分離的方式進(jìn)行集群緩存:使用redis來(lái)進(jìn)行緩存一些常用優(yōu)化技巧
8.mysql中varchar與char的區(qū)別以及varchar(50)中的50代表的涵義?
(1).varchar與char的區(qū)別: char是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型.
(2).varchar(50)中50的含義 : 最多存放50個(gè)字節(jié)
(3).int(20)中20的含義: int(M)中的M indicates the maximum display width (最大顯示寬度)for integer types. The maximum legal display width is 255.
11.為什么要盡量設(shè)定一個(gè)主鍵?
主鍵是數(shù)據(jù)庫(kù)確保數(shù)據(jù)行在整張表唯一性的保障,即使業(yè)務(wù)上本張表沒(méi)有主鍵,也建議添加一個(gè)自增長(zhǎng)的ID列作為主鍵.設(shè)定了主鍵之后,在后續(xù)的刪改查的時(shí)候可能更加快速以及確保操作數(shù)據(jù)范圍安全.
13.如果要存儲(chǔ)用戶的密碼散列,應(yīng)該使用什么字段進(jìn)行存儲(chǔ)?
密碼散列,鹽,用戶身份證號(hào)等固定長(zhǎng)度的字符串應(yīng)該使用char而不是varchar來(lái)存儲(chǔ),這樣可以節(jié)省空間且提高檢索效率.個(gè)ID ;
(2).選擇正確的存儲(chǔ)引擎 ;
(3).使用可存下數(shù)據(jù)的最小的數(shù)據(jù)類型,整型 < date,time < char,varchar < blob;
(4).使用簡(jiǎn)單的數(shù)據(jù)類型,整型比字符處理開(kāi)銷更小,因?yàn)樽址谋容^更復(fù)雜。如,int類型存儲(chǔ)時(shí)間類型,bigint類型轉(zhuǎn)ip函數(shù);
(5).使用合理的字段屬性長(zhǎng)度,固定長(zhǎng)度的表會(huì)更快。使用enum、char而不是varchar;
(6).盡可能使用not null定義字段(給空字段設(shè)置默認(rèn)值);
(7).盡量少用text;
(8).給頻繁使用和查詢的字段建立合適的索引;
最后:
為了不影響觀看只選取了其中的兩個(gè)部分,其余的可以私信我電子書(shū)來(lái)獲取。
總結(jié)
以上是生活随笔為你收集整理的java实现加减乘除运算符随机生成十道题并判断对错_2020年Java面试题(3年的工作总结),最全的知识点总结...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 设计模式7------装饰者模式(Dec
- 下一篇: testng接口自动化测试_Java+M