- 博客(55)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 进程间的六种通信方式
概述每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的, 所以进程之间要通信必须通过内核。进程间通信目的一般有共享数据,数据传输,消息通知,进程控制等。以 Unix/Linux为例,介绍几种重要的进程间通信方式:管道、消息队列、共享内存、信号量、信号、Socket。六种通信方式管道如果你学过Linux命令,那你肯定很熟悉 | 这个竖线。$ ps auxf | grep mysql上面命令行里的| 竖线就是一个管道,它的功能是将前一.
2022-05-07 13:14:13
33977
9
原创 vscode插件开发-发布插件
本文将指导读者逐步学习如何在Visual Studio Code(VSCode)中开发自定义插件,并最终将其发布到VSCode插件市场。读者将了解到如何准备插件代码、配置插件信息、准备发布所需的资料,以及如何在市场上管理自己的插件。通过本文的指导,读者将能够将自己的创意和功能分享给全球的VSCode用户,为开发者社区贡献自己的一份力量。
2024-03-13 16:35:08
1668
原创 vscode插件开发-脚手架搭建
本文介绍了如何在Visual Studio Code(VSCode)中开发自定义插件所需的基本步骤和流程。通过搭建一个脚手架,读者将学习如何创建一个简单但功能完备的插件,包括设置开发环境、初始化项目结构、添加必要的文件和配置,并且了解如何在VSCode中进行调试和测试。无论是想要为自己的工作流增添定制化功能,还是向VSCode社区贡献自己的创意,本文都将帮助读者迈出第一步,快速上手VSCode插件开发。
2024-03-13 16:32:41
973
原创 cnpm的简介与使用
由于rejistry仓库服务器位于国外就会导致包的获取速度较慢或获取不到(当然此类问题较少),后来阿里就实现了镜像服务器cnpm,cnpm会大约每十分钟从register仓库克隆一份到taobao本地仓库,使用cnpm后就会从taobao仓库获取包而不是register仓库获取。通过上述方法安装完成后我们只需将 npm 改为 cnpm 就可以从淘宝镜像安装package了。了解了npm原理后,我们可以知道npm是从rejistry仓库。第二,担心某天淘宝的镜像挂了或者不维护了,又要改来改去;
2023-03-09 13:56:55
2020
1
原创 npm install 原理
作为前端开发人员,开发项目的时候,会用到很多很多的插件(包/依赖),而且插件的版本是固定的,所以当团队合作的时候,就需要整合所有相关的包(工作量非常大,尤其是在以后的框架项目中,用到的插件成千上万个),那么npm就是一个管理这些包的工具,所以一会后的项目基本使用 npm 去管理项目的依赖。需要将项目变成node项目(因为node项目中才能使用npm管理依赖),在项目文件夹内打开命令行工具执行 npm init ,会自动生成一个 package.json 文件,这个文件就是node项目的标志。
2023-03-09 13:48:35
1593
原创 npx使用及原理
反过来,如果忽略本地的同名模块,强制安装使用远程模块,可以使用--ignore-existing参数。比如,本地已经全局安装了create-react-app,但还是想使用远程模块,就用这个参数。npx 的原理很简单,就是运行的时候,会到先到 node_modules/.bin路径 中查找命令如果没有再去 全局环境变量$PATH 里面,检查命令是否存在。如果想让 npx 强制使用本地模块,不下载远程模块,可以使用--no-install参数。Node安装后自带npm模块,可以直接使用npx命令。
2023-03-09 11:22:08
4170
1
原创 详解package.json和package-lock
在我们执行 npm init 时会问几个基本问题,如包名称、版本号、作者信息、入口文件、仓库地址、关键字、描述、许可协议等,多数问题已经提供了默认值,你可以在问题后敲回车接受默认值,以下是 package.json常见字段解析 和 package-lock.json的dependencies:(通常我们不会关注package-lock.json的内容,所以这里也就不做赘述了,这里只讲一下其中 dependencies 属性)^x.y.z:表示x是保持不变的,y和z永远安装最新的版本;
2023-03-09 11:17:28
3592
原创 node模块化 和 require原理
自执行函数是前端模块化的实现方案之一,在早期前端没有模块化系统的时代,自执行函数可以很好的解决命名空间的问题,并且模块依赖的其他模块都可以通过参数传递进来。第二个参数就是函数的结束部分。node中并没有选用他们来实现模块化,eval有一个致命的问题,就是容易被不属于它的变量所影响,而未使用new Function()的原因未知,如下str字符串中并没有定义a,但是确可以使用上面定义的a变量,这显然是不对的,在模块化机制中,str字符串应该具有自身独立的运行空间,自身不存在的变量是不可以直接使用的。
2023-03-09 11:11:51
1702
原创 ES6的export和import
ES6中的模块加载ES6 模块是编译时加载,编译时就能确定模块的依赖关系,以及输入和输出的变量,相比于CommonJS 和 AMD 模块都只能在运行时确定输入输出变量的加载效率要高。严格模式ES6 的模块自动采用严格模式,不管你有没有在模块头部加上 "use strict"; 语句严格模式主要有以下限制。• 变量必须声明后再使用• 函数的参数不能有同名属性,否则报错• 不能使用with语句• 不能对只读属性赋值,否则报错• 不能使用前缀 0 表示八进制数,否则报错• 不能删除不可删除的属
2023-03-09 11:05:05
1795
原创 require与import的区别
我们在 node 中使用 babel 支持ES6(在 node 当中,比如 node.js 代码,也不能直接使用 import 来导入,必须使用 babel 支持才能使用 import 语法),实际上也是将 ES6 转码为 ES5 再执行,import 语法实际上会被转码为 require。module.exports后面的内容是什么,require的结果就是什么,比如对象、数字、字符串、函数等,然后再把require的结果赋值给某个变量,它相当于module.exports的传送门。
2023-03-09 10:53:51
898
原创 删除所有node_modules和package-lock配置文件
npkill概述:一个可以轻松找到并删除旧的和沉重的node_modules文件夹的插件(也可以用来删除其他文件)我们可以直接使用以下命令来删除当前目录下所有的 node_modules。通过以下命令删除其他文件如 package-lock.json。有一部分paceage-lock不是npm生成的删除时需要注意。本章就介绍到这里更多使用请看文章开头的官网!首先我们通过以下命令安装npkill插件。
2023-03-09 10:42:29
1408
原创 npm、yarn、pnpm的优劣与pnpm的原理与使用
使用 npm 时,依赖每次被不同的项目使用,都会重复安装一次。 而在使用 pnpm 时,依赖会被存储在内容可寻址的存储中,所以:• 如果你用到了某依赖项的不同版本,只会将不同版本间有差异的文件添加到仓库。 例如,如果某个包有100个文件,而它的新版本只改变了其中1个文件。那么 pnpm update 时只会向存储中心额外添加1个新文件,而不会因为仅仅一个文件的改变复制整新版本包的内容。• 所有文件都会存储在硬盘上的某一位置。 当软件包被被安装时,包里的文件会硬链接到这一位置,而不会占用额外的磁盘空间。
2023-03-09 10:38:06
2764
原创 React18 setState是同步还是异步?
executionContext代表了react当前的调度状态, 如果退出了react的调度这个值就会重新变成NoContext. 也就是说, 如果你调用setState的时候并不处于react的调度状态中, 那么就会同步的去执行你的setState.这也是为什么一旦我们使用一些异步操作就会导致setState变成同步的原因, 而在react 18中这段代码变成了这样。在编写UI测试时,可以将渲染、用户事件或数据获取等任务视为与用户界面交互的“单元”。
2023-03-08 15:45:56
2549
2
原创 一篇文章彻底理解setState是同步还是异步!
只要你进入了 react 的调度流程,那就是异步的。只要你没有进入 react 的调度流程,那就是同步的。什么东西不会进入 react 的调度流程? setTimeout setInterval ,直接在 DOM 上绑定原生事件等。这些都不会走 React 的调度流程,你在这种情况下调用 setState ,那这次 setState 就是同步的。 否则就是异步的。而 setState 同步执行的情况下, DOM 也会被同步更新,也就意味着如果你多次 setState ,会导致多次更新,这是毫无意义并且浪费
2023-03-08 15:27:26
1648
2
原创 TypeScript 范型的基本用法
本章讲述了在类、函数、接口中范型的用法。泛型可以理解为宽泛的类型,通常用于类、函数、接口。定义一个函数或类时,有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用上例中,test函数有一个参数类型不确定,但是能确定的时其返回值的类型和参数的类型是相同的;由于类型不确定所以参数和返回值均使用了any,但是很明显这样做是不合适的:首先使用any会关闭TS的类型检查,其次这样设置也不能体现出参数和返回值是相同的类型;
2022-11-29 21:55:28
981
原创 解决vue-element-admin 组件Markdown 预览窗口太小问题
问题产生的原因:因为最初使用simplemde-markdown-editor作为markdown编辑器,但是该库很长时间没有更新和维护,并且还存在xss的风险。 因此,在v3.9.3 +版本之后,请使用 tui.editor 作为新编辑器。 接下来的所有文档都基于tui.editor它。
2022-09-09 10:29:22
1419
原创 js 实现复制功能
代码js实现复制功能。 复制 const copy = (value, cb) => { // 动态创建 textarea 标签 const textarea = document.createElement('textarea') // 将该 textarea 设为 readonly 防止 iOS 下自动唤起键盘,同时将 textarea 移出可视区域 textarea.rea...
2022-07-29 13:14:01
1115
原创 运行npm run serve出现XXX/node_modules/.bin/vue-cli-service: Permission denied 解决方案
在Mac环境下,当复制Vue-cli项目或通过版本工具获取已有项目后,执行命令npmrunserve进行调试时,可能会提示XXX/node_modules/.bin/vue-cli-servicePermissiondenied权限不足的问题。解决方案找到项目的根目录,打开终端,输入权限命令。...
2022-07-15 14:31:18
5705
原创 java五种遍历HashMap的方法和性能分析
1.使用Iterator迭代首先,它是遍历老java版本map的唯一方法。另外一个重要的特性是可以让你在迭代的时候从map中删除entries的(通过调用iterator.remover())唯一方法。如果你试图在For-Each迭代的时候删除entries,你将会得到unpredictable resultes 异常。从性能方法看,这个方法等价于使用For-Each迭代使用 For-each + entrySet 循环遍历 HashMap这是最常见的方法,并在大多数情况下更可取的。当你在循环中需
2022-06-25 11:35:09
1439
原创 Java中static作用及用法
因为概述较为抽象,这里建议大家先看使用和总结,再看概述概述 static又叫静态修饰符,大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是用stat...
2022-05-23 16:44:38
3902
原创 java中main函数定义详解
解读public static void main(String[] args) { // 方法体 }为什么一定要使用public访问修饰符呢Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public (因为调用的时候java虚拟机和main方法不在同一个类下如果不设置为public则没有访问权限则java虚拟机不能运行该函数访问修饰符)为什么要使用staticjava虚拟机执行main方法的时候不是创建对象访问的而是直接通过类名访问的,所以该方法必须是static.
2022-05-23 14:43:45
2688
原创 java注解:@Override
@Override其实最主要的作用就是一个注解和验证是否重写了方法可以当注释用,方便阅读; 编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。这里举个案例public class Parent { public void name() { System.out.println("Parent"); }
2022-05-23 13:55:47
1482
原创 java的四种访问修饰符 private default protected public 详解
Java 修饰符Java语言提供了很多修饰符,主要分为以下两类:访问修饰符 非访问修饰符这篇文章着重讲解访问修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端,如我们最常见的main方法就使用类public修饰符:public static void main(String[] arguments) { // 方法体}访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 default.
2022-05-23 13:48:36
4374
原创 macOS M1配置java开发环境
在首页向下划动找到如图所示的位置,然后选择与自己电脑匹配的安装包即可(m1选择ARM 64-bit的版本),macOS选择.dmg文件后缀的安装包。完成后可打开电脑的终端输入:java -version查看版本。插件 (这是一个扩展包,它里面装了多个扩展。如果你使用的是vscode编辑器的话推荐安装。下载完成点击在访达中显示点击对应的安装包。点击箱子然后点击继续,安装就完成啦。显示自己安装的版本就代表安装成功啦。首先在浏览器中搜索:zulu。
2022-05-12 14:36:07
2158
原创 TCP和UDP详解
概述计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机与主机的通信。但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端的协议。运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。运输层有两个主要的协议:TCP和UDPTCP的全称是Transmission
2022-05-11 11:29:53
16309
原创 进程的调度算法
什么时候调度进程在进程的生命周期中,当进程从一个运行状态到另外一状态变化的时候,其实会触发一次调度。 比如,以下状态的变化都会触发操作系统的调度:从就绪态->运行态:当进程被创建时,会进入到就绪队列,操作系统会从就绪队列选择一个进程运行; 从运行态->阻塞态:当进程发生I/O事件而阻塞时,操作系统必须选择另外一个进程运行; 从运行态->结束态:当进程退出结束后,操作系统得从就绪队列选择另外一个进程运行;进程的状态五状态模型如图,进入就绪队列,其状态就会变为就.
2022-05-06 14:09:04
3116
原创 进程和线程的详解和区别
进程和线程概述我们都知道计算机的核心是CPU,它承担了所有的计算任务,而操作系统是计算机的管理者,它负责任务的调度,资源的分配和管理,统领整个计算机硬件;应用程序是具有某种功能的程序,程序是运行于操作系统之上的。进程我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU会执行 程序中的每一条指令,那么这个运行中的程序,就被称为「进程」。 进程是一个具有一定独立功能的程序...
2022-05-06 11:47:34
1387
原创 vscode 常用插件分享(主题,代码补全,高亮等等)
基础插件Chinese (Simplified) (简体中文)中文(简体)语言包open in browser打开浏览器,快捷键“Alt+B”vscode-icons编辑器的文件图标Live Server修改代码时时时预览效果 需要在设置中搜索auto save进行设置indent-rainbow彩色代码缩进Bracket Pair Colorizer 2括号着色器code-translate代码翻译器Better Comments彩色高亮注释
2022-04-25 22:08:08
5478
原创 oh-my-zsh国内镜像安装
前言本文主要讲究oh-my-zsh国内镜像安装,解决使用官网地址因网络问题导致安装失败的问题什么是Oh My ZshOh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。Oh My Zsh这个名字听起来就很有意思,它是基于zsh命令行的一个扩展工具集,提供了丰富的扩展功能。Oh My Zsh只是一个对zsh命令行环境的配置包装框架,但它不提供命
2022-04-25 21:58:30
4799
原创 git 命令别名配置以及自用配置分享
本文主要介绍git中使用命令添加别名和在mac、window中批量添加别名以及自己在平时的开发过程中经常是哟到的别名
2022-04-25 21:49:09
2023
原创 git 常用命令大全
简介实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,Git就是目前世界上最先进的分布式版本控制系统(没有之一),下面就本人在学习和实践过程中经常使用到的命令与配置。命令 说明 安装与配置 sudo apt-get install git Ubuntu上安装Git命令 git config --global user.name 用户名 设置全局用户签名(安装Git后务必设置,去掉--global可给某个项目单独设置) git conf...
2022-04-25 20:58:22
2129
原创 HTML5视频播放器video和音频播放器audio属性,事件,案例
HTML 音频/视频 方法方法 描述 addTextTrack() 向音频/视频添加新的文本轨道。 canPlayType() 检测浏览器是否能播放指定的音频/视频类型。 load() 重新加载音频/视频元素。 play() 开始播放音频/视频。 pause() 暂停当前播放的音频/视频。 HTML 音频/视频属性属性 描述 audioTracks 返回表示可用音频轨道的 AudioTrackList 对象。 autop
2022-03-22 20:16:33
2399
原创 localStorage、sessionStorage 和 Cookie 区别、 用法、 和应用场景等(一张表格解决)
localStorage保存在客户端,不与服务器进行交互通信,存储字符串类型,对于复杂的对象可以使用JSON.stringify和JSON.parse来处理,永久的,关闭页面或浏览器之后localStorage中的数据也不会消失,一般5MB以内,cookie只能保存字符串类型,以文本的方式,格式为document.cookie = name='value; expires=UTC"; path=/'path 参数,属于的路径,默认为当前页面,sessionStorage及在当前会话下有效...
2022-03-22 14:49:11
3429
原创 JS Date常用方法和常用组合
常用方法方法 描述getDate() 返回月中的某天(1-31)getDay() 返回星期几(从0到6)0代表星期天getFullYear() 返回年份getHours() 返回小时(从0到23)0代表0getMilliseconds() 返回毫秒数(从0到999)getMinutes() 返回分钟(从0到59)0代表0getMonth() 返回月份(从0到11)0代表1月getSeconds() 返回秒数(从0到59)getTime() 返回自1970年1月1日午夜和指定日期以来的
2022-03-22 11:27:55
1256
原创 CSS实现单行、多行文本溢出显示省略号(…)
属性说明 overflow: hidden; 溢出部分隐藏 white-space: nowrap; 规定段落中的文本不进行换行 text-overflow: ellipsis; 溢出显示省略号 display: -webkit-box; 将对象作为弹性伸缩盒子模型显示 -webkit-box-orient: vertical; 从上到下垂直排列子元素(设置伸缩盒子的子元素排列方式) -webkit-line-clamp:
2022-03-21 19:44:01
1281
原创 CSS background 所有属性详细说明
background组合使用 background所有属性及属性值详细解释 如:background-color background-image background-repeat background-attachment background-position background-size background-clip
2022-03-21 15:52:34
1287
原创 移动端和PC端响应式布局
只需要在需要响应式布局的页面添加下面的方法即可,在react或vue的脚手架中只需要在index.html文件中添加改方法就可以实现全局响应式布局了(因为react和vue都是单页面)function remSize() { // 获取移动设备的宽度 var deviceWidth = document.documentElement.clientWidth || window.innerWidth // 设置最大宽度 (需要限制宽度时添加) if (deviceWidth >
2022-03-21 14:38:28
3497
3
原创 CSS常见的居中方法
文本或行内元素居中对于文本或行内元素,只需要在父级(因为text-align是可继承的)或元素本身添加text-align: center;即可,如果需要垂直居中的话只需要给子元素设置与父元素height值相同的line-height即可.<div style="height: 40px; text-align: center; background-color: #ccc;"> <span style="line-height: 40px;">text text<
2022-03-21 14:23:50
3136
原创 umi或antdpro运行时报错“Module ‘xxx‘ does not exist in container“解决方案
问题描述在我们启动基于umi的脚手架,如antd pro,在运行完毕后控制台报如下错误:Error: Module "本地的路径信息" does not exist in container.原因:可能是因为项目路径移动后导致src/.umi缓存文件找不到原来的路径所导致的问题解决方案一:删除src/.umi然后重新运行项目就解决了方案二:关闭mfsu功能,在config/config.ts中找到mfsu并删除该属性。...
2022-03-10 17:00:36
11220
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人