自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于磁盘的分区的相关定义

【代码】关于磁盘的分区的相关定义。

2023-05-26 12:18:17 206

原创 关于分段和分页,你可能感兴趣的一些问题

5.由于使用物理内存分段模型,导致操作系统在管理内存时,会产生较大的外部或内部碎片,因此引入了物理内存分页的概念,先将物理内存分页,然后处理器把当前正在使用的地址当作虚拟地址,而不是物理内存真正的物理内存地址,这样就能将虚拟地址和物理内存地址做映射,就形成了虚拟地址是连续的,但是他们映射到了不同的物理内存地址上。1.传统分段内存分段管理是8086CPU引起的潮流,将物理内存分为多个段,提供给进程使用,需要注意的是,这里的分段指定是物理内存分段,而不是程序中的代码段,数据段。

2023-05-25 00:09:09 957

原创 Linux /etc下用户和用户组配置文件详解

linux /etc下用户相关配置文件详解

2022-07-25 16:49:28 487

原创 6.快速排序

//快速排序:选定一个数,将数组中比他大的放在右边,比他小的放在右边;// 那么该趟排序中,就确定了选定数字的位置;我们在对左边和右边进行递归排序,最终所有位置都确定function quickSort(arr){ //用于交换的函数 function swap(arr,idx1,idx2){ let tmp=arr[idx1] arr[idx1]=arr[idx2] arr[idx2]=tmp } //

2021-10-16 13:04:04 117

原创 5.归并排序

//归并排序:分而治之;先分治,分到只有一个元素,再合并function mergeSort(arr){ if (arr.length===1){ return arr } let preArr=arr.slice(0,Math.floor(arr.length/2)) let lastArr=arr.slice(Math.floor(arr.length/2),arr.length) let res1=mergeSort(preArr)//前半部

2021-10-16 13:01:37 67

原创 4.计数排序

//计数排序:利用桶统计各个数字出现的次数,再通过桶的key构建新返回数组//复杂度:时间O(n) 空间:O(n)//适用场景:数字个数较多,数字范围较小function countSort(arr){ let tong=[] for (let i=0;i<arr.length;i++){ if (!tong[arr[i]]){ tong[arr[i]]=0 } tong[arr[i]]++ }.

2021-10-16 12:57:55 59

原创 3.插入排序

//插入排序:每次将遍历到的元素插入前面合适的位置//复杂度:时间O(n2) 空间O(1)//交换次数O(n2)//稳定性:稳定function insertSort(arr){ let tmp; for (let i=0;i<arr.length;i++){ tmp=arr[i]//当前遍历到的元素 //插入到合适的位置 for (let j=i;j>0;j--){ if (arr[j]<ar

2021-10-16 12:56:27 56

原创 2.选择排序

//选择排序:每次在未排序的部分选择最小的一个加入已经排序的数组中//复杂度:时间O(n2) 空间O(1)//交换次数:O(n)//稳定性:不稳定function chooseSort(arr){ let min,minIndex; for (let i=0;i<arr.length;i++){ min=arr[i] for (let j=i+1;j<arr.length;j++){ if (arr[j]<m.

2021-10-16 12:53:25 68

原创 1.冒泡排序

//冒泡排序:每次把最大的数字交换到数组末尾//复杂度:时间:O(n2) 空间O(1)//交换次数:O(n2)//稳定性:稳定//flag用于优化function bubbleSort(arr){ let flag=false;//做优化,当本次没有交换过数据,那么数组是排好序的情况,不再进行交换 let tmp;//交换数组时中间变量 for (let i=0;i<arr.length;i++){ for (let j=0;j<arr.len.

2021-10-16 12:51:55 50

原创 BeegoMD5加密

import ( "crypto/md5" "encoding/hex")//参数:需要加密的字符串//返回值:加密后的字符串func GetMd5(str string) string { h := md5.New() h.Write([]byte(str)) return hex.EncodeToString(h.Sum(nil))}

2021-10-07 23:38:21 365

原创 Beego日志使用

