
重構(gòu),著實(shí)是一件讓程序員興奮的事情。今年年初,我們團(tuán)隊(duì)完成了一個(gè)復(fù)雜項(xiàng)目的重構(gòu)工作,它屬于廣告系統(tǒng)最核心的引擎部分,大概有300多個(gè)文件,3萬(wàn)多行代碼。 從技術(shù)方案設(shè)計(jì)到最終全量上線僅僅花了1個(gè)月左右的時(shí)間,而且沒(méi)有產(chǎn)生事故。 這應(yīng)該是我8年程序生涯中,經(jīng)歷過(guò)的最大型的同時(shí)最成功的一次重構(gòu)項(xiàng)目:速度足夠快、計(jì)劃比較周全、質(zhì)量過(guò)關(guān)。
說(shuō)說(shuō)進(jìn)程和線程的區(qū)別?進(jìn)程是程序的一次執(zhí)行,是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位,他的作用是是程序能夠并發(fā)執(zhí)行提高資源利用率和吞吐率。由于進(jìn)程是資源分配和調(diào)度的基本單位,因?yàn)檫M(jìn)程的創(chuàng)建、銷毀、切換產(chǎn)生大量的時(shí)間和空間的開(kāi)銷,進(jìn)程的數(shù)量不能太多,而線程是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位,他是進(jìn)程的一個(gè)實(shí)體,可以減少程序并發(fā)執(zhí)行時(shí)的時(shí)間和空間開(kāi)銷,使得操作系統(tǒng)具有更好的并發(fā)性。
大型互聯(lián)網(wǎng)公司一般都會(huì)要求消息傳遞最大限度的不丟失,比如用戶服務(wù)給代金券服務(wù)發(fā)送一個(gè)消息,如果消息丟失會(huì)造成用戶未收到應(yīng)得的代金券,最終用戶會(huì)投訴。為避免上面類似情況的發(fā)生,除了做好補(bǔ)償措施,更應(yīng)該在系設(shè)計(jì)的時(shí)候充分考慮各種異常,設(shè)計(jì)一個(gè)穩(wěn)定、高可用的消息系統(tǒng)。
很多剛開(kāi)始學(xué)習(xí)單片機(jī)的小伙伴最苦惱的就是如何入門(mén),不知道從哪一部分開(kāi)始、在哪里查找學(xué)習(xí)資源、按照怎樣的學(xué)習(xí)步驟進(jìn)行學(xué)習(xí),而且摸索學(xué)習(xí)步驟的過(guò)程在浪費(fèi)時(shí)間的同時(shí)也會(huì)降低學(xué)習(xí)興趣。為了幫助大家解決這種情況,小編將單片機(jī)達(dá)人的學(xué)習(xí)經(jīng)驗(yàn)進(jìn)行了整理,以文章的形式分享給大家。
首先你要有一個(gè)bin文件(bin文件的獲取方法不在此展開(kāi)介紹,今后有機(jī)會(huì)可以專門(mén)開(kāi)一個(gè)貼聊一聊)。本次實(shí)驗(yàn)用到的bin文件? ?stm32_xwrtos.bin.zip (6 KB) 是用ST官方CMSIS和外設(shè)庫(kù)編譯的跑在stm32f103c8t6上的bin文件,比較具有代表性。
從單片機(jī)上知道,在上電的那一刻,MCU的程序指針會(huì)被初始化為上電復(fù)位時(shí)的地址,從那個(gè)地址處讀取將要執(zhí)行的指令,由此程序在MCU上開(kāi)始執(zhí)行。PC在上電時(shí),和MCU差不多,不過(guò)讀取的是BIOS,有它完成了很多初始化操作,最后,調(diào)用系統(tǒng)的初始化函數(shù),將控制權(quán)交給了操作系統(tǒng),于是我們看到了Windows,Linux系統(tǒng)啟動(dòng)了。
本文檔主要介紹,在python環(huán)境下,如何開(kāi)發(fā)嵌入式應(yīng)用程序,以STM32H43板卡為例介紹. 從系統(tǒng)環(huán)境搭建,到編譯,到用python實(shí)現(xiàn)硬件控制??勺鳛槿腴T(mén)教程。
小張,開(kāi)發(fā)一個(gè)大型系統(tǒng),寫(xiě)了一個(gè)統(tǒng)一的接口層;日志門(mén)面(日志的一個(gè)抽象層);logging-abstract.jar;給項(xiàng)目中導(dǎo)入具體的日志實(shí)現(xiàn)就行了;我們之前的日志框架都是實(shí)現(xiàn)的抽象層……
本文主要分享菜鳥(niǎo)進(jìn)口實(shí)時(shí)數(shù)倉(cāng)的升級(jí)經(jīng)驗(yàn),以及如何利用Flink的特性解決在開(kāi)發(fā)實(shí)踐中遇到的問(wèn)題。
本文詳細(xì)介紹了C/C++中的字節(jié)對(duì)齊,建議收藏!
為什么在EWARM中可以編譯通過(guò),卻在MDK-ARM中會(huì)出錯(cuò)呢?
如果說(shuō)各種編程語(yǔ)言是程序員的招式,那么數(shù)據(jù)結(jié)構(gòu)和算法就相當(dāng)于程序員的內(nèi)功。想寫(xiě)出精煉、優(yōu)秀的代碼,不通過(guò)不斷的錘煉,是很難做到的。
SPI是單片機(jī)外設(shè)電路中常用的一種通訊方式,適用于近距離通信,通常用于芯片間的通訊,有四根線。 在SPI通訊中總線時(shí)鐘和總線相位也兩個(gè)比較重要的概念,一般在使用SPI通信時(shí)都使用默認(rèn)設(shè)置,所以容易把這兩個(gè)參數(shù)忽略。 和大家分享一下SPI通訊、時(shí)鐘極性以及時(shí)鐘相位的基礎(chǔ)知識(shí)。
有粉絲問(wèn)我到底什么是ARM,搞不清楚Cortex、arm內(nèi)核、arm架構(gòu)、ARM指令集、soc這些概念都是什么關(guān)系,本文給大家整理一下關(guān)于ARM相關(guān)的一些概念。
YUV是一種顏色編碼方法,和它等同的還有RGB顏色編碼方法。RGB三個(gè)字母分別代表了 紅(Red)、綠(Green)、藍(lán)(Blue),這三種顏色稱為 三原色,將它們以不同的比例相加,可以產(chǎn)生多種多樣的顏色。
嵌入式常見(jiàn)的GUI,你了解幾個(gè)?
我們學(xué)習(xí)單片機(jī)的目的就是為了進(jìn)行嵌入式系統(tǒng)的開(kāi)發(fā),學(xué)好單片機(jī)首先要有一個(gè)整體認(rèn)識(shí),下面將簡(jiǎn)要介紹一下單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)流程。
本文介紹了Linux查看資源使用情況和性能調(diào)優(yōu)常用的命令,包括top、htop、ps、free、vmstat、iostat、netstat、df和du命令。
知乎上有網(wǎng)友提問(wèn):當(dāng)前集成電路設(shè)計(jì)工程師的薪資是否可持續(xù)?這個(gè)話題應(yīng)該是我們所有IC人都關(guān)心的一個(gè)話題了,以下摘錄幾段知乎網(wǎng)友的回答,也希望大家留言補(bǔ)充。
面對(duì)超高的并發(fā),首先硬件層面機(jī)器要能扛得住,其次架構(gòu)設(shè)計(jì)做好微服務(wù)的拆分,代碼層面各種緩存、削峰、解耦等等問(wèn)題要處理好,數(shù)據(jù)庫(kù)層面做好讀寫(xiě)分離、分庫(kù)分表,穩(wěn)定性方面要保證有監(jiān)控,熔斷限流降級(jí)該有的必須要有,發(fā)生問(wèn)題能及時(shí)發(fā)現(xiàn)處理。這樣從整個(gè)系統(tǒng)設(shè)計(jì)方面就會(huì)有一個(gè)初步的概念。