自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (1)
  • 收藏
  • 关注

原创 CSS 逻辑属性

CSS 逻辑属性与值是 CSS 的一个模块,其引入的属性与值能做从逻辑角度控制布局,而不是从物理、方向或维度来控制。物理属性(left、right、top、bottom);逻辑属性(start、end)CSS 逻辑属性是一组属性,允许开发人员创建对不同屏幕尺寸和语言响应更快的布局。这些属性基于逻辑值的概念,逻辑值是与用户环境相关的值,例如语言、书写方向和屏幕大小。逻辑属性用于创建更灵活和适应不同环境的布局。例如,开发人员可以使用属性来设置元素左侧的边距,而不考虑书写方向。

2024-03-22 18:30:06 423

原创 WebGL 和WebGPU 有什么区别?

总之,WebGL和WebGPU都是用于在Web浏览器中进行图形渲染的技术,但它们在性能、功能、兼容性和未来发展方向等方面有所不同,开发人员可以根据具体需求来选择使用哪种技术。

2024-03-14 11:03:16 374

原创 程序员是如何看待“祖传代码”的?

祖传代码记录了项目的发展历程和技术选择,具有一定的历史意义。对于长期参与项目的团队成员来说,祖传代码可能会成为一种共同的记忆和文化符号,增强团队的凝聚力和归属感。如果祖传代码没有经过充分的测试和审查,可能存在潜在的 bug 和安全漏洞,增加了软件的风险。随着时间的推移,祖传代码可能会积累技术债务,即未来需要花费更多的时间和资源来重构和优化。根据项目需求和技术趋势,逐步更新和优化祖传代码,以确保其与现代技术和最佳实践保持一致。在代码中添加清晰的注释和文档,解释代码的设计原理和逻辑,以帮助他人理解和维护代码。

2024-03-08 10:50:10 448

原创 AI 改变生活

AI 改变生活

2024-03-08 10:41:54 621

原创 如何修改iframe中的dom?

获取 iframe 中的 document 对象:通过 iframe 元素的 contentDocument 属性可以获取到 iframe 中的 document 对象,从而可以对其中的 DOM 元素进行操作。获取到 iframe 元素:首先使用 JavaScript 获取到包含 iframe 的父容器元素,然后通过该父容器元素的 querySelector 方法来获取到 iframe 元素。​例子 index.html。

2024-03-07 11:29:39 377

原创 如何隐藏前端项目编译后的.map文件

nginx 隐藏.map 文件

2024-03-07 10:33:29 303

原创 https 加密解密过程是什么?

https 的加密解密过程

2024-03-06 14:53:16 861

原创 js 监听点击事件,点击外部关闭弹框

js 监听点击事件,点击外部关闭弹框

2024-03-04 16:45:57 331

原创 前端开发怎么给变量起名

在开发中,学会变量命名是一种学问,一个好的命名能减少很多工作量

2023-07-07 10:12:26 807

原创 浏览器环境线程之间的关系

2、JavaScript 引擎线程:负责处理 JavaScript 代码,将其转化为可执行的机器码,并执行代码,生成计算结果等。1、GUI 渲染线程和 JavaScript 引擎线程是互斥的,即 JavaScript 引擎线程执行 JS 代码时会阻止 GUI。3、异步 HTTP 请求线程和 JavaScript 引擎线程也是互相独立的,它们之间的相互通信使用回调函数实现。2、JavaScript 引擎线程和定时器线程、事件触发线程是互相独立的,它们之间通过事件队列来传递通信信息。

2023-04-25 12:01:46 845 1

原创 IE播放wav格式录音解决方案

浏览器支持wav由于ie不支持audio 中的wav(edge是支持的),因此只能放弃audio标签。目前有两种方式可以实现1、使用bgsound,播放背景音2、使用embed标签由于bgsound无法灵活控制音频,因此改用embed标签。注意这里有个坑,embed标签src引用的是资源路径,如果是xhr返回的流文件是无法播放的。...

