自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 前端性能优化

2024-03-04 14:40:30 22

原创 ESLint默认配置及修改

通过上述方法,可以很灵活的控制 ESLint 规则的开启和错误级别。对于某些不适用于当前项目的规则,关闭它们会使得 ESLint 检查更加符合预期。这会在这一行关闭 no-console 规则。使用 /* eslint-enable */ 来重新开启规则。另外,在代码中可以使用注释 /* eslint-disable */ 来临时关闭某条规则。如果不想开启 ESLint 推荐的某些规则,可以在 rules 字段中进行覆盖。ESLint 提供了一组默认的推荐规则配置,这些规则都开启了。

2023-05-31 20:00:00 1119

原创 前端使用web-worker创建线程,创建多少个合适?

比如一个基础的网站,有一些定时异步任务需要执行,只开启 1 个 web worker 效果可能不佳,这个时候可以开启 2-3 个 web worker 来执行这些异步任务,资源消耗不高但可以带来明显性能提升。如果是 IO 密集型任务,则数量不宜太多,否则可能造成过多的线程上下文切换,影响性能。比如一个图像编辑网站,当用户执行高消耗操作如图片滤镜或特效时可以临时增加 2-3 个 web worker,操作结束后再关闭这些额外的 web worker。总之,对IO密集型任务,质优于量。

2023-05-30 20:00:00 1708

原创 如何封装一个js文件?

这个 DOM 库使用模块模式封装了一些常用的 DOM 操纵方法,并暴露了一个 dom 的命名空间对象给外部使用。:使用闭包或模块模式封装代码,不将变量暴露在全局作用域。:使用对象字面量创建命名空间,防止函数与变量名称冲突。:不仅可以避免变量污染全局作用域,还可以模拟类。:这可以防止浏览器加载缓存的脚本文件。:这是一种暗示这些成员是私有的约定。这能避免许多 JS 潜在的问题。:在 JS 文件的首行添加。

2023-05-19 15:59:11 1056

原创 package.json配置

dependencies字段指定了项目运行依赖的包及版本号。

2023-05-06 11:06:10 1150

原创 web-worker使用ajax进行接口调用

所以总的来说,虽然 web worker 无法直接使用 XHR,但有很多方式来进行 AJAX 请求。Fetch API 可能是最简单的选择。

2023-04-28 17:16:21 607

原创 Vue2学习笔记

自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。将一个自定义指令全局注册到应用层级}) // 使 v-focus 在所有组件中都可用 app . directive('focus' , {// 在绑定元素的 attribute 前 // 或事件监听器应用前调用 created(el , binding , vnode , prevVnode) {

2023-02-08 14:14:55 655

原创 flexbox 优雅布局

【代码】flexbox 优雅布局。

2023-02-01 14:04:12 103

转载 el-table动态表格自适应宽度

el-table动态表格自适应宽度由于表头和列是分开渲染的,通过el-table 设置fit属性,只能撑开表头,但是没有办法根据列的内容去适应宽度。网上找了一些使用根据表格内容计算表头宽度的文章,记个笔记。代码逻辑是通过vue 的watch 监控表格的数据data,计算每列的内容和表头的最大宽度,计算的时候把表格内容使用span标签包裹,然后计算span标签的宽度width:px,然后再加上表格的内边距,就得到了列的最大宽度.<el-table :key="key" :data="data"

2022-02-17 14:10:13 16050 1

原创 前端常见的公共方法

// 数组去重export function uniqueArr(arr) { return Array.from(new Set(arr))}// 获取字节长度export function byteLength(str) { let s = str.length for (var i = str.length - 1; i >= 0; i--) { const code = str.charCodeAt(i) if (code &g

2021-11-25 14:25:59 324

原创 正则表达式

正则表达式正则表达式修饰符i:大小写不敏感g:全局匹配m:多行匹配正则表达式模式:括号用于查找一定范围内的字符串:表达式描述[abc]查找方括号之间的任何字符[0-9]查找任何从0到9的数字(x , y)查找由,分隔的任何选项元字符:拥有特殊含义的字符元字符描述\d查找数字\s查找空白字符\b匹配单词边界\uxxxx查找以十六进制数xxxx规定的Unicode 字符定义量词:量词描

2021-10-22 17:10:05 174

原创 js字符串/数组方法汇总

