Postgresql编码唯一键,IDEA控制台缓存,图片Base64转码
开心一笑【真的很羡慕那些五一放假可以出去玩的朋友 像我们这种一年四季随时可以出去玩的人,是根本没法体会那种激动的心情】 提出问题Intellij IDEA 控制台缓存区大小如何修改??? 解决问题前言这2天工作中,碰到了4个问题,耗了好多时间,整理分享下。 Intellij IDEA 控制台缓存区大小修改业务场景一份 user.xls 文件,里面有1000条数据。通过自己写的代码,将这1万条数据生成 sql 语句,打印到控制台。 由于 Intellij IDEA 控制台默认的缓存区只有 1024 KB,超过大小限制的就会被清除,而且还会显示【too much output to process】 解决方案可通过如下配置界面进行修改Override console cycle buffer size(Settings→Editor→General→Console),单位为KB 完美解决…… PostgreSql的唯一性索引引发的问题业务场景数据库有一张表 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"); 在数据库客户端执行如下脚本: //插入一条数据 INSERT INTO "public"."ay_test" ("id","name","code") VALUES ('1','1','1'); //插入一条数据,这里code和上一条数据code一样 INSERT INTO "public"."ay_test" ("id","code") VALUES ('2','1'); 报错: [SQL]INSERT INTO "public"."ay_test" ("id",'1'); [Err] ERROR: duplicate key value violates unique constraint "idx_code" DETAIL: Key (code)=(1) already exists. 解决方案解决方法也是比较简单的: //删除索引 DROP INDEX "idx_code" ; //创建索引(注意不是唯一索引) CREATE INDEX "idx_code" ON "public"."ay_test" USING btree ("code"); //插入数据验证 INSERT INTO "public"."ay_test" ("id","code") VALUES ('3','1'); INSERT INTO "public"."ay_test" ("id","code") VALUES ('4','1'); 唯一索引知识补充当前只有B-tree索引才能使用唯一性索引,唯一性索引可以使单字段和多字段绑定在一个索引上。 当一个索引被定义为唯一性索引时,那么无论是单字段还是多字段的索引,其涉及到的字段在表中的值是不能重复的,类似于主键和联合主键的意思。需要注意的是 null 值是不相等的,即第一行某字段为null第二行该字段也为null,那么这两个字段值不相等。 Base64图片编码转换问题业务场景由于公司手机APP端需要下载图片,要求后端返回的图片是经过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); } // 对字节数组Base64编码(这里是重点) return Base64.encodeBase64String(b); } 这里使用 Base64.encodeBase64String(b) 而不使用 BASE64Encoder encoder = new BASE64Encoder(); encoder.encode(data);//返回Base64编码过的字节数组字符串 因为根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行 换用Apache的 commons-codec.jar, Base64.encodeBase64String(byte[])得到的编码字符串是不带换行符的。 postgresql数据库编码问题业务场景执行数据库查询的时候,控制台出现如下错误: Cause: org.postgresql.util.PSQLException: ERROR: character with byte sequence 0xc2 0xa0 in encoding "UTF8" has no equivalent in encoding "GBK" 解决方案原因是客户端字符集和插入内容的字符集不匹配。PostgreSQL默认不做字符集转换,如果数据库是UTF8的字符集,一般终端的中文字符集会设置为GBK(可以看LANG环境变量确认),所以这个编码不经转换的存入数据库中,而数据库是UTF8的,PostgreSQL发现不是UTF8编码,就报上面的错。 读书感悟来自《愤怒的葡萄》
经典故事【苍蝇发现自己模样很像蜜蜂,十分高兴,打算冒充蜜蜂去花丛里欺骗花的感情、盗取花蜜。可是它在花丛里飞来飞去不知飞了几个来回,却不见有一朵花向它绽放笑脸,他十分不解,转头问蜜蜂到底原因何在?蜜蜂笑着回答说:”你只是外形像我,事实上并不是我!因此,即使是一辈子蹲在花丛里,花也不会把你当成我!“ 生活常识【披萨正确吃法】
【拿铁的正确喝法】
大神文章【1】Base64编码出现换行符 其他如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |