深入理解Java:SimpleDateFormat安全的時間格式化
深入理解Java:SimpleDateFormat安全的時間格式化
想必大家對SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一個非常常用的類,該類用來對日期字符串進行解析和格式化輸出,但如果使用不小心會導致非常微妙和難以調(diào)試的問題,因為 DateFormat 和 SimpleDateFormat 類不都是線程安全的,在多線程環(huán)境下調(diào)用 format() 和 parse() 方法應(yīng)該使用同步代碼來避免問題。下面我們通過一個具體的場景來一步步的深入學習和理解SimpleDateFormat類。
一.引子我們都是優(yōu)秀的程序員,我們都知道在程序中我們應(yīng)當盡量少的創(chuàng)建SimpleDateFormat 實例,因為創(chuàng)建這么一個實例需要耗費很大的代價。在一個讀取數(shù)據(jù)庫數(shù)據(jù)導出到excel文件的例子當中,每次處理一個時間信息的時候,就需要創(chuàng)建一個SimpleDateFormat實例對象,然后再丟棄這個對象。大量的對象就這樣被創(chuàng)建出來,占用大量的內(nèi)存和 jvm空間。代碼如下:
(資料圖)
package com.peidasoft.dateformat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil { public static String formatDate(Date date)throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); } public static Date parse(String strDate) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.parse(strDate); }}
你也許會說,OK,那我就創(chuàng)建一個靜態(tài)的simpleDateFormat實例,然后放到一個DateUtil類(如下)中,在使用時直接使用這個實例進行操作,這樣問題就解決了。改進后的代碼如下:
package com.peidasoft.dateformat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static String formatDate(Date date)throws ParseException{ return sdf.format(date); } public static Date parse(String strDate) throws ParseException{ return sdf.parse(strDate); }}
當然,這個方法的確很不錯,在大部分的時間里面都會工作得很好。但當你在生產(chǎn)環(huán)境中使用一段時間之后,你就會發(fā)現(xiàn)這么一個事實:它不是線程安全的。在正常的測試情況之下,都沒有問題,但一旦在生產(chǎn)環(huán)境中一定負載情況下時,這個問題就出來了。他會出現(xiàn)各種不同的情況,比如轉(zhuǎn)化的時間不正確,比如報錯,比如線程被掛死等等。我們看下面的測試用例,那事實說話:
package com.peidasoft.dateformat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static String formatDate(Date date)throws ParseException{ return sdf.format(date); } public static Date parse(String strDate) throws ParseException{ return sdf.parse(strDate); }}
package com.peidasoft.dateformat;import java.text.ParseException;import java.util.Date;public class DateUtilTest { public static class TestSimpleDateFormatThreadSafe extends Thread { @Override public void run() { while(true) { try { this.join(2000); } catch (InterruptedException e1) { e1.printStackTrace(); } try { System.out.println(this.getName()+":"+DateUtil.parse("2013-05-24 06:02:20")); } catch (ParseException e) { e.printStackTrace(); } } } } public static void main(String[] args) { for(int i = 0; i < 3; i++){ new TestSimpleDateFormatThreadSafe().start(); } }}
執(zhí)行輸出如下:
Exception in thread "Thread-1" java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1082) at java.lang.Double.parseDouble(Double.java:510) at java.text.DigitList.getDouble(DigitList.java:151) at java.text.DecimalFormat.parse(DecimalFormat.java:1302) at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1311) at java.text.DateFormat.parse(DateFormat.java:335) at com.peidasoft.orm.dateformat.DateNoStaticUtil.parse(DateNoStaticUtil.java:17) at com.peidasoft.orm.dateformat.DateUtilTest$TestSimpleDateFormatThreadSafe.run(DateUtilTest.java:20)Exception in thread "Thread-0" java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1082) at java.lang.Double.parseDouble(Double.java:510) at java.text.DigitList.getDouble(DigitList.java:151) at java.text.DecimalFormat.parse(DecimalFormat.java:1302) at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1311) at java.text.DateFormat.parse(DateFormat.java:335) at com.peidasoft.orm.dateformat.DateNoStaticUtil.parse(DateNoStaticUtil.java:17) at com.peidasoft.orm.dateformat.DateUtilTest$TestSimpleDateFormatThreadSafe.run(DateUtilTest.java:20)Thread-2:Mon May 24 06:02:20 CST 2021Thread-2:Fri May 24 06:02:20 CST 2013Thread-2:Fri May 24 06:02:20 CST 2013Thread-2:Fri May 24 06:02:20 CST 2013
說明:Thread-1和Thread-0報java.lang.NumberFormatException: multiple points錯誤,直接掛死,沒起來;Thread-2 雖然沒有掛死,但輸出的時間是有錯誤的,比如我們輸入的時間是:2013-05-24 06:02:20 ,當會輸出:Mon May 24 06:02:20 CST 2021 這樣的靈異事件。
二.原因
作為一個專業(yè)程序員,我們當然都知道,相比于共享一個變量的開銷要比每次創(chuàng)建一個新變量要小很多。上面的優(yōu)化過的靜態(tài)的SimpleDateFormat版,之所在并發(fā)情況下回出現(xiàn)各種靈異錯誤,是因為SimpleDateFormat和DateFormat類不是線程安全的。我們之所以忽視線程安全的問題,是因為從SimpleDateFormat和DateFormat類提供給我們的接口上來看,實在讓人看不出它與線程安全有何相干。只是在JDK文檔的最下面有如下說明:
SimpleDateFormat中的日期格式不是同步的。推薦(建議)為每個線程創(chuàng)建獨立的格式實例。如果多個線程同時訪問一個格式,則它必須保持外部同步。
JDK原始文檔如下:
Synchronization:
Date formats are not synchronized.
It is recommended to create separate format instances for each thread.
If multiple threads access a format concurrently, it must be synchronized externally.
下面我們通過看JDK源碼來看看為什么SimpleDateFormat和DateFormat類不是線程安全的真正原因:
SimpleDateFormat繼承了DateFormat,在DateFormat中定義了一個protected屬性的 Calendar類的對象:calendar。只是因為Calendar累的概念復雜,牽扯到時區(qū)與本地化等等,Jdk的實現(xiàn)中使用了成員變量來傳遞參數(shù),這就造成在多線程的時候會出現(xiàn)錯誤。
在format方法里,有這樣一段代碼:
private StringBuffer format(Date date, StringBuffer toAppendTo, FieldDelegate delegate) { // Convert input date to time field list calendar.setTime(date); boolean useDateFormatSymbols = useDateFormatSymbols(); for (int i = 0; i < compiledPattern.length; ) { int tag = compiledPattern[i] >>> 8; int count = compiledPattern[i++] & 0xff; if (count == 255) { count = compiledPattern[i++] << 16; count |= compiledPattern[i++]; } switch (tag) { case TAG_QUOTE_ASCII_CHAR: toAppendTo.append((char)count); break; case TAG_QUOTE_CHARS: toAppendTo.append(compiledPattern, i, count); i += count; break; default: subFormat(tag, count, delegate, toAppendTo, useDateFormatSymbols); break; } } return toAppendTo; }
calendar.setTime(date)這條語句改變了calendar,稍后,calendar還會用到(在subFormat方法里),而這就是引發(fā)問題的根源。想象一下,在一個多線程環(huán)境下,有兩個線程持有了同一個SimpleDateFormat的實例,分別調(diào)用format方法:
線程1調(diào)用format方法,改變了calendar這個字段。
中斷來了。
線程2開始執(zhí)行,它也改變了calendar。
又中斷了。
線程1回來了,此時,calendar已然不是它所設(shè)的值,而是走上了線程2設(shè)計的道路。如果多個線程同時爭搶calendar對象,則會出現(xiàn)各種問題,時間不對,線程掛死等等。
分析一下format的實現(xiàn),我們不難發(fā)現(xiàn),用到成員變量calendar,唯一的好處,就是在調(diào)用subFormat時,少了一個參數(shù),卻帶來了這許多的問題。其實,只要在這里用一個局部變量,一路傳遞下去,所有問題都將迎刃而解。
這個問題背后隱藏著一個更為重要的問題--無狀態(tài):無狀態(tài)方法的好處之一,就是它在各種環(huán)境下,都可以安全的調(diào)用。衡量一個方法是否是有狀態(tài)的,就看它是否改動了其它的東西,比如全局變量,比如實例的字段。format方法在運行過程中改動了SimpleDateFormat的calendar字段,所以,它是有狀態(tài)的。
這也同時提醒我們在開發(fā)和設(shè)計系統(tǒng)的時候注意下一下三點:
1.自己寫公用類的時候,要對多線程調(diào)用情況下的后果在注釋里進行明確說明
2.對線程環(huán)境下,對每一個共享的可變變量都要注意其線程安全性
3.我們的類和方法在做設(shè)計的時候,要盡量設(shè)計成無狀態(tài)的
三.解決辦法
1.需要的時候創(chuàng)建新實例:
package com.peidasoft.dateformat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil { public static String formatDate(Date date)throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); } public static Date parse(String strDate) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.parse(strDate); }}
說明:在需要用到SimpleDateFormat 的地方新建一個實例,不管什么時候,將有線程安全問題的對象由共享變?yōu)榫植克接卸寄鼙苊舛嗑€程問題,不過也加重了創(chuàng)建對象的負擔。在一般情況下,這樣其實對性能影響比不是很明顯的。
2.使用同步:同步SimpleDateFormat對象
package com.peidasoft.dateformat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateSyncUtil { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static String formatDate(Date date)throws ParseException{ synchronized(sdf){ return sdf.format(date); } } public static Date parse(String strDate) throws ParseException{ synchronized(sdf){ return sdf.parse(strDate); } } }
說明:當線程較多時,當一個線程調(diào)用該方法時,其他想要調(diào)用此方法的線程就要block,多線程并發(fā)量大的時候會對性能有一定的影響。
3.使用ThreadLocal:
package com.peidasoft.dateformat;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class ConcurrentDateUtil { private static ThreadLocalthreadLocal = new ThreadLocal() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }; public static Date parse(String dateStr) throws ParseException { return threadLocal.get().parse(dateStr); } public static String format(Date date) { return threadLocal.get().format(date); }}
另外一種寫法:
package com.peidasoft.dateformat;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class ThreadLocalDateUtil { private static final String date_format = "yyyy-MM-dd HH:mm:ss"; private static ThreadLocalthreadLocal = new ThreadLocal(); public static DateFormat getDateFormat() { DateFormat df = threadLocal.get(); if(df==null){ df = new SimpleDateFormat(date_format); threadLocal.set(df); } return df; } public static String formatDate(Date date) throws ParseException { return getDateFormat().format(date); } public static Date parse(String strDate) throws ParseException { return getDateFormat().parse(strDate); } }
說明:使用ThreadLocal, 也是將共享變量變?yōu)楠毾恚€程獨享肯定能比方法獨享在并發(fā)環(huán)境中能減少不少創(chuàng)建對象的開銷。如果對性能要求比較高的情況下,一般推薦使用這種方法。
4.拋棄JDK,使用其他類庫中的時間格式化類:
1.使用Apache commons 里的FastDateFormat,宣稱是既快又線程安全的SimpleDateFormat, 可惜它只能對日期進行format, 不能對日期串進行解析。
2.使用Joda-Time類庫來處理時間相關(guān)問題
做一個簡單的壓力測試,方法一最慢,方法三最快,但是就算是最慢的方法一性能也不差,一般系統(tǒng)方法一和方法二就可以滿足,所以說在這個點很難成為你系統(tǒng)的瓶頸所在。從簡單的角度來說,建議使用方法一或者方法二,如果在必要的時候,追求那么一點性能提升的話,可以考慮用方法三,用ThreadLocal做緩存。
Joda-Time類庫對時間處理方式比較完美,建議使用。
標簽:
相關(guān)推薦:
精彩放送:
- []屈子祠簡介_屈子
- []世界資訊:公積金余額1萬能貸款多少
- []【環(huán)球熱聞】2022年各大銀行大額存單利率表一覽,五大行利率一覽
- []建行卡開戶行查詢方式
- []1分利是什么意思?
- []最新快訊!TD早報 | 迪士尼CEO承認門票漲價“過于激進”;疫后我國首家境外中國簽證中心開業(yè)
- []即時看!貨幣政策與財政政策的區(qū)別,有以下四點區(qū)別
- []郵政銀行上班時間 郵政銀行營業(yè)時間
- []重點聚焦!字節(jié)跳動相關(guān)概念股票
- []世界微頭條丨全世界經(jīng)濟排名,世界各國gdp排名一覽
- []余額寶收益率 余額寶的收益率多少
- []今日看點:2022中國通脹率一覽表,2%到3%左右
- []【世界快播報】不止浙商證券 東吳證券也擬參拍34.71億股民生證券股份
- []天天觀點:貴州輪胎:截至2023年3月10日收市后,公司的股東戶數(shù)為45,877戶
- []每日聚焦:景瑞控股:達成復牌條件 涉及49.1億存款獨立調(diào)查已完成
- []齊界辭去大連萬達商管董事長職務(wù) 肖廣瑞獲選接任
- []全球觀熱點:景瑞控股2021年凈利3.94億 獨立核數(shù)師指經(jīng)營存在重大不確定性
- []當前速遞!安徽省技能人才振興計劃實施方案 2014—2017年
- []即時焦點:怎么投資掙錢
- []網(wǎng)上貸款怎么還款,有以下六種方法
- []10轉(zhuǎn)10股什么意思
- []每日看點!新三板申購規(guī)則詳解
- []天天速遞!話費預(yù)存款什么意思
- []焦點速遞!浙商證券擬參拍泛海控股所持34.71億股民生證券股份 起價58.65億
- []焦點觀察:td指標,是德馬克指標
- []訊息:中了可轉(zhuǎn)債怎么操作,有以下三點
- []【環(huán)球熱聞】一般車險多少錢 車險一般多少錢一年
- []環(huán)球快播:建設(shè)銀行2020年大額存款利率
- []環(huán)球微頭條丨金融app有哪些,十大網(wǎng)貸軟件一覽
- []世界速看:恒達集團發(fā)盈警 估計2022年權(quán)益股東應(yīng)占溢利將減少65%至80%
- []世界簡訊:金太陽:3月10日公司高管楊偉減持公司股份合計3.41萬股
- []每日聚焦:美聯(lián)儲利率掉期預(yù)計美聯(lián)儲將在年底前降息50個基點
- []長亮科技:3月10日公司高管王長春、魏鋒、徐亞麗、鄭康減持公司股份合計104.75萬股
- []銅牛信息:3月10日公司高管李超成減持公司股份合計4.24萬股
- []三元生物:3月10日公司高管崔振乾減持公司股份合計5.26萬股
- []焦點播報:跌停的股票可以買進嗎 當然可以
- []余額寶最聰明的存錢法
- []交響旗艦走出北京,國家大劇院管弦樂團與上海再相約
- []什么是余額寶理財
- []全球微動態(tài)丨持倉限額
- []金融危機如何應(yīng)對
- []新消息丨華僑城擬調(diào)劑對陜西華僑城商業(yè)擔保額度 由5億增至10.236億
- []全球球精選!青木股份:公司品牌數(shù)字營銷業(yè)務(wù)涉及在抖音及快手等多個新媒體平臺的投放業(yè)務(wù)
- []世界微速訊:中南建設(shè)為中南建筑2.2億元融資延長一年繼續(xù)提供擔保
- []世界速看:繼硅谷銀行后 美國簽名銀行因系統(tǒng)性風險被關(guān)閉
- []世界最資訊丨圓通速遞:3月10日林凱增持公司股份合計5000股
- []環(huán)球百事通!沃格光電:3月9日公司高管熊偉增持公司股份合計7000股
- []如何查詢股票中簽號碼,有以下三點
- []環(huán)球快消息!人民幣為什么一直在貶值,有以下兩種原因
- []直播預(yù)告|2023 環(huán)球旅訊數(shù)智論壇(北京站)直播預(yù)約通道正式開啟
- []實時:股票黃色線是什么線
- []指數(shù)型基金什么意思
- []天天微速訊:銀行叫號機功能,分以下四點
- []微頭條丨中交地產(chǎn)定增方案獲股東大會審議通過 此前擬募資不超35億元
- []全球消息!飛馬國際:本公司的主要經(jīng)營業(yè)務(wù)為環(huán)保新能源業(yè)務(wù)和供應(yīng)鏈管理服務(wù),未涉及氫能源領(lǐng)域相關(guān)業(yè)務(wù)
- []天天亮點!泛海控股聘任嚴珊明為副總裁 李雋為風控法務(wù)總監(jiān)
- []*ST易尚:公司未參加此次交易會
- []世界今日訊!朗進科技:截止2023年3月10日的公司股東人數(shù)是8919人
- []當前短訊!越秀資本上調(diào)“20越控01”存續(xù)期票面利率至2.95%
- []匠心家居:公司與硅谷銀行無任何業(yè)務(wù)往來。硅谷銀行在美國的北加州,公司的美國行政與財務(wù)中心在南加州
- []全球球精選!新湖中寶擬為控股股東新湖集團提供4.06億元擔保
- []環(huán)球視點!因個人工作原因 朱大興辭去三湘印象證券事務(wù)代表職務(wù)
- []乳鐵蛋白奶粉排行榜前十位?誰才是真正的含量“王”者
- []實時:公司汽車可以抵押貸款嗎,可以
- []【世界新視野】2020年房貸利率是多少
- []全球速看:養(yǎng)老概念十大龍頭股,核心概念龍頭股一覽
- []環(huán)球速看:投保基金繳納比例是什么
- []全球觀速訊丨石墨烯手機概念股票龍頭一覽表,2023石墨烯手機相關(guān)上市公司有哪些
- []全球微動態(tài)丨新能源車出口強勢增長特征延續(xù),3月車市有望持續(xù)升溫
- []全球百事通!"14蘇國資MTN001"將支付本年利息 票面利率6.50%
- []財面兒丨綠地香港1-2月集團合約銷售約人民幣22.28億元 同比增長10.9%
- []每日消息!鄭州建投集團10億元中期票據(jù)將付息 利率4.28%
- []ST摩登索賠案一審判決已有投資者勝訴 律師明確可索賠區(qū)間
- []今日熱議:即墨旅投6億中期票據(jù)將到期兌付 利率4.32%
- []家居丨亞廈股份控股股東亞廈控股質(zhì)押4300萬股,占總股本3.21%
- []東方雨虹:截至2023年3月10日,公司股東總數(shù)為146,253戶
- []招商南油:alalei86,目前公司生產(chǎn)經(jīng)營情況一切正常
- []天天通訊!邯鄲曲周:研究生團隊進村入戶 宣講黨的二十大精神
- []【獨家焦點】美元加息影響,有以下四點
- []債券資金項目是什么意思
- []如何購買外幣,在相關(guān)銀行APP購買
- []螞蟻金服概念股票龍頭一覽表,2023螞蟻金服相關(guān)上市公司有哪些
- []隔離保險在哪買,有以下三種方法
- []成都推出12個保租房項目共8200套房源 累計已籌集207個項目
- []通訊!"20中天金融MTN001"完成要素變更 15億元本金兌付延期5年
- []重藥控股:截至2023年3月10日,公司股東總數(shù)為44399戶
- []環(huán)球快訊:善水科技:公司目前正在進行部分設(shè)備安裝及調(diào)試工作,公司將積極推動試生產(chǎn)前準備工作,爭取加快進行試生產(chǎn)
- []天天短訊!西安市雁塔區(qū)城投集團30億元私募債券項目更新至“已反饋”
- []匯豐回應(yīng)收購硅谷銀行英國子公司:能加強在英商業(yè)銀行特許經(jīng)營權(quán)
- []環(huán)球快資訊丨漳州發(fā)展:截止2023年3月10日,公司股東人數(shù)約為4.9萬戶
- []天天快看:招商積余福建公司中標漳州4個城市公共服務(wù)項目
- []環(huán)球微頭條丨gdp排名全國2021前十,超過10萬億的有2個
- []長期存錢哪個銀行最好,選擇大銀行存錢最好
- []洞察市場需求,箭牌家居開創(chuàng)創(chuàng)新發(fā)展新路徑
- []每日時訊!美國非農(nóng)數(shù)據(jù)與黃金的關(guān)系
- []全球速讀:沒工作可以貸款嗎,可以
- []全球觀速訊丨人民幣縮水貶值對樓市什么影響
- []解鎖千面生活的秘辛——寧波阪急春日時尚大賞
- []瑞金市城市發(fā)展投資集團10億公司債即將付息 票面利率6.80%
- []合肥新鴻安商城爛尾近30年將實施拆遷 采取貨幣補償、產(chǎn)權(quán)調(diào)換等方案
- 全球熱點評!HSE配置是什么?頻率4-16MHZ的使用方法
- 深入理解Java:SimpleDateFormat安全的時間格式化
- 【當前熱聞】豐誠物業(yè)新增投資10萬元在武漢設(shè)立物業(yè)公司 持股比例100%
- 江西城磊地產(chǎn)40%股權(quán)掛牌轉(zhuǎn)讓 底價2000萬元
- finally的作用是什么?java異常處理之finally
- 當前觀點:三年存款利率2022最新,十大銀行三年定期利率一覽
- 全球資訊:航餐難吃,某大型航司每年浪費價值上億元?飛機上提供花錢點餐服務(wù),靠譜嗎?
- 銀行存單是什么意思
- 【世界時快訊】2021年全國城市經(jīng)濟總量排名,上海排在第一位
- 支付寶轉(zhuǎn)賬手續(xù)費多少
- B站注冊資本增幅400%至5億 目前由陳睿全資持股
- 光源資本出任獨家財務(wù)顧問 沐曦集成電路10億元A輪融資宣告完成
- 巨輪智能2021年上半年營收11.24億元 期內(nèi)研發(fā)費用投入增長19.05%
- 紅棗期貨尾盤拉升大漲近6% 目前紅棗市場總庫存約30萬噸
- 嘉銀金科發(fā)布2021年Q2財報 期內(nèi)凈利潤達1.27億元同比增長208%
- 成都銀行2021上半年凈利33.89億元 期內(nèi)實現(xiàn)營收同比增長17.27億元
- 汽車之家發(fā)布2021年第二季度業(yè)績 期內(nèi)新能源汽車品牌收入增長238%
- 中信銀行上半年實現(xiàn)凈利潤290.31億元 期末不良貸款余額706.82億元
- 光伏概念掀起漲停潮交易價格創(chuàng)新高 全天成交額達1.29億元
- 上半年生物藥大增45% 關(guān)鍵財務(wù)指標好轉(zhuǎn)營收賬款持續(xù)下降
- 天天觀焦點:惠譽確認新鴻基地產(chǎn)的長期發(fā)行人違約評級為「A」
- 全球聚焦:ST國華:公司會結(jié)合相關(guān)法律法規(guī)以及公司實際情況進行綜合考慮
- 【世界聚看點】北京建工擬發(fā)行超短期融資券及中票共52億元 用于償還有息負債
- 今日熱議:今日散戶搶籌的50只個股
- 遠興能源:截止2023年3月10日,公司股東人數(shù)為93,260戶
- 世界觀速訊丨旺能環(huán)境:目前是立鑫項目負責動力電池回收再生,一期的產(chǎn)能是3000金噸的鈷鎳,1000噸的碳酸鋰
- 南京安居建設(shè)集團10億公司債即將兌付及摘牌 利率3.85%
- 世界快看點丨今日主力資金流入的前十大板塊
- 箭牌“一起綠”事件,洞察中國品牌江河萬古流
- 全球速看:電信手機充q幣沒用了(電信手機充q幣)
- 今頭條!年輕人帶火賞花游 ,00后排名第三占比兩成
- 天天即時看!工行活期存款利率表2022最新,利率為0.3%
- 【環(huán)球新要聞】中國銀行活期利率
- 到底是賬戶還是帳戶
- 全球關(guān)注:蘇州園區(qū)公積金貸款,簡單五步輕松辦理
- 箭牌衛(wèi)浴X廣州設(shè)計周 | 用智慧去探尋生活可能
- 【環(huán)球時快訊】銀行卡維護中是啥意思,銀行系統(tǒng)正在進行升級
- 天天通訊!杭州良渚文化城集團完成發(fā)行15億短期融資券 利率3.0%
- 環(huán)球熱文:3月13日勤上股份漲停分析:在線教育,智慧城市,智慧燈桿概念熱股
- 拼多多跨境電商Temu計劃3月25日上線英國站點
- 3月13日四川黃金漲停分析
- 青島:推進歷史城區(qū)保護更新、5A景區(qū)創(chuàng)建和老城區(qū)申遺 年度投資28.3億元
- 佛山出臺舉措推進制造業(yè)發(fā)展 支持企業(yè)開展并購實現(xiàn)換道發(fā)展
- 杰恩設(shè)計:截至2023年3月10日,公司股東總戶數(shù)為4,758戶
- 廣西南方鴻基投資所持鴻基物業(yè)100%股權(quán)將拍賣 起拍價350萬元
- 環(huán)球熱文:百度文心一言生態(tài)圈再擴大,把握商業(yè)化落地投資機會
- 3月13日用友網(wǎng)絡(luò)漲停分析:信創(chuàng),國產(chǎn)軟件,數(shù)字經(jīng)濟概念熱股
- 建行補卡流程,分以下七點
- 中國農(nóng)業(yè)銀行存款利率2022,各類存款利率一覽
- 世界今頭條!酒店代訂,正途還是騙局?
- 全球消息!云南旅游依然火熱,旅行社卻沒賺到錢?
- 今日觀點!留抵退稅什么意思
- 焦點消息!中國銀行兌換外幣流程,有以下四步
- 天天熱門:國債逆回購如何操作及操作技巧
- 全球快訊:榮盛按下復產(chǎn)“加速鍵”,奮力搶工期,全力保交付
- 焦點訊息:一季度凈利最高預(yù)增逾兩倍,天合光能“辛苦錢”還能賺多久?
- 天天百事通!「美聯(lián)樓價指數(shù)」連升9周
- 熱頭條丨貝殼整裝品牌"被窩家裝"總部旗艦店開業(yè) 面積擴增至6100㎡
- 天天視訊!廣西2022年住房公積金提取434.64億元 住房消費占78.09%
- 天天關(guān)注:國際金價短線或回落至1862美元
- 中科環(huán)保:黨的二十大進一步強調(diào),推進以人為核心的新型城鎮(zhèn)化,加快農(nóng)業(yè)轉(zhuǎn)移人口市民化
- 天天亮點!【BT金融分析師】百度計劃將AI全面整合到業(yè)務(wù)中,分析師稱其腳踏實地不像西方企業(yè)
- 當前要聞:永順泰:公司2022年1-9月財務(wù)費用主要由匯兌損益及借款利息支出構(gòu)成
- 世界速讀:交銀國際信托轉(zhuǎn)讓大河西城市棚改35.33%股份 湘潭城鄉(xiāng)建設(shè)集團接盤
- 全球新消息丨奕東電子:公司按相關(guān)規(guī)定的時間要求披露年報和季報,具體情況請留意后續(xù)披露的定期報告
- 招商銀行金葵花卡條件,有以下兩個條件
- 當前觀點:什么是建行紙黃金
- 凈值估算是什么意思
- 通貨膨脹的影響和后果
- 三維天地助力乳品企業(yè)全流程線上智能化管理
- 每日熱聞!雙創(chuàng)50是什么意思
- 焦點要聞:中國移動投訴中心網(wǎng)站_中國移動投訴中心
- 全球熱議:遠洋集團12億公司債將于3月20日到期兌付 利率4.59%
- 環(huán)球快資訊丨格力地產(chǎn):業(yè)績增長與房地產(chǎn)回暖有關(guān) 重組工作正在抓緊審計評估
- 熱訊:一個月HIBOR連升7日
- 視焦點訊!濟南大明湖悅苑酒店3月12日開業(yè) 共配置客房97間
- 天天熱門:一張圖:黃金原油外匯股指"樞紐點+多空占比"一覽(2023/03/13周一)
- 動態(tài):利好黃金!三天內(nèi)兩家美國銀行倒閉,高盛不再預(yù)測美聯(lián)儲本月加息
- 今頭條!長纜科技:對220kV/3kA?超導電纜終端系統(tǒng),公司與相關(guān)的科研院所合作,開展了理論研究和前期調(diào)研
- 全球快看:中科環(huán)保:截至2月28日,公司股東人數(shù)為59,625戶
- 環(huán)球熱消息:綠地香港首2月合約銷售額約22.28億元 同比增長11%
- 【世界熱聞】平均工資指數(shù)怎么算
- 天天觀焦點:股票元旦節(jié)休市幾天2023,休市三天
- 全球最資訊丨建行短信服務(wù)費 建行短信通知服務(wù)費
- 全球視點!網(wǎng)上兼職可靠嗎 網(wǎng)上兼職是真的嗎
- 銀行pos機怎樣收手續(xù)費的,各銀行pos機手續(xù)費一覽
- 每日快報!蕪湖經(jīng)開投資完成發(fā)行1.1億中期票據(jù) 票面利率3.20%
- 全球要聞:安溪城建集團13億元私募債券項目更新至“已受理”
- 世界時訊:“21大連萬達MTN001”于3月13日起進行回售 并上調(diào)利率至6.6%
- 越秀資本完成發(fā)行10億中期票據(jù) 票面利率3.15%
- 當前熱點-創(chuàng)意信息:公司將積極參與國家數(shù)字經(jīng)濟相關(guān)建設(shè)中,目前數(shù)據(jù)庫及其他業(yè)務(wù)情況將在定期報告中披露,煩請關(guān)注
- 天天微資訊!南昌江旅都市方舟預(yù)計今年年中營業(yè)
- 天天時訊:麥捷科技:公司截至3月10日的股東戶數(shù)為40,413
- 速看:2021年產(chǎn)假是158天還是98天,大多數(shù)地方是158天
- 天天快消息!人民幣升值的影響
- 貢獻毛益率 貢獻毛益利率的計算公式是什么
- 如何快速辦理貸款,有以下兩種方法
- 2023全國合作商賦能大會 暨Topmee桃花面品牌升級發(fā)布會圓滿成功
- 全球新動態(tài):怎樣存款利息高,有以下三種方法
- 全球速遞!菲律賓旅游局白艾文:“海島游”2023年在中國市場將最受歡迎
- 快報:樾見西貴 始于天元 北京城建“龍樾系”全新樣板間,煥新四環(huán)西貴之地
- 世界熱頭條丨廣州知識城集團完成發(fā)行10億短期融資券 票面利率2.6%
- 全球?qū)崟r:國信期貨早評:就業(yè)供需改善疊加避險沖擊,金銀繼續(xù)反彈
- 每日關(guān)注!2月份鄭州商品住房銷售12583套 同比增長120.31%
- 3月13日匯市觀潮:歐元、英鎊和日元技術(shù)分析
- 【天天快播報】盡管擔心利率上升,交易商預(yù)計下半年油價達100美元!背后有何驅(qū)動因素?
- 通訊!壽光城投投資5億短期融資券將兌付 票面利率6.50%
- 成都:到2025年新能源汽車產(chǎn)業(yè)規(guī)模突破1500億
- 【新要聞】煌上煌:截至2023年3月10日公司股東人數(shù)為43, 537人
- 環(huán)球今日訊!格力博:公司未在硅谷銀行有存款
- 天天報道:避險情緒大增!黃金的投資邏輯該怎么看?
- 焦點熱門:中觸媒:公司始終按業(yè)務(wù)的實際需求,對外匯儲備進行合理管理
- 【世界熱聞】炒股軟件有哪些 有哪些炒股軟件
- 中國車險十大排名,車險公司排名一覽
- 全球速讀:文旅局長們卷“出圈” 當?shù)芈糜螣岫壬蠞q了沒?
- 焦點日報:一個支付寶可以綁定幾個淘寶
- 世界訊息:今日dnf控偶師怎么快速到11級(dnf控偶師怎么快速升級求高手指教!!!)
- 股市元旦節(jié)休市時間表2023,一共三天
- 今日熱搜:一個月接五個團,招聘廣告掛了兩個月還沒招滿,最近導游有多搶手?
- 環(huán)球最資訊丨股票跌停意味著什么