js字符串方法汇总//slice(start,end) //substring(start,end) //substr(start,length) var str = "1234567890"; var res = str.slice(4, 6); //前闭后开,从前往后,索引为0开始---//56 var res = str.slice(-8, -6); //前闭后开,从后往前,索引为1开始---//34 var res = str

2021-10-15 17:12:20 268

原创 微信小程序保存网络图片至本地

小程序保存网络图片时发现保存的是以.bin为后缀的文件,无法正常识别,参考网上的例子重新弄了一下,在此记录// 保存图片(主要针对授权的几种不同情况判断) saveCard() { let that = this wx.getSetting({ success: (res) => { if (res.authSetting['scope.writePhotosAlbum']) { that.saveImg() } else if

2021-09-22 15:31:07 1378

原创 CSS文本超出2行就隐藏并且显示省略号

超出一行隐藏:overflow:hidden; //超出的文本隐藏text-overflow:ellipsis; //溢出用省略号显示white-space:nowrap; //溢出不换行但是第三条属性,只能显示一行,不能用在这里,那么如果显示多行呢?超出两行隐藏:css3解决了这个问题,解决方法如下:display:-webkit-box; //将对象作为弹性伸缩盒子模型显示。-webkit-box-orient:vertical; //从上到下垂直排列子元素(设置伸缩盒子的子元素

2021-08-20 10:31:29 7837

原创 js数组与字符串的相互转换方法

js数组与字符串的相互转换方法1、数组转字符串需要将数组元素用某个字符连接成字符串,示例代码如下:var a, b;a = new Array(0,1,2,3,4);b = a.join("-"); //"0-1-2-3-4"2、字符串转数组实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:var s = "abc,abcd,aaa";ss = s.split(",");// 在每个逗号(,)处进行分解 ["abc", "abcd", "aaa"

2021-04-19 17:19:34 365 1

转载 反爬虫的常见应对方法

反爬虫反爬虫 是网站限制爬虫的一种策略。它并不是禁止爬虫(完全禁止爬虫几乎不可能,也可能误伤正常用户),而是限制爬虫,让爬虫在网站可接受的范围内爬取数据,不至于导致网站瘫痪无法运行。而且只要是爬虫获取的数据基本上都是用户可以看到的数据,所以理论上公网上的数据都可以通过爬虫来获取到,但是很多网站爬取的数据不可用来商用!常见的反爬虫方式有判别身份和IP限制两种判别身份有些网站在识别出爬虫后,会拒绝爬虫的访问,比如豆瓣。我们以豆瓣图书 Top250 为例,如果用爬虫直接爬取它import request

2021-03-31 10:36:59 2100

原创 input禁止输入空格

input禁止输入空格<!DOCTYPE html><html> <div class="modal-body form"> <div class="form-group"> <label class="col-sm-2 control-label" >资产编号<span class="required"> * </s

2021-03-11 14:24:15 3744

原创 element-ui 上传图片后清空图片列表

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <s

2021-03-10 17:09:47 1842

原创 js异步操作-uniapp为例+console的一些用法

