全棧web開(kāi)發(fā)所需要的知識(shí)

P.S. 這只是一個(gè)備忘錄卓研,避免未來(lái)轉(zhuǎn)行忘記現(xiàn)在所學(xué)會(huì)的一切,所以把它記錄下來(lái)炸茧!

最后更新時(shí)間:2024-11-07(未完待補(bǔ)充)

需要會(huì)的編程語(yǔ)言一覽

編程語(yǔ)言:java每强、javascript、typescript娇掏、css呕寝、sass/scss、html婴梧、sql下梢、lua、c#塞蹭、

了解或者會(huì)一點(diǎn)的編程語(yǔ)言:C孽江、C++、Go番电、Python


表達(dá)式:正則表達(dá)式岗屏、

數(shù)據(jù)庫(kù)基礎(chǔ)

數(shù)據(jù)庫(kù)安裝、數(shù)據(jù)庫(kù)配置漱办,(DDL这刷、DCL、DML)娩井,SQL暇屋,存儲(chǔ)過(guò)程,觸發(fā)器洞辣,視圖咐刨,SELECT查詢,子查詢扬霜,左/右/內(nèi)/外連接查詢定鸟,多表關(guān)聯(lián)查詢,分組統(tǒng)計(jì)查詢著瓶,查詢排序仔粥。Update更新,Delete刪除蟹但,邏輯刪除,閃回查詢谭羔,截?cái)啾砘牵治鰣?zhí)行計(jì)劃,數(shù)據(jù)庫(kù)內(nèi)置函數(shù)瘟裸,SQL性能優(yōu)化客叉,數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)庫(kù)引擎,數(shù)據(jù)庫(kù)自增id兼搏,字段默認(rèn)值卵慰,字段效驗(yàn),數(shù)據(jù)庫(kù)主鍵(包括隱藏主鍵)佛呻,外鍵關(guān)聯(lián)裳朋,索引(聚合索引、非聚合索引)吓著,數(shù)據(jù)庫(kù)用戶/用戶權(quán)限管理鲤嫡,數(shù)據(jù)備份恢復(fù),數(shù)據(jù)庫(kù)異常修復(fù)绑莺,數(shù)據(jù)庫(kù)災(zāi)備暖眼,數(shù)據(jù)庫(kù)日志查看。

mysql專屬技術(shù):

  • innodb數(shù)據(jù)庫(kù)引擎(這個(gè)不是專屬的纺裁,很多數(shù)據(jù)庫(kù)都有)诫肠,myisam數(shù)據(jù)庫(kù)引擎
  • replace into,update/delete根limit語(yǔ)句欺缘,跨庫(kù)select/update栋豫,ON DUPLICATE KEY語(yǔ)句。
  • mysqldump數(shù)據(jù)庫(kù)備份工具浪南。
  • mysqlcheck數(shù)據(jù)庫(kù)檢查/修復(fù)工具笼才。

oracle一些專屬技術(shù):

  • nvl函數(shù)
  • ROWID、ROWNUM偽列

還有數(shù)據(jù)庫(kù)連接工具:Navicate络凿、Dberver骡送、Studio3T、RedisManage絮记、redis-client(redis自帶的命令行客戶端工具)摔踱。

需要掌握/了解的數(shù)據(jù)庫(kù)

  • 常用關(guān)系型數(shù)據(jù)庫(kù):Mysql,MariaDB怨愤,Oracle派敷,PostgreSQL
  • 可嵌入式輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù):Sqlite
  • 用于處理大量數(shù)據(jù)查詢的關(guān)系型數(shù)據(jù)庫(kù):Clickhouse
  • 可用于緩存或快速key-value查詢的NoSQL數(shù)據(jù)庫(kù):Redis(RDB存儲(chǔ)技術(shù))
  • 文檔型NoSQL數(shù)據(jù)庫(kù):MongoDB
  • 支持分布式的搜索引擎:Elasticsearch
  • 數(shù)據(jù)庫(kù)語(yǔ)言:SQL、PL/SQL(Oracle)撰洗、Bson(MongoDB)

數(shù)據(jù)庫(kù)/spring事務(wù)相關(guān)技術(shù)

  • 事務(wù)相關(guān):
    • 事務(wù)傳播方式:
      • REQUIRED:已存在則使用已有的篮愉,否則新建(默認(rèn))
      • SUPPORTS:當(dāng)前存在事務(wù)則加入,否則以非事務(wù)方式執(zhí)行
      • MANDATORY:當(dāng)前存在事務(wù)則加入差导,否則拋出異常
      • REQUIRES_NEW:總是創(chuàng)建一個(gè)新事務(wù)執(zhí)行试躏,如果已存在則掛起。
      • NOT_SUPPORTED:以非事務(wù)方式執(zhí)行设褐,如果當(dāng)前存在事務(wù)則掛起颠蕴。
      • NEVER:一直以非事務(wù)方式執(zhí)行泣刹,如果存在則拋出異常。
      • NESTED:如果存在事務(wù)則創(chuàng)建一個(gè)嵌套事務(wù)犀被,否則創(chuàng)建一個(gè)新事務(wù)椅您。
    • 事務(wù)隔離級(jí)別:
      • Read Uncommitted:未提交讀。最低的隔離級(jí)別寡键,會(huì)讀取沒(méi)有提交的數(shù)據(jù)掀泳,會(huì)導(dǎo)致臟讀幻讀不可重復(fù)讀。
      • Read Committed:已提交讀昌腰。允許讀取已經(jīng)提交的數(shù)據(jù)开伏。會(huì)導(dǎo)致幻讀和不可重復(fù)讀。
      • Repeatable Read(部分?jǐn)?shù)據(jù)庫(kù)的默認(rèn)級(jí)別):可重復(fù)讀遭商。對(duì)同一個(gè)字段多次讀取結(jié)果是一樣的固灵,但是依然可能產(chǎn)生幻讀。
      • Serializable:串行化劫流,最高隔離級(jí)別巫玻,所有事務(wù)依次執(zhí)行,一個(gè)結(jié)束執(zhí)行另外一個(gè)祠汇。
    • 臟讀/幻讀/不可重復(fù)讀問(wèn)題
      • 臟讀:讀取到的數(shù)據(jù)是未提交的仍秤,程序認(rèn)為是已經(jīng)有了,但是可能那邊事務(wù)回滾了可很,導(dǎo)致實(shí)際數(shù)據(jù)不存在诗力。
      • 不可重復(fù)讀:第一次讀取一條數(shù)據(jù)拿到結(jié)果A,但是事務(wù)還沒(méi)結(jié)束另外一個(gè)請(qǐng)求把這條數(shù)據(jù)改了我抠,當(dāng)前事務(wù)第二次讀取這條數(shù)據(jù)苇本,結(jié)果和之前的A不一樣,這就是不可重復(fù)讀問(wèn)題菜拓。
      • 幻讀:獲取表中所有數(shù)據(jù)一共10條瓣窄,另外一個(gè)事務(wù)加入了一條新數(shù)據(jù),這個(gè)時(shí)候在讀取數(shù)據(jù)變成11條數(shù)據(jù)了纳鼎,這就是幻讀俺夕。

需要掌握/了解的中間件:

  • 文件服務(wù):FastDFS、Minio
  • java服務(wù)器:Tomcat贱鄙、jetty(可以了解weblogic和websphere)
  • 發(fā)布訂閱推送消息系統(tǒng):RabbitMQ劝贸、Kafka
  • 反向代理服務(wù)器/web前端頁(yè)面服務(wù)器:nginx
  • 容器化管理服務(wù)工具:docker
  • 容器編排工具:docker-compose、k8s逗宁、rancher
  • 配置中心:nacos映九、apollo、spring cloud config
  • 分布式協(xié)調(diào)框架:eureka(AP)疙剑、zookeeper(CP)

docker需要掌握的技術(shù)

Dockerfile文件編寫氯迂,docker包構(gòu)建命令,docker鏡像導(dǎo)入導(dǎo)出刪除言缤,docker鏡像詳情信息查看嚼蚀,docker容器啟動(dòng)停止重啟刪除,docker容器進(jìn)入管挟,docker網(wǎng)絡(luò)配置和刪除轿曙,docker環(huán)境變量配置,docker啟動(dòng)命令配置僻孝,docker端口映射导帝,docker文件掛載,docker cpu/內(nèi)存使用限制穿铆,docker重啟策略和異常通知您单,docker日志記錄和日志大小限制,docker健康檢測(cè)荞雏,docker內(nèi)外文件復(fù)制虐秦,docker鏡像tar包結(jié)構(gòu)原理,docker中心倉(cāng)庫(kù)和docker私有倉(cāng)庫(kù)搭建以及登錄docekr服務(wù)器凤优,arm悦陋、x86下docker的區(qū)別,docker中使用N卡gpu筑辨。

docker命令記錄:

  • docker exec -it xxxx /bin/bash
  • docker save xxx:xxx > xx.tar
  • docker load < ./xx.tar
  • docker pull xxx:xxx
  • docker push
  • docker inspect 鏡像id/鏡像名字:版本號(hào)/docker進(jìn)程名字/docker進(jìn)程id
  • docker run -itd [--name xxx -p xx:xx -p xx:xx] xxx [commands]
  • docker stop xxx
  • docker start xx
  • docker restart xx
  • docker rm xx
  • docker rmi xxx
  • docker network ls
  • docker network rm
  • docker ps [--no-trunc]
  • docker kill
  • docker attach
  • docker images
  • docker version
  • docker logs [-f --tail 1] xxxx

