自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端常用算法

前端常用算法

2023-01-18 15:27:12 193

原创 Linux一些命令

复制文件到某个文件夹中su(输入密码获取权限)cp -r /home/maixiaodou/Downloads/YuanLinPuTieAlgo/bin/libYuanLinPuTieAlgo.so /lib64cmake生成so文件(1) 在bin中cmake ..(2) cd ..(3) make

2021-10-12 20:06:16 194

原创 C++的“指向常量的指针”和“常量指针”

【指向常量的指针】不能通过该指针去修改其指向的值,可以改变指向的地址。【常量指针】可以修改其指向的值,不可以修改其指向的地址。using namespace std;#include <string>#include <memory>void main() { int b = 1; const int* a=&b; //*a = 2; 错误,【指向常量的指针】不能通过该指针去修改其指向的值 int c = 2; a = &c;//没毛病,【指

2021-08-16 10:06:04 248

原创 C++的this和*this

转载自https://blog.csdn.net/daimous/article/details/78618432return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针)#include <iostream> using namespace std; class A { public: int x; A* ge

2021-08-12 16:04:41 198

原创 C++之inline内联函数

【工作方式】内联函数(inline function)在编译阶段将函数体嵌入到每一个调用该函数的语句块中。 其与编译器的工作息息相关 。编译器会将程序中出现内联函数的调用表达式用其函数体来替换。【优点】内联函数是将程序执行转移到被调用函数所存放的内存地址,将函数执行完后,在返回到执行此函数前的地方。这种转移操作需要保护现场、包括进栈等操作,在被调用函数代码执行完后,再恢复现场。但是保护现场和恢复现场需要较大的资源开销。对于一些较小的调用函数来说,若是频繁调用,函数调用过程甚至可能比函数执行过程需要的系

2021-08-11 16:50:39 97

原创 C++之const和constexpr区别

(1)const代表只读,但不就意味着其不能被修改,例如#include <iostream>using namespace std;int main(){ int a = 10; const int & con_b = a; cout << con_b << endl; a = 20; cout << con_b << endl;}我们可以看到con_b虽然声明了const,但仍然可以

2021-08-11 14:36:05 107

原创 C++之引用1:左值赋值

using namespace std;#include <string>#include <iostream>int& put(int n);int vals[10];int error = -1;void main(){ put(0) = 10; //以put(0)函数值作为左值,等价于vals[0]=10; put(10) = 20; //以put(9)函数值作为左值,等价于vals[9]=20; cout << vals[0];

2021-08-10 16:52:04 241

原创 获取DOM当前焦点元素

//查询当前焦点元素document.activeElement//查询DOM名称类document.activeElement.localName

2021-07-27 19:31:39 685

原创 解决yarn create @umijs/umi-app 报错文件名、目录名或卷标语法不正确。

参考https://www.cnblogs.com/cailijuan/p/13685912.html

2021-06-05 20:56:07 440

原创 fa-spinner旋转小圈圈-Font Awesome字体

http://www.fontawesome.com.cn/get-started/<!DOCTYPE html><html> <head> <title>Font Awesome Icons</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="styleshe

2021-06-04 14:52:14 270

原创 原生标签的focus

