自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker卷和挂载目录的区别

卷:由 Docker 管理,更适合生产环境,更加安全和易于管理。挂载目录:由用户管理,更适合开发环境,提供对宿主机文件系统的直接访问能力。选择哪种方式取决于您的具体需求,例如数据访问模式、安全性要求、以及环境(生产或开发)。

2023-12-15 09:12:39 339

原创 js处理因为页面元素加载顺序而绑定不上事件的方法

JavaScript 中处理因页面元素加载顺序而导致的事件绑定问题有多种解决方案。

2023-11-01 11:52:03 158

原创 Python使用修饰函数判断执行时间

Python中的修饰函数(装饰器)用于修改或增强其他函数或方法的功能,而不需要修改它们的源代码。装饰器通常用于添加日志、性能测量、权限检查等功能。这是一个简单的示例,演示了如何使用装饰器来添加额外的功能而不修改原始函数的代码。您可以根据需要编写更复杂的装饰器来满足不同的需求。之前和之后分别记录了开始时间和结束时间,并计算了执行时间。最后,装饰器打印出函数的执行时间。时,装饰器会测量并打印出函数执行的时间。在这个示例中,我们定义了一个名为。装饰器内部定义了一个。的装饰器函数,它接受一个函数。

2023-10-27 16:34:43 203

原创 typescript泛型的解释和理解

在TypeScript(以及其他支持泛型的编程语言)中,泛型(Generics)是一种允许你定义可重用的组件的工具。这些组件可以用各种类型工作,而不仅仅是一个单一的类型。泛型提供了一种灵活和可重用的方式来创建函数、接口和类,而不会牺牲类型安全。

2023-10-20 10:18:28 125

原创 typeScript 类型什么时候使用any?

类型会让你失去 TypeScript 提供的类型安全性和编译时检查。: 如果你确定值的类型,但 TypeScript 不确定,你可以使用类型断言。: 如果你正在定义一个函数或类,并且希望它能适用于多种类型,你可以使用泛型。: 如果一个值可能是多种类型之一,你可以使用联合类型。在不确定类型的情况下,通常最好尽量避免使用。: 通过自定义函数,更明确地进行类型检查。类型执行任何操作,除非先进行类型检查。,而是选择以上提到的更类型安全的选项。在类型不确定的情况下,使用。: 在运行时动态检查类型。

2023-10-18 09:15:33 110

原创 vue3的<script setup>这的setup是什么意思,做什么用的

在 Vue 3 中,是一个实验性的 API,用于使用 Composition API 编写组件。它允许你在一个更简洁、更有组织的方式中编写组件。这种语法能够让你直接在标签内使用refcomputedwatch等 Composition API 的函数,而无需在setup函数内部使用它们。

2023-10-17 11:35:52 288

原创 Vue、Vite 和 ESLint:前端开发工具和概念全面解析

Vite 是一个由 Vue 作者开发的构建工具,用于更快的开发和构建。: App.vue 中不能正确展示 router 的组件内容通常涉及到路由配置或 Vue 组件的问题。: JSX 是用于 React 的 JavaScript 扩展语法,但也可以在 Vue 中使用。: 单页应用(SPA)和多页应用(MPA)的主要区别在于页面跳转方式和资源加载。: Vite 用于更快的开发和构建,通常会自动处理所需的所有文件。: Pinia 是 Vuex 的一个替代品,用于 Vue 3。: 通常只需将 Vite 生成的。

2023-10-17 10:30:35 301

原创 promisify 是 Node.js 标准库 util 模块中的一个函数

在 Node.js 的回调风格中,函数通常接受一个回调函数作为最后一个参数。这个回调函数的第一个参数是一个错误对象,用于表示操作失败,其余的参数用于表示操作的结果。它用于将遵循 Node.js 回调风格的函数转换为返回 Promise 的函数。,你可以把这样的函数转换为一个返回 Promise 的函数。这个 Promise 在成功时解析为原回调函数的。语法来等待异步操作完成,从而让异步代码看起来更像同步代码。函数完成,而不必使用回调。这通常会使代码更易读和维护。这样,你就可以在异步函数中使用。

2023-10-16 13:25:20 479

原创 nodejs使用nginx负载均衡策略有哪些?

负载均衡是一种优化资源使用、最大化吞吐量、最小化响应时间、并避免任何单个资源过载的技术。负载均衡通常由专用的软件或硬件(如负载均衡器)来实现。在本文中,我们将主要讨论软件负载均衡,尤其是使用Nginx。

2023-10-16 12:10:29 227

原创 基于typeScript和nodejs的API项目目录结构

以下是如何按照之前讨论的组织结构对你的代码进行剥离和重构的完整示例。

2023-10-16 10:28:38 243

原创 ES6(ECMAScript 2015)有哪些新属性,如何判断当前浏览器是否支持?

Babel 是一个流行的 JavaScript 编译器,它可以将 ES6 代码转换为较早版本的 JavaScript,以便在不支持 ES6 的浏览器中运行。Polyfill 是一段 JavaScript 代码,可以在不支持某个特性的浏览器中模拟该特性的行为。综上所述,使用特性检测、Babel、"Can I Use" 网站和 polyfill 等方法可以帮助你确定所使用的浏览器是否支持 ES6 特性,并采取适当的措施以确保你的代码在各种浏览器中运行良好。或其他类似的库来提供缺失的 ES6 特性支持。

