- 博客(92)
- 收藏
- 关注
原创 前端 RBAC基于角色的权限控制(按钮级别)
本文介绍了前端实现按钮级RBAC权限控制的核心方案。通过Pinia全局存储权限码,并提供hasPermission方法进行权限校验;封装v-permission自定义指令,根据权限动态控制按钮显示/隐藏;使用时前端控制展示,后端校验接口权限,确保安全性。该方案将权限判断逻辑集中管理,通过指令简化业务代码,实现灵活高效的权限控制。
2026-01-20 11:27:32
147
原创 大文件上传
前后端配合,前端进行文件切片,计算文件hash,作为与后端协作的唯一凭证,标明是哪个文件。需包含4个部分:切片索引,文件hash, 总分片数,分片的内容 {index,hash, total, chuck}。
2025-12-25 12:28:20
193
原创 Vue响应式原理
当访问计算属性时会调用getter方法,拿到计算属性watcher,看看dirty属性是否为true,如果是true就执行计算函数计算值,并将dirty设置为false。同时让计算属性watcher中依赖的属性收集最外层的渲染watcher,这样当计算属性依赖的数据变化时会通知渲染watcher更新视图。计算属性依赖的属性变化时,会通知计算属性effect更新dirty, 并且计算属性会触发自己收集的渲染effect执行。计算属性会创建一个计算属性watcher,lazy:true表示懒执行。
2025-12-17 14:46:24
786
原创 实现template方法,替换模板中的变量
/ match是匹配到的<%= name %>, 是被替换的目标;// key是通过(\w+)捕获到的分组内容,如 name;// 回调函数的返回值会替换掉match对应的内容。问题:实现template方法,替换模板中的变量。实现:replace方法,正则匹配。
2025-12-17 14:25:07
147
原创 前端js实现按添加顺序返回并发异步任务的执行结果
题目:N个并发任务,异步执行,按照任务的添加顺序返回执行结果,而不是谁先执行完返回谁,保证并发任务的执行顺序。// 一旦前面的结果都已就绪,就按顺序 resolve 对应的包装 Promise。// 维护一个 currentIndex 表示当前应返回第几个结果。// 使用一个队列(数组)来记录所有已添加的任务 Promise。// 每个 Promise 完成后,将其结果存入一个结果数组。给定下面的代码,要求实现ConRequests类。
2025-12-17 12:18:32
129
原创 移动端适配总结
插件转换:编写代码时都用px,编写完后,通过插件编译后转换为vw。单独制作手机端页面,通过rem/vw单位完成页面适配。Grid布局(二维,同时控制行和列,用于多行多列布局)一套代码通过响应式方案完成PC、平板、手机端的适配。弹性布局:flex布局(一维,主要用于一行布局时)设备像素比(DPR)=物理像素/CSS像素。代表:淘宝手机端、B站手机端、京东手机端。手机高清屏的出现,需要2倍或3倍图。设计稿和开发的关系(以375为例)代表:vivo官网,华为官网。PC和平板通过响应式适配。
2025-12-10 16:13:20
461
原创 前端性能优化
web核心性能指标: Google 定义的 Core Web Vitals(核心网页指标)用户体验:加载速度/视觉稳定性/交互响应性获取这些数据的方法:实验室检测:开发环境 chrome浏览器里的performance lighthouse具体步骤:1. 采集:通过页面探针去采集用户的性能指标,异常日志和环境信息2. 上报和分析:将数据上报到监控平台,通过数据的可视化和聚合分析,找到一些异常的位置和问题的共性。
2025-11-25 17:34:15
744
原创 JS事件循环和Promise, async/await
我们都知道JavaScript 是单线程语言。JS 最初设计用于操作 DOM,若多线程同时修改 DOM 会导致冲突(如一个线程删 DOM、一个线程改 DOM)。但通过事件循环可以实现非阻塞异步操作(如网络请求、定时器、DOM 事件)。
2025-11-25 11:18:42
655
原创 Webpack打包
资源处理 + 打包整合」,将开发时的 “非标准文件” 转为浏览器能直接解析的 “标准静态文件(js/html/css/图片)”,最终协同渲染出完整网页。
2025-11-24 16:47:08
570
原创 mysql修改root用户的密码
1.出现:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)例子:mysql> set password for root@localhost = password(‘123’);格式:mysql> set password for 用户名@localhost = password(‘新密码’);格式:mysqladmin -u用户名 -p旧密码 password 新密码。首先登录MySQL。首先登录MySQL。
2023-10-18 14:29:57
908
原创 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443;error: RPC failed
OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443;error: RPC failed
2022-04-02 16:45:48
2335
原创 git fork使用流程
git fork1、fork项目在github页面上, 点击fork按钮, 将B的项目拷贝一份到A自己的代码仓库中.2、clone项目,并添加远程项目路径克隆A自己的代码仓库到本地.$ git clone https://github.com/A/A.git将B的项目作为最新代码的参考标准(upstream 是上游仓库的别名,别名随意命名)$ git remote add upstream https://github.com/B/B.git使用git remote 查看,可以看到有up
2021-12-24 09:50:48
21865
原创 JS 模块化
JS模块化JS模块化CommonJSbrowserifyAMDdefine( id, dependencies, factory);require([module], callback);requireJsCMD seajs 官网已经不存在了ESModule浏览器加载defer与async的区别JS模块化在ES6模块化规范出来之前,有AMD,CMD,CommonJS等模块化规范。AMD和CommonJS都是运行时加载,ES6是编译时加载也叫静态加载。CommonJSnodejs环境下(服务器端)的J
2021-09-25 17:41:26
580
翻译 理解Docker “容器主机”和“容器操作系统”的关系
http://www.floydhilton.com/docker/2017/03/31/Docker-ContainerHost-vs-ContainerOS-Linux-Windows.html定义:容器主机(Container Host):也称为主机操作系统(Host OS)。主机操作系统是Docker客户端和Docker守护进程运行的操作系统。对于Linux和非Hyper-V容器,主机操作系统与运行Docker容器共享其内核。对于Hyper-V,每个容器都有自己的Hyper-V内核。容器操作系
2021-06-23 16:28:12
6190
1
原创 python+selenium点击input上传文件报错selenium.common.exceptions.InvalidArgumentException
browse = driver.find_element_by_id("ffdcFile")browse.click()报错:Traceback (most recent call last): File "D:/work/LCPSVN/DCSC/testProject/ffdcparsertest.py", line 19, in <module> browse.click() File "D:\Program Files\Python\Python37\lib\sit
2021-06-02 11:00:23
1753
原创 mysql学习记录
1.alter命令修改数据表名或者修改数据表字段2.查看MySql数据库物理文件存放位置mysql> show global variables like "%datadir%" ;+---------------+--------------------------------------------+| Variable_name | Value |+---------------+---------------
2021-05-08 18:02:52
157
原创 MySQL 时间类型 DATE、DATETIME和TIMESTAMP
1.DATE、DATETIME和TIMESTAMP 表达的时间范围TypeRangeRemarkDATE‘1000-01-01’ to ‘9999-12-31’只有日期部分,没有时间部分DATETIME‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’时间格式为 YYYY-MM-DD hh:mm:ss,默认精确到秒TIMESTAMP‘1970-01-01 00:00:01’ UTC to '2038-01-19 03:1
2021-04-29 17:07:01
1217
原创 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
问题:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?linux系统重启后,docker daemon守护进程没有启动,需要重启docker服务。解决方法:1.进入 /etc/docker,没有daemon.json文件就自己新建一个:cd /etc/docker2.编辑daemon.json文件,加入这段代码:{ "registry-mirror
2021-04-27 14:11:51
346
原创 Docker学习
1.Docker介绍1.1什么是DockerDocker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 是一种虚拟化技术,解决开发环境和生产环境环境一致的问题,通过 Docker 我们可以将程序运行的环境也纳入到版本控制中,排除因为环境造成不同运行结果的可能。1.2 Docker的核心技术核心思想:隔离Li
2021-04-26 17:42:34
239
原创 在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES) 拒绝访问
【摘要】解决MySQL root用户登录被拒绝问题的方法:首先关闭MySQL服务,在my.ini文件末尾添加skip-grant-tables跳过权限验证,启动服务后若报错则执行mysqld --initialize-insecure初始化。然后无密码登录MySQL,更新root用户的权限设置,使用ALTER USER命令重置密码为"123456",最后移除skip-grant-tables配置并重启服务。该方法通过临时绕过权限验证完成密码重置,最终恢复MySQL正常登录功能。(149字
2020-12-16 14:43:46
82
原创 django-orm学习记录
初识django项目1.创建django项目django-admin startproject mysite #创建了一个名为"mysite"的Django 项目2.创建应用python manage.py startapp blog 3.启动项目python manage.py runserver 8080 python manage.py runserver 127.0.0.1:8080 #本机就不用写ip地址了 如果连端口都没写,默认是本机的8000端口4.setting
2020-10-27 17:05:06
194
原创 robot 接口测试-post request
四种常见的 POST 提交数据方式:1.application/x-www-form-urlencoded2.multipart/form-data3.application/json4.text/xmlpost请求需要在header中指定Content-Typeapplication/x-www-form-urlencoded和multipart/form-data的区别当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(n
2020-10-21 15:06:51
823
原创 前端预览pdf:PDFJS
没有使用<c:url>标签之前必须使用文档相对路径或是绝对路径对目标资源进行定位,如果使用根相对路径就会发生错误,具体详见J2EE中的绝对路径&根相对路径&文档相对路径 问题注意,但是在使用<c:url>标签的时候就可以以Web应用的根目录为参考点出发进行资源的定位,即根相对路径的使用....
2020-09-09 18:00:20
1958
原创 批量处理图片
1. 图片按尺寸/分辨率排序要求:只处理分辨率大于330的图片,所以需要按尺寸/分辨率对图片进行排序。win7可能用‘尺寸’,我的是win10用‘分辨率’。2.ps批量修改图片的尺寸大小https://jingyan.baidu.com/article/9f7e7ec0ecf9676f2815540a.html1、 首先我们新建两个文件夹,按需要命名好,一个文件夹放原图片,一个文件夹放修改好尺寸的图片。然后打开Photoshop,将原图片中的任意一张拖动到Photoshop的工作区域中;
2020-09-09 15:48:47
1760
原创 JS关闭当前窗口window.close()方法
过去,当直接调用window对象的close()方法,而不是对window实例调用close()时,浏览器会关闭最前面的窗口,不管脚本是否创建了该窗口。现在,出于安全原因,不再允许脚本关闭未打开的窗口。(Firefox46.0.1:脚本无法关闭尚未打开的窗口)1.直接调用window对象的close()方法window.close()当直接调用window.close()方法时,IE会弹出提示框,询问是否关闭此窗口。Firefox则不会关闭页面。Google则会立即关闭当前页面。2.wind
2020-05-11 11:25:29
25412
4
原创 jQuery绑定事件,dom刷新后绑定事件失效
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <script src="jquery.min.js"></script> <script> $(...
2020-03-23 17:19:43
1534
原创 Nodepad++ Find result搜索结果窗口恢复
不小心拖拽notepad++的find result搜索结果窗口想把它固定在页面最底部,结果给拖没了。解决办法:1.打开文件,随便搜索一个内容,按F7,焦点就切换到了Find result。2.按Alt+Space,出现小窗口点击"移动"可以看到鼠标上有一个虚线框,在可视区内点击就可以把Find result窗口显示出来了。3.把Find result固定在Nodepad++的最底部的方法...
2020-03-17 14:08:48
15456
2
原创 正则表达式
正则表达式的两种写法:JS风格—new RegExp(‘a’, ‘i’)perl风格—/a/i字符串相关操作:search–字符串搜索substring–获取字符串charAt–获取某个字符match–获取匹配的项目replace–替换所有匹配split–分割字符串为数组正则中的option(可选项):i 忽略大小写g 全局匹配量词:+ 若干,匹配前面的子表达...
2020-03-10 15:49:45
272
原创 js手动触发事件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>js手动触发事件</title> <script> window.onload = function(){ var oA = docum...
2020-03-03 17:38:11
2053
原创 js实现保存文件到本地-兼容各浏览器
先上代码:支持IE8+,Edge,Firefox,Chrome。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Save Test</title> <script> function save(f...
2020-03-03 16:26:35
3703
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