自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

前端学习博客

CSS,JS,Vue,Nodejs,webpack,CS,算法

  • 博客(391)
  • 资源 (6)
  • 收藏
  • 关注

原创 真正理解浏览器渲染更新流程

浏览器渲染更新原理

2023-10-01 19:43:08 1106

原创 从 axios 源码学习设计模式

axios 的精髓在于他已经迭代了40个版本,npm 的 version 规则是首个版本号变化表示 api 不向下兼容,现在 axios 的主版本号已经从 0.x 迭代到了 1.x, 按理说应该和 vue 一样,是有 重大变更的。 而 axios 增加了这么多功能。却始终保持没有 api 明显变化。主要原因是 axios 内部使用了多种设计模式和架构模式。比如 适配器,桥接,代理,抽象工厂,微内核设计。

2023-07-27 01:24:28 877

原创 【前端精进之路】JS篇:第10期 深入原型与原型链

这里是小飞侠Pan🥳,立志成为一名优秀的前端程序媛!!!本篇文章收录于我的专栏:前端精进之路同时收录于我的github前端笔记仓库中,持续更新中,欢迎star~👉https://github.com/mengqiuleo/myNote这里并不是介绍原型链的基础知识,而是记录一些自己在看文章过程中以前没有注意到的点。constructor其实值存在于构造函数的原型身上,实例对象没有constructor。那为什么我们可以打印出实例对象的constructor属性是它的构造函数呢?通过一个例子来说明:当获..

2022-07-11 08:00:41 699 28

原创 【年度总结】2021 邂逅前端,入坑算法

纵有千古,横有八荒,前途似海,来日方长。高考之后,一个普通大学生的大一生活总结。

2022-06-06 13:52:10 976 17

原创 JS数组解构赋值变量存在依赖关系

题目随便起的,在刷力扣 41.缺失的第一个正数 这个题的时候,出现了解构赋值的问题,对于按理说都是行的通的,和位置没有关系,本质上都是进行交换可是当我在题目中使用时是可以通过测试用例的,使用会超时。

2023-07-10 01:22:21 488

原创 vitest测试 element-plus二次封装组件时css文件报错

报错内容: Unknown file extension “.css” for D:\demo\omniButton\node_modules.pnpm\registry.npmmirror.com+element-plus@2.2.9_vue@3.2.37\node_modules\element-plus\theme-chalk\el-button.css。重启生效,vitest 会 hmr,如果未生效,请重启。

2023-06-22 23:58:48 1714

原创 包管理工具详解npm、yarn、cnpm、npx、pnpm

硬链接(hard link):硬链接(英语:hard link)是电脑文件系统中的多个文件平等地共享同一个文件存储单元;删除一个文件名字后,还可以用其它名字继续访问该文件;符号链接(软链接soft link、Symbolic link):符号链接(软链接、Symbolic link)是一类特殊的文件;其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用;

2022-10-22 13:37:41 1803 1

原创 JavaScript模块化规范

每个文件就是一个模块,有自己的作用域。每个模块内部,module变量代表当前模块,是一个对象,它的exports属性(即module.exports)是对外的接口。module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。为了方便,Node为每个模块提供一个exports变量,指向module.exports。require命令用于加载模块文件。

2022-10-19 17:49:34 1430

原创 前端代码规范实践指南(ESLint,Prettier,Husky...)

如果想自己定义提交规范也是可以的,首先要下载自定义规范约束的包替换第三方规范。变更extends: ['cz'], //采用 cz 自定义的提交规范 -> .cz-config.js};在项目根目录创建,可以再这个文件里自定义规范(下面这是我自定义的配置)新增value : '✨新增' , name : '新增: 新的内容' } , {value : '🐛修复' , name : '修复: 修复一个Bug' } , {

2022-10-17 21:19:12 2268

原创 Fetch入门

Body.blob()读取 Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 Blob 格式(二进制格式,包含二进制数据信息)的 Promise 对象。Body.text()读取 Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 USVString 格式(文本格式)的 Promise 对象。

2022-10-17 12:33:12 7556

原创 初探WebSocket

websocket是HTML5的一个新协议, 是一种在单个 TCP 连接上进行全双工通信的协议,它允许服务端向客户端传递信息,实现浏览器和客户端双工通信WebSocket 通常被应用在实时性要求较高的场景,例如赛事数据、股票证券、网页聊天和在线绘图等。举例:因为 HTTP 协议有一个缺陷:通信只能由客户端发起。举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。

2022-10-16 22:27:31 1340

原创 TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?

HTTP 的 Keep-Alive 也叫 HTTP 长连接,该功能是由「应用程序」实现的,可以使得用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,减少了 HTTP 短连接带来的多次 TCP 连接建立和释放的开销。TCP 的 Keepalive 也叫 TCP 保活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。别搞混了!

2022-10-16 21:10:04 2086

原创 【JavaScript设计模式】命令模式

假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的:当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心是哪些厨师帮他炒菜。我们餐厅还可以满足客人需要的定时服务,比如客人可能当前正在回家的路上,要求1个小时后才开始炒他的菜,只要订单还在,厨师就不会忘记。客人也可以很方便地打电话来撤销订单。另外如果有太多的客人点餐,厨房可以按照订单的顺序排队炒菜。这些记录着订餐信息的清单,便是命令模式中的命令对象。

2022-10-15 22:10:33 824

原创 【JavaScript设计模式】观察者模式

这篇文章并不是笔者原创,而是在学习设计模式中对比较好的文章的提炼与总结,作为笔记便于自己复习。观察者模式有一个“别名”,叫(之所以别名加了引号,是因为两者之间存在着细微的差异),这个别名非常形象地诠释了观察者模式里两个核心的角色要素——“发布者”与“订阅者”。周一刚上班,前端开发李雷就被产品经理韩梅梅拉进了一个钉钉群——“员工管理系统需求第99次变更群”。这个群里不仅有李雷,还有后端开发 A,测试同学 B。三位技术同学看到这简单直白的群名便立刻做好了接受变更的准备、打算撸起袖子开始干了。此时韩梅梅却说:“别

2022-10-15 21:37:14 2101

原创 【JavaScript设计模式】工厂模式

JavaScript设计模式-工厂模式

2022-10-15 21:32:30 1021

原创 【JavaScript设计模式】适配器模式

装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能。适配器模式不需要改变已有的接口,就能够使它们协同作用。适配器模式的目的是为了解决对象之间的接口不兼容的问题,通过适配器模式可以不更改源代码的情况下,让两个原本不兼容的对象在调用时正常工作。适配器模式的作用很像一个转接口. 本来iphone的充电器是不能直接插在电脑机箱上的, 而通过一个usb转接口就可以了.外观模式的作用倒是和适配器比较相似,有人把外观模式看成一组对象的适配器,但外观模式最显著的特点是定义了一个新的接口。

