自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入浅出学习CAN系列-了解CAPL编程语言

上一篇文章介绍了如何创建CANoe工程,需要先阅读这篇文章,才能对整个工程有所了解,包括节点、报文、信号等关键信息。 本文的重点是分析该工程中各个节点CAPL语言是怎么编写的,主要目的在于理解整个工程的实现,具体关于CAPL语言的理论知识总结等以后再分享。CAPL就是Communication Application Programming Laguage的缩写,CAPL类似于C语言的语法。CAPL语法是C语言的,又有一些C++的特性,thi...

2021-12-24 19:00:00 11271 4

原创 深入浅出学习CAN系列-创建CANoe工程

本文主要借助CANoe工具,新建一个工程,来帮助大家理解CAN总线的相关知识。具体内容是关于节点、报文、信号是怎么创建的,下面可以看一下工程运行之后的报文显示结果及面板变量的操作。

2021-12-22 21:05:34 2640 1

原创 手写EventEmitter

EventEmitter是Node.js的核心模块events中的类。核心:事件触发与事件监听器功能的封装。是典型的发布订阅模式,实现了事件调度中心。怎么手写实现EventEmitter类呢?思路:当执行on函数时,将回调函数保存起来,等emit函数触发事件之后,再执行回调函数。这样就实现了事件的监听以及订阅了。class EventEmitter{ constructor(){ //事件监听函数保存的地方 this.events={}; } ...

2021-07-07 23:18:49 457 2

原创 学习发布订阅模式和观察者模式

发布订阅模式之前学习的手写EventEmitter就是发布订阅模式,把实现的EventEmitter类的函数名称修改一下,就比较好理解了。on函数即subscribe函数用于注册事件订阅行为,emit函数即publish函数,用于发布者发布事件。订阅者通过subscribe进行订阅。class PubSub{ constructor(){ //维护事件及订阅行为 this.events={}; } //@param是对函数参数进行解释作用 /...

2021-07-07 23:10:58 149 1

原创 学习JS的数据属性和访问器属性

ECMAScript`中有两类属性,分别是`数据属性`与`选择器属性1.1 数据属性数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有 4 个描述其行为的 特性。 [[Configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。 [[Enumerable]]:表示能否通过for-in循环返回属性。 [[Writable]]:表示能否修改属性的值。 [[Value]]:包含这.

2021-07-04 17:30:00 89

原创 对JS执行上下文的学习

先来介绍几个重要的知识概念;什么是执行上下文执行上下文 可以理解为当前代码的执行环境,当 JS 引擎解析到可执行代码片段(通常是函数调用阶段)的时候,就会先做一些执行前的准备工作,这个 “准备工作”,就叫做 “执行上下文(execution context 简称 EC)” 或者也可以叫做执行环境。执行上下文分为三种:全局执行上下文:只有一个,程序首次运行时创建,它会在浏览器中创建一个全局对象(window对象),使this指向这个全局对象。它在整个 javascript 脚本的生命周期内都会存在于

2021-07-03 13:35:11 104

原创 JS中的let、var和const的区别

ES6 提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而且let没有副作用。作用域let和const声明的变量属于块作用域、var声明的变量作用域是全局或者整个封闭函数。举例var x = 1 //声明在全局作用域function foo(){ var x = 2 //声明在函数作用域 console.log('two',x)}console.log('one',x)foo()//output:one 1 t...

2021-05-07 22:44:27 106

原创 【前端第2篇】Angular自定义指令

基础知识指令分类angular中包含以下三种类型的指令:属性指令、结构指令和组件。属性指令改变元素的外观和行为,例如NgStyle。结构指令用来改变DOM树的结构,例如NgIf指令。属性指令,是以元素属性的形式来使用指令。与HTML元素内置属性不同,指令是Angular对HTML元素属性的扩展,浏览器本身不能识别这些指令,指令仅在Angular环境才能识别。结构指令可以根据模板表达式的值,增加或删除DOM元素,改变DOM的布局。组件与指令的基本结构非常相似,差别在于组件中包含了模板。下面直接通

2021-04-20 23:00:18 377

原创 线性表

线性表定义:零个或多个数据元素的有限序列。特性:除了第一个元素没有前驱,最后一个元素没有后继,其余每个元素都有且只有一个前驱和一个后继。线性表强调是有限的。线性表元素的个数n(n>=0)定义为线性表的长度,当n=0,称为空表。数据元素之间是一对一的关系。在较复杂的线性表中,一个数据元素可以由若干个数据项组成。顺序存储结构线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。可以用一维数组来实现顺序存储结构。其中,数组长度和线性表的长度是有区别的。数组长度是

2021-03-01 20:36:39 81

原创 算法时间复杂度大O阶法入门

时间复杂度定义语句总的执行次数T(n)是关于问题规模n的函数,算法的时间复杂度,记作T(n)=O(f(n))它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。其中,f(n)是问题规模n的某个函数大O记法用大写O( )来体现算法时间复杂度推导大O阶方法用常数1取代运行时间中的所有加法常数在修改后的运行次数函数中,只保留最高阶项如果最高阶项存在且系数不是1,则去除与这个项相乘的系数。let n=100;

2021-02-23 23:27:34 227

原创 Nginx的浅识

文章目录前言一、Nginx是什么?静态HTTP服务器反向代理服务器二、根据域名映射不同服务器1.配置详解2.重启nginx2.proxy_pass详解总结前言一、Nginx是什么?Nginx是一个http服务器。是一个使用c语言开发的高性能的http服务器及反向代理服务器。官网手册链接静态HTTP服务器首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。配置:server { listen 80; # 端口号 loca.

2021-02-22 19:07:35 145

原创 【前端第1篇】Angular自定义组件

前言最近做的Angular项目中有一个功能——数据库下载,在不同的组件中都有用到,所以期望将其抽象成一个公用组件,将代码得以复用。主要涉及到以下知识点:创建组件、组件的基本概念、组件与模块、引用组件、使用组件、组件交互等。创建组件在components文件夹下创建一个数据库下载的公用组件。打开命令行(使用vscode编辑器的小伙可以直接使用Ctrl+` 快捷键打开终端,然后一路跳转到components文件夹:cd src\app\components在此目录下执行指令:ng g c es-

2021-02-19 22:34:59 422 2

空空如也

空空如也

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

TA关注的人

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