docker-compose命令記錄:

  • docker-compose [-f xxxx/xx/docker-compose.yml] down [-v]
  • docker-compose [-f xxxx/xx/docker-compose.yml] up [-d]
  • docker-compose restart
  • docker-compose logs [-f --tail 1]

java基礎(chǔ)

JSE俺驶、JEE、JME
java基本語(yǔ)法棍辕,50+關(guān)鍵字用法暮现,包裝類,IO流(字節(jié)流痢毒、字符流送矩、打印流、掃描流哪替、緩沖流)栋荸,對(duì)象序列化,NIO/AIO凭舶,NET(B/S協(xié)議晌块、C/S協(xié)議,TCP帅霜、UDP)匆背,多線程,線程池身冀,反射(還原類結(jié)構(gòu)钝尸,實(shí)例化對(duì)象括享,跳過(guò)構(gòu)造方法實(shí)例化對(duì)象),類加載器(遠(yuǎn)處網(wǎng)絡(luò)class類加載珍促,動(dòng)態(tài)加載卸載類)铃辖,異常捕捉,Annotation注解猪叙,函數(shù)式編程(Lambda表達(dá)式娇斩,方法引用,函數(shù)式接口)穴翩,集合框架(Iterator犬第、Collection、List芒帕、Set歉嗓、Map、Enumeartion副签、Vector遥椿、Struct、Concurrent*線程安全的集合框架淆储,CopyOnWriteArrayList冠场、...),JDBC(包括事務(wù)控制本砰,控制臟讀幻讀)碴裙,枚舉,泛型点额,比較器舔株,時(shí)間日期,時(shí)區(qū)概念/統(tǒng)一項(xiàng)目時(shí)區(qū)还棱,正則表達(dá)式载慈,多語(yǔ)言/國(guó)際化程序,Stream流珍手,動(dòng)態(tài)代理類办铡,字符串/可變字符串,大數(shù)值類(BigInteger琳要、BigDecimal)寡具,文件監(jiān)控類Watcher,稚补,java調(diào)用本地程序童叠,JNI,swing/awt课幕,對(duì)象克隆厦坛,XML/JSON五垮,JVM內(nèi)存模型(方法區(qū)、靜態(tài)區(qū)杜秸、棧內(nèi)存拼余、堆內(nèi)存),GC(G1亩歹、ZGC),java啟動(dòng)參數(shù)凡橱,javadoc文檔注釋小作,package-info/module-info。
主線程稼钩,守護(hù)線程顾稀。ThreadLocal,InheritableThreadLocal坝撑。

Java Agent代碼注入静秆,volatile多線程可見(jiàn)性原理,cpu行緩存巡李,CAS自旋鎖抚笔。SPI服務(wù)發(fā)現(xiàn)機(jī)制(jdbc是一個(gè)例子)

java配套技術(shù)

  • eclipse/idea:java開(kāi)發(fā)工具。還有myeclipse侨拦,集成了大量插件殊橙,不過(guò)沒(méi)啥必要,spring的eclipse插件是免費(fèi)的狱从,用eclilpse+spring tools插件即可膨蛮。
  • maven/gradle:項(xiàng)目管理工具+項(xiàng)目依賴包管理工具(打包構(gòu)建也是用他)
  • git/svn:代碼版本管理工具。(.gitignore忽略文件編寫)
  • TortoiseGit/TortoiseSVN:有可視化界面的git/svn操作軟件(最常用的)
  • junit:?jiǎn)卧獪y(cè)試庫(kù)季研。
  • jenkins:自動(dòng)化持續(xù)集成工具(讓某一個(gè)或某一套流程自動(dòng)化完成)
  • sonarQube/sonarLint:代碼檢查工具(查bug敞葛、漏洞、優(yōu)化建議)与涡,代碼檢查插件(適用于開(kāi)發(fā)工具)
  • gitlab:可搭建私有代碼倉(cāng)庫(kù)(共有的有g(shù)ithub和gitee)
  • tomcat:java項(xiàng)目部署服務(wù)器
  • openjdk:開(kāi)源免費(fèi)版本的jdk
  • ffmpeg:開(kāi)源免費(fèi)的視頻處理庫(kù)(包括但不限于轉(zhuǎn)碼惹谐、實(shí)施推流、提取圖片递沪、截取視頻等)豺鼻,很多視頻播放軟件也是基于ffmpeg開(kāi)發(fā)的。
  • openssl:用于生成ssl證書
  • JD-GUI:java代碼反編譯工具
  • jconsole:java自帶的圖形化界面的進(jìn)程監(jiān)控工具款慨。(命令行版的有jmap儒飒、jstat等)
  • 數(shù)據(jù)庫(kù)設(shè)計(jì)軟件:powerDesigner(最常用)

java框架

  • spring:核心框架,包括各種第三方框架集成檩奠,IOC+AOP桩了,項(xiàng)目生命周期管理附帽,以及各種強(qiáng)大功能。具體包括:
    • spring:spring核心框架井誉。
    • spring mvc:控制層controller核心框架蕉扮。
    • springboot:簡(jiǎn)化web開(kāi)發(fā)的新一代框架,內(nèi)置tomcat颗圣,去xml配置喳钟,更多生命周期管理和擴(kuò)展功能。更多自動(dòng)注入自動(dòng)適配功能在岂。springboot也有自己的一套SPI更好用(spring.factories)奔则。
    • springjdbc:jdbc框架
    • spring security:web安全框架
    • spring aop:AOP代理設(shè)計(jì)模式框架。
    • spring data:JPA框架蔽午,簡(jiǎn)化各種數(shù)據(jù)庫(kù)訪問(wèn)易茬。(jpaRepository方法命名規(guī)則)
    • spring cloud:微服務(wù)框架
    • springfox:接口文檔生成框架
    • springtest單元測(cè)試框架
    • spring-websocket:websocket框架
  • mybatis:半輕半重的最好用的jdbc框架之一。
  • PageHelper:mybatis的分頁(yè)插件(不過(guò)要是直接用mybatis-plus就不需要這個(gè)了)
  • mybatis-plus:mybatis的加強(qiáng)版及老,減少sql配置抽莱,自動(dòng)化實(shí)現(xiàn)更多sql操作。
  • shiro:web安全骄恶、權(quán)限框架食铐,和spring security功能類似。
  • flyway:自動(dòng)管理數(shù)據(jù)庫(kù)sql版本僧鲁。
  • validation-api:參數(shù)驗(yàn)證框架璃岳,一般用在controller上。用配置實(shí)現(xiàn)參數(shù)效驗(yàn)悔捶。
  • httpclient/okhttp:http請(qǐng)求框架铃慷。
  • swagger:接口文檔框架。
  • jackson:最好用的json框架之一蜕该。除此之外其他json框架還有(Gson犁柜、FastJson)
  • druid:對(duì)運(yùn)維管理非常有好多數(shù)據(jù)庫(kù)連接池框架。
  • HikariCP:spring內(nèi)置的輕量級(jí)性能好的數(shù)據(jù)庫(kù)連接池框架堂淡。
  • 工具庫(kù):
    • apache-common:apache常用工具庫(kù)
    • apache-io:apache IO工具庫(kù)
    • apache-net:apache網(wǎng)絡(luò)工具庫(kù)
    • apache-fileupload:apache http文件上傳工具庫(kù)
    • apache-codec:apache的編解碼工具庫(kù)
    • spring utils:spring工具庫(kù)
    • hutool:也是一個(gè)包含了很多常用操作的工具庫(kù)
  • cglib/javassist/asm:動(dòng)態(tài)生成java類的庫(kù)馋缅,從左到右使用越來(lái)越難,但也越來(lái)越靈活绢淀。
  • lombok:用注解方式自動(dòng)生成實(shí)體類setter萤悴、getter方法等各種常用方法/屬性的框架,可以極大的提高代碼開(kāi)發(fā)效率皆的。
  • redission:非常好用的redis連接框架覆履,而且支持基于redis的很多分布式鎖功能。
  • javacv:java集成ffmpeg的框架之一。
  • feign:RPC框架硝全,通過(guò)接口和注解可以實(shí)現(xiàn)http接口調(diào)用操作栖雾,本身也是spring cloud生態(tài)框架中的一個(gè)。類似的RPC框架還有dubbo伟众。
  • ribbon:一般配合feign使用析藕,可以實(shí)現(xiàn)負(fù)載均衡和服務(wù)發(fā)現(xiàn),feign只需要配置一個(gè)key凳厢,ribbon會(huì)根據(jù)key找到合適的ip進(jìn)行請(qǐng)求账胧。
  • slf4j:統(tǒng)一的日志框架。他主要是一個(gè)抽象出來(lái)的公共日志操作先紫,避免切換日志框架帶來(lái)的修改代碼復(fù)雜的問(wèn)題找爱。他一般和其他日志框架配合使用。
  • log4j泡孩、log4j2、logback:日志框架寺谤,logback是spring自帶的仑鸥。
  • netty:這是一個(gè)簡(jiǎn)化了NIO網(wǎng)絡(luò)編程的框架。
  • jasypt:這是一個(gè)可以讓springboot的配置文件中配置密文的框架变屁。從Environment中獲取配置時(shí)眼俊,會(huì)自動(dòng)將密文轉(zhuǎn)換為明文。這個(gè)框架是為了提高服務(wù)部署時(shí)配置文件的安全問(wèn)題粟关,不出現(xiàn)明文疮胖。
  • poi:java讀寫excel的框架
  • protobuf-java:java中使用protobuf協(xié)議的框架。
  • jnotify:一個(gè)基于JNI調(diào)用底層邏輯的文件監(jiān)控庫(kù)闷板。用下來(lái)感覺(jué)底層原理和watch類差不多澎灸,都會(huì)占用監(jiān)視器數(shù)量,達(dá)到上限也會(huì)報(bào)錯(cuò)遮晚。不過(guò)他不會(huì)堵塞刪除性昭。(api很好用,但是jar沒(méi)法直接用县遣,因?yàn)閟o和dll沒(méi)有自動(dòng)加載糜颠,還得自己重寫里面有問(wèn)題的類重新加載)