2022-10-15 21:26:50 843

原创 【JavaScript设计模式】装饰器模式

装饰者模式可以动态地给某个对象添加一些额外的职责,而不会影响从这个类中派生的其他对象。这种给对象动态地增加职责的方式称为。装饰者模式能够在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责。跟继承相比,装饰者是一种更轻便灵活的做法,这是一种“即用即付”的方式,比如天冷了就多穿一件外套,需要飞行时就在头上插一支竹蜻蜓,遇到一堆食尸鬼时就点开 AOE(范围攻击)技能。该例中,我们写了一个Decorator装饰器类,它重写了实例对象的create方法,给其方法新增了一个,因此最后为其输出结果进行了装饰。

2022-10-15 21:25:50 1885

原创 vue2响应式原理

而对于v-model,在我们编译模板时,会针对v-model进行解析:如果发现当前节点有v-model(eg: v-model=‘str’),那就会监听input事件,当str的值发生变化时,会将用户输入的值赋值到str属性上,此时相当于属性值发生变化,observer就会检测到值的变化,那就会通知到dep,然后dep通知到watcher.每一个属性有一个dep属性,里面存放了这个属性的watcher,可能一个属性的dep中存放了很多个watcher,因为这个属性在很多地方都用到了。

2022-10-15 20:15:27 1175 1

原创 彻底搞懂v-model

而对于v-model,在我们编译模板时,会针对v-model进行解析:如果发现当前节点有v-model(eg: v-model=‘str’),那就会监听input事件,当str的值发生变化时,会将用户输入的值赋值到str属性上,此时相当于属性值发生变化,observer就会检测到值的变化,那就会通知到dep,然后dep通知到watcher.我们需要遵循单项数据流的原则,对于从父组件中传过来的prop属性不做修改,而是使用一个自定义属性承接prop的属性,并对我们的自定义属性进行修改。在这里不会详细解释。

2022-10-15 19:56:37 1523 1

原创 【vue3】手写简单vue3响应式原理

vue3响应式的核心是使用proxy👉核心是使用核心是使用上面都出现了函数:effect()函数默认上来会执行一次,然后当属性值发生变化时,effect函数又会执行。

2022-10-13 21:08:13 1602 3

原创 【Vue源码初探】五.diff算法原理

如果新节点的尾指针下一个没有节点,那就证明是头比头,继续在后面插入。

2022-10-11 12:19:29 2066 2

原创 【Vue源码初探】四.渲染更新原理

到现在,我们已经实现了dep和watcher的收集,以及值改变时的更新操作。梳理:首先,我们会渲染当前组件,那么就会创建一个watcher,此时就会给Dep增加一个静态属性target,即。

2022-10-11 12:15:19 1132

原创 【Vue源码初探】三.初次渲染视图

现在,我们已经实现了render函数,将数据渲染到页面上的操作已经进行了一半了(我们实现了将数据转成ast,再转成render函数),接下来就是将render函数进行调用,挂载到页面上。下面我们就开始实现这个**mountComponent(vm, el)**函数。

2022-10-11 12:13:35 1048

原创 【Vue源码初探】二.模板编译

在上一节中,我们已经实现了初始化数据,并且对数据进行劫持,现在需要将数据渲染到页面上,即实现模板编译。首先,我们在测试的index.html中增加一些模板。background:yellow"

2022-10-11 12:12:31 977

原创 【Vue源码初探】一.Vue响应式原理

当我们对进行属性是对象时进行劫持并且遍历各个属性值时,走到defineReactive函数(这个函数是对对象的每一项进行监测的函数),进行set设置时,如果出现设置的值是一个新的对象,又会走observe函数,然后又会进到类的实例中,在类的实例中,又会对对象进行劫持,然后就会产生死循环。我们当时是将data从$options中取出,然后赋给了一个属性_data上,那么也就是说,我们的访问data是通过。)时,我们可以监测到。上面说到,我们对数据进行初始化,并且,实现了通过vm.data来访问。

2022-10-11 12:11:02 1182

原创 Git常见命令

简单来说就是:过去git merge允许将两个没有共同基础(服务器的和本地的就是没有共同基础,也就是没有共同祖先)的分支进行合并,这导致了一个后果:新创建的项目可能被一个毫不怀疑的维护者合并了很多没有必要的历史,到一个已经存在的项目中,目前这个命令已经被纠正,但是我们依然可以通过-- allow-unrelated-histories选项来逃逸这个限制,来合并两个独立的项目;Git 的默认分支名字是 master,在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支;

2022-10-09 18:24:48 1366

原创 【JavaScript设计模式】单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点相当于我们在应用程序中共享一个全局实例。

2022-10-06 15:46:22 563

原创 【解决ESlint的bug】return old(m, filename); Error [ERR_REQUIRE_ESM]: require() of ES Module

将根目录下的 `commitlint.config.js`文件后缀名改为 cjs,即 commitlint.config.cjs 文件。

2022-09-25 18:18:20 2089

原创 前端性能优化实践

当 Webpack 有多个 JavaScript 文件需要输出和压缩时,原本会使用 UglifyJS 去一个个挨着压缩再输出, 但是 ParallelUglifyPlugin 则会开启多个子进程,把对多个文件的压缩工作分配给多个子进程去完成,每个子进程其实还是通过 UglifyJS 去压缩代码,但是变成了并行执行。具体做法是把资源地址 URL 的修改与文件内容关联起来,也就是说,只有文件内容变化,才会导致相应 URL 的变更,从而实现文件级别的精确缓存控制。这样做的好处是每次更改我本地代码的文件的时候,

2022-09-24 11:50:56 485

原创 【前端】常见的图片格式及使用场景

格式优点缺点适用场景gif文件小,支持动画、透明,无兼容性问题只支持256种颜色色彩简单的logo、icon、动图jpg色彩丰富,文件小有损压缩,反复保存图片质量下降明显色彩丰富的图片/渐变图像png无损压缩,支持透明,简单图片尺寸小不支持动画,色彩丰富的图片尺寸大logo/icon/透明图webp文件小,支持有损和无损压缩,支持动画、透明浏览器兼容性不好支持webp格式的app和webview前端图片格式如何选择。

2022-09-24 10:20:30 1558 1

原创 前端性能优化指标 + 检测工具

尽快完成页面内容渲染尽快开始渲染(优化 FCP)尽快完成主要内容渲染(优化 LCP)尽快完成所有内容渲染(优化 Speed Index)减少长任务尽早执行长任务(优化 TTI)把长任务拆成小任务(优化 TBT)保证页面布局稳定(优化 CLS)

