前言 最近学习了一下Nginx,整理了一个博客,主要参考的是狂神说的b站视频教程,文章链接如下:狂神说Nginx快速入门
一、下载、启动Nginx 1.下载Nginx 到Nginx官方选择自己电脑适用的稳定版本下载,我下载的的windows版本。
下载完,就会有一个压缩包。需要创建一个文件夹用于存放解压后的nginx内容(注意:存放Nginx的文件夹最好不要有中文,否则会报错),解压后的内容如下所示:
后续我们经常使用到的就是conf配置文件。
2.启动Nginx Win+R,运行cmd,切换到nginx解压之后的目录:
可以查看下conf目录中的nginx.conf文件。
用记事本打开,可以看到它的默认端口是80端口,默认访问域名是以localhost访问。也就是以后只要访问80端口,就会被Nginx拦截。
接着,打开浏览器,输入 http://localhost:80并 回车,出现以下内容说明Nginx启动成功了!
也可以在任务管理器中看到nginx是在运行状态的。
3.常用命令 强制停止nginx:nginx -s stop 安全退出nginx:nginx -s quit 重新加载配置文件:nginx -s reload (如果修改了配置文件就执行这行命令,否则修改就是无效的。前提:nginx服务是启动的状态,否则reload是不成功的。) 二、nginx.conf配置文件分析 最上面的是全局配置;events是最大连接的数量;http中有一些小模块,比如静态资源文件配置,里面可以配置多个server,server可以配置不同的服务,比如location,比如负载均衡配置upstream。
1.配置反向代理 例如:修改nginx.conf配置文件,配置location中proxy_pass指向YSL官网。
// 这行代码就说明请求会代理到 https://www.yslbeautycn.com proxy_pass https://www.yslbeautycn.com 注意:
proxy_pass后面跟的是空格
写完一个配置项后面需要以分号;结尾
修改了nginx.conf配置文件后,运行nginx -s reload
在浏览器输入http://localhost:80并回车,就可以发现出现的是YSL官网了。
2.负载均衡upstream 在一堆服务器中,Nginx能够将从客户端请求“均匀地”分配到这些服务器中,这就是负载均衡。
场景:如果请求很多,一台服务器忙不过来,就需要多个服务器一起合作。假如我们有100G的服务器、64G的服务器、16G的服务器,我们希望实现更多的请求能够到100G的服务器中,更少的请求到16G的服务器中。这就是负载均衡的功能了。
常用方式:
轮询
"轮询"会将客户端的请求循环分配给不同的后端服务器。轮询容易产生资源分配不合理的问题。
假设有三个服务器,那么就可以在nginx.conf文件中使用upstream块定义这三个服务器;然后再配置location中的proxy_pass指令指向upstream名称。写法如下所示:
加权轮询
用于服务器性能不同的集群中,可以让资源分配更合理。
服务器性能越好的,权重就更高;性能越差的,权重就越低。(权重weight)
如上图所示:如果请求很多的情况下,那么大量的请求都会到权重为4的第三个服务器中,只有一部分请求才会到权重为1的服务器中,这样可以确保服务器没有超负荷。权重weight越高的,请求就越多;这样,可以保证服务器性能的最大化,哪怕有一台很小的服务器,也可以上线去使用,这样会节约成本。
可以通过weight来设置服务器的不同权重,写法如下所示:
优点:分布式处理,提升网络的灵活性、稳定性,使得服务器性能最大化。
三、Nginx上部署前端项目 Vue项目需要打包好,打包项目运行npm run build即可,打包完成项目中会多出一个dist目录,我这里的项目叫demo。
我们将demo项目下dist目录中的内容都复制粘贴到nginx目录下的html目录中,将原本的nginx下的html中的内容删除掉。
效果就是这样:
配置文件依然是默认的80端口,localhost打开。运行一下:start nginx,可以看到vue项目运行成功了。
总结 以上就是我要分享的Nginx相关的内容了。
💕人生没有太晚的开始,所有的时刻都是七点。 —— 温妮 · 普赖弗曼💕
🐼作者:不能再留遗憾了
🎆专栏:Java学习
🚗本文章主要内容:明解什么是二叉搜索树以及二叉搜索树的递归和非递归查找、插入和删除。
文章目录 什么是二叉搜索树二叉搜索树的查找构建二叉搜索树(插入数据)二叉搜索树的删除总结 什么是二叉搜索树 二叉搜索树(Binary Search Tree,也叫做BST)是一种常见的二叉树,但是它具有普通二叉树不具备的性质:
1.对于每个节点,他的左子树中所有节点的键值小于它的键值,而右子树中的所有节点的键值大于它的键值。
2.没有键值相同的节点。(因为二叉搜索树的主要作用是搜索查找数据,而不是存储数据)
二叉搜索树的查找 因为二叉搜索树的节点的键值大于左子树所有节点的键值,小于于右子树所有结点的所有的键值。所以我们在查找的时候至少可以少找一个子树,这就大大降低了时间的消耗。我们在查找的时候只需要比较要查找的数据的节点键值的大小,如果大于节点的键值,那么就在该节点的右子树上找,小于就在左子树上找,重复该操作,直到找到需要的值,返回该节点,没找到就返回null。
非递归查找
public class BinarySearchTree { //我们创建一个树内部类,包含键值和左右子树 static class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int val) { this.val = val; } } public TreeNode root = null; //查找 public TreeNode find(int val) { TreeNode cur = root; while(cur != null) { if(cur.val == val) { return cur; }else if(cur.
欢迎关注【AIGC使用教程】 专栏
【AIGC使用教程】SciSpace 论文阅读神器
【AIGC使用教程】Microsoft Edge/Bing Chat 注册使用完全指南
【AIGC使用教程】GitHub Copilot 免费注册及在 VS Code 中的安装使用
【AIGC使用教程】GitHub Copilot 免费注册及在 PyCharm 中的安装使用
【AIGC使用教程】Notion AI 从注册到体验:如何免费使用
【AIGC使用教程】AutoGPT 安装使用完全教程
【AIGC使用教程】Notion AI 从注册到体验:如何免费使用 1. Notion AI 介绍1.1 Notion AI 简介1.2 Notion AI 的核心能力1.3 Notion AI 与 ChatGPT 的比较 2. Notion AI 国内用户注册2.1 PC 端用户注册2.2 移动端用户注册 3. Notion AI 快速体验3.1 Notion AI 的基本功能3.2 体验 Notion AI 写作3.3 写作中调用 AI 的方法 4. AI 面板的功能与使用4.1 AI 面板的功能4.2 AI 面板选项4.
15套前端经典实战项目大合集,悄悄练习,你会惊艳所有人。
今日我以内卷为荣,明日内卷以我为荣,不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目。
这里整理了15前端经典实战项目,每套都有完整且详细的视频教程和源码,你可从中选择自己喜欢的项目做参考练手,也可以从中寻找灵感去做自己的项目。
15套前端项目列表有: 1、百度地图项目
2、租房网
3、前后端分离项目
4、Vue丁香医生
5、Vue后台管理系统
6、微信小程序
7、小米官网
8、迅雷官网
9、Vue项目案列_疫情展示
10、VueEgo商城
11、React前端框架
12、穷游网项目
13、易购后台管理系统
14、网易严选
15、宜居商城
15个web前端实战项目(附源码),练完即可就业,从入门到进阶,基础到框架,html
本套课程为同学带来全新的前端学习体验! 课程知识点: 第一章:HTML5
第二章:CSS3
第三章:JavaScript
第四章:ES6
第五章:Vue
通过本视频的学习,你可以从零开始,一步步的掌握前端开发的各项相关技能,最终达到企业对初级前端开发工程师,中级前端开发工程师,高级开发工程师,全栈开发工程师等职位的要求。 内容制作不易,伙伴三连多支持哦~
15套项目功能丰富 界面美观 非常适合零基础小白练手和实战,用来提高自己的框架熟练度和项目独立做项目的流程。
社区一天只能丝五个人,丝不够用 T-T ~
大家如果需要系统配套的源码 课件等资料可以看猫猫脖子处哦, 分享给大家~~
前言 一、判断是否有Nvidia(英伟达显卡)二、CPU版2.1 安装Anaconda2.2 创建虚拟环境2.3安装pytorch2.4 验证pytorch是否安装成功 三、GPU版3.1 安装Anaconda3.2 创建虚拟环境3.3 CUDA的准备工作3.4 安装pytorch3.4.1 conda安装法(不推荐)3.4.2 pip安装法(推荐) 3.5 验证pytorch是否安装成功 四、 pycharm安装与配置 因为我之前安装环境花费了不少时间,也是网上搜了很多,想着自己写一个帮助大家快速安装,少走弯路,快速开启深度之路。 一、判断是否有Nvidia(英伟达显卡) 下面我以我的台式电脑windows10系统为例
第一步:右键开始菜单,在弹出选项中选择任务管理器
进来就是这个页面,这台是没有GPU的
这台是有GPU的
首先点性能选项,然后点GPU。在右上方会显示GPU名称,只有带NVIDIA的英伟达显卡的电脑才能安装GPU版本,否则其他的就只能安装CPU版本。我会写两部分,各位根据自己的电脑选择观看就好
二、CPU版 2.1 安装Anaconda 首先去官网下载Anaconda。
点击download,下载的就是最新版本的。
下载完成后,直接运行下步就行 注意到路径这块,最好是全英文。
接下来根据个人喜好勾选,可以不用管直接下一步安装好就行。
那怎么验证是否安装好了呢?
在开始菜单下,找到带有绿色图标的Anaconda,点击就可以打开Anaconda的图形化界面
点击环境,看到base(root),这个就是默认的一个虚拟环境,代表我们安装成功了。
2.2 创建虚拟环境 为什么需要学会这个呢?其实刚刚安装好Anaconda会自带一个基础环境。但是我们后续的项目每一个需要的安装包不同,为了避免冲突,所以我们可以为每一个项目配置一个虚拟环境,这样就不相互打扰了。
上面两个是Anaconda命令窗口的位置,随便点击那个都可以。
conda env list 输入上面的命令就可以查看当前有多少虚拟环境。
• 利用 conda create 指令创建新的虚拟环境
• conda create –n 虚拟环境名字 python=版本 演示如下:
会出现如下图
输入y就行,然后就是等待安装。好了以后用指令检查一下,如下,就是成功的。
2.3安装pytorch 等等,安装前这里还有一个问题,因为我们的安装指令都是从国外的通道下载,下载速度会非常慢。
所以我们想要下载快还是得用国内的镜像地址。
conda config --show 输入上面的指令可以查看我们的通道地址
现在我们的环境中通道是defaults,也就是说它会从国外给我下载包。
也可以通过下面的指令看到
conda config --get 下面是一些镜像地址
概述 数据库(Database,DB)是按照数据结构来组织、存储和管理数据的仓库,其本身可被看作电子化的文件柜,用户可以对文件中的数据进行增删改查等操作。
数据库系统是指在计算机系统中引入数据库后的系统,除了数据库,还包括数据库管理系统(Database Management System,DBMS)、数据库应用程序。
数据库技术的发展 🐬人工管理阶段
数据不在计算机中长期保存没有专门的数据管理软件,数据需要应用程序自己管理数据是面向应用程序的,不同的应用程序之间无法共享数据数据不具有独立性,完全依赖于应用程序 🐬文件系统阶段
数据可以在计算机外存设备上长期保存,可以对数据反复进行操作通过文件系统管理数据,文件系统提供了文件管理功能和存取方法在一定程度上实现了数据独立性和共享性,但非常的薄弱 🐬数据库系统阶段
数据结构化数据共享数据独立性高数据统一管理与控制 三级模式 美国国家标准协会(American National Standards Institute,ANSI)所属的标准计划与需求委员会(Standards Planning and Requirements Committee,SPARC)在1971年公布的研究报告中提出了 ANSI-SPARC体系结构,即三级模式结构(或三层体系结构)。
ANSI-SPARC最终没有成为正式标准,但它仍然是理解数据库管理系统的基础。
三级模式是指数据库管理系统从三个层次来管理数据,分别是外部层(External Level)、概念层(Conceptual Level)和内部层(Internal Level)。
这三个层次分别对应三种不同的模式,分别是外模式、概念模式和内模式。
在外模式与概念模式之间,以及概念模式与内模式之间,还存在映像,即二级映像。
外模式面向应用程序,描述用户的数据视图;内模式(又称物理模式、存储模式)面向物理上的数据库,描述数据在磁盘中如何存储;概念模式(又称为模式、逻辑模式)面向数据库设计人员,描述数据的整体逻辑结构。
由于三级模式比较抽象,为了好理解,假设有一个电子表格来保存商品信息表,如下:
🐬概念模式
概念模式类似于表格的列标题,他描述了商品表中包含哪些信息。
概念模式在数据库中描述的信息还有很多,如多张表之间的联系,表中每一列的数据类型和长度等。
🐬内模式
Excel表格另存为文件时,可以选择保存的文件路径、保存类型等,这些与存储想关的描述信息相当于内模式。
在数据库中内模式描述数据的物理结构和存储方式,如堆文件、索引文件、散列(Hash)文件等。
🐬外模式
在打开一个电子表格会显示表格中全部的数据,将数据提供给用户时,出于权限,安全控制等因素考虑,只允许用户看到一部分数据,或不同用户看到不同的数据,这样的需求就可以用视图来实现。视图和基本表的关系如下:
基本表中的数据是实际储存在数据库中的,而视图中的数据是查询或计算出来的。由此可见,外模式可以为不同的用户需求创建不同的视图,由于不同的用户需求不同,数据显示方式也会多种多样。
一个数据库中会有多个外模式,而概念模式和内模式则只有一个
二级映像 三级模式是数据的三个抽象级别,每个级别关系的重点不同。为了使三级模式之间产生关联,数据库管理系统在三级模式之间提供了二级映像功能。
二级映像是一种规则,它规定了映像双方如何进行转换。通过二级映像,体现了逻辑和物理两个层面的数据独立性。
🐬逻辑独立性
外模式/概念模式映像体现了逻辑独立性。逻辑独立性是指当修改了概念模式,不影响上一层的外模式。
例如,将表库存和销量拆分到另一张表中,此时概念模式发生了更改,但可以通过改变外模式/概念模式的映像,继续为用户提供原有视图。
由此可见,逻辑独立性能够让使用视图的用户感觉不到基本表的改变。
🐬物理独立性
概念模式/内模式映像体现了物理独立性。物理独立性是指修改了内模式,不影响上层的概念模式和外模式。
例如,在 Excel 中将 .xls 文件另存为 .xlsx 文件,虽然文件格式变了,但打开文件后显示的表格内容一般不会发生改变。
在数据中,更换了更先进的存储结构,或者创建索引来加快查询速度,内模式会发生改变。此时,只需要改变概念模式/内模式映像,就不会影响到原有的概念模式。
物理独立性使得用户不必了解数据库内部的存储原理,即可正常使用数据库来保存数据。数据库管理系统会自动将用户的操作转换成物理级数据库的操作。
数据库相关的人员 数据库系统涉及一些人员,主要包括数据库管理员(Database Administrator,DBA)、应用程序员(Application Programmer)和最终用户(End User)。
🐬数据库管理员
数据库管理员负责管理和维护数据库,参与数据库的设计、测试和部暑。
🐬应用程序员
应用程序员负责为最终用户设计和编写程序,并进行调试和安装,以便最终用户利用应用程序来对数据库进行存取操作。
🐬最终用户
文章目录 💐文章导读💐导师自我介绍💐数据结构与算法的重要性🔓在岗位招聘中🔓在校招笔试中🔓在校招面试中🔓在未来工作中 💐数据结构与算法如何学习⤴️学习路线⤵️学习方法↪️几点建议 💐关于本次新星计划💐如何打造一篇高质量文章与热榜算法解读 💐文章导读 2023新星计划火热进行中~ 我将担任数据结构与算法学习方向导师。本文我将为大家进行数据结构学习解读。了解数据结构是什么与数据结构的重要性(在校招中、在面试中、在笔试中、在工作中),并为大家阐明此次活动的主要学习内容与学习方法。同时,为大家带来文章创作技巧解读与热榜算法解读,教会大家如何轻松登上热榜~
💐导师自我介绍 大家好,我是花想云(西安第一深情),C/C++领域新星创作者、新星计划导师、CSDN内容合伙人、阿里云专家博主(当然这些都是虚名罢了)。本人目前大二在读、喜欢搞点技术、唱、跳、rap…
☘️学习领域:C语言、C++、Linux、数据结构、算法(暂时还有欠缺)、数据库(暂时还有欠缺)等等。
☘️特长:昵称特别长。
☘️个人经历(可略)
依稀记得我是在2022年10月份左右在C站发布了第一篇文章——初识C语言,之后便一发不可收拾…在C站摸爬滚打数月,也渐渐收获了一些粉丝,这就像我的兴奋剂一样,督促着我不能懈怠。相信大家也曾经历过这种感觉,阶段性的成就感总能激发我们的斗志。我不清楚当初我帮助过的几位小粉丝是否依旧如同向我提问时那样仍然热爱学习,但是我至少感受过为别人解惑的快乐~
除了粉丝,我还收获了一些好朋友,认识了一些大佬~ 疯狂的剽窃大佬的智慧。也许你之前注意过,曾几何时的周榜总是有几位大佬霸榜,像哪吒、敖丙、不渴望力量的哈士奇、几何心凉(顺序无含义全凭感觉)等等。也曾幻想过成为向他们一样的大佬,但我深知这也仅仅是幻想~ 但是,重点来了!!我可平时不是干瞪眼的盯着人家的主页瞎幻想,这也是我曾经涨粉的方式之一:大佬的评论区总是人很多,知道我要干什么吧~ 从大佬的评论区里挖人!这些人会评论至少说明多少都会愿意与别人三连~ 当时我的做法就是不断地对着大佬评论区的人进行输出(给他们的文章三连)~ 引起人家的注意,多半是会回你的~(当然这只是我刚是用过的一个小技巧,不喜可喷)。
除了挖人,我还会仿照大佬的文章排版来美化自己的文章。看看头部博主的优质文章确实对新人博主有很大帮助的~ 除了文章,也可以借鉴一下大佬的专栏安排~ 再比如,偷偷大佬的配图…
今年3月份,我第一次在小雅兰那里听说了新星计划活动~ 抱着试一试的心态决定加入我擅长的赛道例如C/C++、数据结构等,结果wc,竟然没有!没办法,只能转头投入python赛道混一下~ 就这样阴差阳错之下我来到了哈哥(不渴望力量的哈士奇)麾下。参加了哈哥的直播开营仪式,一下子就被哈哥粉住了,这不就是我常听说的成功人士?在哈哥的指导之下,我不断的改进自己的文章内容、改变文章风格,哈哥也是不厌其烦的指导~ 再次感谢~ 说到这里,我建议大家写文章时使用markdown编辑器,简直不要太爽!上手也十分容易~
第一次参加新星计划,我的成绩是top6,有点遗憾但不重要~ 这次活动也让我认识了文盲老顾、以山河作礼等一下好朋友,也许相比于名次而言,一些内在的所得更加重要~
接着我又参加了冯老师的C++设计模式赛道,以2周15篇文章的成绩遗憾落选~ (再说就哭了…)至于落选原因,我也不是很清楚~ 但是至少让我清楚了一点~ 并不是文章写的越多,成绩就越高。
再然后,在一个月黑风高的夜晚我辗转反侧难以入眠~ 其实是睡不着没事干,我偶然间看到了可以报名新星计划导师…
💐数据结构与算法的重要性 🔓在岗位招聘中 几乎在所有的大厂以及中小厂的开发岗位都要求掌握数据结构!!!如下图所示:
🔓在校招笔试中 目前校园招聘笔试一般采用Online Judge形式, 一般都是20-30道选择题+2道编程题,或者3-4道编程题。
2020奇安信秋招C/C++方向
美团2021校招笔试
网易2021校招笔试-C++开发工程师
可以看出,现在公司对学生代码能力的要求是越来越高了,大厂笔试中几乎全是算法题而且难度大。算法不仅笔试中考察,面试中面试官基本都会让现场写代码。而算法能力短期内无法快速提高了,至少需要持续半年以上算法训练积累,否则真正校招时笔试会很艰难,因此算法要早早准备。
🔓在校招面试中 一位学长在CVTE的面试 1.怎么计算一个类到底实例化了多少对象?
2.如果还有一个派生类继承了这个类,那么如何计算这两个类,各自实例化了多少对象?
3.你了解联合体和结构体吗?
4.如何测试一个机器是大端还是小端?
5.你了解队列和栈吗?
6.怎么用两个栈实现一个队列。
7.你使用过模版吗?
8.写一个比较两个数大小的模板函数。
9.你使用过容器吗?
10.判断两个链表是否相交。
11.Vector和数组的区别。
12.你在学校里做的最满意的一个项目是什么?简述一下这个项目。
某学长腾讯的面试 1、自我介绍;
2、学习STL具体是怎么开展的?
3、如果一款产品给你怎么检测内存泄露?
4、进程间通信方式,共享内存是怎么实现的,会出现什么问题,怎么解决?
5、TCP为什么是可靠的?可靠是怎么保证的?为什么要三次握手?为什么三次握手就可以可靠?
6、Http数据分包问题;
7、Vector相关;
8、Hashmap相关;
文章目录 在线办公时代,如何选择合适的云办公软件?在线文档石墨文档腾讯文档飞书文档 远程控制ToDesk向日葵 会议协同腾讯会议ZOOM 总结 在线办公时代,如何选择合适的云办公软件? 随着数字经济的发展和疫情的影响,云办公已成为企业数字化转型和远程协作的必然趋势。云办公的发展不仅意味着工具与技术的迭代,更是组织环节与业务流程的进化。云办公可以突破传统办公模式在地域、时间、终端设备上的限制,既简化了员工与团队的办公流程,给用户带来灵活、方便快捷、低成本且高效的云端办公体验,同时也有助于提升企业或组织的运转效率。
但其实早在疫情初期,我们谈的云办公是狭义上的云办公,并不是广义上的办公,只能以“办公文档”作为云办公中心,实现工作上的编辑、储存、写作、沟通的Saas服务。而随着疫情结束后的全面开放,云办公才真正迎来了全方位的发展。远程控制、设计协同、会议沟通……众多云办公软件如雨后春笋般涌现,目前市场上有许多不同类型和功能的云办公软件,如何选择合适的云办公软件是许多企业和个人面临的问题。
本文将从在线文档、会议协同和远程控制三个方面,对比分析石墨文档、腾讯文档、飞书文档、腾讯会议、ZOOM、ToDesk和向日葵等主流云办公软件的多个方面,希望能够为您提供一些参考和建议。
在线文档 在线文档是指可以在网页或移动端进行创建、编辑、共享和协作的文档软件,包括文字、表格、幻灯片等常见格式。在线文档可以实现多人实时协作编辑,支持多种导入导出格式,方便与其他平台或软件进行数据交换。在线文档是云办公中最基础也最常用的工具之一。
石墨文档 石墨文档是支持云协作的办公软件(类似Google Docs、Quip),多人可同时编辑文档和表格,响应速度快,个人版免费,只需姓名或手机号或邮箱即可协作。
石墨文档设计iOS风,体验跟其他云办公类似。组件功能还是非常齐全的,文档、表格、幻灯片、思维导图、表单、白板等功能都可以实现,也可在微信公众号内开启文档编辑。
石墨文档疫情期间个人高级版免费,会员收费不贵,但个人版图片上传限制10M。收费项主要是表格操作,excel重度用户需付费开通功能。
企业版收费方面相对于同行来说价格也算比较实惠,不过目前大多数企业都是依托企业微信和钉钉开展在线文档协作,所以在这方面石墨算不上非常有优势。
腾讯文档 腾讯文档是腾讯产品,QQ、微信友好,可设置好友访问、编辑权限,支持多种版本Word、Excel和PPT。功能优势是QQ账号登录即可新建文档,但组件工具不如MS Office 365和金山WPS云文档多。腾讯文档还可发布成网页分享给其他人看,并且能设定编辑权限。
腾讯文档有最基础的文档、表格、幻灯片组件,也有创建在线收集表的功能。腾讯文档相较于石墨文档来说,功能还是有点少的,像思维导图之类的组件都没有。
腾讯文档会员在偶尔有活动的时候搭配优惠券降到了69/年,不到6块钱一月的价格还是挺良心的。普通用户最大只能上传10M图片,会员最高可以上传20M图片,对于新媒体或者设计来说限制图片上传大小很难受。
飞书文档 飞书云文档汇集了在线文档、表格等在线创作工具,并提供安全、强大的云端存储和内容管理能力,对文档、表格和文件都可以灵活设置浏览、编辑、评论、分享等权限,让团队协同既高效,又安全。
飞书的文稿类型包括文档、表格、多维表格、思维笔记。提供了丰富的文本编辑功能,比如各种基本的格式编写,更方便的是支持各种嵌入的其他文件类型,比如流程图、UML图、思维导图等,这对于产品和运营同学来说,省去了跨工具交流的烦恼。
不过在疫情结束后,飞书全面开启了收费模式,此举遭到了原有用户的强烈反弹。今年飞书不仅是开始收费那么简单,而是用远高于行业的高定价抛弃了中小型企业。
远程控制 远程控制可以让用户通过网络连接远端的电脑或云端的虚拟桌面,实现办公、娱乐等目的。远程控制可以节省用户的硬件成本,提高工作效率,保障数据安全,适应不同的场景需求。远程控制也有一些缺点,比如需要稳定的网络环境,可能会影响用户和同事之间的沟通,需要注意保护个人隐私等,所以如何选择一款好用、安全、易部署的软件是每个云办公的企业和员工急需考虑的事情。
ToDesk 国产黑马级远控应用,疫情下应运而生。上线2-3年间,主要靠用户口碑互相传用,至今已累计百万日活用户,超千万台装载设备,实打实的远控产品王之一。远控连接的操作是相当的便捷,将被控制设备上的双码填写到主控电脑上的对应位置,即可完成远程连接。这里我们能看到整体的连接速度还是相当快的。
完成远程连接之后,我们可以对远端电脑上的资料、软件、网页等进行访问及修改等操作,为了给大家更清晰地展示,我用远程游戏实测了下整体的延迟情况和跟手程度,本来游戏就非常考验电脑的性能,如果想要把远端设备上的游戏地图或操作远程高清流畅地实时传输过来,就非常考验远控软件的速度和画质。
除了以上一些远程操作能流畅支持之外,ToDesk还能实现同时控制多台电脑。被控端的画面支持多标签展现,就像网页一样可以随意切换,可以应用在远程运维或者远程将文件在多个设备之间传输的场景中,10台以内操作起来都是没有问题的,但如果你主控电脑性能不佳、带不动,超过10台之后可能会出现卡顿的现象。
向日葵 作为远控软件,向日葵同样也以远程连接为主,进入软件的第一个界面就是本机设备的识别码和验证码,右侧的另一个区域则是发起远控指令的窗口,获取被控设备的双码,点击远程协助即可连接。
不过与其他软件不同的是,向日葵除了软件还开发了许多配套硬件,因此很多软件的远控功能,都需要搭配向日葵的硬件才能使用。如远程开机,需搭配向日葵的开机插座、开机插线板、开机盒子等硬件;远控移动设备,iOS需搭配向日葵UUPro硬件,一些功能在使用上有一定的门槛。
向日葵的远程画面也不错,与ToDesk不相上下,播放视频画面也同样清晰。同样适合对画质有较高需求的用户使用。
不过稍稍出现一些延迟,向日葵也有网络诊断的窗口,显示延时在25-30ms徘徊,不过整体影响不大。比较可惜的事画质和流畅度都还不错的向日葵,没想到稳定性出乎意料的差,我远程连接还不到10分钟,就自己断开了连接,想重新连接的时候,却显示设备不在线。以为是网络的问题,换了手机热点,还是出现这种情况。这对于云办公来说无疑是相当致命的,整个办公流程会突然中断,如果在进行重要的会议或者编辑,还是挺让人糟心的。
会议协同 会议协同是指可以在网页或移动端进行视频通话、屏幕共享、白板协作等功能的软件,可以实现跨地域、跨平台的远程沟通和协作。会议协同是云办公中最重要也最常用的工具之一。
腾讯会议 腾讯会议作为专业会议软件在国内使用广泛,腾讯会议移动端能在微信小程序里直接发起和点击进入会议。依托为细心的庞大用户群,在国内有临时会议需求的情况下,腾讯会议最易上手使用。
在线会议最怕出现用户掉线、直播卡顿甚至闪退的现象,而腾讯会议最高支持5万人同时在线,还能够保障参会者拥有最高1080P高清画质和流畅的音频体验,大幅提高了会议直播的容错率。在实测过程中自身网络低于80ms的延迟,基本可以做到实时音画同步。
此外,腾讯会议支持会议中的强用户互动,在实际会议过程中,有与会人员对讲解内容有疑问的话,可以申请举手问答和连线,甚至通过共享批注在投屏内容上标注问题,有效提升了员工的参与度和工作效率。
ZOOM Zoom用户可通过手机、平板电脑、PC与工作伙伴进行多人视频及语音通话、屏幕分享、会议预约管理等商务沟通,但是从2021年8月23日起,Zoom之后在中国大陆将仅通过第三方提供视频会议服务。简单地说,你想在中国大陆使用zoom需要通过代理商,售后服务有延迟。
这里就不多做介绍ZOOM,如果是国外的用户ZOOM的使用体验还是比腾讯会议好的,但国内的用户通过上述简单介绍可以看到腾讯会议和Zoom的功能差不多,想要在国内使用Zoom需要通过代理商,个人用的话这个性价比就没有腾讯会议高了,可以满足日常会议需求。
总结 根据对3种不同类型的云办公软件的分析,我们可以看到在线文档可以实现实时同步、版本控制、权限管理等功能,方便团队协作和沟通。但需要稳定的网络环境,可能存在数据安全和隐私风险,以及与本地软件的兼容性问题。会议协同可以模拟面对面的交流场景,提高沟通效率和质量,节省时间和成本。可需要高质量的音视频设备和网络环境,可能存在干扰和打断的情况,以及与不同平台的兼容性问题。远程控制可以实现跨地域、跨设备的工作模式,方便进行技术支持和故障排除。但是需要安装专用软件或插件,可能存在数据安全和隐私风险,以及与不同系统的兼容性问题。
针对不同程度的云办公需求,我给出以下建议和选择:
● 轻度云办公:轻度云办公的用户,推荐使用云文档+配合远控软件(移动+PC),可以基本满足与同事之前的文件共享、修改、审批功能,平时甲方突发刁难,也能立马通过身边的设备获取重要文件,节省车马奔波。对于经常忘记保存文件、备份文件的朋友们,将资料放在云端或者远控随时调取都是非常好的选择。
● 中度云办公:中度云办公的用户,除了以上的简单文件获取需求之外,高负载的工作内容不是简单的手机、平板就能完成。此时可以选择使用远程控制软件,调用高性能电脑或者工作站,处理复杂工作内容,比如视频剪辑、建模设计更或者是检测实验室数据。并且还能通过视频会议功能,解决异地开会的烦恼,不建议直接在传统通讯软件发起会议。专业的会议软件还能完整记录下会议全程,并有投屏等多种专业功能可选择。
● 重度云办公:重度云办公用户,基本一周不怎么需要到公司工作,建议在家里配置好高性能电脑或者采买高性能云电脑满足工作基础需求,并搭配视频会议还有项目管理软件,与同事协同处理工作,互相监督工作进度。
通过多年的远程办公经验,在线文档可以搭配着企业采买的通讯软件使用,比如企业微信就使用腾讯文档,没有指定软件的话,推荐使用石墨文档,流畅度和实用性很高。远程控制软件推荐使用ToDesk,从流畅度和稳定性都强于其他家,如果企业大规模使用,建议采买企业版本,阻止人为导致企业信息泄漏行为。会议协同方面,推荐使用腾讯会议,虽然最近的收费风波闹的沸沸扬扬,但是小团队使用依旧非常给力,大规模使用依旧建议购买收费版本,使用体验更给力。
以上,就是本篇文章的全部内容。感谢您的阅读和参与。如果您对本文有任何意见或建议,欢迎在下方留言~
文章目录 1. 在STL中的map与set2. 修改自己实现的红黑树修改结构定义红黑树的insert中如何取到key迭代器operator++operator - -beginendtypename 问题map 中 operator[]的实现解决自己实现的迭代器的key值可以被修改问题 3. 完整代码RBTree.hmap.hset.h 1. 在STL中的map与set 在STL中,map和set都是使用的红黑树
map与set在STL中实现是一样的
对于value_type,map的第二个模板参数是pair,而set的第二个模板参数是key
这样写是为了map和set使用同一颗红黑树去复用map和set
set < K > -> rb_tree<K,K>
map<K,V> - > rb_tree<K,pair<const K,V>>
第一个模板参数拿到单独K的类型,使用Find erase接口函数的参数是K
第二个模板参数决定了树的节点是 K 类型 or K V类型
2. 修改自己实现的红黑树 在上一篇文章中 ,实现了红黑树的插入等接口功能,
但是只能对于K V使用,修改模板参数使K或者 K V 都能调用
点击查看: 自己实现的红黑树
修改结构定义 原本自己实现的红黑树 模板为 template<class K,class V>
第一个参数代表 key ,第二个参数 代表 value
把第二个参数 改为 T 即 template<class K,class T>
按照STL的写法,使用第二个模板参数决定树的节点
原本的kv包含K V ,但是由于要调用map 和set,所以不知道到底传过来的是什么
最新的code,按步骤安装,趟完pip和github的坑,终于启动服务 然后悲催的卡在浏览器这一步,一直在loading,折腾一下午,尝试可能有效的步骤,也许最后一步才有用:
1. 启动IIS服务
2. 配置localhost 指向 127.0.0.1
3. 使用网址http://localhost:7860,非127.0.0.1:7860,活了~~
=========================分割线==========================
很不幸,没几天就又不行了,尝试了一些方法,最后在github buglist找到解决方法:
[Bug]: Stuck loading · Issue #10063 · AUTOMATIC1111/stable-diffusion-webui (github.com)
具体原因是fonts.googleapis.com 链接不畅,一万个cmn
装个浏览器插件,重定向一下就好了:
Gooreplacer (jiacai2050.github.io)
加载多个LoRA并随时切换 参考Multi Adapter support
要求 peft>=0.3.0
用法说明 在加载第一个适配器时,可以通过 PeftModel.from_pretrained 方法并指定 adapter_name 参数来给它命名。否则,将使用默认的适配器名称 default。要加载另一个适配器,请使用 PeftModel 的 load_adapter() 方法,例如:model.load_adapter(peft_model_path, adapter_name)要切换适配器,请使用 PeftModel 的 set_adapter() 方法,例如:model.set_adapter(adapter_name)要禁用适配器,请使用上下文管理器 disable_adapter(),例如:with model.disable_adapter()特别适用于LoRA方法:要合并和卸载当前活动的适配器,以便将LoRA权重添加到基础模型权重中,并将注入的LoRA模型删除以恢复具有添加了LoRA权重的Transformers基础模型的模型,请使用 merge_and_unload()方法,例如:model = model.merge_and_unload() 例子 from peft import PeftModel from transformers import LlamaTokenizer, LlamaForCausalLM, GenerationConfig model_name = "decapoda-research/llama-7b-hf" tokenizer = LlamaTokenizer.from_pretrained(model_name) model = LlamaForCausalLM.from_pretrained( model_name, load_in_8bit=True, device_map="auto", use_auth_token=True ) model = PeftModel.from_pretrained(model, "tloen/alpaca-lora-7b", adapter_name="eng_alpaca") model.load_adapter("22h/cabrita-lora-v0-1", adapter_name="portuguese_alpaca") model.set_adapter("eng_alpaca") instruction = "Tell me about alpacas." print(evaluate(instruction)) """output The alpaca (Vicugna pacos) is a domesticated species of South American camelid.
本笔记是总结了B站DR_CAN的卡尔曼滤波器的课程,他的B站主页为:DR_CAN的个人空间_哔哩哔哩_bilibili
PS:虽然我不是学自控的,但是老师真的讲的很好! 一个补充的参考链接,能够帮助进一步了解Q、R对这个实验的影响:
关于卡尔曼滤波中协方差矩阵Q,R的一些思考,卡尔曼原理讲解
目录
Lesson1 递归算法
Lesson2 数学基础_数据融合_协方差矩阵_状态空间方程
Lesson3 卡尔曼增益的详细推导
Lesson4 误差的协方差矩阵Pe的数学推导
Lesson5 直观理解卡尔曼滤波以及一个实例
当计算误差Wk大于测量误差Vk时
当计算误差Wk小于测量误差Vk时
本例的python代码
突然想到一个问题:如何确定卡尔曼滤波要迭代多少次呢?
总结一下
1.算法迭代的五个步骤
2.算法的python代码实现
Lesson1 递归算法 Lesson2 数学基础_数据融合_协方差矩阵_状态空间方程 Lesson3 卡尔曼增益的详细推导 Lesson4 误差的协方差矩阵Pe的数学推导 Lesson5 直观理解卡尔曼滤波以及一个实例 下面具体看一下,之前反复提到过:如果模型计算误差Wk小,最终的估计值就更偏向计算值;
如果测量误差Vk小,最终的估计值就更偏向于测量值。
而在这个示例中,Wk/Vk的偏差是以其协方差矩阵来反映的(主对角线是方差)。
当计算误差Wk大于测量误差Vk时 Wk的协方差矩阵为Q,Vk的协方差矩阵为R:
结果图:
结果分析:
真实的实际速度是蓝色曲线,最终的估计速度即为后验估计速度,是黄色曲线。对比它们之间的偏差能够看出估计值与实际值之间的误差,从而判断算法的准确度。
在最优化方法中我们知道:最优估计有不同的准则,比如:最小二乘估计、最小方差估计、极大后验估计等等。具体内容不赘述。
我们要知道,如果没有不确定性(即Wk和Vk),那么估计值就是实际值(精准估计)。
卡尔曼滤波中采用的就是使得误差的方差最小为最优估计准则:因为如果后验估计值和真实值越接近,那么误差ek的变化就很小,即误差ek的方差很小。
进一步推导,考虑到误差ek会有很多不同的分量(因为状态量不同,比如说此例子中就是有状态量X1表示位置,状态量X2表示速度,那么它们就分别有误差e1和e2)。要使得总误差方差最小,那么误差各个分量的方差之和加起来就要最小。而“误差各分量的方差之和”正好是误差的协方差矩阵的主对角线之和——迹。
故此我们引入了Wk的协方差矩阵为Q,Vk的协方差矩阵为R。然后其方差越大时,说明误差越大,即越不可以相信。所以此处计算误差较大,可以看到先验估计速度(灰色)偏离实际速度(蓝色)的程度要大于测量速度(红色)偏离实际速度(蓝色的程度)。
所以最后的估计值——后验估计速度(黄色)曲线也是更为接近测量速度(红色)曲线。
一种通俗的理解方式就是:建模计算值和测量值都是不准确的,两者的不准确程度分别以计算误差的方差和测量误差的方差来衡量,方差越大越不可以相信。在两个不准确的值的基础上尽量准确估计,就是谁方差越小,越相信谁,越靠近谁。
当计算误差Wk小于测量误差Vk时 结果分析:
由于此时测量误差的方差较大,导致测量值很不可信,其变化的程度可以看到也很离谱。但是由于后验估计值(黄色)更为依赖模型计算值(灰色),所以后验估计值也没离实际值(蓝色)太远。
而这,正是卡尔曼滤波的作用:在不准确之中得到最准确的估计值。
本例的python代码 源代码来源:B站用户东爱北的GitHubhttps://github.com/liuchangji/2D-Kalman-Filter-Example_Dr_CAN_in_python
我对其中的源码做了注释,以及对一个小错误进行了修改(产生符合高斯分布的变量时,scale输入的应该是标准差,而协方差矩阵里面主对角线上面是方差,所以要开根号,要注意开完根号要保证其类型仍为np.float) import numpy as np import math import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 #定义一个产生符合高斯分布的函数,均值为loc=0.0,标准差为scale=sigma,输出的大小为size def gaussian_distribution_generator(sigma): return np.
Nacos的简介及安装和使用 1. Nacos简介1.1 核心特性1.2 常见的注册中心1.3 Nacos结构图 2. 如何安装和配置Nacos?2.1 Nacos的安装2.2 如何使用Nacos? 1. Nacos简介 Nacos是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发和维护。
Nacos支持多种注册中心和配置管理器,包括Spring Cloud Discovery、Dubbo、Kubernetes和Apache ServiceComb等。
Nacos提供了REST、gRPC和Java SDK等多种API,使得开发人员可以轻松地与Nacos进行交互
1.1 核心特性 配置管理:Nacos提供了统一的配置管理平台,可以帮助用户集中管理不同环境的配置信息。用户可以通过Nacos的控制台或API进行配置的新增、修改、删除等操作,并且支持配置的版本管理。服务发现和注册:Nacos提供了服务注册和发现的功能,可以帮助用户快速发现和访问服务。服务提供者在启动时将服务的元数据注册到Nacos,服务消费者通过Nacos获取服务提供者的地址信息,并进行调用。动态配置:Nacos支持动态配置,可以在不停机的情况下动态修改配置信息。例如,可以通过Nacos修改数据库连接池的最大连接数,而不需要重启应用。健康检查:Nacos提供了健康检查的功能,可以检测服务的可用性。当服务不可用时,Nacos会自动将该服务从服务列表中剔除。路由策略:Nacos支持多种路由策略,可以根据不同的规则将请求路由到不同的服务提供者。 1.2 常见的注册中心 ZooKeeper:ZooKeeper 是一个高性能的分布式协调服务,它可以作为注册中心和配置中心。它最初是由雅虎开发的,现在是 Apache 的顶级项目之一。ZooKeeper 的主要优点是可靠性和稳定性,但它需要对分布式系统的概念有一定的了解。你可以在这里找到有关 ZooKeeper 的更多信息:ZooKeeper 官方文档Consul:Consul 是一个由 HashiCorp 开发的服务网格解决方案,它包括服务发现、配置、安全和流量管理等功能。Consul 的优点是易于使用和部署,同时提供了广泛的 API 和插件支持。你可以在这里找到有关 Consul 的更多信息:Consul 官方文档Eureka:Eureka 是 Netflix 开发的一个服务发现组件,它提供了强大的客户端库和服务端组件。Eureka 的优点是易于使用和部署,同时具有高可用性和可扩展性。你可以在这里找到有关 Eureka 的更多信息:Eureka 官方文档Nacos:相对于 Spring Cloud Eureka 来说,Nacos 更强大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。 1.
最近开始学习YOLOv5,踩了不少坑,总结一下问题。
配置环境按照这篇教程来的:Yolov5的配置+训练(超级详细!!!)_小学生玩编程的博客-CSDN博客
训练数据集跟着炮哥的这篇:目标检测---教你利用yolov5训练自己的目标检测模型_yolov5如何训练自己的模型_炮哥带你学的博客-CSDN博客
问题描述: 环境配置完,在跟这炮哥教程训练数据集的时候,Pycharm终端运行以下命令
pip install -r requirements.txt 此时出现了pycocotools,opencv-python和thop这三个库的安装问题,出现提示:
不满足软件包要求' Opencv- python>=4.12,thop'' pycocotools>=2.0
分析:
就是库的安装出现了问题,所以尝试单独安装thop库
1. 直接在annaconda prompt用各种安装方法,例如:
pip install thop conda install thop 都不管用,都会出现error
2. 当时报错的信息建议我们去www.anaconda.org下载
pycocotools库就是用这种方法解决的,但是thop似乎在网站里搜不到
thop库的解决方法:
Step1:找到 thop 包的github官方链接
GitHub - Lyken17/pytorch-OpCounter: Count the MACs / FLOPs of your PyTorch model.
Step2:下载压缩文件,解压到虚拟环境的site-packages文件下
我的虚拟环境叫pytorch
对应路径是 D:\Applications\anaconda3\envs\pytorch\Lib\site-packages
Step3:打开annaconda prompt,激活进入自己的虚拟环境
env_name改为你的的虚拟环境名字
conda activate env_name Step4:cd到压缩包解压的路径下
注意这里cd到路径下似乎只能一个一个来
直接cd D:\Applications\anaconda3\envs\pytorch\Lib\site-packages似乎不管用
cd.. //返回到上一个文件夹 cd /d d: //从C盘切换到D盘 上面我有手残输错的请忽略
(pytorch) C:\Users\26977>cd.. (pytorch) C:\Users>cd.
用vue+elementui写了一个图书管理系统 转载自公号:java大师
目前是指一个纯前端的展示,后端还在开发中,前端接口是通过json-server模拟的
用到的技术栈 1、vue.js
2、elementui
3、json-server
4、axios
5、vue-router 动态路由
目录结构 1、components文件夹是封装的通用的Mytable和Myform及Nav等,主要用于多次调用时,简化代码操作
<el-card class="box-card"> <my-table :columns="columns" :data="tableData" @row-click="handleRowClick" @button-click="handleButtonClick"></my-table> </el-card> <el-dialog title="修改书籍" :visible.sync="dialogEditVisible"> <MyForm :form-groups="formGroups" :form-data="formData"></MyForm> <div slot="footer" class="dialog-footer"> <el-button @click="dialogEditVisible = false">取 消</el-button> <el-button type="primary" @click="handleUpdateBook">确 定</el-button> </div> </el-dialog> 比如以上两个就是我们自己封装的table和form,在需要使用的地方直接调用即可
2、directives文件夹用户自定义指令,主要用于按钮的展现和隐藏
export default { inserted:(el, binding, vnode) =>{ let { userInfo = {} } = Store.getters.userinfo let { permissions = [] } = userInfo permissions && !permissions.some(item => item===binding.
文章目录 一、什么是NLP二、NLP任务类型三、NLP的预处理英文 NLP 语料预处理的 6 个步骤中文 NLP 语料预处理的 4 个步骤第1步:收集您的数据---语料库第2步:清理数据 --- 文本清洗第3步:分词第4步:标准化第5步:特征提取 四、NLP表示方式离散式表示(Discrete Representation)分布式表示(Distributed Representation 五、NLP的业务场景六、结束语七、参考资料 一、什么是NLP NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向
自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机如何准确并快速地处理大量的自然语言语料库。什么是自然语言语料库?它是用现实世界语言表达的语言学习,是从文本和语言与另一种语言的关系中理解一组抽象规则的综合方法。
人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。不仅如此,人类间的沟通交流是有上下文信息的,这对于计算机也是巨大的挑战。
二、NLP任务类型 我们首先来看看NLP的任务类型,如下图所示:
主要划分为了四大类:
类别到序列序列到类别同步的序列到序列异步的序列到序列 其中“类别”可以理解为是标签或者分类,而“序列”可以理解为是一段文本或者一个数组。简单概况NLP的任务就是从一种数据类型转换成另一种数据类型的过程,这与绝大多数的机器学习模型相同或者类似,所以掌握了NLP的技术栈就等于掌握了机器学习的技术栈。
传统方式和深度学习方式 NLP 对比
三、NLP的预处理 为了能够完成上述的NLP任务,我们需要一些预处理,是NLP任务的基本流程。预处理包括:收集语料库、文本清洗、分词、去掉停用词(可选)、标准化和特征提取等。
图中红色的部分就是NLP任务的预处理流程,有别于其它机器学习任务的流程
英文 NLP 语料预处理的 6 个步骤 分词 – Tokenization词干提取 – Stemming词形还原 – Lemmatization词性标注 – Parts of Speech命名实体识别 – NER分块 – Chunking 中文 NLP 语料预处理的 4 个步骤 中文分词 – Chinese Word Segmentation词性标注 – Parts of Speech命名实体识别 – NER去除停用词 第1步:收集您的数据—语料库 对于NLP任务来说,没有大量高质量的语料,就是巧妇难为无米之炊,是无法工作的。
在这个数字时代,手机已成为我们生活的重要组成部分。我们将它们用于各种用途,从跟踪我们的工作和社交日程到与亲人交流。
然而,有时我们的手机会成为令人沮丧的源头,尤其是当我们不小心将自己拒之门外时。但是您知道可以使用计算机解锁您的 Android 手机吗?您可以尝试多种方法,我们在下面概述了其中六种最有效的方法。现在让我们探讨如何从 PC 解锁 Android 手机!
1. 如何从 PC 解锁 Android 手机? 您无需成为技术专家即可了解如何操作。你会惊讶于它是多么容易。以下是您可以使用的一些方法:
1. 使用 4uKey安卓手机解锁从 PC 解锁 Android 手机 这是一款 Android 手机解锁器,可用于在不删除任何数据的情况下从 Android 手机上移除锁定屏幕。它是一个简单易用的工具,可以从任何网络浏览器访问。
4uKey安卓手机解锁(奇客软件)安卓密码解除教程
安装后,在您的计算机上启动该程序并按照以下步骤操作:
4uKey安卓手机解锁-奇客软件轻松解锁安卓设备的数字密码、指纹密码、人脸识别锁。不限型号,无需密码,没有使用门槛。https://www.geekersoft.cn/geekersoft-unlockgo-android.html在您的计算机上下载4uKey安卓手机解锁(奇客软件)。安装它并单击主界面上的 删除屏幕锁定按钮。
使用USB数据线将你的安卓手机连接到电脑,然后等待电脑加载设备信息。
确认屏幕上显示的数据是正确的。然后点击开始解锁继续。
数据包准备好后,按照屏幕上的说明重置手机。4uKey安卓手机解锁(奇客软件)将开始解除您手机上的屏幕锁定。
完成该过程后,您现在可以免密码访问您的安卓手机。
2. 使用 ADB 从 PC 解锁 Android 手机 ADB 是一个有用的工具,可让您将 Android 设备连接到 PC 并执行各种命令。它可用于多种用途,包括解锁您的 Android 手机。
要使用 ADB,您需要:
1. 使用 USB 数据线将您的设备连接到计算机。
2. 在您的 PC 上打开命令提示符或终端窗口并键入以下命令:
亚行设备
ADB shell rm /data/system/gesture.key
3. 重启你的手机,你现在应该可以在没有锁屏的情况下访问它了。
3. 使用“查找我的设备”通过 PC 解锁 Android 手机 如果您有 Google 帐户,则可以使用“查找我的设备”远程解锁您的 Android 手机。此功能专为丢失或被盗的设备而设计,但它也可以解锁您不小心将自己锁在外面的手机。
序言 即便平凡的日子仿佛毫无波澜,但在某个特定的时刻,执着的努力便会显现出它的价值和意义。
文章标记颜色说明:
黄色:重要标题红色:用来标记结论绿色:用来标记一级重要蓝色:用来标记二级重要 希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流
1 问题描述 接到一个优化场景:
小程序用户的openid作为最主要的业务查询字段,在做了缓存设计之后仍有非常高频的查询,通过埋点简单统计约在每日1000w次。
其中:由于有新增用户,新增矩阵小程序等原因
导致请求的openid根本不存在MySQL数据库中,这部分统计约占30%左右,也就是约300w次查询是浪费的。
2 解决思路 优化的思路也非常简单:布隆过滤(bloom filter)
它作为非常成熟的方案很适合类似场景,所以使用bloom在查MySQL之前优先判断openid是否存在就可以解决这个问题。
虽然平时对bloom的原理有所了解,但是本次主要的挑战是需要过滤的openid数据集有8亿,具体实施的过程中遇到了很多没有考虑过的细节,因此整理分享一下。
3 方案介绍 1. 布隆过滤 先简单描述一下bloom filter的原理
布隆过滤器(Bloom Filter)
是一种数据结构,其主要功能是判断某个元素是否出现在集合中。它通过使用多个哈希函数将元素映射到一个位数组中,并将对应位标记为1,来实现对元素的判重。如果一个元素在位数组中对应的位置上有一位为0,那么该元素一定不存在于集合中,如果所有对应位都为1,那么该元素可能存在于集合中。 具体来说:
当要加入一个元素时,使用多个不同的哈希函数对该元素进行哈希,得到多个哈希值,然后将这些哈希值对应的位数组上的位置置为1。
当查找一个元素时,同样使用多个哈希函数进行哈希,然后查看对应位置上的位,
如果存在任意一位为0,那么该元素不存在于集合中;如果所有位都为1,那么该元素可能存在于集合中,需要进一步确认。 由于布隆过滤器的判重操作只需对位数组进行一次查找,无需遍历整个集合,因此它的查找效率非常高,并且它所占用的空间相对于集合本身也非常少。
但是,布隆过滤器存在一定的误判率。
对于一个元素,如果多个哈希函数将其映射到的位都已被标记为1,则它可能被误判为存在于集合中,即有一定的假阳性率 。
误判率取决于哈希函数的数量和位向量的长度。
2. 8亿数据集怎么做布隆? 8亿数据集做布隆过滤主要需要规划的问题是 内存占用|分配、分片Hash函数规划如何论证效果 内存占用 说bloom的内存占用前,要来说明一下bloom在redis中的实现:
Bitmap Bitmap:是一种Bit数组数据结构,它的主要作用是储存0和1两个状态。
在Redis中,Bitmap通过字符串来实现,一个字符串可以存储超过2^32个元素,所以一个bloom能存储的最大上限就是2^32个,约42.9亿。
那么在redis底层bitmap 和string 其实是同一个结构,只是提供了不同的命令来进行操作,想要看一个redis 对象占用多少内存可以使用 MEMORY USAGE Key,返回的是字节数:
Bitmap内存分配 如上图bitmap操作命令:
setbit key index 1 这里有个需要注意的问题是,如果index比较大,比如在10亿位上写1,那么redis在内存分配时其实是分配了一个完整的10亿长度的数组(10亿位是1,前面的全部补0)。
可以理解为是一个非常长的字符串,而不是下意识我们想象很简单的1个bit那么小,它瞬间分配的内存大概在128M
Bitmap读取 既然一个10亿位的bitmap需要128M内存,那么很直接的想法就是,这么大的内存,bitmap读起来会慢吗?
结论当然是不会的。
因为bitmap是一个位数组,它在内存中是连续的,CPU并不需要去读取完整的128M内存,它只要获取到这个数组起始位置,+ index 就可以计算出对应的位置然后进行读取,也就是说,它的时间复杂度是 O(1)
虽然读操作是O(1)的,但是很显然创建一个大的bitmap时是非常重量级的一个操作,布隆过滤的Hash函数计算基本都是32位,64位长度的Hash值
我们无法控制bitmap的增长是一个顺序过程,所以最直接的办法就是控制最大长度
分片 -- Roaring Bitmap 目前openid数据总量已经有8亿+,肯定不能都放入一个Bitmap中,这样就会有个非常大的key,最简单的优化方向就是分片。
C++ 基础知识 九 线程和多线程 一、线程基础知识1. 进程和线程的概念2. 多线程的优点和使用场景3. 线程的生命周期4. 线程的状态5. 线程的同步和互斥5.1 线程同步5.2 线程互斥 6. 代码示例 二、C++11线程库1 C++11线程库的概念和特性2 线程库中的关键类和函数3 使用线程库创建和控制线程4 使用线程库完成线程之间的同步和互斥5 原子变量和无锁数据结构的使用 三、 多线程编程实践1 多线程程序的常见问题和调试技巧2 多线程程序的设计和实现方法3 多线程程序中的优化技巧4 异常处理和资源管理5 性能调优方法 四、 并行算法和并行计算1 并行计算和并行算法的基本概念和原理1.1 程序并发性1.2 数据并行性1.3 任务并行性1.4 同步和通信 2 C++标准库中的并行算法2.1 顺序算法2.2 并行算法2.3 并行算法的执行策略 3 使用OpenMP编写并行程序4 CUDA编程和GPU加速5 分布式计算和云计算技术 五、 多线程编程实例1 多线程下载器2 并行映射/归约算法3 任务调度器4 生产者消费者模型5 并行搜索算法 一、线程基础知识 1. 进程和线程的概念 进程是系统资源分配和调度的基本单位,也是程序的一次执行过程。线程是进程的一个执行单元,是操作系统调度的基本单位。
2. 多线程的优点和使用场景 多线程程序在提高计算机系统的并发性和响应性方面有着极其重要的作用。它可以更好地利用计算机的多核和多处理器资源,在提高系统吞吐量的同时缩短响应时间。常见的使用场景包括:
程序需要用户交互并保持响应性后台任务需要异步完成大量计算密集型任务需要加速 3. 线程的生命周期 多线程程序的生命周期包括:
创建线程运行线程线程流程控制等待其他线程完成销毁线程 4. 线程的状态 线程可以处于以下状态之一:
新创建状态:线程被创建但还未开始运行。就绪状态:线程已经准备就绪,等待CPU调度执行。运行状态:线程正在运行中。阻塞状态:线程因等待某个事件而暂停执行。死亡状态:线程退出或被终止。 5. 线程的同步和互斥 5.1 线程同步 线程同步是指多个线程按照一定规律协调工作,使得这些线程在空间、时间上按照既定规律有序地执行工作。实现方式一般有:
目录
Glide 基本使用
Glide 进阶 Glide 是一个快速高效的 Android 图片加载库,可以自动加载网络、本地文件,app 资源中的图片,注重于平滑的滚动。
Glide 第一次加载一张图片后,就会自动帮我们把这张图片加入到内存中进行管理。
Glide 基本使用 步骤1:导入 Glide 依赖
implementation 'com.github.bumptech.glide:glide:4.15.1' 步骤2: 最简单使用
with() 里面传入activity/fragment上下文、view都可以,它是一个重载的方法;load() 里面传图片,可以是 drawable/mipmap 里的图片,网络图片(url 路径)、本地(SD card)图片;into() 里放要显示图片的 ImageView。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView image = findViewById(R.id.imageView); Glide.with(this) .load(R.drawable.dp) .into(image); } 步骤3:显示结果。通过上面的步骤,我们就可以通过使用 Glide 完成对一张图片的加载。
Glide 进阶 1. 图片占位符
Glide4 中占位图的使用方法,包括(placeholder, error, fallback) 三种占位图,一般在请求网络图片的时候使用。
placeholder: 正在请求图片的时候展示的图片;
error: 如果请求失败的时候展示的图片(如果没有设置,还是展示 placeholder 的占位符);
fallback: 如果请求的 url/model 为 null 的时候展示的图片(如果没有设置,还是展示 placeholder 的占位符);