自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go语言nil:空值/零值

在Go语言中,布尔类型的零值(初始值)为 false,数值类型的零值为 0,字符串类型的零值为空字符串"",而指针、切片、映射、通道、函数和接口的零值则是 nil。nil 是Go语言中一个预定义好的标识符,有过其他编程语言开发经验的开发者也许会把 nil 看作其他语言中的 null(NULL),其实这并不是完全正确的,因为Go语言中的 nil 和其他语言中的 null 有很多不同点。下面通过几个方面来介绍一下Go语言中 nil。

2024-01-15 16:55:02 465

原创 Go语言容器3-List

列表是一种非连续的存储容器,由多个节点组成,节点通过一些变量记录彼此之间的关系,列表有多种实现方法,如单链表、双链表等。列表的原理可以这样理解:假设 A、B、C 三个人都有电话号码,如果 A 把号码告诉给 B,B 把号码告诉给 C,这个过程就建立了一个单链表结构,如下图所示。如果在这个基础上,再从 C 开始将自己的号码告诉给自己所知道号码的主人,这样就形成了双链表结构,如下图所示。

2024-01-15 16:27:40 943

原创 Go-语言容器2-切片/Map

不过需要注意的是,在使用 append() 函数为切片动态添加元素时,如果空间不足以容纳足够多的元素,切片就会进行“扩容”,此时新切片的长度会发生改变。切片在扩容时,容量的扩展规律是按容量的 2 倍数进行扩充,例如 1、2、4、8、16……通过查看代码输出,可以发现一个有意思的规律:切片长度 len 并不等于切片的容量 cap。

2024-01-15 16:07:57 935

原创 Go-语言容器1-数组/二维数组/切片

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。和数组对应的类型是 Slice(切片),Slice 是可以增长和收缩的动态序列,功能也更灵活,但是想要理解 slice 工作原理的话需要先理解数组。

2023-12-19 17:35:42 807

原创 GO-基本语法2

