彻底搞懂 JavaScript 原型链 (一篇就够了)你是否曾经想过,为什么你创建一个简单的 JavaScript 对象 const obj = {},明明它“什么都没有”,但你却可以调用 obj.toString() 或者 obj.hasOwnProperty() 这样的方法?
这些方法是从哪里来的?
答案就是 原型链 (Prototype Chain)。
核心思想:它不是复制,而是“委托”在很多面向对象语言(比如 Java 或 C#)中,“继承”通常意味着“复制”。子类会把父类的属性和方法复制一份作为自己的。但在 JavaScript 中,继承的机制完全不同。它不是复制,而是委托 (Delegation)。一个简单的比喻:向上级求助
你(实例 instance)接到了一个任务(比如 toString())。
你先看自己的任务列表(自身属性)里有没有这个任务。
有:你立刻自己搞定。
没有:你不会说“我不会”,而是把任务“委托”给你的直属上司(原型 prototype)。
你的上司(原型)也重复这个过程:
有:他来搞定。
没有:他再“委托”给他的上司(原型的原型)。
...
React 钩子(Hooks)概览React 钩子(Hooks)是 React 16.8 引入的功能,允许在函数组件中使用状态和其他 React 特性。以下是 React 常用的内置钩子及其功能描述。
组件生命周期beforMount:挂载前didmount: 挂载完成unmount:卸载
1. 基础钩子useState
功能:在函数组件中添加状态管理。用法:const [state, setState] = useState(initialState);示例:
123456789101112131415161718192021import React, { useState } from 'react';function App() { // 初始状态为 0 const [count, setCount] = useState(0) const handleClick = () => { setCount(count + 1); } return ( <> < ...
Dockerfile介绍Dockerfile 是一个文本文件,其中包含一系列用于构建Docker 镜像的指令和配置。它定义了镜像的构建规则、运行环境,以及容器启动时需要执行的操作。通过Dockerfile,可以实现镜像构建的自动化和标准化,方便快速部署和管理应用程序。
常用命令
基础镜像和构建环境:
FROM <image>:指定基础镜像,例如 FROM ubuntu:latest 或 FROM centos
WORKDIR <path>:设置工作目录,所有后续指令都将在此目录下执行.
ENV <key> <value>:设置环境变量,例如 ENV MYSQL_USER user
ARG <name>[=<default value>]:定义构建参数,可以在构建镜像时传入.
文件操作:
COPY <src>... <dest>:将文件从构建上下文复制到镜像中.
ADD <src>... <dest>:类似于 COPY,但支持从URL下载文件和自动解压缩.
VOLU ...
安装前准备docker基本都不用介绍是干什么的了,确认自己的wsl和Ubuntu版本信息。使用这个版本来安装docker
安装wsl2
配置Linux发行版
配置wsl.conf, 开启systemd。配置完重启wsl,使用systemctl status确保已经启动。
12[boot]systemd=true
安装使用官方提供的shell脚本进行安装,官方文档
下载脚本并执行
12curl -fsSL https://get.docker.com -o get-docker.shsudo sh ./get-docker.sh --dry-run
添加docker用户组,把用户添加到docker组
123456789101112# 查看用户信息jean@jean:~/src$ iduid=1002(jean) gid=1002(jean) groups=1002(jean),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),33(www-data),44(video),46(plugdev) ...
WSL
未读介绍适用于 Linux 的 Windows 子系统(WSL)是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。
什么是 WSL 2?安装 Linux 分发版时,WSL 2 是默认发行版类型。 WSL 2 使用虚拟化技术在轻型实用工具虚拟机(VM)内运行 Linux 内核。 Linux 分发版作为 WSL 2 托管 VM 内的独立容器运行。 通过 WSL 2 运行的 Linux 分发版将共享同一网络命名空间、设备树(而非 /dev/pts)、CPU/内核/内存/交换、 /init 二进制文件,但有自己的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和 init 进程。
安装
以管理员身份打开cmd
执行 wsl --install默认安装的是Ubuntu系统,如果不想安装默认系统可以使用 wsl --list --online 查看所有可用版本
...
介绍
计算机技术
未读常见概念
已经有多线程了,为什么还要异步?多线程与异步是不同的概念,异步并不意味着多线程,单线程同时可以异步。异步默认借助线程池,多线程经常阻塞,而异步要求不阻塞。多线程和异步的使用场景不同:
多线程:CPU密集型,长期运行的任务,线程的创建与销毁的开销都比较大提供更多底层控制,操作线程,锁,信号量等,线程不易于传参及返回,线程的代码书写较为繁琐
异步:适合IO密集型操作,适合短暂的小任务,避免线程阻塞,提高系统的响应能力
什么是异步任务(Task)包含了异步任务的各种状态的一个引用类型,正在运行、完成、结果和报错
123456789101112131415var task = new Task<string>(() =>{ // Simulate some work System.Threading.Thread.Sleep(1500); return "Task completed!";});Console.WriteLine(task.Status.ToString()); task.Start ...
计算机技术
未读概念什么是线程?线程是操作系统中能够独立运行的最小单位,也是程序中能够并发执行一段指令的序列。线程是进程的一部分,一个进程可以包含多个线程,这些线程共享进程的资源。进程又入口线程,也可以创建更多的线程。
为什么要多线程?批量重复任务希望同时执行(比如:对一个数组中的每个元素都同时进行且耗时的操作)多个不同任务希望同时进行,互不干扰(比如又多个后台线程需要做轮询等操作)
什么是线程池? 一组预先创建的线程,可以重复使用来执行多个任务。 避免频繁的创建和销毁线程,从而减少了线程创建和销毁的开销,提高了系统的性能和效率。 异步编程默认使用线程池
什么是线程安全?
线程安全:多个线程共享资源时,对共享资源的访问不会导致数据不一致或不可预期的结果。
12345678910111213141516171819202122const int total = 100_000;int count = 0;var thread1 = new Thread(ThreadMethod);var thread2 = new Thread(ThreadMethod);thread1.Start();thread ...
介绍最近阿里有来公司推销mongodb这一款产品,自己也听了这个产品会。由于之前自己也没有好好的去研究过这一篇产品,所以想借此会议听到的内容总结一篇文章,以便加强立即和记忆。
1. 什么是MongoDBMongoDB 是一款流行的开源文档型NoSQL 数据库,它使用JSON 类似的BSON 格式存储数据,具有灵活性高、可扩展性强、性能好等特点。MongoDB 适用于需要处理大量非结构化数据、对数据模型要求灵活的应用场景。
BSON,全称Binary JSON,是一种数据格式,主要用于MongoDB数据库的存储和网络传输。它在JSON的基础上进行了扩展,采用二进制编码,支持更多的数据类型,并且具有更快的遍历速度和更小的存储空间。
2. 数据类型与传统数据类型比较MongoDB中的记录是一个文档,是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可能包括其他文档、数组和文档数组。
数据结构对比
RDBMS
MongoDB
discretion
库(database)
库(database)
d
表(table)
文档(document)
Doc ...
介绍PHP debug(PHP调试)是指在PHP程序开发过程中,通过使用调试工具和技术来查找、定位和修复程序错误(bug)的过程。调试的目的是确保代码按预期工作,提高程序的稳定性和效率。
安装1. 下载phpdebug扩展查看自己的php版本下载对应的debug版本我的环境是版本:8.3.6,nts,x64
根据自己的版本去这个下载xdebug,选择对应的系统和对应的版本。有windows版本和linux版本,我的环境是linux版本
本地系统是Ubuntu,使用apt-get安装
123sudo apt-get install php-xdebug# 查看是否安装成功php -v
2. 配置php.ini把php xdebug的配置信息添加到.ini文件中
查看系统中的model扩展地址php --ini | grep xdebug打开这个.ini文件,把这个扩展复制到php.ini文件中就行了
php.ini问价增加配置参数
12345zend_extension=xdebug.soxdebug.mode=debugxdebug.start_with_request=ye ...



















