PAPERCODEhttps://arxiv.org/pdf/2311.02782.pdfhttps://github.com/caoyunkang/GPT4V-for-Generic-Anomaly-Detection 图1 GPT-4V在多模态多任务异常检测中的综合评估 在这项研究中,我们在多模态异常检测的背景下对GPT-4V进行了全面评估。我们考虑了四种模式:图像、视频、点云和时间序列,并探索了九个具体任务,包括工业图像异常检测/定位、点云异常检测、医学图像异常检测/定位、逻辑异常检测、行人异常检测、交通异常检测和时间序列异常检测。我们的评估包括 15 个数据集。
摘要 异常检测是跨不同域和数据类型的关键任务。但是,现有的异常检测模型通常是针对特定域和模式设计的。本研究探讨了如何使用强大的视觉语言模型 GPT-4V(ision) 以通用方式处理异常检测任务。我们研究了 GPT-4V 在多模态、多域异常检测任务中的应用,包括图像、视频、点云和时间序列数据,涉及多个应用领域,例如工业、医疗、逻辑、视频、3D 异常检测和定位任务。为了提高 GPT-4V 的性能,我们结合了不同类型的附加提示,例如类信息、人类专业知识和参考图像作为提示。根据我们的实验,GPT-4V 被证明在零/单次异常检测中检测和解释全局和细粒度语义模式方面非常有效。这样可以准确区分正常和异常实例。尽管我们在这项研究中进行了广泛的评估,但仍有未来的评估空间,可以从不同方面进一步挖掘 GPT-4V 的通用异常检测能力。其中包括探索定量指标、扩展评估基准、纳入多轮互动以及纳入人类反馈循环。尽管如此,GPT-4V 在通用异常检测和理解方面表现出可喜的性能,从而为异常检测开辟了一条新途径。所有评估示例(包括图像和文本提示)都将在 GPT4V-for-Generic-Anomaly-Detection https://github.com/caoyunkang/ 提供。
动机和概述 异常检测技术已广泛应用于不同的领域,如工业检测[29,98]、医疗对角线[107]、视频监控[84]、欺诈检测[30]以及许多其他识别异常情况至关重要的领域。尽管存在许多用于异常检测的技术[14,3,69,41,38,79,110,16,103],但许多现有方法主要依赖于描述正态数据分布的方法。他们经常忽视高层次的感知,主要将其视为低层次的任务。但是,异常检测的实际应用通常需要对数据有更全面、更高级的理解。要实现这种理解,至少需要三个关键步骤:
了解数据类型和类别: 第一步涉及对数据集中存在的数据类型和类别的透彻理解。数据可以采取多种形式,包括图像、视频、点云、时间序列数据等。每种数据类型都可能需要特定的异常检测方法和注意事项。此外,不同的类别可能对正常状态有不同的定义。确定正态的标准:在获得数据类型和类别后,可以进一步推理正态态的标准,这需要对数据有较高的了解。评估数据一致性:最后一步是评估提供的数据是否符合既定的正态性标准。任何偏离这些标准的行为都可以归类为异常。 我们的方法 提示 GPT-4V 进行异常检测 任务信息提示:为了有效提示 GPT-4V 进行异常检测,必须提供清晰的任务信息。本研究将提示表述如下:“请确定图像是否包含异常点或异常点。类信息提示:对数据类型和类别的理解至关重要。如果 GPT-4V 可能难以识别数据类,可能会提供显式类信息。例如,“请确定与 {CLS} 相关的图像是否包含异常或缺陷。正常标准提示:GPT-4V在回答与确定正常标准相关的问题时可能会遇到困难,有时如果没有人类专业知识,甚至无法检查标准。因此,本研究也明确提供了正常标准。例如,MVTec-LOCO [7] 中早餐盒的正常标准可以表示如下:“1.它应该包含两个橙子、一个桃子和一些谷物、坚果和香蕉片;2.水果应该在饭盒的左边,麦片在右上方,坚果和香蕉片在饭盒的右下方。参考图像提示:为确保正常标准和图像之间更好地对齐,在语言提示旁边提供了普通参考图像。例如,“第一张图片是正常的。请确定第二张图像是否包含异常或缺陷。 基于GPT-4V的异常检测评估的局限性 定性结果的优势:分析主要依赖于定性评估,缺乏定量指标,无法更客观地评估模型在异常检测方面的性能。纳入量化措施将为评估提供更有力的基础。评估案例的范围:评估仅限于有限的案例或场景范围。这种狭隘的焦点可能无法完全捕捉到实际异常检测任务中遇到的各种挑战。扩大评估案例的范围将更全面地了解模型的功能。单次互动评估:该研究主要集中在单轮对话上。相比之下,正如GPT-4V的上下文学习能力所观察到的那样[101],多轮对话可以激发更深层次的互动。单轮对话方法限制了交互的深度,并可能限制模型的理解力及其在响应异常检测任务方面的有效性。探索多轮交互可以揭示模型性能的更细致入微的观点。 实验 本研究进行了广泛的评估,以评估 GPT-4V 在异常检测方面的能力,如图 1 所示。从模态的角度来看,我们评估了图像(第 3、4、6、7、8 节)、点云(第 5 节)、视频(第 9、10 节)和时间序列(第 11 节)。从领域的角度,对工业检查(第3、4、6、5节)、医疗诊断(第7、8节)和视频监控(第9、10节)进行评估。据我们所知,这是第一项调查如此广泛的异常检测模式和领域的研究。
工业图像异常检测 不同的提示 [ 101, 56 ] 可能会导致 GPT-4V 的不同响应。我们旨在研究不同信息对提示 GPT-4V 进行工业异常检测的影响。在前面讨论的问题之后,本研究进一步发展了三个提示,a)类别信息:所需检测产品的名称,如“瓶子”和“蜡烛”,b)人类专业知识:正常外观和潜在的异常状态,并用语言表达它们,例如,“通常,给出的图像应该显示干净且结构良好的印刷电路板(PCB),并带有清晰的痕迹, 焊接组件和不同的标签。它可能存在引脚弯曲、冷焊点、元件缺失或标签污迹等缺陷“, c) 参考图像:正常参考图像,以使 GPT-4V 更好地了解正态性。我们建议在零样本设置(仅带有语言提示)或单样本设置(与语言提示一起提供一张参考图像)中评估 GPT-4V。对于每个设置,我们测试了三种不同的变体:a) 幼稚的提示,例如“请确定图像是否包含异常或缺陷”,b) 带有类信息,以及 c) 具有人类专业知识。
一、问题描述 打开电脑,发现电脑右下角的音频图标显示为X(即不可用,无法播放声音),使用音频自带的【声音问题疑难解答】(选中音频图标,点击鼠标右键,然后选择“声音问题疑难解答(T)”即可操作)后提示“一个或多个音频服务未运行”;尝试启动【Windows audio】或【Audiosrv】服务也是无法启动且提示“193 0xc1”错误。
二、问题分析 音频不能使用,一般是由于音频服务没有启动,一般去服务界面启动【Windows audio】和【Windows Audio Endpoint Builder】、【Audiosrv】服务即可;但是我这边启动这些服务的时候是报错的;那么就有可能是服务出问题了,需要进行修复(
方法一:是使用Windows自带的修复命令进行修复;
方法二:是使用第三方驱动软件(如:IT天空的万能驱动 )或电脑品牌商的官网下载对应驱动
更新音频驱动
);
三、解决办法 我这里使用Windows自带的修复命令进行修复,操作如下:
《0》使用管理员身份打开PowerShell
3.1、执行系统扫描并修复 执行系统扫描命令并修复系统,待修复命完成后,重启系统然后查看音频图标是否正常可以播放声音。
--Windows系统扫描并修复命令 sfc /scannow 3.2、若执行系统扫描修复命令后音频未修复在按如下步骤操作 《1》扫描系统镜像是否完整
DISM.exe /Online /Cleanup-image /Scanhealth 《2》检测系统镜像情况
DISM.exe /Online /Cleanup-image /Checkhealth 《3》修复系统镜像
DISM.exe /Online /Cleanup-image /Restorehealth 《4》系统扫描并修复
sfc /scannow 最后修复完成后需要重启系统,音频就可以正常使用了。
1. 安装brew /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”
安装成功 但还需要重启终端 或者 运行 source /Users/wangjun/.zprofile 否则可能无法使用
2. 安装yum brew install yum
回家路费
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明被不明势力劫持。后莫名其妙被扔到 X 星站再无问津。小明得知每天都有飞船飞往地球,但需要 108108 元的船票,而他却身无分文。
他决定在 X 星战打工。好心的老板答应包食宿,第 11 天给他 11 元钱。 并且,以后的每一天都比前一天多 22 元钱,直到他有足够的钱买票。 请计算一下,小明在第几天就能凑够 108108 元,返回地球。
运行限制 最大运行时间:1s最大运行内存: 128M 总通过次数: 1490 | 总提交次数: 1523 | 通过率: 97.8%
难度: 困难 标签: 2018
代码分享: #include <iostream> using namespace std; int main() { int day=1,i=1,sum=1; for(i=2;;i++){ day+=2; sum+=day; if(sum>=108) break; } cout<<i; // 请在此输入您的代码 return 0; }
想想大一刚开始在CSDN写作,这一坚持,就是我在CSDN的第九个年头,这也是在CSDN最有里程碑的一年,这一年我被评为CSDN的博客专家啦!先是被评为Unity开发领域新星创作者,写的关于一部分Unity开发的心得获得大家的青睐,然后一鼓作气申请了博客专家。
研究生刚开始做Unity和HoloLens 2的二次开发,后来组里接了一个更大的课题,我们需要自研一个AR头盔,从硬件到软件全部国产化自研,导师很放心我们,于是我开始从底层的SLAM做起。SLAM虽然科研不好做,很小众,但是很有挑战,也是未来的方向,所以这一年我算是踏入视觉SLAM,成为一个小SLAMer了。希望未来学成的时候,能赶上机器人大规模普及,就业一片蓝海。
视觉SLAM属于计算机视觉和机器人研究的交叉领域,因此涉及的基础知识广而分散。视觉SLAM有参考书还是比较幸运的,然而市面上的书都偏数学推导,对初学者不太友好,高翔博士的《视觉SLAM十四讲》是一本非常好的视觉SLAM教材。于是跟着高博学习实践。疫情放开了,那就又更理想的生活,记录一下2023年的成长,回顾过去,展望未来,我将从工作成长、生活娱乐和身体健康三个方面进行总结。
文章目录 一、工作成长1、开始学习C++2、学习ROS操作系统3、学习ORB-SLAM24、C++实现了一个通讯录管理系统5、从单一传感器到多传感器融合6、INDEMIND双目惯性模组运行多模态融合7、参加 “大挑”比赛8、参加 “大唐杯”比赛9、ORB-SLAM3实时运行10、INDEMIND相机Windows平台运行11、学习使用EVO工具12、ROS 系统 bag录制12、学习ORB-SLAM3的三大线程13、改进点云14、总结VI-SLAM系统15、相机标定16、Kalibr工具线对相机+IMU离线标定17、相机和IMU联合标定18、学习RANSAC算法进行点云的平面拟合19、学习OpenGL渲染20、学习Vulkan渲染21、参加全军统一考试22、参加国考23、参加京考 二、生活娱乐1、小破球2真的震撼2、世纪剧院仙剑奇侠传视听音乐会3、打卡重庆解放碑4、去了重庆的洪崖洞5、喝了鹅岭二厂的COFFEE HOLIC6、观音桥吃重庆火锅7、转了转钟书阁恢弘大气8、涂鸦一条街很有趣9、交通茶馆喝一盏茶10、四川美院逛逛11、逛逛来福士12、磁器口古镇13、蹦床公园14、学会了钓鱼15、五月天鸟巢16、参加《北京科幻大会》17、观看《银河护卫队3》18、观看《消失的她》19、观摩西安碑林博物馆20、西安ACC漫展,一发入魂沙鲁21、逛西安钟楼22、大唐不夜城逛吃23、兴庆宫游园24、汉宫露营25、观光芙蓉园26、观看《封神第一部》27、观看《长安三万里》28、环球影城第一届万圣季 三、身体健康1、开始徒步旅行2、卡丁车第一次就跑了1’113、学会了反曲弓射箭4、入门双板滑雪5、第一次骑行100km到白虎涧6、单板落叶飘更丝滑了7、入门速降山地车,体验速度与激情8、骑行功率又涨了9、学会钓鱼10、牙套摘啦,大胆笑更闪耀11、网球的中速球熟练啦,2.5-3.0的样子12、西安城墙骑山地车13、夜爬华山4H11min到达北峰14、尝试拳击,人生体验+115、公路骑行爬妙峰山5H14min16、单板学会换刃,去了富龙滑雪17、双板滑雪学会犁式 四、总结 工作成长生活娱乐身体健康开始学习C++小破球2真的震撼开始徒步旅行学习使用INDEMIND双目惯性模组世纪剧院仙剑奇侠传视听音乐会卡丁车第一次就跑了1’11参加 “大挑”比赛打卡重庆解放碑学会了反曲弓射箭参加“大唐杯”比赛去了重庆的洪崖洞入门双板滑雪使用ORB-SLAM2跑自己的数据喝了鹅岭二厂的COFFEE HOLIC第一次骑行100km到白虎涧多了解了Unity API观音桥吃重庆火锅单板落叶飘更丝滑了学习使用EVO工具转了转钟书阁恢弘大气入门速降山地车,体验速度与激情学习ROS,在ROS下会使用bag录制涂鸦一条街很有趣骑行功率又涨了改进了INDEMIND模组点云功能,使其能够输出保存交通茶馆喝一盏茶学会钓鱼用的全部自研的传感器, 参加了电赛四川美院逛逛牙套摘啦,大胆笑更闪耀对比VI-SLAM系统逛逛来福士网球的中速球熟练啦,2.5-3.0的样子学习如何有效的阅读文献磁器口古镇西安城墙骑山地车重新学习了相机标定蹦床公园夜爬华山4H11min到达北峰学习Kalibr标定工具学会了钓鱼尝试拳击,人生体验+1使用ORB-SLAM3跑自己的数据五月天鸟巢公路骑行爬妙峰山5H14min学习RANSAC算法进行点云的平面拟合参加《北京科幻大会》单板学会换刃,去了富龙滑雪学习OpenGL渲染观看《银河护卫队3》双板滑雪学会犁式学习Vulkan渲染观看《消失的她》参加第九届中国虚拟现实产学研大会观摩西安碑林博物馆和实验室的小伙伴组了一个增强现实头盔西安ACC漫展,一发入魂沙鲁学习搭建PTAM系统逛西安钟楼学习搭建ORB-SLAM系统大唐不夜城逛吃学习搭建ORB-SLAM系统兴庆宫游园学习搭建ORB-SLAM2系统汉宫露营学习搭建ORB-SLAM-VI系统观光芙蓉园学习搭建ORB-SLAM3系统观看《封神第一部》EuRoC数据集配置及评价观看《长安三万里》TUM-VI数据集配置及评价环球影城第一届万圣季IMU预积分的计算Bundle Adjustment算法PnP算法Sim3算法参加2023中国元宇宙大会 一、工作成长 1、开始学习C++ 做底层的操作需要C++开发,本科时只学过Java,所以需要学习C++语法,有了面向对象的基础,C++学起来也得心应手起来。刚开始接到大课题需要视觉SLAM,在AR应用中通常使用轻便、价格低廉的单目相机设备,仅使用一个摄像头作为传感器完成同步定位与地图创建操作,具有系统结构简单、成本低且易实现等优点。正是尺度不确定性才使得单目SLAM 能够在大尺度和小尺度环境之间进行自由转换。
所以单目视觉SLAM成为增强现实领域的研究热点,我也在单目视觉SLAM开始做研究。接着因为需要的场景是应急救援的灾害场景,需要的环境比较复杂,所以当时加上IMU做一个融合计算。后来硬件同步上还有时间同步机制感觉不容易操作,偶然间发现了一款高博推荐的双目惯性模组。目前最近的SDK版本是1.4.2,这个相机成本便宜,有硬同步的IMU,频率也够高,自带标定,对于目前我只做视觉SLAM定位足够用了。然而封库,其他各种依赖库要跟着SDK的库,OpenCV不使用ROS自带的版本,使用单独版本3.4.3等等。这个SDK组织得真的是一言难尽。
2、学习ROS操作系统 因为算法的需要实时性较高,所以学习ROS操作系统,ROS是机器人操作系统,简单来说就是封装好通信机制的一个框架,底层都已经写好了。
3、学习ORB-SLAM2 仔细研究了ncepu_Chen讲解的ORB-SLAM2源码,大佬分析的十分通透,深入的了解ORB-SLAM2的三大线程,三个线程建图和三维重建都十分准确。
4、C++实现了一个通讯录管理系统 接着用C++实现了一个通讯录管理系统,主要涉及结构体和指针的使用,旨在复习C++的语法。
5、从单一传感器到多传感器融合 当时能够编译运行诸如此类的特征法SLAM开源项目了,虽然初学经历了各种尝试,但是熟悉了Linux系统和ROS系统的操作、cmake、shell、OpenCV等等,为了能够自己进行开发,还需要更深入的学习。发现碰到纹理复杂,大尺度等条件,结合我们应急救援的背景,感觉单一传感器已经不太能够满足需求了
6、INDEMIND双目惯性模组运行多模态融合 实验室做视觉SLAM需要IMU相机,购入INDEMIND双目惯性模组运行多模态融合的感知定位,官网上关于ROS环境下的教程十分简略,直接按照官网的步骤无法实现相机数据读取并发布到指定的topic上,于是把自己的安装过程记录下来,做了总结。
7、参加 “大挑”比赛 参加 “大挑”,这次带了一个跨平台的增强现实框架,主要用做HoloLens 2的二次开发,这次的多人协同系统,基于Unity3D游戏引擎构建了一套跨平台增强现实开发的框架。该框架保证了同步渲染,粒子效果,背景视频渲染以及实时阴影渲染,同时封装好接口,可以接入不同平台下的虚实配准算法库。传统Socket异步模型不支持UWP平台,本项目使用高性能IOCP异步模型SocketAsyncEventArgs支持PC、UWP、IOS、Android等市面上绝大多数平台。 ARcore、ARkit、HoloLens锚点同步校准实现多人交互共享,Assetbundle动态更新加载资源,数据同步。区别于采用 Vuforia 包完成图像识别和三维跟踪注册,研究三维点云数据分割与识别,通过三维数据的匹配完成 HoloLens 三维跟踪注册,提升了 HoloLens对三维空间交互感知能力。同时使用Unity Chat SDK 跨平台音视频通讯。建立完整的体验感较好的增强现实程序,为多种业务场景需求提供服务。
ORB在保持了特征子具有旋转、尺度不变性的同时,在速度方面提升明显,ORB是质量与性能之间很好地折中,对于实时性要求很高的SLAM而言是一个很好地选择。单独学习改进FAST算法的ORB算法。
8、参加 “大唐杯”比赛 参加第十届大唐杯,需要掌握一定的通信知识和通信基础,这对计算机科班出身的本人及实验室的小伙伴真的不是很友好,但是我们还是硬着头皮学下去了。背景知识上的数据都给出了,只要好好用心填写到对应的地方就好。 但不要只是盲目地复制它。 有些东西需要计算,比如发射功率,频点计算,小区最大发射功率等。 这些都是计算出来的。 还有IP地址计算,网络地址,网关,掩码等等,千万别搞错了。 还有一些知识,比如路由关系不要搞错,关系要一一对应,网元功能(八个网元)不要弄错。
9、ORB-SLAM3实时运行 跑了实时的ORB-SLAM3,根据官方例程在中使用ros接入INDEMIND相机,这回有SDK及ORB-SLAM3安装过程中的各种常见性问题解决方法及安装细节,与官网教程略有不同,列举所有默认安装的依赖。
10、INDEMIND相机Windows平台运行 INDEMIND相机的SDK也能在Windows平台运行,所以也做了一些WIN上的探索。
11、学习使用EVO工具 EVO工具全名为“Python package for the evaluation of odometry and SLAM”,使用Python写的轨迹评估工具,目前在SLAM领域论文中的“使用率”逐渐上升,可以说已经成为了作为SLAMer一定要会用的工具。学习evo工具评测SLAM算法性能并可视化结果。
区块链技术作为一种分布式数据库技术,近年来备受关注。它的去中心化、安全性高的特点使得它在金融、物联网、供应链管理等领域有着广泛的应用前景。本文将介绍如何使用Python语言实现一个简单的区块链,包括创建区块、交易记录和工作量证明等功能。
区块链基本概念
区块链是由一个个区块组成的链式数据结构,每个区块包含了一定数量的交易记录,并且通过哈希值连接到前一个区块,形成了不可篡改的数据链。每个区块都包含了前一个区块的哈希值,从而构成了一个不可逆的链式结构。
Python实现区块链
下面是一个简单的Python代码实现一个简单的区块链:
import hashlib import json from time import time class BlockChain: def __init__(self): self.chain = [] self.current_transactions = [] # 创建创世块 self.new_block(previous_hash=1, proof=100) def new_block(self, proof, previous_hash=None): """ 创建一个新的区块 :param proof: 工作量证明 :param previous_hash: 前一个区块的hash值 :return: 新的区块 """ block = { 'index': len(self.chain) + 1, 'timestamp': time(), 'transactions': self.current_transactions, 'proof': proof, 'previous_hash': previous_hash or self.hash(self.chain[-1]) } # 重置当前交易记录 self.current_transactions = [] self.chain.append(block) return block def new_transaction(self, sender, recipient, amount): "
伪代码: @Transactional(rollbackFor = Exception.class) public void add(User user) { String key = "key"; RLock lock = redissonClient.getLock(key); lock.lock(); try { long count = userMapper.selectCount(user); if (count == 0) { userMapper.insert(user); } } catch (Exception e) { log.error("add user error", e); } finally { lock.unlock(); } System.out.println("插入成功"); } 问题分析:
如果有两个线程a,b。如果a线程释放锁后,退出方法前,让出时间片,由于方法未执行完,此时事务没有提交,那么b线程在去数据库查询的时候仍然出来count为0,执行了insert操作,两个线程执行完该方法提交事务,此时数据库中会增加两条数据,幂等性失效。
解决方式:
第一种:
//@Transactional(rollbackFor = Exception.class) public void add(User user) { String key = "key"; RLock lock = redissonClient.getLock(key); lock.lock(); try { long count = userMapper.
2
0
2
4
元旦
快乐
龙腾虎跃
01
引言
俗话说:"币圈一天,人间十年",数字货币一天的涨跌可能抵上其他资产价格一年的波动幅度。而经历过漫长的熊市后,铭文的火爆十分生动地表述了这一口号......
2023年,浙大链协关心科技发展和数字货币,也关心世界和同行;2024年,我们又会将目光投向哪里?
02
回顾2023
按时间顺序,浙大链协在2023年主要举办了如下主题活动:
浙大系 Web3 系列Workshop
“链坊杯” 区块链数字经济商业分析大赛
换届纳新
ZDAO论坛
ETH Hangzhou
求是鹰NFT活动
浙大链协加密创投训练营
①
浙大系 Web3 系列Workshop
浙大链协在2022年11月到2023年3月,举办了五期浙大系 Web3 Workshop和两场Web3,包括了多个主题和行业前辈分享,得到了许多小伙伴的好评和收获。其中包括了从Web2到Web3的转变、DAO组织形式、全球Web3.0的发展与DID的展望、多链生态下的新公链发展与跨链安全、以及链上安全治理。这些Workshop探讨了当前Web3领域的热点问题,涵盖了技术、组织形式和安全等多个方面,提供了广泛的学习机会和思考空间。同时视频在ZJUBCA同名youtube上播放,Workshop累计播放量和浏览量超数千人。
②
“链坊杯” 区块链数字经济商业分析大赛
2023年4月,为了帮助同学们快速了解行业,本次大赛我们开放了系列分享会,邀请到一流基金投资人,海外年轻的优秀华人、以及海外一流高校区块链组织负责人来从他们的视角与我们分享经验和见解,并对选手们的问题进行答疑。
此外,链协还邀请到了往届冠军队伍分享他们的参赛经历与同学们交流组队意见与一些经验心得!
③
换届纳新
2023年9月,链协进行了换届纳新。在这个环节,我们介绍了浙大链协是一个怎样的组织、与谁合作、它的使命和初心是什么,又真正做成了什么事。组织分为技术部、运营部和投研部三个部门,由核心成员、干事和社群成员组成。在这个阶段我们招募社群成员和干事,并欢迎对区块链感兴趣的人士加入。
④
ZDAO 论坛
链协使得浙大 Web3 校友齐聚一堂,共同交流与探讨行业前沿发展。在校友交流环节中,大家围绕建立一个服务全球校友的 Web3 加速器献言献策,并且决定成立一个属于浙大 Web3 校友的 DAO 组织,也就是现在的 ZDAO。
⑤
ETH Hangzhou
2023年10月16日,浙大链协举办ETH Hangzhou活动。本次黑客松活动得到了以太坊基金会ESP以及ZAN、Scroll、BIXIN等企业的赞助支持,Web3hub为选手们提供了优秀的参赛环境。活动报名群共计收到了超500人次的入群申请。最终,来自全国各地超160名Web3ers齐聚杭州线下参与了本次黑客松。
在为期四天的黑客松赛程中,我们不仅历经线下Idea Show、数场Workshop&Panel以及Demo Day,还在刺激的项目Building之余组织参赛者们进行西湖City Walk,并在Demo Day后为参赛者们准备了社交属性满满的AfterParty。
参赛者与主办方合影
⑥
求是鹰 NFT 活动
2023 年 10 月,链协与白鸦画社一起推出NFT数字头像,并发布抽奖活动。近 150 人加入了 NFT 活动群。
目录
一、前言
二、SkyWalking介绍
2.1 SkyWalking是什么
2.2 SkyWalking核心功能
2.3 SkyWalking整体架构
2.4 SkyWalking主要工作流程
三、为什么选择SkyWalking
3.1 业务背景
3.2 常见监控工具对比
3.3 为什么选择SkyWalking
3.3.1 代码侵入性极低
3.3.2 功能丰富
3.3.3 产品完善度高
四、SkyWalking环境搭建
4.1 下载安装包
4.2 部署服务
4.2.1 部署oap(apm)服务
4.2.2 web-ui界面访问
4.3 数据持久化配置
4.3.1 修改配置文件
4.3.2 上传mysql驱动包
4.3.3 重启服务
五、springboot接入Skywalking
5.1 准备一个测试使用的接口
5.2 获得Java Agent包
5.3 参数化启动项目
5.4 接口访问测试
六、dubbo接入Skywalking
6.1 搭建三个微服务模块
6.2 api模块
6.3 dubbo-provider模块
6.3.1 添加核心依赖
6.3.2 添加核心配置文件
6.3.3 添加dubbo接口实现类
6.3.4 服务启动类
6.4 dubbo-consumer模块
6.4.1 添加核心依赖
Kafka_01_Kafka初识 Kafka基础概念延迟任务 Kafka Kafka: ZooKeeper协调的分布式消息系统
基于Scala语言编写的高性能、多分区、多副本Kafka高性能的原因:页缓存、顺序IO、零拷贝 具有以下特性:
消息中间件: 系统解耦、冗余存储、流量消峰、异步通信等存储系统: 通过消息持久化和多副本机制实现消息落盘流处理: 为流式处理框架提供可靠的数据来源和库 Kafka组成: 若干个Producer、Consumer、Broker和ZooKeeper集群
Producer(生产者): 生产并发送消息到Broker(推送)Consumer(消费者): 从Broker订阅并消费消息(拉取)Broker(服务代理节点): 将从Producer收到的消息进行落盘ZooKeeper集群:管理Kafka集群的元数据 // Broker可看成单个独立的Kafka服务实例, 多个Broker组成个Kafka集群
如: Kafka集群构成
基础概念 主题(Topic): Kafka中消息归类单位
Topic并不实际存在(仅逻辑上的概念)Topic可细分为多个Partition, 但Partition仅属于单个Topic功能: Producer将消息发送到特定Topic, Consumer订阅Topic消费消息 分区(Partition): 组成Topic的单位(实际存储消息)
Partition在存储层面可视为: 可被追加的日志文件同一Topic下的不同Partition包含的消息是不同的Partition可跨Broker(Topic可跨Broker) 偏移量(Offset): 消息追加到Partition时分配的标志位
Offset是消息在Partition中的唯一标识(保证Partition内的有序性)Offset不支持跨Partition(Topic无序) 如: 消息追加写入Partition
消息在发送到Broker之前, 都会先根据Partition规则分配到具体的PartitionTopic的Partition应避免都属于单个文件(避免机器的I/O成为性能瓶颈) Partition中2个特殊的Offset:
HW(High Watermark): Consumer能拉取到消息的最大OffsetLEO(Log End Offset): Partition下条消息写入的Offset // ISR中最小的LEO为该Partition的HW(最慢的follower)
如: Partition中的特殊Offset
副本(Replica): Partition的冗余
功能: Kafka通过多副本机制提高容灾能力副本之间分为:leader(主副本)、follower(从副本)副本间仅存在一主多从关系, 且可实现自动故障转移Producer和Consumer只能和leader进行交互(follower仅进行消息同步) 如: Kafka的多副本交互
副本相关名词:
AR(Assigned Replicas): 所有副本(包括leader)ISR(In-Sync Replicas): 与leader保持同步的副本(包括leader)OSR(Out-of-Synce Replicas): 与leader同步滞后过多的副本(数据不同步) // 默认仅ISR中的副本才有资格选举为leader, 且负责动态管理ISR和OSR中的follower
尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,很多小伙伴拿到一线互联网企业、上市企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。
然后,很多小伙伴平时聚焦CRUD,没有亮点项目, 黄金项目。
简历也写得是非常low,很难拿到offer,甚至一个面试机会都没有。
所以, 尼恩在《第34章视频:DDD学习圣经》的基础上,带领大家从0到1 实操一个前后端分离的 高并发开源博客项目。 并且进行实际的运营迭代。
然后录制配套的实操学习视频《第36章:从0开始搭建一套微服务DDD开源博客平台》,并且指导大家 植入自己的简历。
当然植入简历里边后,展示的项目不一定是博客,可以是别的项目,具体尼恩会做针对性的指导。
当然,如果大家平时是CRUD项目,缺乏亮点, 可以找尼恩一对一指导写入简历,让大家面试所向披靡,走向顶级架构师行业,彻底摆脱中年危机。
本文也会收入咱们的 《尼恩Java面试宝典PDF》V153版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。
特别提示,尼恩的3高架构宇宙,持续升级。
《尼恩 架构笔记》《尼恩高并发三部曲》《尼恩Java面试宝典》的PDF,请到文末公号【技术自由圈】获取
文章目录 尼恩说在前面1、Vue介绍1.1 MVVM模式 2、node环境搭建2.1 windows安装node.js2.1.1 安装步骤2.1.2 验证安装2.1.3 修改全局安装路径、缓存路径,环境变量配置1)在nodejs安装目录创建node_global和node_cache文件夹2)打开cmd命令,依次输入:3)修改系统环境变量 2.1.4 更改淘宝镜像 2.2 NPM 使用介绍2.2.1 使用 npm 命令安装模块2.2.2 全局安装与本地安装本地安装全局安装查看安装信息 2.2.3 使用 package.jsonPackage.json 属性说明 2.2.4 卸载模块2.2.5 更新模块2.2.6 搜索模块2.2.7 创建模块版本号 2.2.8 NPM 常用命令 2.3 linux安装node.js 3、Vue环境搭建3.1 安装3.1.1 安装webpack3.1.2 安装vue相关文件3.1.3 新建并启动vue3项目 3.2 VS Code安装、配置、使用(windows10 64)3.2.1 VS code 下载和安装3.2.2 配置插件(必须联网) 4、体验Vue的前端工程安装依赖后启动 5、npm install 安装机制及实现原理npm 安装机制npm实现原理 说在最后:有问题可以找老架构取经尼恩技术圣经系列PDF 1、Vue介绍 Vue.
一、缓存的本质 缓存,简单说就是为了节约对原始资源重复获取的开销,而将结果数据副本存放起来以供获取的方式。
首先,缓存往往针对的是“资源”。我们前面已经多次提到过,当某一个操作是"幂等"的和“安全"的,那么这样的操作就可以被抽象为对"资源"的获取操作,那么它才可以考虑被缓存。有些操作不幂等、不安全,比如银行转账,改变了目标对象的状态,自然就难以被缓存。
其次,缓存数据必须是“重复"获取的。缓存能生效的本质是空间换时间。也就是说,将曾经出现过的数据以占据缓存空间的方式存放下来,在下一次的访问时直接返回,从而节约了通过原始流程访问数据的时间。有时候,某些资源的获取行为本身是幂等的和安全的,但实际应用上却不会"重复"获取,那么这样的资源是无法被设计成真正的缓存的。我们把一批数据获取中,通过缓存获得数据的次数,除以总的次数,得到的结果,叫做缓存的命中率。
再次,缓存是为了解决“开销”的问题。这个开销,可不只有时间的开销。虽然我们在很多情况下讲的开销,确实都是在时间维度上的,但它还可以是CPU、网络、I/O等一切资源。例如我们有时在Web服务中增加一层缓存,是为了避免了对原始资源获取的时候,对数据库资源调用的开销。
二、缓存应用模式 2.1 旁路缓存模式 2.1.1 数据读写策略 读数据时:
先读缓存,若缓存有数据,直接返回若缓存没有,读数据库。若数据库有,将结果写入缓存,并返回结果若数据库没有,就返回没有 写数据时:
先写数据库再令对应的缓存失效 2.1.2 操作关键 写数据时,必须先更新数据库,再令缓存失效 这个很容易理解,如果先令缓存失效了,而数据库还没来得及更新成功,那么假如这个时候有一个请求访问,他会直接击穿到数据库中,带着数据库的陈旧值去更新缓存,就会导致旧数据长期存在于缓存中,导致严重的数据不一致问题。
写数据时,更新完数据库之后,必须是让缓存失效,而不是更新缓存 为什么呢?如果此时更新的策略是更新缓存而不是令缓存失效,此时几乎同时发出的请求分别更新数据库中的值为A和B,结果是A的更新早于B,那么并不能保证这两个请求更新缓存时,顺序就是A早于B,就会导致缓存中的数据可能会长期是A值。
2.1.3 数据异常情形 读操作:
缓存读取异常,直接返回失败,没有数据不一致的情况数据库读取异常,直接返回失败,没有数据不一致的情况数据库读取成功,但是缓存写入失败,那么下一次读取同一数据的请求还会继续尝试写入,没有数据不一致的情况发生 写操作:
数据库写入失败,直接返回失败,没有数据不一致的情况数据库写入成功,但是缓存失效的操作失败,这个问题发生了之后会非常麻烦,需要特殊处理来纠正(比如缓存数据和数据库不一致时配置告警、定期将数据库数据刷缓存) 2.2 缓存代理模式 将缓存系统作为数据库的代理,应用的请求访问只能到缓存,数据库系统对应用来说是透明的。
2.2.1 数据读写策略 读操作:
先读缓存,如果缓存中有数据,返回如果缓存中没有数据,缓存查询数据库,并将结果写入自己,再返回给应用 写操作:
先写缓存缓存再更新数据库通知应用写入成功 这里更新数据库有两种策略透写(write-through):同步更新数据库完成之后再返回成功回写(write-back):更新缓存之后就直接返回成功,异步更新数据库(支持批量更新,更新效率高,速率稳定;但是存在数据丢失风险) 2.2.2 操作关键点 缓存系统需要自己内部保证并发场景下,缓存更新的顺序和数据库更新的顺序一致,这个可以用乐观锁来保证 2.2.3 数据异常情形 读操作:
同旁路缓存模式,没有数据不一致情况 写操作:
如果缓存更新失败,直接返回失败,没有数据不一致情况如果缓存更新成功,数据库更新失败,需要回滚
3.错误使用 reshape 元素数不能更改。请使用 [] 作为大小输入之一,以自动计算该维度的适当大小。
仔细检查之后发现原因是:两个栅格图层的行列数不一致。解决办法如下:
先改变栅格图层1源文件的投影坐标系,再进行掩膜提取:Arctoolbox——Data Management Tools——Projections and Transformations——Raster——Project Raster,在弹出的对话框中选定栅格图层2的坐标系和栅格大小,然后进行掩膜提取,就会得到行列数相等的两个栅格文件。如果要实现批量处理,也可以在python里面使用函数:arcpy.ProjectRaster_management(栅格文件,输出名字,“投影坐标系文件所在路径”,“重采样方式”,重采样栅格大小)。
2.学习到的工具:
readgeoraster
1.学习到的工具箱:Statistics and Machine Learning Toolbox——使用统计与机器学习工具。
Statistics and Machine Learning Toolbox 提供了一系列函数和 App,可用于数据描述、分析和建模。您可以使用描述性统计量、可视化和聚类进行探索性数据分析;对数据进行概率分布拟合;生成用于蒙特卡罗模拟的随机数,以及执行假设检验。借助工具箱提供的回归和分类算法,您可以基于数据进行推断并构建预测模型;您既可选择分类学习器和回归学习器进行交互式操作,也可使用 AutoML 以编程方式操作。
针对多维数据分析和特征提取,此工具箱提供了主成分分析 (PCA)、正则化、降维和特征选择方法,让您能够识别预测能力最强的变量。
此工具箱提供了有监督、半监督和无监督机器学习算法,包括支持向量机 (SVM)、提升决策树、浅层神经网络、k 均值和其他聚类方法。您可以应用可解释性方法(例如部分依赖图、Shapley 值和 LIME),并自动生成 C/C++ 代码以进行嵌入式部署。原生 Simulink 模块支持您将预测模型用于仿真和基于模型的设计。对于那些无法存储到内存的大型数据集,该工具箱中的许多算法同样适用。
本课对应源文件下载链接:
https://download.csdn.net/download/XiBuQiuChong/88680079
FFmpeg作为一套庞大的音视频处理开源工具,其源码有太多值得研究的地方。但对于大多数初学者而言,如何快速利用相关的API写出自己想要的东西才是迫切需要的,至于原理的进一步学习那是以后的事情。
在上一课中,我们已经成功获取到视频流并显示,这节课我们将参考视频的工作流程来获取音频并播放。
1.压缩备份上节课工程文件夹为demo2.rar,并修改工程文件夹demo2为demo3,重要的事情再说一遍:及时备份源文件并在原基础上继续迭代开发是一种好习惯。
与处理视频的过程差不多,要播放音频就要先初始化音频解码器,在函数runFFmpeg中加入以下代码:
//音频解码器 int audioIndex = -1; AVCodec *aDecodec; AVCodecContext *aDecodeCtx = NULL; //初始化并打开音频解码器 aDecodec = avcodec_find_decoder(inFormatCtx->streams[audioIndex]->codecpar->codec_id); aDecodeCtx = avcodec_alloc_context3(aDecodec); avcodec_parameters_to_context(aDecodeCtx, inFormatCtx->streams[audioIndex]->codecpar); avcodec_open2(aDecodeCtx, aDecodec, 0); 2.在处理视频数据包后我们可以接着处理音频数据包,并把音频帧转换为pcm数组加入音频队列备用:
if (normalPkt.stream_index == videoIndex) { ret = avcodec_send_packet(vDecodeCtx, &normalPkt); ret = avcodec_receive_frame(vDecodeCtx, deVideoFrame); av_packet_unref(&normalPkt); ret = sws_scale(bgrSwsCtx, (const uint8_t* const*)deVideoFrame->data, deVideoFrame->linesize, 0, deVideoFrame->height, bgrFrame.data, bgrFrame.linesize); srcMat = cv::Mat(bgrFrame.height, bgrFrame.width, CV_8UC3, bgrFrame.data[0]); //imshow("viceo", srcMat); //cv::waitKey(10); mainDlg->drawMatOfPlay(srcMat); av_frame_unref(deVideoFrame); } else if (normalPkt.
shell语言中的函数的讲解—声明函数和调用函数 在Shell中,函数是一种可重用的代码块,用于执行特定的任务。通过声明函数,我们可以将一段重复的代码封装起来,以便在需要时调用。函数可以在本地和远程环境中调用,这使得我们可以在不同的脚本和系统中复用相同的功能。
声明函数 在Shell中,我们使用function关键字来声明一个函数。函数的定义包括函数名、参数列表和函数体。函数体是实际执行的代码块,用大括号{}包围。下面是一个简单的函数声明示例:
function say_hello() { echo "Hello, $1!" } 在这个示例中,我们声明了一个名为say_hello的函数,它接受一个参数(用$1表示)。当调用这个函数时,它会输出"Hello, "加上传入的第一个参数。
调用函数 要调用一个函数,只需使用函数名和参数列表即可。例如,要调用上面声明的say_hello函数并传入参数"World",可以这样做:
say_hello World 这将输出"Hello, World!"。
带默认值的参数
有时,我们希望为函数的某个参数提供一个默认值。如果调用函数时没有提供该参数的值,那么将使用默认值。这可以通过在参数后面添加等号和默认值来实现。例如:
function greet() { name="$1" greeting="Hello, $name!" if [ -z "$name" ]; then name="World" fi echo $greeting } 在这个示例中,我们为greet函数的name参数提供了一个默认值"World"。如果没有提供name参数的值,那么将使用默认值。现在,我们可以这样调用greet函数:
greet World # 输出 "Hello, World!" greet # 输出 "Hello, World!"(因为没有提供参数) 返回值
函数可以返回一个值,这可以通过使用return语句来实现。例如:
function add() { local a=$1 b=$2 sum=$((a + b)) return $sum } 在这个示例中,我们声明了一个名为add的函数,它接受两个参数并返回它们的和。要获取函数的返回值,可以使用命令替换或将其赋值给一个变量。例如:
result=$(add 3 5) # 将返回值赋给变量 result,然后输出 "
从bash修改成python 在/etc/passwd下可以更改用户登录bash
例
root:x:0:0:root:/root:/bin/bash //更改bin/bash为/bin/python,就可以用root登录python页面了 从python修改成bash 方法一 重启页面按e进入内核编辑模式 linux16这行后添加:init=/bin/sh,ctrl+x保存。这个进去后更改密码有乱码,可以把前面的zh_CN改成en_CN,可以解决乱码问题 进入单用户模式 重新挂载根分区:mount -o remount,rw / 查看SElinux的文件:cat /etc/selinux/config 永久关闭SElinux 修改用户登录bash vim /etc/passwd //修改登录/sbin/bash 在根分区创建一个隐藏文件: touch /.autorelabel 重启系统: exec /sbin/init
Vue.js 3引入了Composition API,这是一次对Vue开发模式的重大革新,它为我们提供了更灵活、更强大的代码组织方式。今天,我们将深入探讨其中的核心功能之一——reactive方法。我们将了解它是什么,如何使用它,以及一些使用时需要注意的事项。
什么是reactive方法? 在Vue.js中,响应式是指当应用状态发生变化时,视图会自动更新以反映这些变化。reactive是Vue 3的Composition API中的一个函数,它允许你创建一个响应式的数据对象。当你更改对象的属性时,依赖这些属性的组件将自动更新。
reactive背后的魔法来自于JavaScript的Proxy特性,它允许Vue跟踪对对象属性的访问和修改。这意味着你可以编写声明式的代码,而Vue会负责底层的DOM更新。
如何使用reactive 首先,你需要从vue包中导入reactive函数:
import { reactive } from 'vue'; 然后,你可以将一个普通JavaScript对象传递给reactive函数:
const state = reactive({ count: 0, message: 'Hello Vue!' }); 现在,state就是一个响应式对象。在组件中,你可以直接使用state的属性,并且当这些属性改变时,Vue会自动更新视图。
下面是一个在Vue组件中使用reactive的例子:
<template> <div> <p>{{ state.message }}</p> <p>{{ state.count }}</p> <button @click="increment">Increment</button> </div> </template> <script> import { reactive } from 'vue'; export default { setup() { const state = reactive({ count: 0, message: 'Hello Vue!', }); function increment() { state.count++; } return { state, increment, }; }, }; </script> 在上述代码中,我们通过setup函数定义了组件的状态和方法。setup是Composition API的核心,它在组件实例化之前调用,用于声明响应式状态、计算属性和函数。
一、引言
随着数字媒体的迅猛发展,抖音作为全球领先的短视频平台,其API接口为开发者提供了无尽的创新机会。了解抖音详情API的请求格式与参数,是每位有远见的开发者和媒体策划者的必修课。本文将深入剖析API的内在逻辑与潜力,为您揭示其塑造未来的媒体交互的可能性。
二、抖音详情API:通向数据宝库的钥匙
抖音详情API通过简洁的请求格式,允许开发者轻松获取用户、内容和其他有用信息。其基于HTTP或HTTPS协议,并使用GET或POST方法,构建起与平台数据交互的桥梁。而access_token作为身份验证的关键,确保了数据的安全与隐私。
三、释放API参数的潜能:构建智能媒体生态
抖音详情API提供了丰富的参数选项,如user_id、open_id、app_id等,它们如同智慧的脉络,为开发者提供了无限可能。通过合理运用这些参数,您可以筛选、过滤和获取所需的数据,从而打造出更加智能、个性化的媒体内容和服务。
user_id与open_id: 用于标识特定用户,是构建用户画像和个性化推荐的核心要素。app_id: 确保请求来源的合法性,保护您的应用权益。page、limit、fields: 这些参数如同精细的罗盘,帮助您在庞大的数据海洋中定向获取所需内容,优化性能并提高效率。filter与order: 通过设定过滤条件和排序方式,您可以轻松筛选出有价值的信息,并按照特定的逻辑进行展示。format: 定义了数据的输出格式,满足不同应用场景的需求。 四、未来展望:抖音详情API引领媒体变革
抖音详情API不仅是一个工具,更是一种思维方式的转变。它预示着数据驱动的内容创新和智能化媒体交互的时代已经到来。从个性化推荐系统到智慧营销策略,从用户行为分析到趋势预测,抖音详情API都为开发者提供了一个全新的舞台。因此,掌握并善用这一API将成为每一位希望在数字媒体领域取得突破的策划者与开发者的必备技能。
随着短视频的流行,抖音已经成为了一个备受欢迎的社交媒体平台。对于开发人员而言,利用抖音详情API开发定制化的抖音应用具有巨大的潜力。本文将为你详细介绍开发抖音应用的开发环境搭建与工具选择,帮助你顺利地开始开发工作。
一、开发环境搭建
在开始抖音应用开发之前,你需要搭建一个合适的开发环境。以下是搭建开发环境的基本步骤:
操作系统选择:根据你的开发习惯和项目需求,选择一个合适的操作系统。常用的操作系统包括Windows、macOS和Linux。确保你的操作系统能够支持你选择的开发工具和编程语言。集成开发环境(IDE):选择一款合适的集成开发环境,这将帮助你更高效地进行编码、调试和测试。常用的IDE包括Visual Studio Code、Eclipse和Xcode等。你可以根据自己的喜好和项目需求选择一款合适的IDE。安装开发工具包:根据你的编程语言选择,安装相应的开发工具包。例如,如果你选择使用Python,你需要安装Python解释器。确保你选择的编程语言版本与抖音详情API兼容。安装依赖库:根据项目需求,可能需要安装一些额外的依赖库。你可以使用包管理器(如pip)来安装这些库。确保安装的依赖库版本与项目要求相匹配。网络连接与代理设置:如果你的开发环境需要连接到互联网,确保你的网络连接稳定可靠。此外,如果你需要使用代理服务器,请在IDE中进行相应的代理设置。 二、工具选择
在开发抖音应用时,选择合适的工具可以提高开发效率和质量。以下是常用的开发工具:
代码编辑器:除了集成开发环境外,还可以选择一些轻量级的代码编辑器,如Sublime Text、Atom等。这些编辑器通常具有更快的启动速度和丰富的插件支持,可以提高编码效率。版本控制系统:使用版本控制系统(如Git)可以帮助你更好地管理代码版本和协作开发。Git可以帮助你跟踪代码的变更历史、协同其他开发者共同工作以及管理代码分支等。API文档与在线资源:利用抖音开放平台的官方文档以及其他在线资源,可以帮助你更好地了解抖音详情API的使用方法和最佳实践。这些资源将为你提供详细的API文档、示例代码和解决方案,以解决开发过程中遇到的问题。调试工具:集成开发环境通常提供调试工具,帮助你跟踪代码中的问题并进行调试。了解如何使用调试工具可以提高代码质量和修复错误的速度。测试工具:为了确保抖音应用的稳定性和可靠性,你需要进行适当的测试。利用自动化测试工具(如Selenium)可以帮助你快速执行测试用例并确保应用在不同情况下都能正常运行。UI/UX设计工具:如果你需要进行用户界面设计或用户体验优化,可以选择一些UI/UX设计工具,如Sketch、Figma等。这些工具可以帮助你创建美观、用户友好的界面设计,提升用户体验。API测试工具:使用API测试工具(如Postman)可以帮助你在开发过程中快速测试API接口的功能和返回结果。这些工具通常提供易于使用的界面,让你轻松地发送请求、查看响应以及管理测试用例。 数据示例
一、蒙特卡诺采样回溯计算V值 把智能体放入环境的任意状态——从这个状态开始按照策略进行动作选择,并进入新状态——重复步骤2,直至进入最终状态——从最终状态往前回溯,计算每个状态的G值——重复1~4状态多次,平均每个状态的G值,这就是所需的V值
1.具体G值计算如下: 按照策略往后走,过程中不进行计算,只记录每一步的奖惩r
从终点往前走,到某一状态获得的奖励总和就是G值。此时G=r+gamma*G_1,即这一步的G值等于奖惩r加上上一步的G值(G_1)乘以一定的折扣率(小于1)。这个折扣率是因为认为未来的奖惩对当前的影响与现在的奖惩不等价。
2.G值与V值得关系 每一个状态往后会有多条轨迹,走到状态终点。从终点往前回溯可以得到多个不同得G值,而V值是正是这个G值得平均值。但个状态对应的轨迹由于策略不同,选择的权重就不同,所以实际计算V值得时候需要将相应轨迹得G值乘以对应得权重。
此方法:每一次都需要从前走到尾,再从后往前追溯,运行时间过长
二、蒙特卡诺和时序差分估算状态V值 1.蒙特卡洛估算状态V值 相当于每回来一个G值,对V值进行一次估算。
更新法本质:新平均=旧平均+步长*(新加入元素-旧平均)
步长就决定你调节得快慢,有点类似梯度下降法。不断更新拟合,调整次数越多,与实际得V值更接近。
但仍旧存在需要等轨迹跑到状态终点回溯,所以也可能时间较长。
2.时序差分估算状态V值(应用最为广泛) 只需要走N步,就开始回溯。
回溯时有可能有两种可能:
1)第N步的状态之前没有走过,此时认为V_N=0
2)若第N步的状态之前走过,此时认为V_N=V
往前回溯的过程中G=r+gamma*V_N
这里面的V(St+1)就是V_N
持续更新中~
参考学习视频:6-SARSA算法和Q-learning算法_哔哩哔哩_bilibili
发现从宿主机用命令sudo docker exec -it [docker_name] /bin/bash进入docker程序运行没问题,但是通过ssh连接进入docker就有问题,发现是环境变量不一致导致,解法如下
1、在/etc/profile文件末尾中添加如下命令
for item in `cat /proc/1/environ |tr '\0' '\n'` do export $item done export $(cat /proc/1/environ |tr '\0' '\n' | xargs) 2、在~/.bashrc末尾添加如下语句,保证每次启动终端都会保证环境变量一致
source /etc/profile 参考:https://blog.csdn.net/m0_59029800/article/details/125479518
Winclone Pro 10 for Mac是一款专为Mac用户设计的备份和还原软件,旨在帮助用户轻松管理和保护他们的Windows系统。无论是为了数据安全还是系统的稳定性,Winclone Pro 10都能提供全面的解决方案。
这款软件具备强大的备份功能,能够快速而准确地备份你的Windows系统,包括操作系统、应用程序和数据文件。备份过程只需一键操作,简单便捷。而当你需要恢复系统时,Winclone Pro 10能够快速还原备份的Windows系统,确保系统的完整性和稳定性。
除了备份和还原功能,Winclone Pro 10还提供其他实用的工具来优化和管理你的Windows系统。你可以轻松调整磁盘分区大小,优化系统性能和存储空间。此外,软件还支持创建可引导的外部硬盘,方便在其他Mac设备上部署Windows系统。
Winclone Pro 10采用直观友好的界面设计,使得操作简单易上手。无论你是计算机专业人士还是普通用户,都能轻松使用这款软件进行备份和还原操作,节省时间和精力。
总之,Winclone Pro 10 for Mac是一款功能强大、操作简单的备份和还原软件,为你的Windows系统提供全方位的保护。无论是在工作中还是个人使用中,这款软件都能让你轻松备份和还原你的Windows系统。赶快体验Winclone Pro 10,保护你的Windows系统安全稳定!
下载安装:Winclone pro 10 for mac(Boot Camp分区备份还原工具) v10.2中/英文激活版
本章分支结构的学习内容如下:
三、C语言中的分支与循环—if语句 (1)
三、C语言中的分支与循环—关系操作符 (2)
三、C语言中的分支与循环—条件操作符 与逻辑操作符(3)
三、C语言中的分支与循环—switch语句(4)分支结构 完
本章循环结构的学习内容如下:
三、C语言中的分支与循环—while循环 (5)
三、C语言中的分支与循环—for循环 (6)
三、C语言中的分支与循环—do-while循环 (7)
三、C语言中的分支与循环—break和continue语句(8)循环结构 完 1.基本概念 在循环执行的过程中,如果某些状况发⽣的时候,需要提前终止循环,这是非常常见的现象。C语⾔中 提供了 break 和 continue 两个关键字,就是应该到循环中的。 • break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行 • continue 的作用是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所差异的。 其实我们在之前已经接触到了break语句,在switch分支结构中,break语句用于跳出分支结构,避免穿透现象,详细解释见 三、C语言中的分支与循环—switch语句(4)分支结构 完 2.while循环中的break和continue 1)break 代码示例
打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。 所以 break 的作⽤就是永久的终⽌循环,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。 那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成我们想要的效果。 #include <stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) break;//当i等于5后,就执⾏break,循环就终⽌了 printf("
一份为小白用户准备的免费区块链基础教程
工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。
种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役?
参见另一篇博文👉 2024最全面且有知识深度的web3开发工具、web3学习项目资源平台
如何持有和使用比特币 作为比较,我们先回顾下现实的银行系统:
首先我们需要使用个人信息(如身份证)给银行,银行给我们开户,开户时确立了我们对该账户的所有权。
进行支付的时候,银行对交易双方账户余额进行增减。但比特币是一个去中心化的系统,没有这样的第三方,它是如何确定某个账户的比特币是属于谁的?这个问题等同于谁可以使用这个账户的比特币?
在比特币的公共共享总帐本中,记录了所有地址持有的余额,比特币的账户是用地址来表示。
当需要转账时,发送一笔类似的交易(为了理解做了简化):
"from":"1ABzp1eP5QGefi2DMPTf..." "to":"3FRdnTq18LyNveWa1gQJcgp..." "amount":"1 btc" 当然比特币节点需要这笔交易是谁发起的,只有当由地址 1ABzp1eP5QGefi2DMPTf… 发起才是真正有效,因此要求发起人对交易信息进行签名,签名是用地址 1ABzp1eP5QGefi2DMPTf… 对应的私钥进行的。
当我们创建一个比特币地址(账户时),会首先生成一个随机数作为私钥,然后根据椭圆曲线算法(ECDSA)计算出公钥,然后在根据哈希运算及校验编码得到比特币地址。
比特币地址格式 目前比特币有三种地址类型:
P2PKH 地址,也叫 “传统地址(Legacy address)”,以数字 “1” 开头,长度为 26 个到 36 个字符, 如:1ABzp1eP5QGefi2DMPTfTL5SLmv7DivfNaP2SH 地址,以数字 “3” 开头, 如:3FRdnTq18LyNveWa1gQJcgp8qEnzijv5vR .P2WPKH 地址,也叫 “Bech32 地址”,是一种高级的地址,以 “bc1” 开头. 公钥及地址是公开的,私钥这是保密的,私钥推导地址的过程也是单向的,无法通过地址反推到公钥及私钥。
因此当我们持有某地址的私钥,就是持有该地址下的比特币,因此私钥必须妥善保管。
UTXO 模型
实际上,在比特币账本中,并不是的记录某个账户的余额是多少(和以太坊的账户余额模型不一样),比特币引入了一个“未花费的交易输出”(UTXO: Unspent Transaction Output)概念,一个 UTXO 代表 “一整块” 的可以使用比特币。UTXO 作为交易的输入。
一个 UTXO 在交易时可以产生多个 UTXO ,比特币的交易时不断消费老 UTXO 产生新的 UTXO 的过程,当一个 UTXO 被作为交易的输入后,就不再是未花费的了(STXO),在某个时间点,所有 UTXO 的集合都被称为 UTXO 集。比特币节点会追踪 UTXO 集,从而确定哪些代币未被花费,以及哪些人可以花费它们。从而避免双花(Double Spend)问题。
为什么选择HTTPS? HTTP和HTTPS之间的主要区别在于安全性。HTTP是一种不安全的协议,数据在传输过程中是明文的,容易受到中间人攻击。而HTTPS通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密,确保传输过程中的安全性,防止信息被窃取或篡改。
在过去,HTTPS主要用于处理敏感信息,如银行交易或在线购物。然而,随着网络犯罪的不断进化,以及用户对隐私保护的日益重视,将网站整体迁移到HTTPS已经成为一种趋势。
免费SSL证书的重要性 要实现HTTPS,网站需要获得SSL证书。SSL证书是一个加密和身份验证的数字文件,用于确保网站与用户之间的安全通信。以前,获得SSL证书可能是一个昂贵的过程,因为通常需要支付费用。然而,现在有许多提供免费SSL证书的权威机构,使网站所有者更容易为其网站添加安全性。
免费SSL证书的领取指南 步骤1:选择可信的SSL证书颁发机构 在选择免费SSL证书之前,确保选择一个可信赖的SSL证书颁发机构。一些知名的机构提供免费的基础SSL证书,如JoySSL等。这些机构被广泛认可,其证书在浏览器中得到了良好的支持。
免费SSL证书申请地址https://www.joyssl.com/certificate/select/free.html?nid=5步骤2:注册账户并验证域名所有权 一旦选择了SSL证书颁发机构,你需要在其网站上注册一个账户。注册完成后,你将需要验证你拥有要使用SSL证书的域名。通常,验证可以通过添加特定的DNS记录或上传特定文件到你的服务器来完成。
步骤3:获取并安装SSL证书 验证通过后,你可以在SSL证书颁发机构的控制面板或网站上获得免费SSL证书。一般来说,这个过程是自动化的,颁发机构会提供你需要的证书文件。接下来,你只需按照提供的指南在你的服务器上安装证书。
步骤4:配置网站以使用HTTPS 安装证书后,还需要对你的网站进行一些配置,以确保它正常使用HTTPS。这包括更新网站的链接、确保资源(如图片、样式表和脚本)也使用HTTPS等。
链接:https://pan.baidu.com/s/1OLHtUTziKdB0sW0UIOnBBw?pwd=6666
提取码:6666
线性表的定义和基本操作 导言1.线性表的定义1.1 理解定义1.2 线性表的图像1.3 线性表的逻辑特性 2.线性表的特点3.线性表的基本操作结语 导言 大家好,很高兴又和大家见面啦!!!从今天开始,我们将进入线性表的学习。
线性表是算法题命题的重点。这类算法题实现起来比较容易且代码量较少,但是要求具有最优的性能(时间复杂度、空间复杂度),因此,我们应该牢固掌握线性表的各种基本操作(基于两种存储结构),在平时的学习中多注重培养动手能力。
今天这个篇章是对线性表的一个基本知识点的介绍,在这个篇章里,我们将学习到什么是线性表,线性表的基本操作又有哪些,下面我们开始介绍今天的内容。
1.线性表的定义 线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。
1.1 理解定义 从线性表的定义中我们可以提取到几个信息:
相同类型n>=0有限序列 通过这几个信息,我可以知道:
线性表的数据元素的元素类型,只要是相同的数据类型就行;线性表的元素个数可以为0,即线性表中没有元素;线性表的元素个数是有上限的,即线性表的元素有一个终点;线性表的元素的排列是有序的,并不是杂乱无章的; 大家现在可以思考一下,在我们学习C语言的过程中有没有与线性表的这些条件吻合的知识点呢?
有朋友很快就想到了——数组。
现在我们来看一下数组的一些特点:
数组的元素是相同数据类型的;数组的元素的下标是从0开始依次递增的;在定义数组时是需要指定数组大小的;数组最后一个元素的下标 = 数组大小 - 1; 现在咱们再来对比一下线性表的定义,是不是完全符合呀!因此我们可以得到结论:
数组就是一种线性表 在线性表中,数据元素因为是有序排列的,所以每一个元素都有自己对应的序号,我们将这个序号称为位序;
与数组下标不同的是,线性表数据元素的位序是从1开始的,位序为1的元素就是线性表中的第一个元素,位序为n的元素就是线性表中的第n个元素,若用L命名线性表,则其一般表示为:
L = ( a 1 , a 2 , … … , a i , a i + 1 , … … , a n ) L=(a_1,a_2,……,a_i,a_{i+1},……,a_n) L=(a1,a2,……,ai,ai+1,……,an)
在这个式子中 a 1 a_1 a1和 a n a_n an分别代表的是线性表的第一个元素和线性表的最后一个元素。
1.2 线性表的图像 在线性表中,只有唯一的“第一个”数据元素,所以我们又将 a 1 a_1 a1称为表头元素;
目录
1.数组有哪些原生方法?
2.substring和substr的区别
3.object.assign和扩展运算法是深拷贝还是浅拷贝,两者区别
4.new操作符的实现原理
5.for...in和for...of的区别
6.对AJAX的理解,实现一个AJAX请求
7.ajax,axios,fetch的区别
8.forEach和map方法有什么区别
9.什么是尾调用,使用尾调用有什么好处?
10.你用过哪些设计模式
1.数组有哪些原生方法? 数组和字符串的转换方法: toString(),toLocalString(),join(),其中join(方法可以指定转换为字符串时的分隔符。数组尾部的操作的方法pop()和push(),push方法可以传入多个参数。数组首部操作的方法shift()和unshift()重排序的方法reverse()和sort(),sort()方法可以传入一个函数来进行比较,传入前后两个值,如果返回值是正数,则交换两个参数的位置。数组的连接的方法concat(),返回的是拼接好的数组,不影响原数组。数组截取方法slice(),用于截取数组中的一部分返回,不影响原数组。数值插入方法splice(),影响原数组查找特定项的索引的方法,indexOf()和lastIndexOf()迭代方法every(),some(),filter(),map(),和forEach()方法数组归并方法reduce()和reduceRight()方法改变原数组的方法:fill(),pop(),push(),shift(),splice(),unshift(),reverse(),sort();不改变原数组的方法:concat(),every(),filter(),find(),findIndex(),forEach(),indeOf(),join(),lastIndexOf(),map(),reduce(),reduceRight(),slice(),some(). 2.substring和substr的区别 它们都是字符串方法,用于截取字符串的一部分,主要区别在于参数不同
substring(startIndex,endIndex):接收两个参数,一个起始索引和结束索引,来指定字符串范围,如果省略第二个参数,则截取到字符串末尾。substr(startIndex,length) :接收两个参数,并返回从startIndex开始,长度为length的子字符串。如果省略第二个参数,则截取到字符串末尾。 const str = "Hello, World!"; console.log(str.substring(0, 5)); // 输出: "Hello" console.log(str.substr(7, 5)); // 输出: "World" 3.object.assign和扩展运算法是深拷贝还是浅拷贝,两者区别 都是浅拷贝
object.assign()方法接收的第一个参数作为目标对象,后面的所有参数作为源对象。然后把所有的源对象合并到目标对象中。它会修改一个对象,因此会触发ES6setter扩展操作符(...)使用它时,数组或对象中的每一个值都会被拷贝到一个新的数组或对象中。它不复制继承的属性或类的属性,但它会复制ES6的symbols属性 4.new操作符的实现原理 new操作符用来创建一个对象,并将该对象绑定到构造函数的this上。
new操作符的执行过程:
创建一个空对象设置原型,将构造函数的原型指向空对象的prototype属性。将this指向这个对象,通过apply执行构造函数。判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象 5.for...in和for...of的区别 for...in和for...of都是JavaScript中的循环语句,而for...of是ES6新增的遍历方式,允许遍历一个含有Iterator接口的数据结构(数组,对象等)并且返回各项的值,和ES3中for...in的区别如下:
for...of遍历获取的是对象的键值,for...in获取的是对象的键名for...in会遍历对象的整个原型链,性能差不推荐使用,而for...of只遍历当前对象不会遍历原型链对于数组的遍历,for...in会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),for...of只返回数组的下标对应的属性值。 总结:for...in循环设为了遍历对象而生,不适用遍历数组,for...of循环可以用来遍历数组,类数组对象,字符串,set,map以及generator对象。
6.对AJAX的理解,实现一个AJAX请求 AJAX是 Asynchronous JavaScript and XML 的缩写,指的是通过JavaScript的异步通信,从服务器获取xml文档从中提取数据,在更新当前网页的对应部分,而不用刷新整个网页。创建AJAX请求的步骤:
创建一个XMLHttpReuqest对象。在这个对象使用open方法创建一个HTTP请求,open方法所需要的参数是请求的方法,请求的地址,是否异步和用户的认证信息。在发起请求前,可以为这个对象添加一些信息和监听函数。比如说可以通过setRequestHeader方法来为请求添加头信息。还可以为这个对象添加一个状态监听函数。一个XMLHttpRequest对象一共有5个状态,当他的状态变化时会触发onreadystatechange事件,可以通过设置监听函数,来处理请求成功后的结果。当对象的readyState变为4的时候,代表服务器返回的数据接收完成,这个时候可以通过判断请求的状态,如果状态时2xx或者304的话代表返回值正常。这个时候就可以通过response中的数据来对页面进行更新了。当对象的属性和监听函数设置完成后,最后调用send方法来向服务器发起请求,可以传入参数作为发送的数据体。 const SERVER_URL = "/server"; let xhr = new XMLHttpRequest(); // 创建 Http 请求 xhr.open("GET", url, true); // 设置状态监听函数 xhr.
简介 Docker是一个开源的平台,用于开发、交付和运行应用程序。它使用容器技术,允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。这个容器可以在任何支持Docker的环境中运行,而无需担心环境差异或依赖项冲突。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
安装 Docker Docker Hub
在这上面下载安装包后安装安装时如果勾选WSL2,需要安装好WSL2 Docker优点 作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。
持续交付和部署
对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
更轻松的迁移
由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利用已经计算好的小问题的解,而不需要重复计算。
动态规划与数学归纳法思想上十分相似。
数学归纳法:
基础步骤(base case):首先证明命题在最小的基础情况下成立。通常这是一个较简单的情况,可以直接验证命题是否成立。
归纳步骤(inductive step):假设命题在某个情况下成立,然后证明在下一个情况下也成立。这个证明可以通过推理推断出结论或使用一些已知的规律来得到。
通过反复迭代归纳步骤,我们可以推导出命题在所有情况下成立的结论。
动态规划:
状态表示:
状态转移方程:
初始化:
填表顺序:
返回值:
数学归纳法的基础步骤相当于动态规划中初始化步骤。
数学归纳法的归纳步骤相当于动态规划中推导状态转移方程。
动态规划的思想和数学归纳法思想类似。
在动态规划中,首先得到状态在最小的基础情况下的值,然后通过状态转移方程,得到下一个状态的值,反复迭代,最终得到我们期望的状态下的值。
接下来我们通过三道例题,深入理解动态规划思想,以及实现动态规划的具体步骤。
1218. 最长定差子序列 - 力扣(LeetCode) 题目解析 状态表示 状态表示一般通过经验+题目要求得到,
经验一般指,以某个位置为结尾,或者以某个位置为开始。
我们可以很容易得到这样一个状态表示,定义dp[i]表示以i位置为结尾的最长的等差子序列的长度。
状态转移方程 dp[i]表示以i位置为结尾的最长的等差子序列的长度。
我们针对于(以i位置元素为结尾的等差子序列,以及i位置元素)进行分析,想一想dp[i]能不能由其他状态推导得出。
如果只考虑i位置一个元素, 等差子序列只有i位置一个元素,长度为1,故dp[i]=1。
如果不止考虑i位置一个元素, 那么i位置元素可能跟在前面(0~i-1)中任意满足(arr[i]-arr[j]=difference)的元素后面,(0<=j<=i-1),对于确定的一个j值,此时dp[i]=dp[j]+1,意味着j位置元素和i位置元素构成等差子序列。 由于(0<=j<=i-1) 所以dp[i]=max(dp[i],dp[j]+1),需要在(0~i-1)这些状态中找到最大的值存储在dp[i]中。
将上述情况进行合并和简化,
如果第二种情况,至少有一个j满足情况,进行了赋值操作。
因为dp[i]的取值需要在自己和前面的值中选取最大的一个,并且是赋值,所以在最开始的赋值中,自己必须有初始值。
在自己初始化的前提下,dp[i]一定会被赋值为一个大于1的值,所以就不会取到第一种情况。
如果第二种情况,没有一个j满足要求,没有进行赋值操作。 那么dp[i]就只能自己构成等差子序列,dp[i]就等于1。
综上所述,我们需要初始化所有位置状态为1,保证dp[i]最开始有初始值,同时状态初始化为1,是最长等差子序列的最低标准,把只有自己一个元素的情况考虑进去了。
状态转移方程为,
for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (arr[i] - arr[j] == difference) { dp[i] = fmax(dp[i], dp[j] + 1); } } } 初始化 根据状态转移方程,我们知道,想要推导出i位置的状态,需要用到(0~i-1)位置的状态,所以我们需要初始化第一个位置的状态,即dp[0]=1。
一、超声波测距原理 超声波测距模块可提供非接触式距离感测功能;模块包括超声波发射器、接收器和控制电路。其工作原理为当接收到信号后,发射器发出音速的超声波信号,信号在受到物品阻挡时会返回并被接收器检测到,当接收器检测信号返回;通过计算信号发送的时间与接收到信号的时间差,配合音速的速度值,计算出传感器与阻挡物体之间的距离。
其计算公式为:
距离 = 传播速度 X 时间 / 2
超声波在空气中的速度是固定的:340米/秒
时间为声波发出到接收到的时间差
除于2是因为声波需要往返传播
例如:
如果超声波从发射到接收的时间差为2秒,那距离可以计算为
距离 = 340 * 2 / 2 = 340
可以得出,中间的距离为340米
测距传感器与普通的接近开关和光电传感器有所不同。相比于电感式或电容式接近开关,测距传感器具有更长的检测距离,能够实现更远距离的检测。而与光电传感器相比,测距传感器可以应用于更恶劣的环境中,不受目标物的颜色以及空气中灰尘、水雾等因素的影响。超声波的传输速度容易受天气影响,在不同的天气条件下,超声波传输速度不同且较慢。当汽车高速行驶时,使用超声波进行测距无法及时跟踪车距的实时变化,从而导致较大误差。此外,超声波的散射角较大,方向性较差,在测量较远距离目标时,回波信号会较弱,影响测量精度。被测物体的面积不可以过小且平面尽量要求平整,否则会影响测量效果。然而,在短距离低速测量中,超声波传感器具有显著优势
二、HCSR-04超声波测距模块说明 HCSR04模块有4个引脚,对应分别是:
1、VCC电源正极
2、TRIG触发控制信号输入
3、ECHO回声信号输出
4、GND电源负极
三、安装库 在之前的文章中,我们介绍过如何安装第三方库,以及使用Arduion IDE自带的库管理器来安装第三方库,在这里,我们介绍另一种方法来安装第三方库。
本章中,我们所使用的是一个名为HCSR04-ultrasonic-sensor-lib by gamegine的第三方库,下载地址:GitHub - gamegine/HCSR04-ultrasonic-sensor-lib: Arduino lib for HCSR04 ultrasonic sensor
我们可以在页面里下载该库源代码:
下载时,记录好下载到的源代码文件所在的目录
我们在Arduion IDE里选择 "项目=>加载库=>添加ZIP库 ",在文件选择框里找到下载到的库源代码,是ZIP格式的压缩包文件。
安装完成后,我们可以在 "项目=>加载库 "里的菜单里看到:
点击后,会自动插入需要的头文件:
#include <HCSR04.h> 四、HCSR04-ultrasonic-sensor-lib by gamegine库的说明 该库本身是一个针对Arduino 库 HCSR04 传感器,但在ESP32上也可以应用。
这里我们选择4号引脚为触发控制信号输入(TRIG),18号引脚为回声信号输出(ECHO):
#define TRIGPIN 4 //TRIG #define ECHOPIN 18 //ECHO 我们还需要创建一个HCSR04对象:
在本章中,将介结DHT温湿度传感器的使用,本文中所使用的版本为DHT11。
传感器介绍 DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃
图样:
以下为对应引脚定义:
pin
名称
注释
1
VDD
供电 3-5.5VDC
2
DATA
串行数据,单总线
3
NC
空脚
4
GND
接地,电源负极
因为量程问题,在大部份情况下,该传感器的工作范围主要集中在检测正常环境下的温湿度。如果需要测量更高的温度,可以选择比如NTC热敏电阻,或热电偶等传感器。
DHT使用单总线通信协议与ESP32进行通信,单总线协议是一种用于电子设备通信的简单、低成本和灵活性较高的协议。它使用一个共享的总线来传输数据和命令,并支持多个设备同时连接到总线上。我们现在不用详细去了解该协议的原理,因为已经有十分成熟的代码库可以让我们可以方便地获取DHT传感器的数据。
在之前的文章中,已经介绍过程序库的功能,在这里,我们会选择一个针对DHT所开发的库来实现与DHT的通信。我们选择的是一个名为DHT-sensor-library by adafruit的程序库,该库可以在Arduino IDE的库管理器里找到,也可以在这个地址下载:GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors
一、从Arduino IDE库管理器安装程序库 点击 项目=>加载库=>管理库,打开库管理器
在搜索框输入"DHT sensor library"搜索
找到该库,点击安装。
关闭库管理器,在 项目=>加载库 在菜单里就可以找到已经安装的库,找到该库
点击后,会在代码里自动插入该库所需要的头文件
二、DHT-sensor-library by adafruit库的说明 #include <DHT.h> #include <DHT_U.h> 插入头文件后,我们需要定义获取数据的引脚(4号引脚)和定义DHT的版本(DHT11 , DHT22 , DHT21),本章中使用的版本为DHT11
#define DHTPIN 4 // 设置获取数据的引脚 // 对应DHT的版本,选择一个取消注释 #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) 根据引脚 和 DHT版本,创建一个DHT对象
一直在思考是否可以将jupyter转化为python,一直都未尝试,但是最近在网上找了一些资料,尝试了一下。相应的代码如下:
# 简单的将jupyter转换为python文件 import argparse import os import subprocess def convert(input_path, output_path): subprocess.call(['jupyter', 'nbconvert', '--to', 'script', input_path, '--output', output_path]) def cleanup(path): skip_lines_startwith = ('Image(filename=', '# In[', '# <hr>', 'from IPython.display import Image', 'get_ipython()', '# <br>') clean_content = [] imports = [] existing_imports = set() with open(path, 'r', encoding="utf8") as f: next(f) next(f) for line in f: line = line.rstrip(' ') if line.startswith(skip_lines_startwith): continue if line.startswith('import ') or ( 'from ' in line and 'import ' in line): if 'from __future__ import print_function' in line: if line !
本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。需求分析。
1 卡诺模型的应用 1.1 餐厅需求分析故事 假设你经营一家餐厅,你想了解客户对你的服务质量的满意度。你可以使用卡诺模型来收集客户的反馈,并分析客户的需求和期望。
首先,你可以设计一份调查问卷,向客户询问以下问题:
你对我们餐厅的食物质量满意吗?你对我们餐厅的服务速度满意吗?你对我们餐厅的价格满意吗?你对我们餐厅的环境和氛围满意吗? 然后,你可以将客户的回答分为以下类别:
基本需求:这些是客户认为必须满足的需求,如果这些需求没有得到满足,客户会非常不满意。期望需求:这些是客户期望得到满足的需求,如果这些需求得到满足,客户会感到满意。魅力需求:这些是客户没有期望得到满足的需求,但如果这些需求得到满足,客户会非常满意。 接下来,你可以使用卡诺模型来分析客户的反馈,并确定哪些需求是关键因素。你可以将客户的回答绘制在一个二维图表上,其中横轴表示满足程度,纵轴表示重要程度。
最后,你可以根据卡诺模型的分析结果,制定改进服务质量的计划。你可以优先满足客户的基本需求和期望需求,并考虑提供一些魅力需求,以提高客户的满意度。
注意:卡诺模型是一种定性分析工具,它不能代替定量分析。在使用卡诺模型时,你需要结合实际情况,进行合理的分析和判断。
1.2 电商平台需求分析故事 假设你经营一家电商平台,你想了解客户对你的服务质量的满意度。你可以使用卡诺模型来收集客户的反馈,并分析客户的需求和期望。
首先,你可以设计一份调查问卷,向客户询问以下问题:
你对我们网站的页面加载速度满意吗?你对我们的商品搜索功能满意吗?你对我们的支付和物流服务满意吗?你对我们的客户服务质量满意吗? 然后,你可以将客户的回答分为以下类别:
基本需求:这些是客户认为必须满足的需求,如果这些需求没有得到满足,客户会非常不满意。期望需求:这些是客户期望得到满足的需求,如果这些需求得到满足,客户会感到满意。魅力需求:这些是客户没有期望得到满足的需求,但如果这些需求得到满足,客户会非常满意。 接下来,你可以使用卡诺模型来分析客户的反馈,并确定哪些需求是关键因素。你可以将客户的回答绘制在一个二维图表上,其中横轴表示满足程度,纵轴表示重要程度。
最后,你可以根据卡诺模型的分析结果,制定改进服务质量的计划。你可以优先满足客户的基本需求和期望需求,并考虑提供一些魅力需求,以提高客户的满意度。
1.3 酒店经营需求分析 假设你经营一家酒店,你想了解客户对你的服务质量的满意度。你可以使用卡诺模型来收集客户的反馈,并分析客户的需求和期望。
首先,你可以设计一份调查问卷,向客户询问以下问题:
你对我们酒店的客房干净整洁程度满意吗?你对我们酒店的员工服务态度满意吗?你对我们酒店的餐饮质量满意吗?你对我们酒店的地理位置和周边环境满意吗? 然后,你可以将客户的回答分为以下类别:
基本需求:这些是客户认为必须满足的需求,如果这些需求没有得到满足,客户会非常不满意。期望需求:这些是客户期望得到满足的需求,如果这些需求得到满足,客户会感到满意。魅力需求:这些是客户没有期望得到满足的需求,但如果这些需求得到满足,客户会非常满意。 接下来,你可以使用卡诺模型来分析客户的反馈,并确定哪些需求是关键因素。你可以将客户的回答绘制在一个二维图表上,其中横轴表示满足程度,纵轴表示重要程度。
最后,你可以根据卡诺模型的分析结果,制定改进服务质量的计划。你可以优先满足客户的基本需求和期望需求,并考虑提供一些魅力需求,以提高客户的满意度。
2 模型 KANO(卡诺)模型 2.1 KANO模型简介 KANO 模型是东京理工大学教授狩野纪昭(Noriaki Kano)发明的对用户需求分类和优先排序的有用工具,以分析用户需求对用户满意的影响为基础,体现了产品性能和用户满意之间的非线性关系。
根据不同类型的质量特性与顾客满意度之间的关系,狩野教授将产品服务的质量特性分为五类:
基本(必备)型质量:Must-be Quality/ Basic Quality期望(意愿)型质量:One-dimensional Quality/ Performance Quality兴奋(魅力)型质量:Attractive Quality/ Excitement Quality无差异型质量:Indifferent Quality/Neutral Quality反向(逆向)型质量:Reverse Quality,亦可以将 'Quality' 翻译成“质量”或“品质”。 说明:这里的前三种需求根据绩效指标分类就是基本因素、绩效因素和激励因素。
2.2 KANO模型使用 那么如何使用kano模型来实现一个完整的需求确定流程呢?
@1 设计 KANO 评价问卷。
针对需求X1 做评价需求,如下表所示:
需求X1 评价需求等级-2等级-1等级0等级1等级2 正向问题:如果满足了此项需求,你感觉如何?
一份为小白用户准备的免费区块链基础教程
工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。
种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役?
参见另一篇博文👉 2024最全面且有知识深度的web3开发工具、web3学习项目资源平台
区块链是一项令人兴奋和有前途的技术,你也许看到过这些频繁在社交媒体、新闻频道上冒出的新名词:智能合约、代币(通证)、Web3、DeFi、DAO 组织。
如果你还不是很明白他们的意思,这份免费区块链基础教程就是为你(小白们)准备的。
这份教程目前包含 7 篇文章:
第1篇:比特币与区块链诞生
在中本聪之前,几位大师对数字货币的探索,中本聪结合前人的探索及工作量证明的加入,诞生出第一个去中心化的数字货币:比特币, 第1篇文章将将了解比特币的基本原理和概念,包括区块、交易、挖矿等
第2篇:比特币运行原理
详细介绍了比特币的工作原理,包括去中心化、共识机制、区块链结构等。第2篇让我们将了解到如何发起交易,交易如何打包上链。
第3篇:区块链技术整体概述
什么是区块链,为什么它是一种革命性的技术,第3篇介绍在比特币之后,区块链技术的发展,在智能合约引入之后,区块链的能力大大增强。不同的团队在探索使用各种不同的共识机制来扩展区块链的性能
第4篇:不同类型的区块链
第4篇探讨了不同类型的区块链,包括公有链、私有链和联盟链等,他们各自的特点是什么。
第5篇:区块链不同的层次
由于区块链本身受不可能三角限制,开发人员考虑将更多的计算转移到链下,因此区块链出现了分层发展的趋势。第5篇介绍了比特币的闪电网络以及以太坊的 Rollup。
第6篇:Web3 与存储协议
区块链催生了新形态的应用,我们称之为 Web3 应用,Web3应用的特点是用户自己控制所有权。
去中心化存储协议也是Web3 应用重要的组成部分。
第7篇:区块链应用场景
区块链到底有什么用,第7篇给出了一些广泛的应用场景, 如在跨境支付/结算、资产数字化等金融服务,数字存证/防伪,NFT/数字艺术品,游戏等领域都可能产生颠覆性的影响,还催生了全新 DAO 组织这样全新的合作形态。
最近区块链各大测试网例如 Goerli、Kovan 都要关闭了,加上之前的 Rinkeby、Ropsten 和测试网络,现在开发测试很麻烦,尤其是测试比的获取,有没有稳定的获取测试币且不关闭的区块链测试开发薅羊毛资源呢?
工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。
种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役?
参见另一篇博文👉 2024最全面且有知识深度的web3开发工具、web3学习项目资源平台
水龙头(Faucet)是一个平台,为你提供测试币(或 Token ),以便在测试智能合约时使用。
https://web3x.world/sites/1369.html
简介 特点 是一款操作系统,跟windows,macos一样,有下面的特点
简单和高效,一切皆文件,所有配置都通过修改文件解决,不需要繁琐的权限和设置
权限高,把所有细节都交给用户,可完全自定义
安全,所有程序只有自己执行才会启动
分类 1、debian系主要有Debian,Ubuntu,Mint等;
2、redhat系主要有RedHat,Fedora,CentOs等,
3、其它有Slackware,Gentoo,Arch linux,LFS,SUSE等。
4、如果开发用,推荐redhat系,业内公司的服务器多用centos,考虑到平时使用,那么就选择fedora,可以选择最新的发行版。
5、如果简单用加开发,可以选择debian系,推ubuntu,mint。
6、如果是技术狂型,那么就推荐Gentoo,Arch linux,LFS,Slackware等
下面教程以ubuntu为例
安装 虚拟机 在阿里云或清华镜像网站下载到iso,学习时最好使用desktop版
在vmware直接创建典型,跟着操作
安装时最好选英文,一定要记住设置的密码,如000000,防止时间太久忘记,当然,忘记了也可以去搜索对应解决方法
WSL2 这个只是命令行,方便学习命令,日常使用建议还是虚拟机安装桌面版
下载wsl2内核更新包,然后直接安装
然后设置wsl2为默认
wsl --set-default-version 2 然后微软商店下载所需要的发行版安装如ubuntu
安装完成后就可以在cmd中输入wsl直接进入了
shell&terminal shell是一种应用程序,帮助用户和操作系统交互
terminal是一个交互界面,用于获取输入,交给shell执行,将输出展示在终端
而应用程序按是否有图形化界面分两种:
CLI(Command Line Interface)和GUI(Graphical User Interface)
即命令行和图形界面
Shell是一类程序,有CLI形式(如sh,bash,zsh;cmd,powershell等),也可以有GUI形式的(如Windows资源管理器explorer.exe等)
文件系统 目录结构 linux哲学 : 一切皆文件
执行ls / 查看根目录得到下面结果
按树状目录
目录按找功能大致分为
通用数据 /bin Binaries,系统的二进制文件,存放着常用的命令,二进制文件由操作系统直接执行 /lib Library,存放动态链接库,类似windows中的dll /var variable,习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 /srv server, 该目录存放一些服务启动之后需要提取的数据 /usr unix shared resources,共享资源,大部分程序和文件都存在这里面,常用如下 /usr/src /usr/bin /usr/sbin 分别是源码,普通用户的二进制文件,超级用户的二进制文件 /opt optional,可选目录,默认为空 /tmp temporary,存放一些临时文件 /lost+found,当系统非法关机后,这里就存放了一些文件 用户数据 /home 普通用户 /root 超级用户 操作系统 /boot linux启动时的一些连接文件以及镜像文件 /dev device,存放Linux 的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的 /etc 存放所有的系统管理所需要的配置文件和子目录 /media 系统自动识别一些设备,例如U盘,光驱等等.
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。
Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。
Arduino月球基地场景的主要特点:
1、模拟月球环境:Arduino月球基地场景通过使用适当的材料和技术,可以模拟月球表面的特殊环境,如低重力、极端温度、有限资源等。这样的模拟环境可以提供更真实的学习和实践体验,帮助学生更好地理解和应对未来月球探索任务中可能面临的挑战。
2、多学科交叉应用:Arduino月球基地场景涉及多个学科领域的知识和技能,如电子工程、计算机编程、机械设计等。学生可以在实践中将这些学科进行有机结合,培养跨学科思维和解决问题的能力。
3、实践性和互动性:通过使用Arduino智能展板和其他设备,学生可以进行实际的设计、构建和控制操作。他们能够亲自动手实践,编写代码、搭建电路、测试传感器等,从而增强实践能力和技术应用水平。
4、创新性和个性化:Arduino月球基地场景鼓励学生的创造力和创新思维。他们可以自主设计和改进各种设备和系统,实现个性化的功能和解决方案,从而培养创新精神和独立思考能力。
Arduino月球基地场景的核心优势:
1、低成本和易用性:Arduino开发平台具有相对较低的成本,并且易于学习和使用。它提供了简单而强大的编程工具和硬件模块,使学生能够快速入门,并进行各种实践活动。
2、开放性和社区支持:Arduino是一个开放源代码的平台,拥有庞大的用户社区和资源库。学生可以从社区中获取丰富的教程、示例代码和项目案例,与其他用户交流经验,加速学习和创新过程。
3、可扩展性和灵活性:Arduino平台可以与各种传感器、执行器和其他扩展模块进行集成,以满足不同实训需求。学生可以根据具体要求进行系统扩展和定制,实现更复杂的功能和应用。
Arduino月球基地场景的局限性:
1、硬件限制:Arduino平台的硬件资源有限,例如处理器速度、存储容量和输入输出接口等。这可能限制了一些复杂任务和高性能应用的实现。
2、专业性和深度:尽管Arduino平台提供了广泛的学习和实践机会,但在某些专业领域的深度学习和研究方面可能存在局限性。对于一些更复杂的科学实验和工程项目,可能需要更专业的硬件平台和软件工具。
3、环境模拟的限制:尽管Arduino月球基地场景可以模拟月球环境的某些特征,但在实现完全准确的模拟方面仍然存在局限性。例如,无法完全模拟月球的真实重力和气候条件。
综上所述,Arduino月球基地场景具有模拟月球环境、多学科交叉应用、实践性和互动性的特点。其核心优势在于低成本易用、开放性社区支持和可扩展性,可以满足学生的学习和实践需求。然而,Arduino平台的硬件限制、专业性和深度方面的局限性,以及环境模拟的限制,可能对某些复杂任务和专业应用造成一定的限制。因此,在设计和实施Arduino月球基地场景时,需要根据实际需求和目标权衡这些局限性,并结合其他适当的教学工具和资源,以提供更全面和深入的学习体验。
Arduino月球基地监测月球表面温度变化是一个有趣而实用的应用。下面我将从主要特点、应用场景和需要注意的事项三个方面详细解释。
主要特点:
温度传感器:Arduino月球基地可以使用各种类型的温度传感器,例如热敏电阻、热电偶或数字温度传感器等。这些传感器可以测量月球表面的温度,并将其转换为数字信号,以便Arduino进行处理和分析。
精度和稳定性:温度传感器通常具有较高的精度和稳定性,能够在极端温度环境下准确测量月球表面的温度变化。这对于科学研究和环境监测非常重要。
数据采集和分析:Arduino可以通过与温度传感器的连接,实时采集月球表面的温度数据。通过数据处理和分析,可以获得温度变化的趋势、周期性以及与其他因素(如太阳辐射)的关联性等信息。
应用场景:
空间探索:在月球基地或其他空间探索任务中,监测月球表面的温度变化可以提供重要的科学数据。这些数据有助于研究月球的温度分布、季节变化以及地质特征等,进一步了解月球的气候和环境。
太阳能利用:月球表面的温度变化可以影响太阳能利用的效率。通过监测温度变化,可以优化太阳能电池板的布置和调整,以最大限度地利用太阳能资源。
环境监测:月球基地或其他月球任务中,温度变化也是环境监测的重要指标之一。通过监测月球表面的温度变化,可以了解月球的热环境、温度波动以及可能影响基地或设备性能的因素。
需要注意的事项:
温度传感器的选择:选择适合月球表面环境的温度传感器至关重要。传感器应具有较高的温度范围、合适的精度和稳定性,并能适应月球的低压环境和极端温度条件。
电源管理:在月球基地中,电源是一项重要的考虑因素。由于月球上的太阳能资源丰富,可以考虑利用太阳能为Arduino供电,以减少对电池的依赖。
数据传输和存储:月球基地的通信和数据传输可能存在一定的限制。因此,在设计监测系统时,需要考虑数据传输的可靠性和存储的容量,以确保温度数据能够准确地传输和存储。
环境校准:在进行温度测量之前,需要进行环境校准以消除传感器误差。可以通过在已知温度条件下进行校准,或者使用多个传感器进行比较校准来提高测量精度。
总结起来,通过使用合适的温度传感器和Arduino进行监测,可以实时获取月球表面的温度变化数据。这对于空间探索、太阳能利用和环境监测等应用具有重要意义。然而,在实际应用中需要注意传感器选择、电源管理、数据传输和存储以及环境校准等方面的问题,以确保监测系统的准确性和可靠性。
案例1:温度传感器读取
#define SENSOR_PIN A0 void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); } void loop() { int sensorValue = analogRead(SENSOR_PIN); // 将模拟读数转换为温度 float temperature = sensorValue * 0.48875; // 假设传感器为LM35、10mV/°C Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °C"
作者:Tyler Durden@Zerohedge
编译:秦晋 碳链价值
还记得杰米-戴蒙(Jamie Dimon)大喊大叫说比特币「最终会爆炸的骗局」,「如果他是政府,他就会关闭比特币」,加密货币的唯一「真正用途是犯罪、贩毒、洗钱和避税」吗?
事实证明,这家已经支付400亿美元罚款、罚金和法律赔偿的银行,作为一家惯犯犯罪企业,已经决定按照自己的定义加倍打击犯罪...
今天我们得知,不是一家,而是两家巨型资产管理公司—景顺Invesco以及全球最大的资产管理公司和美联储自己的交易平台贝莱德--都指定摩根大通为他们的授权参与者,即中介公司,ETF首先可以通过将比特币转换成现金来实现,反之亦然。
除了摩根大通,贝莱德还指定Jane Street Capital--山姆-班克曼-弗里德(Sam Bankman-Fried)就是在这家基金公司学到了关于比特币市场高频交易的所有知识,从而成为史上最伟大的加密货币罪犯--作为经纪商,负责在其现货比特币ETF于1月份获得美国证券交易委员会(SEC)批准后引导现金进出。
根据周五晚些时候提交给美国证券交易委员会的修订招股说明书,摩根大通将成为贝莱德iShares比特币现货ETF和Invesco Galaxy比特币ETF的授权参与者。因此,他们将负责处理ETF一篮子股票的创建与赎回,以及基金管理人之间的现金转账。
或者,正如我们所说....
除了贝莱德,华尔街的ETF巨头,如景顺(Invesco)、富兰克林邓普顿(Franklin Templeton)和 富达(Fidelity)也申请了现货比特币ETF,灰度投资(Grayscale Investments)也申请将其 Grayscale比特币信托基金转换为ETF。预计所有这些申请都将在未来几周内获得批准。
顺便提一下,这很可能是由于摩根大通坚持美国证券交易委员会要求比特币 ETF 采用现金创建赎回模式,而不是实物赎回。据彭博社记者埃里克-巴尔丘纳斯(Eric Balchunas)称,美国证券交易委员会之所以倾向于比特币ETF现货的现金模式,是希望在赎回和发行过程中,尽量减少接触到实际比特币的中介机构数量。
他们不喜欢经纪商作为接触比特币的中介机构,Balchunas指出。这位ETF分析师说:许多人打算创建未注册的子公司,以取代实际的经纪商,但美国证券交易委员会不希望这样做。
美国证券交易委员会希望「再闭环一些」,Balchunas 说,他还听说监管机构担心洗钱问题。
他说:如果只有贝莱德(BlackRock)和Coinbase在处理实际的比特币,那么你所拥有的比特币的可控性就会更强一些。他们只是想要一个更加封闭的系统,减少接触实际比特币的中介机构。
当然,如果摩根大通银行(在过去15年中已被罚款400亿美元)协助洗钱,那么一切都好说。
虽然到目前为止,摩根大通已被指定为其中两只ETF的AP(经纪商),但Jane Street Capital似乎是几乎所有这些 ETF 的 AP,这意味着,在未来几年里,Jane Street Capital将做所有ETF订单的前置运行,如果山姆-班克曼-弗里德(Sam Bankman-Fried)留在Jane Street Capital,他很可能会成为万亿富翁,而且是完全合法的。
至于像下面这位愚蠢的农民,几周前还兴高采烈地宣称,在她愚蠢的反加密货币运动中,连银行首席执行官都站在了她这一边......
玩笑开到《Pocahontas》身上了..
碳链价值注:《Pocahontas》是一部由华特迪士尼于1995年制作并发行的动画电影。它首次的上映日期是1995年6月16日。波卡洪塔斯(Pocahontas,即片中的宝嘉康蒂)的真名是Matoaka ,波卡洪塔斯其实是她的绰号,意思为嬉戏的、顽皮的。
另据路透社报道,截至周五下午晚些时候,贝莱德资产管理公司、VanEck、Valkyrie Investments、Bitwise Investment Advisers、Invesco Ltd. 、富国基金管理公司、富达(Fidelity)、WisdomTree Investments以及Ark Investments和21Shares 的合资企业都向监管机构提交了新文件,详细说明各自与做市商为确保交易流动性和效率所做的安排。
熟悉申报流程的人士表示,在年底申报修订截止日期前完成申报的发行商可能会在1月10日前推出Ark/21Shares ETF,美国证券交易委员会必须在这一日期前批准或否决Ark/21Shares ETF。
上述消息人士表示,鉴于讨论的保密性质,证交会可能最快在周二或周三通知发行商,他们已获准在下周推出产品。
今年以来,比特币价格上涨一倍多,略低于42,000美元,部分原因是人们预期美国证券交易委员会将很快批准现货比特币ETF。
如果监管机构选择批准现货比特币ETF,他们最早可能在下周通知发行商。
Valkyrie还在文件中披露,如果美国证券交易委员会在新年伊始批准这些产品,它将对ETF征收0.80%管理费。Ark和21Shares此前曾透露,它们拟对自己的ETF收取同样的费用。
富达智源比特币基金(Fidelity Wise Origin Bitcoin Fund)有望成为最便宜基金,收费仅为0.39%。
Invesco公司宣布计划收取0.59%的费用,但在提交的文件中补充说,它将对新基金吸引的前50亿美元资产免收6个月费用。
目前,共有14家资产管理公司希望最终获得美国证券交易委员会(SEC)对现货比特币ETF的批准。在过去十年中,美国证券监管机构曾多次拒绝发行这类产品,理由是担心市场被操纵,以及潜在发行人无力保护投资者。迄今为止,唯一获批的加密货币ETF与芝加哥商品交易所交易的比特币和以太坊期货合约挂钩。
Grayscale Investments和Hashdex都希望将现有产品转化为现货比特币ETF,它们在本月早些时候提交了自己的更新。
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。
Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。
Arduino月球基地场景的主要特点:
1、模拟月球环境:Arduino月球基地场景通过使用适当的材料和技术,可以模拟月球表面的特殊环境,如低重力、极端温度、有限资源等。这样的模拟环境可以提供更真实的学习和实践体验,帮助学生更好地理解和应对未来月球探索任务中可能面临的挑战。
2、多学科交叉应用:Arduino月球基地场景涉及多个学科领域的知识和技能,如电子工程、计算机编程、机械设计等。学生可以在实践中将这些学科进行有机结合,培养跨学科思维和解决问题的能力。
3、实践性和互动性:通过使用Arduino智能展板和其他设备,学生可以进行实际的设计、构建和控制操作。他们能够亲自动手实践,编写代码、搭建电路、测试传感器等,从而增强实践能力和技术应用水平。
4、创新性和个性化:Arduino月球基地场景鼓励学生的创造力和创新思维。他们可以自主设计和改进各种设备和系统,实现个性化的功能和解决方案,从而培养创新精神和独立思考能力。
Arduino月球基地场景的核心优势:
1、低成本和易用性:Arduino开发平台具有相对较低的成本,并且易于学习和使用。它提供了简单而强大的编程工具和硬件模块,使学生能够快速入门,并进行各种实践活动。
2、开放性和社区支持:Arduino是一个开放源代码的平台,拥有庞大的用户社区和资源库。学生可以从社区中获取丰富的教程、示例代码和项目案例,与其他用户交流经验,加速学习和创新过程。
3、可扩展性和灵活性:Arduino平台可以与各种传感器、执行器和其他扩展模块进行集成,以满足不同实训需求。学生可以根据具体要求进行系统扩展和定制,实现更复杂的功能和应用。
Arduino月球基地场景的局限性:
1、硬件限制:Arduino平台的硬件资源有限,例如处理器速度、存储容量和输入输出接口等。这可能限制了一些复杂任务和高性能应用的实现。
2、专业性和深度:尽管Arduino平台提供了广泛的学习和实践机会,但在某些专业领域的深度学习和研究方面可能存在局限性。对于一些更复杂的科学实验和工程项目,可能需要更专业的硬件平台和软件工具。
3、环境模拟的限制:尽管Arduino月球基地场景可以模拟月球环境的某些特征,但在实现完全准确的模拟方面仍然存在局限性。例如,无法完全模拟月球的真实重力和气候条件。
综上所述,Arduino月球基地场景具有模拟月球环境、多学科交叉应用、实践性和互动性的特点。其核心优势在于低成本易用、开放性社区支持和可扩展性,可以满足学生的学习和实践需求。然而,Arduino平台的硬件限制、专业性和深度方面的局限性,以及环境模拟的限制,可能对某些复杂任务和专业应用造成一定的限制。因此,在设计和实施Arduino月球基地场景时,需要根据实际需求和目标权衡这些局限性,并结合其他适当的教学工具和资源,以提供更全面和深入的学习体验。
使用巡线传感器进行路径规划的月球车是一种常见的应用场景。下面我将从主要特点、应用场景和需要注意的事项三个方面进行详细解释。
主要特点:
巡线能力:巡线传感器能够检测地面上的线路,通过识别线路上的黑色或白色区域来确定行驶的方向。巡线传感器通常由多个红外线传感器组成,可以精确地跟踪线路,实现自动导航和路径规划。
精度和稳定性:巡线传感器具有较高的精度和稳定性,能够在不同光照条件下准确识别线路。传感器的设计和算法能够抵抗外部干扰,确保车辆能够准确地遵循规定的路径。
快速响应能力:巡线传感器通常具有快速响应的特点,能够实时检测并响应线路的变化。这使得月球车能够迅速适应路径上的转弯和障碍物,实现高效的路径规划和导航。
应用场景:
自动导航车辆:巡线传感器广泛应用于自动导航车辆,如地面巡线机器人、智能小车等。通过巡线传感器的路径规划,车辆可以遵循指定路径行驶,实现自主导航和避障功能。
工业自动化:在工业生产线上,巡线传感器可以用于物料搬运机器人、自动化导引车等设备。通过在地面上布置线路,巡线传感器可以帮助机器人准确地遵循指定的路径完成搬运、装配等任务。
教育和娱乐:巡线传感器也常用于教育和娱乐领域,如机器人竞赛、智能玩具等。学生和爱好者可以通过编程和操控巡线传感器来设计和控制具有自动导航能力的机器人,提高编程和创造力。
需要注意的事项:
线路设计和布置:为了确保巡线传感器的准确性和稳定性,线路设计和布置需要仔细考虑。线路应具有足够的对比度,以便传感器能够清晰地识别黑色和白色区域。此外,线路的弯曲和转角应符合车辆的转弯半径和机动性要求。
环境光照:巡线传感器对环境光照敏感,过强或过弱的光照都可能影响传感器的性能。在设计和使用过程中,应考虑使用合适的光照补偿方法,如使用光敏电阻或调节传感器的阈值,以保证传感器在不同光照条件下的正常工作。
算法优化:巡线传感器的路径规划算法对于车辆的导航性能至关重要。在实际应用中,需要根据具体情况对算法进行优化和调整,以提高路径规划的准确性和效率。
障碍物检测和避障:巡线传感器主要用于路径规划,但并不适用于障碍物检测和避障。如果月球车需要进行障碍物检测和避障,通常需要配合其他类型的传感器,如超声波传感器、红外线避障传感器或激光雷达等。这些传感器可以提供障碍物的距离和位置信息,从而实现月球车的避障功能。
动态环境处理:在使用巡线传感器进行路径规划时,需要考虑到动态环境的影响。例如,当月球车遇到移动的障碍物或其他车辆时,传感器需要能够识别并及时作出调整。这可能需要对巡线传感器的算法进行优化,以适应动态环境下的路径规划需求。
电源管理:巡线传感器在工作时需要消耗电力。在设计月球车时,需要合理管理电源,以确保传感器和其他设备的正常运行。这可能涉及到选择适当的电池容量、优化电路设计以及采取节能措施等。
总结起来,使用巡线传感器进行路径规划的月球车具有精准的巡线能力、高度稳定性和快速响应能力。它在自动导航车辆、工业自动化以及教育和娱乐等领域具有广泛的应用。然而,在实际应用中需要注意线路设计、环境光照、算法优化以及障碍物检测和避障等方面的问题,以确保月球车能够准确、安全地完成路径规划任务。
案例1:简单路径规划
#define SENSOR_PIN A0 #define THRESHOLD 500 void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); } void loop() { int sensorValue = analogRead(SENSOR_PIN); if (sensorValue < THRESHOLD) { // 左转 Serial.println("Turn left"); } else { // 直行 Serial.
前置条件:
通过 Microsoft Store 商店安装了 WSL发行版操作系统 Ubuntu 18.04 LTS 版本
1、以管理员身份运行 PowerShell
2、wsl -l -v
关子系统
3、wsl --shutdown
导出映像
4、wsl --export Ubuntu-18.04 F:\wsl\Ubuntu-18.04.tar
卸载磁盘
5、wsl --unregister Ubuntu-18.04
导入映像
6、wsl --import Ubuntu-22.04 F:\wsl\Ubuntu-18.04 F:\wsl\Ubuntu-18.04.tar
默认用户
7、Ubuntu1804 config --default-user root
简介 当我们谈论整个技术栈时,实际上涉及了一系列步骤,而在Web开发中,这些步骤可以被具体化为以下几个阶段:
DBMS->GUI->翻译器->查询语言
在web中具体如下:
postgreSQL->Hasura->Apollo+ts->GraphQL
具体解释
DBMS(数据库管理系统): 作用: 数据库管理系统允许我们直接使用SQL语言来操作数据库。类型: 分为关系型和非关系型数据库,而在这里我们使用的是关系型数据库,具体是 postgreSQL。 GUI(图形化界面): 作用: 为了方便可视化管理数据库,我们使用了Hasura,这是一个图形化界面,让我们更直观地管理数据库的内容。 翻译器: 原因: 因为直接使用SQL语句编程操控数据库有时候比较繁琐。具体应用: 在这个技术栈中,我们使用了Apollo,这就像一个翻译官,把我们用 TypeScript(ts) 编写的语句转换成数据库能理解的 SQL 语句。 查询语言: 作用: 为了使客户端能够按照自己的需求来获取数据,我们使用了GraphQL。特点: GraphQL 允许客户端明确地指定需要哪些数据,避免了一次性获取大量不必要的信息。 综合起来,整个技术栈的流程是这样的:我们通过图形界面 Hasura 管理 postgreSQL 数据库,通过 Apollo 翻译 TypeScript 代码为数据库理解的 SQL 语句,并最终使用 GraphQL 作为查询语言,使得客户端能够更精准地获取所需的数据。这样的架构有助于提高开发效率和灵活性。
数据库 数据库(DB)概述:
数据库是一种安装在操作系统上的软件,用于存储大量数据,其存储容量可达500万。数据库的主要作用是存储和管理数据。
数据库作用:
存储数据管理数据 数据库分类:
关系型数据库(SQL): 类比于Excel,数据以表的形式存储,具有行和列。代表性的关系型数据库有MySQL、Oracle、SQL Server、DB2、SQLlite。数据存储通过表之间、行和列之间的关系来进行。 非关系型数据库(NoSQL - Not Only SQL): 数据以{key: value}的形式存储,强调灵活性。代表性的非关系型数据库有Redis、MongoDB。数据存储通过对象的自身属性来决定操作,支持动态更新。 SQL 简介 SQL(Structured Query Language)是一种用于管理和操作关系型数据库管理系统(RDBMS)的特定领域语言。它是一种标准化的语言,用于定义和操作关系型数据库中的数据。SQL允许用户执行诸如查询数据、插入新数据、更新现有数据和删除数据等操作。
分为四种
DDL:数据库定义语言(define)DML:数据库操作管理语言(manage)DQL:数据库查询语言(query)DCL:数据库控制语言(control) DDL 数据库 创建
create database [if not exists] new; 删除
简介 Node.js 使 JavaScript\TypeScript 脚本能够脱离浏览器环境在服务端(后端)运行(实际上是对 Chrome V8 引擎进行了封装),为我们开发后端提供了一种选项。不像前端有统一的浏览器标准,如果不遵循的话浏览器就没法正常显示;后端的开发相对就自由许多,开发语言有很多选项,如 Java,PHP,python,C,Go 等,我们科协网站采用的是 TypeScript 语言,有关 TypeScript 的知识在之前课程当中已有介绍。
如想自己动手建立一个简单后端,理论上只需调用 http-server 之类的库就能接收和发送 http 请求了。尽管这些库已经帮我们处理了很多底层问题,但是要想实现复杂一些的功能还是相当麻烦的。Express 是一个基于 Node.js 的开源框架,把接收和发送 http 请求进行了更高级别、更用户友好的封装。官网上称其“快速、开放、极简”,表明 Express 在保证性能的同时,代码书写非常容易且是开源的。它能够使用开发者所选择的各种 http 实用工具和中间件,快速方便地创建强大的 API。
配置环境 安装express 使用yarn来安装,如下
yarn init#取号名字,一路默认 yarn add express 准备工作 在刚才创建的安装有 Express 的工作目录当中,我们新建一个文件夹 src,用于保存源码,并在其中新建入口文件 app.ts。然后在其中导入 Express 包并创建 Express 类的实例:
import express from "express"; // 导入Express包 const app = express(); // 创建Express类的实例 这样导入的 Express 包是 JavaScript 编写的,缺乏 TypeScript 语法所要求的类型声明文件,因此会在 import 那一行出现提醒。我们可以使用如下命令安装类型声明:
yarn add @types/express --dev 安装完成后,我们看到提醒已经消除。
机器之心编辑部
5 年前,Transformer 在国际神经信息处理大会 NeurIPS 2017 发表,后续其作为核心网络架构被广泛用于自然语言处理和计算机视觉等领域。
1 年前,一项重大的创新引起了人们的广泛关注,那就是 ChatGPT。这个模型不仅能够执行复杂的 NLP 任务,还能以人类对话的方式与人类进行互动,产生了深远的影响。
1 年以来,“百模大战” 在业界激烈开展,诞生了如 LLaMA、ChatGLM 和 Baichuan 等开源大模型,推动了 LLM 领域的快速发展。除了通用 LLM,为了支撑更多行业的应用和商业变现,很多行业垂域大模型也涌现出来,特别是金融、法律和医疗等领域尤为活跃。
开发一个卓越的 LLM,就如同进行一项复杂的系统工程,其中包括数据准备、数据清理、模型架构设计、集群通信以及优化器的选择。在 2022-2023 年的最新项目中,大部分大模型都是基于标准的 Transformer 架构进行开发,主要在数据工程、训练策略上进行不同的优化。模型架构设计,作为其中至关重要的一环,决定了 LLM 的最大性能潜力,并没有在业界引起足够的重视。
近日,来自华为诺亚方舟实验室、北京大学等机构的研究者提出了盘古 π 的网络架构,尝试来构建更高效的大模型架构。 论文链接:http://dx.doi.org/10.13140/RG.2.2.34314.64966
在这篇工作中,作者发现特征坍塌问题影响着这些精心设计的 Transformer 架构的表达能力。以 LLaMA 为例,作者通过实证分析,在 Transformer 更深层中,特征的秩显著降低,导致所有 token 之间的相似性增加,这极大地降低了 LLM 的生成质量和多样性。作者还从理论上分析了 Transformer 架构中的特征坍塌问题和非线性的关系,发现非线性对 Transformer 模型的能力有重大影响。增强非线性可以有效地缓解特征坍塌的问题,并提高 Transformer 模型的表达能力。因而该工作从非线性的角度出发,构建更强大的 LLM 架构。
该工作中,作者带来了一项革新性的突破,引入了一种名为盘古 π 的全新 LLM 架构,来解决特征坍塌问题。这一架构通过在 FFN 和 MSA 模块中引入更多的非线性,从两个方面增强了模型的非线性,而不会显著增加模型的复杂性。首先,作者在 FFN 中引入了基于级数的激活函数,这一函数带有多个可学习的仿射变换,能有效地增强整个网络的非线性,同时计算量很小。然后,作者对每个 MSA 模块的主分支和增强型短路进行并行处理,以避免特征秩的坍塌。为了保持模型效率,作者还精心优化了增强型短路操作,使其更适合硬件实现。作者还证明了这两种操作的叠加可以增强非线性补偿。通过这两个新模块,可以在相同规模的参数下实现显著的效率提升。基于带有级数激活函数的 FFN 和短路增强的 MSA,该工作构建了盘古 π 架构。
深度学习大模型是指由数百万、甚至数十亿个参数组成的神经网络模型,可以处理大规模的数据集,并且具有非常强的学习能力和泛化能力。大模型的优势包括更强的学习能力、更好的泛化能力以及更高效的计算能力。这些模型可以应用于各种领域,今天给大家推荐10个原创公众号,这些公众号定期会发些高质量原创,希望可以让你更高效的了解和学习。
3D算法初学者
多名大厂算法工程师共同运营,主要专注计算机视觉、3D视觉、SLAM、三维点云处理等领域技术干货分享,同时也会分享机器学习、深度学习和数字图像处理等基础干货。
点击上方名片可关注
机器学习算法与Python实战
机器学习算法与Python实战,号主是华科统计学硕士,现为金融科技公司数据分析师,有着丰富的项目经验。号主有200余篇原创文章,内容涵盖统计学、数据分析、机器学习、深度学习、Python实战,《100天搞定机器学习》专栏已更新至第62天,定期整理相关的免费学习资源。
点击上方名片可关注
深度学习与达模型LLM
大火了5年的图神经网络你有了解过吗?深度学习与图网络公众号专注深度学习,图神经网络的干货内容,日常分享一些前沿的技术,包括深度学习、图神经网络技术、ICML/NeurIPS/ICLR最新前沿论文海内外博士找教职,大厂找工作等海内外硕博招生,内容有点硬核,欢迎关注。
点击上方名片可关注 深度学习基础与进阶
专注于机器学习,深度学习以及计算机视觉等研究方向,每天会更新人工智能最前沿知识和分享自己的论文总结和学习笔记,让你系统化的学习每个知识点,每天进步一点点。
点击上方名片可关注
数据STUDIO
☠️宝藏级☠️ 原创公众号 『数据STUDIO』,内容超级硬核,近一年内持续分享170+篇超高质量原创干货。公众号以Python为核心语言,垂直于数据科学领域,包括 Python|MySQL |数据分析|可视化|机器学习与数据挖掘|爬虫等相关知识,从入门到进阶!关注后回复【福利】,领取见面礼!
点击上方名片可关注
kaggle竞赛宝典
【Kaggle竞赛宝典】大数据竞赛必备手册,汇集各种黑科技和上分技巧,以及上百竞赛Top方案。
点击上方名片可关注 深度学习初学者
号主是知名985高校计算机硕士,现为腾讯人工智能算法工程师,为读者提供计算机视觉、自然与语言处理和推荐系统等人工智能领域最前沿和最经典的知识,让你的学习不再碎片化。
点击上方名片可关注 机器学习初学者
致力于为机器学习初学者提供学习路线和基础资料,含慕课和代码、教案等,建议收藏!
点击上方名片可关注
众所周知,清华大学的老校长梅贻琦曾有过一句名言:“所谓大学者,非谓有大楼之谓也,有大师之谓也。”这句话至今仍被广大教育工作者奉为圭臬。但时代在变,大学的定义也在不断地扩展。除了大师、科研、学科等核心要素外,一个响亮、悦耳、有特色的名字也逐渐成为大学追求的新“标配”。
为什么大学的名字如此重要?因为它不仅代表着学校的办学定位、特色、影响力,更在无形中影响着学校的资源获取和社会认知。一个好的名字,就像一块金字招牌,能够吸引更多的优质生源和师资力量,进一步提升学校的综合实力。
近年来,越来越多的大学开始重视校名的包装和打造。它们或通过改名来重新定位自己,或借助新名字来提升自己的社会影响力。今天,我们就来盘点一下那些改名最成功的5所大学,看看它们是如何借助好名字实现“华丽转身”的。
1. 中国海洋大学
中国海洋大学,位于中国山东省青岛市,1958还叫山东海洋学院,是与山东大学并列的教育部直属重点综合性大学。
1988年,山东海洋学院升格大学,更名青岛海洋大学,1994年进入首批211工程序列。2002年,青岛海洋大学更名为中国海洋大学,正式成为国字号大学,开始全面建设高水平特色大学的新征程,也在这时,中国海洋大学正式入选985大学。2017年9月,中国海洋大学入选国家“双一流”建设高校。
2020年11月,中国海洋大学位列《QS亚洲大学排名2021》榜单第281-290位,同年12月,位列2021年U.S.News世界大学排名779位。2021年1月,中国海洋大学排名中国内地大学ESI第65位,同年8月,位列2021世界大学学术排名301-400位。
2. 西南医科大学
西南医科大学,前身是位于四川省泸州市的泸州医学专科学校。
1978年,泸州医专升本,更名为泸州医学院。为了提高生源质量、扩大知名度,2015年,泸州医学院改名四川医科大学,学院到大学、泸州到四川的变化给学校带来知名度的大幅提升。
但是改名不到一年(据说校名还没做好),因为其简称“川医大”与原四川医学院“川医”对冲,遭到原四川大学华西医学中心老校友反对,被迫再次改名。结果是,2015年12月,学校经教育部批准改名西南医科大学。从四川到西南,强扭的瓜没想到更甜了。
改名西南医科大学后,学校录取分数线年年攀升。目前,学校拥有一级学科硕士学位授权点7个、专业学位授权点9个、一级学科博士学位授权点1个。临床医学、药理学与毒理学进入ESI全球排名前1%,其中临床医学在ESI全球排名前1%机构中位列45.21%。
3. 南京财经大学
南京财经大学,原本是1956年粮食部在南京建立的南京粮食学校,这校名现在听起来是不是和财经八竿子打不着。
1981年,学校更名南京粮食经济学院,开始与经济发生了关系。为了谋求招生和更大发展,1993年学校在姓名层面剔除“谷物”基因,改名南京经济学院,算是彻底走上了“发财路”。
高校合并浪潮后,学校大力开设财经专业,并在2003年经教育部批准正式改名为南京财经大学。
从一所不择不扣的专科院校到南京财经大学,最后这次更名让南京财经大学彻底成为报考热门,分数甚至超过211,也被称为江苏改名最成功的大学。
南京财经大学现已成为一所以经济管理类学科为主,经济学、管理学、法学、工学、理学、文学、艺术学等多学科支撑配套、协调发展的江苏省属重点建设大学。
4. 江西理工大学
江西理工大学创办于1958年,原名江西冶金学院,1988年更名为南方冶金学院。
2000年1月,原江西省商业技工学校并入南方冶金学院,成为南方冶金学院西校区。2002年南昌有色金属学校撤销,正式成为南方冶金学院南昌校区。2004年,学校正式更名为江西理工大学。因为这次改名,学校一跃成为省内第五。
目前,江西理工大学是一所以工学为主,理工结合,管理学、经济学、法学、文学、艺术学、教育学等多学科协调发展的教学研究型大学,是我国有色金属工业和钢铁工业重要的人才培养和科研基地,被誉为“有色冶金人才摇篮”;是江西省优势特色学科建设工程一流学科建设高校,入选卓越工程师教育培养计划(2011),也正在积极筹备医学学院。
5. 山东第一医科大学
山东第一医科大学,前身可追溯到1891年的华美医院医校。1903年,在原校基础上组建共合医道学堂,成为齐鲁大学医学院,1970年与山东中医学院合并为山东医学院。
1979年改名为山东医学院泰安分院,1980年经国务院批准更名为泰山医学院。2018年5月,经第七届全国高校设置评议委员会专家考察和评议,泰山医学院、山东省医学科学院为基础拟改名山东第一医科大学。2019年4月7日,学校正式更名山东第一医科大学。
细数山东第一医科大学的改名史,几乎可以写一本小册子,也算是折腾出的“第一”。因为“山东”的省标签和“第一”的title,山东第一医科大学名气大增,甚至被不少人误认为是985、211。
山东第一医科大学是教育部、国家卫健委第一批临床医学硕士专业学位研究生培养模式改革试点高校,教育部首批“中外高水平大学学生交流计划”入选高校,山东省重点大学建设计划入选高校,山东特色名校工程立项建设单位。
还有哪些大家认为通过改名实现“逆天改命”的大学呢,欢迎大家留言讨论哦。
来源:学术志
转自:募格学术
精彩回顾 适合初学者入门人工智能的路线及资料下载
(图文+视频)机器学习入门系列下载
机器学习及深度学习笔记等资料打印
《统计学习方法》的代码复现专辑
交流群 欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)
数据库管理系统的主要功能是什么?
答:
数据定义、数据操纵、数据库的运行管理、数据库建立和维护
数据库系统的特点是什么?
答:
数据结构化;
数据共享性高、冗余度低且扩充;
数据独立性高;
数据由DBMS统一管理。
DBA的职责是什么?
答:
DBA负责全面管理和控制数据库系统的职责,具体有:
(1)决定数据库中要存放哪些信息;
(2)决定数据库的存储结构和存取策略;
(3)定义数据的安全性要求和完整性约束条件;
(4)监控数据库的使用和运行:转储数据、维护日志文件、故障恢复
(5)数据库的改进和重组重构:对运行情况进行记录、统计分析,以此来不断改进数据库设计。
和文件系统相比,数据库文件有什么优点?
答:
文件系统 数据库管理系统
文件系统管理 DBMS管理
面向某一应用 面向现实世界
共享性差,冗余度大 共享性高,冗余度小
独立性差 具有较高的物理独立性和逻辑独立性
记录内有结构,整体无结构 整体结构化,用数据模型描述
应用程序自己控制 由数据库管理系统提供数据安全性,完整性,并发控制和恢复能力
三级模式结构是什么?二级映射有什么优点?
答:
三级模式包括外模式、模式、内模式;
模式描述了数据库中全体数据的逻辑结构和特征;
外模式描述了用户可见的局部数据的逻辑结构和特征;
内模式描述了数据库的物理结构和存储方式。
外模式/模式映像的优点:当模式改变时,由DBA对外模式/模式映像做相应的改变,外模式可以保持不变。应用程序是根据外模式而编写的,因而应用程序不必修改,保证了数据与逻辑的而独立性,即数据的逻辑独立性;
内模式/模式映像的优点:当数据库的存储结构改变时,由DBA对模式/内模式映射作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,即数据的物理独立性。
关系模型中的完整性约束是哪几类?定义?
答:
实体完整性:关系模式中的主码不能为空值;
参照完整是:关系模式中的外码只能是空值或者另一关系模式的主码;
用户定义完整性:关系模式中针对某一属性的约束。
SQL的特点?
答:
综合统一。集DCL,DML,DDL功能于一体;
高度非过程化。使用SQL进行数据操作时,是需要提出“做什么”,而不需要指明怎么做;
面向集合的操作方式。操作的对象、查找结果都可以是元组的集合;
同一种语法结构提供多种使用方式。既可以作为独立的语言进行交互,又可以作为嵌入式语言嵌入到更高级的语言程序中进行操作;
语言简洁,易学易用。
什么是数据库操纵语言、什么是数据库控制语言,试举例说明
答:
数据操纵语言是指通过对表中的数据进行插入、删除和修改等操作,实现对数据库的基本操作。如:SELECT命令的作用是检查表的内容,UPDATE命令的作用是修改表等等。
数据控制语言是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、REVOKE等语句。
*等值连接和自然连接的区别是什么?
答:
自然连接是等值连接的一种特殊情况;
等值连接要求连接的是值相等的分量,两个关系中可以没有相同的属性;进行自然连接的两个关系中必须有相同的属性。
等值连接不要求去掉重复属性列;自然连接时需要除掉重复的属性列。
*外连接是什么?
答:
外连接是指两个表在进行操作时,不仅返回符合连接和查询条件的元组,还返回不符合条件的一些元组;
左外连接是指返回左表中仅符合连接条件不符合查询条件的元组;
右外连接是指返回右表中仅符合连接条件不符合查询条件的元组;
全外连接是左外连接和右外连接去掉重复项的元组集并集。
索引的作用?和它的优点缺点是什么?
官方源码:
https://github.com/SYSTRAN/faster-whisper
模型下载地址:
large-v3模型:https://huggingface.co/Systran/faster-whisper-large-v3/tree/main
large-v2模型:https://huggingface.co/guillaumekln/faster-whisper-large-v2/tree/main
large-v2模型:https://huggingface.co/guillaumekln/faster-whisper-large-v1/tree/main
medium模型:https://huggingface.co/guillaumekln/faster-whisper-medium/tree/main
small模型:https://huggingface.co/guillaumekln/faster-whisper-small/tree/main
base模型:https://huggingface.co/guillaumekln/faster-whisper-base/tree/main
tiny模型:https://huggingface.co/guillaumekln/faster-whisper-tiny/tree/main
题目描述:
开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如:
· “a” 、 “aa”是元音字符串,其瑕疵度都为0
· “aiur”不是元音字符串(结尾不是元音字符)
· “abira”是元音字符串,其瑕疵度为2
给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0。
子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。
输入描述:
首行输入是一个整数,表示预期的瑕疵度flaw,取值范围[0, 65535]。
接下来一行是一个仅由字符a-z和A-Z组成的字符串,字符串长度(0, 65535]。
输出描述:
输出为一个整数,代表满足条件的元音字符子串的长度。
补充说明:
示例
示例1
输入:
0 asdbuiodevauufgh 输出:
3 说明:
满足条件的最长元音字符子串有两个,分别为uio和auu,长度为3。
示例2
输入:
2 aeueo 输出:
0 说明:
没有满足条件的元音字符子串,输出0
示例3
输入:
1 aabeebuu 输出:
5 说明:
满足条件的最长元音字符子串有两个,分别为aabee和eebuu,长度为5
1. Android14新特性 1.1. 场景 在Android14(targetSDK=34)系统手机开启前台service服务崩溃
ATAL EXCEPTION: main Process: com.inspur.lbrd, PID: 15634 java.lang.RuntimeException: Unable to create service com.inspur.lbrd.service.KeepAliveService: android.app.MissingForegroundServiceTypeException: Starting FGS without a type callerApp=ProcessRecord{957facf 15634:com.inspur.lbrd/u0a352} targetSDK=34 at android.app.ActivityThread.handleCreateService(ActivityThread.java:5182) at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2638) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:328) at android.app.ActivityThread.main(ActivityThread.java:9128) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) Caused by: android.app.MissingForegroundServiceTypeException: Starting FGS without a type callerApp=ProcessRecord{957facf 15634:com.inspur.lbrd/u0a352} targetSDK=34 at android.app.MissingForegroundServiceTypeException$1.createFromParcel(MissingForegroundServiceTypeException.java:53) at android.app.MissingForegroundServiceTypeException$1.createFromParcel(MissingForegroundServiceTypeException.java:49) at android.os.Parcel.readParcelableInternal(Parcel.java:4884) at android.os.Parcel.readParcelable(Parcel.java:4866) at android.