Other

test 2

TEST 2 Vue The progressive JavaScript framework for building modern web UI. 用于构建现代 Web UI 的渐进式 JavaScript 框架。 Vite Native-ESM powered web dev build tool 原生 ESM 驱动的 Web 开发构建工具 搭配 TypeScript 使用 Vue

HTML day07

HTLM Day07 理清DOM对象和 jQuery对象 DOM对象 通过js获取的对象 DOM对象能使用js固有的方法,但是不能使用jQuery里面的方法。 jQuery操作 通过jQuery包装DOM对象后产生的对象 jQuery对象是jQuery独有的 # 虽然 jQuery对象是包装 DOM对象后产生的,但是 jQuery对象无法使用 DOM对象的任何方法, # 同理 DOM对象也没不能使用 jQuery里的方法 # 互相转换 ''' jQuery对象是一个数组对象 用[0]转成DOM对象 对于一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jquery对象了,方法为$(dom对象); ''' 1.jQuery对象转DOM对象 var $variable = jQuery对象 var variable = DOM对象 $variable[0] # 得到DOM对象 可使用DOM操作 2.DOM对象转jQuery对象 # $(dom对象) var variable = document.getElementById('d1') # DOM对象 var $variable = $(variable) # 得到jQuery对象 可使用jQuery操作 jQuery操作标签 # class操作(就是class=操作里面的属性) jQuery操作 DOM操作 addClass() classList.add() removeClass() classList.remove() hasClass() classList.contains() toggleClass() classList.

从0开始学习VUE3--02-使用roolup编译Typescript

Typescript是什么? TypeScript是Javascript的超集,遵循最新的ES5/ES6规范。Typescript扩展了Javascript语法。 为什么要用Typescript? 1.Typescript更像后端,语言严谨,适合开发大型企业应用 2.丰富的语法提示 3.编写代码时进行类型检查提前避免错误 三种使用方式 1.全局安装typescript对TS进行编译 npm install typescript -g tsc --init # 户帮我们生成tsconfig.json tsc # 可以将ts文件编译成js文件,会在当前目录下生成js文件,不写文件名字的话,就全都编译了 tsc --watch # 监控ts文件变化生成js文件 2.快速直接看结果,也可以使用 code runner + npm install ts-node 3.用的多的方式:webpack roolup 等构建工具来处理ts 解析ts方式有两种,ts插件,或者babel rollup 一般用 roolup-plgin-typescript2 webpack 一般用 ts-loader 或者 babel-plugin-typescript roolup方式详细配置 1.安装依赖 npm install rollup typescript rollup-plugin-typescript2 @rollup/plugin-node-resolve rollup-plugin-serve -D 2.初始化TS配置文件 npx tsc --init 3.rollup配置 // rollup.config.js import ts from 'rollup-plugin-typescript2' import {nodeResolve} from '@rollup/plugin-node-resolve'; import serve from 'rollup-plugin-serve'; import path from 'path' export default { input:'src/index.

谷歌浏览器常用插件

概述 10个浏览器必备插件,每个都让你惊艳:https://www.bilibili.com/read/cv8499450 全网最全浏览器插件推荐(上):https://www.bilibili.com/read/cv14901902 (一)谷歌上网助手 下载地址 链接: https://pan.baidu.com/s/1FH1NePZc1kwOHMw27Jv9Jg?pwd=rgbs 提取码: rgbs 复制这段内容后打开百度网盘手机App,操作更方便哦 作用 专门为科研、外贸、跨境电商、海淘人员、开发人员服务的上网加速工具,chrome内核浏览器专用!可以解决chrome扩展无法自动更新的问题,同时可以访问谷歌google搜索,gmail邮箱,google+等谷歌产品 【仅做学术使用】 安装方式 把资源中的.crx文件拖到谷歌浏览器-->更多工具-->扩展程序-->打开开发者模式,的页面中,稍等一会点击确认。 使用方式 单击打开页面后交钱能用,不交钱不能用。 (二)油猴 Tampermonkey 下载地址 链接: https://pan.baidu.com/s/1jdxJBoLrX0lhQNnLjOxB7w?pwd=g7cu 提取码: g7cu 复制这段内容后打开百度网盘手机App,操作更方便哦 作用 安装各种脚本,可看vip视频等。脚本来源网址:https://greasyfork.org/zh-CN/scripts 安装方式 把资源中的.crx文件拖到谷歌浏览器-->更多工具-->扩展程序-->打开开发者模式,的页面中,稍等一会点击确认。 打开脚本来源网址,选择脚本后在该网站上点击安装即可(这里以“懒人专用,全网VIP视频免费破解去广告……”脚本为例) 单击浏览器右上角新出现的插件图标,打开管理面板,可管理各种插件 使用方式 看视频的时候,浏览器左边出现红色VIP字样图标,点击后可看其他来源的免费vip视频 (三)页面冻结插件 Sloth 下载地址 链接: https://pan.baidu.com/s/1g68QKht3NMZcb6dXQz90hg?pwd=qjcy 提取码: qjcy 复制这段内容后打开百度网盘手机App,操作更方便哦 作用 没点开的标签页可冻结住,不占用电脑内存。 安装方式

jQuery操作标签 前端框架

day 44   查找标签绑定的变量名 原生js代码查找标签绑定的变量名推荐使用 xxxEle jQuery代码查找标签绑定的变量名推荐使用 $xxxEle jQuery操作标签 样式操作 样式类 jQuery操作 addClass(); # 添加指定的CSS类名。 removeClass(); # 移除指定的CSS类名。 hasClass(); # 判断样式存不存在 toggleClass(); # 切换CSS类名,如果有就移除,如果没有就添加。 对应DOM操作 classList.add() classList.remove() classList.contains() classList.toggle() css样式操作 jQuery对象.css('属性名','属性值') $divEle.css('border','5px solid black') 位置操作 offset()// 获取匹配元素在当前窗口的相对偏移或设置元素位置 position()// 获取匹配元素相对父元素的偏移 scrollTop()// 获取匹配元素相对滚动条顶部的偏移 scrollLeft()// 获取匹配元素相对滚动条左侧的偏移 $(window).scrollTop() 获取左侧滚动条距离顶端的位移量 实时监测距离 $(window).scroll(function () { if($(window).scrollTop() > 600){ alert('超过600了 架不住了') } })  文本操作 HTML代码: html()// 取得第一个匹配元素的html内容 html(val)// 设置所有匹配元素的html内容 文本值: text()// 取得所有匹配元素的内容 text(val)// 设置所有匹配元素的内容 值:

OOUnit2

OOunit2总结博客 (1)总结分析三次作业中同步块的设置和锁的选择,并分析锁与同步块中处理语句之间的关系 作业中同步块都在共享对象中的方法,共享对象实现如下接口: public interface Queue { void addRequest(Request request);//添加成员 void setEnd();//传递结束信号 boolean isEnd();//检查是否结束信号 boolean needWait();//利用该方法使得进程判断是否需要等待 boolean isEmpty(); } 一个具体实现类如下:同步块中方法以 synchronized关键字修饰。 add和 set方法在更改类中属性时通过 notifyAll()语句唤醒同一共享对象的等待线程。 import com.oocourse.elevator3.Request; import java.util.ArrayList; public class QueueReq implements Queue { private ArrayList<Request> requests; private boolean isEnd; public QueueReq() { requests = new ArrayList<>(); isEnd = false; } @Override public synchronized void addRequest(Request request) { requests.add(request); notifyAll(); } @Override public synchronized void setEnd() { isEnd = true; notifyAll(); } @Override public synchronized boolean isEnd() { return isEnd; } @Override public synchronized boolean needWait() { if (requests.

LibreOJ 131 树状数组2:区间修改,单点查询

题目地址 Solution 前面已经知道了树状数组的单点修改和区间查询。这里利用差分的思想:具体来说,维护 \(b\) 数组: \[b[i] = a[i]-a[i-1] \] 其中 \(a\) 为原来数组。可以发现 \[a[i] = \sum_{k=1}^ib[k] \] 因此我们只需要对 \(b\) 利用树状数组维护,get_sum[i]即可得到原来数组单点的值。而对于区间更新,我们只需要在两个端点 \(l,r\) 打上标记即可: \[update(l,x);update(r+1,-x) \] 点击查看代码 int n,q; const int N = 1e6+5; ll a[N], b[N]; ll c[N]; ll lowbit(int x){return x&(-x);} void update(int i, ll k){ // add k on i-th position while(i<=N){ c[i]+=ll(k); i+= lowbit(i); } } ll get_sum(int i){ // get sum from 1-i ll ans = 0; while(i>0){ ans+=ll(c[i]);i-=lowbit(i); } return ans; } int main(){ //ios::sync_with_stdio(false); n = read();q = read(); for(int i=1;i<=n;i++){ scanf(%lld,&a[i]); b[i] = a[i]-a[i-1]; update(i,b[i]); } while(q--){ int tmp = read(); if(tmp==1){ int l=read(),r = read(); ll x;scanf(%lld,&x); update(l,x);update(r+1,-x); } else{ int pos = read(); cout<<get_sum(pos)<<endl; } } }

从0开始学习VUE3--01-Vue2与Vue3的不同点

升级带来的性能提升总结 1.模板编译优化:节点达到一定个数,会自动优化 每次重新渲染,会调用createVnode创建虚拟节点,VUE3会做静态提升,静态节点进行提取,进行优化 2.事件 缓存事件,防止重新创建事件 3.响应式原理 defineProperty 改为 proxy 4.Vue3 diff算法,可以根据patchFlag做diff Vue2是全量的diff,最长递增子序列算法 5.options Api改为 compositionApi 用起来比较方便,vue2一个功能要拆分到多个里面,但是composition更方便使用,抽离成一个函数 6.Fragment多个根节点的支持、Teleport Suspense keep-alive transition 7.Vue2 flow 改为 Vue3 TS 8.Vue3li 有自定义渲染器 createRender()传入自己渲染的方法,根据Vue核心实现不同平台代码 9.代码管理升级 monorepo的管理方式

Nginx性能优化-CPU篇

性能优化方法论 软件层面提升硬件使用率 增大CPU的利用率 增大内存的利用率 增大硬盘IO的利用率 增大网络带宽的利用率 提升硬件 网卡:万兆网卡 硬盘:固体硬盘,关注IOPS和BPS指标 CPU:更快主频,更多核心,更大缓存,更优架构 内存:更快访问速度 超出硬件性能上限后使用DNS CPU基本知识 为何一个CPU就可以同时运行多个进程? 宏观上并行,微观上串行 把进程的运行时间分为一段段的时间片 OS调度系统依次选择每个进程,最多执行时间片指定的时长 阻塞API引发的时间片内主动让出CPU 速度不一致引发的阻塞API:例如CPU和硬盘 业务场景产生的阻塞API:例如同步读网络报文 何为进程间切换 是指CPU从一个进程或线程切换到另外一个进程或者线程,类别分为主动切换和被动切换: 主动切换:进程或线程IO阻塞 被动切换:时间片耗尽 如何查看上下文切换次数 // 每隔2秒打印一次 vmstat 2 cs字段:所有进程上下文切换次数 in字段:所有进程中断次数 dstat system.csw 进程上下文切换次数 // 每隔2秒打印一次 pidstat -w 2 // 指定2655371 pid进程 pidstat -w 1 -p 2655371 cswch/s字段:主动切换 nvcswch/s字段:被动切换 什么决定CPU时间片的大小? top命令 NI字段:Nice静态优先级(-20 -- 19),number值越小,CPU时间片占用越长 PR字段:Priority动态优先级(0-139),number值越小,优先级高于其他正常进程 查看进程状态 ps -aux STAT字段:

SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(下)

源码资料 文档资料 <<Nacos架构与原理>>书籍于2021.12.21发布,并在Nacos官方网站非常Nice的提供其电子书的下载。我们学习Nacos源码更多是要吸取其优秀的设计理念和思想,这个和我们学习其他开源项目的初衷是一致的。 Nacos架构与原理 https://developer.aliyun.com/topic/download?id=8230 微服务治理技术白皮书 https://developer.aliyun.com/ebook/download/7565?spm=a2c6h.26392459.ebook-detail.3.12d959e7lHLVZ8 关于源码分析如果有时间还可以看早之前谭峰写的<<Spring Cloud Alibaba微服务原理与实战>> Nacos读音为/nɑ:kəʊs/ ,是 Dynamic Naming and Configuration Service 的首字母简称;⼀个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos来源阿里内部三个项目( Configserver/Diamond/ Vipserver 内核)的合体。主要优势为易用、稳定、实时、规模。 阿里微服务 DNS(Dubbo+Nacos+Spring-cloud-alibaba/Seata/ Sentinel)最佳实践集性能和应用一体,是目前 Java 微服务生态最佳解决方案。 下载源码 Nacos GitHub源码 https://github.com/alibaba/nacos/releases 最新版本为2.1.0 (Apr 29, 2022),而1系列最新版本为1.4.3 源码启动 导入Idea后执行mvn compile,等待项目编译,编译完成信息如下 打开Nacos的Main类,可以看到是一个SpringBoot程序,nacos-console控制台项目配置启动的参数如下 -Dnacos.standalone=true -Dnacos.home=C:\\nacos 启动Nacos,一个本地内嵌数据库模式就成功启动了 访问http://localhost:8848/nacos ,输入用户和密码nacos/nacos进入控制台主页面 总体设计 设计原则 极简原则,简单才好用,简单才稳定,简单才易协作。 架构⼀致性,⼀套架构要能适应开源、内部、商业化(公有云及专有云)3 个场景。 扩展性,以开源为内核,商业化做基础,充分扩展,方便用户扩展。 模块化,将通用部分抽象下沉,提升代码复用和健壮性。 长期主义,不是要⼀个能支撑未来 3 年的架构,而是要能够支撑 10 年的架构。 开放性,设计和讨论保持社区互动和透明,方便大家协作。 分层架构 整体架构分为用户层、业务层、内核层和插件,用户层主要解决用户使用的易用性问题,业务层主要解决服务发现和配置管理的功能问题,内核层解决分布式系统⼀致性、存储、高可用等核心问题, 插件解决扩展性问题。 配置模型 基础模型 Nacos 提供可视化的控制台,可以对配置进行发布、更新、删除、灰度、版本管理等功能。 SDK 可以提供发布配置、更新配置、监听配置等功能。 SDK 通过 GRPC 长连接监听配置变更,Server 端对比 Client 端配置的 MD5 和本地 MD5 是否相等,不相等推送配置变更。 SDK 会保存配置的快照,当服务端出现问题的时候从本地获取。 配置资源模型 Namespace 的设计就是用来进行资源隔离的,我们在进行配置资源的时候可以从以下两个角度来 看: