自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 建站小记:迁移域名DNS到CloudFlare

CloudFlare一直有赛博菩萨之称,据说用它做DNS解析服务又快又好又免费,还能防DDOS攻击,并且可以提供页面访问统计功能。正好我博客网页打开略卡顿,所以决定将自己的DNS解析迁移到CloudFlare。

2024-07-01 00:02:36 425

原创 详解Next Auth:自定义邮箱密码登录注册、Github、Notion授权 & Convex集成

在auth.ts中加入如下代码,可解决自定义session中的属性报ts错误问题。/***/user: {NextAuth能帮助你快速集成第三方登录,也支持灵活的自定义账号、密码登录。借助ORM框架和一些中间件,一个NextJS项目已可以完成所有业务功能,不需要再有独立的后端服务。对于小而美的项目,是一个快速落地的理想选择。

2024-06-12 23:13:31 1137

原创 全栈从0到1 3D旅游地图标记和轨迹生成

实现输入地点或地点关键字,查询经纬度,从而完成标记点的定义。首先查询Convex数据库,提供10个最匹配的候选项若没有找到对应候选项,用户可以点击搜索按钮,会调用高德API进行查询。如果仍然没有查询到,可以点击“经纬度”按钮,进行经纬度的自行填写。已经添加了的标记点,支持编辑和删除。使用Zustand,进行地点增、删、改等状态管理。}));},// 移除location== id)}));

2024-04-25 23:46:28 1263

原创 ElasticSearch简单入门和SpringBoot集成

背景项目中使用第三方网关系统,该网关使用ElasticSearch进行服务访问日志记录。为充分利用该网关功能,并在数据基础上实现计数、计费功能,需对ElasticSearch进行快速学习,并使用Java代码集成,从而实现项目所需要的运营功能。ElasticSearch基础知识学习为快速建立起对ES印象,可按下表进行概念映射:Kibana搭建为对ES中数据可视化,在服务器上进行Kibana搭建。1、下载指定压缩包地址: https://www.elastic.co/cn/downloads/

2022-05-07 13:50:56 2281

原创 Java | 记录基于CAS登录模块的几个安全问题的解决

手头的项目的登录模块,基本都是集成了部门内封装出的基于CAS的中心鉴权组件,在安全扫描中暴露了一些问题,有些是因为没有合理的使用这一开源框架导致的,有的是通用的问题,在此记录问题和解决方案。1、密码明文传输问题2、页面无验证码、无登录防抖,易被暴力破解问题3、开放重定向问题密码明文传输问题描述用户输入的密码,虽然在页面的输入框中显示为“*****”,却在接口层面通过明文传输,易被抓包工具捕获。解决思路使用RSA非对称加密,前端对密码进行加密,后端解密后,再与数据库存储的凭证进行比对。代码实

2021-12-12 19:53:34 3208

原创 CICD | Jenkins Shared Libraries & Http-request插件使用

前篇:1、Jenkins的搭建和简介:https://www.jianshu.com/p/ca4886e117202、Jenkins Gitlab集成,使用WebHook触发构建:https://www.jianshu.com/p/ca4886e11720之前我搭建的开发环境的Jenkins,经过一年多时间的积累和组内使用,已经为二十多个项目提供了部署运维环境。在需要快速迭代部署的时候,Jenkins的规范化和自动化执行节约了大量的时间成本。目前存在问题1、搭建流水线时,大部分步骤和代码都是可.

2021-11-23 20:35:17 2922

原创 微前端qiankun框架接入实战

背景随着项目的演进,前端的业务架构也会变得更加庞大、复杂,并常常会出现需要模块复用的场景:1、组件复用,例如统一的导航栏、侧边栏、路由权限处理逻辑等2、模块级别复用,例如统一的用户管理模块、文档中心等3、系统级别复用,总的系统由多个系统组合而成,不同的系统可能由不同的开发团队维护、使用不同的技术栈开发。除了代码层面复用(复制粘贴),也需要更加完善的模块和系统复用方案。引入微前端,将代码根据业务逻辑划分至不同的项目之中进行维护,能够有效的降低维护难度,每个系统既可以独立运行、独立部署,也可以组合起来

2021-08-26 20:26:36 2201 1

原创 JavaScript ES6 | 使用展开运算符完成全平台校验重名逻辑封装

背景在应用系统中创建业务对象时,需要填写表单,对于对象的名称、标识等,全平台往往有统一的功能规范。例如:名称:统一为中文、不超过50字符、不能为空、不能与现有平台重复标识:统一为英文,不超过50字符、不能为空、不能与现有平台重复交互逻辑一致(填写名称/标识后,调用后台接口进行判断,后台查询数据库后,返回是否存在重名数据(true/false),存在重复则报表单校验错误,不允许表单提交),前端使用的组件也一致(使用element-UI的Form组件),公共逻辑清晰,于是我尝试进行统一的规则校验逻辑

2021-07-08 20:59:45 340

原创 Vue | 指令实现自动填充英文名功能

背景:应用系统中存在多个创建实体表单,表单填写时,在填写中文名称后,要填写对应的英文名作为标识或数据库查询索引。需求:填写中文名的同时,系统自动生成英文名并填充到表单中,辅助用户操作,节约操作时间。实现效果方案调研对需求进行分析后,对于如何将中文名翻译成英文字符串,调研以下方案:调用翻译引擎优点:翻译准确,对于短句也能翻译缺点:部署难度大,需要捆绑翻译引擎调用开放API(谷歌翻译/百度翻译等)优点:能完成翻译功能缺点:可能需要付费/开发者帐号等,需要集成成本,需要私有化部署版本.

2021-05-21 19:09:27 585

原创 Java | 使用OpenFeign管理多个第三方服务调用

背景最近开发了一个统一调度类的项目,需要依赖多个第三方服务,这些服务都提供了HTTP接口供我调用。服务多、接口多,如何进行第三方服务管理和调用就成了问题。常用的服务间调用往往采用zk、Eureka等注册中心进行服务管理(SpringBoot常使用SpringCloud)。OpenFeign也是SpringCloud的解决方案之一。我们单独使用OpenFeign, 无需对原有第三方服务进行改动,本服务开发时的引入也很轻量。下面给出我的用法。应用maven依赖引入maven依赖:

2021-04-28 14:10:24 548

原创 Vue + WebRTC 实现音视频直播(附自定义播放器样式)

1. 什么是WebRTC1.1 WebRTC简介WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的实时通信框架,提供了一系列页面可调用API。参考定义: 谷歌开放实时通信框架在上一篇博客Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互 中,已经涉及到WebRTC接口的使用,使用到了getUserMedia方法,用于通过浏览器获取设备麦克风,从而采集音

2020-11-17 18:54:30 10139 8

原创 Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互

引言在与实现了语音合成、语义分析、机器翻译等算法的后端交互时,页面可以设计成更为人性化、亲切的方式。我们采用类似于聊天对话的实现,效果如下:智能客服(输入文本,返回引擎处理后的文本结果)语音合成(输入文本,返回文本以及合成的音频)如上图所示,返回文本后,再返回合成出的音频。音频按钮嵌在对话气泡中,可以点击播放。语音识别(在页面录制语音发送,页面实时展示识别出的文本结果)实现功能及技术要点1、基于WebSocket实现对话流页面与后端的交互是实时互动的,所以采用WebS

2020-10-22 20:42:21 1746 3

原创 Vue | 自定义指令和动态路由实现权限控制

功能概述:根据后端返回接口,实现路由动态显示实现按钮(HTML元素)级别权限控制涉及知识点:路由守卫Vuex使用Vue自定义指令导航守卫前端工程采用Github开源项目Vue-element-admin作为模板,该项目地址:Github | Vue-element-admin 。在Vue-element-admin模板项目的src/permission.js文件中,给出了路由守卫、加载动态路由的实现方案,在实现了基于不同角色加载动态路由的功能。我们只需要稍作改动,就能将基于角色

