自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

py_1990_04_20的博客

不积跬步,无以至千里

  • 博客(71)
  • 收藏
  • 关注

原创 【__proto__ vs prototype 到底啥区别】

prototype 是函数的属性,用于 new 时指定实例的原型;__proto__ 是对象的内部链接,用于属性查找。关键区别:prototype 只有函数有,__proto__ 几乎所有对象都有。new 操作将实例的 __proto__ 指向构造函数的 prototype,二者通过 f.__proto__ === Foo.prototype 关联。函数既是对象(有 __proto__),又有自己的 prototype,两者指向不同。__proto__ 为非标准写法,推荐使用 Object.getProto

2026-11-06 03:00:41 221

原创 【Docker Compose 快速入门】

本教程通过构建一个基于 Flask 和 Redis 的计数器应用,介绍 Docker Compose 的核心用法。从项目搭建、Dockerfile 编写到 compose.yaml 配置,涵盖服务定义、端口映射、环境变量与健康检查。通过添加健康检查解决启动竞态,利用 develop.watch 实现代码热更新,提升开发效率。最终实现可持久化、自动恢复的多服务应用栈,适合初学者快速掌握 Compose 在 Web 开发中的实践。

2026-09-28 01:51:12 341

原创 【OpenEuler 安装 Docker】

在 openEuler 24.03 SP4 系统上安装 Docker,需关闭 SELinux 并修改源配置中的版本变量。使用阿里云或华为云镜像源,将 $releasever 替换为 7 以解决 404 错误。通过 dnf 安装 Docker 及插件,配置国内镜像加速,启动服务后运行 hello-world 验证成功。

2026-09-24 21:58:42 235

原创 【文件查找,与文本处理】

本文系统介绍 Linux 中 find 命令、 sed 编辑器和gawk编辑器的核心用法。

2026-09-24 01:24:30 174

原创 【Linux 定时任务】

Linux定时任务体系分为一次性(at)与周期性(cron、systemd timer)。at用于单次执行,支持时间格式灵活;cron通过crontab或系统配置文件实现周期调度,支持用户级与系统级任务,并可通过anacron补跑未执行的任务。systemd timer以服务+定时器分离方式管理,支持持久化补跑(Persistent=true),并集成日志追踪(journalctl -u),是现代系统推荐的定时机制。

2026-09-16 02:30:58 228

原创 【shell 结构化命令】

shell 结构化命令

2026-09-14 00:50:20 10

原创 【Linux 系统管理】

涵盖系统信息查看、进程管理、内存与磁盘管理、网络管理核心命令

2026-09-09 14:27:26 137

原创 【Shell 知识速查表】

本文为Shell知识速查表,涵盖符号与括号用法、重定向操作、特殊变量、参数展开、正则表达式元字符及POSIX字符组,并总结echo与printf常用输出格式,适合快速查阅与复习。

2026-09-09 00:33:32 223

原创 【Linux 命令基础版】

Linux用户与用户组管理(核心文件、user/group命令、查询切换)及文件权限管理(普通/特殊权限、umask、chmod符号模式、chown/chgrp)和文件目录操作

2026-09-04 17:21:50 233

原创 vscode wsl和windows环境切换

环境左下角显示数据库 Host代码位置Windows 本地><127.0.0.1WSL172.x.x.x(查 resolv.conf)点击左下角 + 选择对应选项。

2026-07-14 21:25:31 299

原创 【4种打开Ubuntu(WSL)的方法】

本文介绍了4种打开Ubuntu(WSL)的方法:通过开始菜单搜索、Windows终端/PowerShell命令、Win+R快速启动以及VS Code开发模式。提供了首次使用时的系统更新指南和常用基础命令,包括文件操作、Windows与Ubuntu文件互访、软件安装等。还包含密码重置方法、WSL状态查看技巧以及一个典型的新手使用流程。文章特别强调开发推荐使用VS Code,并提醒注意sudo权限操作和内存释放问题,为WSL初学者提供了全面的操作指南。

2026-07-12 04:37:39 418

原创 【MySQL建索引】

