年轮说 | Ciel Ni

很高兴认识你


  • 首页

  • 关于

  • 标签22

  • 分类9

  • 归档32

  • 搜索

SpringBoot 连接 MySQL 8.0 的时区问题

发表于 2021-09-30 | 分类于 后端笔记

背景

因为数据库要升级到 MySQL 8.0 所以要对架构做升级,主要的修改工作如下:

  • 驱动包要升级为 mysql-connector-java-8.0.11.jar

  • JDBC driver 由 com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver

  • JDBC url 中加上 userSSL=false

问题

升级以后发现通过 Mybatisplus 从数据库获取的时间字段值和数据库的值会有几小时的差异,这其实是程序所在时区和数据库的时区不一致导致的。

阅读全文 »

SqlServer读取image类型字段并存文件

发表于 2021-09-30 | 分类于 后端笔记

背景

金蝶云上传文件的结果会以image类型保存在SqlServer数据库,现在希望用代码的方式把这部分文件批量导出

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sql = "SELECT * FROM T_BAS_Attachment"
self.cursor.execute(sql)
res = self.cursor.fetchall()
for item in res:
content = item[10]
data = io.BytesIO(content)
filename = item[4]
if filename is not None:
directory = '/Users/insta360/Downloads/attachment/' + item[1]
if not os.path.exists(directory):
os.makedirs(directory)
with open(directory + '/' + item[5] + '_' + item[4], 'wb') as f:
f.write(data.getvalue())
data.close()

Java 调用 CMD 命令时路径名带空格的解决方案

发表于 2021-07-24 | 分类于 Java笔记

背景

当我们在终端执行命令行时,如果遇到带空格的路径名,往往有两种处理方法

1
2
3
4
5
cat a\ b\ c.txt
测试内容
cat 'a b c.txt'
测试内容

而当我们在Java使用 Runtime.getRuntime().exec() 执行上面的命令时,却得不到想要的结果

阅读全文 »

使用 Coding 进行网站托管时的域名解析采坑之旅

发表于 2021-07-04 | 分类于 运维笔记

背景

因为 coding.net 经常改版,导致我之前用 Coding Pages 进行的托管不知何时失效了,于是去官网看了下,意识到需要重新设置网站托管。(印象中,coding 最几年一直在做产品调整,每次点进它的网页,都不太一样)

图挂了。。

阅读全文 »

基于face-api.js的人脸实时跟踪

发表于 2020-03-07 | 分类于 前端笔记

疫情期间,公司选择让员工进行远程办公,却又难以监督员工保证他们的工时。所以老板想出了通过摄像头配合人脸识别算法,计算一天内员工在电脑面前的时间占比。

项目的Github地址

通过浏览器开启摄像头

这部分代码是在网上找的,需要兼容多种浏览器:

阅读全文 »

Java 中 YYYY-MM-dd 在跨年时的致命问题

发表于 2020-01-10 | 分类于 后端笔记

最近在V站和知乎都看到一个讨论很有意思,故做一下笔记。

问题描述

在跨年期间,如果在日期格式化的时候使用 YYYY 来格式化年份,则可能会出现下图所示的bug:

阅读全文 »

MySQL 中 Group By 后如何选择记录

发表于 2019-08-17 | 分类于 后端笔记

问题背景

有一张数据库表,记录了一些抖音视频每小时的播放量与点赞量,每个视频每小时都会产生一条记录。现在需要查出每个视频最新的一条记录,希望通过一条sql语句搞定。第一反应就是对 video_id 进行 Group By ,然后想办法取出每一组中 created_time 最新的那条数据。在最后加 Order By 显然是行不通的,因为 Order By 是对 Group By 的结果进行排序。

误区

关于这种问题,网上有很多错误的解决方法,思路是先通过一个子查询把数据按照 created_time 倒序排序,然后再进行 Group By,sql语句如下:

1
2
3
SELECT * FROM
(SELECT * FROM douyin_official_video WHERE ORDER BY created_time DESC) t
GROUP BY video_id

这个方法的成立需要一个前提,就是MySQL 在 Group By 后是按照当前数据排列顺序选择第一条记录的。

阅读全文 »

数据库大表添加字段的方法

发表于 2019-07-18 | 分类于 后端笔记

问题

一般情况下,一百万以下数据量的表可以直接进行字段添加操作。而如果数据表的大小达到几百万几千万甚至更多时,添加一个字段会引起数据库卡死。经查阅,数据库大表添加字段有以下两个方法。

方法一

  1. 创建一个新表,复制旧表的结构(包含索引)

  2. 给新表加上添加需要新增的字段

  3. 把旧表的数据复制到新表,注意需要分批循环插入,不然容易卡死

  4. 删除旧表,重命名新表的名字为旧表的名字

方法二

使用 Percona 的在线工具在线修改表结构

教程: https://blog.csdn.net/hpulfc/article/details/87938724

mysql 中 null 的查询问题

发表于 2019-02-05 | 分类于 后端笔记

<> 与 != 查询不到 null

1
2
3
4
5
6
// 查询结果中不包括 null
SELECT id FROM table where value <> 1
SELECT id FROM table where value != 1
// 查询结果中包括 null
SELECT id FROM table where value is not 1

查询 null 需要用 is 和 is not

1
2
3
4
5
// 查询影响不了 null
SELECT id FROM table where value != null
// 查询影响 null
SELECT id FROM table where value is not null

使用 jar 包运行项目时的资源文件定位问题

发表于 2018-12-15 | 分类于 java笔记

背景

把 java 项目打包成 jar 包时,资源文件夹 resources 下的文件会被打包进 jar 包里面。当使用 jar 运行整个项目时, 通过 getResource() 方法获得的资源文件路径会变成 xxx.jar!/xxx 的格式,这种格式的路径,不能通过 new File 的方式找到文件。这里我提供两个思路解决这个问题。

阅读全文 »
12…4
Ciel Ni

Ciel Ni

起风了 唯有努力生存

32 日志
9 分类
21 标签
RSS
微博 GitHub 豆瓣 Twitter 知乎 Facebook 简书 Instagram 网易云音乐 E-Mail
友情链接
  • 王雨城的个人博客
  • Zia's blog
  • Wade Chen's blog
  • Kerita's blog
  • codeyee | 通往体面生活的路上
  • Diamond Zhang
0%
© 2022 Ciel Ni
由 Hexo 强力驱动 v3.4.0
|
主题 — NexT.Gemini v6.3.0
Hosted by Coding Pages