需要了解的JSR規(guī)范提案

  • JSR303:這是最常用的標(biāo)準(zhǔn)化參數(shù)驗(yàn)證規(guī)范。例如spring內(nèi)置了hibernate-validator包實(shí)現(xiàn)JSR303規(guī)范萧求。只需要給實(shí)體類設(shè)置注解其兴,然后再通過(guò)特定的類進(jìn)行檢查就可以自動(dòng)實(shí)現(xiàn)參數(shù)效驗(yàn)和拋出異常。springmvc的參數(shù)則會(huì)自動(dòng)對(duì)接口參數(shù)進(jìn)行效驗(yàn)無(wú)需自己再去編寫驗(yàn)證代碼夸政。

spring框架需要掌握的技術(shù)

tag: 以springboot為主

[spring]配置優(yōu)先級(jí):

支持讀取的配置文件:

  • application.yml
  • application-{profile}.yml
  • application.properties
  • application-{profile}.properties
  • config/application.yml
  • config/application-{profile}.yml
  • config/application.properties
  • config/application-{profile}.properties

配置加載優(yōu)先級(jí):

  1. 命令行參數(shù)
  2. JNDI配置
  3. java系統(tǒng)屬性:System.getProperties()
  4. 操作系統(tǒng)環(huán)境變量
  5. RandomValuePropertySource 配置的 random.* 屬性值元旬。
  6. jar包外部配置文件(有些順序沒(méi)驗(yàn)證過(guò)):
    5.1. application-{profile}.properties
    5.2. application-{profile}.yml
    5.3. application.properties
    5.4. application.yml
    5.5. config/application-{profile}.properties
    5.6. config/application-{profile}.yml
    5.7. config/application.properties
    5.8. config/application.yml
  7. jar包內(nèi)classpath下配置文件(有些順序沒(méi)驗(yàn)證過(guò)):
    6.1. classpath:application-{profile}.properties
    6.2. classpath:application-{profile}.yml
    6.3. classpath:application.properties
    6.4. classpath:application.yml
    6.5. classpath:config/application-{profile}.properties
    6.6. classpath:config/application-{profile}.yml
    6.7. classpath:config/application.properties
    6.8. classpath:config/application.yml

[spring]常用注解

  • @SpringBootApplication
  • @Component,@Service,@Repository法绵,@Controller箕速,@RestController,@ControllerAdvice朋譬,@RestControllerAdvice盐茎,@Configurable
  • @Order,@Primary
  • @Import徙赢,@ImportAutoConfiguration字柠,@ConfigurationProperties,@EnableConfigurationProperties
  • @RequestMapping狡赐,@GetMapping窑业,@PostMapping,@PutMapping枕屉,@DeleteMapping常柄,@RequestBody,@ResponseBody搀擂,@RequestParam西潘,@PathVariable,@RequestPart哨颂,@RequestHeader
  • @ExceptionHandler
  • @Autowired喷市,@Qualifier,@Value威恼,@Lazy品姓,@DependsOn
  • @ConditionalOnProperty,@ConditionalOnClass箫措,@ConditionalOnMissingBean腹备,@ConditionalOnMissingClass,@ConditionalOnSingleCandidate斤蔓,@ConditionalOnNotWebApplication馏谨,@ConditionalOnResource,@Conditional
  • @AutoConfigureBefore附迷,@AutoConfigureAfter惧互,@AutoConfigureOrder
  • @EnableScheduling,@EnableAsync喇伯,@EnableWebSocket喊儡,@EnableCaching,@EnableWebSecurity

[spring]常用類

  • RestTemplate稻据,JdbcTemplate艾猜,MongoTemplate买喧,RabbitTemplate
  • ScriptUtils(可以解析執(zhí)行sql文件的工具類)

[spring]生命周期

TODO
配置加載前,配置加載后匆赃,bean初始化前窗市,bean初始化后帽借,bean攔截器
在任何一個(gè)階段注入代碼。

[spring]bean的多種初始化方式以及autoconfig

TODO
import注解
autoconfig
@Bean
@Configuration
不同方式的優(yōu)先級(jí),以及import方式注入bean的特殊用法祝谚。

[spring]條件配置Conditional

TODO
條件注解控制是否啟用bean
自定義條件類

[spring]自定義配置bean

TODO 自定義配置bean并且可以在application.yml配置文件里出現(xiàn)自動(dòng)提示

[spring]包掃描

TODO 利用spring內(nèi)置的包掃描類可以自己實(shí)現(xiàn)類的掃描邏輯什荣。

[spring]spring aware

TODO 可以獲取到一些bean蠕嫁,和直接注入差距不大朋沮。

[spring]banner

修改springboot啟動(dòng)時(shí)控制臺(tái)打印的橫幅logo。

[spring]其他需要掌握的技術(shù)

  • aspectj切入點(diǎn)表達(dá)式
  • OGNL表達(dá)式:通過(guò)配置一段字符串實(shí)現(xiàn)屬性讀取或方法調(diào)用囱淋,主要用在mybatis里
  • SPEL表達(dá)式:Spring自己實(shí)現(xiàn)的一套表達(dá)式猪杭,和ognl類似。

maven需要掌握的技術(shù)

nexus私服搭建妥衣。pom文件結(jié)構(gòu)皂吮,多結(jié)構(gòu)包管理(子父pom層級(jí)),包版本號(hào)統(tǒng)一替換命令税手,dependencyManagement定義子項(xiàng)目可選包的包版本蜂筹,build配置項(xiàng)目結(jié)構(gòu),plugins插件配置冈止,自定義maven插件,常用插件(編譯插件候齿、跳過(guò)單元測(cè)試插件熙暴,springboot打包插件,打包可通過(guò)java -jar命令啟動(dòng)包的插件慌盯,將所有依賴包c(diǎn)lass文件打到一起的插件周霉,javadoc文檔生成插件,java源碼一起打包插件亚皂,推送項(xiàng)目發(fā)布maven中心倉(cāng)庫(kù)的插件)俱箱,maven多個(gè)中心倉(cāng)庫(kù)地址配置,多profile配置灭必。

mvn命令狞谱,跳過(guò)單元測(cè)試的命令,打包時(shí)自定義啟動(dòng)參數(shù)的命令禁漓,打包時(shí)指定profile的參數(shù)跟衅,統(tǒng)一修改版本號(hào)的命令,推送中心倉(cāng)庫(kù)的命令播歼,僅install安裝本地的命令伶跷。

jenkins需要掌握的技術(shù)或插件

  • Pipeline語(yǔ)法
  • Multijob project:父子項(xiàng)目插件(Multijob, Multiple SCMs plugin)
  • jenkins存儲(chǔ)的密碼密文可以在jenkins中使用groovy代碼解密。
  • Qy Wechat Notification:企業(yè)微信小機(jī)器人推送構(gòu)建消息插件
  • ThinBackup:配置備份插件
  • SonarQube Scanner:sonarqube代碼掃描集成插件
  • Config File Provider:提供managed files功能,可以在jenkins中管理一些配置文件叭莫,構(gòu)建的時(shí)候追加進(jìn)去蹈集。
  • Role-based Authorization Strategy:基于任務(wù)名字進(jìn)行權(quán)限控制的插件,支持角色功能雇初。
  • 其他常用的docker拢肆、node、maven抵皱、git善榛、...插件略
  • jenkins中變量使用${}替換。

nginx

其他nginx發(fā)行版本:openresty(集成了很多插件的nginx)

nginx部署前端頁(yè)面呻畸,nginx http反向代理移盆,nginx TCP反向代理,nginx websocket反向代理伤为,nginx限流咒循、防刷、屏蔽ip绞愚、自定義錯(cuò)誤頁(yè)面叙甸。nginx負(fù)載均衡,一個(gè)ip處理多個(gè)host(ip相同位衩,但是多個(gè)域名都指向同一個(gè)ip裆蒸,根據(jù)訪問(wèn)域名不同,走不同的server)糖驴,配置ssl(https)僚祷,追加/修改請(qǐng)求頭、響應(yīng)頭贮缕,發(fā)起子請(qǐng)求辙谜。nginx讀取環(huán)境變量,nginx內(nèi)置變量感昼,反向代理location多種配置方法(正則装哆、前綴匹配、精準(zhǔn)匹配等)定嗓,配置gzip壓縮蜕琴,取消gzip壓縮,反向代理https網(wǎng)站(包括單向認(rèn)證https和雙向認(rèn)證https)宵溅,nginx不停機(jī)熱更新

各種nginx插件:

  • lua插件:嵌入lua腳本修改請(qǐng)求信息奸绷。
  • sub_filter:替換返回值的內(nèi)容

web開(kāi)發(fā)解決方案

【全棧開(kāi)發(fā)體系】
后端:jdk17+springboot3+mybatis-plus+flyway+jackson+hutool+springjdbc+springsecurity+feign+ribbon+...
前端:typescript+vue3+element-plus2+vite+vitepress+axios+vue-router+vuex+sass/scss+unocss

