闭包
闭包 (Closure) 笔记1. 什么是闭包闭包是 JavaScript 中的一种函数结构,它允许函数“记住”并访问定义在它外部的变量,即使外部函数已经执行结束。 换句话说,闭包是函数与其词法作用域的组合。 2. 闭包的形成条件闭包通常由以下三个条件形成: 函数嵌套:内部函数定义在外部函数内部。 访问外部变量:内部函数使用了外部函数的变量。 外部函数返回内部函数或将其赋值给其他作用域:使内部函数在外部函数执行后仍然可访问外部变量。 123456789101112function outer() { let count = 0; function inner() { count++; console.log(count); } return inner;}const fn = outer();fn(); // 1fn(); // 2 解释:inner 能访问 outer 的 count,形成闭包。 3. 闭包的作用与用途3.1 数据封装与私有化闭包可以模拟“私有变量”,保护数...
虚拟滚动
虚拟滚动 (Virtual Scrolling) 笔记1. 概念列表元素过多时,只渲染可视区域的 DOM 节点,提高性能。 2. 关键点 容器固定高度 计算滚动 offset 只渲染可见数据 动态填充 padding/margin 模拟总高度 3. Vue 示例12345678910<template> <div class="scroll-container" @scroll="onScroll"> <div :style="{height: totalHeight + 'px'}"> <div v-for="item in visibleData" :key="item.id" :style="{transform: 'translateY(' + offsetTop + 'px)'...
JNI动态代理示例
JNI动态代理示例 HelloWorld.class 1234567public class HelloWorld{ static{ System.loadLibrary("helloworld"); } public native int add(int a, int b);} libhelloworld.so 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <jni.h>#define LOG_TAG "DemoInfo"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)jint add(JNINev *nev , jobject jobj ...
组件通信
Vue 组件通信笔记1. 常见问题 父子通信 兄弟组件通信 跨层级通信 全局状态管理 2. 解决策略 父子组件通信 props / $emit 兄弟组件通信 使用事件总线(mitt 或 Vuex) 跨层级通信 provide / inject12345// 父组件provide('msg', 'hello');// 子组件const msg = inject('msg'); 全局状态管理 Vuex / Pinia12// store.state.count// store.commit('increment')
JNI动态注册
JNI动态代理示例 HelloWorld.class 1234567public class HelloWorld{ static{ System.loadLibrary("helloworld"); } public native int add(int a, int b);} libhelloworld.so 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <jni.h>#define LOG_TAG "DemoInfo"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)jint add(JNINev *nev , jobject jobj ...
基础
==和equals的区别是什么 1.类型与定义==是一个操作符,用于比较两个变量的值。对于基本数据类型,它比较的是变量存储的值是否相等;对于引用类型,它比较的是两个引用是否指向内存中的同一地址(即是否是同一个对象的引用)。equals()是Object类中的一个方法,用于比较两个对象的内容是否相等。默认情况下,它比较的是对象的内存地址(即是否是同一个对象),但该方法可以被重写以提供自定义的比较逻辑。 2.运行速度==:由于只是比较引用或内存地址,所以通常比equals()方法更快。equals():由于可能需要执行更复杂的比较逻辑(尤其是在被重写的情况下),因此其运行速度可能慢于==。3.可重写性==:不可重写,其行为是固定的。equals():可以被重写以提供自定义的相等性判断逻辑。 JAVA的八大基本类型 int32位4字节封装类:Integer byte8位1字节封装类:Byte double64位8字节封装类:Double float32位4字节封装类:Float lon...