2023-10-16 09:56:31 604

原创 JavaScript的模块话开发

综上所述,CommonJS适用于服务器端JavaScript开发,支持动态加载和条件加载,而ES6模块适用于现代浏览器和支持ES6模块的Node.js版本,具有静态加载特性。你可以根据你的开发环境和需求选择合适的模块系统。当涉及到模块化的JavaScript开发时,有两个主要的模块系统:CommonJS和ES6模块系统,它们在语法和用法上有一些关键区别。

2023-10-16 09:41:20 44

原创 service worker实现静态资源缓存

可以基于浏览器的localStorage,来决定什么时候刷新。1、注册service worker。

2023-10-13 09:43:01 909

原创 创建web workers

首先,你需要创建一个 JavaScript 文件,这个文件将包含 Worker 线程将要执行的代码。:使用Worker构造函数创建一个新的 Worker 对象,并指定 Worker 脚本文件的 URL。:使用方法发送消息到 Worker,使用onmessage事件监听器接收来自 Worker 的消息。:如果你想结束一个 Worker,可以调用 Worker 对象的terminate方法,或者在 Worker 内部调用。

2023-10-12 09:35:03 125

原创 service workers跟页面dom交互

Service Workers 本身不能直接访问 DOM,因为它们在与主线程不同的线程中运行。然而,你可以使用API 在 Service Workers 和页面之间进行通信。以下是一个简单的示例,展示了如何使用 Service Workers 与页面 DOM 进行交互。

2023-10-12 09:26:00 1208

原创 webpack-merge 实现开发、生产和测试环境的不同配置

使用可以方便地合并多个 Webpack 配置对象,从而实现开发、生产和测试环境的不同配置。

2023-10-11 09:26:42 365

原创 基于Google‘s FCM实现消息推送

使用 Service Worker 和 Google's Firebase Cloud Messaging(FCM)来实现 Web 推送通知。

2023-10-11 08:57:35 647

原创 macos系统生成本地开发环境的ssl证书过程

请注意,这是一个自签名证书,只能用于开发和测试目的,不能在生产环境中使用。如果您需要在生产环境中使用 SSL 证书,请考虑购买来自受信任的证书颁发机构(CA)的证书。在执行此命令时,您将被要求提供一些证书信息,如国家/地区名称、组织名称、通用名称等。对于通用名称(Common Name),请确保输入您的域名,即。导航到您希望保存证书文件的目录。现在,您已经生成了包含私钥和证书的 PEM 文件,其中。您可以将这些文件用于您的本地开发环境。这将生成一个有效期为 365 天的自签名证书文件。

2023-07-18 14:42:36 678

原创 Mac下的mosquitto 基于MQTT消息推送

1、安装mosquitto代理服务器brew install mosquitto,需要首先安装brew,如果提示不在支持brew,请把/usr/local目录的权限改为当前用户;2、启动mosquitto停止服务  brew services stop mosquitto启动服务  brew services start mosquitto如果还是提示“连接被拒绝”,请尝试指定配置文件启动 mos...

2018-05-30 13:53:41 1874

原创 OSI七层协议模型的内容

2018-04-16 17:14:24 306

转载 mac 配置jdk 环境变量(No Java runtime present, requesting install.)

No Java runtime present, requesting install.安装完还提示这个错误,可以vim .bash_profile 添加:  export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" export PATH=${JAVA_HOME}/bin:$PATH保存...

2018-04-01 15:15:04 10474

原创 vuejs axios实现跨域http请求接口