【不想關(guān)注在哪個(gè)服務(wù)器上部署,以及服務(wù)器缺少什么環(huán)境】
使用docker部署层玲。

【不想關(guān)注硬件大小号醉,資源限制反症,只關(guān)注有一堆機(jī)器自動(dòng)調(diào)配】
k8s

【不希望現(xiàn)場(chǎng)自己執(zhí)行sql,sql自動(dòng)管理】
flyway

【需要分布式鎖】
redis+redission

【需要集中管理配置】
使用配置中心

需要自己能寫出來(lái)的數(shù)據(jù)結(jié)構(gòu)/算法

  • 數(shù)據(jù)結(jié)構(gòu):鏈表畔派,堆棧铅碍,隊(duì)列,二叉樹(shù)线椰,四叉樹(shù)胞谈。
  • 排序算法:冒泡排序、快速排序等多種排序算法憨愉。
  • 數(shù)組操作:數(shù)組置換烦绳、二維數(shù)組旋轉(zhuǎn)。
  • 最小生成樹(shù)算法:prim

需要了解或者會(huì)寫的一些算法

  • 動(dòng)態(tài)規(guī)劃算法(DP)
  • 貪心算法
  • 廣度優(yōu)先算法(BFS)
  • 深度優(yōu)先算法(DFS)
  • 模擬退火算法(通常用于AI配紫,尋找近似最優(yōu)解)
  • 遺傳算法(通常用于AI径密,逐漸完善最優(yōu)解)

設(shè)計(jì)模式

開(kāi)閉原則,MVC躺孝,MVVM享扔,單例/多例,工廠設(shè)計(jì)模式植袍,代理設(shè)計(jì)模式惧眠,動(dòng)態(tài)代理設(shè)計(jì)模式,單一職責(zé)原則于个,單一出口原則氛魁。

其他設(shè)計(jì)模式都不需要特別去記,本質(zhì)都是為了實(shí)現(xiàn)開(kāi)閉原則厅篓,寫多了自然就會(huì)了
生成器模式(Builder)秀存,原型模式(Clone/Copy),組合模式(無(wú)繼承)贷笛,適配器模式应又,觀察者模式(+攔截器模式)宙项,責(zé)任鏈模式乏苦,狀態(tài)模式,命令模式尤筐,...

html基礎(chǔ)

dom基本結(jié)構(gòu)汇荐、dom屬性、html注釋盆繁、"<!doctype html>"HTML5標(biāo)記掀淘,<meta charset="utf-8">編碼設(shè)置,title標(biāo)題設(shè)置油昂。
input表單(文本框革娄、密碼框倾贰、單選/復(fù)選框、下拉選擇框拦惋、文件選擇框匆浙、...)、視頻/音頻/圖片播放組件(以及異常替換方法)厕妖。各種語(yǔ)義標(biāo)簽首尼,meta頭標(biāo)簽,iframe子頁(yè)面言秸,table表格软能,ul/ol列表,button按鈕举畸,canvas查排,shadow DOM(類似虛擬dom,html5原生支持的一種技術(shù))俱恶,noscript標(biāo)簽雹嗦,js中對(duì)dom的增刪改查各種操作。

基本的修改樣式的元素(font/color/strong/s/i/...)合是,這些再頁(yè)面項(xiàng)目中不推薦使用了罪,因?yàn)闃邮叫枰褂胏ss統(tǒng)一設(shè)置。不過(guò)再很多doc文檔注釋中聪全,可以使用這些泊藕。

以及需要了解xml中常用的一個(gè)標(biāo)記:<![CDATA[ ]]>。里面中括號(hào)中的內(nèi)容不會(huì)被解析器解析难礼,整體會(huì)作為純文本使用娃圆。

css基礎(chǔ)

scss:css的超集。還有sass蛾茉。css編寫更簡(jiǎn)單讼呢,可以用嵌套、變量等語(yǔ)法谦炬。

margin/padding/border/outline邊界樣式悦屏,box-shadow陰影樣式,color顏色樣式键思,background-背景樣式础爬,font字體樣式,animation動(dòng)畫樣式吼鳞,position/display結(jié)構(gòu)樣式看蚜,cursor鼠標(biāo)樣式,flex結(jié)構(gòu)樣式赔桌,height/width寬高樣式供炎,同理還有min-/max-最大最小寬高渴逻,@import導(dǎo)入不同css文件,"--"css變量音诫,align對(duì)齊樣式裸卫,字體過(guò)長(zhǎng)顯示樣式,line-height行高樣式纽竣,overflow*超出隱藏/滾動(dòng)條樣式墓贿,opacity透明度樣式,user-select選擇控制樣式蜓氨,visibility顯示隱藏樣式聋袋,z-index層疊順序樣式,pointer-events(可以忽略鼠標(biāo)事件)穴吹,

css選擇器幽勒,class選擇器、id選擇器港令、屬性選擇器啥容、多選選擇器、全選選擇器顷霹、選擇器偽類(:active咪惠、::after、::before淋淀、:checked遥昧、...),兄弟選擇器朵纷。

css函數(shù)炭臭,calc動(dòng)態(tài)計(jì)算值函數(shù),hsl顏色設(shè)置函數(shù)袍辞,var變量函數(shù)鞋仍,...。

瀏覽器安全字體搅吁,瀏覽器安全顏色威创。

字體單位:px、em似芝、rem那婉、%板甘、vw党瓮、vh

js基礎(chǔ)(JavaScript)

