首页
视频直播
网站统计
网友留言
更多
高清壁纸
Search
1
站长网图床PHP源码V2.0 非第三方接口
812 阅读
2
Typecho博客系统付费查看内容插件
535 阅读
3
云短信轰炸PHP源码V2.4美化修复增强版
459 阅读
4
玖伍社区论坛系统源码
446 阅读
5
非常好看的HTML提示框代码,弹窗公告代码
330 阅读
站长杂谈
网络源码
程序源码
游戏源码
小程序源码
网站相关
网站SEO
网站推广
网站代码
系统插件
wordpress插件
typecho插件
phpcms插件
IDC测评
网站字体
主题模板
数据打包
登录
/
注册
找到
63
篇与
站长杂谈
相关的结果
2023-04-04
青龙面板京东脚本库汇总以及安装所需的依赖(拉库之前确认网络可以连接GitHub)
【Faker2】有助力池 290+ ql repo https://github.com/shufflewzc/faker2.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "main"【Faker3】无助力池 290+ ql repo https://github.com/shufflewzc/faker3.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "main"【*gys619/Absinthe*】集合库 370+ ql repo https://github.com/gys619/Absinthe.git "jd_|jx_|jddj_|gua_|getJDCookie|wskey" "activity|backUp" "^jd[^_]|USER|utils|ZooFaker_Necklace|JDJRValidator_|sign_graphics_validate|jddj_cookie|function|ql|magic|JDJR|JD" "main"【***KingRan/KR***】集合库 130+ ql repo https://github.com/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR"【*****6dylan6/jdpro*****】集合库 90+ ql repo https://github.com/6dylan6/jdpro.git "jd_|jx_|jddj_" "backUp" "^jd[^_]|USER|JD|function|sendNotify"【***zero205/JD_tencent_scf***】80 ql repo https://github.com/zero205/JD_tencent_scf.git "jd_|jx_|jdCookie" "backUp|icon" "^jd[^_]|USER|sendNotify|sign_graphics_validate|JDJR|JDSign|ql" "main"【chinnkarahoi*】*无维护 原版 70 ql repo https://github.com/chinnkarahoi/jd_scripts.git "jd_|jx_|getJDCookie" "activity|backUp|Coupon" "^jd[^_]|USER"【ccwav*】*通知增强版和CK检测 ql repo https://github.com/ccwav/QLScript2.git "jd_" "NoUsed" "ql|sendNotify"【smiek2121*】*开卡 ql repo https://github.com/smiek2121/scripts.git "gua_" "" "ZooFaker_Necklace.js|JDJRValidator_Pure.js|sign_graphics_validate.js|cleancart_activity.js|jdCookie.js|sendNotify.js"新版青龙面板拉库步骤如下图所示 新版青龙面板可以在订阅管理中添加京东仓库 如下图所示 img图片 新建订阅中,只需要手动填写 名称 链接 定时规则 剩余的选项会自动跟随链接进行自动切分填写 自动切分填写之后 手动删除链接多余的部分 如下图所示 img图片 img图片 img图片 订阅管理中可以添加多个京东仓库 但尽量不要同时运行 一般只运行一个仓库就好了 禁用其他仓库 img图片) img图片 img图片 旧版青龙面板拉库步骤如下图所示 拉库成功-2图片 拉库任务填写格式-4图片 新建拉库任务-1图片 运行拉库任务-(二)-2图片 运行拉库任务(一)-2图片 常用定时规则 (1)0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务 (2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业 (3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作 (4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 (5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 (6)0 0 12 ? * WED 表示每个星期三中午12点 (7)0 0 12 * * ? 每天中午12点触发 (8)0 15 10 ? * * 每天上午10:15触发 (9)0 15 10 * * ? 每天上午10:15触发 (10)0 15 10 * * ? 每天上午10:15触发 (11)0 15 10 * * ? 2005 2005年的每天上午10:15触发 (12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发 (13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发 (14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 (15)0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发 (16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发 (17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发 (18)0 15 10 15 * ? 每月15日上午10:15触发 (19)0 15 10 L * ? 每月最后一日的上午10:15触发 (20)0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 (21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发 (22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发作为演示的青龙面板版本号是2.14.7 img图片 版本号比较新的青龙面板左侧会有 依赖管理 选项 依赖就是在这个地方安装的 不需要命令行操作 对新手用户比较友好 2-1图片 NodeJs 依赖如下 js-base64 dotenv magic tough-cookie ws@7.4.3 require requests date-fns ts-md5 typescript json5 axios@v0.27.2 crypto-js @types/node png-js node-telegram-bot-api fs jsdom form-data jieba tslib ds jsdom -g prettytable ql common node-jsencrypt juejin-helper moment global-agentPython3 依赖如下 jieba PyExecJS ping3 canvas Crypto ds requests pycryptodomeLinux 依赖如下 bizCode bizMsg lxml libc-dev gcc g++ libffi-dev python3-dev其中 bizCode bizMsg lxml 三个依赖 安装不了 安装方式也特别简单 分别复制安装 NodeJs Python3 Linux 相关依赖 如下图所示 img图片 5-1图片 img图片 安装中图片 安装完成图片 三种类型的依赖安装完成之后,就能够正常运行定时任务了。
站长杂谈
ZIy博客网
2年前
0
10
0
2023-03-26
使用npm构建JavaScript项目
在现代的前端开发中,使用npm构建JavaScript项目已经成为了不可或缺的一部分。npm是一个基于Node.js的包管理器,它不仅可以用来管理第三方的包和库,还可以用来管理我们自己的项目依赖和构建过程。本篇文章将介绍如何使用npm构建JavaScript项目。 安装npm npm是随着Node.js一起安装的,所以如果你已经安装了Node.js,那么就已经拥有了npm。可以通过在终端中输入以下命令来检查npm是否已经安装: npm -v 如果命令返回了npm的版本号,那么就说明npm已经安装成功了。初始化项目 在使用npm构建JavaScript项目之前,首先需要创建一个项目。在终端中进入到项目所在的目录中,然后执行以下命令来初始化一个npm项目: npm init 该命令将会引导你输入项目的基本信息,例如项目名称、版本号、描述、作者等等。在输入完所有的信息之后,npm会自动生成一个package.json文件,其中包含了所有的项目信息和依赖。该文件可以在后续的开发过程中用来管理项目的依赖和构建过程。安装依赖 在项目开发中,我们通常需要使用一些第三方的库或者框架来辅助我们开发。这些库或者框架可以通过npm来安装和管理。在终端中使用以下命令来安装一个依赖: npm install --save 该命令将会安装一个名为的依赖,并且将其保存到package.json文件中。其中--save参数表示将依赖保存到package.json文件中,如果不加该参数,则不会将依赖保存到package.json文件中。使用依赖 安装完依赖之后,我们就可以在代码中使用它了。在JavaScript代码中,可以通过require或者import语句来引入依赖: const package = require(''); 或者 import package from ''; 其中是依赖的名称。构建项目 在项目开发中,我们通常需要将多个JavaScript文件合并成一个文件,并且压缩代码,以提高网站的性能。在使用npm构建JavaScript项目时,可以使用一些构建工具来实现这个过程。常见的构建工具有Webpack、Rollup等等。 以Webpack为例,首先需要安装Webpack: npm install webpack webpack-cli --save-dev 然后创建一个webpack.config.js文件,其中包含了Webpack的配置信息:自定义脚本 npm提供了一种方便的方式来执行自定义的脚本命令,这些命令可以在package.json文件中定义。例如,我们可以在package.json文件中定义一个名为build的脚本,用来执行项目的构建过程。定义方式如下: "scripts": { "build": "webpack" } 在终端中执行以下命令,即可执行定义的build脚本:npm run build 发布项目在项目开发完成之后,我们可以将其发布到npm仓库中,供其他人使用。首先需要在npm官网上注册一个账号,然后使用以下命令登录: npm login 接着,使用以下命令来发布项目:npm publish 注意,发布项目之前需要先将项目上传到npm仓库中,可以使用以下命令:npm pack 该命令将会生成一个.tgz文件,包含了所有的项目文件和依赖。然后使用以下命令将项目上传到npm仓库中:npm publish -.tgz 其中和分别是项目的名称和版本号。总结 使用npm构建JavaScript项目可以极大地提高开发效率和代码的可维护性。通过npm,我们可以方便地管理项目的依赖和构建过程,同时还可以将项目发布到npm仓库中,供其他人使用。如果你还没有使用npm来构建JavaScript项目,那么不妨试一试吧! 原文地址: [使用npm构建JavaScript项目](https://puhuiju.com/9013.html)https://puhuiju.com/9013.html
站长杂谈
27149
2年前
0
13
1
2023-03-26
使用npm进行前端测试和代码覆盖率检测
随着前端应用程序的复杂性不断增加,前端测试和代码覆盖率检测变得越来越重要。在这方面,npm是一个非常有用的工具,可以帮助我们进行自动化测试和代码覆盖率检测。本文将介绍如何使用npm进行前端自动化测试和代码覆盖率检测。 安装测试框架 在使用npm进行自动化测试之前,我们需要选择一个测试框架。在这里,我们将使用Mocha作为示例。Mocha是一个流行的JavaScript测试框架,它支持浏览器和Node.js环境。我们可以使用以下命令来安装Mocha: npm install mocha --save-dev 上述命令将Mocha安装为开发依赖项,并将其添加到package.json文件中。编写测试用例 在安装Mocha之后,我们可以编写测试用例。测试用例通常是一组JavaScript函数,用于测试我们的应用程序是否按预期运行。以下是一个简单的示例测试用例: const assert = require('assert'); const { add, subtract } = require('./math');describe('math', function() { describe('add', function() { it('should return 2 when adding 1 and 1', function() { assert.equal(add(1, 1), 2); }); });describe('subtract', function() { it('should return 0 when subtracting 1 from 1', function() { assert.equal(subtract(1, 1), 0); }); }); }); 上述测试用例使用Node.js的assert模块来进行断言。在describe块中,我们定义了两个测试用例,一个用于测试add函数,另一个用于测试subtract函数。每个测试用例都包含一个it块,其中包含一些断言,以检查函数是否按预期工作。运行测试 在编写测试用例之后,我们可以使用以下命令来运行测试:npx mocha 上述命令将在控制台中运行Mocha,并显示测试结果。如果所有测试用例都通过,则Mocha将输出一条成功消息。否则,Mocha将输出一些错误消息,以指出哪些测试用例失败了。代码覆盖率检测 除了运行测试之外,我们还可以使用npm进行代码覆盖率检测。代码覆盖率是一个衡量我们测试代码的质量的指标,它表示我们测试代码的程度有多少覆盖了我们应用程序的代码。在这里,我们将使用Istanbul作为示例。Istanbul是一个JavaScript代码覆盖率工具,它可以分析我们的代码,并生成代码覆盖率报告。 我们可以使用以下命令来安装Istanbul: npm install istanbul --save-dev 上述命令将Istanbul安装为开发依赖项,并将其添加到package.json文件中。接下来,我们可以使用以下命令来运行Istanbul,并生成代码覆盖率报告: npx istanbul cover _mocha 上述命令将使用Istanbul运行Mocha,并在控制台中显示代码覆盖率结果。此外,Istanbul还将生成一个HTML报告,我们可以在浏览器中查看。代码覆盖率报告将显示我们的应用程序中的每个文件的代码覆盖率百分比。它还将突出显示那些未被覆盖的代码行,以帮助我们识别我们测试代码的覆盖率是否够高。 结论 在本文中,我们介绍了如何使用npm进行前端自动化测试和代码覆盖率检测。我们首先安装了Mocha作为测试框架,然后编写了测试用例。接下来,我们使用Istanbul进行代码覆盖率检测,并生成了代码覆盖率报告。通过使用这些工具,我们可以确保我们的前端应用程序在质量和性能方面达到最佳水平。 原文地址: [使用npm进行前端测试和代码覆盖率检测](https://puhuiju.com/9018.html)https://puhuiju.com/9018.html
站长杂谈
27149
2年前
0
23
0
2023-03-26
使用npm管理前端依赖
随着前端技术的不断发展,现代Web应用的复杂度也越来越高。在这样的背景下,前端开发人员需要使用大量的第三方库和框架来简化开发流程,提高开发效率。然而,手动管理这些第三方库和框架的版本和依赖关系是一件非常繁琐的工作,这就是我们需要使用包管理器的原因。npm作为最流行的包管理器之一,在前端开发中得到了广泛的应用。 什么是npm? npm(全称Node Package Manager)是一个用于管理Node.js模块和包的工具。它是由Node.js社区开发和维护的,是一个开源的项目,可以在命令行界面中使用。 npm提供了一个大型的包仓库,供开发者下载和使用。开发者可以使用npm来下载、安装、更新、卸载和发布自己的包。除此之外,npm还提供了一些方便的功能,如依赖管理、版本管理、脚本执行等。 如何使用npm? 要使用npm,首先需要安装Node.js。安装完成之后,在命令行界面中输入npm命令,即可看到npm的相关信息。 安装依赖 使用npm安装依赖非常简单。在项目根目录下执行以下命令: npm install --save-dev 该命令将会将依赖添加到package.json文件中的devDependencies字段中。卸载依赖 如果需要卸载已安装的依赖,可以使用以下命令: npm uninstall 该命令将会从本地项目目录中删除指定的依赖,同时会从package.json文件中删除相应的记录。更新依赖 使用npm更新依赖也非常简单。在项目根目录下执行以下命令: npm update 该命令将会更新指定的包及其依赖到最新版本。查看依赖 要查看项目中已安装的依赖,可以使用以下命令: npm ls 该命令将会列出项目中所有的依赖及其版本号。自定义脚本 npm还提供了一个方便的功能,即自定义脚本。可以在package.json文件中定义一些自定义脚本,然后可以使用npm run命令来执行这些脚本。例如,可以在package.json文件中定义一个build脚本,用于构建项目: { "my-project", "version": "1.0.0", "scripts": { "build": "webpack" }, "devDependencies": { "webpack": "^5.28.0" } } 然后可以在命令行中使用以下命令来执行该脚本:npm run build 该命令将会执行定义在package.json文件中的build脚本,即运行webpack命令。总结 使用npm管理前端依赖可以大大简化项目开发流程,提高开发效率。通过npm,我们可以方便地下载、安装、更新和卸载依赖,同时还可以管理依赖之间的版本关系。除此之外,npm还提供了自定义脚本的功能,可以用于自动化构建、测试等工作。因此,在进行前端开发时,熟练掌握npm的使用是非常重要的。 原文地址:[使用npm管理前端依赖](https://puhuiju.com/9016.html)https://puhuiju.com/9016.html
站长杂谈
27149
2年前
0
23
0
2023-03-25
网页布局常用技巧:Flexbox 和 Grid 布局简介
网页布局是前端开发的核心内容之一,灵活的布局可以使网页的视觉效果更加出色和易于使用。其中,Flexbox 和 Grid 布局是两种常用的技术。以下是它们的简介: Flexbox 布局 Flexbox 是一种基于容器和项目的布局方式,可以使项目按照自定义的方式排列,并且可以自适应容器的大小。Flexbox 可以实现各种复杂的布局方式,例如水平居中、垂直居中、等分布局等。Flexbox 布局的特点包括:父容器设置 display: flex,子元素即成为 Flex Items。 子元素可以通过 flex 属性实现自适应容器大小。 可以通过 justify-content 和 align-items 控制子元素的水平和垂直方向的对齐方式。 Grid 布局 Grid 布局是一种二维布局方式,可以同时控制行和列,可以实现复杂的网页布局效果。Grid 布局的特点包括:父容器设置 display: grid,子元素即成为 Grid Items。 可以通过 grid-template-columns 和 grid-template-rows 控制网格的列数和行数。 可以通过 grid-column 和 grid-row 控制网格的位置和大小。 Flexbox 和 Grid 布局都具有灵活性和易用性,在实际项目中可以根据需要选择使用。CSS 盒模型 CSS 盒模型是指通过 CSS 来描述 HTML 元素在页面上占用的空间。盒模型包括四个部分:内容区域、内边距、边框和外边距。CSS 盒模型的特点包括:可以通过 box-sizing 属性控制盒模型的计算方式,包括 content-box(默认值)和 border-box 两种。 可以通过 padding 和 margin 属性控制元素的内边距和外边距。 可以通过 border 属性控制元素的边框样式、颜色和宽度。 响应式设计 响应式设计是指通过 CSS 和 JavaScript 技术,使网页能够自适应不同的设备和屏幕尺寸。响应式设计的特点包括:可以通过媒体查询和 viewport 属性控制不同屏幕尺寸下的样式表和缩放比例。 可以通过 Flexbox 和 Grid 布局等技术实现网页元素的自适应布局。 可以通过 JavaScript 技术实现一些交互效果的响应式设计,例如菜单折叠、图片轮播等。 以上是一些前端小知识的标题和简介,希望能对您有所帮助。 !!!!!!
站长杂谈
27149
2年前
0
16
1
2023-03-25
前端优化技巧:如何提高网站加载速度?
前端优化是网站开发过程中非常重要的一环,可以显著提高网站的加载速度和用户体验。以下是一些前端优化技巧,可以帮助您提高网站的性能: 压缩代码 可以使用压缩工具对 CSS、JavaScript 和 HTML 代码进行压缩,减少文件大小,提高加载速度。使用浏览器缓存 可以使用 HTTP 头中的 Cache-Control 和 Expires 属性来控制浏览器缓存,减少页面加载时间。使用内容分发网络(CDN) 可以使用 CDN 技术来缓存和分发网站的静态资源,减少服务器负载和加速资源加载。优化图片 可以对图片进行压缩、缩放和延迟加载等操作,减少图片文件大小和加载时间。减少 HTTP 请求 可以通过合并和压缩 CSS 和 JavaScript 文件、使用 CSS Sprites 技术和减少 HTTP 请求等方式,减少页面的请求次数,提高加载速度。减少重定向 可以通过减少重定向、使用 DNS 缓存和减少页面的请求次数等方式,减少页面的加载时间。预加载资源 可以使用预加载技术,在页面加载完成之前预先加载一些资源,提高网站的加载速度。通过上述的前端优化技巧,可以显著提高网站的性能和用户体验,希望对您有所帮助。 使用合适的图片格式 不同的图片格式有不同的特点,选择合适的图片格式可以减少文件大小和加载时间。例如,使用 JPEG 格式的图片可以减少文件大小,而使用 PNG 格式的图片可以保留透明度。延迟加载 可以使用延迟加载技术,即只有当用户滚动到页面某个位置时才加载该位置下的资源,减少页面加载时间。减少第三方插件 可以减少页面中使用的第三方插件和库,例如 Google Analytics 和社交媒体插件等,减少页面加载时间。去除不必要的代码和资源 可以去除页面中不必要的代码和资源,例如未使用的 CSS 样式和 JavaScript 函数等,减少文件大小和加载时间。使用缓存优化 可以使用缓存技术来优化页面的加载速度,例如将静态资源放置在本地缓存中,减少请求次数和文件大小。优化 JavaScript 执行效率 可以使用一些 JavaScript 优化技巧,例如使用事件代理、避免不必要的循环和操作 DOM 等,减少 JavaScript 执行时间,提高页面性能。通过以上优化技巧,可以显著提高网站的加载速度和用户体验,希望对您有所帮助。 !!!!!!
站长杂谈
27149
2年前
0
10
1
2023-03-25
前端安全:如何防止 XSS 和 CSRF 攻击?
XSS(跨站脚本攻击)和 CSRF(跨站请求伪造攻击)是常见的前端安全问题,以下是一些防御这些攻击的技巧: 防止 XSS 攻击: 过滤输入内容 可以对用户输入的内容进行过滤,移除或转义特殊字符,例如 < 和 > 等,防止攻击者注入恶意代码。使用安全的 HTML 标签和属性 可以使用一些安全的 HTML 标签和属性,例如使用 innerText 替代 innerHTML,减少恶意代码注入的风险。使用 HTTP-only Cookie 可以使用 HTTP-only Cookie 来防止攻击者获取用户的 Cookie,并利用 Cookie 发起攻击。防止 CSRF 攻击: 使用 CSRF Token 可以在每个表单和链接中使用 CSRF Token,确保请求是由真正的用户发起的,而不是攻击者伪造的。检查 Referer 可以检查请求头中的 Referer 字段,确保请求是来自同一站点的,而不是其他站点伪造的。使用验证码 可以在一些敏感操作中使用验证码,例如修改密码和进行支付等,防止攻击者自动化发起攻击。以上是一些防御 XSS 和 CSRF 攻击的技巧,开发者可以根据实际情况选择适合的防御策略,确保网站的安全性。 !!!!!!
站长杂谈
27149
2年前
0
16
1
2023-03-25
Nginx 简介及其应用场景介绍
Nginx 是一款轻量级的高性能 Web 服务器和反向代理服务器,由 Igor Sysoev 开发。Nginx 的名字来源于“engine x”,它的目标是提供高性能、高并发、低内存占用和可扩展的 Web 服务器。 Nginx 主要用于 Web 服务器方面,它可以作为静态资源的 Web 服务器,也可以作为反向代理服务器,将请求转发到不同的后端服务器。此外,Nginx 还支持负载均衡、HTTP 缓存、SSL/TLS 加密、Gzip 压缩等功能。 Nginx 的应用场景非常广泛,包括但不限于以下几个方面: 静态资源的 Web 服务器:Nginx 可以作为静态资源的 Web 服务器,例如 HTML、CSS、JavaScript、图片等,提供高性能的服务。 反向代理服务器:Nginx 可以作为反向代理服务器,将请求转发到不同的后端服务器,以提供更好的性能和可靠性。 负载均衡器:Nginx 支持负载均衡,可以将请求分发到不同的后端服务器,以提高服务的可用性和性能。 HTTP 缓存:Nginx 支持 HTTP 缓存,可以缓存动态页面的内容,以提高 Web 应用的响应速度和性能。 SSL/TLS 加密:Nginx 支持 SSL/TLS 加密,可以保护 Web 应用的数据传输安全,防止敏感信息被窃取。 总之,Nginx 是一款功能强大、性能卓越的 Web 服务器和反向代理服务器,广泛应用于 Web 应用开发和部署领域,为 Web 应用提供高性能和高可靠性的服务。 !!!!!!
站长杂谈
27149
2年前
0
17
1
2023-03-25
Nginx 配置文件详解及常用指令
Nginx 的配置文件是控制 Nginx 行为的重要组成部分,正确配置 Nginx 的配置文件是保证 Nginx 正常工作的关键。本文将对 Nginx 的配置文件进行详细介绍,并列举常用指令。 一、Nginx 配置文件的结构 Nginx 的配置文件主要由以下三个部分组成: 全局块:定义全局配置指令,对整个 Nginx 服务器生效。 events 块:定义事件驱动模块相关的配置指令。 http 块:定义 HTTP 协议相关的配置指令,例如服务器、反向代理、缓存等。 二、常用指令worker_processes:定义 Nginx 进程数,建议设置为 CPU 核心数的倍数。 pid:定义 Nginx 进程的 PID 文件路径。 error_log:定义错误日志文件路径和级别。 access_log:定义访问日志文件路径和格式。 include:包含其他配置文件。 http:定义 HTTP 协议相关配置。 server:定义虚拟主机的配置。 location:定义 URL 匹配规则和处理方式。 proxy_pass:定义反向代理的目标服务器地址。 root:定义 Web 服务器的根目录。 index:定义默认访问文件。 gzip:定义 Gzip 压缩相关配置。 三、配置示例静态资源服务器配置示例: worker_processes 1;events { worker_connections 1024; }http { server { listen 80; server_name example.com;location / { root /usr/share/nginx/html; index index.html; }error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } } 2.反向代理服务器配置示例: worker_processes 1;events { worker_connections 1024; }http { server { listen 80; server_name example.com;location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; } } 四、Nginx 的应用场景Web 服务器:Nginx 可以作为 Web 服务器,用于提供静态文件服务和动态 Web 应用程序的反向代理。由于 Nginx 的高性能和低资源占用,它非常适合高流量的 Web 站点。 反向代理:Nginx 可以作为反向代理,将客户端请求转发给后端 Web 服务器。在高流量的环境下,Nginx 可以有效地分摊 Web 服务器的负载,提高 Web 应用程序的性能和可靠性。 负载均衡:Nginx 可以作为负载均衡器,将客户端请求分发到多个 Web 服务器上,以提高 Web 应用程序的性能和可靠性。 HTTP 缓存:Nginx 可以作为 HTTP 缓存服务器,缓存常用的 Web 页面和资源,以提高 Web 应用程序的性能。 HTTPS 代理:Nginx 可以作为 HTTPS 代理服务器,对客户端和服务器之间的通信进行加密和解密。由于 Nginx 的高性能和低资源占用,它非常适合高流量的 HTTPS 站点。 SMTP 代理:Nginx 可以作为 SMTP 代理服务器,对邮件服务器之间的通信进行加密和解密。由于 Nginx 的高性能和低资源占用,它非常适合高流量的邮件服务器。 综上所述,Nginx 在 Web 应用程序架构中具有重要的作用。正确使用 Nginx 可以提高 Web 应用程序的性能和可靠性,并减少资源占用。 !!!!!!
站长杂谈
27149
2年前
0
20
1
2023-03-25
Nginx 反向代理及负载均衡实现方法
Nginx 反向代理及负载均衡实现方法: 反向代理实现方法: (1)配置反向代理服务器:在 Nginx 的配置文件中添加反向代理服务器的配置信息,指定要代理的目标服务器的 IP 地址和端口号。(2)启用反向代理功能:在 Nginx 的配置文件中启用反向代理功能,即将 Nginx 配置为反向代理服务器。 (3)配置反向代理的路径:在 Nginx 的配置文件中配置反向代理的路径,指定客户端请求的 URL 路径和要代理的目标服务器的 URL 路径。 负载均衡实现方法: (1)配置负载均衡服务器:在 Nginx 的配置文件中添加负载均衡服务器的配置信息,指定要负载均衡的目标服务器的 IP 地址和端口号。(2)启用负载均衡功能:在 Nginx 的配置文件中启用负载均衡功能,即将 Nginx 配置为负载均衡服务器。 (3)配置负载均衡的算法:在 Nginx 的配置文件中配置负载均衡的算法,指定如何分配客户端请求到目标服务器,常见的负载均衡算法有轮询、加权轮询、IP hash 等。 (4)配置健康检查功能:在 Nginx 的配置文件中配置健康检查功能,即定期检查目标服务器的健康状况,避免将请求分配到不健康的服务器上。 综上所述,通过配置 Nginx 的反向代理和负载均衡功能,可以将客户端请求分发到多个目标服务器上,提高 Web 应用程序的性能和可靠性。 !!!!!!
站长杂谈
27149
2年前
0
20
1
2023-03-23
java中初始化List 集合的几种方式
常规方式 List<String> list = new ArrayList<>(); list.add("2"); list.add("3"); list.add("4"); list.add("5");匿名内部类方式 List<String> list = new ArrayList<>() {{ add("2"); add("3"); add("4"); add("5"); }};数组方式 返回可变列表 List<String> list = new ArrayList<>(Arrays.asList("2", "3", "4", "5")); }}; Stream流方式 List<String> list = Stream.of("2", "3", "4", "5").collect(Collectors.toList());使用之前需要先引用 guava 依赖包: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency>JDK 9 List.of JDK9 以上才有这个方法,而且返回的是不可变列表 List<String> list = List.of("2", "3", "4", "5");Collections 工具类 用于返回由指定对象的 n 个副本组成的不可变列表,因为列表不可变,所以只用于一些固定元素的场景 List<String> list = Collections.nCopies(3, "2");
站长杂谈
# Java
ZIy博客网
2年前
0
12
1
2023-03-23
Tomcat 的安装以及Java环境变量配置
Tomact 简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,是开发和调试JSP 程序的首选 Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式 简单来说就是在电脑上开启一个空间,用户可以访问里面的东西,主要用于jsp 配置 Java 环境变量 JSP 是基于Java的,所以必然少不了 Java 的支持 安装好JDK以后,找到jdk根目录,默认是C:\Program Files\Java\jdk1.8.0_291 然后复制 jdk 的根路径 演示 新建 JAVA_HOME 右键 此电脑-–属性-找到 高级系统设置 - 高级 – 环境变量 在 系统变量 里面点击新建 变量名为:JAVA_HOME 变量值为刚刚复制的 jdk跟路径 最后点击确定 演示 新建 classpath 再次点击新建 变量名为:classpath 变量值为lib目录的路径 比如:C:\Program Files\Java\jdk1.8.0_291\lib。 如果还有jre也要把jre下的lib目录添加进去 比如:C:\Program Files\Java\jre1.8.0_291\lib 演示 ⚠️注意前面加一个.;中间以英文状态下的分号;隔开。最后点击确定 添加Path环境变量 复制jdk根目录下的bin目录的路径 回到系统变量,这里不用再新建一个Path,默认已经有了,双击打开Path。点击新建, 值为刚刚复制的bin目录的路径。最后点击确定就可以了。 演示 验证是否安装成功:打开控制台输入:java -version 出现版本号则安装成功 Tomact 安装 下载解压以后 这里简单说明一下几个必要的 启动 Tomact:双击 bin/下面的 startup.bat文件,会打开一个命令行窗口 关闭 Tomact:其实可以按两下 Ctrl + C 或者直接关闭窗口,又或者双击 shutdown.bat 演示 运行成功: 演示 端口问题 默认启用的是80端口,一般如果你的电脑没有运行其他web服务可以不用更改,如果端口被其他服务占用 修改服务器端口 打开conf/下的server.xml 找到 <Server port="8000" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <!-- Security listener. Documentation at /docs/config/listeners.html <Listener className="org.apache.catalina.security.SecurityListener" />更改 port 为其他端口即可 项目存放目录: webapps/ROOT 软件下载 隐藏内容,请前往内页查看详情
站长杂谈
# Tomcat
# Java
ZIy博客网
2年前
0
15
1
UI界面实用的设计技巧
前言 大多设计师很多时候都会疑问,为什么页面做的很好,却总是觉得不好用,或者不好看,那可能忽略了这些小技巧,学会这些技巧会让我们的UI界面更加精致。 呼吸感 这里指的页面之间的呼吸感,比如模块之间的间距,栅格的间距等,在2020年之前很多App在设计侧边栏的时候大多都是在留12px(1倍图)的间距,但是随着现在业务的不断拓展, 产品内可能会出现很多业务模块我们如果继续留12px就会造成没有张力。 随着ios15系统的到来,苹果设计系统也对页面进行了大间距、大留白的定义,因此我们未来设计时可以适当的加大页面的侧边距。 44.png图片 收起标题 一般在页面首屏无任何操作时顶部都会具有标题,当用户进行操作时候,我们可以进行缩小或者隐藏,这样的话在交互过程中增加页面展示空间,并营造出呼吸感。 55.png图片 卡片圆角 我们在改版或者优化页面时,都会卡片的角度,不同的度数能传达出不同的感觉,像直角卡片传递的感知正向为:严谨、沉稳、高级,反向:危险、尖锐,而圆角则传递出柔和、安全、轻量,不同的产品在定义风格时需要慎重考虑,这与后续的设计联动较大。 直角卡片风格适合金融理财、高端制造、珠宝方向等价值上较高的产品 66.png图片 而圆角卡片大多能兼顾很多产品风格,只需要调整圆角的大小,如餐饮、工具、教育等等,例如产品是针对的儿童圆角可以进行加大处理。 77.png图片 多利用配图 人是视觉动物,UI设计中的图像可以分为两种,照片和插图,在设计中我们可以尽可能的使用插图传达信息,插图的视觉效果大于纯文字和图标,并且插图的信息传达效率也大于文字。 88.png图片 动效 动效可以在信息传达上更加直观,并且能够展示出产品页面之间的细节,一个好的动效在情感化上也可以触动人心,在设计的过程中如果可以添加动效,我还是建议使用一些微动画去表现,如加载、空状态等无聊的页面,就可以通过动效方式减少用户枯燥的感知。 02go2rhjwexc12l3ah3yok3230.gif图片
站长杂谈
ZIy博客网
2年前
0
17
3
2023-03-22
Centos 安装 Jenkins教程
准备工作 首先要安装 Java 环境 如果你的系统没有自带git,那么也需要安装一个 yum install git安装教程 第一种方法 直接下载 rpm 安装 各个版本地址 wget https://pkg.jenkins.io/redhat/jenkins-2.156-1.1.noarch.rpm rpm -ivh jenkins-2.156-1.1.noarch.rpm配置 vim /etc/sysconfig/jenkins #监听端口 JENKINS_PORT="8080"配置权限 为了不因为权限出现各种问题,这里直接使用root 修改用户为root vim /etc/sysconfig/jenkins #修改配置 $JENKINS_USER="root"修改目录权限 chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins重启 service jenkins restart遇到问题 在使用命令service jenkins start 启动Jenkins的时候,jenkins报错 jenkins Job for jenkins.service failed because the control process exited with error code.原因分析 这里的原因是因为Jenkins中没有配置jdk 的路径导致的报错,所以既倔方式也很简单,我们在jenkins中配置jdk 的路径就好了。 解决方案 查看 jdk 的安装路径 # 第一种 ps - ef | grep java # 第二种 whereis java然后修改jenkins 的配置文件 vim /etc/init.d/jenkins然后重启 jenkins services jenkins restart
站长杂谈
# Centos
# Jenkins
ZIy博客网
2年前
0
25
2
2023-03-22
JSON vs XML-27149原创文章
JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)都是常用的数据交换格式,它们都具有一些相似的特点,例如可以用于存储和传输数据,易于阅读和解析,可以支持复杂的数据结构等。但是,它们也有一些明显的差异,下面是一些常见的比较: 语法差异:JSON使用键值对表示数据,采用类似JavaScript的语法,而XML使用标签表示数据,采用类似HTML的语法。 数据大小:相同数据量的JSON文件通常比XML文件更小,因为JSON不需要像XML那样使用开始和结束标签,并且可以使用短的缩写形式来表示数据。 解析速度:相同数据量的JSON文件通常比XML文件解析速度更快,因为JSON的结构更简单,数据量更小。 数据类型:JSON支持数字、字符串、布尔值、数组和对象等基本数据类型,而XML只支持字符串类型。 可读性:JSON文件通常比XML文件更易于阅读和编辑,因为它使用了更简洁的语法和更少的标记。 可扩展性:XML是一种可扩展的标记语言,支持定义自定义标记和命名空间,而JSON则没有这种扩展性。 综上所述,JSON和XML都有其各自的优缺点,具体使用哪种格式取决于应用程序的需求和环境。如果需要在JavaScript应用程序中使用,或需要快速的数据交换,那么JSON可能是更好的选择;如果需要支持自定义标记和命名空间,或需要更大的可扩展性,那么XML可能更适合。var person = { "name": "John", "age": 30, "isMarried": false, "hobbies": ["reading", "swimming", "traveling"], "address": { "street": "123 Main St", "city": "New York", "state": "NY", "zip": "10001" } };这个JSON对象描述了一个人的信息,包括姓名、年龄、婚姻状况、爱好和地址等。 如果要将这个JSON对象转换成字符串,可以使用JSON.stringify()方法,示例代码如下: var personStr = JSON.stringify(person); console.log(personStr);这将把person对象转换成JSON字符串,并将其输出到控制台。输出结果应该类似于: {"name":"John","age":30,"isMarried":false,"hobbies":["reading","swimming","traveling"],"address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"}} 这将把personStr字符串解析成JavaScript对象,并将其输出到控制台。输出结果应该与person对象相同。 [了解JSON 对象中的含义-27149原创](https://puhuiju.com/7991.html)
站长杂谈
27149
2年前
0
13
2
2023-03-22
了解JSON 对象中的含义-27149原创
在JavaScript中,JSON(JavaScript Object Notation)对象是一个全局对象,用于处理JSON数据。它提供了两个方法: JSON.parse():将一个JSON字符串解析为JavaScript对象。 JSON.stringify():将一个JavaScript对象序列化为JSON字符串。 下面是这两个方法的使用示例:JSON.parse() var jsonStr = '{"name":"John", "age":30, "city":"New York"}'; var jsonObj = JSON.parse(jsonStr); console.log(jsonObj.name); // 输出 "John" console.log(jsonObj.age); // 输出 30 console.log(jsonObj.city); // 输出 "New York" JSON.stringify()var person = { name: "John", age: 30, city: "New York" }; var jsonStr = JSON.stringify(person); console.log(jsonStr); // 输出 '{"name":"John","age":30,"city":"New York"}' 需要注意的是,JSON对象只能处理符合JSON格式的数据,否则会抛出异常。例如,如果JSON字符串中有一个未定义的属性,或者值类型不符合规定的数据类型,那么JSON.parse()方法将会抛出错误。在使用JSON时,请确保数据格式正确。 [了解JSON 对象中的含义-27149原创](https://puhuiju.com/7991.html)
站长杂谈
27149
2年前
0
16
0
2023-03-22
快速了解JSON 数组原理详解-27149原创文章
在JSON中,数组是一种数据类型,用于存储一组有序的值。JSON数组与JavaScript数组类似,都是用方括号[]表示。下面是一个JSON数组的示例: [ "apple", "banana", "orange" ] 在JavaScript中,可以使用JSON.parse()方法将JSON数组字符串解析为JavaScript数组对象,例如:var jsonStr = '["apple", "banana", "orange"]'; var jsonArray = JSON.parse(jsonStr); console.log(jsonArray[0]); // 输出 "apple" console.log(jsonArray[1]); // 输出 "banana" console.log(jsonArray[2]); // 输出 "orange" 同样地,可以使用JSON.stringify()方法将JavaScript数组对象序列化为JSON数组字符串,例如:var fruits = ["apple", "banana", "orange"]; var jsonStr = JSON.stringify(fruits); console.log(jsonStr); // 输出 '["apple","banana","orange"]' 需要注意的是,JSON数组中的元素必须是值类型(如字符串、数字、布尔值等),或者是另一个JSON数组或JSON对象。例如,下面是一个包含两个JSON对象的JSON数组示例:[ { "name": "John", "age": 30 }, { "name": "Mary", "age": 25 } ] 在JavaScript中,可以通过下标或循环访问JSON数组中的元素。与其他编程语言一样,JSON数组可以包含不同类型的值。下面是一个包含字符串、数字、布尔值和null的JSON数组的示例: [ "apple", 123, true, null ] 在JavaScript中,可以通过下标访问JSON数组中的元素,并且可以使用typeof运算符确定数组元素的数据类型。例如:var jsonArray = ["apple", 123, true, null]; console.log(jsonArray[0]); // 输出 "apple" console.log(jsonArray[1]); // 输出 123 console.log(jsonArray[2]); // 输出 true console.log(jsonArray[3]); // 输出 null console.log(typeof jsonArray[0]); // 输出 "string" console.log(typeof jsonArray[1]); // 输出 "number" console.log(typeof jsonArray[2]); // 输出 "boolean" console.log(typeof jsonArray[3]); // 输出 "object" 需要注意的是,虽然JSON数组可以包含不同类型的值,但建议在实际应用中尽量保持一致,这有助于提高代码的可读性和可维护性。在JavaScript中,可以使用数组的方法对JSON数组进行操作,例如: var jsonArray = ["apple", "banana", "orange"]; jsonArray.push("pear"); // 添加一个新元素 console.log(jsonArray); // 输出 ["apple", "banana", "orange", "pear"]var removedItem = jsonArray.pop(); // 删除最后一个元素,并返回删除的元素 console.log(jsonArray); // 输出 ["apple", "banana", "orange"] console.log(removedItem); // 输出 "pear" 需要注意的是,如果JSON数组中包含JSON对象或JSON数组,那么它们仍然是对象和数组,不能使用数组的方法进行操作。例如,下面是一个包含两个JSON对象的JSON数组的示例:[ { "name": "John", "age": 30 }, { "name": "Mary", "age": 25 } ] 在JavaScript中,需要通过循环或其他方法访问JSON数组中的JSON对象。例如:var jsonArray = [ { "name": "John", "age": 30 }, { "name": "Mary", "age": 25 } ]; console.log(jsonArray[0].name); // 输出 "John" console.log(jsonArray[0].age); // 输出 30 console.log(jsonArray[1].name); // 输出 "Mary" console.log(jsonArray[1].age); // 输出 25 需要注意的是,在实际应用中,建议使用更加强大和灵活的JSON库(如json-bigint和json5等),以满足不同的业务需求。当使用JSON数组进行数据交换时,常常需要遵循一些约定和规范,以确保数据的正确性和可读性。以下是一些常用的规范和建议: 数组元素应该具有相同的数据类型,或者是另一个数组或对象。这有助于提高数据的可读性和可维护性。 数组元素的顺序应该有意义,并且应该与其他数据的顺序相匹配。例如,如果一个JSON数组包含多个人的信息,那么应该按照姓名或年龄等有意义的顺序进行排序。 数组元素的数量应该有意义,并且应该与其他数据的数量相匹配。例如,如果一个JSON数组包含多个人的信息,那么应该确保所有人的信息都包含在数组中。 数组元素的键名应该有意义,并且应该符合命名规范。例如,如果一个JSON数组包含多个人的信息,那么应该使用类似”name”、”age”、”gender”等有意义的键名,而不是使用不规范或含义不明确的键名。 数组元素的值应该正确,并且应该符合数据类型的要求。例如,如果一个JSON数组包含年龄信息,那么应该确保所有的年龄值都是数字类型,并且符合实际情况。 数组元素的嵌套层数应该有限制,并且应该符合实际情况。例如,如果一个JSON数组包含多个人的信息,那么应该尽量避免过多的嵌套,以提高数据的可读性和可维护性。 需要注意的是,以上规范和建议并不是强制性的,可以根据实际情况进行调整。在实际应用中,需要根据具体业务需求和数据特点进行选择和优化。[快速了解JSON 数组原理详解-27149原创文章](https://puhuiju.com/7993.html)
站长杂谈
27149
2年前
0
24
0
2023-03-21
typecho网站侧栏添加小姐姐视频组件
效果展示 3617961356.pn图片 joe主题教程 将以下代码放置在 header.php 文件中末尾的位置。 隐藏内容,请前往内页查看详情 将以下代码放置在joe主题-侧栏设置-自定义PC侧栏模块里. <section data-id="sidebar-meimei" class="mb-4"> <style>#player { margin: 10px auto; max-width: 100%; border-radius: 10px; display: block; } #xjjsp { display: none; } #ckxjj,#gbxjj { width: 100%; height: 40px; border: none; background-color: #f95491; color: #fff; margin-top: 10px; border-radius: 5px; font-size: 18px; cursor: pointer; transition: 0.2s; } #ckxjj:hover,#gbxjj:hover { background-color: #eeb4bf; } .kzsp { width: 100%; display: flex; justify-content: space-between; } .kzsp>button { border: none; height: 40px; padding: 0 30px; font-size: 16px; background-color: #f95491; border-radius: 10px; color: #fff; transition: 0.3s; cursor: pointer; } .kzsp>button:active { background-color: #e25a00; }</style> <button type="button" id="ckxjj">点我看小姐姐视频</button> <div id="xjjsp"> <video id="player" src="" controls alt="小姐姐视频"></video> <div class="kzsp"> <button id="switch">连续: 开</button> <button id="next">下一个</button> </div> <button type="button" id="gbxjj">关闭视频</button> </div> <script type="text/javascript" src="https://www.whbblog.cn/js/video.js"> </script> </section>其他主题教程 将以下代码放置在 header.php 文件中末尾的位置。 隐藏内容,请前往内页查看详情 将以下代码放置在 sidebar.php 文件中合适的位置。 <section data-id="sidebar-meimei" class="mb-4"> <style>#player { margin: 10px auto; max-width: 100%; border-radius: 10px; display: block; } #xjjsp { display: none; } #ckxjj,#gbxjj { width: 100%; height: 40px; border: none; background-color: #f95491; color: #fff; margin-top: 10px; border-radius: 5px; font-size: 18px; cursor: pointer; transition: 0.2s; } #ckxjj:hover,#gbxjj:hover { background-color: #eeb4bf; } .kzsp { width: 100%; display: flex; justify-content: space-between; } .kzsp>button { border: none; height: 40px; padding: 0 30px; font-size: 16px; background-color: #f95491; border-radius: 10px; color: #fff; transition: 0.3s; cursor: pointer; } .kzsp>button:active { background-color: #e25a00; }</style> <button type="button" id="ckxjj">点我看小姐姐视频</button> <div id="xjjsp"> <video id="player" src="" controls alt="小姐姐视频"></video> <div class="kzsp"> <button id="switch">连续: 开</button> <button id="next">下一个</button> </div> <button type="button" id="gbxjj">关闭视频</button> </div> <script type="text/javascript" src="https://www.whbblog.cn/js/video.js"> </script> </section>
站长杂谈
程序源码
系统插件
# Typecho
# joe主题侧栏添加小姐姐视频
# Typecho添加视频组件
# 网站添加小姐姐视频播放
ZIy博客网
2年前
3
43
1
2023-03-21
JSON中的JSON.stringify()使用教程详细解-27149原创文章
JSON.stringify() 是 JavaScript 中一个用于将 JavaScript 对象或数组转换为 JSON 字符串的方法。它接收一个 JavaScript 对象或数组作为参数,返回一个字符串表示该对象的 JSON 形式。 JSON.stringify() 方法可以接受三个参数: value:必需,表示要转换成 JSON 字符串的值。 replacer:可选,一个函数或者一个数组,用于过滤和转换要转换成 JSON 字符串的值。如果是一个函数,则它会被调用来转换 value 中的每个属性和值;如果是一个数组,则它会被用来过滤要转换成 JSON 字符串的属性。 space:可选,用于控制缩进的空格数量(最大为 10)。如果是一个数字,则表示每一级缩进的空格数;如果是一个字符串,则表示每一级缩进所用的字符串。 下面是一个示例: const obj = { name: "John", age: 30, city: "New York" }; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出:{"name":"John","age":30,"city":"New York"}在上面的例子中,我们将一个包含三个属性的 JavaScript 对象转换为一个 JSON 字符串。 我们还可以通过传递一个 replacer 函数来选择要包含在 JSON 字符串中的属性。这个函数将在 JSON.stringify() 方法执行时被调用。例如: const obj = { name: "John", age: 30, city: "New York" }; const jsonString = JSON.stringify(obj, (key, value) => { if (key === "name") { return value.toUpperCase(); } return value; }); console.log(jsonString); // 输出:{"name":"JOHN","age":30,"city":"New York"}在上面的例子中,我们将 replacer 函数传递给 JSON.stringify() 方法。这个函数检查属性名是否为 “name”,如果是,则将属性值转换为大写字母。其他属性将不会被更改。 最后,我们还可以通过传递一个 space 参数来控制缩进。例如: const obj = { name: "John", age: 30, city: "New York" }; const jsonString = JSON.stringify(obj, null, 2); console.log(jsonString); /* 输出: { "name": "John", "age": 30, "city": "New York" } */在上面的例子中,我们将 space 参数设置为 2,因此输出的 JSON 字符串中每个级别的缩进都有两个空格。 当 JSON.stringify() 方法序列化一个 JavaScript 对象时,它将对象中的属性转换为字符串并将它们作为 JSON 对象的键值对。对于对象的属性值,它将根据以下规则进行转换: 如果属性值为一个简单数据类型(如字符串、数字、布尔值或 null),则该值会被转换为相应的 JSON 数据类型。 如果属性值为一个对象或数组,则会递归调用 JSON.stringify() 方法来将其转换为 JSON 字符串。 如果属性值为一个函数、undefined 或 symbol,则在序列化过程中会被忽略。 下面是一个包含数组的对象的示例: const obj = { name: "John", age: 30, hobbies: ["reading", "traveling", "swimming"] }; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出:{"name":"John","age":30,"hobbies":["reading","traveling","swimming"]}当 JSON.stringify() 方法序列化一个 JavaScript 对象时,它将对象中的属性转换为字符串并将它们作为 JSON 对象的键值对。对于对象的属性值,它将根据以下规则进行转换: 如果属性值为一个简单数据类型(如字符串、数字、布尔值或 null),则该值会被转换为相应的 JSON 数据类型。 如果属性值为一个对象或数组,则会递归调用 JSON.stringify() 方法来将其转换为 JSON 字符串。 如果属性值为一个函数、undefined 或 symbol,则在序列化过程中会被忽略。 下面是一个包含数组的对象的示例: javascriptCopy codeconst obj = { name: "John", age: 30, hobbies: ["reading", "traveling", "swimming"] }; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出:{"name":"John","age":30,"hobbies":["reading","traveling","swimming"]}在上面的例子中,我们将一个包含一个数组属性的对象传递给 JSON.stringify() 方法。该方法将数组转换为 JSON 数组,并将其作为对象的一个属性。 当 JSON.stringify() 方法序列化一个对象时,它会遵循以下规则: 如果对象具有 toJSON() 方法,则调用该方法并将其结果用作序列化的值。 如果对象具有可枚举属性,则会对这些属性进行序列化。属性名将用作 JSON 对象的键,属性值将转换为 JSON 字符串并用作键值对的值。 如果对象没有可枚举属性,则序列化结果将为一个空 JSON 对象 {}。 下面是一个具有 toJSON() 方法的示例 const obj = { name: "John", age: 30, toJSON() { return { name: this.name.toUpperCase(), age: this.age }; } }; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出:{"name":"JOHN","age":30}在上面的例子中,我们将一个具有 toJSON() 方法的对象传递给 JSON.stringify() 方法。该方法调用 toJSON() 方法并将其返回值用作序列化的值。 最后,需要注意的是,JSON.stringify() 方法不能序列化循环引用。如果对象包含循环引用,则会引发 TypeError 异常。例如: const obj = { name: "John", age: 30, friends: [] }; obj.friends.push(obj); JSON.stringify(obj); // TypeError: Converting circular structure to JSON在上面的例子中,我们将一个包含自己作为属性值的对象传递给 JSON.stringify() 方法。该方法无法序列化这个对象,因为它包含一个循环引用。因此,它会引发 TypeError 异常。 另外,JSON.stringify() 还有两个可选参数:replacer 和 space。 replacer 参数是一个函数或数组,用于控制序列化过程中要包含哪些属性。如果 replacer 参数是一个函数,则它将被调用一次,传递属性名和属性值作为参数,并应返回一个值,该值将用作序列化结果中的该属性值。如果 replacer 参数是一个数组,则它应包含要序列化的属性名。 下面是一个使用 replacer 函数的示例: const obj = { name: "John", age: 30, hobbies: ["reading", "traveling", "swimming"] }; const jsonString = JSON.stringify(obj, (key, value) => { if (key === "age") { return undefined; // 忽略 age 属性 } return value; }); console.log(jsonString); // 输出:{"name":"John","hobbies":["reading","traveling","swimming"]}在上面的例子中,我们使用 replacer 函数忽略了对象中的 age 属性。 space 参数用于控制序列化结果中的缩进和间距。如果 space 参数是一个整数,则它指定要用于缩进的空格数。如果 space 参数是一个字符串,则它指定要用作缩进的字符串。如果 space 参数为 null,则没有缩进。默认情况下,space 参数为 undefined,表示使用默认缩进。 下面是一个使用 space 参数的示例: const obj = { name: "John", age: 30, hobbies: ["reading", "traveling", "swimming"] }; const jsonString = JSON.stringify(obj, null, 2); console.log(jsonString); // 输出: // { // "name": "John", // "age": 30, // "hobbies": [ // "reading", // "traveling", // "swimming" // ] // }在上面的例子中,我们使用 space 参数将序列化结果格式化为带有缩进的多行字符串。 如果你需要将 JavaScript 对象转换成 JSON 字符串,JSON.stringify() 是一个非常有用的方法。但是,需要注意的是,如果你的对象包含循环引用,JSON.stringify() 将无法序列化该对象,而会抛出一个错误。 下面是一个包含循环引用的示例: const obj1 = { name: "John", age: 30 }; const obj2 = { name: "Mary", age: 25, spouse: obj1 }; obj1.spouse = obj2; const jsonString = JSON.stringify(obj1); // 抛出错误在上面的例子中,obj1 和 obj2 彼此引用,形成了一个循环引用。当我们尝试将 obj1 转换为 JSON 字符串时,JSON.stringify() 将无法完成该操作,并抛出一个错误。 如果你的对象可能包含循环引用,你可以使用一个第三方库,如 circular-json 或 flatted,来解决该问题。这些库提供了一种方法来序列化包含循环引用的对象。 在使用 JSON.stringify() 时,还需要注意序列化的结果是否包含 JavaScript 对象中的所有属性。例如,如果对象中有一个属性的值为 undefined,该属性将被序列化为 null。如果对象中包含一个函数,该函数将被忽略,并且在序列化结果中不会包含该函数。 总之,JSON.stringify() 是将 JavaScript 对象转换为 JSON 字符串的常用方法。它支持多种选项,可用于控制序列化的方式和结果。但是需要注意,如果对象包含循环引用,则 JSON.stringify() 将无法序列化该对象,而会抛出一个错误。 另外,需要注意的是,JSON.stringify() 不支持序列化 Date、RegExp、Error 对象和 undefined 值。在序列化这些类型的值时,JSON.stringify() 会将它们序列化为 null。 下面是一个包含 Date、RegExp 和 undefined 的示例: const obj = { date: new Date(), regExp: /[a-z]+/gi, undefinedValue: undefined }; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出:{"date":null,"regExp":{},"undefinedValue":null}在上面的例子中,我们将一个包含 Date、RegExp 和 undefined 的对象转换为 JSON 字符串。由于这些类型的值无法被序列化,JSON.stringify() 将它们转换为 null。 最后,需要注意的是,JSON.stringify() 可能会在某些情况下导致性能问题。特别是在处理大型对象或嵌套层次较深的对象时,序列化可能会非常耗时。如果你需要处理大型或复杂的数据结构,请考虑使用流式 JSON 库或其他序列化库。 除了上面提到的一些限制和注意事项之外,JSON.stringify() 还有一些非常有用的选项,可用于控制序列化的方式和结果。 下面是一些常用的选项: replacer:一个函数或数组,用于控制序列化过程中哪些属性应该被序列化。如果传递一个函数,则该函数将接收对象的键和值作为参数,并返回一个序列化后的值。如果传递一个数组,则数组中指定的属性将被序列化。 space:一个字符串或数字,用于控制序列化结果中的缩进和换行。如果传递一个数字,则表示缩进的空格数;如果传递一个字符串,则表示缩进的字符。默认情况下,不使用缩进或换行符。 toJSON:一个函数,用于在对象序列化时自定义转换过程。如果对象具有 toJSON() 方法,则该方法将被调用,并使用其返回值进行序列化。如果没有 toJSON() 方法,则将使用对象的默认序列化方式。 下面是一个使用 replacer 和 space 选项的示例: const obj = { name: "John", age: 30, city: "New York", toJSON: function() { return { name: this.name, age: this.age }; } }; const jsonString = JSON.stringify(obj, ["name", "age"], 2); console.log(jsonString); // 输出: // { // "name": "John", // "age": 30 // }在上面的例子中,我们使用 replacer 选项指定只序列化 name 和 age 属性,并使用 space 选项指定两个空格作为缩进字符。我们还在对象中定义了一个 toJSON() 方法,该方法将对象转换为仅包含 name 和 age 属性的新对象。最终,JSON.stringify() 将返回一个格式化的 JSON 字符串,仅包含 name 和 age 属性。 总之,JSON.stringify() 是一个非常有用的方法,可用于将 JavaScript 对象转换为 JSON 字符串。 原文地址: JSON中的JSON.stringify()使用教程详细解-27149原创文章
站长杂谈
# Json
27149
2年前
0
32
2
使用青苹果影视系统3分钟搭建一个24小时免更新的电影网站
使用青苹果影视系统3分钟搭建一个24小时免更新的电影网站 何为24小时免更新?这里使用到的免更新技术就是青苹果影视系统的核心技术直接对接影视资源站API接口,一次搭建好后就可以免维护,时实同步资源站更新的网站数据。 第一步:通过 彩虹云 购买一个主机服务器,在购买一个域名,主机服务器PHP要5.4+ K6SP`ZWIK%3_XIMO4P6IV{5.png图片 第二步:将刚才购买的域名解析到您刚买的主机(别忘记了还要去虚拟主机面板绑定您解析的域名,解析域名与绑定域名是两个操作) 1b13875f593447ee88a665a7c0422322.png图片 第三步:下载青苹果影视系统最新源码 点我下载 ,到您的电脑桌面(C盘、D盘随便您放,只要您找得到),下载后通过FTP软件将解压后的所有代码上传到您刚才购买的或者免费申请的虚拟主机根目录内。 b09eaacec32c184962949b8d97f62768.png图片 第四步:通过搜索引擎搜索电影资源站,并找到API接口地址,这里我们以(api.php/provide/vod)为例,找到资源站的API地址后用浏览器打开看一下源码API接口是什么格式? 3a3a169bb5a93e8b49c1e1666635f6f4.png图片 a9d1c74799f5044a0d3661b4f16ea521.png图片 第五步:进入刚才安装好的青苹果影视系统后台,找到(影视 > 接口配置)选项,将API网址填入表单内,接口类型就是刚才我们查看确定的(一般资源站都是json或xml,如果不能确定,简单点的方法就是先用json测试,不成功再用xml测试),这里以填好JSON为例,填写后一定要点下方的提交按钮,提交保存后才能点右上方的一键分析功能。 bd10c1047a1f959c74a603dc974b1ef7.png图片 第六步:点击分析按钮后,系统会弹出资源站的分类列表,我们需要做的就是选择需要同步的分类,当然您也可以全部选择,我们这里以选择三个分类为例。 e07c2bd0b3bf47ac9af0321c3205c6e8.png图片 第七步:如果选择的分类过多,前台导航栏挤在了一起,那么此时需要在(系统 > 分类管理),重新整理一下栏目分类的结构,调整为二级分类即可,我们这里只有三个分类,所以不需要调整。 3976604c89eeddd77c4ed53e153bd6c1.png图片 第八步:随便选择一部影片测试,一切刚刚好,免费高清的大片顷刻展现在眼前,更多的功能管理,请小伙伴们自行体验,有好的建议与BUG也欢迎一起讨论,最后啰嗦一下,使用此方法搭建的网站请勿用作商业用途,仅作学习交流使用。 ef7faf4cf39c9f10bd1df52f030841a4.png图片
站长杂谈
# 青苹果影视搭建教程
# 影视系统搭建教程
ZIy博客网
2年前
0
226
1
2023-02-12
宝塔计划任务自动推送网站链接到百度收录接口
1.在站点根目录新建一个 PHP 文件,例如:baidu.php 并复制下方代码添加带 baidu.php 文件中。 注意:两处需要修改的博主都已经在末尾添加了注释,记得修改为自己的,然后保存。 隐藏内容,请前往内页查看详情 2.登陆你的宝塔面板,按照下图进行操作就完事. 6592f4bf0f15254fd037bb2d3851654108d140784a47961792b53ee2ee73df2d.0.jpg图片
站长杂谈
# 宝塔
# 计划任务
# 百度收录
ZIy博客网
2年前
4
71
5
2023-01-23
域名过白解除拦截详细教程
拦截页面 IMG_20230109_012959.jpg图片 教程: 本教程教你如何域名过白解除拦截在 QQ / 微信 / 浏览器打开下面几个认证网站去认证 / 申诉(要注册账号就注册下)然后填写相关信息,备案号之类的 安全联盟: 点击申诉 微信地址: 点击申诉 腾讯安全: 点击申诉 方法: 99% 通过,个人方法: 1、去腾讯安全管家查询网站是否是一个月前被管家检测有违规内容的 2、 如果是一个月前拦截的,那就可以解除拦截。随便创建一个简单的 index.html 主页面,最好就只有几个字 3、案号不用填,申诉内容就填: 网站被入侵,危险页面已删除,请求解除拦截或者 你好客服!本站:(你的域名)是刚从腾讯云平台买下来的域名,不存在交易诈骗情色等违规内容,希望可以解除本站拦截风险,让用户可以直接访问,爱腾讯爱生活!4、 申诉类型选择:非经营类网站;邮箱填自己常用的邮箱,提交申请后半个小时左右就能收到他们审核的邮件,(如果没有收到邮件,就再申诉一边)然后坐等 24 小时,24小时内 95% 都能审核成功! 5、 申诉成功之后,域名就可以解析到你想要的网站了。 Screenshot_2023-01-09-01-21-56-62_9d26c6446fd7bb8e41d99b6262b17def.jpg图片
站长杂谈
# 域名拦截申诉
# 域名过白
ZIy博客网
2年前
0
129
4
1
2
3
下一页