Promise 是抽象的异步处理对象构造方法:let promies = new Promise((resolve, reject) => { resolve(); //异步处理 });Promise 有三个状态:Fulfilled: has-resolved, 表示成功解决,这时会调用 onFulfilled.Rejected: has-rejected, 表示解决失败,此时会调用 onRejected.Pending: unresolve,表示待解决,既不是resolve也不是

2021-03-03 11:43:14 1360

原创 js使用定时函数执行异步调用

要求:需要在页面加载的时候先执行函数doSomething,再执行其他函数方法一:使用回调函数mounted() { this.doSomething(this.callback); },methods: { callback(result){ console.log('接收到的结果为'+result); }, doSomething(callback){ console.log('执行结束'); setTimeout(function(){

2020-12-22 17:27:35 1442

原创 微信小程序开发--uniapp

uniapp介绍什么是uniappuniapp是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。截止2020年8月份,uniapp已经支持一套代码打包到 Android、IOS、H5、微信小程序、支付宝小程序、百度小程序、字节跳动小程序、QQ小程序、快应用、360小程序 10个平台。移动端跨平台技术发展史随着互联网的逐渐发展,互联网公司越来越多,原生的移动端存在无法

2020-10-10 09:44:05 4669 1

原创 HTML基础

HTML文件代码<!DOCTYPE html><html><head><meta charset="utf-8"><title>文档的标题</title></head><body>标题使用标签h来定义<h1>标题一</h1><h2>标题二</h2>段落使用标签p来定义<p>段落一</p><p>段落二&l

2020-08-12 16:50:41 209

原创 数据库复习

进入数据库mysql -uroot -p连按两次回车进入数据库显示所有数据库show databases;使用hello这个数据库use hello;显示该数据库中所有的表show tables;查看表student的结构desc student;查看表中的内容select * from student;在student表中插入一条数据,并查看结果insert into student values(5,'dog','男');select * from s

2020-08-11 16:39:00 126

原创 从txt文件中导入多个数据代入到公式中计算

从txt文件中导入数据代入到公式中计算这个博客是用来记录的好久没有更新过博客了,前几天一个同学让我帮忙写一个程序用来计算,写完后顿时发觉当时过程控制老师说的是真的没毛病,有些计算如果很复杂,而且数据量比较多的话,一个一个计算实在是太复杂了,写程序就让计算简单很多了先看他发给我的公式参数有三个,分别是B,Z和A这三个参数通过txt文件导入,要求计算出Rc的值下面是源代码#defin...

2020-03-18 17:17:06 1453

原创 栈和队列的常见题目

栈和程序运行时的栈区有什么区别?内存中的栈区实际上类似于数据结构中的栈。两者区别的是数据结构中的栈是解决为程序开发而设计的算法问题,而在内存中的栈区是解决内存分配的问题。不过,它们俩相同点就是遵守先进后出的规则。为什么将递归程序转化成循环时需要用到栈?用栈保存未完成的工作,在适当的时候从栈中取出并执行。 系统保存了工作的数据和状态,数据就是函数的局部变量, 状态就是程序指针。如果你采用递归...

2019-09-11 19:16:42 637

原创 顺序表链表对比

顺序表存储(典型的数组)原理:顺序表存储是将数据元素放到一块连续的内存存储空间,相邻数据元素的存放地址也相邻(逻辑与物理统一)。优点:1.空间利用率高。(局部性原理,连续存放,命中率高)2.支持随机访问,存取速度高效,通过下标来直接存储。3.顺序表的缓存利用率比较高缺点:1.插入和删除比较慢,比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序。2.不可以增长长度...

2019-09-10 11:39:33 431 1

原创 基于HTTP协议的图片服务器

项目简述图床实现一个HTTP服务器,用这个服务器存储图片,针对每个图片提供一个唯一的url,借助这个url就可以将图片展示到其他网页上需求诞生github中的issue如果需要上传图片时,是不支持本地直接上传的,还有自己搭建的静态网页博客上传图片时也需要填图片的地址,而不能直接上传核心需求1.上传图片2.根据图片的url访问图片,获取图片内容(即下载)3.获取某个图片的属性4....

2019-09-09 12:13:47 2055

原创 图床的实现

相关测试

2019-09-04 17:48:06 1572

原创 Leetcode链表面试题

Leetcode链表面试题编写一个程序,找到两个单链表相交的起始节点。typedef struct ListNode ListNode;struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { if(headA==NULL||headB==NULL) r...

2019-08-25 16:39:44 143

原创 进程- - -信号

信号概念:信号是进程之间事件异步通知的一种方式,属于软中断;通知进程发生了某件事情,中断进程当前的操作,转而去处理这件事信号的种类:共62种信号可靠信号- - -34~64非可靠信号- - -1~31相关命令查看信号种类- - -kill -l信号的作用过程信号的产生 -> 在进程中注册 -> 在进程中注销 -> 信号的处理信号的产生:硬件产生:ctrl...

2019-08-20 21:48:28 108

原创 进程间通信- - -共享内存+消息队列+信号量

进程间通信共享内存共享内存是最快的进程间通信方式,相较于其他进程间通信方式,少了两次内核态与用户态之间的数据拷贝过程原理及使用过程在物理内存中开辟一块内存空间将这块内存空间通过页表映射到进程的虚拟地址空间中进程可以直接通过进程虚拟地址空间访问带到这块物理内存进程操作;若多个进程映射同一块物理内存,就可以实现相互通信;直接通过虚拟地址改变内存中的数据,其他进程的数据也会随之改变解除映...

2019-08-20 17:09:30 273

原创 进程间通信- - -管道

进程间通信由于进程具有独立性(都各自操作自己虚拟地址空间的虚拟地址,无法访问别人的地址),因此进程之间无法直接通信,操作系统根据不同场景,提供了几种不同的进程间通信方式:SYSTEM V: 管道, 共享内存, 信号量, 消息队列管道管道本质上还是是内核中的一块缓冲区,可以实现半双工通信(可选方向的单向传输)管道实现进程间通信的原理:让多个进程通过访问到相同的缓冲区来实现通信,管道实现通...

2019-08-19 20:08:01 104

原创 动态库与静态库

库文件实际上就是封装了一堆已经编译完成的代码文件,通过链接这个库进而获取到相应函数实现,即将代码翻译成机器指令代码(也就是执行到汇编这一步gcc -c test.c -o test.o),然后合在一起,就成了一个库动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。动态库的生成:现将多个.c文件生成.o文件 gcc -c test1.c -o test1.o...

2019-08-18 20:50:00 99

原创 文件描述符+文件流指针+缓冲区

文件描述符fd文件描述符就是一个小的正整数,是内核中文件描述信息结构体数组的下标,对应有一个文件描述信息来操作文件当我们打开文件时,操作系统在内存中要创建相应的数据结构来描述目标文件。于是就有了file结构体。表示一个已经打开的文件对象。而进程执行open系统调用,所以必须让进 程和文件关联起来。每个进程都有一个指针files, 指向一张表files_struct,该表最重要的部分就是包涵一个指针数...

2019-08-17 18:45:55 1173

原创 C标准库和系统调用中的文件IO操作接口

C库中的文件IO操作接口fopen 打开文件fclose 关闭文件fread 读取fwrite 写入fprintf 格式化写入fseek 移动跳转当前读取/写入位置printf 格式化字符串,输出到终端sprintf 格式化字符串,将格式化后的字符串写入到一个buffer中fprintf 格式化字符串,将格式化后的字符串写入文件中...

2019-08-16 21:43:51 222

原创 socket编程

socket编程头文件#include <sys/types.h>#include <sys/socket.h>常见接口//创建socket文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain, int type, int protocol);domain:地址域type:套接字类型(流式套接字SOCK_STREA...

2019-08-15 18:40:01 86

原创 线程池原理+具体实现

线程池一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,即在程序初始化时,创建一定数量的线程(又最大限制),从任务队列中获取任务,进行处理线程池=至少一个线程+任务队列作用:1.避免为大量请求创建线程,导致瞬间资源耗尽程序崩溃的问题2.避免大量线程频繁创建销毁所带来的时间成本线程池的应用场景:1.需要...

2019-08-13 21:40:52 145

原创 线程安全-----互斥锁+条件变量+信号量+线程安全的单例模式

线程安全概念:多个线程(执行流)同时对临界资源进行访问而不会造成数据二义实现:同步 + 互斥同步:同一时间访问的唯一性互斥:对临界资源访问的时序合理性线程间互斥的实现:互斥锁1.定义互斥锁变量pthread_mutex_t mutex2.对互斥锁变量进行初始化pthread_mutex_init(&mutex,&attr)参数:mutex:要初始化的互斥量 ...

2019-08-12 13:13:06 520

原创 多线程----生产者与消费者模型

生产者与消费者模型一个场所,两种角色,三种关系一个场所是指缓冲区两种角色是指生产者和消费者三种关系是指:生产者与生产者的互斥关系消费者与消费者的互斥关系生产者与消费者的同步+互斥关系生产者与消费者模型的优点:1.解耦合:即不需要直接进行数据交互2.支持并发:即多个线程可以同时操作场所3.支持忙闲不均三个优点都是通过这个场所来提供,但是因为多个角色有可能同时操作场所,所以要...

2019-08-12 13:10:33 323

原创 线程基本概念和接口

线程相关的概念线程概念:1.先说进程:传统操作系统中使用PCB来描述一个程序的运行- - - PCB就是进程2.Linux下PCB用来模拟实现线程,因此Linux下的线程是一个轻量级的进程3.而且这些轻量级的进程因为共用大部分进程资源,相较于传统的进程更加轻量化进程是资源分配的基本单位,线程是CPU调度的基本单位多个PCB共用同一个虚拟地址空间,为什么不会发生调用栈混乱呢?线程之间的...

2019-08-12 13:08:00 788

空空如也

空空如也

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

TA关注的人

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