使用与不使用setTimeout的代码如下:get('makeinput').onmousedown = function() { var input = document.createElement('input'); input.setAttribute('type', 'text'); input.setAttribute('value', 'test1'); get('

2021-06-04 10:17:49 325

原创 浏览器线程问题

浏览器的内核是多线程的它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程。js线程js引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS线程在运行JS程序。GUI线程GUI渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。但需要注意 GUI渲染线程与JS引擎是互斥的,当JS引擎执行时

2021-06-04 09:55:06 173 1

原创 threejs顶层管理交互

背景threejs做业务,存在多个按钮时,为了管理各个按钮不同时触发,就不能在各个按钮做container.addEventListener,应该在顶层统一管理。解决方案(以click事件为例,mousemove等其他事件同理)1、顶层建立容器统一储存事件、统一监听事件顶层类的内部:所有事件都在handleClickEvent里,实际container.addEventListener执行的事件,会去找当前且被激活的事件去执行。也节省损耗,不需要一有事件需要监听就新造一个addEventListen

2021-06-02 19:52:04 263

原创 threejs绘制大量线条 优化内存

用BufferGeometry的setAttribute方式设置顶点position 代码如下let geometry = new THREE.BufferGeometry() let positions = [] BrickData.Brick.forEach(({ Outer, BrickId }) => { //画砖的轮廓线 positions.push(...Outer[0], 0) positions.push(...Outer[1],

2021-06-02 09:59:09 1248

原创 Vue懒加载引入子组件的生命周期

正常在script外引入子组件,生命周期是:父组件created —— 子组件created —— 子组件mounted —— 父组件mounted<script>import HandleWorkData from '@/components/HandleWorkData.vue'export default { components: { HandleWorkData, }, ... </script>若通过以下懒加载方式引入子组件,生命周期是:

2021-05-12 14:38:14 699

原创 OSI(Open System Interconnection)

2021-05-12 10:03:31 127

原创 TCP三次握手

为什么需要3次握手,2次不行吗?A:喂喂喂,我是A,你听的到吗?B:在在在,我能听到,我是B,你能听到我吗?A:(听到了,老子不想理你)B:喂喂喂?听不听到?我X,对面死了,我挂了。。如果只有2次的话,B 并不清楚 A 是否收到他发过去的信息。...

2021-05-12 09:48:56 71

原创 js原型链相关

function Cat(name, color) { this.name = name;}var cat1 = new Cat('大毛', '黄色');Cat.prototype.type = '猫科动物';console.log(Cat.prototype.isPrototypeOf(cat1)); //trueconsole.log(cat1.hasOwnProperty('name')); //trueconsole.log(cat1.hasOwnProperty('type'));

2021-05-10 13:16:48 59

原创 js的===比较及react hook的memo使用

如以下代码所示:1、b是对a的引用,两者都是指向同一个地址,所以首先输出true2、b修改了key,也就是修改了那个地址上的内容,但是地址没变,所以a还是===b。let a = { value: 1 };let b = a;console.log(b === a);b.value = 2;console.log(b === a);结论===比较的是地址拓展1、react hook的memo比较的是preProp和curProp的某个对象getTextLen,这个对象只要地址没变,

2021-04-22 11:39:55 155

原创 20210406前端算法与数据结构笔记

浏览器缓存淘汰策略 LRU(Least Recently Used)说明:根据数据的历史访问记录来进行淘汰数据,其核心思想是 如果数据最近被访问过,那么将来被访问的几率也更高 ,优先淘汰最近没有被访问到的数据。VUE的keep-alive就是用该算法实现过程:1、用了cache 对象用于保存缓存的组件实例及 key 值,keys 数组用于保存缓存组件的 key;2、判断缓存中是否已缓存了该实例,缓存了则直接获取,并调整 key 在 keys 中的位置(移除 keys 中 key ,并放入 key

2021-04-06 16:10:48 66

原创 element-vue的dialog可拖拽指令

import Vue from 'vue'// v-dialogDrag: 弹窗拖拽Vue.directive('dialogDrag', { bind(el, binding, vnode, oldVnode) { const dialogHeaderEl = el.querySelector('.el-dialog__header') const dragDom = el.querySelector('.el-dialog') dialogHeaderEl.style.

2021-04-01 15:47:12 363

原创 react函数式组件及hooks的认识

主题:react函数式组件1、state和useState更新state会引起该组件更新,如果state绑定视图,而没有其他处理,会引起子组件更新,造成不必要的渲染2、useMemo使用useMemo把跟state更新不相关的返回值缓存起来3、useRef使用useRef可以缓存组件更新前的值const ref = useRef(1);<div className={style.upload} onClick={() => {

2021-03-20 16:45:23 211

原创 vue双向绑定

两种写法1、v-model 本质是修改父组件用v-model绑定的值父组件<template> <div> <Test v-model="testData"//自定义组件的v-model是以下代码的语法糖: // :value="testData" // @update:value = (e)=>{testData = e} // 拿到值e后赋值给testData,并绑定给value ></Test

2021-03-03 18:47:07 217 1

原创 js简单的防抖动 有待研究

function debounce(fn, delay) { var timer return function (...arg) { timer && clearTimeout(timer) timer = setTimeout(() => { fn.apply(this, arg) clearTimeout(timer) }, delay) }}

2021-02-25 10:48:36 62

原创 js设计模式之单例模式

let instance = null;class mySingleton { constructor() { this.a = "haha"; if (!instance) instance = this; return instance; } publicMethod() { console.log("publicMethod"); }}let singleton1 = new mySingleton();let singleton2 = new

2021-02-08 11:18:43 51

原创 vue或reac使用threejs做图形交互的经验总结

背景如题,vue(或react)使用threejs做图形交互,总结了些技巧分享一下,有兴趣欢迎交流。为threejs新建class,单例模式使用该类1、vue或react组件中实例化threejs的class,不储存成响应式数据,减少性能损耗;组件销毁的时候若不再需要用到该实例,则释放threejs实例占用的相关内存之外,将该实例置为null;2、组件中涉及到与threejs交互,可以直接调用实例的方法(涉及到需要threejs交互后引起其他组件数据的更新,可以调用实例方法时传入回调函数);3、基

2021-01-26 17:00:59 872

原创 vue动态引入组件注意事项

componentList.js文件中const componentList = { GeneralRobot: () => import("./GeneralRobotOptions.vue")}vue组件中<template> <component :is="someRobotComponent" :key="key" /></template>import componentList

2021-01-24 22:33:02 193

原创 threejs清空内存

啊我来送福利了 折腾了一个早上和中午终于整出来试验就是同一个canvas scene根据tab切换内容 切换前需要清空物体 再加载新的物体打开任务管理器查看浏览器占用内存 一开始不断切换tab 内存不断增加一番探索后 切换tab内存不再增加了 贡献一下代码removeScene = () => { this.clearScene(); }; clearCache = item => { item.geometry.dispose(); item.mate

2021-01-22 13:43:11 4346 15

原创 vue性能优化之变量的使用

vue把data、props、store等数据做成响应式,也就是会对这些响应式数据做深度监听,给每一个object类型的key(包括嵌套object)添加observer(vue3使用proxy)。所以如果我们不需要数据是响应式的,可以在.vue文件头部直接使用let、const定义变量,例如需要储存大容量的变量用于画图(这样的数据通过接口请求到,往往不会改变),在组件销毁的时候将该这些变量设为null。如此可以降低内存损耗,提高性能。...

2021-01-21 15:56:28 317

原创 执行npm报错:Allocation failed - JavaScript heap out of memory

1、在目录node_modules/.bin下打开ng.cmd和ngc.cmd文件,添加 --max_old_space_size=40962、npm install -g increase-memory-limit 执行npx cross-env LIMIT=4096 increase-memory-limit个人实践:第2种方法用过后还是不成功,用第1种方法可以了,所以不知道到底第2种方法安装的插件是否有影响,先记录一下。...

2021-01-20 10:54:25 860

原创 umi根据点击“登录”、“注册”切换Tab

点击的UI<Link className={style.login} to={{ pathname: '/login', search: 'login', state: 'login' }} target="_blank" > 登录 </Link> <Link className={style.register}

2021-01-17 11:32:55 368

原创 js将多文件打包成zip下载

import FileSaver from "file-saver";import JSZip from "jszip";var DownLoad = function(data, fileName) { let zip = new JSZip(); data.forEach(item => { //文件内容为.json let content = JSON.stringify(item.jsonData, null, 2); // 实例化Blob对象,并传入

2021-01-14 21:25:56 3073

原创 vscode的settings.json文件中tsx、jsx使得prettier生效

如图所示,vscode中使得prettier插件对jsx、tsx文件生效的配置之一【需要在settings.json添加如下语句,并且项目根目录中配置.prettierrc文件】

2021-01-06 09:45:32 2988

原创 基于vue init webpack项目引入svg

转自 https://www.cnblogs.com/shenyf/p/10370949.html【note】 基于vue init webpack创建的项目1、安装依赖npm install svg-sprite-loader --save-dev2、配置build文件夹中的webpack.base.conf.js,主要在两个地方添加代码,如下图所示exclude: [resolve('src/icons')],{ test: /\.svg$/, loade

2020-10-30 09:40:27 171

原创 React声明周期执行顺序

组件从建立到挂载的执行顺序1、constructor2、componentWillMount3、render4、componentDidMount父组件调用子组件,父组件更新后,子组件各方法的执行顺序1、componentWillReceiveProps2、shouldComponentUpdate3、componentWillUpdate4、render5、componentDidUpdate【注意】componentWillReceiveProps方法是父组件一更新就会触发子组件的

2020-10-16 20:35:38 110

原创 React的jsx到底是个啥(涉及虚拟DOM、React.createElement方法、ReactElement对象、ReactDOM.render)

关于jsx(1)JS的语法扩展,所以不是天生就被浏览器支持;(2)会被Babel编译为React.createElement(),其将返回一个称为“React Element”的js对象;(3)Babel是一个工具链,主要将es6及以上版本的js转换为向后兼容的js,以便能够运行在当前和旧版本的浏览器或其他环境中;(4)jsx等价于一次React.createElement调用,本质是个包装了React.createElement的语法糖;(5)React.createElement(type,

2020-10-13 21:40:00 415

原创 关于get请求的前端axios、后端java写法

前端 Axios(){ let a = {params:{ID:"hehe"}}; let url = 'erobot/Axios/getData'; axios.get(url, a).then(res=>{ console.log(res.data); }) }后端 @RequestMapping(value="getData", method = RequestMethod.GET,produces={"

2020-09-30 09:23:33 1215 1

原创 vue用axios封装request

在这里插入代码片``import axios from 'axios';import { MessageBox, Message } from 'element-ui';import store from '@/store';import { getToken } from '@/utils/auth';import { getBlobAsText } from '@/utils/commonFun';// create an axios instanceconst service = ax

2020-09-28 16:29:27 485

原创 JS中await、async、宏任务、微任务的执行顺序

宏任务和微任务1、宏任务和微任务都是队列(先进先出),宏任务有script、setTimeout、setInterval等,微任务有Promise.then/ catch/finally、process.nextTick等。2、一个宏任务执行完,判断是否有可执行的微任务,有则执行完所有微任务,否则执行下一个宏任务。async和await1、async修饰符:async修饰的函数,默认返回 new Promise对象的resolve内容(若被async修饰的函数无返回值,则最终无返回值)。如此调用

2020-09-28 15:47:46 2390 4

原创 vue按需缓存页面(vue-element-admin)

一、路由文件routers.js1、代码const deviceList =() => import('@/views/device-manage/');{ path: '/device', component: Layout, name: 'Device', code: 'device', redirect: 'index', meta: { title: '设备管理', keepAlive: true, },

2020-09-27 17:24:48 4544 1

空空如也

空空如也

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

TA关注的人

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