跨域post实例,用到了qs组件来避开ajax信使请求,并兼容Android。import axios from 'axios';import qs from 'qs';axios.post('http://www.xyz.com/request', qs.stringify(params)).then(response => { console.log(response);}...

2018-03-29 16:36:11 864 1

原创 JS继承的实现方式

JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。

2017-08-29 11:29:32 234

转载 使用ES6的Promise完美解决回调地狱

相信经常使用ajax的前端小伙伴,都会遇到这样的困境:一个接口的参数会需要使用另一个接口获取。年轻的前端可能会用同步去解决(笑~),因为我也这么干过,但是极度影响性能和用户体验。正常的前端会把接口写在另一个接口的回调里。是这样不错,但是它增加了函数的嵌套深度也会造成一定的逻辑混乱。也许有朋友会说,哪那么多毛病,解决问题不就好了吗?但是,如果需要的是另外好几个接口的返回数据呢?这时候

2017-08-16 18:07:08 779

转载 js中__proto__和prototype的区别和关系?

作者:知乎用户链接:https://www.zhihu.com/question/34183746/answer/58068402来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。几乎任何对象有一个[[prototype]]属性,在标准中,这是一个隐藏属性。该属性指向的是这个对象的原型。那么一个对象的[[prototype]]属性究竟怎么决定

2017-08-16 16:38:25 224

转载 设置form表单传输的编码格式 application/x-www-form-urlencoded、multipart/form-data、text/plain

表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。(用于文件上传)默认情况,这个编码格式是application/x-www-form-urlencoded   (不能用于文件上传);只有使用了multipart/form-data,才能完整的传递文件数据。enctype="multipart/form-data"是上

2017-08-12 17:47:41 1329

转载 使用正则表达式找出不包含特定字符串的条目

做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式。例如枚举出日志文件中不包含某个特定字符串的条目,找出不以某个特定字符串打头的条目,等等。

2017-08-12 09:19:20 287

原创 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql .sock'连到服务器,而PHP标准配置正是用过'/tmp/mysql .sock',但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东: 

2017-07-31 17:04:20 496

转载 编写Shell脚本的最佳实践

前言由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。同时,由于历史原因,shell有很多不

2017-07-25 21:10:24 448 1

转载 微服务架构扩展FreeStyle

 随着越来越多的互联网技术团队开始采用微服务实施系统架构,伴随着业务的扩大,系统扩容的问题就会摆上议程,那么微服务架构该如何扩容呢?今天本文就尝试将从上到下扩容方案梳理一下,供大家做为一个参考。        一个常见的微服务架构如下:  微服务基于Dubbo + Zookeeper的组合,缓存和数据库采用Redis + Mysql的经典组合。利

2017-07-17 22:30:43 454

转载 三大主流ETL工具选型

ETL(extract, transform and load) 产品乍看起来似乎并不起眼,单就此项技术本身而言,几乎也没什么特别深奥之处,但是在实际项目中,却常常在这个环节耗费太多的人力,而在后续的维护工作中,更是往往让人伤透脑筋。之所以出现这种状况,恰恰与项目初期没有正确估计ETL工作、没有认真考虑其工具支撑有很大关系。

2017-07-17 22:09:54 10942

原创 PHP HTTP客户端-Guzzle原理解析

在PHP后台开发过程中,经常会遇到模块间需要通过HTTP通信的情形。PHP语言本身只提供了socket操作的接口,并未提供HTTP相关操作的接口。许多现有的实现采用curl扩展充当HTTP Client与HTTP Server通信,但仍需自己封装curl的接口。有鉴于此,本文介绍一款流行的PHP HTTP Client客户端---Guzzle(https://github.com/guzzle/guzzle/)的用法,深入分析其底层实现原理。

2017-07-16 14:52:38 3002

转载 关于垂直切分Vertical Sharding的粒度

垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响.

2017-07-14 21:41:52 178

转载 数据库sharding技术

数据库的扩展是一个永恒的话题。对于传统的关系数据库,采用的是纵向扩展(ScaleUp)的方式,即买更好的机器添加 更多的资源来取得更好的性能(如硬件升级、更快更多的CPU、更大的内存、更多更大的磁盘等)。而形式上采用的是并行数据库、分布式数据库的模式,具体细 节依赖水平分区或者垂直分区的技术。关系数据库通过ScaleUp方式已在传统的企业应用环境中统治了将近三十多年。

2017-07-14 21:25:47 556

转载 分库分表需要考虑的问题及方案

Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。当然,现实中更多是这两种情况混杂在一起,这时候需要根据实际情况做出选择,也可能会综合使用垂直与水平切分,从而将

2017-07-14 21:20:19 3628

转载 Centos7 安装 PHP7最新版

Centos7 安装 PHP7最新版

2017-07-13 14:34:18 310

转载 Python: 你不知道的 super

super() 的入门使用在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现,比如:class Animal(object): def __init__(self, name): self.name = name def greet(self

2017-07-13 13:24:24 316

转载 前后端分离后的前端时代

什么是前后端分离 要区分前端和后端,需要有个明确的界限。一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了。你负责貌美如花,我负责赚钱养家在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的状态中,可以说是没有独立的“人格”可言。前端负责切图和编写静态页面模板,后端将数据渲染到前端提供的页面模板中,最后将页面渲染到浏览器展示。这个过

2017-07-11 22:34:01 5952

转载 最佳日志实践(v2.0)

0. 缘起大约在三年前,我曾经写过一篇 最佳日志实践,还被码农周刊选为那年的 最受欢迎技术干货 之一。当时我任职于网易杭州研究院的存储平台组,主要做网易对象存储(NOS)的开发和部分运维工作。由于网易云音乐,易信等几个重要产品陆续上线,业务压力剧增,我们的系统在前前后后大约半年的时间里,出现了大大小小各种事故。通过不断总结事故原因、不断地优化代码、进化部署架构,才使整个系统逐渐稳定下来。那个时候组里人常常开玩笑说,我们采用的是TDD的开发模式,只是这个TDD不是测试驱动开发(Test Driven De

2017-07-11 21:55:36 276

转载 1对多业务,数据库水平切分架构一次搞定

本文将以“帖子中心”为例,介绍“1对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践:如何来实施水平切分,水平切分后常见的问题典型问题的优化思路及实践 一、什么是1对多关系所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的映射关系。

2017-07-10 22:23:36 223

空空如也

空空如也

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

TA关注的人

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