ECMAScript各個(gè)版本標(biāo)準(zhǔn)區(qū)別(核心是ES5和ES6),所有關(guān)鍵字用法盐类,單線程原理寞奸,setTimeout/setInterval協(xié)程呛谜,requestAnimationFrame(js動(dòng)畫/2d動(dòng)畫專用定時(shí)任務(wù)方法),閉包枪萄,根對(duì)象windows/global(node.js中是global)隐岛,XMLHttpRequest/fetch發(fā)http請(qǐng)求,Promise異步編程瓷翻,原型鏈(__proto__)聚凹,數(shù)據(jù)類型,Number最大安全數(shù)值齐帚,apply妒牙、call、bind改變this对妄,class相關(guān)語(yǔ)法糖(#私有屬性/方法湘今,constructor構(gòu)造方法,static屬性方法)剪菱,function方法摩瞎,new對(duì)象,var/let/const變量定義孝常,JSON類旗们,web work并發(fā),LocalStorage/SessionStorage存儲(chǔ)构灸,Cookie操作蚪拦,webDB,js反射冻押,js變量?jī)鼋Y(jié)驰贷,defineProperties/defineProperty屬性定義,Proxy對(duì)象代理洛巢,異常捕捉和自定義異常括袒,函數(shù)式編程,數(shù)組/Set/Map集合框架稿茉,時(shí)間日期對(duì)象Date锹锰,正則,BigInt漓库,import/export恃慧,await async語(yǔ)法糖,use strict嚴(yán)格模式渺蒿,==和===的區(qū)別以及==判斷原理(valueOf方法)痢士,方法對(duì)象toString,

Dom創(chuàng)建茂装、搜索怠蹂、銷毀善延、刪除、復(fù)制方法城侧。html5原生虛擬dom易遣。

各種瀏覽器事件:加載/關(guān)閉事件,鼠標(biāo)點(diǎn)擊移動(dòng)事件嫌佑,瀏覽器滾動(dòng)事件豆茫,拖拽事件,輸入/復(fù)制/粘貼事件屋摇,頁(yè)簽激活事件澜薄,動(dòng)畫執(zhí)行事件,...
onxxx設(shè)置事件和addEventListener設(shè)置事件的區(qū)別摊册,事件捕獲和冒泡肤京,阻止冒泡,

// 安全的使用requestAnimationFrame
window.requestAnimFrame = (function(){ 
   
  return  window.requestAnimationFrame       || 
          window.webkitRequestAnimationFrame || 
          window.mozRequestAnimationFrame    || 
          window.oRequestAnimationFrame      || 
          window.msRequestAnimationFrame     || 
          function( callback ){ 
   
            window.setTimeout(callback, 1000 / 60);
          };
})();

ts基礎(chǔ)(TypeScript)

class類茅特、interface接口忘分、enum枚舉、泛型(多條件限制泛型)白修,類/接口繼承妒峦,namespace命名空間,

js配套技術(shù)

  • vs code:前端項(xiàng)目開(kāi)發(fā)工具兵睛。(此外還有HBuilder肯骇,HBuilderX)
  • node.js:可以運(yùn)行js腳本的獨(dú)立引擎。(它讓一個(gè)腳本語(yǔ)言變成了一個(gè)獨(dú)立的編程語(yǔ)言)
  • jsdoc:js中類似javadoc的可以生成代碼文檔的工具
  • nw.js:node+瀏覽器結(jié)合祖很,非常好用的基于js語(yǔ)言的桌面應(yīng)用開(kāi)發(fā)工具
  • nwjc:nw.js中的一個(gè)工具笛丙,可以將js源代碼編譯成二進(jìn)制原生代碼,保護(hù)源代碼假颇。
  • electron:和nw.js功能基本一樣胚鸯,也是開(kāi)發(fā)桌面應(yīng)用的,了解不多笨鸡,但是感覺(jué)nw.js更容易上手jian'd

需要掌握/了解的前端框架

  • 前端核心js框架:vue(3+)姜钳、react
  • 前端核心體系框架:element-ui(element-plus)、bootstrap形耗、ace admin哥桥、uni-app(這個(gè)主要是開(kāi)發(fā)手機(jī)app的)
  • 前端項(xiàng)目管理/打包構(gòu)建框架:vite、webpack
  • 前端包管理框架:npm激涤、yarn拟糕、pnpm
  • js框架:jquery、axios、vue已卸、vuex、vue-router硼一、vue-uuid累澡、vue-i18n、codemirror般贼、lodash(非常好用的前端工具庫(kù))愧哟、json5(讓js支持json5標(biāo)準(zhǔn))、echarts(各種圖表框架)哼蛆、pixi(強(qiáng)大的canvas渲染引擎蕊梧,也可以用于做游戲)
  • jsDev框架:babel(將高版本的ES代碼轉(zhuǎn)換為低版本的ES代碼)、terser(js代碼壓縮工具)腮介、esbuild(新一代js代碼壓縮降低版本語(yǔ)法工具肥矢,可以徹底代替terser和babel)、obfuscator(js代碼混淆工具)
  • css框架:uno-css
  • 基于瀏覽器+node技術(shù)開(kāi)發(fā)桌面應(yīng)用的工具:nw.js
  • 一些舊的技術(shù):layer叠洗、layui

node中可以使用的一些特殊插件(也可以用于vite等工具構(gòu)建js項(xiàng)目)

  1. rollup-plugin-terser(可以用esbuild代替這個(gè)):js壓縮插件
  2. rollup-plugin-obfuscator:js混淆插件甘改,js代碼注入自我保護(hù)/自我防護(hù)邏輯。
  3. rollup/plugin-replace:js字符串替換插件(替換特定參數(shù)或敏感信息)
  4. rollup-plugin-strip:移出代碼中的調(diào)試語(yǔ)句灭抑,如console.log等十艾。

其他技術(shù):

  • jwt(代替token的另外一種認(rèn)知方式)
  • SSR 服務(wù)端渲染技術(shù),借助node.js服務(wù)端渲染好html直接返回(對(duì)SEO友好腾节,客戶端電腦性能影響也不大忘嫉,不存在剛進(jìn)入白屏的問(wèn)題)
  • SEO優(yōu)化(讓搜索引擎可以搜索到)

需要掌握/了解的瀏覽器技術(shù)

  • 瀏覽器:chrome、firefox案腺、IE庆冕。(其他瀏覽器基本都是基于chrome,如edge)
  • 查看網(wǎng)頁(yè)源代碼:Ctrl+U
  • 瀏覽器最大請(qǐng)求數(shù)量限制劈榨。瀏覽器頁(yè)面進(jìn)程查看愧杯。
  • 瀏覽器最小字體限制。
  • 幾種刷新模式的區(qū)別:F5鞋既、Ctrl+R力九、Ctrl+F5、鼠標(biāo)點(diǎn)左上角刷新
  • chrome擴(kuò)展開(kāi)發(fā)邑闺。(任意頁(yè)面注入任意css/js跌前,跨域請(qǐng)求)
  • windows下通過(guò)注冊(cè)注冊(cè)表實(shí)現(xiàn)自定義瀏覽器協(xié)議擴(kuò)展功能。
  • f12工具使用
    • console查看報(bào)錯(cuò)和執(zhí)行命令陡舅。
    • network分析請(qǐng)求接口:參數(shù)抵乓、返回值,頭信息,耗時(shí)灾炭,狀態(tài)茎芋,重發(fā)/復(fù)制請(qǐng)求信息等。
    • 瀏覽器ui性能分析
    • 瀏覽器內(nèi)存使用狀況查看
    • element節(jié)點(diǎn)查看蜈出、修改田弥、調(diào)試
    • js代碼加斷電,js變量debug修改铡原。
    • 屏蔽debug斷點(diǎn)偷厦、破解部分頁(yè)面功能限制。(如不讓復(fù)制燕刻,強(qiáng)制彈窗等)只泼。
  • 瀏覽器緩存
  • 瀏覽器跨域限制,iframe跨域限制卵洗,localStorage跨域限制请唱,http請(qǐng)求跨域限制,預(yù)檢請(qǐng)求过蹂。
  • https域下不允許發(fā)出http請(qǐng)求籍滴。
  • 公網(wǎng)ip域下不允許發(fā)起私網(wǎng)ip的請(qǐng)求。(至于哪一段是公網(wǎng)ip榴啸,哪一段是私網(wǎng)ip孽惰,這個(gè)是業(yè)內(nèi)約定俗成的,也是瀏覽器內(nèi)置好的鸥印,比如192.168.xxx就是私網(wǎng)ip段)
  • CDN(加快靜態(tài)資源獲妊Α)
  • 瀏覽器網(wǎng)絡(luò)代理
  • web auth:瀏覽器自帶的一種登錄方式,其他很多url也有類似的方式库说,比如:
    • http://user:pass@192.168.1.1:80/xxx
    • ftp://user:pass@host:port/xxx
    • tcp://user:pass@xxxxxx
    • ...

需要明白的常見(jiàn)http狀態(tài)碼

  • 101:協(xié)議轉(zhuǎn)換/正在請(qǐng)求中狂鞋。通常是websocket請(qǐng)求會(huì)見(jiàn)到。
  • 200:成功
  • 201:成功潜的。通常表示提交成功骚揍。
  • 204:服務(wù)器數(shù)據(jù)無(wú)變化,瀏覽器可以繼續(xù)使用舊的數(shù)據(jù)啰挪。
  • 301:永久get重定向
  • 302:臨時(shí)get重定向
  • 303:和302類似信不,可能是歷史遺留,只有語(yǔ)義上的區(qū)別亡呵,303更偏向于重定向到你要請(qǐng)求的資源的描述頁(yè)面抽活。
  • 304:資源自上次請(qǐng)求沒(méi)有變化,可以直接用瀏覽器緩存的锰什。
  • 307:臨時(shí)重定向下硕,保留原來(lái)的請(qǐng)求參數(shù)和請(qǐng)求方法丁逝。所以支持post重定向。
  • 308:永久重定向梭姓,保留原來(lái)的請(qǐng)求參數(shù)和請(qǐng)求方法霜幼。所以支持post重定向。
  • 400:通常表示參數(shù)錯(cuò)誤誉尖,請(qǐng)求無(wú)法被處理罪既。
  • 401:沒(méi)有指定用戶名密碼/需要登陸。
  • 403:沒(méi)有權(quán)限释牺。
  • 404:資源url不存在萝衩。
  • 405:請(qǐng)求方法不正確
  • 406:請(qǐng)求期望的accept和服務(wù)器返回的content-type不符回挽。
  • 407:代理服務(wù)器沒(méi)有登錄驗(yàn)證
  • 408:請(qǐng)求超時(shí)
  • 413:請(qǐng)求體太大没咙。
  • 414:請(qǐng)求url太長(zhǎng)。
  • 500:服務(wù)器遇到未知異常千劈。
  • 502:代理服務(wù)器正常祭刚,但是服務(wù)器掛了或者無(wú)法訪問(wèn)到。
  • 504:代理服務(wù)器正常墙牌,但是請(qǐng)求服務(wù)器超時(shí)涡驮。

需要明白的常用請(qǐng)求/響應(yīng)頭信息

content-type、content-encoding喜滨、content-length捉捅、accept、accept-language虽风、accept-encoding棒口、cookie、set-cookie辜膝、referer无牵、user-agent、Authorization厂抖、cache-control茎毁、etag、last-modified忱辅、date七蜘、server、transfer-encoding墙懂、connection崔梗、host、Referrer-Policy垒在、upgrade:websocket蒜魄、

origin扔亥、access-control-allow-origin、Access-Control-Request-Method谈为、Access-Control-Request-Headers旅挤、access-control-allow-credentials、

x-csrf-token

需要掌握的web安全問(wèn)題

【安全漏洞】

  • XXE
  • XSS(前端別用不安全的動(dòng)態(tài)參數(shù)生成html伞鲫,富文本是比較容易出問(wèn)題的地方粘茄,建議直接用markdown)
  • CSRF(csrf token解決方案)
  • SSRF(這個(gè)現(xiàn)在基本沒(méi)有了,文件服務(wù)的文件沒(méi)有人會(huì)去寫執(zhí)行的邏輯秕脓,而且也不會(huì)放在項(xiàng)目部署目錄下了)
  • SQL注入(預(yù)編譯處理)柒瓣,對(duì)于模糊搜索注入可以堆'%'和'_'等字符做轉(zhuǎn)義。
  • 點(diǎn)擊劫持
  • css注入(重要請(qǐng)求別用get方法)
  • ddos/tcp半連接(防火墻層面做配置)
  • 防代理(代理檢測(cè)吠架,安全https芙贫,雙向認(rèn)證https)

【網(wǎng)絡(luò)安全】

  • 屏蔽不需要開(kāi)放的端口
  • 接口返回值去掉服務(wù)器版本號(hào),或者給一個(gè)錯(cuò)誤的版本號(hào)傍药。
  • 修改所有默認(rèn)錯(cuò)誤頁(yè)面和錯(cuò)誤返回值磺平。
  • 防火墻配置禁止ICMP協(xié)議。

SSO

SSO(SingleSignOn)是一種單點(diǎn)登錄認(rèn)證中心技術(shù)的簡(jiǎn)稱拐辽。主要目的是為了解決多個(gè)項(xiàng)目統(tǒng)一登陸認(rèn)證的問(wèn)題拣挪。

這里面還涉及到一個(gè)概念是CAS,這里容易搞混俱诸。因?yàn)樽孕i也叫CAS菠劝。不過(guò)這里的CAS是指(Central Authentication Service)中央認(rèn)證服務(wù)器。

