使用Oracle对象存储作为博客图床(一)

先看效果: 作为一个专业白嫖党,只使用 Oracle 的 4 个免费鸡怎么能满足呢,拥有 20GB 免费空间的对象存储当然也要利用起来,正好最近又重拾起了鸽了多年的博客,正好作为博客的图床。 前置条件 一个 Oracle Cloud 账号(需要信用卡认证,大陆已经很难申请了) 良好的科学环境 Oracle Object Storage 存储桶准备 进入 Oracle Cloud 对象存储管理界面,创建新的存储桶 默认配置即可,创建完之后编辑可见性,这里可以选择公开或者私有, 公开:所有文件允许读取 私有:可使用预先验证的请求实现部分文件公开(推荐这种方式) 创建预先验证的请求 选择具有前缀的对象,前缀填写images,下文配置 picgo时需要匹配这个前缀,否则会有权限问题,访问类型默认只读即可,到期时间尽量一步到位多配几年。 将 URL 复制保存,这即时存储桶相应前缀目录访问的 BaseURL 上传一个图片试一下能否访问 可以看到由于存储桶的权限设置,使用 URL 路径访问是行不通的 需要替换为刚才创建的预见请求的 URL 前缀 https://objectstorage.ap-chuncheon-1.oraclecloud.com/p/xxx/n/{namespace}/b/blog/o/images/2022-05-23.png 存储桶 Endpoint 甲骨文的对象存储 endpoint 模式为https://{namespace}.compat.objectstorage.{region}.oraclecloud.com/ namespace: 存储桶信息名称空间字段 region: 这个是你甲骨文账号的区域,通常在你的 Oci 的 console 地址里就有体现,如我的春川为ap-chuncheon-1 申请 Oracle 账户 Ak 和 Sk右上角头像,进入“我的概要信息“,”客户密钥“选项”生成密钥“ 同样保存已生成密钥,该密钥为账户的SecretAccessKey AccessKeyID在列表页,同样复制保存 安装配置 Picgo 和 s3 插件 准备工作完成,下面开始配置图床工具。这里有两种选择: 具有 GUI 界面:PicGo Cli 命令行操作:PicGo-Core 上面两种看个人喜好,我比较习惯命令行,所以选择第二种,配置方面都是一样的,区别为是否提供了GUI, 安装 Node 环境 自行按nodejs官网安装...

2023-07-11 · 1 min · 193 words · Linkzz

让Powershell更好用, Windows下目前最好用的终端工具-Windows Terminal折腾记

