后端传递Long类型数值,前端接收精度丢失(失真)问题
前言最近在写评论插件时,id使用雪花算法生成(Long),结果传递到前端时发现id最后几位精度丢失全变成了0。
后面经过几番排查后发现前端能够接收的数字最多只能是16位,所以会造成精度丢失。
可以看到后端传递的数据是没有任何问题的,但是接收时精度就丢失了。
在考虑到不改变业务结构的情况下,有两种解决方案。
方案一:自定义消息转换器通过自定义消息转换器,将传递给前端的Long类型数据转换为String类型数据。
这个方法会将所有传到前端的Long类型转为String。
12345678910111213141516171819202122232425262728293031import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;import org.springframework.context. ...
浏览器注入外部JS文件
方法一:直接在控制台注入众所周知,浏览器控制台可以直接执行js命令,所以我们可以在控制台通过命令将外部js文件注入到当前界面中。
(那么可能就有小伙伴要问了,既然能在控制台直接执行,为什么还需要多此一举,在控制台引入呢?因为这里主要讲了是引入外部文件,如果被引入的js文件很大,有几千行,总不能全部复制到控制台执行吧。)
原理很简单,就是通过命令创建一个JavaScript标签,然后填入地址,插入到HTML中。直接看代码吧:
1234const createScript = document.createElement("script")createScript.setAttribute("src", "远程js路径")const doc = document.documentElement;doc.insertBefore(createScript, doc.firstChild)
将上面的命令在控制台执行,就能实现注入了。
为了方便测试,我们编写一个简单的js文件测试效果:
demo.js
需要注意的是,这个js文件不能 ...
Docker——容器化部署(进阶篇)
Dockerfile
Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本(Dockerfile就相当于用(多条)指令来说明要执行什么操作来构建镜像的文件)。
Dockerfile通过指令构建镜像,过程就相当于Docker内部容器多次提交形成镜像
大致流程:
常用保留字指令每条保留字指令都必须为大写字母且后面要跟随至少一个参数。
示例:tomcat10/jdk8的dockerfile
指令执行时期:
Build
Run
Both
FROM
CMD
WORKDIR
MAINTAINER
ENV
USER
COPY
EXPOSE
ADD
VOLUME
RUN
ENTRYPOINT
ONBUILD
FROM基础镜像,作为Dockerfile的首条指令。表明当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板。
MAINTAINER镜像维护者的姓名和邮箱地址。
RUN容器构建时需要运行的命令。主要用于执行Linux的shell命令,一般是安装过程的命令。主要有两种格式:
shell格 ...
Docker——容器化部署(基础篇)
前言Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
优点:Docker是一个快速交付应用、运行应用的技术:
可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统[1]。
运行时利用沙箱机制形成隔离容器,各个应用互不干扰。
启动、移除都可以通过一行命令完成,方便快捷。
[1]: 因为Docker是将依赖、运行环境一起打包的,而 Docker容器在任何操作系统上都是一致的,所以就有效避免了测试部署环境和开发环境不一致可能出现的各种问题(开发能跑,测试部署跑不起来的问题得到了有效解决),这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
Docker结构:
服务端:接收命令或远程请求,操作镜像或容器
客户端:发送命令或者请求到Docker服务端
Docker和虚拟机docker是一个系统进程;虚拟机是在操作系统中的操作系统d ...
超好用的免费开源win11复刻win10磁吸菜单的工具分享
前言win11的菜单属实不如win10的磁吸菜单方便好用。之前为了寻找替代一直用的一款工具是Start 11,相信不少人也用过。这款工具也还行吧,只不过是付费的,之前用的”学习版“随着win11的逐渐更新也失效了。
后面一直在寻找替代品,试用的好几款,最后发现还是开源的用着舒服。
工具的开源地址:ExplorerPatcher。
这款工具我已经稳定用了大半年,作者更新频率很快。
使用这么久,目前只遇到了一个小问题。就是win11每次更新时,有概率会导致文件资源管理器启动失败(也就是桌面无法正常显示),不过问题不大,只需要手动启动下文件资源管理器就可以了。而且遇到的概率也不大,我这半年多更新了几十次win11,也就遇到了几次这种情况,再加上作者更新也比较及时,可以说是没啥影响。
先来看下效果吧:
使用方法如果你之前安装了其它的菜单工具,需要先将之前的工具卸载干净,否则可能会出现冲突。
软件安装时建议使用管理员打开安装程序,安装过程中可能出现较长时间的白屏,耐心等待即可。
安装完成后,在windows菜单栏右键选择属性,就可以打开软件了。
打开后我们只需要在任务栏菜单(Taskbar) ...
Git提示密码过期(Your password has expired),取消Linux系统Git密码过期限制
安装再Linux系统的Git经常提示过期,每次都需要修改密码,非常的不便:
123456WARNING: Your password has expired.Password change required but no TTY available.fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.
分享一个Linux系统Git用户,更改密码过期策略的限制。
(下面的方法同样适用于root用户)
首先打开控制面板,先查看下当前用户的信息:
1# chage -l git ##查看git用户的密码策略
change命令常用指令: -d, --lastday LAST_DAY 将上次密码更改的日期设置为LAST_DAY,设置为0时,下次登录强制修改密码 -E, --expiredate EXPIRE_DATE 将帐户到期日期设置为EXPIRE_DATE -h, --he ...
记一次Git报错(403)
使用git push 命令推送仓库时报错:
123remote: Permission to ouowo/xxx.git denied to ooahz.fatal: unable to access 'https://github.com/ouowo/xxx.git/': The requested URL returned error: 403
原因:本机已保存github账号密码和当前上传的仓库账号密码不一致。
解决方法:指定远程仓库的用户名:
1https://用户名@github.com/***/***.git
完整示例:
1$ git remote add master https://用户名@github.com/***/***.git
然后在弹出的窗口按照提示输入github密码即可
CSS颜色对照表
颜色
英文代码
形像颜色
HEX格式
RGB格式
LightPink
浅粉红
#FFB6C1
255,182,193
Pink
粉红
#FFC0CB
255,192,203
Crimson
猩红
#DC143C
220,20,60
LavenderBlush
脸红的淡紫色
#FFF0F5
255,240,245
PaleVioletRed
苍白的紫罗兰红色
#DB7093
219,112,147
HotPink
热情的粉红
#FF69B4
255,105,180
DeepPink
深粉色
#FF1493
255,20,147
MediumVioletRed
适中的紫罗兰红色
#C71585
199,21,133
Orchid
兰花的紫色
#DA70D6
218,112,214
Thistle
蓟
#D8BFD8
216,191,216
plum
李子
#DDA0DD
221,160,221
Violet
紫罗兰
#EE82EE
238,130,238
Magenta
洋红
#F ...
来尝试下最近很火的ChatGPT,AI究竟智能到何种程度?
前言看到最近关于OpenAi旗下的chatGPT非常的火,于是便尝试了下。发现真的非常的强大和有意思。
无论是写代码、写论文还是聊天都是非常的轻松,甚至可以直接充当搜索引擎。最重要的是还之前的大部分AI不同,他是真的可以理解你说的话,并进行分析,虽然理解能力并不是百分百准确,但是对之前的来说可以说是强太多了。
写代码测试先测试下力扣的困难算法题:
可以看到AI正确的分析出了题意,并给出了解题过程。
虽然回答过程中由于每次的字数限制,导致格式有点问题,但是代码是完全没问题,毫无悬念,通过率百分百。
试试直接写代码:
还可以根据描述补充完善代码:
## 逻辑理解测试
可以看到他是可以理解我的话的,但是如果你的话有歧义的话,理解就有可能出现偏差
其它直接充当搜索引擎或者知乎:
但是信息截止至2021年
后记联想到同样最近很火的AI绘画,虽然绘画能力越来越强,但是只是提供词条描述,部分画作还是过于抽象和”提前“,如果结合有理解能力的ChatGPT,估计更够获得更大的突破
友链样式分享
css样式部分:
引入css样式部分:
(下面样式已适配了butterfly主题)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859.readers-list { list-style: none; width: 100%;}.readers-list li:nth-of-type(2n + 1) a { border-left-color: #ff002b;}.readers-list li:nth-of-type(2n + 2) a { border-left-color: #ffa900;}.readers-list li a div { padding: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #999; ...