CAS有很多現(xiàn)成的框架睁搭。其本質(zhì)的原理是:

  1. 訪問(wèn)任何一個(gè)服務(wù)器前需要判斷是否存在用戶token赶诊,如果沒(méi)有則跳轉(zhuǎn)到認(rèn)證中心服務(wù)器頁(yè)面進(jìn)行登錄。
  2. CAS服務(wù)器負(fù)責(zé)管理用戶信息和授權(quán)信息介袜,并提供登陸頁(yè)面進(jìn)行登錄甫何。
  3. 服務(wù)器跳轉(zhuǎn)到CAS頁(yè)面的時(shí)候,需要攜帶一個(gè)redirectUrl遇伞,表示登陸成功后跳回哪里辙喂。
  4. CAS登錄完成后,CAS會(huì)返回給客戶一個(gè)cookie(或者屬于CAS自己的token鸠珠,為了和后面的token區(qū)分開(kāi)巍耗,這里就說(shuō)cookie把),這樣之后再訪問(wèn)CAS頁(yè)面渐排,因?yàn)閏ookie存在炬太,說(shuō)明已經(jīng)登陸過(guò)就不用再登陸了。
  5. 之后CAS服務(wù)器內(nèi)部會(huì)生成一個(gè)生命周期非常短(可能就幾秒或者幾分鐘)驯耻,并且只能讀取一次(第二次讀取就是失效了)的token亲族。同時(shí)CAS服務(wù)器需要重定向到原服務(wù)器炒考。
  • 這里重定向是一個(gè)安全難點(diǎn),重定向有post和get兩種方式霎迫,因?yàn)橹囟ㄏ蜻^(guò)去的時(shí)候需要帶上token斋枢。
  • post需要返回一個(gè)頁(yè)面,頁(yè)面存在一個(gè)form表單知给,token就是表單參數(shù)瓤帚,返回后js觸發(fā)自動(dòng)提交然后進(jìn)行post重定向,重定向到原始頁(yè)面涩赢,提交這個(gè)表單信息戈次。
  • get則是直接302重定向,但是這會(huì)導(dǎo)致token必須出現(xiàn)在url上筒扒。所以最好使用https怯邪。(由于token是一次性的臨時(shí)token,所以被人看到影響不大霎肯,但是被程序截取可能會(huì)提前一步登錄導(dǎo)致安全危險(xiǎn))
  1. 原服務(wù)器拿到token后搞乏,在服務(wù)器后臺(tái)發(fā)起一個(gè)請(qǐng)求直接請(qǐng)求CAS服務(wù)器驗(yàn)證token的有效性羞反,同時(shí)拿到用戶的信息和授權(quán)信息。(這個(gè)過(guò)程是不經(jīng)過(guò)客戶端的)
  2. 之后token就失效了卵贱,也可以理解為CAS服務(wù)器就和原服務(wù)器沒(méi)有關(guān)系了驮俗,CAS掛了都不影響懂缕。此時(shí)原服務(wù)器拿到用戶信息后,需要自己緩存redis等緩存數(shù)據(jù)庫(kù)王凑,同時(shí)自己生成一個(gè)新的cookie/token返回給前端搪柑,之后就可以正常使用了。
  3. 之后如果再有其他服務(wù)器要登陸索烹,跳轉(zhuǎn)到CAS登錄頁(yè)面后工碾,因?yàn)橐呀?jīng)登陸過(guò)了,所以直接從第五步繼續(xù)自動(dòng)執(zhí)行百姓,就成功登錄了渊额。
  4. 至于用戶中心如何可以知道一個(gè)用戶能夠擁有哪些權(quán)限,這就需要服務(wù)器對(duì)接CAS中心垒拢,將自己的權(quán)限列表同步給CAS服務(wù)器旬迹。管理人員就可以在CAS管理界面中進(jìn)行用戶權(quán)限配置了。

不過(guò)CAS技術(shù)還有一些變體求类,因?yàn)樯婕暗揭恍﹩?wèn)題奔垦,如:

  • 只能統(tǒng)一登陸,不能統(tǒng)一登出尸疆。
  • 即使登陸過(guò)了椿猎,訪問(wèn)其他系統(tǒng)時(shí)依然要跳轉(zhuǎn)CAS頁(yè)面惶岭,不方便。

變體一(cookie+域名版):

  • 使用域名技術(shù)簡(jiǎn)化統(tǒng)一登陸:認(rèn)證中心服務(wù)器的域名是頂級(jí)域名犯眠,如abc.com俗他。其他所有子服務(wù)器都是子域名,如a.abc.com阔逼、b.abc.com兆衅。
  • 認(rèn)知token使用cookie技術(shù),而不要用jwt嗜浮。cookie的一個(gè)特點(diǎn)是羡亩,在訪問(wèn)子域名服務(wù)器的時(shí)候,父域名上的cookie也會(huì)一起帶上危融。所以只要所有服務(wù)器在后臺(tái)使用統(tǒng)一的redis或者其他用戶緩存數(shù)據(jù)庫(kù)畏铆,那么只要父域名一登陸,子域名自動(dòng)就有cookie了吉殃。(不用域名用ip的話不同服務(wù)器之間cookie是不能共享的)

需要掌握的其他相關(guān)編程技術(shù)

布隆過(guò)濾器

TODO(可以過(guò)濾掉大量無(wú)意義的請(qǐng)求避免)

linux基礎(chǔ)/運(yùn)維相關(guān)技術(shù)

arm32辞居、arm64操作系統(tǒng)和x86、x86_64操作系統(tǒng)
ETL(數(shù)據(jù)庫(kù)數(shù)據(jù)抽取轉(zhuǎn)換工具)蛋勺、shell腳本瓦灶、linux ip配置、dns技術(shù)抱完、防火墻配置(uwf)贼陶、電腦路由表配置(route)、服務(wù)器時(shí)間同步巧娱、文件系統(tǒng)(ext3碉怔、ext4、FAT禁添、NTFS撮胧、...)、linux定時(shí)任務(wù)(crontab)老翘、查看linux版本芹啥、查看cpu核數(shù)/使用情況、查看內(nèi)存使用情況酪捡、查看io使用情況(iotop)叁征。rpm包安裝,deb包安裝逛薇。yum捺疼、apt/apt-get包安裝工具。

常用linux命令/shell語(yǔ)句:
apt永罚、apt-get啤呼、alias卧秘、awk
bash
cd、cp官扣、cat翅敌、clear、curl惕蹄、chattr蚯涮、chown、chmod卖陵、chgrp遭顶、cron、crontab
docker泪蔫、docker-compose棒旗、date、dpkg撩荣、du铣揉、df
echo
free、find餐曹、ftp逛拱、file、fdisk(硬盤格式化命令)
gpasswd凸主、grep橘券、git
history额湘、head卿吐、help、hostname
ifconfig锋华、ifup嗡官、ifdown
jobs
kill、killall
ls毯焕、ln衍腥、less、ll纳猫、lsattr婆咸、lsof、lsblk
mv芜辕、more尚骄、make、mkdir侵续、md5sum倔丈、man憨闰、mount/umount
netstat、ntpd需五、nvidia-smi
ping鹉动、passwd、ps宏邮、pwd
route泽示、reboot、rm蜜氨、rpm
sudo边琉、su、sh记劝、ssh变姨、source、shutdown厌丑、systemctl(centos下是service)定欧、scp、sed
tar怒竿、top砍鸠、tail、touch耕驰、telnet爷辱、tty、traceroute朦肘、tracepath
uname饭弓、users、useradd媒抠、userdel弟断、ufw
vi、vim
wget趴生、watch阀趴、who、whoami苍匆、wc
yum
zip/unzip


  • 管道:xxx | xxx刘急。例如 cat x | grep xx
  • 重定向:
    • xxx > a:標(biāo)準(zhǔn)輸出重定向
    • xxx 2> a:標(biāo)準(zhǔn)錯(cuò)誤輸出重定向
    • xxx > a 2>1:讓標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出
    • xxx > /dev/null:/dev/null是一個(gè)固定路徑文件,表示將輸出重定向到虛無(wú)浸踩,就是丟棄的意思叔汁。
    • xxx < xxx:標(biāo)準(zhǔn)輸入重定向,將一個(gè)文件輸入到左側(cè)命令作為輸入
    • xxx <<< "xx":將右側(cè)的字符串作為左側(cè)的輸入?yún)?shù)輸入
    • xxx >> a:雙箭頭表示在原來(lái)的內(nèi)容基礎(chǔ)上累加,單箭頭表示完全覆蓋原有內(nèi)容攻柠。
  • `xxx`:執(zhí)行一段命令球订。例如xxx <<< cat a等同于 xxx < a
  • echo $xxx:輸出一個(gè)環(huán)境變量,環(huán)境變量key前面要帶上“$”
  • echo $?:輸出上一個(gè)命令的返回狀態(tài)碼瑰钮,0是成功冒滩,其他都是失敗。

需要了解的windows cmd命令/bat語(yǔ)句

cd浪谴、call开睡、cls、copy
dir苟耻、date篇恒、del
echo、exit
goto
help
mkdir凶杖、move
path胁艰、pwd
rd、rename
set智蝠、shutdown腾么、start
tracert、tree杈湾、type


管道解虱、重定向邏輯和linux shell基本一致。

  • 但是如果要重定向到虛無(wú)漆撞,需要使用關(guān)鍵字NUL殴泰。如echo a > NUL 2>&1
  • echo %xxx%:輸出一個(gè)環(huán)境變量,環(huán)境變量key前后都要帶上“%”

