<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:56179|
      • 收錄網站:177785|

      IT精英團

      【刨根問底】String源碼解析

      【刨根問底】String源碼解析

      瀏覽次數:
      評論次數:
      編輯: 田維常老師
      信息來源: 51CTO博客
      更新日期: 2020-12-14 06:13:09
      摘要

      String這個類,到底是個什么玩意?底層是怎么搞的呢?本文帶來詳細分析:開始發車,String源碼:?String定義public?final?class?String?implements?java.io.Serializable,?Comparable&lt;String&gt;,?CharSequence?{?//...??}String是一個final類,既不能被繼承的類Strin

      • 正文開始
      • 相關閱讀
      • 推薦作品

      String這個類,到底是個什么玩意?底層是怎么搞的呢?本文帶來詳細分析:

      開始發車,String源碼:?


      String定義


      public?final?class?String?implements?java.io.Serializable,	?Comparable<String>,?CharSequence?{	?//...?	?}
      • String是一個final類,既不能被繼承的類

      • String類實現了java.io.Serializable接口,可以實現序列化

      • String類實現了Comparable<String>,可以用于比較大?。ò错樞虮容^單個字符的ASCII碼)

      • String類實現了 CharSequence 接口,表示是一個有序字符的序列,因為String的本質是一個char類型數組

      System常用的構造函數:

      public?String()?{	this.value?=?"".value;	}	public?String(String?original)?{	this.value?=?original.value;	????this.hash?=?original.hash;	?}

      再看看vlaue變量是個什么?

      private?final?char?value[];

      是個char數組,并且也是final修飾,

      由此證明:

      String的內容是不可變的,并且String的底層就是使用char數組來存儲的。

      再看看hash變量是個什么?

      /**?Cache?the?hash?code?for?the?string?*/	private?int?hash;?//?Default?to?0

      hash用來保存某一個String實例自己的哈希值,可以說是哈希值的一個緩存,因此String特別適合放入HashMap中,作為key來使用。每次插入一個鍵值対時,不需要重新計算key的哈希值,直接取出key的緩存hash值即可,在一定程度上,加快了HashMap的效率


      常用的構造函數


      public?String(char?value[])?{	this.value?=?Arrays.copyOf(value,?value.length);	}

      接收一個字符數組,利用Arrays.copyOf()方法進行拷貝。Arrays.copyOf()方法源碼:。

      public?static?char[]?copyOf(char[]?original,?int?newLength)?{	?????//重新new了一個數組copy用來存儲	?????char[]?copy?=?new?char[newLength];	?????System.arraycopy(original,?0,?copy,?0,	Math.min(original.length,?newLength));	??????return?copy;	?}

      System.arraycopy()方法源碼。是個native修飾的方法,直接調用底層C或者其他語言。

      public?static?native?void?arraycopy(Object?src,??int??srcPos,	Object?dest,?int?destPos,	int?length);

      從以上源碼,可以看得出,這個構造方法沒有直接使用傳入的字符數組的引用,而是使用該數組的一個拷貝,保證了String類的不可變性。我們無法通過在外部改變此數組中某些元素的值,來改變構造后的String的值。

      解碼構造函數:

      public?String(byte?bytes[],?Charset?charset)?{	this(bytes,?0,?bytes.length,?charset);	}	public?String(byte?bytes[],?int?offset,?int?length,?Charset?charset)?{	if?(charset?==?null)	throw?new?NullPointerException("charset");	//參數校驗????	checkBounds(bytes,?offset,?length);	//解碼	this.value?=??StringCoding.decode(charset,?bytes,?offset,?length);	}

      接收一個字符數組,從offset位置開始復制,一共選取count位:

      public?String(char?value[],?int?offset,?int?count)?{	if?(offset?<?0)?{	throw?new?StringIndexOutOfBoundsException(offset);	}	if?(count?<=?0)?{	if?(count?<?0)?{	throw?new?StringIndexOutOfBoundsException(count);	}	if?(offset?<=?value.length)?{	this.value?=?"".value;	return;	}	}	//?Note:?offset?or?count?might?be?near?-1>>>1.	if?(offset?>?value.length?-?count)?{	throw?new?StringIndexOutOfBoundsException(offset?+?count);	}	this.value?=?Arrays.copyOfRange(value,?offset,?offset+count);	}


      常用方法


      equals、hashCode、indexOf、valueOf等方法。

      equals() 方法

      源碼:

      public?boolean?equals(Object?anObject)?{	//如果是同一個對象則返回true	if?(this?==?anObject)?{	return?true;	}	//判斷類型是否為String類型	if?(anObject?instanceof?String)?{	String?anotherString?=?(String)anObject;	int?n?=?value.length;	//判斷長度	if?(n?==?anotherString.value.length)?{	????????????????//把兩個String的char數組進行比較	char?v1[]?=?value;	char?v2[]?=?anotherString.value;	int?i?=?0;	while?(n--?!=?0)?{	????????????????????//只要有一個不一樣就返回false	if?(v1[i]?!=?v2[i])	return?false;	i++;	}	return?true;	}	}	return?false;	}

      equals()方法一上來沒有直接比較兩個字符串的字符數組元素,在比較超長的字符串時,節省了大量的時間。

      尤其是這些代碼的風格,也希望大家看看人家是怎么寫代碼的。

      hashCode() 方法

      源碼:

      public?int?hashCode()?{	int?h?=?hash;	if?(h?==?0?&&?value.length?>?0)?{	????????????char?val[]?=?value;	for?(int?i?=?0;?i?<?value.length;?i++)?{	h?=?31?*?h?+?val[i];	}	hash?=?h;	}	return?h;	}

      String類同樣也重寫了hashCode()方法,用于計算String實例的哈希值。

      哈希值相同的兩個字符串不一定相同,相同的字符串的哈希值一定相同。

      ?indexOf?方法?

      indexOf(String str):返回str第一次出現在字符串中的位置

      public?int?indexOf(String?str)?{	return?indexOf(str,?0);	}	public?int?indexOf(String?str,?int?fromIndex)?{	return?indexOf(value,?0,?value.length,	str.value,?0,?str.value.length,?fromIndex);	}

      其實調用的是另外一個重載方法indexOf()方法源碼:

      static?int?indexOf(char[]?source,?int?sourceOffset,?int?sourceCount,	char[]?target,?int?targetOffset,?int?targetCount,	int?fromIndex)?{	//1、當開始查找位置?大于等于?源字符串長度時,如果[查找字符串]為空,則:	//返回字符串的長度,否則返回-1.	if?(fromIndex?>=?sourceCount)?{	return?(targetCount?==?0???sourceCount?:?-1);	}	//2、如果fromIndex?小于?0,則從?0開始查找。	if?(fromIndex?<?0)?{	fromIndex?=?0;	}	//3、如果[查找字符串]為空,則返回fromIndex	if?(targetCount?==?0)?{	return?fromIndex;	}	//4、開始查找,從[查找字符串]中得到第一個字符,標記為first	char?first??=?target[targetOffset];	//4.1、計算[源字符串最大長度]	int?max?=?sourceOffset?+?(sourceCount?-?targetCount);	//4.2、遍歷查找	for?(int?i?=?sourceOffset?+?fromIndex;?i?<=?max;?i++)?{	//4.2.1、從[源字符串]中,查找到第一個匹配到[目標字符串]first的位置	//for循環中,增加while循環	/*?Look?for?first?character.?*/	if?(source[i]?!=?first)?{	while?(++i?<=?max?&&?source[i]?!=?first);	}	//4.2.2、如果在[源字符串]中,找到首個[目標字符串],	//則匹配是否等于[目標字符串]	/*?Found?first?character,?now?look?at?the?rest?of?v2?*/	if?(i?<=?max)?{	//4.2.2.1、得到下一個要匹配的位置,標記為j	int?j?=?i?+?1;	//4.2.2.2、得到其余[目標字符串]的長度,標記為end	int?end?=?j?+?targetCount?-?1;	//4.2.2.3、遍歷,其余[目標字符串],從k開始,	//如果j不越界(小于end,表示:其余[目標字符串]的范圍),	//同時[源字符串]==[目標字符串],則	//自增,繼續查找匹配。j++、k++	for?(int?k?=?targetOffset?+?1;?j?<?end?&&?source[j]?==	target[k];?j++,?k++);	//4.2.2.4、如果j與end相等,則表示:	//源字符串中匹配到目標字符串,匹配結束,返回i。	if?(j?==?end)?{	/*?Found?whole?string.?*/	return?i?-?sourceOffset;	}	}	}	//其余情況,返回-1.	return?-1;	}

      intern()方法

      源碼:

      public?native?String?intern();

      可以看得出,它是一個native修飾的本地方法。當調用此方法時,會首先在方法區中的常量池中使用equals()尋找是否存在此字符串,如果存在,直接返回此字符串的引用。如果不存在時,會首先將此字符串添加到常量池中,再返回該字符串的引用。

      這個方法也是面試常問之一,后面會專門針對這個方法一個分享

      valueOf()方法


      public?static?String?valueOf(long?l)?{	return?Long.toString(l);	}

      這里調用的是Long里的toString方法。

      public?static?String?toString(long?i)?{	if?(i?==?Long.MIN_VALUE)	return?"-9223372036854775808";	int?size?=?(i?<?0)???stringSize(-i)?+?1?:?stringSize(i);	char[]?buf?=?new?char[size];	getChars(i,?size,?buf);	return?new?String(buf,?true);	}

      這里最關鍵的是stringSize()方法

      static?int?stringSize(long?x)?{	long?p?=?10;	for?(int?i=1;?i<19;?i++)?{	if?(x?<?p)	return?i;	p?=?10*p;	}	return?19;	}

      到這里大家是不是很熟悉了,

      比如書:Long?a=100;這里就是100<10*10*10,所以長度返回是3

      然后創建char數據,然后拆分a放進char數組中,然后char數組轉換成String字符串。

      ?//這里使用的default修飾,因為String和Long在他同一個包目錄下。	String(char[]?value,?boolean?share)?{	//?assert?share?:?"unshared?not?supported";	this.value?=?value;	??}

      compareTo()方法

      案例和源碼:

      ?public?void?test()?{	//?因為o的ASCII碼為:?111	//?因為a的ASCII碼為:?97	//?所以差為?:?111?-?97?=?14	//?返回值為:14,?與compareTo返回結果一致	System.out.println(compares("hellojava",?"hellajava"));	}
      public?static?int?compares(String?firstString,?String?lastString)?{	/*	??????????*?算法思路分析:?	??????????*?????1.?獲取2個字符串,?首先把2個字符串都轉化為字符數組?(為后面一個一個字符進行比較做鋪墊)	??????????*?????2.?獲取2個字符串的長度,?并把最短的字符串長度作為循環的次數?(這樣可以避免數組越界的異常)	??????????*?????3.?把2個字符串從0開始遍歷,?比較每一個字符,?若字符不相等時,?則返回兩個字符串的差值	??????????*?????4.?如果遍歷的字符串都相等時,?則返回兩個字符串的長度差	??????????*?	??????????*?方法結果:?	??????????*?????1.?若兩個字符串長度和字符都相等時,?則返回0	??????????*?????2.?若兩個字符長度不相等,?但大串完全包含(順序和字符都相等)小串字符時,?則返回兩個字符串的長度的差值	??????????*?????????舉例:?	??????????*?????????????大串:?helloworlds	??????????*?????????????小串:?helloworld	??????????*?????????????因為大串完全包含小串,?所以返回長度的差值,?為1	??????????*?????3.?若兩個字符串長度和字符都不相等時,?則返回比較過程中,?某個索引位置上的字符之差	??????????*?????????舉例:?	??????????*?????????????串1:?hellojavas	??????????*?????????????串2:?hellajava	??????????*?????????????遍歷比較后,?索引4的字符不同,?所以返回兩個字符的差值14,?'o'?-?'a'?=?14	??????????*/	?????????	/*	??????????*?1.?獲取2個字符串,?首先把2個字符串都轉化為字符數組?(為后面一個一個字符進行比較做鋪墊)	??????????*/	char[]?firstCh?=?firstString.toCharArray();	char[]?lastCh?=?lastString.toCharArray();	?????????	/*	??????????*?2.?獲取2個字符串的長度,?并把最短的字符串長度作為循環的次數?(這樣可以避免數組越界的異常)	??????????*/	int?firstLength?=?firstCh.length;	int?lastLength?=?lastCh.length;	int?lim?=?Math.min(firstLength,?lastLength);		//?用k記錄比較的索引	int?k?=?0;	while(k?<?lim)?{	char?c1?=?firstCh[k];	char?c2?=?lastCh[k];		//?3.?把2個字符串從0開始遍歷,?比較每一個字符,?若字符不相等時,?則返回兩個字符串的差值	if(c1?!=?c2)?{	return?c1?-?c2;	}		//?如果字符相等,?則讓索引加1	k++;	}		//?4.?如果遍歷的字符串都相等時,?則返回兩個字符串的長度差	return?firstLength?-?lastLength;	}

      按字典順序比較兩個字符串。 比較是基于字符串中每個字符的Unicode值。 由該String對象表示的字符序列按字典順序與由參數字符串表示的字符序列進行比較。 如果String對象按字典順序排列在參數字符串之前,結果為負整數。 結果是一個正整數,如果String對象按字典順序跟隨參數字符串。 如果字符串相等,結果為零; compareTo返回0 ,當equals(Object)方法將返回true 。

      ok,今天就分享到這里。如果你有一點點收獲那我也沒有白寫。


      標簽:java
      mybatis的xml使用ognl調用靜態java類方法時省略包名并支持lambda取實例類中列名
      ? 上一篇 2020-12-14
      【刨根問底】BigDecimal 案例和部分源碼分析
      下一篇 ? 2020-12-14
      • 談如何設計未來的倉庫建筑
        4閱讀 0條評論 個贊
        編輯:數據社全文共3758個字,建議10分鐘閱讀大家好,我是峰哥,夏天已經來了,小麥馬上要豐收了,今天分析一篇關于未來數倉架構發展方向的文章。Linked大佬JayKreps曾發表過一篇博客,簡單闡……
      • 高并發服務的幾點優化經驗
        0閱讀 0條評論 個贊
        前言:如何優化高并發服務,這里指的是qps在20萬以上的在線服務,注意不是離線服務,在線服務會存在哪些挑戰呢?①無法做離線緩存,所有的數據都是實時讀的②大量的請求會打到線上服務,對于服務的響應時間要……
      • Java處理異常的9個最佳實踐 你做得對嗎?
        1閱讀 0條評論 個贊
        原文:https://dzone.com/articles/9-best-practices-to-handle-exceptions-in-java譯者:颯然Hang譯文:http://www.r……
      • 提高Java字符串編碼和解碼性能的技巧
        1閱讀 0條評論 個贊
        1常見字符串編碼●常見的字符串編碼有:LATIN1只能保存ASCII字符,又稱ISO-8859-1。UTF-8變長字節編碼,一個字符需要使用1個、2個或者3個byte表示。由于中文通常需要3個字節……
      • Linux預定任務調度(crontab) 好實用!
        0閱讀 0條評論 個贊
        概述crontab命令用于設置周期性被執行的指令。該命令從標準輸入設備讀取指令,并將其存放于“crontab”文件中,以供之后讀取和執行??梢允褂胏rontab定時處理離線任務,比如每天凌晨2點更新數……
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • 緊急情況下數據庫表被鎖 抓瞎?
        4閱讀 0條評論 個贊
        以下文章來源于公眾號-程序新視界,作者二師兄在程序員的職業生涯中,總會遇到數據庫表被鎖的情況,前些天就又撞見一次。由于業務突發需求,各個部門都在批量操作、導出數據,而數據庫又未做讀寫分離,結果就是:數……
      • 基礎鞏固——至少需要多少行代碼才能實現深度復制?
        1閱讀 0條評論 個贊
        前言深度克?。ㄉ羁截悾┮恢倍际浅?、中級前端面試中經常被問到的題目,網上介紹的實現方式也都各有千秋,大體可以概括為三種方式:JSON.stringify+JSON.parse,這個很好理解;全量判斷類……
      • 服務器端高并發分布式架構的演進之路
        1閱讀 0條評論 個贊
        1.概述本文以淘寶作為例子,介紹從一百個到千萬級并發情況下服務端的架構的演進過程。同時列舉出每個演進階段會遇到的相關技術,讓大家對架構的演進有一個整體的認知。文章最后匯總了一些架構設計的原則。特別說……
      • Python極簡編碼規范
        1閱讀 0條評論 個贊
        本文是閱讀《PythonCodingRule》之后總結的最為精華及簡單的編碼規范,根據每個人不同喜好有些地方會有不同的選擇,我只是做了對自己來說最簡單易行的選擇,僅供大家參考。1、重要原則a.保持……
      • 內存數據庫如何利用內存?
        1閱讀 0條評論 個贊
        與以磁盤存儲為主的普通數據庫相比,內存數據庫的數據訪問速度可以高出幾個數量級,能大幅提高運算性能,更適合高并發、低延時的業務場景。不過,當前大部分內存數據庫仍然采用SQL模型,而SQL缺乏一些……
      • 記得網上一個K8s Ingress訪問故障排除 最后卻不是帖子的鍋
        1閱讀 0條評論 個贊
        具體現象應用遷移至我們的PaaS平臺后會出現偶發性的502問題,錯誤見圖片:相比于程序的請求量,錯誤肯定是比較少的,但是錯誤一直在發生,會影響調用方的代碼,需要檢查下問題原因。為啥我們只看到了POST……
      • SQL優化通用公式:5個步驟和10個案例
        1閱讀 0條評論 個贊
        導讀:在應用開發的早期,數據量少,開發人員開發功能時更重視功能上的實現,隨著生產數據的增長,很多SQL語句開始暴露出性能問題,對生產的影響也越來越大,有時可能這些有問題的SQL就是整個系統性能的瓶頸?!?/div>
      • SQL中的三種重復數據刪除方法 還有誰不行?
        0閱讀 0條評論 個贊
        SQL去重是數據分析工作中比較常見的一個場景,今天給大家具體介紹3種去重的方法。在使用SQL提數的時候,常會遇到表內有重復值的時候,比如我們想得到uv(獨立訪客),就需要做去重。在MySQL中……
      • 一萬字長文講解HBase讀寫性能優化
        2閱讀 0條評論 個贊
        一、HBase讀優化1.HBase客戶端優化和大多數系統一樣,客戶端作為業務讀寫的入口,姿勢使用不正確通常會導致本業務讀延遲較高實際上存在一些使用姿勢的推薦用法,這里一般需要關注四個問題:1)s……
      • 臉書數據庫項目負責人:我從做基礎設施中學到的42件事
        1閱讀 0條評論 個贊
        最近讀到了分布式系統研究者MaheshBalakrishnan的一篇博客《42thingsIlearnedfrombuildingaproductiondatabase》。同樣做……
      • Java“年度加密漏洞”修復 網友:更多堅持Java 8的理由
        9閱讀 0條評論 個贊
        文|Travis出品|OSC開源社區(ID:oschina2013)甲骨文于昨日推送了安全更新修復了一個漏洞,該漏洞允許攻擊者偽造某些種類的SSL證書和握手、雙因素認證信息,以及由一系列廣……
      • 解決緩存崩潰問題的一行代碼
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-孤獨煙,作者孤獨煙引言今天,重新回顧一下緩存擊穿這個問題!之所以寫這個文章呢,因為目前網上流傳的文章落地性太差(什么布隆過濾器啊,布谷過濾器啊,嗯,你們懂的),其實這類方案并不適……
      • 如何用10行bash shell腳本監控Linux?
        1閱讀 0條評論 個贊
        http://985.so/xbtd子沐愛掃地(譯)監控我們的環境對于服務器運維來說至關重要,尤其是在部署新的應用程序時。如今,公司每天都使用開源解決方案來監控系統資源。但是,當出于測試的目的來監控……
      • 代碼| C語言根據可執行文件名獲取進程運行信息
        1閱讀 0條評論 個贊
        如下示例可根據可執行文件名獲得線程數、虛擬內存占用大小、物理內存占用大小、進程PID、CPU占用率和進程啟動次數等信息。1.程序源碼main.c:#include#include<……
      • 透徹理解數據資產、數據資源、數據管理、數據治理等概念的區別
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-大魚的數據人生,作者討厭的大魚先生數據成為生產要素后,各種跟數據相關的概念就出來了,其實很多概念沒有權威定義,大家各有各的理解,這導致了理解上的歧義。數據管理、數據治理、數據資源……
      • 我用Java在幾分鐘內處理了30億條數據.
        1閱讀 0條評論 個贊
        來源:https://c1n.cn/GM8hb目錄場景說明模擬數據場景分析讀取數據處理數據遇到的問題場景說明現有一個10G文件的數據,里面包含了18-70之間的整數,分別表示18-70歲的……
      • 誤操作離線丟棄和恢復場景測試的業務影響——來自“血”的教訓
        0閱讀 0條評論 個贊
        在數據庫恢復過程中,比如我們用了第三方的備份工具,在實施恢復操作時會導出需要的某個表空間這樣可以大大減少恢復時間,是十分值得推薦的做法,這個過程中由于修改控制文件中數據文件的相關信息,需要執行alte……
      • MySQL查詢語句的limit offset是如何實現的?
        1閱讀 0條評論 個贊
        在寫select語句的時候,使用limit,offset可能就像是我們吃飯喝水一樣自然了。剛開始工作的時候也經常聽前輩們教導:使用limit,offset,當offset變大的時候執……
      • 創建Go語言最快的排序算法
        1閱讀 0條評論 個贊
        前言說到排序算法,很多同學會想起快速排序、堆排序、冒泡排序這些耳熟能詳的算法。了解得深一些的同學,也可能看過例如Python的timsort以及C++introsort之類的排序算法?!?/div>
      • 微服務架構下基于Prometheus構建綜合監控平臺的最佳實踐
        2閱讀 0條評論 個贊
        隨著Prometheus逐漸成為云原生時代的可觀測事實標準,那么今天為大家帶來在微服務架構下基于Prometheus構建一體化監控平臺的最佳實踐和一些相關的思考,內容主要包括以下幾個部分:微服……
      • 阿里、騰訊、美團等網絡股周二大漲 摩根大通上調評級顯效
        3閱讀 0條評論 個贊
        周二的利好報告推動香港科技股飆升。恒生科技指數周二早盤上漲3.2%,其中阿里巴巴上漲3.8%,至87.80港元。騰訊上漲3.2%,至361.20港元。美團和京東上漲至少3.8%?!?/div>
      • 整治虛假“種草” 別讓消費者掉進錯坑
        1閱讀 0條評論 個贊
        近日,有網友反映其在某平臺“種草”的化妝品貨不對版,博主口中的優質產品與實際不符。另外據某媒體調查顯示,78.2%的受訪者有被網絡“種草”坑過的經歷?!?/div>
      • 易聯銀行去年凈利大降77% 兩次被監管 合作社貸款年利率高達36%
        2閱讀 0條評論 個贊
        吉林億聯銀行披露了2021年年度報告摘要和2022年一季度報告。報告顯示,2022年一季度實現營業收入2.88億元,同比減少79.89%;實現凈利潤2531萬元,同比減少51.06%。2021年億聯銀行實現營業收入14.35億元,同比減少8.47%;實現凈利潤5172萬元,同比減少76.54%?!?/div>
      • 服務器端高并發分布式架構的演進之路
        1閱讀 0條評論 個贊
        1.概述本文以淘寶作為例子,介紹從一百個到千萬級并發情況下服務端的架構的演進過程。同時列舉出每個演進階段會遇到的相關技術,讓大家對架構的演進有一個整體的認知。文章最后匯總了一些架構設計的原則。特別說……
      • JD.COM面試問題:ElasticSearch深度分頁解決方案
        0閱讀 0條評論 個贊
        以下文章來源于月伴飛魚,作者日常加油站前言Elasticsearch是一個實時的分布式搜索與分析引擎,在使用過程中,有一些典型的使用場景,比如分頁、遍歷等。在使用關系型數據庫中,我們被告知要注意甚至……
      • seo經典案例網站文章不收錄真實原因分析
        3閱讀 0條評論 個贊
        和別人一樣的內容,別的網站都收錄,為什么我的網站沒有收錄呢?下面我們來看看百度收錄有沒有可以讓我們鉆空子的漏洞,和網站文章不收錄真正緣故起因分析,需要的朋友可以參考下……
      • 小紅書被曝裁員20%:各部門均受影響 部分員工當天被通知最后一天
        1閱讀 0條評論 個贊
        有小紅書員工透露,此次整體裁員20%,各個部門都有波及,波及的應屆生和試用期員工較多,北京、上海公司均有員工被裁?!?/div>
      • 普拉特公司;由于股價連續30個交易日低于1美元 惠特尼財富收到納斯達克警告函
        1閱讀 0條評論 個贊
        昨日,普惠財富(NASDAQ: PHCF)宣布,該公司已收到納斯達克股票市場有限責任公司上市資格部日期為2022年4月13日的通知函,該通知函涉及其未能滿足納斯達克的最低投標價格要求。通知函告知普惠財富,其普通股的每股最低收盤價在連續30個工作日內低于1.00美元,且公司未滿足納斯達克上市規則中規定的最低競價要求?!?/div>
      • 3種方式!轉到錯誤處理最佳實踐
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-云加社區,作者李森林導語|錯誤處理一直以一是編程必需要面對的問題,錯誤處理如果做的好的話,代碼的穩定性會很好。不同的語言有不同的出現處理的方式。Go語言也一樣,在本篇文章中,我們……
      • 用法治填補App會員的消費陷阱
        1閱讀 0條評論 個贊
        近日,據《法治日報》報道,一些App給會員優惠附加了各種限制條件,有的在會員使用期間擅自調整會員條款,致使用戶權益受損,還有一些App存在自動續費、涉嫌虛假宣傳等情況?!?/div>
      • PostgreSQL并行框架分析
        3閱讀 0條評論 個贊
        作者簡介施博文,目前就職于騰訊云PG團隊概覽PostgreSQL并行框架提供了一系列方便的函數,支持在插件或內核中直接調用相關函數,啟動若干個后臺進程進行并行操作。目前,PG的并行框架主要用來……
      • 央行等出臺23條金融措施支持實體經濟(附全文)
        1閱讀 0條評論 個贊
        中國人民銀行、國家外匯管理局今日印發《關于做好疫情防控和經濟社會發展金融服務的通知》(以下簡稱《通知》),從支持受困主體紓困、暢通國民經濟循環、促進外貿出口發展三個方面,提出加強金融服務、加大支持實體經濟力度的23條政策舉措?!?/div>
      • 新版百度搜索引擎工作原理分析
        3閱讀 0條評論 個贊
        新版百度搜索引擎正式上線了,乍一看沒有什么大的變化,其實不然,在新版的搜索引擎出來之前,搜索引擎在算法中就不斷在完善。那么我們一起來看看,搜索引擎的那些綜合算法……
      • 7天存款年化4.9% 眾邦銀行高息導致業績不佳 多項核心監管指標惡化
        6閱讀 0條評論 個贊
        近日,河南數家村鎮銀行突然爆出提現困難,引起輿論關注。據媒體報道和部分存款人反映,這幾家村鎮銀行涉嫌利用互聯……
      • SEO站點優化的八大核心要素和思維趨勢
        1閱讀 0條評論 個贊
        下面為大家分享SEO站內優化的8個核心要素和思維走向,這篇文章介紹的很全面,希望對SEO新手及要轉變思維的SEO人有所幫助……
      • JD.COM集團宣布派發20億美元的特別股息
        0閱讀 0條評論 個贊
        京東集團5月4日發布公告,稱將于北京/香港時間和紐約時間2022年5月20日休市后登記在冊的普通股持有人和美國存托股持有人。此次特別股息的總額大約將為20億美元。京東宣布將于2022年5月17日美股盤前發布2022年第一季度未經審計的業績報告?!?/div>
      • 如何做好SEO優化?說到網絡營銷你不得不說的SEO優化技巧
        1閱讀 0條評論 個贊
        從事搜索引擎優化的SEOer要不斷地學習,而工作的依托者就是搜索引擎,那么如何做好SEO優化?SEO優化需要注意什么呢?本文將提供談到網絡營銷就不得不說的SEO優化技巧供大家了解,希望對大家有所幫助和啟發……
      • 光大證券一、二把手辭職等6名高管被問責
        7閱讀 0條評論 個贊
        4月20日,光大證券發布一紙人事變動公告,董事長閆峻、監事長劉濟平雙雙辭職。在此之前,多家媒體報道,光大證券董事長閆峻、監事長劉濟平等六名公司高管均被有關部門問責,原因系違反中央的八項規定精神?!?/div>
      • 數據治理 區分系統、機制、流程的概念很重要
        0閱讀 0條評論 個贊
        以下文章來源于公眾號-大魚的數據人生,作者討厭的大魚先生我們剛接觸數據的時候,從事的大多是具體的數據管理活動,無論是數據的采集、開發和開放,或是元數據管理、數據質量管理或是數據安全管理等等,但當你想更……
      • 職稱:本科年薪13萬 博士年薪30萬 茅臺集團再次下大力氣招聘 仍需“體能測試”
        0閱讀 0條評論 個贊
        茅臺集團又大手筆招人啦!……
      最近發布資訊
      更多
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>