一、網(wǎng)站加載概述面試過(guò)程中,常常遇到這樣一道面試題,輸入U(xiǎn)RL到頁(yè)面加載完畢,瀏覽器做了哪些工作?首先輸入一個(gè)URL,你會(huì)看到瀏覽器上面的標(biāo)簽頁(yè)出現(xiàn)了一個(gè)loading圖標(biāo),開(kāi)始時(shí)是逆時(shí)針旋轉(zhuǎn),接著順時(shí)針旋轉(zhuǎn),當(dāng)前頁(yè)面消失,顯示我們常說(shuō)的空白頁(yè)面,接著...
一、前言該過(guò)程中用到的技術(shù)棧git gitlab shell需要提前準(zhǔn)備的內(nèi)容一個(gè)項(xiàng)目myweb本機(jī)安裝Git一個(gè)Gitlab倉(cāng)庫(kù)docker私有倉(cāng)庫(kù)gitlab runner(Gitlab-runner)公司的代碼一般都保存在私有化部署的Gitlab,要使用Gitlab的CI/CD,需要Gitlab版本>8.0.0CI/CD雖然不難,...
前言前端部署服務(wù)器,需要經(jīng)過(guò)打包、遷移、部署、回退操作,如果每次都手動(dòng)處理,那么容易出錯(cuò)還浪費(fèi)時(shí)間,自動(dòng)化部署又比較復(fù)雜,那么選擇shell腳本做自動(dòng)化,也是一個(gè)不錯(cuò)的選擇,具體實(shí)現(xiàn)如下:項(xiàng)目環(huán)境執(zhí)行自動(dòng)化構(gòu)建的前端項(xiàng)目myweb項(xiàng)目通過(guò)命令構(gòu)建測(cè)試...
一、什么是CI/CDCI 持續(xù)集成CD 持續(xù)交付CI/CD就是在開(kāi)發(fā)階段,通過(guò)自動(dòng)化發(fā)布,來(lái)頻繁部署應(yīng)用的一種方式二、為什么要配置CI/CD想象一下,一個(gè)項(xiàng)目的發(fā)布如果手動(dòng)部署,需要的操作有:?jiǎn)卧獪y(cè)試打包文件上傳服務(wù)器等等如果每個(gè)過(guò)程都需要手動(dòng)執(zhí)行,每次都要保...
一、前言保持線上項(xiàng)目穩(wěn)定運(yùn)行是很重要的,為了達(dá)到服務(wù)可用性在99.9%,也為了減少開(kāi)發(fā)人員在項(xiàng)目部署時(shí)耗費(fèi)大量精力,可以嘗試自動(dòng)化發(fā)布自動(dòng)化部署涉及到的配置比較多,每個(gè)環(huán)節(jié)需要掌握的知識(shí)也不同,所以分開(kāi)寫(xiě)該過(guò)程中用到的技術(shù)棧webpack docker nginx ...
背景:在開(kāi)發(fā)移動(dòng)端內(nèi)部應(yīng)用的時(shí)候,涉及安全問(wèn)題,我們經(jīng)常在企業(yè)微信或者圖片上看到水印,防止信息被泄露,針對(duì)這次開(kāi)發(fā)做個(gè)復(fù)盤,記錄下。效果圖如下: 一、實(shí)現(xiàn)原理1、首先用canvas繪制水印2、創(chuàng)建蒙層div,可以覆蓋在頁(yè)面上,并設(shè)置pointer-events:none...
背景:在開(kāi)發(fā)移動(dòng)端內(nèi)部應(yīng)用的時(shí)候,涉及安全問(wèn)題,我們經(jīng)常在企業(yè)微信或者圖片上看到水印,防止信息被泄露,針對(duì)這次開(kāi)發(fā)做個(gè)復(fù)盤,記錄下。效果圖如下: 一、實(shí)現(xiàn)原理1、首先用canvas繪制水印2、創(chuàng)建蒙層div,可以覆蓋在頁(yè)面上,并設(shè)置pointer-events:none...
一、項(xiàng)目背景前端項(xiàng)目開(kāi)發(fā)一個(gè)模塊,上線前需要灰度一部分用戶,實(shí)現(xiàn)一個(gè)臨時(shí)的灰度方案。現(xiàn)有項(xiàng)目狀況:一個(gè)前端項(xiàng)目1.0.0版本后端服務(wù)1.0.0版本后端灰度服務(wù)2.0.0版本一個(gè)域名解析到前端服務(wù)80、443端口前端通過(guò)nginx轉(zhuǎn)發(fā)靜態(tài)文件1、實(shí)現(xiàn)原理1、打包一份前...
現(xiàn)象:在前端開(kāi)發(fā)中,發(fā)現(xiàn)項(xiàng)目中很多路徑引入都是相對(duì)路徑,出現(xiàn)很多類似importapifrom"../../../api/test"import*asapifrom"../../../api"復(fù)制代碼這樣會(huì)導(dǎo)致文件引用的時(shí)候,需要計(jì)算層級(jí),拖慢開(kāi)發(fā)速度,解決方法如下:對(duì)于經(jīng)常使用的目錄,可以采用別名的...
小編寫(xiě)這篇文章的主要目的,主要是給大家做出一個(gè)講解,講解的內(nèi)容就是關(guān)于Python3中,出現(xiàn)了問(wèn)題該怎么樣去進(jìn)行解答。包括出現(xiàn)SyntaxError:unexpected EOF while parsin這個(gè)問(wèn)題要怎么做,下面給大家詳細(xì)解答一下?! ython錯(cuò)誤SyntaxError:unexpected...
對(duì)于很多Python從業(yè)者來(lái)說(shuō),要怎么才能夠進(jìn)階呢?那就是要多閱讀一些書(shū)籍多去找一些資料,然后去進(jìn)行閱讀。那么,怎么利用python里面的turlte來(lái)繪制圖形的實(shí)例代碼呢?下面小編就給大家詳細(xì)解答下?! ?.圖1 如下圖所示,下面圖是由拼接而成的,感興...
什么時(shí)候需要使用架構(gòu)原則?1:架構(gòu)設(shè)計(jì)2:項(xiàng)目驗(yàn)收總結(jié):諸事不決,架構(gòu)原則架構(gòu)設(shè)計(jì)原則1:體系安全2:成本合理3:穩(wěn)定可靠4:性能適用5:運(yùn)維高效體系安全1:根據(jù)系統(tǒng)的合規(guī)標(biāo)準(zhǔn)設(shè)定目標(biāo)1.1:合規(guī)標(biāo)準(zhǔn):1,國(guó)際標(biāo)準(zhǔn);2,國(guó)家標(biāo)準(zhǔn);3,行業(yè)標(biāo)準(zhǔn);4,公司要求2:成體...
背景:官方鏡像站下載速度慢,推薦使用阿里云鏡像站,加速鏡像下載速度操作步驟阿里云官網(wǎng)鏈接:阿里云docker加速器1.阿里云鏡像加速器地址:https://jwrmyfx1.mirror.aliyuncs.com2.服務(wù)器內(nèi)配置2.1 centossudo mkdir -p /etc/dockersudo tee /etc/docker/da...
背景:出于對(duì)生產(chǎn)服務(wù)器的保護(hù),我們一般都會(huì)修改windows遠(yuǎn)程桌面的3389端口。但是通過(guò)一步步修改注冊(cè)表子項(xiàng)來(lái)修改端口,過(guò)程很慢。參考windows官方鏈接:更改遠(yuǎn)程桌面的偵聽(tīng)端口 | Microsoft Docs使用命令,一鍵修改遠(yuǎn)程端口,達(dá)到加快效率的效果。操作步驟...
背景:客戶是地產(chǎn)行業(yè)客戶,云服務(wù)器主要部署OA和sql server數(shù)據(jù)庫(kù),由于內(nèi)部IT薄弱,沒(méi)有做好安全防護(hù),導(dǎo)致服務(wù)器被病毒入侵。問(wèn)題回顧:1:服務(wù)器遭受勒索病毒攻擊,導(dǎo)致服務(wù)器OA文件和數(shù)據(jù)庫(kù)文件被鎖,OA網(wǎng)站無(wú)法打開(kāi),數(shù)據(jù)庫(kù)表無(wú)法讀取。2:業(yè)務(wù)癱瘓期間...
有一段時(shí)間沒(méi)怎么倒騰博客了,這幾天收拾了一下博客,同時(shí)將最近閱讀和記錄的有趣的內(nèi)容整理一番,分享給大家。主要包括在博客 寫(xiě)作時(shí)遇到的一些問(wèn)題及解決方法,即我是如何構(gòu)建自己的博客寫(xiě)作工作流的。同時(shí)也有一些在博文寫(xiě)作的中一些感悟。hexo 及 Butterf...
過(guò)去幾年,我們已經(jīng)看到了一系列關(guān)于系統(tǒng)架構(gòu)的想法,包括:六邊形架構(gòu)(接口與適配器)洋蔥架構(gòu)(Onion Architecture)Screaming ArchitectureDCIBCE這些架構(gòu)有很多共同的點(diǎn)(思想),盡管它們細(xì)節(jié)上有所不區(qū)別,它們都有相同的目標(biāo),那就是關(guān)注點(diǎn)分離(the spe...
小編寫(xiě)這篇文章的主要目的就是,站在當(dāng)下的一個(gè)角度,對(duì)全球疫情情況進(jìn)行一個(gè)數(shù)據(jù)分析,,包括確診、治愈、死亡、時(shí)間、國(guó)家、地區(qū)等這些數(shù)據(jù),針對(duì)這些數(shù)據(jù),進(jìn)行相關(guān)的一些可視化數(shù)據(jù)分析,下面小編就給大家做出一個(gè)詳細(xì)的解答。 本項(xiàng)目主要通過(guò)pyth...
最近給部門的小伙伴做了一個(gè)關(guān)于helm的入門介紹,收到了不錯(cuò)的反響,于將資料整理分享給博客的讀者們。 本文第一部分介紹helm是做什么的以及能解決什么問(wèn)題。第二部分介紹helm的核心概念及安裝使用helm的教程, 第三部分介紹helm使用的核心即chart的開(kāi)發(fā),這...
我們可能在很多地方如 README 文件、Makefile 文件以及 Dockerfile 文件中看到GO111MODULE=on, 對(duì)于剛接觸的Golang的開(kāi)發(fā)者可能對(duì)此有很多疑惑。這片文章,我將詳細(xì)介紹GO111MODULE變量的意義,以及什么時(shí)候需要使用到該變量, 同時(shí)也總結(jié)了一些在使用 Go Mo...
Golang 什么時(shí)候使用指針(Pointer)?什么時(shí)候使用值(Value)?對(duì)于go開(kāi)發(fā)者來(lái)說(shuō)是一件頭疼的事情, 而且這個(gè)問(wèn)題似乎沒(méi)有絕對(duì)的答案,那是否代表我們可以隨意使用呢?答案當(dāng)然是否定的。本文我將試圖總結(jié)什么場(chǎng)景使用指針更合理。 在開(kāi)始閱讀前,建議讀者先能...
本文介紹docker中的contanier,基于操作系統(tǒng)介紹什么是container。進(jìn)程(Processes)Container是具有指定配置的Linux進(jìn)程(processes)。我們進(jìn)行如下操作: ##啟動(dòng)一個(gè)redis進(jìn)程 ?~dockerrun-d--name=dbredis:alpine ##顯示容器運(yùn)行的進(jìn)程 ?~dockertopdb PI...
本文以一個(gè)實(shí)際業(yè)務(wù)問(wèn)題來(lái)談?wù)勈聞?wù)該如何處理。對(duì)接外部系統(tǒng)是是不可避免的,從廣泛意義上來(lái)說(shuō),外部系統(tǒng)范圍很大,中間件(數(shù)據(jù)庫(kù))也屬于外部系統(tǒng)。當(dāng)我們討論事務(wù)時(shí),通常我們將那些沒(méi)有支持事務(wù)的系統(tǒng)稱為外部系統(tǒng),業(yè)務(wù)系統(tǒng)基本上都是外部系統(tǒng)。問(wèn)題有這...
在使用Spring Boot開(kāi)發(fā)過(guò)程中,并發(fā)concurrency問(wèn)題不可避免。很多開(kāi)發(fā)者存在這樣的誤區(qū),使用Servlets為每個(gè)請(qǐng)求分配一個(gè)新的線程進(jìn)行處理就不再需要并發(fā)處理了。我將在這篇文章中介紹如何在Spring Boot中處理并發(fā)并且如何避免一些問(wèn)題。Spring Boot 并發(fā)基...