类型别名规定:TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类型,就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本人。类型别名与类型定义表面上看只有一个等号的差异,那么它们之间实际的区别有哪些呢?下面通过一段代码来理解。import ("fmt"// 将NewInt定义为int类型// 将int取一个别名叫IntAlias// 将a声明为NewInt类型// 查看a的类型名。

2023-12-15 15:58:24 39

原创 Go-基本语法

变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写例如:numShips 和 startDate。

2023-12-15 15:22:32 144

原创 Go-目录结构及源文件

目录结构三个目录中我们需要重点关注的是,其他两个目录了解即可。

2023-12-07 10:42:04 459

原创 Go-Linux安装

首先,复制Go语言开发包的下载链接(https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz)。然后,在终端使用cd 命令进入你用来存放安装包的目录中(这里使用的是 /usr/local/ 目录,读者也可以使用其它目录)。使用wget 命令下载Go语言开发包,如下所示。正在解析主机 dl.google.com (dl.google.com)... 203.208.39.196, 203.208.39.193, 203.208.39.200, ...

2023-12-07 10:25:55 39

原创 Go-Mac安装

Mac OS 的Go语言开发包是 .pkg 格式的,双击我们下载的安装包即可开始安装。Mac OS 下是傻瓜式安装,一路点击“继续”即可,不再赘述。安装包会默认安装在 /usr/local 目录下,如下所示。安装完成之后,在终端运行 go version,如果显示类似下面的信息,表明安装成功。

2023-12-07 10:23:38 32

原创 Go-Windows安装

下载Go语言开发包大家可以在Go语言官网()下载 Windows 系统下的Go语言开发包,如下图所示。这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统的话,则需要下载 32 位的开发包,在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示。注意:下载 Windows 版本的Go语言开发包时尽量选择 MSI 格式,因为它可以直接安装到系统,不需要额外的操作。

2023-12-07 10:20:35 101

原创 Go-语言初识包命令及Vscode运行

在控制台输出“Hello World!

2023-12-07 10:13:24 63

原创 Go-语言简介

这不同于 Python、Ruby 和 JavaScript 等语言,它们不包含编译步骤。Go 自带了编译器,因此无须单独安装编译器。

2023-12-06 17:18:37 34

转载 GPT4-Prompt 赛博咒语

提示公式:“按照以下指示生成[任务]:[指令]”

2023-11-16 15:52:06 292

原创 【Vue温故】粗略实现Vue源码v-if-v-show及生命周期

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Do.

2022-01-24 18:13:15 402

原创 【Vue温故】粗略实现VUE源码Computed

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>D.

2022-01-24 18:10:02 318

原创 【Vue温故】粗略实现VUE源码data与method

一.Method遗漏概念1.Vue创建实例时,会自动为methods绑定当前实例this,保证在事件监听时,回调始终指向当前组件实例2.方法要避免使用箭头函数,箭头函数会阻止Vue正确绑定组件实例this二.粗略实现代理与Method对象let Vue = (function(){ function Vue(options){ this.$data = options.data(); this._methods = options.methods;

2022-01-24 18:08:25 515

原创 【Vue温故】es6深拷贝

这里两个重点1.同过hashMap记录该对象是否已经被拷贝,从而避免对象循环赋值报错2.通过origin.constructor即可拿到原型构造方法,不需要去toString判断对象是数组还是对象类型 function deepClone(origin,hashMap = new WeakMap()){ if(origin == undefined || typeof origin !=='object'){ return origin; }

2022-01-24 18:07:08 373

原创 【Vue温故】 Vue编译-内置指令

一.Vue编译vue的模板都是基于HTML,是一套模板编译系统开发者写的template->分析HTML字符串->AST树->表达式/自定义属性/指令 ->虚拟dom树->解析真实DOM->render其中通过_c_v_s三个函数构建虚拟dom树二.指令v-once会影响到子级元素中的数据绑定,若要解决,可以通过es6的${}来解决v-html 插值不会解析HTML,因为插值是JS表达式,没有对DOM的操作 rawHTML三.属性a

2022-01-24 18:06:04 1120

原创 Vue嵌套路由中的嵌套命名视图个人感悟

官网解释感觉没有那么通俗易懂,百度到的基本都是赋值黏贴和没有试验总结的。官网例子有墙看不到,所以可以看看我的总结。1.官网解释我们也有可能使用命名视图创建嵌套视图的复杂布局。这时你也需要命名用到的嵌套router-view组件。我们以一个设置面板为例:这个图很形象/settings/emails /settings/profile+-----------------------------------+ ..

2021-03-17 23:35:08 808

原创 Vue深入-28【数组劫持】

observer/array.jsimport { observe } from './index'let oldArrayProtoMethods = Array.prototype;export let newArrayProtoMethods = Object.create(oldArrayProtoMethods);let methods = ['push','shift','unshift','pop','splice','sort','reverse'];export func

2021-03-06 15:13:57 230

原创 Vue深入-27【对象劫持、访问属性代理】

一.对象劫持observe/index.jsimport Observer from './observer'export function initState(vm){ let options = vm.$options; if(options.data){ initData(vm); } if(options.computed){ initComputed(vm); } if(options.watch){

2021-03-06 15:12:07 233

原创 Vue深入-26【环境配置、基础代码编写】

一.环境配置npm init -ynpm install webpack webpack-cli webpack-dev-servernpm install html-webpack-plugin(1).webpack.config.jslet path = require('path');let HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = { entry:'./src/ind

2021-03-06 15:08:52 168

原创 Vue深入-25【Vue路由的使用】

一.基本使用<router-link to="/">Home</router-link><router-link to="/about">About</router-link>二.命名路由<router-link :to="{name:'home'}">Home</router-link><router-link :to="{name:'about'}">About</ro.

2021-03-06 15:06:01 168

原创 Vue深入-24【Vue脚手架工具剖析】

一.安装及使用(1).安装npm install -g @vue/cli(2).使用vue create xx 创建项目(3)mode分为两种hash mode localhost:8080/#/history mode localhost:8080IE10才支持 history选择yes可以开启history(4).cli plugins@vue/cli-plugin-开头的是官方插件vue-cli-plugin或其他形式则为第三方插件(...

2021-03-06 15:00:46 175

原创 Webpack-8【Webpack引入库、字体文件、imports-loader】

一.Webpack引入库npm i [email protected] -Dindex.js中import 'bootstrap/dist/css/bootstrap.css'index.html<div id="app"> <ul class="list-group"> <li class="list-group-item"></li> </ul></div>

2021-03-05 21:52:22 177

原创 Webpack-7【生成HTML、提取CSS、清除文件】

一.生成HTMLHtmlWbpackPluginoptions:template:本地模板文件的位置filename:输出文件的文件名称minify:压缩代码chunks:允许插入到模板中的一些chunkinject:向template或者templateContent中主入所有静态资源var path = require('path');var HtmlWebpackPlugin = require('html-webpack-plugin');module.ex

2021-03-05 21:48:56 165

原创 Webpack-6【Less-Sass、postcss、图片处理】

一.Less-SassLess: 是一门CSS预处理语言,它扩展了CSS语言,增加了变量,Mixin,函数等特性Sass:是成熟、稳定、强大的CSS扩展语言npm install less less-loader -Dnpm install node-sass sass-loader -Dmodule:{ rules:[{ test:/\.less$/, use:[{ loader:'style-loader'

2021-03-02 17:57:30 153

原创 Webpack-5【babel编译ES6、编译插件、全局-局部垫片】

一.Webpack处理CSSstyle-loader 是为了在html中以style得方式嵌入csscss-loader 通过require的方式来引入css编译顺序是先用css-loader将css代码编译,再交给style-loader插入到网页里面去file-loader 将文件(一般是图片文件为主,其他的包括字体文件等),在进行一些处理后移动打包后的目录中module:{ rules:[{ test:/\.css$/, use:[{

2021-03-02 17:53:06 883 1

原创 Webpack-4【babel编译ES6、编译插件、全局-局部垫片】

一.babel编译ES6babel-core:封装了babel编译时需要使用的APIbabel-loader:负责es6语法转化,webpack打包时使用babel-loader处理javascript文件npm install babel-loader @babel/core -Dnpm install babel-loader @7.1.5 babel-core -Dbabel-loader 8.x对应 babel-core7.xbabel-loader 7.x对应 babel-

2021-03-02 17:47:44 363

原创 Webpack-3【零配置、模块化规范、webpack-dev-server】

一.零配置模块化规范、webpack-dev-server(1).file-loadernpm install file-loader --save-devconst path = require('path');module.exports = { entry:'./src/index.js', module:{ rules:[ { test: /\.(png|jpe?g|gif)$/,

2021-03-01 19:49:31 182

原创 Webpack-2【JS模块化、Webpack模块化、CSS模块化概念】

一.JS模块化CommonJs模块化规范引入const Header = require('header.js')抛出module.exports = Header;二.Webpack模块化webpack只知道模块相关的事情,是个模块打包的工具webpack支持模块的类型 js css vue png jpg三.CSS模块化webpack.config.jsconst path = require('path')module.expor

2021-03-01 19:45:53 156

原创 Webpack-1【Webpack的基本安装使用】

一.安装及使用npm initnpm install [email protected] [email protected] -Dnpx webpack index.js//翻译引入//ES Moduleimport Header from './Header.js'import Content from './Header.js'import Footer from './Header.js'new Header();new Content();new Footer();

2021-03-01 19:44:04 174 1

原创 Vue深入-23【Vue3.0源码重写『数据劫持』】

(1).了解VUE3源码管理方式、独立使用reactivity、搭建项目1.了解VUE3源码管理方式、独立使用reactivitynpm init -ynpm i @vue/reactivity -Dsrcindex.js这样就变成了响应式data 是基于proxy做的代理import {reactive} from '@vue/reactivity';const state = reactive({ name:'zza', info:{

2021-02-27 22:21:05 419 2

原创 Vue深入-22【Vue2.0『数据传递』】

(1).事件传递与值传递1.emit发送事件传递数据Mother.vue<template> <div> <h1>家庭资产{{fatherM}}</h1> <Father :fatherM = "fatherM" @earnMoney = "earnMoney" /> </div></template

2021-02-27 22:13:25 174

原创 Vue深入-21【虚拟节点与DOM Diff算法源码实现】

(1).了解diff算法特征、虚拟节点、创建项目1.算法特征只会平级对比不会跨级对比直接替换,不会再去操作Li标签深度优先,不是广度优先2.虚拟节点构成虚拟节点的对象落实在控制台3.建立vdom文件建立文件,执行命令npm init -y npm i [email protected] [email protected] [email protected] add html-webpack-pl

2021-02-27 22:02:31 237

原创 拓展-10【Promises/A+规范与源码重写】

(1).环境搭建npm init -y全局安装nodemon设置运行命令"scripts": { "dev":"nodemon ./index.js -i ./data/" },npm run dev(2).完成一个基本的promiseMyPromise.jsconst PENDING = 'PENDING', FULFILLED = 'FULFILLED', REJECTED = 'REJECTED';class My

2021-02-26 21:06:40 105

原创 拓展-9【Promise全解析】

(1).基本认知1.基本形式promise中有三个状态分别是 实现承诺-resolve 拒绝承诺-reject 承诺等待-pendingpromise是解决异步流程化的一种手段let promise = new Promise((resolve,reject)=>{ //resolve('承诺实现') reject('承诺石城大海')})promise.then((res)=>{ console.log(res)},(err)=>{

2021-02-26 21:02:31 397

原创 Vue深入-20【Vue2.0源码重写『数据劫持』】

(1).环境配置搭建1.建立文件,执行命令npm init -y npm i [email protected] [email protected] [email protected] yarn add [email protected].具体文件配置根目录新建文件webpack.config.jsconstpath=require('path'), HtmlWebpackPlugin=require('html-webpack-...

2021-02-26 20:54:25 168

原创 Vue深入-19【Vuex【state, mutations, actions, modules, getters】全解析】

(1).state/mutations/actions/getters各种写法解析vue中<template> <div> <div>{{index1}}</div> <div>{{this.$store.state.index}}</div> <div>{{showIndex}}</div> <div>{{this.$store.getters.sh

2021-02-25 20:55:47 143

原创 Vue深入-18【Vue2与Vue3核心之『响应式原理』】

(1).definepropertiesclass Compute{ plus(a,b){ return a+b; } minus(a,b){ return a-b; } mul(a,b){ return a*b; } div(a,b){ return a/b; }}class Calculator extends Compute{ constructor(d

2021-02-25 20:53:52 313

空空如也

空空如也

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

TA关注的人

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