需要詳細(xì)了解的協(xié)議/格式

  • 網(wǎng)絡(luò)協(xié)議:http(s)1.1浮驳、http(s)2.0悍汛、http(s)3.0、websocket(ws)抹恳,wss(websocket加密協(xié)議)员凝,ftp,sftp奋献,TCP,UDP旺上,ICMP瓶蚂。
  • 視頻格式:flv、mp4宣吱、h264窃这、h265
  • 圖片格式:png、jpg征候、gif杭攻、ico祟敛、svg
  • 其他數(shù)據(jù)傳輸協(xié)議:protobuf(google搞得高性能傳輸協(xié)議,基于提前代碼生成的技術(shù)實(shí)現(xiàn)兆解,支持多種語(yǔ)言馆铁,需要編寫proto協(xié)議文件,使用起來(lái)比較復(fù)雜)

【https協(xié)議部分原理】
首先RSA加解密速度很慢锅睛,所以https都是先用RSA來(lái)協(xié)商一個(gè)密鑰埠巨,然后再使用這個(gè)密鑰+對(duì)稱加密算法來(lái)做后續(xù)傳輸加解密。
網(wǎng)站自己首先有一個(gè)私鑰信息现拒,公鑰信息存儲(chǔ)在證書里辣垒,證書有時(shí)間限制避免時(shí)間太久被暴力破解,同時(shí)為了避免私法不安全證書印蔬,或者代理服務(wù)器偽造證書勋桶,必須聯(lián)網(wǎng)認(rèn)證,只有固定的幾個(gè)CA機(jī)構(gòu)頒發(fā)的整數(shù)侥猬,才是合理的哥遮。操作系統(tǒng)內(nèi)置了一些根證書來(lái)驗(yàn)證合法性。
公鑰證書是公開(kāi)的陵究,會(huì)發(fā)給所有訪問(wèn)者眠饮,訪問(wèn)者需要使用公鑰加密,然后服務(wù)器拿到后用私鑰解密铜邮。首先協(xié)商一個(gè)密鑰仪召,這個(gè)密鑰用RSA加密傳輸,兩邊都拿到后松蒜,后續(xù)再協(xié)商一個(gè)都支持的最好的堆成加密算法扔茅,然后用這個(gè)密鑰進(jìn)行后續(xù)內(nèi)容加解密。
對(duì)于雙向認(rèn)知https來(lái)說(shuō)秸苗,公鑰私鑰都不會(huì)傳輸召娜,只有兩邊各自才知道。一般客戶端是以類似U盤的外設(shè)需要插入電腦才可以訪問(wèn)特定網(wǎng)頁(yè)惊楼。此時(shí)客戶端發(fā)消息使用客戶端的公鑰加密玖瘸,服務(wù)的的私鑰解密。服務(wù)端返回消息用服務(wù)端公鑰加密檀咙,客戶端私鑰解密雅倒。

需要知道的加密/hash算法

  • 對(duì)稱加密算法:AES、DES
    • 加密模式:ECB弧可,CBC蔑匣,PCBC,CTS,CTR裁良,OFB凿将,CFB
    • 填充模式:PKCS5Padding,ZerosPadding价脾,NoPadding牧抵,ISO10126Padding
    • 密鑰長(zhǎng)度:DES(56位)、AES(128位彼棍、192位灭忠、256位)
  • 非對(duì)稱加密算法:RSA
  • hash散列算法:hash、cityhash座硕、md5弛作、sha1、sha256

需要知道的壓縮算法

  • zip
  • rar4/5
  • zlib
  • gzip
  • deflate
  • LZ4(好像是速度最快的)
  • zstd
  • 7z
  • tar(這個(gè)只是合并打包华匾,不含壓縮)
  • iso

需要了解的操作系統(tǒng)

  • Windows映琳、Windows Server
  • Linux:CentOS、RedHat蜘拉、Ubuntu萨西、Alpine(超輕量級(jí)linux框架,不到10mb旭旭,一般使用做docker鏡像制作)
    還有shell腳本
  • Windows:bat腳本
  • Linux:sh/bat腳本

linux連接工具:xshell谎脯、putty
文件傳輸工具:scp、winscp持寄、xftp

需要掌握的虛擬機(jī)工具

Oracle VM VirtualBox:免費(fèi)開(kāi)源的虛擬機(jī)軟件源梭。
VMware:收費(fèi)的虛擬機(jī)軟件


其他需要了解的技術(shù)
VMwareTools:可以讓vmware虛擬機(jī)和宿主機(jī)交互更方便,比如可以直接拖拽文件進(jìn)來(lái)或出去稍味。


其他可以了解的沙盒軟件
sandbox废麻、360隔離沙箱、影子系統(tǒng)模庐、冰點(diǎn)還原精靈

需要了解/掌握的國(guó)產(chǎn)化技術(shù)

  • 數(shù)據(jù)庫(kù):達(dá)夢(mèng)數(shù)據(jù)庫(kù)dm烛愧,人大金倉(cāng)數(shù)據(jù)庫(kù)。

需要了解到交換機(jī)/路由器/路由技術(shù)

  • 路由表(路由器有掂碱,每個(gè)電腦自己也有怜姿。設(shè)置路由表可以讓電腦知道在請(qǐng)求哪個(gè)ip的時(shí)候走哪個(gè)網(wǎng)卡)
  • 路由器、三層交換機(jī)
  • 交換機(jī)廣播顶吮、交換機(jī)vlan
  • 局域網(wǎng)安全問(wèn)題

需要掌握的配置文件格式

properties社牲,yml,json悴了,xml

需要知道的文檔語(yǔ)法

markdown(markdown編輯工具一般前端開(kāi)發(fā)工具都支持,也可以用獨(dú)立的typora或marktext(推薦這個(gè)))

需要掌握的其他軟件、技術(shù)湃交、工具

  • 高級(jí)記事本(文本編輯器):editplus熟空、notepad++
  • http請(qǐng)求工具:postman、(瀏覽器里的XMHttpRequest和fetch)
  • 接口測(cè)試/壓測(cè)工具:jmeter
  • 產(chǎn)品原型設(shè)計(jì)工具:Axure
  • 視頻播放器(比f(wàn)fmpeg容錯(cuò)性更好):vlc搞莺,格式工廠播放器
  • 遠(yuǎn)程電腦連接工具:todesk息罗、向日葵、teamviewer
  • 郵件收發(fā)工具:foxmail
  • 企業(yè)微信群可以創(chuàng)建機(jī)器人才沧,機(jī)器人關(guān)聯(lián)一個(gè)url迈喉,給這個(gè)url發(fā)請(qǐng)求可以在微信群里用機(jī)器人發(fā)消息。(如jenkins有個(gè)插件可以配合企業(yè)微信機(jī)器人可以發(fā)部署信息)
  • 接口文檔工具:yapi温圆、showdoc
  • 項(xiàng)目挨摸、bug管理工具:禪道
  • 企業(yè)文檔/項(xiàng)目跟蹤管理工具:confluence、jira
  • 企業(yè)私有代碼倉(cāng)庫(kù)管理:gitlab
  • 內(nèi)網(wǎng)聊天工具:飛秋
  • windows下的抓包工具:Fiddler(http岁歉,可以模擬中間人攻擊抓包https)得运,wireshark(抓更底層的網(wǎng)絡(luò)協(xié)議包)
  • 進(jìn)程監(jiān)控器:Procmon64
  • cpu負(fù)載、溫度查看工具:Core Temp

需要明白的其他概念

  • 小端序和大端序的區(qū)別锅移。例如int轉(zhuǎn)byte熔掺,數(shù)字int32的16,小端序是[16,0,0,0]非剃,大端序是[0,0,0,16]
  • 編碼:GBK置逻、GB2312、ISO8859-1备绽、UTF8券坞、UTF16、UTF32疯坤、UTF8+bom报慕、UnicodeBig (BE/LE)
  • vpn
  • 正向代理、反向代理區(qū)別压怠。
  • groovy眠冈、kotlin是java語(yǔ)言的變種,編譯的文件也可以在jvm上運(yùn)行菌瘫。
  • 協(xié)程蜗顽、線程、進(jìn)程的區(qū)別雨让。
  • pdf文本域雇盖,可以用來(lái)作為pdf模板參數(shù)使用。(sejda是一個(gè)免費(fèi)在線可以編輯pdf的網(wǎng)站)
  • AoS(數(shù)組結(jié)構(gòu)體)栖忠、SoA(結(jié)構(gòu)體數(shù)組)

已經(jīng)遺忘了的技術(shù)

tag:這些要么是已經(jīng)廢棄的技術(shù)崔挖,要么是好久不用已經(jīng)忘了

  • JSP贸街、EL/JSTL
  • jsonp(前后端分離了,這個(gè)不需要了)
  • jfinal狸相、DWR(我覺(jué)得現(xiàn)在應(yīng)該沒(méi)人用這個(gè)了吧)
  • hibernate(現(xiàn)在是直接用jpa了薛匪,思路是類似的)
  • struct
  • layerui(作者自己也放棄了)
  • IE8(已經(jīng)不需要再兼容了,這個(gè)曾經(jīng)被客戶廣泛使用的早就過(guò)期的瀏覽器)
  • dubbo(feign可讀性更好脓鹃,也更容易做日志)
  • java遠(yuǎn)程方法調(diào)用開(kāi)發(fā)體系發(fā)展過(guò)程:CORBA逸尖、JAVA RMI、EJB瘸右、WebService(有些地方還在用)娇跟、AXIS->XFire->CXF、SOA太颤、Dubbo苞俘、Feign。
  • DB2(主要是沒(méi)機(jī)會(huì)用到)