本文总结了MySQL索引的建立规则与应用场景。可以建立索引的字段类型包括整数、小数、字符串、时间和枚举等,而blob和longtext只能建立前缀索引。索引分为主键、普通和唯一三种类型,各有不同约束条件。索引主要用于加速WHERE查询、ORDER BY排序、GROUP BY分组和JOIN关联操作,但无法优化!=、NOT LIKE等操作,且会降低写操作性能。适合建索引的字段包括频繁查询、关联、排序的列以及主键,而重复度高、很少查询或频繁更新的字段则不适合建索引。外键字段必须建立普通索引以确保关联查询效率。

2026-06-26 05:10:11 241

原创 【Future vs CompletableFuture vs JS Promise】

本文对比了Java中的Future与CompletableFuture的核心差异,重点剖析了中断机制的不同实现: 传统Future中断原理 FutureTask通过runner字段持有执行线程引用,cancel(true)会直接中断目标线程,而CompletableFuture作为通用结果容器不绑定执行线程,cancel()仅修改状态不中断线程。 设计思想对比 CompletableFuture与JavaScript的Promise高度同源,均采用异步可外部决议模型,支持链式调用、多任务组合(anyOf/a

2026-06-24 16:39:52 367

原创 【线程池全套高频坑点】

线程池高频坑点精要总结 异常处理:避免submit静默吞异常,execute需内部捕获所有Throwable,防止线程销毁;Error类异常无法恢复。 参数配置: 区分IO/CPU密集型任务设置线程数,公式参考:IO任务=CPU核心数×(1+等待耗时/计算耗时),CPU任务=CPU核心数+1。 禁用无界队列防OOM,有界队列需配自定义拒绝策略(如日志告警)。 核心线程闲置时通过allowCoreThreadTimeOut回收。 线程复用问题:ThreadLocal和MDC需及时清理,防内存泄漏和日志串号。

2026-06-21 22:37:19 371

原创 BlockingQueue 全家桶

本文总结了Java中6种主要的阻塞队列(BlockingQueue)及其特点: ArrayBlockingQueue:固定容量的数组实现,严格FIFO,读写互斥 LinkedBlockingQueue:链表实现,可指定容量,读写分离锁,并发性能更好 SynchronousQueue:零容量队列,生产者必须等待消费者取走 LinkedTransferQueue:无界队列,支持普通缓冲和同步交付两种模式 PriorityBlockingQueue:无界优先级队列,按元素优先级排序 DelayQueue:延时队列

2026-06-19 04:38:25 358

原创 【Unicode、UTF-8、UTF-16 及字符类型详解】

Unicode是一种统一的字符编码标准,为所有语言字符分配唯一二进制编码,包含17个平面共1114112个码位,其中基本多文种平面(BMP)最为常用。UTF-8是变长编码(1-6字节),兼容ASCII,适用于存储和传输;UTF-16则采用固定或代理对方式编码(2或4字节),Java默认使用UTF-16,其char类型和String类均基于UTF-16编码。需要注意的是,增补字符会占用两个char位置但视为一个逻辑单元,处理文本时建议以字符串整体操作确保准确性。Unicode与ISO 10646标准保持兼容,

2026-06-10 16:49:31 293

原创 【获取单词流】

这篇文章总结了Java中5种将文本转换为单词流的方法,重点推荐了最优组合方案: 分析了5种文本转流方法的特点: List/Arrays方式会生成中间集合/数组,内存占用高 Scanner.tokens()简单但性能一般 Pattern.splitAsStream()支持正则且流式处理 Files.lines()支持逐行读取 推荐终极解决方案: Files.lines(path) .flatMap(Pattern.compile("\\PL+")::splitAsStream) 该组合具有流式处理、不加载全文

2026-06-10 16:23:20 181

原创 【Intelij IDEA使用手册】

IntelliJ IDEA 常用快捷键速查手册 本文档整理了IntelliJ IDEA中高效的开发快捷键,分为三大类: 查找搜索:包含文件/字符串搜索(CTRL+F/R)、类结构查看(CTRL+H)、方法调用追踪(CTRL+ALT+H)等核心定位功能 代码编辑:涵盖智能补全(ALT+ENTER)、代码格式化(CTRL+ALT+L)、多光标编辑(ALT+SHIFT+点击)等高效编辑技巧 代码生成:提供快速生成Getter/Setter(ALT+INSERT)、main方法(psvm)、代码块包裹(CTRL+A

2026-06-03 15:37:13 327

原创 【JDK动态代理源码梳理】

摘要:JDK动态代理核心实现机制是通过Proxy.newProxyInstance()生成代理类,其内部采用缓存机制和双重检查锁保证线程安全。代理类继承Proxy并实现目标接口,所有方法调用均转发至InvocationHandler。生成过程包括权限校验、缓存处理、字节码生成和构造器反射实例化,最终生成形如$Proxy0的代理类,通过静态代码块预加载方法对象,在运行时将调用委托给处理器的invoke方法。

2026-06-03 04:52:18 193

原创 IDEA创建java项目

刚安装好会进入下面的创建页面,选择直接New Project创建新项目。如果后续打开IDEA,并且上次的项目存在,则会打默认开上次的项目,此时可以选择File -> New->Project创建新项目。

2024-02-24 00:49:05 818 1

原创 java开发环境安装

JDK环境变量配置Maven环境变量配置maven setting.xml:<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

2020-09-18 18:30:26 191

原创 MySQL zip包安装

1. 下载MySQL zip包下载地址2. 配置解压到安装目录,例如:D:\Program Files\mysql-5.6.48在根目录下创建my.ini,如下仅供参考[mysql]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]#绑定IPv4和3306端口bind-address=0.0.0.0port=3306secure_file_priv = 'D:/Program Files/mysql-5.6.48/testM

2020-09-18 18:15:14 202

转载 flex布局

flex布局

2020-07-05 18:09:09 209

原创 Gulp快速入门教程

Gulp介绍中文主页: http://www.gulpjs.com.cn/gulp是与grunt功能类似的前端项目构建工具, 也是基于Nodejs的自动任务(task)运行器能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的合并、压缩、检查、监听文件变化、浏览器自动刷新、测试等任务gulp更高效(异步多任务), 更易于使用, 插件高质量安装 nodejs, 查看版本: node -v创建一个简单的应用gulp_test|- di.

2020-06-25 01:25:52 252

原创 JS模块化

1. 立即执行函数模块化2. AMD-RequireJS模块化3. CommonJS-Browserify模块化4. ES6模块化

2020-06-22 19:29:23 166

原创 立即执行函数模块化

(function (window, $) { //数据 let data = 'I am a module'; //操作数据的函数 function foo() { //用于暴露有函数 console.log(`foo() ${data}`); $('body').css('background', 'red'); } function bar() {//用于暴露有函数 console.log(`bar() ${data}`); otherFun

2020-06-22 19:24:30 389

原创 ES6模块化

ES6-Babel-Browserify1. 定义package.json文件json { "name" : "es6-babel-browserify", "version" : "1.0.0" }2. 安装babel-cli, babel-preset-es2015和browserifynpm install babel-cli browserify -gnpm install babel-preset-es2015 --save-dev3. 定义.babelrc文件json { "

2020-06-22 19:12:30 255

原创 AMD-RequireJS模块化

require.js使用1. 下载require.js, 并引入官网: http://www.requirejs.cn/github: https://github.com/requirejs/requirejs将require.js导入项目: js/libs/require.js2. 创建项目结构|-js |-libs |-require.js |-modules |-alerter.js |-dataService.js |-main.js|-ind

2020-06-22 18:54:14 303

原创 CommonJS-Browserify模块化

Browserify模块化Browserify让你可以使用require('modules')在浏览器端打包模块依赖创建项目结构|-js |-dist |-src |-module1.js |-module2.js |-module3.js |-app.js|-index.html|-package.json { "name": "browserify-demo", "version": "1.0.0" }-dist 打包生成文

2020-06-22 18:20:03 205

转载 nodejs安装

nodejs安装nodejs安装

2020-06-21 17:09:38 200

原创 nodejs使用的CommonJS规范

模块的引用使用 require()函数来引入一个模块例子:var 变量 = require("模块的标识");模块的定义在node中一个js文件就是一个模块默认情况下在js文件中编写的内容,都是运行在一个独立的函数中,外部的模块无法访问导出变量和函数使用 exportsexports.属性 = 属性值;exports.方法 = 函数;注意:不能复制一个对象使用module.exportsmodule.exports.属性 = 属性值;module.export

2020-06-21 16:57:30 503

原创 npm 常用命令

npm -v 查看npm的版本npm version 查看所有模块的版本npm search 包名 搜索包npm install/i 包名 安装包npm remove/r 包名 删除包npm install 包名 --save 安装包并添加到依赖中npm install 下载当前项目所依赖的包npm install 包名 -g 全局安装包(全局安装的包一般都是一些工具)...

2020-06-21 16:40:42 298

转载 Nginx

不重复造轮子了,看这个

2020-06-19 15:43:48 158

原创 ActiveMQ入门

ActiveMQ是JMS规范的一种实现ActiveMQ的消息形式Java消息服务应用程序结构支持两种模型:1.点对点模型(基于队列)每个消息只能有一个消费者。消息的生产者和消费者之间没有时间上的相关性。可以由多个发送者,但只能被一个消费者消费。一个消息只能被一个接受者接受一次生产者把消息发送到队列中(Queue),这个队列可以理解为电视机频道(channel)在这个消息中间件上有多个这样的channel接受者无需订阅,当接受者未接受到消息时就会处于阻塞状态2. 发布者/订阅者模型(基

2020-06-18 17:16:27 285

原创 Executor 并发线程池框架

摘要: Executor框架基于生产者-消费者模型,解耦任务提交与线程管理,提供多级接口(Executor→ExecutorService→ScheduledExecutorService)支持任务执行、生命周期控制和定时调度。核心实现类ThreadPoolExecutor通过七大参数(核心/最大线程数、存活时间、阻塞队列、线程工厂、拒绝策略)动态管理线程,任务提交遵循"核心线程→队列→扩容→拒绝"四步流程。Executors工具类预置五种线程池(如固定/缓存/单线程池),但无界队列设计存在OOM风险,生产

2020-06-17 19:37:43 324

原创 MySQL基础介绍

本文摘要了MySQL数据库的基础知识,主要包含以下内容:1)SQL语句四大分类(DDL数据定义语言、DML数据操作语言、DCL数据控制语言和DQL数据查询语言)及其常用关键字;2)常用字段类型选型规范;3)数据库和表的DDL操作;4)数据的增删改查DML操作;5)用户权限管理的DCL操作;6)基础查询语法。文章提供了详细的SQL示例和注意事项,适合作为MySQL入门参考资料。