2022-09-24 08:38:44 798

原创 Chrome浏览器断点调试技巧

某些情况下,我们必须知道当前代码的执行顺序,以及每一步变量的执行状态来确定代码是否正确按照我们意愿执行。此时使用断点调试是非常明智的选择。

2022-09-23 20:19:47 16602 2

原创 跨域及解决

跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全措施。同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。–来源 MDN。

2022-09-23 16:02:02 1559

原创 【webpack】常见优化手段

本文并非原创,而是笔者最近在研究webpack方面的知识,看了一些比较好的文章,对此进行总结。

2022-09-23 10:21:55 457 1

原创 【webpack】三种hash值

Hash:和整个项目的构建相关,只要项目文件有修改,整个项目构建的 hash 值就会更改Chunkhash:和 Webpack 打包的 chunk 有关,不同的 entry 会生出不同的 chunkhash:根据文件内容来定义 hash,文件内容不变,则 contenthash 不变。

2022-09-22 20:43:15 1902

原创 webpack 编译流程

找出入口文件后,从入口文件出发,调用所有配置的 Loader 对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理,再根据入口和模块之间的依赖关系,组装成一个个包含多个模块的 Chunk。在以上过程中,Webpack 会在特定的时间点广播出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件可以调用 Webpack 提供的 API 改变 Webpack 的运行结果。可以读取到当前的模块资源,编译生成资源,变化的文件,以及依赖跟踪等状态信息。

2022-09-22 17:57:39 1043

原创 了解一下Babel

顺利生成代码,此时生成的代码并没有被编译,因为 Babel 将原来集成一体的各种编译功能分离出去,独立成插件,要编译文件需要安装对应的插件或者预设,我们经常看见的什么 @babel/preset-stage-0、@babel/preset-stage-1,@babel/preset-env 等就是干这些活的。虽然可以采用默认配置,但如果不需要照顾所有的浏览器,还是建议你配置目标浏览器和环境,这样可以保证编译后的代码体积足够小,因为在有的版本浏览器中,新语法本身就能执行,不需要编译。

2022-09-22 09:38:21 388 1

原创 AST抽象语法树

webpack和Lint等很多的工具和库的核心都是通过抽象语法树这个概念来实现对代码的检查、分析等操作的代码语法的检查、代码风格的检查、代码的格式化、代码的高亮、代码错误提示、代码自动补全等等如 JSLint、JSHint 对代码错误或风格的检查,发现一些潜在的错误IDE 的错误提示、格式化、高亮、自动补全等等代码混淆压缩UglifyJS2 等优化变更代码,改变代码结构使达到想要的结构代码打包工具 webpack、rollup 等等。

2022-09-21 23:20:28 2291

原创 Docker+github actions部署前端项目

在进行本篇实践前,建议先了解一下:使用linux+Nginx部署,使用docker部署,使用github actions部署.【vue项目部署】Linux+Nginx实现项目部署及跨域【github actions】部署前端项目【Docker】docker+Nginx部署前端项目在 vue 项目中增加 Dockerfile 文件 和 nginx.conf 配置文件部署时,首先将 dist + Dockerfile + nginx.conf 打成镜像 (docker build 相关明令)

2022-09-21 10:30:48 1528

原创 【Docker】docker+Nginx部署前端项目

命令的意思是将 Nginx 目录下的 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。下面的配置直接照抄就好,特别注意,监听的端口号并不需要动,这里的80端口指的是容器的端口,最后我们会将容器的端口映射到我们宿主服务器的端口,比如映射到8888端口。这里镜像中的目录我们不要动,但需要保证我们项目的打包目录是。后面的test是我们构建的镜像的名称,我们可以在云服务器中的安全组进行设置。

2022-09-21 10:24:24 6195 1