其他一些奇怪的編程界知識(shí)

  • redis端口號(hào)是6379是因?yàn)?379在手機(jī)按鍵上對(duì)應(yīng)MERZ栋齿,MERZ是意大利歌女Alessia Merz的名字苗胀,作者不喜歡他所以用了6379。
  • oracle創(chuàng)始人之一scott家里養(yǎng)了一只貓瓦堵,貓的名字叫tiger基协。所以oracle數(shù)據(jù)庫(kù)scott賬戶默認(rèn)密碼是tiger。
  • Java5版本名字是tiger版菇用,因?yàn)樵O(shè)計(jì)師詹姆斯高斯林家里養(yǎng)了一只真的大老虎澜驮。
  • Java創(chuàng)始人是詹姆斯高斯林。
  • java火了之后微軟設(shè)計(jì)了一套J++語(yǔ)言惋鸥,但是被sun公司高侵權(quán)杂穷,最后改成了c#。
  • Java原本要被IBM收購(gòu)卦绣,但是不知道因?yàn)槭裁醋詈蟊籵racle的拉里埃里森給快速收購(gòu)了耐量。
  • oracle核心創(chuàng)始人拉里埃里森早期一直在對(duì)標(biāo)微軟,用oracle對(duì)抗sql server滤港,定制化ERP/CRM對(duì)抗office廊蜒,linux/unix對(duì)抗window server,收購(gòu)SUN獲得java對(duì)抗.net溅漾。收購(gòu)BEA獲得weblogic對(duì)抗IIS山叮。
  • MySQL和MariaDB數(shù)據(jù)庫(kù)的創(chuàng)始人給自己開(kāi)發(fā)的兩數(shù)據(jù)庫(kù)起這個(gè)名字是因?yàn)樗袃蓚€(gè)女兒,一個(gè)叫My一個(gè)叫Maria添履。
  • 由于mysql被sun公司收購(gòu)后長(zhǎng)期保持不更新屁倔,所以原作者很生氣繼續(xù)開(kāi)發(fā)了mariadb。
  • 比爾蓋茨退學(xué)是因?yàn)樽プ×艘粋€(gè)創(chuàng)業(yè)的機(jī)會(huì)暮胧。1974年左右锐借,intel推出了微處理器问麸,愛(ài)德華羅伯茨(PC之父)制作出了第一個(gè)個(gè)人電腦。比爾蓋茨和他的朋友保羅一人連夜編寫了一段軟件代碼瞎饲,另一個(gè)人坐飛機(jī)前去口叙,最后他們的代碼成功在上面運(yùn)行炼绘,之后他們便退學(xué)開(kāi)始專門為PC開(kāi)發(fā)軟件嗅战。
  • IBM發(fā)表了一個(gè)《關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)》的論文,oracle幾個(gè)創(chuàng)始人抓住機(jī)會(huì)創(chuàng)辦了oracle開(kāi)發(fā)了oracle數(shù)據(jù)庫(kù)俺亮。后來(lái)微軟開(kāi)發(fā)了sqlserver驮捍,IBM開(kāi)發(fā)了DB2。
  • scott因?yàn)殄X分配問(wèn)題不滿脚曾,后來(lái)退出了oracle东且。退出后自己用java開(kāi)發(fā)了pointbase數(shù)據(jù)庫(kù),但是這個(gè)數(shù)據(jù)庫(kù)沒(méi)有太好的發(fā)展空間本讥。后來(lái)和BEA公司合作珊泳,但是BEA后來(lái)被oracle收購(gòu)了,所以pointbase數(shù)據(jù)庫(kù)也就沒(méi)啥發(fā)展了拷沸。
  • webshpere是IBM的色查,weblogic一開(kāi)始是BEA的,后來(lái)被oracle收購(gòu)變成oracle的了撞芍。
  • oracle從12C版本開(kāi)始推出云服務(wù)秧了,并在鋼鐵俠3中植入廣告,一段臺(tái)詞是“啟動(dòng)oracle云服務(wù)”序无。
  • sun最初設(shè)計(jì)java語(yǔ)言是為了方便開(kāi)發(fā)嵌入式程序验毡,例如遠(yuǎn)程操控家電產(chǎn)品。
  • 林納斯開(kāi)發(fā)git是為了管理自己的linux項(xiàng)目帝嗡。
  • 第一個(gè)瀏覽器Netscape是由網(wǎng)景公司開(kāi)發(fā)晶通,這個(gè)公司依靠瀏覽器在短短幾個(gè)月就成功上市。此時(shí)的瀏覽器還需要錢哟玷。微軟為了與之競(jìng)爭(zhēng)反編譯瀏覽器進(jìn)行研究狮辽,自己開(kāi)發(fā)了一個(gè)IE瀏覽器并且免費(fèi)嵌入window操作系統(tǒng)。Netscape后來(lái)衰落最終變成了firefox碗降。
  • 網(wǎng)景公司最初和sun公司合作隘竭,設(shè)計(jì)了javascript腳本語(yǔ)言,為的是乘上java這股熱浪讼渊,同時(shí)javascript語(yǔ)法也參考了java語(yǔ)言的設(shè)計(jì)动看。
  • javascript誕生之初是為了將一些邏輯放到客戶端去執(zhí)行,減少服務(wù)器的壓力爪幻。
  • 以前google在國(guó)內(nèi)還可以用的時(shí)候菱皆,google.com域名大家記不住须误,但是可以記住baidu.com,所以google后來(lái)也搞了一個(gè)新域名叫g(shù)uge.cn仇轻。
  • 早在dos操作系統(tǒng)時(shí)代京痢,微軟就開(kāi)發(fā)了word軟件。甚至支持在dos中執(zhí)行如今word中能看到的很多操作篷店,甚至是打印預(yù)覽祭椰。
  • 惠普公司HP名字的來(lái)源是兩個(gè)創(chuàng)始人:休利特、帕卡德疲陕。簡(jiǎn)稱HP方淤。
  • 惠普公司最早是建在一個(gè)車庫(kù)里。
  • 惠普公司有一個(gè)人是沃茲尼亞克蹄殃,也自己研發(fā)出了一種個(gè)人電腦携茂,但是惠普公司并沒(méi)有獲得專利。后來(lái)沃茲尼亞克和喬布斯合作诅岩,創(chuàng)辦蘋果公司讳苦,開(kāi)發(fā)出了AppleII型電腦。
  • 蘋果公司的喬布斯曾經(jīng)從百事可樂(lè)挖了一個(gè)高管過(guò)來(lái)吩谦,但是因?yàn)槊芴嘧詈髮?dǎo)致喬布斯被迫離開(kāi)蘋果鸳谜。喬布斯離開(kāi)后蘋果公司開(kāi)始衰敗,喬布斯走的時(shí)候也帶走了大量核心員工逮京,并創(chuàng)辦了NeXT公司卿堂,后來(lái)Apple收購(gòu)了蘋果喬布斯就又回到了平臺(tái)。后來(lái)蘋果公司面臨破產(chǎn)懒棉,喬布斯說(shuō)服了比爾蓋茨給蘋果公司一筆投資讓蘋果公司活了過(guò)來(lái)草描,最后蘋果公司創(chuàng)造出了mac、iphone策严、appstore等產(chǎn)品穗慕。
  • bug之所以叫bug,是因?yàn)樽钤绲挠?jì)算機(jī)非常大妻导,線路很粗逛绵,甚至可以鉆進(jìn)去蟲子,而有一次故障就是鉆進(jìn)去了一個(gè)蟲子倔韭,所以才叫做bug术浪。
  • oracle收購(gòu)java后開(kāi)始搞各種版權(quán)收費(fèi),針對(duì)google貌似比較多寿酌,可能是因?yàn)檫@個(gè)原因胰苏,google的android架構(gòu)從java換成了Kotlin。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末醇疼,一起剝皮案震驚了整個(gè)濱河市硕并,隨后出現(xiàn)的幾起案子法焰,更是在濱河造成了極大的恐慌,老刑警劉巖倔毙,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埃仪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡陕赃,警方通過(guò)查閱死者的電腦和手機(jī)卵蛉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凯正,“玉大人毙玻,你說(shuō)我怎么就攤上這事±壬ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵梧疲,是天一觀的道長(zhǎng)允睹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)幌氮,這世上最難降的妖魔是什么缭受? 我笑而不...
    開(kāi)封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮该互,結(jié)果婚禮上米者,老公的妹妹穿的比我還像新娘。我一直安慰自己宇智,他們只是感情好蔓搞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著随橘,像睡著了一般喂分。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上机蔗,一...
    開(kāi)封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天蒲祈,我揣著相機(jī)與錄音,去河邊找鬼萝嘁。 笑死梆掸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的牙言。 我是一名探鬼主播酸钦,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嬉挡!你這毒婦竟也來(lái)了钝鸽?” 一聲冷哼從身側(cè)響起汇恤,我...
    開(kāi)封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拔恰,沒(méi)想到半個(gè)月后因谎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颜懊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年财岔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片河爹。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匠璧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咸这,到底是詐尸還是另有隱情夷恍,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布媳维,位于F島的核電站酿雪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侄刽。R本人自食惡果不足惜指黎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望州丹。 院中可真熱鬧醋安,春花似錦、人聲如沸墓毒。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蚁鳖。三九已至磺芭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間醉箕,已是汗流浹背钾腺。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讥裤,地道東北人放棒。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像己英,于是被迫代替她去往敵國(guó)和親间螟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容