2020-08-27 20:49:19 1139

原创 Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)

这篇博客主要介绍树形控件的两个小小的功能:下拉菜单输入过滤框以CSS样式为主,也会涉及到Vue组件和element组件的使用。对于没有层级的数据,我们可以使用表格或卡片来展示。要展示或建立层级关系,就一定会用到树形组件了。使用Vue + Element UI,构建出最基本的树如下图所示:现在我们就要在这个基础上进行改造,使页面更加符合我们的交互场景。一、下拉菜单将下拉菜单嵌到树节点中,使操作更加简便、紧凑。效果演示效果如图:图示1:悬浮在树节点状态图示2:点击三个点图

2020-08-08 10:49:46 4842 3

原创 Linux虚拟网络:Docker网络知识之基础篇

我们在工作中应用了docker容器化技术,服务的部署、维护和扩展都方便了很多。然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机、容器之间网络不通。本篇博客旨在总结:Linux虚拟网络及docker网络的基础知识遇到网络问题时排查问题思路常用指令和工具的使用以上三部分作为之后的参考,本篇文章也将会在日后实践过程中逐渐补充。本篇为第一篇,主要介绍基础知识Linux网络虚拟化基础Network Namespace网络命名空间

2020-07-01 10:42:28 325

原创 CICD | Jenkins & Gitlab集成:WebHook触发构建

在上一篇博客中,我们学习了Jenkins的搭建和插件+流水线的基本使用方法,Jenkins极大地提升了部署效率。最近想学习一下如何集成GitLab webhook,实现进一步解放双手,目标:推送(git push)触发构建推送到指定分支触发构建根据commit的文件,结合mvn -pl指令,实现部分增量构建,并记录commit信息推送事件也可以换成Tag push events、Merge request events等其他触发条件,根据需要自由选择。基础实现使用Gitlab Hook P

2020-06-04 22:30:55 757

原创 vue-codemirror + Java Compiler实现Java Web IDE

背景最近同事告诉我一个很有趣的需求:让用户(应用场景中,一般为其他开发者)自己填入Java代码片段,代码片段的内容为已经规定好的模板类的继承类,实现模板类定义的方法。我们的项目要实现动态编译代码片段,存储代码片段和用户操作记录的映射关系,并能够在业务中载入代码片段执行。这有点像我们提供一个模板模式的架构,只不过模板类的实现类由外部接口填入代码片段动态实现。相较让其他开发者直接参与项目开发,无疑:降低了侵入风险向其他开发者隐藏了大部分实现降低操作难度和开发门槛便于管理……这相当于要实现

2020-05-23 13:04:53 2455 2

原创 CI/CD:Jenkins入门,流水线和插件使用

最近,我们使用的开发服务器被回收了,换了一台新的服务器,CI/CD平台需要重新搭建。我的运维能力一直薄弱,所以借此机会学习了一番如何使用Jenkins进行持续集成开发和部署,实践并踩了一些坑,在此记录一下。引言假如没有CI/CD平台想要部署到服务器,我们需要本地打包上传至服务器,或上传源码至服务器上打包,覆盖原来的安装包,进行部署。当所需要部署的只是一个jar包或者只是一个服务,并且代码不经常更新,这样是可以的。但是开发过程中,更常见的是代码经常迭代更新,并且项目中有多个组件。这带来了大量的机械

2020-05-14 13:42:29 1347

原创 Vue基础:使用Vue.extend()实现自定义确认框

问题背景前端交互中经常使用确认框。在删除、修改等操作时,调用后端接口之前,先跳出弹框显示提示信息,提示用户确认,避免用户误操作。项目中全局引入了Element,提供了一套模态对话框组件,用于消息提示、确认消息、提交内容,使用起来也非常简便。以下来自于element官网文档:如果你完整引入了 Element,它会为Vue.prototype添加如下全局方法: $msgbox, $aler...

2020-04-28 17:13:25 1438 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除