提供一套基于Spring Boot-Shiro-Vue的权限管理思路.前后端都加以控制,做到按钮/接口级别的权限 (当前新版本已

提供一套基于Spring Boot-Shiro-Vue的权限管理思路.前后端都加以控制,做到按钮/接口级别的权限。(当前新版本已移除shiro依赖,简化了配置) 核心 每个登录用户拥有各自的N条权限,比如 文章:查看/编辑/发布/删除 后端 基于 RBAC新解 . 通常我们的权限设计都是 用户--角色--权限 ,其中角色是我们写代码的人没法控制的,它可以有多条权限,每个用户又可以设计为拥有多个角色.因此如果从角色着手进行权限验证,系统都必须根据用户的配置动起来,非常复杂. 所以我们后台设计的关键点就在于: 后台接口只验证权限,不看角色. 角色的作用其实只是用来管理分配权限的,真正的验证只验证权限 ,而不去管你是否是那种角色.体现在代码上就是接口上注解为 @RequiresPermissions("article:add")

2024-06-25

UU 加速插件 docker 版本(docker)

UU 加速插件 docker 版本(docker) uuplugin docker 版本 UU 加速提供了 OpenWrt 版本的插件,见 https://router.uu.163.com/app/baike/public/5f963c9304c215e129ca40e8.html。 该项目基于 OpenWrt 的 openwrtorg/rootfs 版本构完成了开启 UU 需要的配置,同时移除了一些无关服务,如 DHCP、SSH、Web luci。 你可以使用该镜像完成旁路由模式下 UU 加速服务快速部署。 因为不同的 OpenWrt 版本对路由规则配置不同(或者别的什么),导致检测不到游戏主机连入。主要表现为主机在 UU app 中出现后立即消失。 使用该 docker 镜像应当可以有效解决该问题。 环境准备 打开 IP 混杂模式 因为我没有多网口设备,如何在多网口设备下为容器提供独立 IP 你需要自行查询 Docker 相关文档。 如果你的物理设备为单网口,需要开启 IP 混杂模式,为容器提供独立 IP。 如下命令为开启方式: ip link set eth0 pro

2024-06-25

学生成绩管理系统 大一的C语言大作业(c语言)

学生成绩管理系统 大一的C语言大作业(c语言) 该程序包括以下功能: 1.录入每个学生的学号、姓名和各科考试成绩 2.计算每门课程的总分和平均分 3.计算每个学生的总分和平均分 4.按每个学生的总分由高到低排出名次表 5.按每个学生的总分由低到高排出名次表 6.按学号由小到大排出成绩表 7.按姓名的字典顺序排出成绩表 8.按学号查询学生排名及其考试成绩 9.按姓名查询学生排名及其考试成绩 10.按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比 11.输出每个学生的学号、姓名、各科考试成绩,以及每门课程的总分和平均分 12.将每个学生的纪录信息写入文件 13.从文件中读出每个学生的纪录信息并显示 注: 本程序是用单项链表来写,由于是大一上所写,代码难免会有些冗杂,敬请见谅

2024-06-25

已对接了 RT-Thread Sensor 框架的 DS18B20 驱动程序

已对接了 RT-Thread Sensor 框架的 DS18B20 驱动程序 DS18B20 数字温度传感器 软件包简介 DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。 该软件包已对接了 RT-Thread Sensor 框架的 DS18B20 驱动程序。

2024-06-25

51单片机/MSP430单片机源代码(c++)

51单片机/MSP430单片机源代码(c++) 单片机程序(51/MSP430) 单片机学习-练习代码 C51/ (51单片机程序) msp430/ (MSP430单片机程序) 如果编码有问题,打开有乱码, 可以使用iconv指令. $ iconv -f gbk -t utf-8 hello.c > hello.utf-8.c

2024-06-25

A complete and graceful API for Wechat. 微信个人号接口、微信机器人及命令行微信,三十行即

A complete and graceful API for Wechat. 微信个人号接口、微信机器人及命令行微信,三十行即可自定义个人号机器人。 安装 可以通过本命令安装itchat: pip install itchat 简单入门实例 有了itchat,如果你想要给文件传输助手发一条信息,只需要这样: import itchat itchat.auto_login() itchat.send('Hello, filehelper', toUserName='filehelper') 如果你想要回复发给自己的文本消息,只需要这样: import itchat @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return msg.text itchat.auto_login() itchat.run() 一些进阶应用可以在下面的开源机器人的源码和进阶应用中看到,或者你也可以阅览文档。 试一试 这是一个基于这一项目的开源小机器人,百闻不如一见,有兴趣可以尝试一下。 由于好友数量实在

2024-06-25

基于nodejs 的博客园爬虫项目(javascript)

基于nodejs 的博客园爬虫项目(javascript) 爬虫的流程,要完成一个爬虫,主要的步骤分为: 抓取 爬虫爬虫,最重要的步骤就是如何把想要的页面抓取回来。并且能兼顾时间效率,能够并发的同时爬取多个页面。 同时,要获取目标内容,需要我们分析页面结构,因为 ajax 的盛行,许多页面内容并非是一个url就能请求的的回来的,通常一个页面的内容是经过多次请求异步生成的。所以这就要求我们能够利用抓包工具分析页面结构。 如果深入做下去,你会发现要面对不同的网页要求,比如有认证的,不同文件格式、编码处理,各种奇怪的url合规化处理、重复抓取问题、cookies 跟随问题、多线程多进程抓取、多节点抓取、抓取调度、资源压缩等一系列问题。 所以第一步就是拉网页回来,慢慢你会发现各种问题待你优化。 存储 当把页面内容抓回来后,一般不会直接分析,而是用一定策略存下来,个人觉得更好的架构应该是把分析和抓取分离,更加松散,每个环节出了问题能够隔离另外一个环节可能出现的问题,好排查也好更新发布。 那么存文件系统、SQL or NOSQL 数据库、内存数据库,如何去存就是这个环节的重点。 分析

2024-06-25

bcloud 的安装包-rpm(shell)

请在下载到安装包之后, 先检验一下包的完整性. 有可能会下载的不完整, 最近至少 有两位朋友遇到了这类问题. 可以使用 $ md5sum bcloud-x.x.x 来计算下载的安装 包的MD5值, 与 checksum.txt 里面的文件MD5值比较, 如果匹配就 没有问题. #Debian 安装指南 Debian及基于Debian的发行版(比如ubuntu, linuxmint)请直接下载 bcloud-x.x.x.deb这个包, 然后双击deb包就能安装了; 有些用户并没有安装apt包管理器的GUI界面, 也可以在终端里面安装: $ sudo dpkg -i bcloud-x.x.x.deb $ sudo apt-get -f install #Debian 7 安装指南 Debian 7里面有一个软件包需要手动升级到较新版, # pip3 install --upgrade keyring #Ubuntu 12.04 安装指南 由于ubuntu12.04里面的包非常旧, 在把bcloud的deb包安装好之后, 并不能直接使用, 会出现类似于issue65中的错误, 需要手

2024-06-25

粒子群算法优化支持向量机(python)

粒子群算法优化支持向量机(python) pso-svm 粒子群算法优化支持向量机 1 使用方法 python pso_svm.py 2 目录结构 |-- .idea | |-- encodings.xml | |-- misc.xml | |-- modules.xml | |-- pso-svm-master.iml | `-- workspace.xml |-- LICENSE |-- README.md # 说明文档 |-- config # 数据、SVM及PSO算法参数配置 | |-- __pycache__ | | `-- config.cpython-36.pyc | `-- config.py |-- data # 数据存放 | |-- Statlog_heart_Data.csv | `-- heart.dat |-- pso_svm.py # pso_svm算法实现 |-- test.py # svm功能测试 `-- uti

2024-06-25

用matlab,matplotlib和pandas画箱形图

用matlab,matplotlib和pandas画箱形图 箱形图 一、四分位数:Q1(下四分位数)、Q2(中位数)、Q3(上四分位数),处于所有数字长度的1/4、1/2、3/4处的值。 计算四分位数: q1_loc = math.ceil(len(dataf[i]) * 0.25 + 1) q1 = dataf[i][q1_loc] # mid = np.median(dataf[i]) q3_loc = math.floor(len(dataf[i]) * 0.75 + 1) q3 = dataf[i][q3_loc] low_whisker = q1 - 1.5 * (q3 - q1) up_whisker = q3 + 1.5 * (q3 - q1) 或dataframe类型的数据,直接用data_ser.quantile(0.25)可以得到下四分位数。 二、上下限: 箱形图两端的两条线,在这两条线的范围之外的点是异常点。 计算方法: low_whisker = q1 - 1.5 * (q3 - q1)

2024-06-25

ROS通信代码实现及Gazebo仿真(Python+cmake)

ROS通信代码实现及Gazebo仿真(Python+cmake) ROS ROS communication codes and Gazebo simulation 运行环境:Ubuntu16.04 + ROS Kinetic + Gazebo8.0 运行步骤: Stanley算法: -> smartcar_description/smartcar_gazebo.launch -> waypoint_loader/waypoint_loader.launch -> waypoint_updater/waypoint_updater.launch -> stanley_persuit/stanley_persuit.launch Pure_persuit算法: -> smartcar_description/smartcar_gazebo.launch -> waypoint_loader/waypoint_loader.launch -> waypoint_updater/waypoint_updater.launch -> pure_persuit/pure_persuit.

2024-06-25

使用Docker 配置 LNMP 环境,使用compose一键部署

使用Docker 配置 LNMP 环境,使用compose一键部署 DNMP(Docker + Nginx + MySQL + PHP)是一款全功能的LNMP环境一键安装程序,可多版本 快速使用 本地安装 git Docker docker-compose 2.0.0+ clone 项目 git clone https://github.com/xiaoyu98628/dnmp.git # 或者 git clone https://gitee.com/xiaoyucc521/dnmp.git 拷贝并命名配置文件,启动 (注意:需要设置部分挂载目录的权限) # 进入项目目录 cd dnmp # 复制并改名 .env 配置文件 cp sample.env .env # 复制并改名 compose.yml 配置文件 cp compose.sample.yml compose.yml # 复制并改名 vhost文件 cp servers/panel/vhost/nginx/nginx1.21/localhost.conf.sample servers/panel/vhost/nginx/ng

2024-06-25

研究生数学建模比赛-航班登机口分配(Python)

研究生数学建模比赛-航班登机口分配 “华为杯”第十五届全国研究生数学建模比赛的航班登机口分配问题的解决方案 代码简介 Main.py 项目的主程序; 编写了乘客类、登机口类、飞机类、机场类等模拟了整个飞机落地寻找登机口的过程; 编写了计算结果的可视化函数,包括折线图、柱状图、甘特图等 GA2_params.py 一个遗传算法程序,用以优化参数 merge_table.py 数据预处理的文件,用于连接表格

2024-06-25

计算机专业课(408)思维导图和笔记:计算机组成原理(第五版 王爱英),数据结构(王道),计算机网络(第七版 谢希仁),操作系统

计算机专业课(408)思维导图和笔记:计算机组成原理(第五版 王爱英),数据结构(王道),计算机网络(第七版 谢希仁),操作系统(第四版 汤小丹) 笔记 markdown + png + xmind

2024-06-25

基于Proteus仿真的51单片机电子密码锁

基于Proteus仿真的51单片机电子密码锁 存储器的组成 AT89C51由程序存储器ROM和数据存储器RAM组成。 ROM分为片内和片外 片内ROM为4KB,地址范围0000H~0FFFH; 片外ROM可扩展到64KB。 RAM可分为片内和片外, 片内RAM由128B(00H~7FH)的片内数据寄存器和21个特殊功能寄存器(在80H~FFH中)组成; 片外RAM可扩展到64KB。 2.比较中断服务程序和子程序调用的相同点和不同点 相同: 两者都需要保护断点(即下一条指令地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。 两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。 不同: 服务时间与服务对象不一样。 首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。而中断过程发生的时间一般的随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断

2024-06-14

基于socket API之上的跨平台MQTT客户端

基于socket API之上的跨平台MQTT客户端 优势: 具有极高的稳定性:无论是掉线重连,丢包重发,都是严格遵循MQTT协议标准执行,除此之外对大数据量的测试无论是收是发,都是非常稳定,高频测试也是非常稳定。 轻量级:整个代码工程极其简单,不使用mbedtls情况下,占用资源极少,作者曾使用esp8266模组与云端通信,整个工程代码消耗的RAM不足15k。 支持mbedtls加密传输,让网络传输更加安全,而且接口层完全不需要用户理会,无论是否加密,mqttclient对用户提供的API接口是固定的,这就很好的兼容了一套代应用层的码可以加密传输也可以不加密传输。 支持多客户端,同时兼容多个客户端运行工作,一个设备连接多个的服务器。 支持同步异步处理,应用程序无需阻塞等待浪费CPU资源。 支持拦截器配置,在某些平台中,客户端会默认自动订阅系统主题,而且每次来自服务器的主题都是变动的,此时需要使用拦截器进行拦截,分离主题与数据信息,并递交给用户,极大提高灵活性。 拥有在线代码生成工具,极其简单配置就可以生成对应的代码,地址:https://jiejietop.gitee.i

2024-06-14

分布式系统开发环境搭建极速教程(java)

分布式系统开发环境搭建极速教程(java) 本教程旨在帮助学员能够快速完整的搭建一套基于 Dubbo 通信的分布式系统开发环境(仅演示开发环境的搭建过程并不包含相关业务代码)并默认学员已经掌握下列所需知识点: 了解什么是分布式系统 了解什么是微服务架构 了解 VMWare 的基本操作 了解 Linux 常用命令语法 了解 Docker、Docker Compose 的作用及常用命令语法 了解 Maven 的作用及常用命令语法 了解什么是 Dubbo 以及和 Zookeeper 的关系 开发环境 操作系统:Windows 10 企业版 JDK 版本:1.8 IDE 工具:Intellij IDEA 2017 主要技术栈 核心框架:Spring Boot 视图框架:Spring MVC ORM 框架:MyBatis 通信框架:Dubbo 数据库连接池:Druid 模板引擎:Thymeleaf 全文搜索:Solr 数据缓存:Redis 项目构建:Maven 文件系统:FastDFS 消息队列:RabbitMQ

2024-06-14

基于 Spring Boot 编写出的统一返回数据结构处理和统一异常处理的插件

基于 Spring Boot 编写出的统一返回数据结构处理和统一异常处理的插件 使用之前,首先:不要使用Object类型返回,否则返回为null时,不会拦截到** 配置项 # 根注释 veedo: # 统一拦截配置模块 ragdoll: # 统一拦截返回数据结构处理 global-advice: # 是否启用,默认为false enabled: true # 返回统一拦截的包路径,如果没有,则全局返回 basePackages: e1.xxx.xxxx(,ex2,ex3...) # 不需要使用统一拦截的方法名,多个则用逗号链接 ignore-methods: example1(,ex2,ex3...) # 统一异常处理 exception-advice: # 是否启用,默认为false enabled: true # 返回错误时,是否显示真正的错误信息,默认为false # 当设置为true时,RuntimeException

2024-06-14

OpenCV图像处理的信用卡,卡号数字识别

OpenCV图像处理的信用卡,卡号数字识别 信用卡识别项目说明 开发思路 将模板文件与读入的图片进行匹配。 步骤: 模板图片的操作: 读入模板图片 cv2.imread() 将模板图片转换为灰度图 cv2.cvtColor() 然后转换为二值图 cv2.threshold() 做轮廓检测 外轮廓 (要使用图片副本) cv2.findContours() 画出轮廓 cv2.drawContours() 轮廓排序 思路:根据左上角的点坐标进行排序。 遍历每一个模板轮廓。依次将放入集合中。 读入图片的操作: 读入图片 cv2.imread() 重置图片大小 cv2.resize() 将图片转换为灰度图 cv2.cvtColor() 将图片进行礼帽操作,突出更明亮的区域 cv2.morphologyEx(,cv2.MORPH_TOPHAT,) Sobel算子,图像梯度计算,进行边缘检测。cv2.Sobel() 将上一步计算的图像梯度,进行归一化操作。 闭操作 将数字连在一起 cv2.morphologyEx(gradX,cv2.MORPH_CLOSE,rectKernel) 自适应阈值 c

2024-06-14

3个小项目分别是利用 Python 实现报表自动化、某连锁超市、某银行数据分析,展示了问题分解、数据清洗、数据分析与可视化的过程

3个小项目分别是利用 Python 实现报表自动化、某连锁超市、某银行数据分析,展示了问题分解、数据清洗、数据分析与可视化的过程 如下: 1.利用 Python 实现报表自动化 为什么要进行报表自动化 什么样的报表适合自动化 如何实现报表自动化 2.假如你是某连锁超市的数据分析师 哪些类别的商品比较畅销 哪些商品比较畅销 不同门店的销售额占比 哪些时间段是超市的客流高峰期 假如你是某银行的数据分析师 是不是人收入越高的坏账率越低 年龄和坏账率有什么关系 家庭人口数量和坏账率有什么关系

2024-06-12

Python和R语言应用案例,提供1年的图书馆借阅数据,并进行大数据分析

Python和R语言应用案例,提供1年的图书馆借阅数据,并进行大数据分析 在大数据环境下,图书馆及其服务也必将产生新的巨大变化,深层次的服务功能可以通过大数据技术的运用加以实现。主要体现在两个方面:   (1)提供以人为本的个性化服务。在大数据的支持下,髙细腻的个性化服务能够得到更加有效的开展。图书馆可以基于不同个体的个性特点、性格偏好提供定制式的个体服务,如个性化图书推荐。也可根据热门书籍的分析,为图书馆够提供参考信息。通过对读者整体关注的分析,为学校在在课程、教学方面提供参考信息。   (2)图书馆服务的内容将发生变化。传统的图书馆服务提供的是以文献或书籍为图书资源单元的服务,不对资源内容进行进一步处理。大数据环境下,开始向知识服务方向发展。知识服务的内容通过文本挖掘、大数据技术等,从图书资源中分析出更加细致的知识单元,并通过知识单元挖掘图书资源间的内在关系,提供高附加值的信息分析、决策咨询领域、知识问答等高级服务。   仅针对个性化服务方面,列出部分基本的图书馆大数据分析需求:   1.最热门的图书有哪些?   这是一个学生、老师、图书馆都关心的问题。学生关心“我应用学习什么”,

2024-06-12

计算机网络课程设计Lab3,小组实验 兼容CGI的多线程 Web Server

计算机网络课程设计Lab3,小组实验 兼容CGI的多线程 Web Server 简要介绍 兼容CGI的多线程静态、动态Web服务框架。 网站的所有资源放在webroot文件夹下 服务器的工作代码是主目录下的几个.py文件 web-server --源码目录 | ├─ application.py -- 服务逻辑代码 ├─ request.py -- http请求解析类 ├─ response.py -- http回包类 ├─ server.py -- 主函数 ├─ .gitignore ├─ LICENSE ├─ README.md | ├─db -- 数据库文件 │ └─ student.sql | └─webroot -- 网站根目录 ├─ 404.html -- 404默认网页 找不到对应资源 ├─ ERROR.html -- 出现错误的默认网页 ├─ index.html -- 一个网页 ├─ calculator.html -- calculator.py对应的网页 ├

2024-06-12

推荐系统基本知识,相关算法以及实现 (python)

推荐系统基本知识,相关算法以及实现。 目录规划 data 测试用数据集合 py3.x 相关实践的python 实现 spark 相关实践的spark 实现 manual 相关资料集合 paper阅读分享 基础知识分享 内容导航 python 实现(主要用于原理理解) ItemCF(使用sklearn 版本和 不使用sklearn版本) UserCF(使用sklearn 版本和 不使用sklearn版本) LFM Graph—Based Spark 实现 特征工程 ItemCF 计划项(恩 就是挖坑的意思) 推荐算实现 基于用户行为数据的推荐算法 关联规则 LFM Graph ALS 利用用户标签数据推荐算法 LDA TF-IDF TagCF 探索性研究(各个paper的实现) Markov Chain 社交网络 基于深度学习的推荐算法 .... 评价系统实现 推荐系统架构实现 外围架构

2024-06-12

A free, in-browser JSON to CSV converter

A free, in-browser JSON to CSV converter. JSON to CSV Converter A simple JSON to CSV converter that handles objects and nested documents. Conversion happens inside the browser, in straight JavaScript. It may choke on large files. Please file all bugs in the issue tracker. Read more about the converter and why I built it: "Making JSON as simple as a spreadsheet". Public domain This project makes uses of certain externally licensed works, including (but not limited to) Bootstrap, Highlight.js,

2024-06-11

树状图控件,用来展示一个树状图形,数据结构类似TreeView 在企业信息系统里经常会用到,比如公司组织架构,产品BOM"

树状图控件,用来展示一个树状图形,数据结构类似TreeView。在企业信息系统里经常会用到,比如公司组织架构,产品BOM" 特性 根节点位置可调整,整体大小可缩放,节点大小、颜色可修改、可设置进度 avatar 使用方法 TreeView treeView1 = new TreeView(); treeView1.Space = 100; treeView1.NodeWidth = 75; treeView1.NodeHeigth = 35; treeView1.NodeColor = Color.Gray; treeView1.NodeForeColor = Color.Red; TreeNode node = treeView1.InitRootNode("Root", RootNodePosition.Left);//创建根节点 TreeNode A = new T

2024-06-11

Short link 短链接服务器(Go语言开发)

Short link 短链接服务器(Go语言开发) 什么是短链接 就是把普通网址,转换成比较短的网址。比如:https://dwz.cn/XzhYJMkZ 原理解析 当我们在浏览器里输入 https://dwz.cn/XzhYJMkZ DNS首先解析获得 https://dwz.cn/ 的 IP 地址 当 DNS 获得 IP 地址以后,会向这个地址发送 HTTP请求,查询短码 XzhYJMkZ https://dwz.cn/ 服务器会通过短码 XzhYJMkZ 获取对应的长 URL 请求通过 HTTP 301 转到对应的长 URL http://www.baidu.com 本文采用 自增序列算法 + 用户自定义短码 设置 id 自增,一个 10进制 id 对应一个 62进制的数值,1对1,也就不会出现重复的情况。 这个利用的就是低进制转化为高进制时,字符数会减少的特性。 可使用redis Incr 实现id自增。 数据表设计 CREATE TABLE `links` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varcha

2024-06-11

基于react的后台管理项目模板(react)

基于react的后台管理项目模板(react) 基于 React 生态系统搭建的后台管理系统模板 此项目为闲暇时间所做,主要是为了熟悉 React 项目的开发流程,打造一个快速开发后台管理系统的模板 既为模板,可能就添加了一些你觉得并不需要的东西,比如菜单栏收缩将判断值存储在 Redux 之中,其实完全可以采用组件传值的方式解决,并不需要引入 Redux 。添加这个东西只是为了方便项目的拓展、展示它的使用方式。当然,如果你不需要,完全可以很简单的移除它们 由于每个管理项目可能会有不同的定制化需求,所以对于模板中的一些功能并没有做完善的封装,比如对 axios 的封装、前端路由权限的控制。当然,结构或者思路已经存在代码之中了,只需要添加具体的业务代码即可 此项目会不断进行优化迭代,后期可能会增加 react-hook 版本 技术栈 React@16.10.1 + React-Router@5.1.1 + Redux@4.0.4 + Antd@3.23.5 + Axios@0.19.0 Create React App 脚手架工具快速搭建项目结构 react-loadable@

2024-06-11

一款免费、开源,使用PHP语言开发的项目管理系统

Jitamin是一款免费、开源,使用PHP语言开发的项目管理系统 功能特性 简洁、美观的界面 支持多主题 可视化的任务管理 支持列表、看板和甘特图等任务视图 可拖拽式的任务操作 支持多语言,内置英文和简体中文语言包 过滤搜索 可创建团队项目和个人项目 支持任务、子任务、附件和评论 动作自动触发 可视化的统计 第三方集成 支持插件 安装环境要求 PHP 5.6或更高(推荐使用PHP7) 数据库, 推荐使用MySQL 或 PostgreSQL。 当然SQLite也可以运行。 Composer 安装手册 一. 克隆代码 假设我们把jitamin部署在 /var/www $ cd /var/www $ git clone https://github.com/jitamin/jitamin.git jitamin $ cd jitamin

2024-06-10

vtags 旨在开发一款在vim/emacs等通用编辑器下, 对verilog/VHDL的设计代码进行类似verdi的信号追踪、

vtags 旨在开发一款在vim/emacs等通用编辑器下, 对verilog/VHDL的设计代码进行类似verdi的信号追踪、显示拓扑等功能的插件,vtags插件完全使用python实现,目前实现了在vim下对verilog设计进行信号追踪、宏定义追踪、显示模块拓扑、快速打开文件、保存和打开vim快照、添加断点等功能。 vtags is a gvim plugin, it's function similar like verdi's trace verilog signal function, this plugin writed by python, currently support: trace signal,macro define trace,show module's topology,quick access,save and opend a snapshort, add checkpiont etc

2024-06-10

《Redis 深度历险》学习笔记与实践(Java)

《Redis 深度历险》学习笔记与实践(Java) 基础和应用 1-2.Redis应用 — Redis基本数据结构 1-3.Redis应用 — 分布式锁 1-4.Redis应用 — 延时队列 1-5.Redis应用 — 位图 1-6.Redis应用 — HyperLogLog 1-7.Redis应用 — 布隆过滤器 1-8.Redis应用 — 简单限流 1-9.Redis应用 — 漏斗限流 1-10.Redis应用 — GeoHash 1-11.Redis应用 — Scan 原理 2-1.Redis原理 — 线程安全模型 2-2.Redis原理 — 通信协议 2-3.Redis原理 — 持久化 2-4.Redis原理 — 管道 2-5.Redis原理 — 事务 2-6.Redis原理 — PubSub 2-7.Redis原理 — 小对象压缩 集群 3-1.Redis集群 — 主从复制 3-2.Redis集群 — Sentinel

2024-06-10

wumei-iot是一套开源的软硬件系统,可用于二次开发和学习,快速搭建自己的物联网/智能家居系统 硬件工程师可以把自己的设备集

wumei-iot是一套开源的软硬件系统,可用于二次开发和学习,快速搭建自己的物联网/智能家居系统。硬件工程师可以把自己的设备集成到系统;软件工程师可以使用项目中的设备熟悉软硬件交互。 服务端使用spring boot、数据库mysql和redis、前端vue、移动端android、硬件端ESP-IDF和Arduino等。软硬件交互基于Mqtt协议,使用EMQ代理服务器。系统架构图如下: 硬件端提供接入文档,需要设备支持网络功能,项目里面包含ESP-IDF和Arduino的硬件代码和接入示例。同时制作了智能开关(wifi通断器)板子,可用于学习和生活中,控制2500W以下的用电设备。硬件完整示例代码采用ESP-IDF框架4.2版本,基于乐鑫ESP32S2芯片,安信可ESP-12K模组 手机、电脑远程控制 遥控配对、清码和控制 空气温湿度监控 雷达感应和报警 220V和5V电压供电,阻性负载2500W,感性负载250W

2024-06-10

基于YOLO的食物卡路里检测系统(源码&部署教程&数据集)

基于YOLO的食物卡路里检测系统(源码&部署教程&数据集) YOLOv7算法简介 YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器 并在V100 上,30 FPS 的情况下达到实时目标检测器的最高精度 56.8% AP。YOLOv7 是在 MS COCO 数据集上从头开始训练的,不使用任何其他数据集或预训练权重。 相对于其他类型的工具,YOLOv7-E6 目标检测器(56 FPS V100,55.9% AP)比基于 transformer 的检测器 SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9% AP)速度上高出 509%,精度高出 2%,比基于卷积的检测器 ConvNeXt-XL Cascade-Mask R-CNN (8.6 FPS A100, 55.2% AP) 速度高出 551%,精度高出 0.7%。

2024-06-09

2020春哈工大操作系统实验环境一键配置

2020春哈工大操作系统实验环境一键配置 增加了对Arch系发行版的支持 更新了Bochs模拟器版本到2.6.10(最新版2.6.11在Linux下有重大BUG) 更新了Bochs的BIOS和VGABIOS到最新版本 修正了Bochs的配置文件(老版本的配置文件无法在新版Bochs上使用) 重写了setup脚本,自动安装上了运行所需的依赖 借鉴deathking增加了还原脚本 修正了run、setup等脚本中的一些小错误 增加了C语言级调试的CGDB调试器支持 环境 本脚本适用于Linux的Debian系发行版和Arch系发行版,Debian系发行版包括但不限于Debian、Deepin 15、Ubuntu及其衍生版本,Arch系发行版包括但不限于Arch Linux、Manjaro及其衍生版本。 本脚本已在Ubuntu 18.04、Ubuntu 20.04、Deepin v15、Elementary OS和Manjaro下完成测试。 最新: 完成了在Windows Subsystem for Linux 2(WSL2)中的测试! 注意,WSL2 的内核不支持 minix 文件

2024-06-09

基于consul的分布式锁工具,包含:互斥锁、信号量等工具

基于consul的分布式锁工具,包含:互斥锁、信号量等工具 基于Consul的分布式锁工具 在构建分布式系统的时候,我们经常需要控制对共享资源的访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,本项目将基于Consul的KV存储来实现一套Java的分布式锁小工具,以帮助简化分布式环境下的同步操作。 目前该工具实现了两个小功能:分布式互斥锁和信号量。 分布式互斥锁 ConsulClient consulClient = new ConsulClient("localhost", 8500); // 创建与Consul的连接 CheckTtl checkTtl = new CheckTtl("checkId", consulClient); // session的健康检查,用来清理失效session占用的锁 Lock lock = new Lock(consulClient, "lockKey", checkTtl); try { // 获取分布式互斥锁 // 参数含义:是否使用阻塞模式、每次尝试获取锁的间隔500ms、尝试n次 if (lock.lock

2024-06-09

神经网络的实现,包括bp神经网络和rbf神经网络

神经网络的实现,包括bp神经网络和rbf神经网络 MachineLearning_Ass2 神经网络的实现,包括bp神经网络和rbf神经网络 神经网络的实现,包括bp神经网络和rbf神经网络

2024-06-09

嵌入式系统通用驱动程序接口及其实现-Spi设备驱动程序

嵌入式系统通用驱动程序接口及其实现-Spi设备驱动程序 嵌入式系统通用驱动程序接口及其实现-SPI驱动程序 此接口为具体项目中: 需要SPI通讯时,提供统一的操作函数。 文件说明: SpiDev.h:Spi多例化统一接口 各MCU实现: SpiDev_Lpc_ARM 在NXP LPC硬件SPI上的实现 SpiDev_Avr: 在AVR上的实现 SpiDev_Pic: 在PIC16F19系列上的实现 SpiDev_Soft: 使用IO模拟时的实现。 Sip_Cs1: 各MCU对应实现中的片选控制,仅1个设备时 软件结构说明: 此接口含以下几大部分 SPI设备驱动程序部分: SPI通用操作接口: 即对外接口调用文件:SpiDev.h ,其它软件部分操作SPI时,包含此文件即可。 SPI操作接口的各种实现: 以*SpiDev(下横线_)SPI硬件名称(或载体)(下横线_)专用编译环境(可选,严重不建议代码与编译环境相关连)*命名, 与具体使用的SPI硬件的接口有关,即有各种不同的实现。但一种硬件仅实现一次,项目中需要那个加入那个即可,具有通用性(实现时需尽量排除编译器影响,使一个SPI驱动

2024-06-08

哈工大软件学院编译原理实验(Python实现)

哈工大软件学院编译原理实验(Python实现) 哈工大软件学院编译原理实验(Python实现) 这是我用Python实现的版本,没有图形界面,其中lexer.py, parser.py, sema.py,分别是词法分析,句法分析和语义分析。可以参考

2024-06-08

基于改进YOLOv7&OpenCV的行人过马路速度与交通灯实时监测系统(源码&教程)

基于改进YOLOv7&OpenCV的行人过马路速度与交通灯实时监测系统(源码&教程) 研究背景 横穿马路的行人运动速度太快、太慢或者突变都可能影响驾驶者的判断,从而导致交通事故。车载辅助系统应能够在交通路口为驾驶者提供异常行人的速度预判信息。文献[1-2]通过对不同红绿灯情形进行建模分析并实际采集某路段的交通视频,分析红绿灯与行人穿越马路的方式对行人安全性的影响,这种方法主要研究交通环境与行人安全的关系,受实际环境的影响较大。文献[3]同样以分析交通环境为主,主要研究夜间情况下交通信号灯的控制方案与行人车辆碰撞冲突的关系,通过实地采集交通数据,研究能保证行人安全和车辆正常通行的交通信号配时方案。文献[4]将关注点集中在人的头部,通过判断头部姿态预测行人可能的运动方向,将运动方向会与车辆发生冲突的行人判定为危险行人。传统算法检测速度较慢同时鲁棒性差,因此本文提出一种结合传统OpenCV算法的改进YOLOv7行人过马路速度与交通灯实时监测系统,为交通管理问题提供解决方案。

2024-06-08

基于consul的分布式锁工具,包含:互斥锁、信号量等工具

基于consul的分布式锁工具,包含:互斥锁、信号量等工具 基于Consul的分布式锁工具 在构建分布式系统的时候,我们经常需要控制对共享资源的访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,本项目将基于Consul的KV存储来实现一套Java的分布式锁小工具,以帮助简化分布式环境下的同步操作。 用方法 目前该工具实现了两个小功能:分布式互斥锁和信号量。 分布式互斥锁 ConsulClient consulClient = new ConsulClient("localhost", 8500); // 创建与Consul的连接 CheckTtl checkTtl = new CheckTtl("checkId", consulClient); // session的健康检查,用来清理失效session占用的锁 Lock lock = new Lock(consulClient, "lockKey", checkTtl); try { // 获取分布式互斥锁 // 参数含义:是否使用阻塞模式、每次尝试获取锁的间隔500ms、尝试n次 if (lock.lo

2024-06-07

基于改进YOLO的玉米病害识别系统(部署教程&源码)

基于改进YOLO的玉米病害识别系统(部署教程&源码) 研究背景与意义 近年来,农业科技的快速发展为农作物的种植和管理带来了许多便利。然而,农作物病害的防治仍然是一个全球性的挑战。玉米作为世界上最重要的粮食作物之一,受到了许多病害的威胁,如玉米灰斑病、玉米穗腐病等。这些病害不仅会导致玉米产量的大幅下降,还会对农民的经济收入和食品安全造成严重影响。 传统的玉米病害识别方法主要依赖于人工观察和经验判断,这种方法存在着主观性强、效率低下和准确性不高的问题。因此,开发一种基于计算机视觉技术的自动化玉米病害识别系统具有重要的研究意义和实际应用价值。 目前,深度学习技术在计算机视觉领域取得了巨大的突破,特别是目标检测领域。YOLO(You Only Look Once)是一种基于深度学习的实时目标检测算法,具有快速、准确和端到端的特点。然而,由于YOLO算法在小目标检测和密集目标检测方面的性能相对较差,对于玉米病害这种小尺寸和高密度的目标,传统的YOLO算法可能无法满足需求。 因此,本研究旨在改进YOLO算法,提高其在玉米病害识别中的性能。具体而言,我们将探索以下几个方面的改进: 数据集构

2024-06-07

空空如也

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

TA关注的人

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