開心一笑
【真的很羨慕那些五一放假可以出去玩的朋友
像我們這種一年四季隨時可以出去玩的人综看,是根本沒法體會那種激動的心情】
提出問題
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ù)傳遞下去毅糟,歡迎點贊红选、頂、歡迎留下寶貴的意見姆另、多謝支持喇肋!