//开启日志 logs.SetLogger(logs.AdapterConsole) //日志输出在控制台 logs.SetLogger(logs.AdapterFile, `{"filename":"logs/nomal.log"}`) //日志输出到一个文件 log

2021-10-02 19:32:42 669

原创 Beego mysql增删改

//12.更新数据 qs.Filter("name", "张三").Update(orm.Params{ "adderss": "贵州大学", }) //13.删除数据 qs.Filter("name", "张三").Delete() // 14.插入数据 _, err := o.Insert(&models.IdCard{ Number: "522401199906298812", }) if err != nil { fmt.Printf("err: %v\n.

2021-10-02 15:23:17 80

原创 Beego查询数据

package controllersimport ( "BeegoStudy/models" "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm")type QueryTableTest struct { beego.Controller}func (qt *QueryTableTest) Get() { //QueryTable接口的使用 o := orm.NewOrm() qs := o.Qu

2021-10-02 14:59:22 812

原创 Beego exper表达式

package controllersimport ( "BeegoStudy/models" "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm")type ExperController struct { beego.Controller}func (exper *ExperController) Get() { //表查询 exper表达式使用 o := orm.NewOrm() qs := o

2021-10-02 14:19:51 155

原创 Beego模型建表

package modelsimport ( _ "BeegoStudy/util" //建立数据库连接 "time" "github.com/astaxie/beego/orm")//用户模型type Users struct { Id int `orm:"pk;auto"` Name string Age int Addr string `orm:"null;column(address)"` //指

2021-10-02 13:32:53 206

原创 Beego设置数据库连接

package utilimport ( "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql")//初始化数据库连接func init() { //0.获取数据库配置 database := beego.AppConfig.String("database") host := beego.AppConfig.String("host")

2021-10-01 19:58:51 920

原创 webpack5搭建vue3全家桶环境配置

1.配置文件const path=require('path')const {VueLoaderPlugin}=require('vue-loader')const HtmlWebpackPlugin=require('html-webpack-plugin')module.exports={ entry:'./src/app.js', mode:'development', devtool:'source-map', output:{ path:pa

2021-09-25 15:24:59 336

原创 19.js对象拷贝

直接上代码 function copy(obj){ //是对象进行递归拷贝 if (typeof obj ==='object' && obj!==null){ let Constructor=obj.constructor if (Constructor===Date){ return new Date(obj.getTime()) } if (Constructor===R

2021-09-24 12:15:24 69

原创 17.JS原型链

借用一下江哥的图:如图

2021-09-24 11:01:49 52

原创 16箭头函数和普通函数区别

1.相比普通函数更简洁的语法2.没有this3.不能使用new4.不绑定arguments,用rest参数…解决5.使用call()和apply()调用不能修改this6.捕获其所在上下文的 this 值,作为自己的 this 值7.箭头函数没有原型属性8.箭头函数不能当做Generator函数,不能使用yield关键字...

2021-09-24 11:00:13 47

原创 15.文档对象的load DOMContentLoaded readystatechange 三事件的调用顺序

1.document加载的过程中会不断修改document.readyState属性该属性标志着文档加载到哪个阶段了;其取值有:uninitialized:文档对象已存在,但未初始化loading:文档对象正在初始化loaded:文档对象加载完毕interactive:文档可交互了complete:文档加载资源完毕(如css、图片等)2.document在状态切换时会调用其绑定的readystatechange事件(按理说应该会调用四次,但往往只能调用两次,我估计是在绑定事件之前文档就已经加载

2021-09-24 10:40:24 209

原创 14.js继承

1.类式继承缺点:1.如果父类中有引用类型的字段,会被子类的各个实例共享,一个改动则会影响别的实例2.不能借用父类构造器产生子类需要的字段//声明父类function Super(){ this.book=['js','html']}//声明子类function Sub(){}//继承Sub.prototype=new Super()//实例化let instance1=new Sub()let instance2=new Sub()instance1.book.pu

2021-09-23 21:29:34 41

原创 13.浏览器的事件循环 引入--异步--定义--常见宏、微任务

1.引入:由于JS是单线程语言,所以在执行代码的过程中,上面的代码没有执行完成,下面的代码就会一直等待;试想一下,如果我们在代码中发送请求获取数据,而由于网络慢等原因,该操作就比较耗时,如果要等该操作执行完再执行后续的代码,这显然是不合理的,cpu空出来了,利用率降低了,而代码的执行时间也增加了2.异步:(紧接上文)我们希望发送一个请求,而这个请求会在浏览器http异步请求的线程里去完成;发送请求以后,就立即执行下面的代码,而需要用到请求结果的代码,则等到请求完成后自动执行;没错,这就是异步的概念。总

2021-09-23 20:27:14 113

原创 12.区分数组和对象

方式1:Array.isArray(arr)方式2:arr instanceof Array //在原型链被修改的情况下不准确方式3:Object.prototype.toString.call(arr)==='[object Array]'instanceof原理:例如 a instanceof B主要是判断a的原型链上是否出现了B函数的prototype...

2021-09-23 19:38:54 48

原创 11.事件冒泡事件捕获

1.事件过程事件捕获---->事件执行---->事件冒泡2.事件捕获顺序从父元素向子元素的方向捕获3.事件冒泡顺序从子元素向父元素方向冒泡4.阻止事件冒泡和默认事件//阻止事件冒泡estopPopgation || e.cancelBubble=true//取消默认事件e.preventDefault || e.returnValue=false5.事件代理:将子元素的事件过程绑定到父元素上执行原理:通过e.target判断是哪个子元素,然后进行对应事件的编写6.

2021-09-23 19:22:50 102

原创 10.JS数组常用方法

第一类:修改原数组的方法:1.push:向数组末尾追加一个或多个元素2.pop:从数组末尾取出一个元素3.unshift:向数组前面添加一个或多个元素4.shift:从数组前面取出一个元素5.sort:将数组排序6.splice:截断并加入0个或多个元素第二类:不修改原数组的方法:1.slice:截取原数组,并返回2.join:以特殊符号连接数组元素,返回字符串3.find(fn):返回满足fn返回值条件的第一个元素4.findIndex(fn):返回满足fn返回值条件的第一个元素索

2021-09-21 21:55:46 60

原创 9.this是什么?为什么有this?以及call、apply、bind修改this

1.this是什么?答:this是执行上下文中的一个属性,在编写代码时,可以动态底让他指向我们需要的对象。2.为什么要有this?答:为了让代码更加灵活,在运行时可以让其变化指向3.执行上下文是什么?答:执行上下文可理解为 在执行某一段代码时,所生成的用于记录当前代码执行环境的对象。4.什么是执行环境?答:执行环境是代码在执行过程中某一刻计算机的状态【比如说:寄存器,cpu,内存 当前有哪些数据,状态是怎样的】5.JS执行环境有哪几种?答:1.全局上下文 2.函数上下文 3.eval上

2021-09-18 09:30:37 101

原创 8.HTML5新特性

1.简化了DOCTYPE和字符集的声明2.新增了canvas绘图API3.新增了地图API4.新增了header footer aside section nav等语义化标签和video audio标签5.新增了websockets API6.新增了web worker API7.新增了拖放API

2021-09-18 08:19:47 46

原创 7.ES6新特性

1.Symbol数据类型2.Set集合3.WeakSet4.Map5.WeakMap6.const、let声明7.模板字符串 ${}8…运算符9.Class语法糖10.Promise异步编程解决方案11.数组新增方法:filter some every map from flat of12.Object.assign浅拷贝13.解构赋值14.箭头函数proxy...

2021-09-18 08:12:59 51

原创 6.HTML5常用拽API

废话不多说直接上代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>HTML5拖放API</title> <style> *{ margin: 0; padding: 0; } html,body{

2021-09-16 17:24:40 72

原创 5.JS实现简单拖拽效果

1.拖拽步骤描述:鼠标按下–>鼠标移动—>鼠标抬起(停止移动)2.实现步骤:监听鼠标在目标元素内的按下事件,按下就设置鼠标移动事 件,开始拖拽,当鼠标抬起时,取消移动事件3.代码如下://用到事件:onmousedown、onmousemove、onmouseup<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>JS实现简

2021-09-16 15:51:07 180

原创 4.Web Worker解决了什么问题?怎么使用?

1.什么是web worker?为什么会出现web worker?有什么用途?答:1.web worker是用于在浏览器里开启一个JS线程的类2. 由于浏览器中的JS线程和UI线程是互斥的,JS线程执行的时候, UI线程会阻塞等待;而JS又是单线程语言,因此当有大量计算的时候, 可能会出现页面渲染速度很慢或者卡死的情况,此时UI线程是在阻塞当中; 因此,出现了web worker,它可以开启一个不会阻塞UI渲染的JS线程, 我们就可以用它去做大量的计算,计算结果通过事件的方式传递给JS主

2021-09-16 12:20:37 434

原创 3.手写Promise简单功能

1.Promise有三个状态 pending待决议 fulfilled成功 rejected失败,一旦改变不能再修改2.Promise构造函数接受一个函数,参数分别未resolve、reject两个函数,用于修改状态3.有一个then方法,接受两个回调,状态变化时调用相应的函数,并返回新的promise对象4.有一个catch方法,接收一个失败回调const PENDING="pending"const FULFILLED="fulfilled"const REJECTED="rejecte

2021-09-11 15:48:55 60

原创 2.函数节流

函数节流:A事件执行完成引起B事件执行,在规定时间内,不管A时间执行了多少次,B事件只执行一次为什么要使用函数节流:和函数防抖一样,只是降低事件执行频率没有函数防抖强例子:点击某个提交按钮,发送请求(如果用户快速不间断点击,我们也在规定时间内只提交一次)<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>函数节流</title&gt

2021-09-11 11:26:28 66

原创 1.函数防抖是什么,为什么,怎么实现

定义:A事件执行完成 “一段时间”后,引起B事件的执行;在 “一段时间内”如果A 事件又执行了,那么会重新计时为什么要使用函数防抖:降低某个事件执行的频率,于电脑而言,减少函数执行次数,CPU压力更小;于优化而言,减少了发送请求的次数,减小了服务器压力例子:在键盘停止输入2s后,发送请求到服务器<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&

2021-09-11 10:14:46 137

原创 webpack 动态链接库基础配置

1.webpack.config_dll.jsconst path=require('path')const DllPlugin=require('webpack/lib/DllPlugin')module.exports={ entry:{ vendors:['jquery'] }, mode:'development', output:{ filename:'[name]webpack.config.js', pat

2021-08-20 16:25:51 208

原创 webpack+vue3 入口文件实例化Vue,打包后白屏,不报错

’将 import Vue from 'vue'换成import Vue from 'vue/dist/index.js'即可,原因是 前者打包时打包的是vue的runtime文件

2021-08-16 18:50:31 180

原创 webpack5+vue3环境搭建/附自动化脚本(一键生成)

0.本案例目录如下1.安装webpack webpack-clinpm install webpack webpack-cli --save-dev2.编写webpack.config.js配置文件const path=require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');const { VueLoaderPlugin } = require('vue-loader')module.exports

2021-08-15 16:54:43 865

原创 webpack配置文件常用配置项

const path=require('path')const HtmlWebpackPlugin=require('html-webpack-plugin')module.exports={ //context替换路径 context:path.join(__dirname,'/src'), //入口文件地址 entry:{ detail:'./js/detail.js', index:'./js/index.js', },

2021-08-11 16:30:04 283

原创 涉及async、awit的浏览器事件循环

代码执行过程: 1.从上到下执行,同步代码立即执行 2.遇到宏任务丢到宏任务队列 遇到微任务丢到微任务队列 遇到async函数先执行await之前的代码 再执行await那一行的同步代码,接着跳出函数往下执行外部同步代码 3.执行完外部同步代码,回到async函数。 如果await后面执行完毕,则执行该函数内剩余的同步代码 4.扫描微任务队列 5.扫描宏任务队列 【注意点:async函数会返回一个promise】下面做两道题: //第一题:

2021-07-27 20:52:45 101

空空如也

空空如也

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

TA关注的人

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