2020-06-12 03:24:50 212

原创 MySQL的存储过程

存储函数一个生成长度固定的随机字符串DROP FUNCTION IF EXISTS random_str;DELIMITER //CREATE FUNCTION random_str(len INT) RETURNS VARCHAR(32)BEGIN DECLARE letterTable VARCHAR(52) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'; DECLARE randomStr VARCHA

2020-06-12 01:48:12 200

原创 JavaScript继承

通过Person.call(this, name)实现对象冒充,使子类Ninja继承父类属性;再将Ninja.prototype指向Person实例以继承原型方法,避免原型链断裂。使用Object.defineProperty修复constructor指向,确保继承正确性。最终ninja.say()与feint()正常调用,完整实现基于函数原型的继承。

2020-06-08 02:10:18 149

原创 JavaScript函数

函数是JavaScript的一等对象函数是JavaScript的一等对象(first-class object),或者说是一等公民(first-class zitizens)。 // 使用字面量定义一个空对象 let ninja = {}; // 分配属性 ninja.name = "Hanzo"; // 为对象的属性赋值为一个新对象 ninja.data = {}; // 使用字面量定义一个数组 let ninjaArray = [];

2020-06-07 01:01:36 208

原创 编写Dockerfile的最佳实践

编写Dockerfile的最佳实践本文档介绍了用于构建有效图像的推荐最佳实践和方法。Docker通过从一个Dockerfile文本文件中读取指令来自动构建镜像,该文本文件按顺序包含构建给定镜像所需的所有命令。一个Dockerfile遵循特定的格式和指令集,您可以在Dockerfile 的reference中找到。Docker镜像由只读层组成,每个只读层代表一个Dockerfile指令。这些层是堆叠的,每个层都是前一层的变化的增量。考虑一下Dockerfile:FROM ubuntu:18.04CO

2020-05-29 01:20:57 328

空空如也

空空如也

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

TA关注的人

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