装 X 熟话说:“漂亮(ZB)是第一生产力”,既然都是黑框框,你希望是这样的黑框框: 还是这样的: 又或者是这样的: 不! 这并不是我想要的,每天要面对的黑框框。除非审美有问题,要不然谁不喜欢下面这个: 如何装 X 到这里可能有些不明所以的小伙伴就要问了:“所以你这说的都是啥,没明白你装在哪里?” Windows Terminal 我们都知道,全球最大装机量的操作系统是 Windows,然而这样一个系统却有一个又丑有难用的终端-命令提示符,这使得很多开发者退而选择 linux 发行版进行开发,当然他们选择 linux 肯定还有其他原因,微软估计自己人都在吐槽自己的开发工具有多难用,所以陆续开发了 linux 子系统、Windows Terminal 等开发者友好的工具,这才使得我在 Windows 环境也能有不错的开发体验。在一众使用 cmd、powershell、git-bash 原生终端的小伙伴中成为焦点。 说了那么多废话,下面我们还是从实践中来探索一下 Windows Terminal 吧。 安装 打开 Microsoft Store 搜索 Windows Terminal 安装即可。 配置主题 最新版的 Windows Terminal 具有 GUI 配置界面,你可以在设置选项卡进行 GUI 的配置,如果不喜欢 GUI 界面配置,你还可以使用 JSON 配置的方式,点击打开 JSON 文件即可。 打开windowsterminalthemes,选择一个你喜欢的主题,然后复制到 JSON 文件 schemes 数组中, 如: { ... "profiles": { "defaults": {}, "list": [ { "acrylicOpacity": 0.5, // 透明度 "antialiasingMode": "cleartype", // 字体渲染方式 "backgroundImage": null, // 背景图 "backgroundImageOpacity": 0....

2021-06-29 · 3 min · 604 words · Linkzz

Spring事务的隔离级别和传播行为以及常见的事务注解失效的原因

在日常开发中事务的重要性不言而喻,而Spring作为日常使用的最多的Java框架对事务的处理有一套自己的准则,现在我们就来看以下Spring中事务的隔离级别和传播行为. Spring的事务隔离级别和传播行为 这个问题也是Java面试中的常考察的题目. 事务的4种特性 一致性 事务执行前后都要保持一致性状态.在一致性状态下,所有事务对一个数据的读取结果都是相同的. 原子性 事务被视为不可分割的最小单元,要么全部成功,要么全部失败回滚. 持久性 一旦事务提交,则其所做的修改将会永久保存到数据库中.即使系统发生崩溃,事务的执行结果也不能丢失.可以通过数据库备份和恢复来保证持久性. 隔离性 一个事务所做的修改在最终提交前,对其他事务是不可见的. 隔离级别 四种隔离级别, 是基于数据库隔离级别的封装(✔️表示允许,❌表示不允许): 隔离级别 脏读 不可重复读 幻读 默认(Default使用数据库默认的隔离级别) - - - 未提交读(Read_UnCommited) ✔️ ✔️ ✔️ 已提交读(Read_Commited) ❌ ✔️ ✔️ 可重复读(Repeatable_Read) ❌ ❌ ✔️ 串行化的(Serializable) ❌ ❌ ❌ 传播行为 七种传播行为: Propagation.REQUIRED 支持当前事务,如果当前存在事务则加入当前事务;如果当前没有事务,则新建一个事务进行. Propagation.SUPPORTS 支持当前事务,如果当前存在事务则加入当前事务,如果当前没有事务,则以非事务方式运行. Propagation.MANDATORY 支持当前事务,如果当前存在事务则加入当前事务,如果当前没有事务则抛出异常. Propagation.REQUIRES_NEW 不支持当前事务,如果当前存在事务,则当前事务挂起, 另起一个新的事务运行,这两个事务是相互独立的,不会相互影响. Propagation.NOT_SUPPORT 不支持当前事务,如果当前存在事务,则当前事务挂起, 自身以非事务方式运行. Propagation.NEVER 不支持当前事务,如果当前存在事务,则抛出异常,如果当前不存在事务,则以非事务方式运行. Propagation.NESTED 嵌套事务, 和requires_new的区别是当前事务的提交依赖于父事务的提交, 若父事务回滚, 则当前事务也会回滚.另外当前方法调用子方法时,子方法的发生异常被捕获了,则只有子方法回滚事务,当前事务仍然可以运行.基于数据库的SAVEPOINT技术,若数据库不支持此技术,则会新建一个事务去运行,此时就相当于REQUIRES_NEW. Spring的@Transactional注解不生效的原因 1. 数据库引擎不支持事务 以MySQL为例, MyISAM引擎不支持事务, 需要InnoDB引擎才支持. 2. 当前Bean没有被Spring管理 没有被Spring管理的类,这个类不会被Spring加载,其方法再怎么加注解当然会失效....

2020-05-29 · 1 min · 189 words · Linkzz

拯救你的idea,解决ubuntu下idea字体发虚

idea在ubuntu下的字体表现 idea这么强大的ide相信大家都有目共睹,但是最近在ubuntu下安装idea之后却发现字体表现还不如windows,要知道windows的字体渲染可是不如linux的,在高分屏下window的字体会出现明显锯齿,而linux就很平滑,虽然这个和idea没关系,因为idea是用java开发的,字体渲染不是用的系统的字体渲染引擎。查阅资料也发现对于idea的字体渲染问题,intelliJ是有优化过的,然而我ubuntu下的idea看起来却是这样的: idea环境 我的ubuntu是18.04LTS,屏幕是23寸1920*1080,idea设置如下: 主题方面选择了idea内部提供的暗色主题Darcula编辑界面主题是在idea主题样式网站下载的: 英文字体是Adobe开源的source code pro,在github仓库中提供下载。中文字体是开源字体文泉驿微米黑 更换系统主题 字体看起来发虚只是在暗色主题中才会发生,所以我们采取曲线救国策略,换用itelliJ亮色主题,然后结合一张暗色背景图来实现暗色主题的效果。 主题选择intellJ 选择一张背景图设置透明度 编辑界面主题选择一张亮色的主题,字体不变 成果 完成以上设置之后来看看成果 字体看起来平滑多了,好了,安心编码吧 :)

2019-05-03 · 1 min · 17 words · Linkzz

使用Hogan渲染html模板加载图片出错

在从服务器加载数据并渲染商品列表的时候出现Cannot find module "./{{imageHost}}{{mainImage}}"错误,查看返回的json字段信息如下: { "status": 0, "data": { "pageNum": 1, "pageSize": 10, "size": 1, "orderBy": "price asc", "startRow": 1, "endRow": 1, "total": 1, "pages": 1, "list": [ { "id": 26, "categoryId": 100002, "name": "Apple iPhone 7 Plus (A1661) 128G 玫瑰金色 移动联通电信4G手机", "subtitle": "iPhone 7,现更以红色呈现。", "mainImage": "241997c4-9e62-4824-b7f0-7425c3c28917.jpeg", "price": 6999, "status": 1, "imageHost": "//img.shashamall.com/" } ], "firstPage": 1, "prePage": 0, "nextPage": 0, "lastPage": 1, "isFirstPage": true, "isLastPage": true, "hasPreviousPage": false, "hasNextPage": false, "navigatePages": 8, "navigatepageNums": [1] } } HTML模板的string文件如下:...

2019-01-08 · 1 min · 146 words · Linkzz

取非符号的妙用

如下代码块: // 字段的验证,支持是否非空、是否是手机号、是否是邮箱地址的判断 validate : function(value, type){ //需要把前后的空格去掉 var value = $.trim(value); // 非空判断 if ('require' === type){ // 这里可以将value转换成boolean型 return !!value; } } 经过测试在 js中!null、!undefined、!''输出结果都为true,而任意非空字符串取非均为false。代码中巧妙的利用了这点,先用 jquery 把传入的参数去掉空格,同时转换成字符串,再进行二次取非操作,这样传入的空字符就会返回 boolean 型的true,这样函数的返回值也更容易理解,当传入的是空串时返回true。

2018-12-28 · 1 min · 30 words · Linkzz