2022-04-08 13:08:13 1178

转载 Electron:运行npm run build构建环境失败解决方案

解决方案为了更好更快的解决构建环境问题,需要我们手动下载好electron环境的压缩资源包等,构建好的打包缓存环境(存放手动下载资源包前,优先清除cache的缓存记录)。方案具体步骤清除electron和electron-builder的cache缓存记录(删除文件夹中旧的缓存资源包)。electron缓存资源地址:~/AppData/Local/electron/Cacheelectron-builder缓存资源地址:~/AppData/Local/electron-builder/Cache

2021-11-18 18:27:46 895

原创 js操作文件流转音频Buffer

修改responseType为arraybufferaxios config.responseType = 'arraybuffer'转换音频地址 const data = await xxx() this.wavUrl = 'data:audio/wav;base64,' + Buffer.from(data).toString('base64')

2021-07-07 13:03:35 2432

原创 vue-electron 无边框窗口位置跟随鼠标

你应该知道 -webkit-app-region: drag;可以拖拽无边框的窗口,但是,窗口并不会时刻跟随鼠标,只有鼠标松开后,窗口才会移位。这里提供一种方法export const windowMove = (win: any, channel: string) => { let winStartPosition = { x: 0, y: 0 } let mouseStartPosition = { x: 0, y: 0 } let movingInterval: any = nu

2021-04-14 11:19:33 911

原创 手写一个简易的PWA

PWA(Progressive web apps,渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。这些应用无处不在、功能丰富,使其具有与原生应用相同的用户体验优势。准备工作新建以下几个文件index.html<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>PWA DEMO1</ti

2021-02-26 14:55:07 297 1

原创 nginx config 文件(真实项目使用)

工作中 config配置及注释,记录。user root;# Nginx用户及组:用户 组。window下不指定worker_processes 1;# 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;# 错误日志#pid logs/nginx.pid;ev

2021-02-22 16:12:16 355

原创 js 常用正则表达式

工作中常用正则表达式1.手机号 /^[1][3,4,5,7,8,9][0-9]{9}$/2.输入字母+数字(8~24位)组成的密码 /^[A-Za-z0-9]{8,24}$/

2021-01-22 11:22:03 107

原创 js 对ip地址进行排序

这里用到一个技巧 padStart(a,b)方法,对字符串进行补全。两个参数,第一个是字符串的最终长度,第二个是用于补全的字符串。还有一个类似的padEnd方法,一个由前补全,一个由后补全。’'x'.padStart(8,'abc')"abcabcax"'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12""YYYY-09-12"例子var ip = ['192.165.2.3','192.164.2.3','192.165.52.3','10

2020-09-28 11:03:42 1182

原创 js 监听浏览器tab关闭,清除缓存数据。

通常,我们会在浏览器中缓存一些数据。保存用户的部分信息或者一些其他信息。当关闭tab的时候我们希望清除这些数据。解决:主要是两个方法,onunload,和 onbeforeunload但是直接关闭浏览器,该方法无法无用(客户端操作无法监听) var _beforeUnload_time = 0; var _gap_time = 0; window.onunload = function() { _gap_time = new Date().getTime() - _

2020-09-14 18:11:43 2070

原创 Vue 项目中的性能优化

1、组件复用,公共方法提取,Vue.use2、keep-alive 缓存使用 keep-alive 包裹组件,包裹中的组件不会被销毁,会被缓存。3、获取dom,使用 $refs 配合 ref 获取,提升页面查找时的性能4、v-for 设置key。在用v-for进行数据遍历渲染的时候,为每一项都设置唯一的key值,为了让Vue内部核心代码能更快地找到该条数据,当旧值和新值去对比的时候,可以更快的定位到diff5、防止内存泄露,组件销毁前钩子,清除事件监听,定时器,全局变量等6、路由懒加载,使用

2020-07-06 23:19:46 330

原创 axios put请求错误Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

前端使用的封装的 axios请求,后端java出现上面的问题是因为前后端数据格式不统一。json 分为两种类型;(1) json 对象类型,即前端定义的Content type 为 application/x-www-form-urlencoded等(2) json字符串类型,即前端定义的Content type 为 application/json打印一下putconsole.log...

2020-04-27 17:38:03 2911 1

原创 js 节流和防抖(记录)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>节流防抖</title></head><body> <input type="text" id="input"></body>...

2020-03-25 17:59:49 221

原创 vue-cli 4.2.3中vue.config.js 配置常用参数(webpack)

截止到2020.3.17,vue-cli版本已经到了4.2.3

2020-03-19 10:13:36 3775 3

原创 js 两种快排实现方式

"快速排序"的思想很简单,整个排序过程只需要三步:(1)在数据集之中,选择一个元素作为"基准"(pivot)。(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。第一种借用阮一峰老师的文章,选择一个基准,以数组的中间值为例,创建两个子集,循环,小于...

2020-03-11 18:15:54 2229

原创 聊聊浏览器的多进程和多线程的事

我们要理解浏览器进程和线程之间的关系,首先要了解什么是进程?什么是线程?1、进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。示例打开谷歌浏览器,随便打开几个网页,按下shift+esc键,界面将显示目前浏览器启动的几个进程,还有相应的进程内存占用空间、CPU核数、进程ID等等。在浏览器中新打开一个tab页,浏览器会开启一个新...

2020-03-06 18:37:07 1041

原创 js 事件循环执行顺序(setTimeout,async,promise多层嵌套)

我们知道JS是单线程脚步语言,设计为单线程是有好处的,如果为多线程,当两个人同时操作了同一个资源,这样会造成同步问题,不知以谁为准。同时,单线程也存在一些问题,比如:for(var i = 0;i<1000;i++){ console.log(1) }console.log(2)结果就是,2将会等待1全部输出完毕后在执行,浪费了大量的时间我们希望在等待的时间去做别的事,所以...

2020-03-05 13:07:32 4653 2

原创 js实现hash路由原理

简单的上下布局,点击左侧导航,中心内容跟对变化,主要技术是检测路由的hashchange事件<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-s...

2019-11-06 17:21:41 856 1

原创 elasticsearch+kibana (windows系统搭建+导入数据)

是什么?ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。官方页面: Kibana干什么?你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各...

2019-10-30 14:42:17 1078

原创 python 简单爬虫--爬取淘宝的商品信息存入csv

结果如下代码如下# -*- coding:UTF-8 -*-import requestsfrom bs4 import BeautifulSoupimport csvimport codecstarget = 'https://list.tmall.com/search_product.htm?q=%C4%CD%BF%CB+%D0%AC%C4%D0&type=p&amp...

2019-10-12 17:04:44 1822 2

原创 Flutter入门教程

一、起源Flutter在2018 世界移动大会发布第一个beta版本,这是谷歌发布的一套移动UI框架 ,可以快速在iOS和Android上构建高质量的原生用户界面。 能够做到一套代码两个终端运行。并且Flutter是完全免费、开源的。Flutter组件采用现代响应式框架构建,这是从React中获得的灵感,中心思想是用组件(widget)构建你的UI。 组件描述了在给定其当前配置和状态时他们...

2019-09-02 10:20:14 7324 2

原创 一维数组元素分类转换成二维数组

数组元素按照某个key分类转换成二维数组 let test =[ {id:0,code:"4"}, {id:1,code:"1"}, {id:2,code:"1"}, {id:3,code:"2"}, {id:4,code:"2"}, {id:5,code:"3"}, {id:6,c...

2019-06-28 18:23:29 1108

原创 threesJs加载obj模型并给模型贴图

webgl做前端的3d展示需要几大要素,场景(scene), 相机(camera), 以及一个渲染器(renderer),这是必不可少的,如果你还需要操作可以使用控制器,下图即为加载的obj模型和材料贴图.<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta...

2019-06-14 18:23:20 3708

原创 vue使用xlsx修改样式导出excel

先上效果图使用的插件是xlsx和xlsx-stylenpm install xlsx-style --savenpm install xlsx --save官方文档:xlsx-style在需要的组件中引入直接import ‘xlsx-style’ 不起作用,不知道什么原因,在node-modules中找到xlsx-style中的dist目录中的xlsx.full.min.js粘贴到...

2019-05-29 18:34:31 13133 32

原创 工厂模式,构造函数模式,原型模式,组合模式简单理解

作为编程人员一定要知道面向对象,javascript支持面向对象编程。今天我们来简单介绍一下创建对象的几种模式。我们知道创建对象常见的方式有两种:字面量方式和new 操作符方式字面量var people1 = {name:"小明"}new操作符var people2 = new Object()people2.name="小花"尽管这两种可以满足我们的基本要求,但是在创建大量...

2019-05-21 11:41:56 474

原创 wordpress站点插件自动爬取文章

空闲之余,搞了一个wordpress,本想把csdn的文章复制过去,但是太麻烦。于是各种找办法。通过python爬虫也好,通过xml导入也好。最终找到一个这样的插件。wp-autoblog https://wp-autoblog.net/zh按照文档直接来就行如图:爬取的文章...

2019-05-07 18:17:18 4360 3

原创 IE浏览器解决socket.io的兼容问题

在vue 中,常使用vue-socket.io来作为及时通讯,但是,在IE浏览器中,使用vue-socket.io可能会出现问题。于是我找到了vue-socket.io-extendednpm install vue-socket.io-extendednpm install socket.io-client在main.js中引入import VueSocketio from 'vue...

2019-04-23 14:40:50 2618 2

原创 nginx win简单命令操作(启动,关闭,重启,杀死进程)

到官网下载最新的nginx,点击nginx.exe或者在安装目录下使用命令start nginx.exe打开浏览器,输入localhost,出现页面,访问成功。打开目录下的config/nginx.config,这里可以修改各种配置。修改后 输入nginx -s reload,重启nginx,停止nginx使用下面命令 nginx.exe -s stop nginx.e...

2019-03-19 19:59:30 2341

原创 MySQL从.ibd文件恢复数据

此方法mysql5.7版本以上适用。假如你的数据库表都没了,而mysql目录下的data中.ibd还在的话,你可以试试此方法。创建一个新的数据库,创建一个表,字段结构跟丢失的一样,进入该数据库,删除该表空间例如: ALTER TABLE project DISCARD TABLESPACE;project是我的表将project.ibd复制到新建的数据库下,执行命令,导入表空间。A...

2019-03-12 18:19:20 3433

原创 mysql不同版本修改用户密码(update和alter)

mysql5.7版本之前,修改用户密码使用updateUPDATE user SET Password=PASSWORD(‘你的新密码') where USER='root';mysql5.7版本之后,password属性已经取消(使用SELECT Password(‘123’) 会报错),用户密码的语句已经改变,语句如下ALTER USER 'root'@'localhost' ID...

2019-03-12 17:18:55 2258

原创 webpack 打包去掉文件后的hash字符串

webpack打包后的js,css文件通常带有hash字符串,这样做的好处是防止浏览器缓存。但是有时候我们想要一个固定的html,加载的js,css名称不带后缀,怎么做呢?打开build下的webpack.prod.conf.js output: { path: config.build.assetsRoot, filename: utils.assetsPath('js/[...

2019-03-01 18:29:12 5803

node服务访问前端静态文件

运行 node start 打开浏览器输入localhost:3000,然后将静态页面放在这个文件同级,通过路由即可访问静态文件

2018-12-19

空空如也

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

TA关注的人

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