Postgresql編碼唯一鍵,IDEA控制臺緩存狂男,圖片Base64轉碼

開心一笑

【真的很羨慕那些五一放假可以出去玩的朋友

像我們這種一年四季隨時可以出去玩的人综看,是根本沒法體會那種激動的心情】

唯美圖片

提出問題

Intellij IDEA 控制臺緩存區(qū)大小如何修改?岖食?红碑?
PostgreSql的唯一性索引引發(fā)的問題?泡垃?析珊?
Base64圖片編碼轉換問題?蔑穴?忠寻?
postgresql數(shù)據(jù)庫編碼問題?存和?奕剃?

解決問題

前言

這2天工作中,碰到了4個問題捐腿,耗了好多時間纵朋,整理分享下。

Intellij IDEA 控制臺緩存區(qū)大小修改

業(yè)務場景

一份 user.xls 文件叙量,里面有1000條數(shù)據(jù)倡蝙。通過自己寫的代碼,將這1萬條數(shù)據(jù)生成 sql 語句绞佩,打印到控制臺寺鸥。 由于 Intellij IDEA 控制臺默認的緩存區(qū)只有 1024 KB猪钮,超過大小限制的就會被清除,而且還會顯示【too much output to process】

解決方案

可通過如下配置界面進行修改Override console cycle buffer size(Settings→Editor→General→Console)胆建,單位為KB

這里寫圖片描述

完美解決......

PostgreSql的唯一性索引引發(fā)的問題

業(yè)務場景

數(shù)據(jù)庫有一張表 NewTable

CREATE TABLE "public"."NewTable" (
"id" varchar(32) NOT NULL,
"name" varchar(100),
"code" varchar(100),
PRIMARY KEY ("id")
)
WITH (OIDS=FALSE)
;
//這里由于誤操作烤低,建立了一個唯一索引
CREATE UNIQUE INDEX "idx_code" ON "public"."NewTable" USING btree ("code");

在數(shù)據(jù)庫客戶端執(zhí)行如下腳本:

//插入一條數(shù)據(jù)
INSERT INTO "public"."ay_test" ("id", "name", "code") VALUES ('1', '1', '1');
//插入一條數(shù)據(jù),這里code和上一條數(shù)據(jù)code一樣
INSERT INTO "public"."ay_test" ("id", "name", "code") VALUES ('2', '1', '1');

報錯:

[SQL]INSERT INTO "public"."ay_test" ("id", "name", "code") VALUES ('2', '1', '1');

[Err] ERROR:  duplicate key value violates unique constraint "idx_code"
DETAIL:  Key (code)=(1) already exists.

解決方案

解決方法也是比較簡單的:

//刪除索引   
DROP INDEX "idx_code" ;
//創(chuàng)建索引(注意不是唯一索引)
CREATE INDEX "idx_code" ON "public"."ay_test" USING btree ("code");
//插入數(shù)據(jù)驗證
INSERT INTO "public"."ay_test" ("id", "name", "code") VALUES ('3', '1', '1');
INSERT INTO "public"."ay_test" ("id", "name", "code") VALUES ('4', '1', '1');

唯一索引知識補充

當前只有B-tree索引才能使用唯一性索引笆载,唯一性索引可以使單字段和多字段綁定在一個索引上扑馁。

當一個索引被定義為唯一性索引時,那么無論是單字段還是多字段的索引凉驻,其涉及到的字段在表中的值是不能重復的腻要,類似于主鍵和聯(lián)合主鍵的意思。需要注意的是 null 值是不相等的涝登,即第一行某字段為null第二行該字段也為null雄家,那么這兩個字段值不相等

Base64圖片編碼轉換問題

業(yè)務場景

由于公司手機APP端需要下載圖片胀滚,要求后端返回的圖片是經(jīng)過Base64位編碼過的字符串趟济,中間也廢了好多時間,特意整理下咽笼。

解決方案

這里只貼出部分代碼:

@Override
public String download(String id) throws Exception {
    SysAttachment sysAttachment = (SysAttachment)sysAttachmentService.findById(id);
    String name = sysAttachment.getName() + this.POINT + sysAttachment.getType();
    String path = sysAttachment.getPath();
    FileInputStream in = null;
    byte[] b = null;
    try {
        File file = new File(path);
        if (file.exists()) {
            try {
                //文件inputStream
                in = new FileInputStream(path);
                b = new byte[in.available()];
                in.read(b);
            } finally {
                if (in != null) {
                    in.close();
                    in = null;
                }
            }
        } else {
            throw new ResourceNotFoundException("文件: \"" + name + "\"不存在!");
        }
    } catch (IOException var8) {
        throw new SystemException(ErrorCode.Common.downloadFailed);
    }
    // 對字節(jié)數(shù)組Base64編碼(這里是重點)
    return Base64.encodeBase64String(b);
}

這里使用 Base64.encodeBase64String(b) 而不使用

BASE64Encoder encoder = new BASE64Encoder();  
encoder.encode(data);//返回Base64編碼過的字節(jié)數(shù)組字符串  

因為根據(jù)RFC822規(guī)定顷编,BASE64Encoder編碼每76個字符,還需要加上一個回車換行
部分Base64編碼的Java庫還按照這個標準實行剑刑。

換用Apache的 commons-codec.jar媳纬, Base64.encodeBase64String(byte[])得到的編碼字符串是不帶換行符的。

postgresql數(shù)據(jù)庫編碼問題

業(yè)務場景

執(zhí)行數(shù)據(jù)庫查詢的時候叛甫,控制臺出現(xiàn)如下錯誤:

Cause: org.postgresql.util.PSQLException: ERROR: character with byte sequence 0xc2 0xa0 in encoding "UTF8" has no equivalent in encoding "GBK"

解決方案

原因是客戶端字符集和插入內容的字符集不匹配层宫。PostgreSQL默認不做字符集轉換杨伙,如果數(shù)據(jù)庫是UTF8的字符集其监,一般終端的中文字符集會設置為GBK(可以看LANG環(huán)境變量確認),所以這個編碼不經(jīng)轉換的存入數(shù)據(jù)庫中限匣,而數(shù)據(jù)庫是UTF8的抖苦,PostgreSQL發(fā)現(xiàn)不是UTF8編碼,就報上面的錯米死。
要想打開自動字符集轉換功能锌历,必須告訴 pg 客戶端使用的字符集。這時可以設置pg客戶端編碼為GBK峦筒,pg就會自動做字符集轉換究西。

讀書感悟

來自《憤怒的葡萄》

  • “住慣了的地方是很難離開的,”凱綏說物喷÷辈模“想慣了的道理也很難丟掉遮斥。“
  • “不存過高的希望扇丛,就不會讓失望給搞垮术吗。”

經(jīng)典故事

【蒼蠅發(fā)現(xiàn)自己模樣很像蜜蜂帆精,十分高興较屿,打算冒充蜜蜂去花叢里欺騙花的感情、盜取花蜜卓练“可是它在花叢里飛來飛去不知飛了幾個來回,卻不見有一朵花向它綻放笑臉襟企,他十分不解末贾,轉頭問蜜蜂到底原因何在?蜜蜂笑著回答說:”你只是外形像我整吆,事實上并不是我拱撵!因此,即使是一輩子蹲在花叢里表蝙,花也不會把你當成我拴测!“
啟示:外表可以相似,但內涵卻是無法取代的府蛇〖鳎】

生活常識

【披薩正確吃法】

  • 吃比薩餅時應將已切好的餅(廚師已切好)取一塊放入自己的餐盤中用刀、叉食用汇跨。
  • 食用前可按自己口味加上一些胡椒务荆。
  • 切好的餅呈三角狀,左手拿叉穷遂、右手拿刀的人將餅的尖端轉向左側函匕,從此處下刀。
  • 要切一塊吃一塊蚪黑,先切碎再吃不雅觀盅惜,也不易保持溫度。

【拿鐵的正確喝法】

  • 一般是先用咖啡勺忌穿,攪勻了之后抒寂,在飲用。喝時咖啡勺不要留在杯中掠剑。
  • 飲用拿鐵之前可以先喝一杯冰水屈芜,充實浮現(xiàn)咖啡的味道。
  • 拿鐵咖啡的飲用量要天天節(jié)制在1杯以內朴译。

大神文章

【1】Base64編碼出現(xiàn)換行符
【2】postgresql----唯一索引井佑,表達式索引糕珊,部分索引
【3】invalid byte sequence for encoding "UTF8": 0xe99d2c

其他

如果有帶給你一絲絲小快樂,就讓快樂繼續(xù)傳遞下去毅糟,歡迎點贊红选、頂、歡迎留下寶貴的意見姆另、多謝支持喇肋!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迹辐,隨后出現(xiàn)的幾起案子蝶防,更是在濱河造成了極大的恐慌,老刑警劉巖明吩,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件间学,死亡現(xiàn)場離奇詭異,居然都是意外死亡印荔,警方通過查閱死者的電腦和手機低葫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仍律,“玉大人嘿悬,你說我怎么就攤上這事∷” “怎么了善涨?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長草则。 經(jīng)常有香客問我钢拧,道長,這世上最難降的妖魔是什么炕横? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任源内,我火速辦了婚禮,結果婚禮上看锉,老公的妹妹穿的比我還像新娘姿锭。我一直安慰自己,他們只是感情好伯铣,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轮纫,像睡著了一般腔寡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掌唾,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天放前,我揣著相機與錄音忿磅,去河邊找鬼。 笑死凭语,一個胖子當著我的面吹牛葱她,可吹牛的內容都是我干的。 我是一名探鬼主播似扔,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吨些,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炒辉?” 一聲冷哼從身側響起豪墅,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎黔寇,沒想到半個月后偶器,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡缝裤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年屏轰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憋飞。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡亭枷,死狀恐怖,靈堂內的尸體忽然破棺而出搀崭,到底是詐尸還是另有隱情叨粘,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布瘤睹,位于F島的核電站升敲,受9級特大地震影響,放射性物質發(fā)生泄漏轰传。R本人自食惡果不足惜驴党,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望获茬。 院中可真熱鬧港庄,春花似錦、人聲如沸恕曲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佩谣。三九已至把还,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吊履。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工安皱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艇炎。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓酌伊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缀踪。 傳聞我的和親對象是個殘疾皇子居砖,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • 前段時間公司內部博客上凱哥分享了一篇關于mysql字符集編碼的文章,之前我對mysql字符集一塊基本沒有深究過,看...
    __七把刀__閱讀 6,440評論 14 18
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)辜贵,斷路器悯蝉,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 1、引言 數(shù)據(jù)庫設計過程中表托慨、字段等的命名規(guī)范也算是設計規(guī)范的一部分鼻由,不過設計規(guī)范更多的是為了確保數(shù)據(jù)庫設計的合理...
    SnowflakeCloud閱讀 40,996評論 0 48
  • 黃花菜已涼閱讀 4,570評論 3 60
  • 不到萬不得已就將就著看本文吧,別看原文了.錯別字多就算了婆硬,到后面還有還多語句的示例代碼都張冠李戴了.當然狠轻,本文可能...
    Airmole閱讀 1,657評論 0 4