关于web:如何使用Docker和Nginx部署Web应用

Hello大家好!我是咕噜铁蛋明天我要和大家分享一个十分实用的技术教程——如何应用Docker和Nginx来部署Web利用。随着互联网的倒退,Web利用越来越遍及,而应用Docker和Nginx来部署Web利用曾经成为了一种风行的做法。接下来,让我率领大家一起摸索这个乏味又实用的主题吧!一、什么是Docker和Nginx首先,让咱们简略理解一下Docker和Nginx这两个概念。Docker是一种容器化技术,能够将应用程序及其依赖项打包到一个可移植的容器中,从而实现疾速部署和跨平台运行。而Nginx是一款高性能的Web服务器软件,具备负载平衡、反向代理等性能,被宽泛用于Web利用的部署和治理。二、为什么抉择Docker和Nginx为什么咱们抉择应用Docker和Nginx来部署Web利用呢?首先,Docker能够实现利用与环境的隔离,确保利用在不同环境下可能统一运行;其次,Nginx具备高性能和灵便配置的特点,能够无效地解决大量并发申请,晋升Web利用的稳定性和性能。因而,联合Docker和Nginx能够让咱们更轻松地部署和治理Web利用。三、应用Docker和Nginx部署Web利用的步骤接下来,让咱们一步步来介绍如何应用Docker和Nginx部署Web利用: 编写Dockerfile:首先,咱们须要编写一个Dockerfile文件,定义Web利用的运行环境和启动命令。在Dockerfile中指定根底镜像、装置依赖项、拷贝利用代码等操作。构建Docker镜像:接下来,应用Docker命令构建镜像,将Dockerfile中定义的操作步骤转换为镜像文件。通过docker build命令能够将Dockerfile构建成一个可运行的镜像。运行Docker容器:构建实现镜像后,咱们能够应用docker run命令来运行容器,并将Web利用部署到容器中。在运行容器时能够指定端口映射、数据卷等参数,以确保容器可能失常拜访和存储数据。配置Nginx代理:最初,咱们须要配置Nginx作为Web利用的代理服务器,将内部申请转发到运行中的Docker容器上。通过编辑Nginx配置文件,设置代理规定和路由规定,能够实现对Web利用的负载平衡和反向代理。通过明天铁蛋的介绍,置信大家曾经对如何应用Docker和Nginx部署Web利用有了肯定的理解。Docker和Nginx作为当今风行的技术工具,能够帮忙咱们更高效地部署和治理Web利用,晋升开发和运维的效率。将来,随着技术的不断进步,咱们能够期待Docker和Nginx在Web利用部署畛域施展更大的作用,为咱们带来更多便当和翻新。心愿本文对大家有所帮忙,如果你对Docker和Nginx的应用还有其余疑难或者想要深刻理解,欢送留言给我,我会尽力为大家解答。感激大家的浏览,咱们下期再见!

February 21, 2024 · 1 min · jiezi

关于web:Web应用防火墙规则防护-京东云技术团队

一、什么是Web利用防火墙?Web利用防火墙对网站、APP的业务流量平安及合规性爱护,对业务流量的辨认歹意特征提取、剖析辨认出歹意流量并进行解决, 将失常平安的流量回源到业务服务器, 爱护网站外围业务和数据安全。 京东云Web利用防火墙的产品架构示意图如下: 二、Web攻打常见的检测伎俩?Web攻打常见的三种检测伎俩,规定检测、AI检测或语义检测。 1.规定检测:效率高、辨认精准度高。其表现形式是正则表达式,通过正则表达式或组合来检测攻打,例如:OWASP Top10十大安全漏洞,也有与其对应的规定汇合 owasp top10 rules set,通过规定拦挡歹意攻打曾经是各大厂商的支流检测伎俩。目前各大WAF厂商都有本人的平安规定汇合。 2.AI检测:通过AI机器学习或深度学习算法来检测Web攻打, 能检出未知威逼, 毛病检测效率低,个别用于离线检测,误报率绝对较高, 具体取决于算法模型及训练样本等。 3.语义检测:通过对SQL或XSS注入进行语法及词法剖析来检测攻打, 鉴于算法特点, 误报率较高,个别用于告警, 不间接拦挡业务申请。 三、私有云上用户及业务场景的特点私有云上的用户蕴含各个行业,业务场景具备多样性和复杂性的特点,例如:电商和政务云都是私有云的常见客户,通用的规定汇合能够无效满足用户的防护需要, 但针对特点流动场景,例如优惠券流动、重点场景须要针对性定制不同的防护规定汇合, 以满足非凡场景下防护需要。 四、针对私有云多态、简单的业务场景的解决方案1.默认规定组: 采纳规定组汇合的形式进行全面平安防护。 2.规定组分级: 规定组级别分为宽松、失常、严格,用以满足不同场景或同一场景不同期间的需要。 3.自定义规定组:定制化的进攻策略组,针对简单,特定需要的业务场景,例如:专门针对SQL注入自定义规定组,在抉择规定时只抉择SQL注入类的规定。 4.误报解决:通过白名单对申请特色加白或在自定义规定组中去掉误报的规定来解决误报。 4.1 默认规定组Web利用攻打防护引擎基于内置的专家教训规定集,主动为网站进攻SQL注入、XSS跨站,webshell上传、命令注入、后门隔离、非法文件申请、门路穿梭、常见利用破绽攻打等通用的Web攻打。 4.2 规定组分级规定组级别分为宽松、失常、严格,用以满足不同场景或同一场景不同期间的需要。 例如在平时咱们将规定组设置为失常级别, 然而在重保期间能够将规定组晋升为严格级别,从而来阻断更多的攻打危险。 失常级别:检测常见的Web利用攻打(默认抉择)。 严格级别:当您须要更严格地防护门路穿梭、SQL注入、命令执行时,倡议抉择此等级。 宽松:当发现存在较多误拦挡,或者业务存在较多不可控的用户输出时,能够抉择此等级。 4.3 自定义规定组定制化的进攻策略组,针对简单,特定需要的业务场景,例如:专门针对SQL注入自定义规定组,在抉择规定时只抉择SQL注入类的规定。 例如: 抉择一个规定组模板,之后对模板内的规定进行删除,或增加新的规定到规定组中; 已抉择的平安规定 未增加的平安规定 4.4 解决业务误报4.4.1 自定义规定组通过自定义规定组除去误报规定的形式来解决误报问题。 4.4.2 白名单加白基于申请特色对误报流量加白, 加白后的流量会被WAF bypass,从而解决误报问题。 五、京东云WAF规定检测引擎次要个性1.实时全面检测http报文,且跨包流量无脱漏检测; 2.自适应内容解析:自适应解析JSON、XML、Multipart等数据格式,晋升检测的准确率; 3.自适应解码:包含URL、HTML、Base64、Unicode、十六进制、二进制等多种格局解码,进步检测的召回率; 4.反对HPP参数净化及依赖注入攻打防护,自适应SQL、XSS去正文。 作者:京东科技 范朋飞 起源:京东云开发者社区 转载请注明起源

September 7, 2023 · 1 min · jiezi

关于web:国内首个政务领域-Web-引擎-SIG-成立龙蜥联合儒特科技打造全新一代-Web-架构

近日,在龙蜥社区技术委员会上,整体技术委员投票通过儒特科技提交的 Web 引擎 SIG(Special Interest Group,非凡兴趣小组)组的立项申请。该 SIG 小组引擎为国内首个专一于政务软件应用的 Web 引擎,小组也将致力于 Web 相干技术的研发和翻新,包含 Web 引擎、Web 工具、Web 组件、浏览器等。基于此,龙蜥将联结儒特科技打造全新一代 Web 架构。 Web 引擎作为古代 IT 体系的底层根底软件,具备极强的生态及策略价值。儒特科技寰球独创的“微内核+插件化” Web 引擎架构,是一次底层技术架构的重大突破,不仅能够更好的适配古代政务畛域复杂多变的利用场景,更是对传统 Web 引擎的一次革命性颠覆。 值得一提的是,龙蜥 Web 引擎 SIG 小组由 IEEE Fellow 唐远炎传授领衔主导。唐传授是模式识别及图形图像解决畛域享誉世界的驰名科学家,在各类国内顶级学术期刊上发表论文 600+ 篇,援用次数 20000+。同时也领有国内国内多个学术组织荣誉职务,如:IEEE SMC 模式识别技术委员会开创主席、国家自然科学基金评委(组长)、长江学者评委、中国自动化学会常务理事等。他的诸多学术研究成绩已广泛应用在AI机器视觉、图形图像信号剖析等一线畛域。 此次,龙蜥社区联结儒特科技成立的 Web 引擎 SIG 组,是儒特科技在技术上挑战寰球巨头,打造全新一代 Web 渲染引擎架构的里程碑,这充分说明了 Web 引擎对古代操作系统组成的必要性及刚需性,也表明了龙蜥对前沿尖端技术摸索的前瞻性。 SIG 我的项目青霜引擎(QINGSHUANG)重度孵化:将作为本SIG重点孵化我的项目,打造标杆创业项目。技术验证:客户端运行总数超一亿台。 技术状态: 国内最极致的微内核 MicroKernel 架构。插件化。智能伸缩 Web 引擎。分布式 Web 引擎设计。成果指标: 体积:1/10。性能:持平。Web 兼容度:90%。目前为寰球最轻量 Web 引擎。儒特科技虽以技术立业,但并没有仅仅停留在技术层面,而是对整个软件行业有着深度的思考与摸索。软件,尤其是根底软件的商业模式是世界性难题,其大多被迫采取开源,以开源形式尝试扩充行业影响力,放弃“赚钱”转而尝试“值钱”的商业方向。儒特团队始终认为赚钱与值钱并非矛盾的两面,实质都须要扎实的技术与宽泛的用户(客户端)作为根底。 通过长期的实际及调研,儒特科技提出“生态交融”策略,对内工匠精力,夯实根底,对外宽泛布局,合纵连横。踊跃拥抱现有技术生态,被动融入现有技术生态,以融入——构建——扭转,三步策略逐渐实现向产业上下游的延长及扩大,最终打造本人的技术壁垒与生态。 龙蜥社区作为国内当先的根操作系统技术社区,齐全认同儒特科技的倒退策略,也违心作为合作方踊跃帮助儒特科技,使 Web 引擎架构发展壮大。置信通过单方共同努力,必定会在新一代技术架构上研发和落地上,减速儒特引擎在产业生态更快的交融。 唐远炎传授示意:“龙蜥社区 Web 引擎 SIG 致力于以开源共建形式,打造一款新形态、轻量化、微内核 Web 引擎。十分欢送业界开源同仁退出,构建国内乃至国内最有影响力的 Web 我的项目和社区。” ...

September 1, 2023 · 1 min · jiezi

关于web:妙思维WEB前端高级工程师养成计划全修精英特训

download:妙思维WEB前端高级工程师养成打算【全修精英特训】Setup语法糖和组合式API在Vue.js 3中,引入了一些新的个性,其中包含Setup语法糖和组合式API。本文将具体介绍这两个个性,它们对于Vue开发者提供了更加灵便和弱小的选项。 Setup语法糖Setup语法糖是Vue 3中的一个新个性,它为咱们提供了一种更简洁、易于了解的形式来编写组件逻辑。在过来的Options API中,咱们须要在data、methods等选项中定义组件的状态和办法,而在Setup中,咱们能够应用函数的形式来实现雷同的性能。 具体来说,咱们只需在组件中定义一个名为setup的函数,该函数承受两个参数:props和context。通过这两个参数,咱们能够拜访组件的属性和上下文信息。在setup函数外部,咱们能够返回一个对象,该对象蕴含组件的状态、办法和其余选项。 组合式API组合式API是Vue 3中另一个重要的个性,它旨在解决Options API在简单组件中的毛病。Options API的问题之一是随着组件变得越来越简单,其选项会逐步收缩,并且难以保护。组合式API通过将逻辑依照性能划分为多个可复用的函数,提供了一种更好的组织和治理代码的形式。 在应用组合式API时,咱们能够定义多个自定义的函数,例如useCount、useFetch等等。这些函数能够承受参数,并返回一个蕴含状态和办法的对象。而后,在setup函数中,咱们能够应用...运算符将这些函数的返回值合并到一个对象中,从而将相应的逻辑增加到组件中。 通过组合式API,咱们能够更好地组织代码,并且使得逻辑更加可复用和可测试。 Setup语法糖与组合式API的关系Setup语法糖是应用组合式API的一种简化写法。在应用Setup语法糖时,咱们能够间接在setup函数外部引入和调用自定义的函数,而无需显式地进行导入。这样,咱们能够更不便地应用和治理多个逻辑函数。 因而,能够说Setup语法糖是组合式API的一种高级用法,它使得组合式API更加易于应用和编写。 总结在Vue 3中,Setup语法糖和组合式API提供了更加灵便和弱小的选项来编写组件逻辑。Setup语法糖简化了Options API的写法,容许咱们应用函数来定义组件的状态和办法。而组合式API则进一步提供了一种更好的组织和治理代码的形式,通过将逻辑按性能划分为多个可复用的函数,使得代码更易于保护和测试。应用Setup语法糖能够更不便地应用和编写组合式API,从而进步开发效率和代码品质。

June 22, 2023 · 1 min · jiezi

关于web:HStream-ConsoleHStreamDB-014-发布

HStream ConsoleHStream Console 是一套基于 Web 的图形化的 HStream UI,用来治理 HStreamDB 集群内的各项资源和工作负载,目前反对的次要性能如下: stream 治理:包含查看、新建、删除 stream,以及治理 stream 蕴含的 shardsubscription 治理:除根本的治理操作以外,还包含查看以后 subscription 上关联的生产客户端,以及查看 subscription 上的生产进度等records 查问:蕴含依据 recordId 查问指定 stream(shard)内的 records,以及在线的 records 写入等查看 metrics:提供 stream 和 subscription 相干的多种指标的统计图展现,并反对查看不同工夫范畴的数据(目前 metrics 展现依赖 Promethus,后续 metrics 数据将间接保留在 HStreamDB 中)残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1174814?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

June 20, 2023 · 1 min · jiezi

关于web:妙思维WEB前端高级工程师养成计划全修精英特训

download:妙思维WEB前端高级工程师养成打算【全修精英特训】视频详情页及手势滑动特效在以后互联网时代,视频曾经成为了人们日常生活中不可或缺的一部分。随着挪动设施的遍及和网络带宽的晋升,越来越多的人开始应用手机或平板电脑观看视频。因而,在挪动利用中设计优良的视频详情页及手势滑动特效曾经成为了非常重要的工作。 视频详情页视频详情页是指挪动利用中展现视频相干信息的页面。该页面通常包含视频播放区域、视频题目、视频介绍、用户评论、相干举荐等内容。为了使用户可能更好地理解视频内容,视频详情页须要设计正当的布局,突出重点信息,同时也须要思考用户体验,使其操作简略、直观。 手势滑动特效手势滑动特效是指通过手指在屏幕上滑动实现某种成果的设计。在视频详情页中,手势滑动特效能够使用户在浏览视频的过程中更加便捷。例如,用户能够通过向左滑动来快进视频,向右滑动来后退视频;向上滑动则能够暗藏视频管制条,向下滑动则能够显示管制条。 除此之外,手势滑动特效还能够用于实现高低翻页、左右滑动切换页面等性能。在设计手势滑动特效时,须要留神手势的灵敏度、操作反馈、交互界面等方面,以使用户失去良好的体验。 视频详情页及手势滑动特效综合设计在挪动利用中,视频详情页及手势滑动特效是相辅相成的。通过正当的布局和信息出现,能够让用户更好地理解视频内容;而通过便捷的手势操作,则能够让用户在观看视频时无需繁琐的操作,晋升用户体验。因而,在设计视频详情页时,须要思考如何与手势操作联合,以达到最佳的用户体验成果。 总之,视频详情页及手势滑动特效的设计对于挪动利用来说是十分重要的。通过优良的设计,不仅能够进步用户体验,还能够减少用户粘性,促成利用的倒退。因而,在挪动利用开发过程中,须要重视视频详情页及手势滑动特效的设计与实现。

June 19, 2023 · 1 min · jiezi

关于web:Web前端架构师2022版胜日寻芳泗水滨

download:Web前端架构师2022版图解脚手架架构设计:打造高效开发模式在软件开发过程中,脚手架是一种十分有用的工具,它能够帮忙开发者疾速创立我的项目构造、生成代码、配置环境等。本文将介绍脚手架架构设计的根本准则和流程,并通过图解的形式来展现如何设计一个高效的脚手架。 什么是脚手架?脚手架是一种自动化工具,可能在我的项目创立的初期提供一些有用的性能,例如创立我的项目构造、生成代码、装置依赖项等。应用脚手架能够让开发者专一于业务逻辑的实现,而不用浪费时间在重复性的工作上。 脚手架架构设计的准则要设计一个高效的脚手架,须要遵循以下几个准则: 模块化设计:将脚手架拆分成多个模块,每个模块都有本人的责任和性能,能够独立进行开发和测试。 可扩展性:脚手架应该反对插件机制,以不便增加新的性能和扩大现有性能。 配置化治理:脚手架的配置应该采纳对立的配置文件格式,以方便管理和保护。 高度可定制化:脚手架应该反对自定义模板和配置文件,以满足不同我的项目的需要。 脚手架架构设计流程上面是一个根本的脚手架架构设计流程: 确定脚手架的性能需要和范畴,例如我的项目构造、代码生成、依赖项治理等。 定义脚手架的外围模块和插件模块,确定它们之间的关系和交互方式。 设计脚手架的配置文件格式和自定义模板机制,以反对高度可定制化。 实现脚手架的外围模块和插件模块,并进行单元测试和集成测试。 编写文档和用户指南,以提供给开发者应用。 图解脚手架架构设计上面是一个示意图,展现了一个简略的脚手架架构设计: 脚手架架构设计示意图 如上图所示,脚手架次要蕴含两个局部:外围模块和插件模块。外围模块负责解决脚手架的外围性能,例如创立我的项目构造、生成代码等。插件模块则负责提供额定的性能和扩大现有性能,例如增加新的模板、装置依赖项等。 脚手架的配置文件采纳YAML格局,以方便管理和保护。开发者能够通过批改配置文件来自定义我的项目的目录构造、文件名、依赖项等。 总结脚手架是一个十分有用的工具,能够帮忙开发者疾速构建我的项目并进步开发效率。设计一个高效的脚手架须要遵循模块化、可扩展性、配置化治理和高度可定制化的准则,并依照流程进行实现和测试。

May 31, 2023 · 1 min · jiezi

关于web:探索-Web-管理之路OpenYurt-社区-UICLI-SIG-正式启动

背景OpenYurt 是业界首个依靠云原生技术体系、“零”侵入实现的智能边缘计算平台。它具备“云、边、端一体化”的全方位能力,能够帮忙用户疾速实现大规模边缘计算业务和异构算力的高效交付、运维及治理。 在前几个迭代的大版本中,OpenYurt 我的项目曾经获得了许多停顿,如 1.1 版本中 OTA 降级能力的退出,1.2 版本里节点池治理能力的加强,OpenYurt 的根底性能曾经愈发欠缺。同时,在最新的 1.3 版本中,OpenYurt 把次要的 controller 都对立收敛在 yurt-manager 组件中,整体架构也趋简洁。只管在差异化技术竞争力方面曾经获得了诸多停顿,在与社区用户和开发者的交换中,咱们发现 OpenYurt 的应用门槛依然绝对较高,须要更加易用的工具和文档来升高这个门槛。因而,易用性会是 OpenYurt 社区接下来重点解决的问题之一。 指标为了更好地服务社区用户,OpenYurt 社区推出了 UI/CLI SIG (特地兴趣小组)。一个简略直观的用户界面能够极大地改善用户体验, 减少 OpenYurt 的易用性和敌对性。UI/CLI SIG 的次要指标是通过提供易用的用户界面和命令行工具,升高 OpenYurt 的应用门槛,使更多的开发者可能疾速上手并应用 OpenYurt 的性能。 具体来说,UI/CLI SIG 的工作将聚焦于以下几个方面: 提供能力弱小的命令行工具,使用户能够通过简洁的命令行界面来治理 OpenYurt 集群。CLI 工具将笼罩 OpenYurt 的全副能力,并聚焦在提供弱小的性能和灵便的配置选项上,以便让用户更便捷地应用 OpenYurt。提供简略易用的图形化界面,使用户能够通过交互式的体验来治理 OpenYurt 集群。UI 工具将提供 OpenYurt 的次要性能(如自治,节点池治理等),并聚焦在提供简略易用的界面和操作形式上,以便让用户更快地上手和应用 OpenYurt。提供具体的文档和教程,帮忙用户了解 OpenYurt 的性能个性,疾速上手。这包含装置、配置和应用 UI/CLI 工具的步骤和示例,以及常见问题的解答等。这些文档和教程将为用户提供便捷的学习和应用 OpenYurt 的渠道,帮忙他们更快地把握 OpenYurt 的性能个性和应用办法。收集和反馈用户反馈和需要,不断改进和欠缺 UI/CLI 工具。UI/CLI SIG 将定期收集用户反馈和需要,以便及时优化和改良 UI/CLI 工具的性能和性能。同时,UI/CLI SIG 也将继续更新和保护 UI/CLI 工具,确保其与 OpenYurt 的最新版本兼容。RoadmapUI/CLI SIG 目前蕴含两个次要我的项目:dashboard 和 yurtadm,负责人为陈璐和邓梁。我的项目布局如下: ...

May 31, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战完结总把新桃换旧符

download:Web3.0热门畛域NFT我的项目实战Web3.0曾经成为了互联网行业的热门话题,并且正在引起越来越多人的关注。Web3.0是指一种新型互联网技术,它旨在通过区块链、分布式存储和智能合约等技术手段将互联网变成一个更加去中心化、平安、凋谢和通明的网络。 区块链技术区块链技术是Web3.0的核心技术之一,它能够实现去中心化的分布式账本和智能合约。目前,区块链技术曾经在金融、医疗、物流等多个畛域失去利用。将来,随着区块链技术的倒退,它无望进一步渗透到教育、政府、社交等畛域。 分布式存储技术Web3.0的另一个热门畛域是分布式存储技术。传统的互联网应用程序通常将数据存储在中心化的服务器上,而分布式存储技术则是将数据扩散存储在多个节点上。这样能够进步数据的可靠性和安全性,并且升高了保护老本和服务器负载。 智能合约智能合约是Web3.0的重要组成部分,它能够通过自动化执行合约条款来实现去中心化、高效率的交易。智能合约曾经被广泛应用于加密货币、金融、保险等畛域,并且无望进一步渗透到房地产、物流等畛域。 去中心化应用程序(DApps)去中心化应用程序(DApps)是Web3.0的另一个热门畛域,它是一种基于区块链技术和智能合约的应用程序。与传统的互联网应用程序不同,DApps是齐全开源的、去中心化的,并且应用加密货币进行领取。DApps曾经被利用于游戏、社交、娱乐、教育等多个畛域。 贡献者经济模式在Web3.0的世界里,贡献者经济模式变得越来越风行。该模式是一种基于区块链技术的新型经济模式,它通过智能合约来治理和调配贡献者之间的收益。贡献者能够是开发者、设计师、测试人员、用户等,他们分享他们的技能和教训,能够取得加密货币作为处分。 总体来说,Web3.0是一个充斥时机和挑战的新时代。随着区块链、分布式存储、智能合约等技术的倒退,它将极大地影响将来的互联网世界。在这个新时代里,咱们须要一直学习、翻新和摸索,能力适应一直变动的环境。

May 27, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战完结千呼万唤始出来

download:Web3.0热门畛域NFT我的项目实战完结详解合约值类型-编码实战 合约是以太坊区块链中最根本的概念之一,它是一个智能合约程序,能够主动执行预设操作。在以太坊上编写合约时,须要理解合约值类型。本文将深入探讨合约值类型,并通过编码实战演示如何应用不同的合约值类型。 什么是合约值类型? 在以太坊上编写合约时,须要定义变量并对其赋值。合约值类型是指这些变量能够被调配的数据类型。合约值类型包含布尔型、数值型、地址型、字节数组型和字符串型等。 布尔型 布尔型是一种代表虚实值的类型,只有两个可能的值:true和false。在合约中,布尔型通常用于条件语句和循环语句中。 上面是一个演示如何在Solidity中定义和应用布尔型的例子: pragma solidity ^0.8.0; contract BooleanExample { bool public isActive = true;function toggleActive() public { isActive = !isActive;}}在下面的代码中,咱们定义了一个名为BooleanExample的合约,并定义了一个名为isActive的公共变量,该变量为布尔型,初始值为true。咱们还定义了一个toggleActive函数,该函数可用于将isActive值从true切换到false或从false切换到true。 数值型 数值型是一种代表数字的类型,包含整数和浮点数。在Solidity中,能够应用int和uint关键字定义整数变量,以及fixed和ufixed关键字定义固定位数小数变量。 上面是一个展现如何在Solidity中定义和应用整数型的例子: pragma solidity ^0.8.0; contract IntegerExample { int public myInt = -1;uint public myUint = 1;}在下面的代码中,咱们定义了一个名为IntegerExample的合约,并定义了一个名为myInt的公共整数变量,初始值为-1。咱们还定义了一个名为myUint的公共无符号整数变量,初始值为1。 地址型 地址型是一种代表以太坊账户地址的类型。在Solidity中,能够应用address关键字定义地址变量。 上面是一个演示如何在Solidity中定义和应用地址型的例子: pragma solidity ^0.8.0; contract AddressExample { address public myAddress = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;}在下面的代码中,咱们定义了一个名为AddressExample的合约,并定义了一个名为myAddress的公共地址变量,初始值为0x5B38Da6a701c568545dCfcB03FcB875f56beddC4。 字节数组型 字节数组型是一种代表任意长度的字节数组的类型。在Solidity中,能够应用bytes关键字定义字节数组变量。 上面是一个演示如何在Solidity中定义和应用字节数组型的例子: pragma solidity ^0.8.0; contract BytesExample { bytes public myBytes = hex"00112233445566778899aabbccddeeff";}在下面的代码中,咱们定义了一个名为BytesExample的合约,并定义了一个名为myBytes的公共字节数组变量,初始值为hex"00112233445566778899aabbccddeeff"。 字符串型 字符串型是一种代表任意长度的UTF-8编码字符串的类型。在Solidity中,能够应用string关键字定义字符串变量。 上面是一个演示如何在Solidity中定义和应用字符串型的例子: ...

May 25, 2023 · 1 min · jiezi

关于web:Web30互联网的下一步

Web3.0是一种新型的互联网技术,具备分布式、去中心化、平安可信等特点,能够为用户带来更加平安、凋谢和自在的网络环境。本文将介绍Web3.0的基本概念、要害个性和实现形式,并探讨其对互联网倒退的影响。 一、什么是Web3.0Web3.0是指下一代互联网,也称为“分布式互联网”。与传统的Web2.0相比,Web3.0具备更高的可扩展性、更强的安全性、更宽泛的应用领域和更加自主的用户体验等特点。Web3.0的核心思想是“去中心化”,即通过区块链等技术,实现信息的分布式存储和治理,防止单点故障和数据篡改等问题。 二、Web3.0的要害个性分布式存储:Web3.0应用分布式账本技术,将数据扩散存储在不同的节点上,进步数据的可靠性和安全性,避免数据失落和篡改。智能合约:Web3.0反对智能合约,能够在区块链上主动执行程序代码,实现去中心化利用的开发和部署。去中心化身份验证:Web3.0反对去中心化的身份验证,通过数字证书和密码学算法等技术,爱护用户隐衷和数据安全。平安可信:Web3.0应用密码学技术和区块链共识机制,确保信息的完整性和真实性,防止数据被篡改或伪造。三、Web3.0的实现形式区块链技术:Web3.0基于区块链技术实现,能够通过私有链、公有链和联盟链等不同模式来构建分布式网络。 IPFS(InterPlanetary File System):IPFS是一种分布式文件系统,能够将文件存储在多个节点上,实现高效的文件传输和共享。 P2P(Peer-to-Peer)技术:P2P技术能够实现节点之间的间接通信,防止了传统的中心化服务器架构,进步了零碎的稳定性和安全性。 四、Web3.0对互联网倒退的影响Web3.0具备宽泛的应用领域和深远的影响,能够促成互联网的倒退和降级。例如,在金融畛域,Web3.0能够实现去中心化的数字货币和智能合约交易;在社交畛域,Web3.0能够实现用户数据的去中心化存储和共享;在游戏畛域,Web3.0能够实现游戏道具的去中心化交易和治理等。 代码示例: 应用web3.py库连贯以太坊节点from web3 import Web3w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/your-project-id'))打印以后区块高度和最新区块的hash值print(w3.eth.blockNumber)print(w3.eth.getBlock('latest').hash)总之,Web3.0是一种全新的互联网技术,具备分布式、去中心化、平安可信等特点。通过深刻理解Web3.0的基本概念、要害个性和实现形式,咱们能够更好地把握其发展趋势和利用前景,并为将来的互联网倒退做出奉献。

May 23, 2023 · 1 min · jiezi

关于web:Web安全渗透测试-掌握绝大多数Web漏洞原理及攻防手段

download:Web平安浸透测试 把握绝大多数Web破绽原理及攻防伎俩《模仿人生4》(The Sims 4)是一款由Maxis和The Sims Studio开发,由Electronic Arts发行的模仿人生游戏。它被宽泛认为是模仿人生系列中最好玩的一部分。本文将向您介绍TS4的入门常识。 TS4的基本概念在TS4中,你能够创立本人的虚拟世界并管制其中的角色。每个角色都有本人的特点、情感和属性。你须要治理他们的日常事务,例如吃饭、睡觉、工作和社交活动等,以确保他们有一个高兴、衰弱、富有成效的生存。 为了开始玩TS4,你须要购买游戏并下载安装。当你进入游戏时,你能够抉择创立新的家庭或加载现有的家庭。在初始阶段,你须要创立本人的角色并为他们抉择外貌、性情和技能。而后,你须要为他们建造屋宇或购买曾经建好的屋宇,并为他们购买必要的设施、家具和装饰品。 游戏中的操作在游戏中,你能够应用鼠标和键盘来管制你的角色。通过单击菜单按钮,你能够查看可用的操作选项。例如,你能够抉择让你的角色去吃饭、睡觉、工作或社交活动等。你还能够应用鼠标拖动和调整物品的地位和大小。此外,你能够应用游戏中的相机性能来浏览你的家庭和城市。 在TS4中,每个角色都有本人的技能和事业。这些技能能够通过一直的练习和学习来进步。当你的角色把握了某项特定技能时,他们将有机会取得更好的工作和更高的支出。 游戏中的社交互动与其余角色进行社交互动是TS4中的重要局部。通过与其余角色互动,你能够建设深厚的关系,并增进彼此之间的友情。你能够通过向其余角色打招呼、聊天、分享感情和密切接触等形式来建立联系。此外,你还能够邀请其余角色来加入你的派对和社交活动。 TS4的扩大包除了根本游戏之外,还有许多扩大包可用于TS4,这些扩大包能够减少新的游戏选项和性能。例如,你能够购买“城市生存”扩大包,以减少城市环境和城市居民的元素。或者,你能够购买“节令”扩大包,以减少天气变动和节令循环的元素。 论断在TS4中,你能够创立本人的虚拟世界,并管制其中的角色。通过治理他们的日常事务并与其余角色进行社交互动,你能够建设深厚的关系并取得更好的工作和更高的支出。如果你心愿更多地理解TS4,能够思考购买扩大包或查看游戏手册。

May 19, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战相逢何必曾相识

download:Web3.0热门畛域NFT我的项目实战如听仙乐耳暂明音乐,心灵,美好生活人们常说“音乐是一种语言”,因为它不分国界、不分种族,可能用独特的形式传播情感和思维。在快节奏的古代生存中,很多人都深受各种压力的困扰,而寻找一个能够让本人放松、愉悦情绪的办法显得尤为重要。而听音乐就是其中一种很好的形式。 有一句流传甚广的名言:“如听仙乐耳暂明”。这句话出自唐代文学家白居易的《琵琶行》,他借助音乐的美好来表白对历史上妇女的同情和关爱。这句话意思是说,听到柔美的音乐时,心灵会因而失去短暂的安定和舒服,好像置身于仙境之中。 实际上,这句话的含意并不仅限于“霎时的安定”这一层面。当咱们凝听音乐时,不仅能够抚平焦虑和疲乏的情绪,还能够使咱们取得更深的思考和灵感。音乐能够激发出咱们心田最深处的情感和渴望,让咱们感触到生命的美妙和丰盛。同时,音乐还可能传播出一种超过语言、逾越文化的共鸣和情感,帮忙咱们与别人建设更严密的分割。 当然,不同的人喜爱的音乐类型也不尽相同。有些人喜爱古典音乐,因为它优雅、高贵,具备无奈言喻的韵味;有些人则喜爱流行音乐,因为它轻松、自在,可能很好地表白现代人的情感和思维。无论是什么类型的音乐,只有它可能触动你的心弦,传递给你真正的打动和力量,就是值得去凝听并收藏的。 总之,“如听仙乐耳暂明”这句话,通知咱们要用心去凝听音乐,尝试从中寻找生存的美妙和意义,让音乐成为咱们生存中不可或缺的一部分。

May 14, 2023 · 1 min · jiezi

关于web:WEB前端线上系统课2022最新箪瓢自钟鼎

download:WEB前端线上零碎课2022最新WEB前端技术:从HTML、CSS到JavaScript的全面介绍随着互联网的遍及和倒退,WEB前端技术也变得越来越重要。本文将全面介绍WEB前端技术,包含HTML、CSS和JavaScript三方面的内容。 HTMLHTML(Hypertext Markup Language)是一种用于创立网页的标记语言。它通过各种标签和属性来形容网页上的内容和构造。HTML标签通常由尖括号突围,例如<html>、<head>、<body>等。HTML还反对链接、图片、表格、表单等性能,这些都是通过不同的标签和属性实现的。 CSSCSS(Cascading Style Sheets)是一种用于管制网页外观的样式表语言。它能够扭转文本的色彩、字体、大小,设置页面布局和款式等。CSS通过层叠规定来确定利用哪个款式,同时也反对选择器来抉择元素并为其利用款式。CSS还反对动画和转换等高级成果,能够让网页更加丰富多彩。 JavaScriptJavaScript是一种广泛应用于WEB前端开发的编程语言,它能够在网页中增加动态效果、交互行为、数据验证和操作等。JavaScript能够通过DOM(Document Object Model)和BOM(Browser Object Model)来拜访和管制网页元素。它还能够通过AJAX(Asynchronous JavaScript and XML)技术实现异步数据交互,使网页更加晦涩和疾速。 总之,WEB前端技术是创立网页和应用程序的关键所在。HTML、CSS和JavaScript三者相辅相成,独特构建了一个残缺的网页。通过学习WEB前端技术,开发者能够创立出高质量、高性能的网站和应用程序。

May 11, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战莫使金樽空对月

download:Web3.0热门畛域NFT我的项目实战毫无疑问,以后中国整体经济状态正在从传统经济向数字经济转型,千行百业也在减速数字化转型,特地是随着企业数据的积淀越来越宏大,对数据平台以及智能决策等新技术的需要也越来越旺盛。 国家公布的《“十四五”数字经济发展布局》中就强调:“有条件的大型企业要形成数据驱动的智能决策能力”;而科技部公布的《对于反对建设新一代人工智能示范利用场景的告诉》中,也明确使用优化决策等技术,实现生产过程等领域的智能决策。 可能看到,过来几年受疫情的冲击,企业抗危险能力、生产供应柔性、精密化经营等话题被晋升到前所未有的高度,这让企业的数字化转型更加迫切,因此要疾速的适应市场变动,就需要善用数据,让决策智能等新技术在企业的商业模式中创造出更大的价值,更好地升高未来挑战对企业造成的“不必定”的影响,由此才能在激烈的竞争中立于“不败之地”。 而作为寰球最大的企业级软件公司,以及将“数据”融入到公司“基因”和“血脉”中的甲骨文,在此过程中也通过继续的技术创新,打造了“双引擎”——即数据库和云,并且将二者实现了“融会贯通”,由此不只能够驱动更多的企业更好的拥抱决策智能,同时也能够减速泛滥企业的数字化转型步调。 正如甲骨文公司副总裁及中国区技术平台总经理吴承杨所言:“当明天数据越来越重要,在AI和ML变成寰球最热门话题的大背景下,甲骨文公司具备‘算力、数据、模型和生态’等劣势,这也让甲骨文可能帮助泛滥中国的企业在使用数据库,包含基于数据做决策的时候能够足够简略,开箱即用,未来咱们也心愿通过‘双引擎’技术的继续翻新,让千行百业能够更便当地通过数据创造出更多的新价值。 数据驱动决策大势所趋 家喻户晓,企业的数字化转型从来不是一个简略的技术问题,其目标或者本质是要将数字化的思维和方法贯穿到企业的要害场景之中,包含生产、销售、营销、服务等方面,而背地的要害就在于企业要构建数据驱动的模式,由此才能推动企业实现全面的数字化转型。 特地是随着大数据、人工智能、决策智能等技术融合日益加深,通过数据驱动打造企业智能化和精密化的经营模式已成为要害力量。从甲骨文近期公布的《寰球决策困境研究报告》中,咱们就能充分感受到这种变动,该报告对包含中国在内的17个国家/地区的14000多名员工和企业负责人开展调研,得出的论断是——做出正确决策至关重要,但非易事。 一是,数据的爆发式增长,正在阻碍企业的取得胜利。报告浮现,81%的中国受访者认为,他们正受到来自更多渠道的数据“轰炸”,这比以往任何时候都要多;超过86%的中国受访者示意,宏大的数据量使得集体和工作决策变得更加简单;更有高达90%的中国受访者示意,与日俱增的数据起源,正在有碍企业或者组织获得胜利,原因在于需要其余资源来收集所有数据,并确保在此过程中不能丢失任何数据;极大的减少了收集数据的工夫,并造成战略决策迟缓,且减少出错的机会。 二是,越来越多的企业受到了基于数据决策带来的干扰。报告指出,有76%的中国受访者示意,他们每天所做的决策数量在过来三年的工夫里减少了10倍,也有同时超过78%的中国受访者示意,因数据量过于宏大而放弃做出决策,有82%的中国企业指导者更是承认,他们对数据不足信赖,由此导致残缺无奈做出任何决策;超过92%的中国企业指导者正在蒙受决策干扰,不少指导者对过来一年所做的决策也曾感到后悔、内疚或已经质疑过自己做出的决策。 三是,利用技术创新实现数据驱动型决策的公司将是未来的趋势所在。报告中提到,有96%的中国企业指导者认为,具备合适的决策智能可能决定组织的胜利与否,背地的关键在于越来越多的指导者意识到,正确的数据和洞察可能帮助企业改恶人力资源、供应链、财务和客户体验方面的决策,同时还能在其余方面获得胜利,包含超过81%的中国受访者认为,数据驱动决策可能更好地排汇人才;78%的受访者认为,可能更好地获得投资者的青睐;而更有超过90%的中国企业指导者示意,在未来偏向于让机器人做出决策。 对此,甲骨文公司高级副总裁及亚洲区董事总经理李翰璋强调:“随着数字经济的飞速发展,企业需要更多的相干数据来获得全局视图。同时,对于负责制订决策的企业指导者而言,如果忽视这些数据背地的价值,就需自担风险。因此,企业指导者是时候重新考虑对待数据和决策的方法了。” 由此可见,在数据大爆炸的明天,对于企业而言要基于数据做出正确的决策绝不是一件容易的事件,日益减少的数据对企业而言诚然是一笔“宝藏”资源,但要真正要让数据产生价值,驱动企业做出高质量的决策,要害的“落脚点”还在于企业需要将信息、数据、洞察及口头串联起来,由此才能开释数据带来的全新价值。 减速企业拥抱决策智能 在此背景下,甲骨文基于自身在数据领域四十多年的积累和积淀,并以全新的“双引擎”技术创新形式,为企业提供收集、分析和利用数据所需的决策智能,助力企业做出现实的决策。 甲骨文公司中国区技术咨询部高级总监李珈示意:“产生决策智能的要害因素,不能仅仅只靠一种技术能够实现的。这是一门实践,需要通过技术来撑持零碎不断地练习,去理解数据,收集数据,并对这些数据进行分析,进行挖掘,而后不断根据后果去反馈,去调优,去锤炼模型,再去修改这个模型。这是一个改善决策智能的要害因素的过程,也是甲骨文心愿通过数据驱动企业决策背地所保持的逻辑。”基于此,甲骨文也正通过“双引擎”的技术创新形式,驱动和减速更多企业拥抱决策智能。 首先,甲骨文能够通过“融合数据库”的形式,让企业的数据平台能够反对所有数据类型、工作负载,以及不同的开发风格。 例如,在工作负载方面,甲骨文可能提供HTAP混合事务和分析处理能力,而这个功能 十年前甲骨文就已经推出了,发展到明天功能已经十分弱小,最为典型的如 Oracle Database In-Memory就能撑持不同的利用;此外,甲骨文也能够对不同数据类型提供反对,如关系、文档、图和空间多模数据处理。 更为要害的是,甲骨文往年刚刚公布的Oracle Database 23c 开发者版本,新减少了“JSON Relational Duality”功能,该功能不只能够让开发人员可能根据不同的使用场景抉择合适的拜访格局,而无需担心数据结构、数据映射、数据一致性或性能优化方面的问题,同时还可能基于关系数据和JSON 数据运行图形分析。也正因此,第三方分析机构IDC给与了这项功能极高的评估,指出:“Oracle JSON Relational Duality 是一个真正的革命性解决打算,可能是信息科学领域近20 年来非常重要的翻新之一。” 其次,借助甲骨文弱小的云基础设施(OCI)能力,明天企业无论是在云端还是本地的数据中心,同样也能获得雷同的“自治数据库”能力。 简略来说,过来甲骨文的自治数据库只能运行在Oracle私有云环境之中,对于很多想尝试自治数据库的企业来说是有一些难度的,但现在甲骨文买通了云端和本地的数据中心,由此让“自治数据库”的能力变得“无处不在”。 这其中翻新的“代表”就是Oracle Exadata专有云数据库一体机(Oracle Exadata Cloud@Customer,ExaCC),它既能为企业提供原有的利用数据库撑持;同时另一方面它也能以低成本、便当自助的形式帮助企业轻松部署甲骨文自治数据库。换句话说,基于ExaCC运行的多虚拟机自治数据库能够更好地利用Oracle Exadata基础设施“底座”的性能、可扩展性和可用性劣势,这样就可能让企业更加轻松部署云原生和要害工作数据库。不只如此,过来几年甲骨文还推出了很多的翻新打算,如Oracle专有云本地化解决打算(Oracle Dedicated Region Cloud@Customer),该打算可能将私有云的能力全副“搬到”客户的本地数据中心等等。 最初,甲骨文还提供Oracle 分析平台(Oracle Analytics platform),借助其内置的机器学习技术,也可能帮助企业更快实现数据分析。“Oracle Analytics的技术门槛非常低,企业可能开箱即用,而根本不需要知道它是用什么方法,什么原理帮助企业实现数据分析过程的。”李珈说。 不难看出,通过甲骨文在弱小的“融合数据库”、无处不在的“自治数据库”,以及数据库中内嵌的机器学习和人工智能,企业可能更好的在基础数据管理、增强和利用分析方面“大展身手”,更快地拥抱决策智能,让决策智能的获得变得更加简略和便利。 “双引擎”赋能千行百业 事实上,甲骨文“双引擎”的技术创新形式在决策智能领域的利用仅仅是一个“缩影”,在更大范畴,更多利用场景中,甲骨文的“双引擎”也在赋能千行百业的数字化转型。 吴承杨说:“如果说明天甲骨文和过来五年或者十年有什么不一样,最大的变动就在于咱们新增了云的引擎,这不只推动了甲骨文的业务的高速增长,更重要的是也让甲骨文成为了一家云转型胜利的公司。” 的确如此,甲骨文2023财年第三季度财报浮现,其寰球总营收为124亿美圆,若按固定汇率计算,同比增长21%;其中云服务营收到达41亿美圆,若按固定汇率计算,同比增长48%;此外,甲骨文云基础设施中的laaS业务营收为12亿美圆,若按固定汇率计算,同比增长57%。截止目前,甲骨文OCI在寰球范畴内已经部署了超过41个云区域。 因此,这也让扎根中国市场34年的甲骨文,在全新的期间能够以“双引擎”的技术创新能力,将更多先进的科技带给中国企业;同时也在保证数据安全合规的同时,能够以更低成本,更疾速部署的劣势助力千行百业减速数字化转型。 第一,从数据翻新维度看,甲骨文是寰球多数具备“算力、数据、模型和生态”等劣势的公司,因此无论是数据的治理,还是基于数据做决策智能,都是甲骨文可能施展价值的领域。 例如,在算力方面,甲骨文 OCI 在寰球具备超过41个云区域,同时具备弱小的GPU算力劣势;在数据方面,甲骨文已经做了45年的工夫,可能说甲骨文是最懂在行业中如何做数据的;在模型方面,甲骨文深耕企业级市场,做的是数据相干的大模型,自治数据库就是其中的‘集大成者’;而在生态方面,甲骨文不只是数据库公司,也是寰球最大的企业级软件公司,更是唯一一家提供完整企业级IaaS、PaaS和SaaS产品与服务的云厂商,特地是在ERP还是HCM乃至垂直行业软件方面,甲骨文都有深入布局,因此可能将企业在不同利用中的数据发掘出来,通过融合数据库弱小的能力,更好地开释数据价值进去。 第二,从企业赋能维度看,国家此前提出了“双循环”的策略,越来越多各赛道的中国企业也正在将中国的业务和翻新模式输入到海内市场,心愿寻找到更多新的商业机会,而在此过程中甲骨文也可能提供更好的私有云服务,助力企业更好的“入华出海”。 “明天越来越多的中国企业在出海的时候抉择甲骨文,这一点也印证了甲骨文在私有云上的翻新能力赢得了客户的认可,因此这也让咱们在中国私有云市场的发展速度远超寰球市场,同时也甲骨文在未来更加有自信心地服务好好中国的本地客户,同时帮助海内的客户进入到中国,比如HSBC(汇丰银行)进入中国市场时,甲骨文就是残缺满足安全合规的申请情况帮助他们实现了落地。”吴承杨说。 第三,从心态凋谢的维度看,可能看到过来几年中国市场出现了越来越多的数据库公司,对此甲骨文也是始终保持凋谢和互相学习的态度,并心愿通过自身的技术的翻新,让更多的企业意识到数据的后劲,开释好数据的价值。 对此,吴承杨示意:“咱们非常欢迎数据库这个行业有更多的厂商进入,不管在寰球还是在中国,这是非常明确的,因为甲骨文认为数据库其实是一个绝对冷门的领域,需要更多人关注,因为关注数据库就是关注数据。因此甲骨文鼓励更多的厂商投入这个领域,咱们也违心保持着凋谢的心态和同行互相学习,同时也违心把选择权交给客户做决定。” “回头来看,甲骨文在数据库领域已经做了超过45年的工夫,咱们每年研发投入在营收的15%左右,每年有超过60亿美圆用来研发,同时寰球也具备很多的客户,每年也会做大量的迭代和优化,最终的目标和愿景也很清晰——就是让数据库‘化繁为简’,简略到让企业感觉不到它的存在,简略到人人都可能使用。”吴承杨最初说。 全文总结,“数字中国”的顶层布局、中国式现代化的整体规划为整个科技产业创造了巨大的历史时机,愈减速了千行百业数字化转型的步调,而扎根中国市场34年的甲骨文,也正通过全新的“双引擎”技术创新和赋能的形式,减速中国企业数字化转型,推动中国数字经济的高质量发展,这不只是甲骨文“以行践言”推动中国企业更快拥抱决策智能,最大化开释数据价值的体现,同时也是其过来三十多年来能够深度融入中国市场,并服务好中国行业客户的核心和关键所在。

May 7, 2023 · 1 min · jiezi

关于web:开课吧Web30应用工程师培养计划2022最新交游落落俱星散

download:开课吧Web3.0利用工程师造就打算2022最新JavaEE: 构建企业级应用程序的优良平台 关键字:JavaEE、企业级应用程序、Web应用程序、分布式系统、组件化JavaEE是一个宽泛应用的平台,可用于构建各种企业级应用程序。它提供了许多工具和技术,使开发人员能够更轻松地创立分布式系统和Web应用程序。 JavaEE最后称为J2EE,是Sun Microsystems(当初是Oracle Corporation)推出的一组企业级Java标准。JavaEE包含许多规范API和服务,如Servlets、JavaServer Pages(JSP)、Enterprise JavaBeans(EJB)、Java Message Service(JMS)和Java Persistence API(JPA)等。这些API和服务能够帮忙开发人员创立可伸缩和高性能的应用程序,并减速应用程序的开发和部署过程。 JavaEE还提供了许多工具和框架来简化开发过程。例如,JavaServer Faces(JSF)框架提供了可重用的用户界面组件,从而放慢了Web应用程序的开发。另外,Apache Struts和Spring框架使开发人员能够更轻松地创立模块化和易于保护的应用程序。 JavaEE的重要特色之一是组件化。通过将应用程序划分为各种组件,如EJB和Web组件,JavaEE使开发人员能够别离开发、测试和部署不同的利用程序模块。这种组件化办法进步了代码重用性,从而缩小了开发工夫和老本。 另外,JavaEE还提供了许多平安和治理个性,如J2EE容器,能够确保应用程序的安全性,并在运行时进行治理。例如,J2EE容器能够管制资源的拜访权限,并解决各种谬误和异常情况。 总之,JavaEE是一个功能强大的平台,可为企业级应用程序开发人员提供许多工具和技术。它反对组件化和分布式系统,使开发人员能够更轻松地创立可伸缩、高性能和易于保护的应用程序。如果您正在寻找一种牢靠而且宽泛应用的工具来构建企业级应用程序,那么JavaEE是一个十分好的抉择。

May 2, 2023 · 1 min · jiezi

关于web:Web30入门与实战-一站式掌握4大主流区块链开发无密

Web3.0+区块链:构建去中心化利用的将来 download:https://www.97yrbl.com/t-1638.htmlWeb3.0是下一代互联网技术,而区块链则是它的重要组成部分之一。区块链技术能够保证数据的不可篡改性、安全性和去中心化,这使得它成为构建去中心化利用(dApps)的现实抉择。在本文中,咱们将介绍如何应用Web3.js和以太坊区块链构建一个简略的去中心化投票利用。 一、环境筹备在开始之前,您须要筹备以下工具: 一个以太坊钱包,例如MetaMask。Node.js和npm(Node.js包管理器)。Ganache,一个本地区块链模拟器。一个代码编辑器,例如Visual Studio Code。Web3.js,用于与以太坊区块链进行交互。Truffle,用于编译和部署智能合约。二、智能合约编写咱们将应用Solidity编写一个简略的智能合约来存储投票信息。 pragma solidity ^0.8.0;contract Voting { mapping (bytes32 => uint256) public votes; function voteForCandidate(bytes32 candidate) public { votes[candidate] += 1; } function totalVotesFor(bytes32 candidate) view public returns (uint256) { return votes[candidate]; }}这个智能合约蕴含两个函数。voteForCandidate函数用于对候选人进行投票,totalVotesFor函数用于查问某个候选人的得票数。 三、部署智能合约在应用Web3.js与以太坊区块链进行交互之前,咱们须要部署智能合约。 在代码编辑器中创立一个新文件,命名为2_deploy_contracts.js。 const Voting = artifacts.require("Voting");module.exports = function(deployer) { deployer.deploy(Voting);};在终端中进入我的项目目录,运行以下命令编译和部署智能合约。`truffle compiletruffle migrate` 四、应用Web3.js与智能合约进行交互当初咱们曾经在以太坊区块链上胜利部署了智能合约,接下来咱们将应用Web3.js来与它进行交互。 装置Web3.js。npm install web3在代码编辑器中创立一个新文件,命名为app.js。 const Web3 = require('web3');const contract = require('./build/contracts/Voting.json');const provider = new Web3.providers.HttpProvider('http://localhost:7545');const web3 = new Web3(provider);const abi = contract.abi;const address = '0x...'; // 智能合约部署后的地址const votingContract = new web3.eth.Contract(abi, address);// 对候选人进行投票const candidate = 'Alice';web3.eth.getAccounts().then(function(accounts) { const account = accounts[0]; votingContract.methods.voteForCandidate(web3.utils.asciiToHex(candidate)).send({ from: account }, function(error, transactionHash){ console.log(transactionHash); });});// 查问某个候选人的得票数votingContract.methods.totalVotesFor(web3.utils.asciiToHex(candidate)).call(function(error, result) { console.log(result);});在这段代码中,咱们首先连贯到以太坊区块链,并获取智能合约的ABI和地址。而后,咱们应用Web3.js的办法与智能合约进行交互。对于投票操作,咱们调用voteForCandidate函数并传入候选人名称;对于查问操作,咱们调用totalVotesFor函数并传入候选人名称。 ...

April 29, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战无密

Web3.0:为将来互联网带来有限可能 download:https://www.666xit.com/3951/Web3.0是指下一代互联网技术,它将不仅仅局限于连贯人与信息,还将连贯人与人、人与机器以及机器与机器。与此同时,Web3.0也将会引入更多的新技术,如区块链、人工智能等,这些技术将粗浅地扭转咱们的生存和工作形式。 一、Web3.0的特点分布式计算Web3.0将采纳分布式计算的形式进行数据处理,这意味着数据处理不再依赖于中心化的服务器,而是由寰球节点共同完成。这样能够进步数据处理效率和安全性。 区块链技术区块链技术是Web3.0的重要组成部分。区块链技术能够保证数据的不可篡改性和安全性,并且不须要第三方机构进行认证。这种去中心化的形式使得咱们能够更加信赖和爱护咱们的数据。 人工智能技术Web3.0将大量利用人工智能技术,例如自然语言解决、机器学习等技术,用于解决智能合约、智能交易等畛域的问题。这不仅能够进步数据处理的效率,还能够使得咱们更好地了解和利用数据。 二、Web3.0的利用场景区块链技术在金融畛域的利用Web3.0将区块链技术利用于金融畛域,建设起去中心化的金融零碎。这种去中心化的形式能够保障交易的安全性和透明度,并且不须要大量的人力或物力老本。 人工智能技术在医疗畛域的利用Web3.0将人工智能技术利用于医疗畛域,例如通过自然语言解决技术来帮忙诊断病情,或者通过机器学习技术来预测疾病的发展趋势。这些技术能够帮忙医生更好地了解和利用病人的数据,并进步医治成果。 分布式计算技术在物联网畛域的利用Web3.0将分布式计算技术利用于物联网畛域,建设起分布式的物联网零碎。这种分布式的形式能够让各种设施之间实现更好的互联,并且能够更加无效地治理和管制这些设施。 三、Web3.0的价值Web3.0所采纳的区块链、人工智能和分布式计算等技术,能够为咱们带来有限可能。这些技术不仅能够进步数据处理效率和安全性,还能够使得咱们更好地了解和利用数据,并且能够建设起更加去中心化、透明化的互联网零碎。 总结Web3.0是下一代互联网技术,它将采纳分布式计算、区块链和人工智能等技术,使得咱们能够更好地连贯人与人、人与机器以及机器与机器。Web3.0的利用场景丰盛多样,如金融、医疗和物联网等畛域。这些新技术的引入将粗浅地扭转咱们的生存和工作形式,并带来更多的价值和可能。

April 29, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战乱花渐欲迷人眼

Web3.0热门畛域NFT我的项目实战download:https://www.zxit666.com/6005/CNN:让图像识别更精准、高效的深度学习算法 卷积神经网络(CNN)是一种被广泛应用于图像识别、语音辨认、自然语言解决等畛域的深度学习算法。本文将深入探讨CNN的原理和利用,帮忙读者更好地了解并利用该算法。 什么是CNN? 卷积神经网络是一种前馈神经网络,其构造蕴含卷积层、池化层、全连贯层等组件。通过卷积操作、非线性激活函数等技术,CNN能够在数据集中提取出有用的特色,从而实现高效的图像分类、辨认等工作。 CNN的要害个性 部分连贯 - CNN采纳的是部分连贯和权值共享的形式,升高了模型的复杂度,进步了计算效率。 参数共享 - 对于同一类型的特色,CNN会应用雷同的参数进行解决,从而缩小了模型的训练工夫和存储空间。 池化操作 - CNN会对特色图进行下采样操作,从而减小特色图的大小,进步模型的鲁棒性和泛化能力。 多层次形象 - CNN通过多个卷积层和池化层的叠加,实现对数据集特色的多层次形象和提取。 CNN的利用场景 图像分类 - CNN能够通过训练模型,实现对图像进行分类、辨认等工作,如人脸识别、数字辨认等。 指标检测 - CNN能够通过候选框和区域倡议等技术,实现对指标物体的检测和定位。 语音辨认 - CNN能够通过声学建模和声学特征提取等技术,实现对语音信号的辨认和转换。 自然语言解决 - CNN能够通过词向量示意和卷积操作等技术,实现对文本序列的分类和解决。 总之,CNN是一种非常弱小的深度学习算法,其部分连贯、参数共享、池化操作等个性为用户提供了更多的抉择。把握CNN的核心技术和劣势,能够帮忙开发者更好地应用该算法,开发出更加精准、高效的应用程序。

April 29, 2023 · 1 min · jiezi

关于web:Web30热门领域NFT项目实战吾爱无密

Web3.0热门畛域NFT我的项目Web3.0:将来互联网的新篇章 download:https://www.sisuoit.com/3860.htmlWeb3.0,也称为“分布式网络”或“去中心化网络”,是对以后互联网的一种新型改良。它不仅解决了传统互联网的一些缺点和问题,还可能发明出更多前所未有的利用和商业模式。 一、Web3.0的定义Web3.0是一个基于区块链技术的去中心化网络,其次要特点是去除了中心化的服务器,将数据和计算扩散到寰球各地的节点中。这种网络能够使用户间接与其余用户进行交互,而不须要任何中介机构。同时,Web3.0还提供了一种平安、凋谢、通明和可扩大的环境,以反对新的应用程序和商业模式。 二、Web3.0的劣势Web3.0相较于传统互联网有以下劣势: 去中心化:Web3.0应用去中心化的技术,如区块链技术和P2P网络,从根本上打消了中心化的架构。这种技术能够使用户间接与其余用户进行交互,而不须要任何中介机构,从而实现真正的去中心化。安全性:Web3.0为用户提供了更高的安全性保障。因为数据被保留在区块链上,因而用户能够更好地爱护其隐衷和数据安全。凋谢:Web3.0是凋谢的平台,任何人都能够退出其中并为其倒退做出奉献。这种开放性将促成新的应用程序和商业模式的翻新。通明:Web3.0具备高度透明性,交易记录和数据都能够在区块链上进行追踪和审核。这种透明性能够促成诚信和信赖,并打消不必要的危险。 可扩展性:因为Web3.0应用了分布式技术,因而能够轻松地扩大到寰球范畴内,并反对大量的用户和应用程序。 三、Web3.0的利用Web3.0的利用十分宽泛,包含数字货币、智能合约、去中心化应用程序(DApps)等。其中最风行的利用是以太坊(Ethereum),它是一个基于区块链技术的开放式平台,可用于构建去中心化应用程序。 另一个重要的利用是去中心化金融(DeFi),这是一种基于区块链技术的金融服务,旨在提供更加偏心、通明和去中心化的金融服务。这种服务能够打消中介机构的需要,从而使金融服务更加凋谢和通明。 四、Web3.0的将来Web3.0是互联网的新篇章,它将带来更多前所未有的应用程序和商业模式。随着区块链技术的一直倒退和欠缺,咱们将看到越来越多的人应用Web3.0来进行交易、共享数据和创立新型的应用程序。 总之,Web3.0标记着一个去中心化的将来,它将促成互联网的倒退,提供更好的安全性和透明性,并推动新的商业模式和翻新的呈现。

April 23, 2023 · 1 min · jiezi

关于web:Web30入门与实战-一站式掌握4大主流区块链开发缓歌慢舞凝丝竹

download:Web3.0入门与实战 一站式把握4大支流区块链开发区块链是一种分布式数据库技术,它能够存储和治理数字信息的交易记录,这些记录被称为“区块”,并以加密形式链接在一起。区块链的呈现带来了革命性的变动,许多人认为它将成为将来的关键技术之一。 首先,区块链技术具备高度的安全性。每个区块都蕴含一个惟一的数字签名,这个签名是由所有参与者的电子签名计算出来的,并且不能被篡改或伪造。因而,区块链技术不仅可能爱护用户的数据隐衷与平安,同时也无效避免了欺诈行为的产生。 其次,区块链技术具备去中心化的特点,没有繁多的机构或公司管制网络,而是由所有参与者独特保护。这意味着,区块链技术能够应用在各种场景下,例如,金融、医疗、物流等畛域。 除此之外,区块链技术还具备高效性和透明性。它可能实现疾速的交易解决,缩小了传统金融交易须要中间人的染指,从而进步了交易效率。此外,区块链技术还能够实现交易的透明化,所有参与者都能够查看到交易记录,确保了偏心和诚信。 尽管区块链技术在许多方面具备劣势,但也存在一些问题。例如,它须要大量的计算资源和昂扬的能源老本来保护网络的运行。此外,现阶段区块链技术还无奈解决大规模的交易,这是目前亟待解决的问题之一。 总的来说,区块链技术作为一种创新性的分布式数据库技术,将对将来产生深远的影响。随着技术的一直倒退,置信它将会成为更加稳固、高效、平安的数字经济基础设施之一。

April 23, 2023 · 1 min · jiezi

关于web:可视化WebXR在线制作平台Kivicube-v20大版本更新来啦

数字营销时代,各行各业都离不开AR沉迷式体验。Kivicube 作为国内当先的WebXR在线制作平台,致力于帮忙用户以更便捷、自在的形式创立AR / 3D场景,实现互动性更强的AR营销。在大家的期盼下,Kivicube 治理控制台v2.0版本终于上线:全新视觉体验、多种AR场景类型、疾速开发与接入、更高效的内容编辑器…… v2.0版本大看点Kivicube v2.0控制台AR内容编辑器Kivicube官网 v2.0一波又一波的弱小更新,也让创作者可能更高效地打造引人入胜的沉迷式AR体验,快和Kivicube一起体验吧! Kivicube治理控制台 v2.0咱们对Kivicube控制台进行了全面降级,相比旧版控制台,「v2.0控制台」对各功能区的划分更加清晰,同时还新增了社媒矩阵账号以及「学习与帮忙」等入口,为用户带来更多产品应用帮忙和创意灵感。 还有泛滥体验与细节优化,等着大家来发现~ 1、场景类型细化降级Kivicube v2.0版本将场景类型更新细化至十余种,并对每一类场景都给出了更清晰的案例演示和文案正文,让用户可能 针对本身的需要进行疾速抉择和制作 更多场景类型解析可查看公众号文章:Kivicube大空间AR,赋能多种营销需要 2、「合辑」性能凋谢给所有用户在网页展现端面向所有用户凋谢「合辑」的多场景辨认性能,企业版用户可去除水印。当用户在同一个合辑内创立了多个「图像AR」或「云辨认/陀螺仪」类型的场景时,能够应用对立的「合辑」链接进入,扫描不同场景的辨认图进行间断的体验。比方一整套AR卡片,创作者仅需提供一个合辑的链接,就能够体验全副场景。为缩短操作门路、提高效率,咱们在合辑和场景卡片中削减「复制合辑ID」和「预览」性能,微微一点即可生成体验二维码和辨认图,帮忙您测验AR制作成果,助力后续开发与接入操作。 3、新增「开发与接入」入口v2.0控制台在合辑和场景卡片中退出「开发与接入」,用户能够 将AR场景更便捷地接入网页端、小程序端等多平台体验,包含无需开发的疾速接入渠道、须要开发的高级接入渠道。有更高个性化需要的用户也能够进行二次开发,更多信息请浏览《Kivicube用户文档》。 4、企业版用户新增「辨认阈值」性能企业版用户能够对合辑和场景辨认图的阈值进行设置:辨认阈值越高,代表可辨认度越低,要求理论相机画面与辨认图的类似度越高,才可能辨认胜利。比方一张辨认图的辨认阈值为0.05,则扫描辨认时,相机画面中只有有5%的类似度即断定为辨认胜利。 AR内容编辑器正式上线咱们将原先在线版AR模型编辑器与AR模型编辑器macOS版整合迭代,正式上线「AR内容编辑器」,也是国内第一款为AR而生的glTF模型可视化编辑器。目前,「AR内容编辑器」已接入Kivicube v2.0控制台首页与可视化场景编辑器中,咱们倡议大家先间接通过内容编辑器上传并调整模型,再开启AR创作。「AR内容编辑器」的接入使操作流程更清晰,从素材调整到AR场景制作,打造保姆级的AR制作软件。 查看教程get同款「AI+AR元界博物馆」 为帮忙用户实现更优质的AR场景发明,高效查看模型素材标准,「AR内容编辑器」降级更多功能,还可将解决好的模型一键保留至Kivicube素材库 可视化预览模型&动画反对可视化的调整模型材质反对可视化的调整灯光渲染更多的显示设置,不便可视化展现模型查看模型属性,不便查看其是否符合规范GLB格局的在线转换,反对FBX、OBJ模型标准查看,确保传到Kivicube平台后可能高性能渲染Kivicube官网v2.0Kivicube官方网站 v2.0 版也同步上线! 为了投合更多元的受众需要,更好服务用户,官网构造全面优化。简洁的扁平化UI设计,搭配精简实用的信息栏目,帮忙您实现更便捷的AR创作以及理解更多AR服务解决方案。性能构造降级: 咱们为您提供自助式的AR能力和服务抉择,您能够依据理论需要,自由选择不同AR能力或服务反对用户体验降级: 在官网首页新增案例展现页,反对用户间接搜寻想要理解的品牌、行业案例,为创作者提供有限AR创意灵感内容丰盛度降级: 咱们将文字、视频教程进行整合,由浅入深满足不同创作者的制作须要,辅助用户实现疾速制作、开发 更多Kivicube和官网亮点欢迎您前来摸索www.kivicube.com以上是本次Kivicube v2.0大版本更新的次要内容,想要取得更多信息请浏览《Kivicube用户文档》。在Kivicube应用过程中遇到任何操作问题可增加经营微信:kiviopt询问,无意征询企业版的用户能够增加商务微信:kiviman72间接与咱们分割。咱们将继续迭代产品性能,为大家带来更全、更强、更高效的AR创作工具! 对于弥知弥知科技是一家专一于AR畛域的的AI平台类公司,弥知自主研发的试穿试戴AR能力跟电商联合,发明了从头到手到身到脚的残缺AR试穿试戴场景。同时咱们提供了AR制作平台Kivicube,为寰球开发者实现本人对元宇宙的发明,并继续为微信AR与WebAR生态提供了有广度有深度的AR算法平台,反对如图像跟踪与实物跟踪、空间SLAM等场景应用。

April 21, 2023 · 1 min · jiezi

关于web:Web30入门与实战-一站式掌握4大主流区块链开发纷吾既有此内美兮又重之以修能

download:Web3.0入门与实战 一站式把握4大支流区块链开发区块链开发:构建下一代互联网基础设施 随着数字化时代的到来,人们对于数据的需要越来越高,而区块链技术的呈现,为数据的存储和传输提供了一种新的形式。区块链技术的去中心化、不可篡改和安全性等特点,使得它成为了将来互联网的基础设施之一。本文将会具体介绍区块链开发相干的常识和技术。 一、区块链的根底原理 区块链是由多个数据块(block)形成的链式数据结构。每个数据块蕴含了之前数据块的哈希值以及以后数据的信息。每个数据块都必须通过计算和验证能力退出到区块链中。当有新的数据块退出到区块链中后,整个区块链的哈希值也会相应地发生变化,保障了数据的不可篡改性。 二、区块链开发的技术要点 抉择适宜的编程语言区块链的开发波及到智能合约、链码、节点等多个方面。在抉择编程语言时,须要依据不同的利用场景和开发需要,抉择适宜的编程语言。目前比拟风行的编程语言包含 Solidity、Go、Java 等。 智能合约开发智能合约是区块链技术的外围。它们是运行在区块链上的自动化合约,可能实现代码的可信执行,实现了去中心化的自动化治理。开发智能合约须要对 Solidity、Vyper 等智能合约语言有深刻的理解。 区块链节点开发区块链节点是区块链零碎的组成部分,是网络的参与者。区块链节点的开发包含节点的搭建、部署、配置等。节点的开发须要思考到性能、安全性、可扩展性等方面。 链码开发链码是在区块链上运行的代码,它们定义了区块链上的业务逻辑。链码开发须要把握 Golang 等编程语言和 Hyperledger Fabric 等区块链平台的开发框架。 三、区块链开发的利用场景 金融畛域区块链技术能够利用于金融畛域,实现去中心化的交易和结算,进步交易效率和安全性。 版权保护区块链技术能够实现数字版权的

April 13, 2023 · 1 min · jiezi

关于web:Web开发核心梳理

本文次要梳理Java后端开发中的外围概念,帮忙从顶层了解整个后端技术体系 @author Frankir要想彻底了解明天各种顶层框架技术的作用和相互之间的关联及区别,咱们须要从最原始的JavaWeb开发技术开始梳理。1. servlet+jsp+html+css+js的时代在这个阶段,程序员依据JavaEE-Servlet标准,编写解决前端申请的servlet,在servlet中编写service()办法,处理器申请返回响应。 以最经典的Tomcat作为Http服务器和Servlet容器的形式为例,首先咱们须要晓得如果仅仅有Http服务的性能,不编写servlet,咱们能够应用相似Ngnix这样不带Servlet容器的服务器来做,这样浏览器其实是能够通过url申请获取到服务器上的动态资源的。比方https://blog.csdn.net/silence_xiang/article/details/103277852获取文章。 然而如果心愿Web服务器能过依据咱们的输出返回响应的内容,比方在表单中提交数据查问后端数据库上满足条件的数据记录,就须要引入Web容器/Servlet容器,由Servlet负责承受申请和返回响应。 Http服务器和Servlet容器的性能界线是:Http就像是前台,负责网络通信和申请的解析,而Servlet容器是业务部门,负责解决业务申请。(如果只是动态资源,那还解决什么呢,间接返回就好了)。留神,在Tomcat的实现中,申请动态资源其实是会应用一个默认的Servlet实现的。 有了Servlet容器,配置好web.xml文件,批示什么样的url该当由哪个servlet解决,最后的Web性能就能够实现。 起先,程序员间接在servlet代码外面内嵌html代码,返回给浏览器解析,这样做导致servlet代码极其简单。同时咱们也晓得html是无奈表白动静的数据内容的。为了解决这个问题,引入了Jsp技术。Jsp其实就是一种Servlet,只不过看起来就像html那样。一个显著的区别是,一个html能够间接在浏览器关上,而Jsp不行,因为它是一个Servlet,须要通过java程序的翻译,能力被浏览器解析。好了,到此为止,咱们就能够应用servlet+jsp(+html+css+js)实现web开发了。 2. 晚期其余技术的演变在servlet+jsp开发模式下,JavaEE的经典三层架构是web层+service层+DAO层。web层承受用户申请,调用service层实现业务,返回响应。service层实现各种业务解决,提供各种业务API给web层应用。DAO层实现与数据库相干的操作。这个时候为了将web层的工作拆分成组件,升高代码的耦合度。引入了MVC的设计模式。 View视图层:只负责数据和界面的显示,不承受和显示数据无关的代码,便于程序员和美工的分工合作。(Vue/Jsp/Thymeleaf/Html)Controller控制器:只负责接管申请,调用业务层的代码解决申请,而后派发页面,是一个调度者的角色。(Servlet)Model模型:将与业务逻辑相干的数据封装成具体的JavaBean类,其中不掺杂任何与数据处理相干的代码(JavaBean/Domain/Pojo)Model是由Service调用的。 同期间前端呈现了jquery开发库,简化js的编码。在DAO层,为了简化java程序和数据库的交互,呈现了Jdbc-DBUtils数据库连接池和用于将数据表中的记录封装成JavaBean的工具包。 3. Spring框架 SpringMVC MyBatis在传统的OOP面向对象的开发方式中,程序员编写程序,在程序中读取配置信息,创建对象,应用对象实现工作。程序中大量的获取对象的操作其实是和业务逻辑不太相干的。Spring是一个容器框架,它依据注解或者xml配置文件,创建对象,并放入到IOC容器中,并且能够解决对象之间简单的依赖关系。当程序员须要应用某个对象(比方userAction)时,就间接从容器中获取,这样就能够更加关注如何应用对象实现相应的业务。 要了解AOP就先要了解动静代理机制,一句话总结就是:创立指标对象的代理对象,通过代理对象调用指标对象的指标办法实现目标办法的性能加强。AOP是基于反射+动静代理的,其外围就是应用切面类,将切面类的告诉办法切入到指标办法的几个横切关注点的地位上,实现对立的切面编程。 Spring框架的内含很多,上面是Spring5.x的架构图 能够分明的看到,IOC容器是Spring治理Beans的外围。SpringMVC(Web+WebMVC)是基于Spring容器的MVC设计模式web开发框架。除此之外,Spring还提供了JDBCTemplate简化数据库拜访,@Transactional事务管理,@ExceptionHandler异样解决等组件。 MyBatis是三层构造中长久层的框架技术。次要是将sql语句从java源码中剥离到xml配置文件中,程序是以OOP的形式来操作DB的,而不再是之前面向数据表中行记录的数学思维,这样做代码的耦合度进一步升高。同时还能够通过配置缓存等形式优化数据库拜访,减小数据库的压力。 4. Spring容器和Servlet容器后面提到,Tomcat作为Web服务器和Servlet容器的联合,能够承受网络http申请,解析为合乎Servlet标准的申请对象和响应对象。比方,HttpServletRequest对象是Tomcat提供的,Servlet是JavaEE标准,Tomcat是实现这一标准的Servlet容器。 而SpringMVC其实就是web层解决Servlet申请的一个利用框架,他是基于Spring容器和Servlet的。咱们晓得地方控制器DispatcherServlet是SpringMVC中解决申请的外围,而它实质上就是一个Servlet(实现了Servlet接口),是Tomcat这个[Web服务器+Servlet容器]加载和调用的DispatcherServlet。 DispatcherServlet也有本人的容器(基于Spring容器),通常能够称它为SpringMVC容器。这个容器负责的是和SpringMVC也就是Web层相干的bean,比方@Controller(Handler)和视图解析器等。同时Spring中还有其余的bean,如Service层的@Service、DAO层的@Repository、其余组件@Component等等,这些是由全局的IOC容器治理的,即能够了解成Spring有两个IOC容器。 如果只是应用Spring容器治理bean,不应用SpringMVC作为web层的开发框架,那么Tomcat(Servlet容器):先解析web.xml文件(servlet-class、servlet-mapping),通过Spring提供的IOC容器获取对应的servlet对象,当url-pattern产生匹配的时候触发对应的代码逻辑,实质上还是Tomcat间接负责http报文的解析(这是它作为Http服务器应该干的)和servlet调度的工作(这是它作为Servlet容器应该干的)。此时Spring容器只是简化了Bean的治理和获取、提供相似JdbcDataAccess更不便的一些操作。 如果应用SpringMVC作为web层的开发框架,那么Tomcat只是解析http报文,而后间接转交给DispatcherServlet,上面由SpringMVC接管,依据注解、配置实现相应的逻辑,而后将后果提交给DispatcherServlet,最初转发给Tomcat,Tomcat构建好http响应报文后返回给浏览器。 理清这些关系之后,相似过滤器和拦截器有什么区别?web.xml文件和springDispatcherServlet-servlet.xml文件有什么区别?这样的问题就很容器答复了 5. 更进一步前面又呈现了SpringBoot简化SSM我的项目的配置,再有就是面对分布式,面对关系型数据库的缺点提出Redis等等都是更进一步的优化了。

April 9, 2023 · 1 min · jiezi

关于web:Web30入门与实战-一站式掌握4大主流区块链开发旅榇谁扶雨雪天

download:Web3.0入门与实战 一站式把握4大支流区块链开发摘要次要的是的针对于的kafka的面试的问题进行分析和总结 Partition Rebalance分区再均衡1)消费者组中新增加消费者读取到原本是其余消费者读取的消息,(2)消费者敞开或崩溃之后离开群组,原本由他读取的partition将由群组里其余消费者读取,(3)当向一个Topic增加新的partition,会发生partition在消费者中的重新分配 以上三种景象会使partition的所有权在消费者之间转移,这样的行为叫作再均衡。 再均衡的长处:给消费者组带来了高可用性和伸缩性 再均衡的缺点:(1)再均衡期间消费者无奈读取消息,整个群组有一小段时间不可用。(2)partition被重新分配给一个消费者时,消费者以后的读取状态会丢失,有可能还需要去刷新缓存,在它从新复原状态之前会拖慢应用程序。因此需要进行安全的再均衡和避免不必要的再均衡。 那么消费者组是怎么知道一个消费者可不可用呢?消费者通过向被指派为群组调和器的Broker发送信息来维持它们和群组的从属关系以及它们对分区的所有权关系。只需消费者以失常的工夫间隔发送心跳,就被认为是活跃的,说明它还在读取分区里的消息。消费者会在轮询消息或提交偏移量时发送心跳。如果消费者停止发送心跳的工夫足够长,会话就会过期,群组调和器认为它已经死亡,就会触发一次再均衡。还有一点需要注意的是,当发生再均衡时,需要做一些清理工作,具体的操作方法可能通过在调用subscribe()方法时传入一个ConsumerRebalanceListener实例即可。如何创建消费者创建Kafka的消费者对象的过程与创建消费者的过程是类似的,需要传入必要的属性。在创建消费者的时候以下以下三个选项是必选的: bootstrap.servers :指定 broker 的地址清单,清单里不需要蕴含所有的 broker 地址,消费者会从给定的 broker 里查找 broker 的信息。不过倡导至多要提供两个 broker 的信息作为容错; key.deserializer :指定键的反序列化器; value.deserializer :指定值的反序列化器。 Kafka 与传统消息零碎之间有三个要害区别?(1).Kafka 持久化日志,这些日志可能被重复读取和无限期保留 (2).Kafka 是一个分布式零碎:它以集群的形式运行,可能灵活伸缩,在外部通过复制数据,晋升容错能力和高可用性 (3).Kafka 反对实时的流式处理 Kafka的用途有哪些?使用场景如何?总结下来就几个字:异步处理、日常零碎解耦、削峰、提速、广播。如果再说具体一点例如:消息,网站流动追踪,监测指标,日志聚合,流处理,事件采集,提交日志等 Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?ISR:In-Sync Replicas 正本同步队列AR:Assigned Replicas 所有正本ISR是由leader保护,follower从leader同步数据有一些提早(包含延迟时间replica.lag.time.max.ms和提早条数replica.lag.max.messages两个维度, 以后最新的版本0.10.x中只反对replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。 Kafka中的HW、LEO、LSO、LW等别离代表什么?HW:High Watermark 高水位,取一个partition对应的ISR中最小的LEO作为HW,consumer最多只能生产到HW所在的地位上一条信息。LEO:LogEndOffset 以后日志文件中下一条待写信息的offsetHW/LEO这两个都是指最初一条的下一条的地位而不是指最初一条的地位。LSO:Last Stable Offset 对未实现的事务而言,LSO 的值等于事务中第一条消息的地位(firstUnstableOffset),对已实现的事务而言,它的值同 HW 雷同LW:Low Watermark 低水位, 代表 AR 会合中最小的 logStartOffset 值 Kafka中是怎么体现消息次序性的?kafka每个partition中的消息在写入时都是有序的,生产时,每个partition只能被每一个group中的一个消费者生产,保障了生产时也是有序的。整个topic不保障有序。如果为了保障topic整个有序,那么将partition调整为1. Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理次序是什么?拦截器->序列化器->分区器 Kafka消费者客户端中使用了几个线程来处理?别离是什么?2个,主线程和Sender线程。主线程负责创建消息,而后通过分区器、序列化器、拦截器作用之后缓存到累加器RecordAccumulator中。Sender线程负责将RecordAccumulator中消息发送到kafka中. “生产组中的消费者个数如果超过topic的分区,那么就会有消费者生产不到数据”这句话是否正确?如果不正确,那么有没有什么hack的手段??不正确,通过自定义分分别配策略,可能将一个consumer指定生产所有partition。 消费者提交生产位移时提交的是:以后生产到的最新消息的offset还是offset+1?offset+1 有哪些情景会造成重复生产?消费者生产后没有commit offset(程序崩溃/强行kill/生产耗时/主动提交偏移情况下unscrible) 哪些情景下会造成消息漏生产?消费者没有处理完消息 提交offset(主动提交偏移 未处理情况下程序异样结束) KafkaConsumer是非线程安全的,那么怎么样实现多线程生产?1.在每个线程中新建一个KafkaConsumer2.单线程创建KafkaConsumer,多个处理线程处理消息(难点在于是否要考虑消息次序性,offset的提交形式) 简述消费者与生产组之间的关系消费者从属与生产组,生产偏移以生产组为单位。每个生产组可能独立生产主题的所有数据,同一生产组内消费者独特生产主题数据,每个分区只能被同一生产组内一个消费者生产。 当你使用kafka-topics.sh创建(删除)了一个topic之后,Kafka背地会执行什么逻辑?创建:在zk上/brokers/topics/下节点 kafkabroker会监听节点变动创建主题删除:调用脚本删除topic会在zk上将topic设置待删除标记,kafka后盾有定时的线程会扫描所有需要删除的topic进行删除 ...

April 4, 2023 · 4 min · jiezi

关于web:web前端主流三大框架析

咱们总说,前端三大框架是一家, 你抄我, 我抄他, 节操被野兽蹂躏, Google, 大神和Meta三大框架别离是Google 团队的 Angular明天咱们就来好好剖析剖析这三个框架, 各自的劣势,以及处于不同阶段的前端er应该怎么抉择适合的框架框架背景介绍AngularAngular 是 Google 在 2010 年公布的 AngularJS 的升级版,也称为 Angular 2。AngularJS 是由 Misko Hevery 和 Adam Abrons 在 2009 年创立的,最后被称为 "GetAngular",并于 2010 年更名为AngularJS。随着 AngularJS 的胜利,Google 开始全面重构该框架,并于 2016 年公布了 Angular 2。 目前,Angular 也是十分风行的前端框架之一。在 2016 年前后, Angular 在中国大陆其实还是有市场的, 如果不是尤大神, 没准你当初还在学习这个玩意,然而起初一方面是尤大神的崛起, 一方面是 Argular 本人作, 后果丢失了大部分中国市场ReactReact 是由Meta(原Facebook) 开发的一个用于构建用户界面的 JavaScript 库。 React 的第一个版本公布于 2013 年 5 月,然而在 2015 年,React 的体系结构产生了重大变动,从而推出了 React 16。React 在社区和商业畛域都领有宽泛的利用。React 一问世, 就取得了世界范畴内大部分人的青睐React 的组件化开发模式, 虚构 DOM 渲染, 能够与其余框架 库进行联合应用, 以及 "好玩又有意思" 的 JSX 语法深受大家喜 ...

March 29, 2023 · 2 min · jiezi

关于web:三种Web通信技术之间的差异和应用场景

在网络应用的疾速倒退中,新型的通信协议不断涌现,而 WebSocket、gRPC 和 QUIC 都是古代网络通信技术中的重要协定和技术,在不同的利用场景中,它们之间存在着肯定的雷同和差别。接下来咱们就以这三种技术的特点、差别和利用场景进行剖析阐明。什么是Websocket?WebSocket 是一种基于 HTTP 的协定,是HTML5钻研小组在2011年提出的一个协定标准,次要用于实现双向通信。在WebSocket中,客户端和服务器能够建设一条长久化的连贯,通过这条连贯能够实现双向通信。WebSocket 是应用层第七层上的一个应用层协定,它必须依赖 HTTP 协定进行一次握手 ,握手胜利后,数据就间接从 TCP 通道传输,与 HTTP 无关了。也就是说WebSocket 分为握手和数据传输阶段(HTTP握手 + 双工的TCP连贯),还有最初敞开连贯阶段,如下图:有以下特点:●建设在 TCP 协定之上(它须要通过握手连贯之后能力通信,服务器端的实现比拟容易)●双向通信(当建设通信连贯,能够做到持久性的连贯,服务器能够被动的给客户端推送音讯)●更强的实时性●与 HTTP 协定有着良好的兼容性。(默认端口也是80或443,并且握手阶段采纳 HTTP 协定,因而握手时不容易屏蔽,能通过各种代理服务器)●性能开销小,通信高效。(数据格式比拟轻量,能够发送文本,也能够发送二进制数据)●没有同源限度。(客户端能够与任意服务器通信)利用场景:●聊天利用●在线游戏●合作编辑利用●股票交易利用●实时流动/数据流展现等什么是GRPC?GRPC是Google在2016推出的一个高性能轻量级RPC框架,它应用Protobuf作为接口描述语言,反对多种编程语言,如 C++, Java, Python 等。在 GRPC 中,客户端能够调用近程服务器上的办法,就像调用本地办法一样。GRPC是建设在TCP之上,工作模式有四种:■简略 RPC (个别的rpc调用,client申请一次,server返回一次)■服务端流式 RPC (client申请一次,server返回屡次)■客户端流式 RPC (client申请屡次,server返回一次)■双向流式 RPC (联合客户端流式和服务端流式,即单方能够流式相互通信)比照传统的RPC,在响应返回之前时是不能持续发送申请的,而GRPC双向流模式能够同时相互通信,默认应用protobuf协定,比xml和json传输效率高10-20倍有以下特点:反对多种语言(跨语言编程)性能高(protobuf性能高过json, http2.0性能高过http1.1)基于规范的 HTTP/2 设计(反对双向流、音讯头压缩、单TCP的多路复用、服务端推送等个性)默认采纳protobuf作为IDL(接口描述语言)序列化反对 protobuf(protobuf是一种语言无关的高性能序列化框架,保障了RPC调用的高性能,传输效率高)流式解决(基于http2.0反对客户端流式,服务端流式,双向流式)利用场景:微服务架构:能够用于构建微服务架构中的各个服务之间的通信,实现高效的服务调用。多语言我的项目:其跨语言个性使得不同语言的我的项目能够通过GRPC进行通信,特地是当我的项目波及多个不同语言的服务的时候。云原生利用:能够与Kubernetes、Istio等云原生技术联合应用,实现服务的发现、负载平衡、容错等性能,从而更好地反对云原生利用的开发和部署。什么是QUIC?QUIC是谷歌在2016年制订的一种基于UDP的低时延的互联网传输层协定,旨在解决 TCP 协定存在的问题。QUIC 反对多路复用和疾速握手,能够进步数据传输的效率和可靠性。有以下特点:疾速启动和疾速复原:QUIC能够在连贯建设时立刻启动数据传输,不须要期待握手实现,因而能够更快地建设连贯和传输数据。多路复用:能够在一个连贯上同时传输多个数据流,进步网络利用率和数据传输效率。安全性:内置TLS协定,反对端到端的加密传输,能够爱护数据的机密性和完整性,防止网络中间人攻打和数据泄露。连贯放弃:当客户端 IP 或者端口发生变化时,能够疾速复原连贯,也就是从WiFi 切换到流量时用户无感知。适应性:根据自适应算法并联合网络情况调整传输参数。例如调整窗口大小、重传超时等,以适应不同的网络环境和带宽状况。利用场景:实时通信和游戏:其疾速启动和疾速复原的特点,使得它更实用于实时通信和游戏场景流媒体和视频服务:其多路复用和流量管制,适宜用于流媒体和视频服务,进步数据传输效率和网络利用率。网络安全:内置TLS协定,反对端到端的加密传输,能够爱护数据的机密性和完整性,适宜用于网络安全场景。三者之间差别比照优缺点比照综合比照咱们应该如何应用?何时应用 GRPC○在微服务格调的零碎框架中应用GRPC连贯多语言服务。○针对流式申请和流式响应的点对点实时服务。何时应用 WebSocket○实时更新的性能及服务,其中通信是单向的,由服务器将最新更新的信息推送到客户端。如:警报和告诉。○双向通信的性能及服务,客户端和服务器相互实时发送和接管音讯。如:在线聊天、在线合作编辑文档。○一次向多个终端播送雷同的音讯,通常说法为公布/订阅消息传递形式。何时应用QUIC○短视频:晋升首屏秒开率,升高卡顿率。○图片文件下载:升高文件下载总耗时。○直播:升高播放卡顿率,晋升推流稳定性。总结你要抉择应用哪种协定将取决于您的特定需要。你的应用程序的利用场景和指标决定了你应该应用哪种协定。比方:双向通信的实时应用程序就最适宜应用websocket,但它不太适宜须要发送大量数据的应用程序。若应用服务间须要发送大量数据进行通信,那gRPC无疑是最好的抉择。基本上,您须要确定您的利用程序开发指标是什么,测重点是什么。你能够尝试对本人问以下问题:●应用程序的指标是什么:平安还是品质?●利用程序开发指标是什么?●将来的指标是什么?关注以上的几个问题的同时,而后决定为要研发的应用程序抉择一个适宜的通信技术。

March 23, 2023 · 1 min · jiezi

关于web:浅谈基于Web的跨平台桌面应用开发

作者:京东物流 王泽知 近些年来,跨平台跨端始终是比拟热门的话题,Write once, run anywhere,始终是咱们开发者所冀望的,跨平台计划的劣势非常显著,对于开发者而言,能够做到一次开发,多端复用,一套代码就可能运行在不同设施上,这在很大水平上可能升高研发老本,同时可能在产品效力上做到疾速验证和疾速上线。现在跨端跨平台的优良技术计划也比拟多, 挪动端: React Native,Flutter,Weex;小程序端: Taro,Uniapp;桌面端: NW.js,Electron,Flutter for desktop,Tauri,Wails,明天咱们聊聊桌面利用开发。 []()1 什么是跨平台泛指编程语言、软件或硬件设施能够在多种操作系统或不同硬件架构的电脑上运作。一般来说,有这几种场景,别离是跨设施平台(如 PC 端和挪动端),跨操作系统,(挪动端中分Android,IOS,PC端中分 Windows,macOS,Linux),国内的小程序(微信,京东,百度,支付宝,字节跳动等等) []()2 跨平台的技术计划跨平台编程不是一件容易的事件,这是因为在不同平台之间,有许多小而简单的差别,这都须要思考周全,当初咱们有了成熟的跨平台技术计划,可能减小开发者的开发成本及跨平台的难易水平。 NW.jsElectronFlutter for DesktopTauriWails []()2.1 NW.js官网:https://nwjs.io/ GitHub:https://github.com/nwjs/nw.js 语言:Nodejs + 前端任意框架 代表我的项目:微信小程序 IDE,京东小程序 IDE NW.js(node-webkit )是一个基于 Chromium 和 Node.js 的 Web 运行环境,可让你间接在 DOM 中调用 Node.js 模块,并可应用任何现有的 Web 技术来编写本地利用。 []()2.2 Electron官网:https://www.electronjs.org/ GitHub:https://github.com/electron/electron 语言:Nodejs + 前端任意框架 代表我的项目:VSCode,百度小程序 IDE,京 ME,Facebook Message, Electron 的前身叫做 Atom-Shell,原本是 GitHub 公布开源编辑器 Atom 时一并公布的副产物,然而起初这个副产物的影响力远远的超过了 Atom 自身,于是便改名为一个独立专案,也就是当初的 Electron。Electron 的实质很简略,就是 Chromium + Node.js 的组合,两者之间透过 IPC 通信。 相似于 NW.js,外表上,它们仿佛十分类似,然而这两个我的项目有着实质上的区别,使得 Electron 和 NW.js 成为两个齐全独立的产品。 ...

March 7, 2023 · 3 min · jiezi

关于web:web自动化测试之cypress篇章

版本文章依赖版本:^11.2.0 最新版本: 前提筹备与阐明 装置 cypress 的客户端软件作为运行环境.在我的项目根目录下装置 cypress 配置启动脚本{ "e2e": "cypress open", // 关上客户端手动选择性执行 "test": "cypress run && cypress run --component" // 在命令行里,执行所有的测试用例}cypress 的 api ,都是以同步的写法,来异步执行的。比方 async await 那样,它不须要显示申明,间接调用。比方在获取元素的时候,它会有相应的等待时间来异步解决。应用场景返回某个页面cy.visit(url);获取元素选择器匹配// 这种匹配形式,能够参考 css 的 querySelector 的用法cy.get(selector);内容匹配// 内容匹配,下列语句将会匹配蕴含了 hello 文本的元素cy.contain('hello');事件调用根本事件// 以调用点击事件为例,其它事件也能够同样如此cy.get(selector).click();简单事件// 这种形式,除了触发根本事件,还能够触发 mousedown、mouseup 这类的事件,来模仿简单的用户操作cy.get(selector).trigger(eventName);内容校验// 该语法是在判断选中的元素,应该有 hello 的内容cy.get(selector).should('have.value', 'hello');// 判断元素的 top 值,是否为 10 px;cy.get(selector).should('have.css', 'top').and('eq', '10px');// ...模仿按键// 按住 ctrlcy.get('body').type('{ctrl}', { release: false });// 抬起 ctrlcy.get('body').type('{ctrl}', { release: true });接口申请获取接口的调用后果// 开始监听某个接口 cy.intercept({ method: 'GET', // 比方监听 /api/login?account=xxx,写法为:/api/login* url: `接口的path局部`, }).as('test');// 此处留神。在监听的代码开始执行时,前面的申请行为如果不是该接口,就会报错。也就是说,在开始监听后,须要确保接下来的申请肯定是这个监听的申请。所以不能一开始就去监听。举荐做法就是在监听后,确定后续行为马上能够监听到该接口来解决,比方在这里触发某个按钮的点击行为,来调用接口// 获取接口的申请后果cy.wait('@test') .its('response.body') .then(data => { cy.log(JSON.stringify(data)); });根据上述形容,能够封装如下办法应用export const watchRequest = <T>(url: string, trigger: () => void, callback: (data: T) => void) => { cy.intercept({ method: 'GET', url: `${url}*`, }).as(url); trigger(); cy.wait(`@${url}`) .its('response.body') .then(data) => { callback(data); });};批改申请参数// 批改 get 申请的参数 cy.intercept('/api/test*', (req) => { const request = JSON.parse(req.query as string); req.query.account = 2;});留神:批改的申请参数,在控制台外面看申请时,参数没有产生显示变动,实际上曾经扭转了。强制期待cy.wait(1000); // 期待1s自定义指令元素是否存在申明类型/// <reference types="cypress" />/// <reference types="cypress-wait-until" />declare namespace Cypress { interface Chainable<Subject> { /** * 查看元素是否存在 * * @param selector 选择器 * @return Chainable<Subject> */ isElementExist(selector: string): Chainable<Subject>; }}定义指令/// <reference types="cypress" />/// <reference types="cypress-wait-until" />require("cypress-wait-until");export function isElementExist(selector: string) { return cy .window() .then(($window) => $window.document.querySelector(selector));}Cypress.Commands.add("isElementExist", isElementExist);应用指令cy.isElementExist(".shoe-id").then((value) => { if (value) { // ... } else { // ... }}测试数据cypress/fixtures 目录下的 json 文件能够当作测试数据来用,例如: user.json: ...

February 17, 2023 · 1 min · jiezi

关于web:全栈角度看分页处理

作者:京东物流 杨攀 分页是 web application 开发最常见的性能。在应用不同的框架和工具过程中,发现初始行/页的定义不同,特意整顿记录。从这个技术点去看不同层的实现。以及不同语言实现的比照。 文章会从失常的web 构造分层的角度去梳理不同层的解决。 分为数据库分页、服务端分页、前端分页数据库分页这里用mysql 举例整顿。咱们罕用的数据库例如 Oracle/ SQL Server 等,对于分页语法的反对大同小异。不做具体一一举例。 先从数据库层梳理,也是从最本源去剖析分页的最终目标,前端和后端的一起逻辑和适配,都是为了拼接适合的 SQL 语句。①MySQL LIMIT语法:[LIMIT {[offset,] row_count}] LIMIT row_count is equivalent to LIMIT 0, row_count. The offset of the initial row is 0 (not 1) 参考:MySQL :: MySQL 5.7 Reference Manual :: 13.2.9 SELECT Statement 服务端/后端分页后端分页,简略讲,就是数据库的分页。 对于mysql 来讲,就是上述 offset row_count 的计算过程。 这里选用了罕用的框架组件来比照各自实现的细节。 pagehelper 是Java Orm 框架mybatis 罕用的开源分页插件 spring-data-jdbc 是Java 框架罕用的数据层组件①pagehelper/** * 计算起止行号 offset * @see com.github.pagehelper.Page#calculateStartAndEndRow */private void calculateStartAndEndRow() { // pageNum 页码,从1开始。 pageNum < 1 , 疏忽计算。 this.startRow = this.pageNum > 0 ? (this.pageNum - 1) * this.pageSize : 0; this.endRow = this.startRow + this.pageSize * (this.pageNum > 0 ? 1 : 0);}/** * 计算总页数 pages/ pageCount。 * 在赋值数据总条数的同时,也计算了总页数。 * 能够与 Math.ceil 实现比照看。 */public void setTotal(long total) { if (pageSize > 0) { pages = (int) (total / pageSize + ((total % pageSize == 0) ? 0 : 1)); } else { pages = 0; }}SQL 拼接实现: com.github.pagehelper.dialect.helper.MySqlDialect ...

February 13, 2023 · 3 min · jiezi

关于web:web系统添加盲水印

前言为减少零碎安全性,防止重要敏感信息通过截图形式泄露,对web页面减少盲水印标识,标注零碎名称,登陆人,以后工夫等信息,这里的盲水印指肉眼不可见的html水印 减少水印引入watermark.js调用 watermark.load办法,指定显示文字与透明度,我这边设置的不可见透明度为0.015 watermark.load( { watermark_txt: "后盾管理系统-2022-11-26|系统管理员|sajsdljiqwdqjdwiqjwodj", watermark_alpha: 0.5 })可见水印示例如下 不可见水印示例如下 检测水印针对带有水印的截图图片,提供对应的检测显示水印的性能,将img标签和div重合搁置,为div设置css属性 mix-blend-mode: color-burn,相当于对图片加上一个滤镜,调亮底部对比度让水印显示进去 <html><style> .avatar { width: 1366px; height: 600px; position: absolute; top: 0; left: 0; } .imgshadow { width: 1366px; height: 600px; position: absolute; top: 0; left: 0; background: #000; mix-blend-mode: color-burn; }</style><body> <img id="image" class="avatar"> <div class="imgshadow" width="800" height="600"></div> <input type="file" onchange="selectImage(this);" style="margin-top: 650px" /> <script> function selectImage(file) { document.getElementById('image').src = URL.createObjectURL(file.files[0]); } </script></body></html>检测后的水印示例如下

November 26, 2022 · 1 min · jiezi

关于web:Lighttpd-1453-移植指南openEuler-2003-LTS-SP1

介绍简要介绍Lighttpd 是开源Web服务器软件,其基本的目标是提供一个专门针对高性能网站,平安、疾速、兼容性好并且灵便的Web Server环境。具备非常低的内存开销、CPU占用率低、效力好以及丰盛的模块等特点。 Lighttpd是泛滥OpenSource轻量级的Web Server中较为优良的一个。反对FastCGI,CGI,Auth,输入压缩(output compress),URL重写,Alias等重要性能;而Apache之所以风行,很大水平也是因为功能丰富,在Lighttpd上很多性能都有相应的实现了,这点对于Apache的用户是十分重要的,因为迁徙到Lighttpd就必须面对这些问题。 开发语言:C 一句话形容:Web 服务器 倡议的版本倡议应用版本为“Lighttpd 1.4.53”。 环境要求硬件要求硬件要求如下所示。我的项目阐明服务器TaiShan 200服务器(型号2280)CPU鲲鹏920 5250处理器磁盘分区对磁盘分区无要求操作系统要求操作系统要求如下所示。 我的项目版本openEuler20.03 sp1 aarch64Kernel4.19阐明: 如果是全新装置操作系统,装置形式倡议不要应用最小化装置,否则很多软件包须要手动装置,可抉择“Server with GUI”装置形式。配置编译环境装置依赖库 yum -y install gcc gcc-c++ glib2-devel pcre-devel bzip2-devel zlib-devel gamin-devel 获取源码 下载地址:https://download.lighttpd.net... 配置装置cp lighttpd-1.4.53.tar.gz $HOME &amp;&amp; cd $HOMEtar xzvf lighttpd-1.4.53.tar.gz编译装置cd lighttpd-1.4.53./configure --prefix=/usr/local/lighttpd --with-fammake -j60 &amp;&amp; make install阐明: --prefix=PATH:指定Lighttpd的装置目录。 --with-fam:fam 用于缩小stat()函数调用次数。 参数配置创立软件目录cd /usr/local/lighttpd/mkdir log webpages cache config拷贝配置文件/目录cp $HOME/lighttpd-1.4.53/doc/config/lighttpd.conf /usr/local/lighttpd/config/cp $HOME/lighttpd-1.4.53/doc/config/modules.conf /usr/local/lighttpd/config/cp $HOME/lighttpd-1.4.53/doc/config/conf.d /usr/local/lighttpd/config/ -r阐明: Lighttpd装置后的装置门路下只有三个文件夹 lib,sbin和share,其余文件须要本人拷贝和创立。 批改lighttpd.confvi /usr/local/lighttpd/config/lighttpd.conf批改第16-20行为: var.log_root = &quot;/usr/local/lighttpd/log&quot;var.server_root = &quot;/usr/local/lighttpd&quot;var.state_dir = &quot;/usr/local/lighttpd&quot;var.home_dir = &quot;/usr/local/lighttpd&quot;var.conf_dir = &quot;/usr/local/lighttpd/config&quot;批改第61行为: ...

November 7, 2022 · 1 min · jiezi

关于web:WEB前端线上系统K2022最新持续跟进海上生明月

download:WEB前端线上零碎K2022最新继续跟进-海上生明月深度学习指标检测R-CNN,快,快流程图R-CNN(具备CNN特色的区域)是深度学习畛域的经典框架之一。卷积神经网络(CNN)首次被引入指标检测畛域,并获得了优异的成果。为了实现这一指标,本文解决了两个次要问题:用深度网络定位指标,用大量标注数据集训练高容量模型。构造指标检测包含三个模块。 生成独立的区域候选框。更大的卷积网络用于从每个区域提取固定长度的特征向量。用于分类的一些线性SVM(反对向量机) 最初其实还有一部分,用回归算法来细化候选区域。根本流程图如下: 确定候选区域文章的这一部分应用选择性搜寻,这是一种传统的指标检测算法。文章只是顺带一提,这里就不赘述了。算法的具体原理能够参考:理解选择性搜寻-Zhihu (zhihu.com)。这里应用它来生成两千个候选区域。特色抽出在该局部中,通过五个卷积层和两个全连贯层,将输出的227*227 RGB图像提取为4096维特征向量。卷积网络的构造如下: 对于任意面积大小的图像,这里最初的办法是间接拉伸,换算成227*227。然而在拉伸之前,面积框会被放大,这样拉伸进去的图片就有了原图的P像素上下文(这里p = 16)。在本文的反对资料中探讨了几种不同的warp办法。SVM+NMS对于每个类别,作者应用相应的训练SVM对提取的特征向量进行评分。当对所有候选区域进行评分时,对每个类别应用NMS(非最大克制)算法,并扔掉那些具备较高白条的区域。给定阈值的区域。这一部分的详细描述如下:借据顾名思义,交加超过并集计算两个矩形框的交加面积除以并集面积。 该值的取值范畴为[0,1],0示意齐全不相交,1示意完全相同。网络管理站(Network Management System)NMS用于删除反复的框,成果如下 其算法原理并不简单,次要有以下几个步骤: 给定n个候选框,依照分数排序。遍历每个框,计算它与其余框的IoU,如果它大于某个阈值,则抛弃相应的框(因为这两个框很可能是同一个货色)反复上述步骤,直到所有盒子都被解决(保留或抛弃)。 Python代码如下:将numpy作为np导入 def nms(dets,thresh):" " ":dets给出的候选人框:阈值预约的退货箱""" 获取对于dets的各种信息x1 = dets[:,0]y1 = dets[:,1]x2 = dets[:,2]y2 = dets[:,3]分数=细节[:,4] 面积= (x2 - x1 + 1) * (y2 - y1 + 1)order = scores.argsort()[::-1] keep = []当order.size > 0时:i =程序[0]keep.append(i)xx1 = np.maximum(x1[i],x1[order[1:]])yy1 = np.maximum(y1[i],y1[order[1:]])xx2 = np.minimum(x2[i],x2[order[1:]])yy2 = np.minimum(y2[i],y2[order[1:]]) w = np.maximum(0.0,xx2 - xx1 + 1)h = np.maximum(0.0,yy2 - yy1 + 1)inter = w * h ...

October 28, 2022 · 2 min · jiezi

关于web:Go-Web开发进阶项目实战基于gin框架共81时

download:Go Web开发进阶我的项目实战(基于gin框架共81时)<p>乔克和SPL,基于Java的数据业务逻辑开发技术很多开源技术都能够在Java下实现以数据库为外围的业务逻辑,其中JOOQ比Hibernate的计算能力更强,比MyBatis的可移植性更好,越来越受到关注。Procspl是一种新的数据计算语言,在计算能力和可移植性方面也有突出的劣势。上面两个方面进行比拟,找出更高效的数据业务逻辑开发技术。JOOQ商业版次要反对商业数据库和存储过程,这超出了本文的探讨范畴。语言特点编程格调JOOQ反对残缺的面向对象编程格调,能够组合多个对象(办法)造成相似SQL的语法逻辑。JOOQ能够应用Java的Lambda表达式、函数调用接口和过程管制语法,实践上反对面向函数和面向过程,然而这些表达式\语法不是为JOOQ的结构化数据对象(Result)设计的,应用起来不够不便。SPL反对面向对象、面向函数和面向过程的编程格调,并大大简化了它们。SPL有对象的概念,能够用点号拜访属性,进行多步计算,但不继承和重载这些内容。SPL的Lambda表达式比SQL更简略易用,函数调用接口和流控语法是专门为结构化数据对象(序列表)设计的,应用起来更不便。运行模JOOQ是编译执行的Java代码,性能较高,灵活性较小。然而,JOOQ自身没有计算能力。执行后,它只生成SQL语句,而后由数据库进行计算并返回后果。理论性能不高,有些业务逻辑须要重复读写数据库,所以性能更差。SPL是一种解释性语言,它的编码更加灵便,然而同样的代码性能会差一点。而SPL领有不依赖数据库的独立计算能力,不须要重复读写数据库,内置了大量工夫复杂度较低的基本操作。它的计算性能经常能够超过编译语言。内部类库JOOQ能够引入其余任意的第三方Java类库来补救它的有余,比方应用Stream来减少它的独立计算能力。然而,这些类库不是为结构化数据对象设计的,它们的性能是无限的。SPL内置了业余的数据处理性能,提供了大量的根底操作,开发效率更高,工夫复杂度更低。通常不须要内部Java类库,非凡状况能够在自定义函数中调用。和调试。它们都有图形化的IDE和残缺的调试性能。JOOQ应用的是Java IDE,长处是更通用,毛病是没有针对数据处理进行优化,无奈不便地察看结构化数据对象。SPL的IDE是专门为数据处理而设计的。结构化数据对象以表格模式出现,使得察看更加不便。学习难度JOOQ须要学习三种语法,SQL,通用Java和JOOQ。其中,SQL的语言能力要高于个别程度,能力转换成JOOQ语法;JOOQ文法次要用于开发,难度不大,然而转换过程比较复杂。Java的个别语言能力能够低于个别程度。SPL的指标是简化Java甚至SQL的编码,初学者学习或者深度开发都不难。然而到了高性能计算,就须要学习更多独特的算法,难度就会加大。代码数量SQL善于结构化数据计算,语法简洁,代码量低。然而为了把SQL翻译成JOOQ,须要引入很多函数,导致适度封装和大量理论代码。JOOQ的过程管制依赖于Java语法,但Java语法不是为结构化数据对象设计的,代码量也不低。SPL的表达能力比SQL强,远远强于JOOQ,能够用更低的代码量实现结构化数据计算。SPL的流解决语句是专门为结构化数据对象设计的,代码量低于Java。结构化数据对象结构化数据对象用于对象化数据库表,这是数据处理和业务逻辑开发的根底。业余的结构化数据对象能够不便地与数据库替换数据,反对丰盛的计算性能,简化流程解决的难度。定义JOOQ的结构化数据对象由记录和记录集组成。记录有很多种。第一种是记录对象,实用于字段的个数、类型、名称都是动静生成的状况。尽管Record很灵便,然而它不太面向对象,应用起来也很麻烦。比方须要通过getValue(M)失去第M个字段。第二种是Record[N]对象,其中N为1到22,如Record3,实用于字段类型和编号已知但不超过22,字段名动静生成的状况。Record[N]不太灵便,但略微更面向对象,所以应用起来更不便。例如,您能够通过valueM获取第m个字段。第三种记录对象是JOOQ的代码工具依据库表构造生成的。几个表中有几个对象,字段的个数、类型、名称与库表中的严格对应,比方OrdersRecord、EmployeesRecord。这种记录对象不灵便,高度面向对象,使用方便,间接通过字段名就能够失去字段。第三类对应的是数据库表,能够称为具备固定数据结构的记录对象。前两类通常来自于数据库表的查问和计算,能够称为具备动静数据结构的记录对象。这三种类型都是罕用的,还有一些不罕用的记录对象,比方用户定义的记录类型UDT,这里就不探讨了。JOOQ中记录的对象品种繁多,用法差别较大,减少了开发难度。这次要是因为业务逻辑中有大量的动静数据结构,而Java是编译语言,只善于表白固定的数据结构。如果保持示意动静数据结构,只能设计简单的接口规定,或者依据字段数量预约义大量对象。JOOQ记录集的品种绝对较少,比方原生对象后果及其父ArrayList,有时还有Stream。SPL的结构化数据对象也由记录和记录集(序列表)组成。SPL只有一个记录对象,次要是因为SPL是一种解释性语言。动静数据结构和固定数据结构同样不便表白,接口也很简略,不须要分成多个。此外,记录对象和单个记录集尽管性质不同,但业务含意类似,应用时容易混同。SPL是一种解释性语言,它的内部用法能够通过灵便的接口保持一致,从而进一步提高其可用性。相同,JOOQ是一种编译语言,所以很难设计出如此灵便的接口。它只能提供两种不同的接口,别离用于解决记录对象和单个记录集。读取数据库JOOQ读取内部数据库表并生成一个固定的记录集:Java . SQL . connection conn = driver manager . get connection(URL,用户名,明码);DSLContext context = DSL . using(conn,SQLDialect。MYSQL);后果R1=context.select()。来自(订单)。fetchInto(订单);复制代码查问内部数据库表以生成动静记录集:result 2 = context . select(ORDERS。塞利德,命令。客户,订单。金额)。来自(订单)。fetch();复制代码动静记录集的后续应用有点麻烦,然而能够兼容固定记录集。以下文章次要应用动静记录集。SPL读取或查问内部数据库表以生成序列表: A一个=conn=connect("mysql8 ") 2=conn.query("select * from Orders ") 三=conn.query("select SellerID,Client,Amount from Orders ") SPL不分固定记录集和动静记录集,生成办法雷同,后续用法雷同。写入数据库为了将解决过的结构化数据对象长久化到数据库中,JOOQ提供了三个函数,即插入、更新和删除。批改记录r并将其更新到数据库:r.setValue(订单。金额,r.getValue(订单。金额)。double value()+100);r . update();复制代码以上是单个记录的更新。应该留神,数据库表必须有一个主键,这样主动生成的记录类将继承UpdatableRecordImpl。只有继承了UpdatableRecordImpl的record类反对update函数。写批量数据库是数据业务逻辑的常见场景,JOOQ也能够实现。批改批记录集T并将其更新到数据库:R1 . foreach(r--> { r . setvalue(ORDERS。金额,r.getValue(订单。金额)。double value()+100);});R1 . foreach(r--> { r . update();});复制代码下面的代码循环记录集,手动更新每条记录,从而实现了整集的更新。如你所见,JOOQ通过硬写代码实现批量编写,没有封装,往往不不便。如果批改、减少或删除一批记录,须要辨别三类记录,而后用不同的函数循环写入。常见的办法是继承record类,增加一个新的“ID”属性来辨别它们,或者保留一个未修改的原始记录集T,手工比拟批改后的集NT和原始集。无论哪种形式,手工实现的过程都很麻烦。SPL封装了数据库的编写,增加、批改、删除单个和批量记录只应用一个更新函数,反对混合更新。比方原来的序列表是T,通过一系列增删改后的序列表是NT,变更后果长久化到数据库的orders表中:连贯更新(NT:T,订单)复制代码拜访字段JOOQ读取单个记录的客户端字段:R1.get(0)。getClient();R1.get(0)。获取(订单。客户端);复制代码下面的代码体现了JOOQ的外围劣势:它反对纯面向对象的字段拜访,并且不混合字符串、数值常量或其余非Java表达式。代码格调高度对立。可怜的是,下面的代码只实用于固定的结构化数据对象。如果是查问计算生成的动静记录对象,只能应用字符串字段名或数字序列号来拜访字段:R2.get(0)。get(" Client ");R2.get(0)。get(1);复制代码动静记录对象更常见。以上字段的拜访形式不是纯面向对象的,代码格调不统一,不反对主动补全,编写个别比拟麻烦。SPL反对纯面向对象的字段拜访,不论是固定的还是动静的,个别写起来都很不便:T(1)。客户复制代码当然,也反对字符串字段名或数字序列号来拜访字段:T(1)。字段(2)T(1)。现场(“客户”)复制代码SPL在面向对象方面更纯正,格调更对立,写代码更不便。此外,SPL提供了许多JOOQ不反对的便捷函数:默认字段名,能够间接用点号拜访,比方取第二个字段:t (1)。# 2;取多个字段,返回一组汇合:t .([客户端,金额])有序拜访有序拜访是业务逻辑开发的难点之一。JOOQ的记录集继承了Java的有序集ArrayList,具备肯定的有序拜访能力,反对按下标和按区间取记录:R.get(3)R.subList(3,5);复制代码进一步的函数须要硬编码,例如最初三个:collections . reverse(R);R.subList(0,3);复制代码至于依据地位集取记录、向前步进记录等性能。,硬编码就更麻烦了。SPL程序表也是一个有序集,提供了与程序相干的基本功能,如按下标取数、按区间取数等:T(3)转换到(3,5)复制代码序列表是业余的结构化数据对象,不反对很多与sequence JOOQ后果相干的高级函数,而序列表是间接提供的。例如,依照倒序号取记录,能够间接用负号示意:T.m(-3)//倒数第二条T.m (to (-3,-5))//倒数距离复制代码例如,依据地位设置进行记录,并逐渐记录:T.M (1,3,5,7:10)//序列号为1,3,5,7-10的记录T.M (-1,-3,-5)//倒数第二条1,3,5T.step (2,1)//每两个取第一个(相当于奇数地位)复制代码结构化数据计算结构化数据计算能力是数据业务逻辑的外围性能。上面是一些常见的话题,从简略到简单,比拟JOOQ和SPL的计算代码。重新命名//等效的SQL抉择卖方ID eid,订单金额//JOOQcontext.select(订单。seller id . as(“Eid”),订单。AMOUNT.as(“金额”)。来自(订单)。获取()//SPLOrders.new(SellerID:EID,Amount:amt)复制代码JOOQ的语法逻辑和SQL基本相同,能够达到用面向对象的形式模仿SQL的目标,这是JOOQ的重要劣势。也有不利之处。JOOQ的一个操作须要几个函数的组合。每个函数都有本人的参数和语法规定,学习和编写都比拟艰难。此外,许多函数中的字段名必须伴有表名,即便对于单表计算也是如此。这阐明JOOQ的语法还不够业余,还有很大的晋升空间。SPL间接应用面向对象的语法来实现计算。一个操作对应一个函数,援用字段不肯定要带表名。语法更业余,代码更短。条件查问//等效的SQLselect * from Orders where((SellerID=2,Amount=2000,Amount2010//JOOQcontext.select()。来自(订单)。其中(((订单。SELLERID.equal(2)。和(订单。金额小于(3000.0)))。或者((订单。SELLERID.equal(3)。和(订单。amount . greater requal(2000.0)。和(订单。金额小于(5000.0))))))。和(年(目。订单日期)。greaterThan(2012)))。fetch();//SPL订单.抉择(((SellerID = = 2 & & Amount = 2000 & & Amount 2010)复制代码SQL自身的条件表达式足够简略。JOOQ尽管是模仿SQL,然而适度封装了条件表达式,函数太多,多括号难读,远不如SQL易懂。SPL应用函数实现条件查问,条件表达式简短易读。分组摘要//等效的SQL:抉择客户,提取(从订单日期开始的年份)y,计数(1) cnt来自订单按客户分组,提取(从订购日期开始的年份)having AMT result = context . select(max(T2 . field(" continuous days "))。来自(T2)。fetch();复制代码这个问题比拟难,须要多种简略计算的综合利用。JOOQ很难间接表白间断上涨的概念,只能通过技巧变相实现,即通过累计未上涨天数来计算间断上涨天数。具体来说,按工夫程序用回升标记标记每个记录。如果上涨,标记为1,如果上涨,标记为0;而后按工夫程序累加每条记录不涨的天数,norisingdays。只有当以后记录下降时,这个数字才会减少;如果目前的记录回升,这个数字将放弃不变;依据不再回升的norisingdays数,找出每组的记录数。很显著,一批间断降落的记录的norisingdays的数量是不同的,每个记录会被划分到不同的组中。这个组算1,不是解决问题的指标,而是间断回升的一批记录的norisingdays数雷同,能够分到同一个组。这组统计间断上涨的天数,这个数值就是解决问题的指标。最初用max函数计算最大间断上涨天数。JOOQ的编程过程是先写SQL,而后翻译成JOOQ。对于简略的计算,SQL更容易写,翻译也不太难。但对于这种综合计算,计算逻辑更有技巧性,SQL不好写,所以翻译难度更大。另外,JOOQ是外表上很容易调试的Java,但实质是SQL,和SQL一样难调试,而这为当前的保护埋下了一个大坑。SPL电码简略得多:APPL.sort(天)。[email protected](价格1000)复制代码选项也能够组合,例如:[email protected](金额> 1000)复制代码一些函数的参数很简单,能够分为多个档次。JOOQ对此没有非凡的语法计划。只能拆分成多个函数互相嵌套,尽力模仿SQL语法,导致代码简短繁琐。SPL创造性地创造了分层参数来简化简单参数的表白,用分号、逗号、冒号从高到低将参数分为三层。例如,关联两个表:退出(订单:o,SellerId员工:e,EId)复制代码过程JOOQ反对一些存储过程语法,包含循环语句和判断语句,但属于商业版,因为权限要求高,存在潜在的平安危险,移植起来比拟艰难,所以很少应用。除了存储过程,JOOQ还能够应用Java实现流程解决。对数据库没有权限要求,安全隐患小,能够无缝移植。例如,依据规定计算奖金:orders . foreach(r--> {Double amount=r.getValue(订单。金额);如果(金额> 10000) {r.setValue(订单。奖金),金额* 0.05);}else if(金额> =5000 &&金额=2000 &&金额10000,金额*0.05,如果(金额> 5000 &&金额=2000 &&金额</p> ...

October 19, 2022 · 1 min · jiezi

关于web:一文带你全面了解什么是颠覆时代的Web30未来互联网

## 前言 大家还记得前段时间Meta公司,也就是FaceBook改名后的那家,CEO扎克伯格发的那张元宇宙自拍吗? 他没想到的是,顺手的一张自拍却引来了群嘲,20年前的像素感,毛糙的人物轮廓,背地是法国的埃菲尔铁塔和西班牙的巴塞罗那大教堂,这难道就是耗资百亿打造的元宇宙么? 明天咱们不去深究元宇宙的倒退,咱们来说说和元宇宙有着千头万绪关系的Web3.0。在Web3.0的宏观概念中,元宇宙只不过是Web3.0的冰山一角,那么到底什么是Web3.0呢? 下一个风口容我先卖个关子,大家可能感觉Web3.0只是一个概念,离本人还很边远,但实际上它曾经成为了下一个风口,还记得雷布斯的经典语录么:站在风口上,猪都能够飞起来。 这并不是空穴来风,在资本市场上Web3.0早已成了投资人眼里的香饽饽。 寰球最大的风险投资公司之一的红杉资本一口气投资了20多家Web3.0公司。2022年4月寰球Web3.0畛域74个我的项目取得总计31.03亿美元的融资。 -- 财联社在国家层级上,Web3.0一样成了抢夺畛域。 美国鼎力出台支持性政策,要保障Web3.0反动产生在美国,Meta、谷歌、亚马逊、推特、eBay、奈飞、Paypal、Square等多家美国互联网知名企业已开始付出实际以摸索Web3畛域。日本曾经把倒退Web3.0晋升到国家策略层面,要举全国之力推动Web3.0倒退。说到这里,置信你曾经对Web3.0开始另眼相看了,接下来让我带你揭开Web3.0的神秘面纱。 Web的倒退说到Web3.0,那就要说说它的前身1.0和2.0了。 Web1.0Web1.0其实就是20多年前的门户网站时代,比拟典型的有雅虎、搜狐、网易、新浪等,比较显著的特点就是互联网基本上是“只读”模式的,网民能够登录各大门户网站浏览和浏览任何想要看到的新闻资讯。 限于过后的网速和技术的限度,人们对互联网的应用也就是浏览各种信息,网页是也比拟简陋,比方Yahoo网站: Web2.0随着起初社交媒体的衰亡,用户能够在各种社交媒体上发明内容,实时互动,如:Facebook、YouTube、微博、抖音、公众号等,这个时候的互联网变为“可读+可写”模式,用户不光能浏览,还能够本人发表观点,见解,成为各平台上内容的创造者。 咱们正处于Web2.0的这种互联网模式,人人都能够在互联网各种平台上发声,并产生了一种新职业叫自媒体,发明内容的同时还可取得收益,比方抖音: ### Web3.0 相比于Web2.0是“可读+可写”,Web3.0则是“可领有”,Web3.0是去中心化的,以用户集体数字身份、数字资产和数据齐全回归集体为前提的的自动化、智能化的全新互联网世界。咱们的每一个互动都应该被记录并且量化,咱们应该本人把握本人的数据所有权和使用权并且偏心地参加到由此产生的利益调配外面。 什么什么?可领有?去核心?数字化?是不是听着一下头大了,不要焦急,如果你对Web3.0的形容感到费解,那只是因为咱们身处Web2.0时代太久了,久到曾经对Web2.0的弊病司空见惯,但接下来我说到的Web2.0这些弊病,你就会明确为什么要有Web3.0,因为这是互联网时代倒退的必然。 Web2.0的弊病平台垄断互联网每个畛域都有巨头的产生,因为领有更多的市场资源,这些平台变得更有话语权,开始制订市场规定,比方滴滴,如何免费,如何分成全凭本人说了算,这对平台上的司机也好,乘客也好只能被动的任人宰割。相似的问题还有电商大数据杀熟,搜索引擎推送广告等。 数据割裂你在QQ音乐购买的周杰伦音乐无奈在网易云音乐上播放。你发表一篇技术文章,要别离在公众号、CSDN、博客园、掘金、知乎等渠道都公布一遍。因为不同平台的数据是割裂的,这给用户造成了很大的不便。 隐衷问题咱们的社交关系、聊天记录、购物记录、搜寻记录等数据,均由各大平台管制,他们能够随便应用咱们的隐衷数据。在黑市里你的个人信息有可能此时正以几毛的价格售卖着。 数据可信度平台提供的数据并不可信,如:举荐的热门并非真的热门,商品购买量、文章浏览量可能都是虚伪的。这些数据都是可操控,会给用户造成误导。 数据安全性一旦你所玩的游戏平台敞开服务,那么你所破费的工夫和金钱就全副打水漂了,比方你养的QQ宠物,你就再也见不到它了。如果是某视频平台敞开,你公布的、珍藏的视频数据也将全副隐没。 所有权及收益即便是领有百万粉丝的大V,你的账号也归平台所有,你只有使用权,并非所有权,就算前美国总统特朗普一样会被推特禁言。你产生内容价值的收益也由平台调配,这显然是不合理的。 Web3.0的改革既然Web2.0有这么多的不合理和有余,Web3.0的世界又是什么样子的呢。 数字身份用户不必在各个App上有多个账号,而是有一个全网通用的数字身份,一键登录就能够。也就是说,现行的数据存储不再依赖大厂服务器的集中管理,而会转为分布式存储。咱们每个人的数据,一旦造成,就很难隐没。 数据所有权你所产生的任何数据信息、数字资产都属于你本人,而不属于任何其余的公司。比方,你创作的文章、编写的代码、画的画、写的歌等所有数字资产,都会以NFT的模式,贮存在你的个人账户里。这就突破了平台对信息管理和算法的垄断,扭转了用户和平台间的权利义务关系。 数据安全性你的数据将失去残缺的爱护。比方,你付费在某网盘上存了不少材料。可是,起初这个网盘公司开张了,你贮存的材料和权利也就跟着隐没了。然而,如果应用独立的数字身份上网,你购买的网盘服务,将被记录到区块链的节点上。即使这个网盘公司开张,你换个平台再登录,你原来贮存的材料依然能够看到。 收益分配由你的信息产生的经济利益,将全副属于你集体,不会被互联网巨头宰割。比方,你在网上公布了一张旅行照片,有网友对你的鞋很感兴趣,于是点击查看了你鞋子的信息。这种广告曝光所带来的收益,将会间接打入你的个人账户里。 当然Web3.0带来的改革,远远不止以上四点。它的到来,将扭转互联网巨头的垄断位置,扭转以后信息数字经济的运行规定,让普通用户领有更大的话语权。 Web3.0的技术那么要构建Web3.0须要应用什么技术呢,我简略列了以下几点: 去中心化在整个Web3.0的架构中,去中心化是至关重要的一环。去中心化与Web3.0的核心理念相符,容许用户领有并管制本人的数字身份。去中心化中蕴含用户的身份信息和隐衷数据,只有在通过用户受权的状况下能力应用,具备安全性、可验证和互操作性等特点。以去中心化的形式实现身份的发现、辨认和验证,不再依赖中心化身份零碎的审核和许可。 分布式存储Web3.0致力于扭转中心化平台对数据的管制,从这个角度来看,Web3.0我的项目不会将数据存储在中心化的服务器中。因而,Web3.0我的项目会有海量的数据存储需要,分布式存储是重要基础设施。相比传统的中心化存储,分布式存储具备安全性高、隐衷爱护、避免单点生效等劣势。但在理论利用过程中,分布式存储面临着可靠性、用户体验和监管政策等方面的危险。 区块链Web3.0在2006年就被提出,比区块链更早,但在区块链衰亡之前,Web3.0因不足解决方案只能停留在概念阶段。随着区块链技术的倒退和加密货币投资者的增多,以太坊、Polkadot等区块链生态中涌现出一批与Web3.0相干的我的项目。因而,区块链技术奠定了Web3.0倒退的根底。应用区块链技术做为底层架构,可满足“数据不可篡改”“去中心化”等利用需要。 NFT全称为Non-Fungible Token,非同质化通证,其“非同质化”意味着每一个NFT都是举世无双、不可分割的。这意味着当一件作品被铸成NFT之后,这个作品就成为了区块链上举世无双的数字资产,具备唯一性特点的可信数字权利凭证。NFT可确保其唯一性和真实性,这样,无论该作品被复制、流传了多少次,原作者始终都是这份作品的惟一所有者并可获取收益。而在传统的交易方式中,这些是很难保障的。 驰名球星库里花18万美元买一个NFT数字头像,更侧面阐明了NFT的火爆水平,当然也有肯定炒作成分在外面。 Web3.0的难点Web3.0作为一种新兴互联网利用业态,蕴含区块链、加密货币、网络币、公链、智能合同、机器学习、人工智能、加强实景、虚拟现实、5G、天文服务等许多新技术。实现Web3.0构想的状态,须要从底层的基础设施环节搭建Web3.0网络,现阶段的基础设施停顿次要集中于技术端的研发与利用。 但单就目前已逐步倒退成熟区块链一项技术而言,开发者在利用时依然面临挑战:例如区块链技术体系多、平台多,技术差别较大,开发者较难把握;基于区块链技术的智能合约相干配套并未成熟,目前短少开发、测试、平安审计工具;区块链利用与传统利用在开发模式和运维模式上存在肯定差别,增大开发难度等。 另外,每做一笔交易,都要更新网上有数的数据,都须要极大的通信量。当初比特币的交易速度约为每秒7笔交易,而支付宝这类产品,峰值能达到每秒9万笔。即在数据量越大、数据极度去中心化、存储量极为宏大的状况下,交易速度必然越来越慢。因而目前的集中式治理的数据处理和交易速度,要远远高于去中心化的区块链。如何进步区块链的效率问题,也是亟待冲破的技术难点。 Web3.0的国情以后,中国曾经开始布局倒退的Web3.0产业次要能够分为五类:1.数字藏品;2.虚构数字人;3.游戏;4.社交;5.供应链。 与海内相比,我国Web3.0产业在数量上和品质上都与其有肯定的差距,这很大水平上与我国对加密货币的严监管以及各类防备金融风险的动作无关。因为国内外投资环境不同,目前在人民币基金中,只有数字藏品畛域是有可能合规的投资畛域,多家大厂也在布局这类我的项目,如支付宝推出的蚂蚁链粉丝粒,腾讯推出的幻核APP等。 因为国内监管环境,局部发展Web3.0业务的企业抉择了在境外倒退,示意在国内“不是怕监管,而是怕随性、没有边界、没有法律条文的监管”。而在新加坡,以区块链、元宇宙和Web3.0技术为外围的金融科技翻新守业企业专门提供了“监管沙盒”政策,容许“试错”,目前大略有七八十家公司在新加坡排队申领牌照,在获得牌照之前依然能够开展业务。 除了监管环境,Web3.0业务也面临的法律问题,如数字资产NFT,尽管具备法律效力的监管文件未出台。但对于NFT的监管风向已苗头初现。2022年4月13日,中国互联网金融协会、中国银行业协会和中国证券业协会独特公布《对于防备NFT相干金融风险的倡导》,倡导NFT该当去金融化、去证券化、去虚构货币化,NFT经营主体和参加主体该当合规发行NFT,防止触碰炒作虚构货币的法律红线。 国家正在踊跃制订Web3.0的相干法律制度与监管体系,增强数据合规,强基建,立规范,推动建设适合的监管规定,保障Web3.0在国内可能稳固有序的倒退。 Web3.0的利用Web3.0还在摸索中,当初市面上的Web3.0利用其实大部分是传统的web2利用+web3的概念,而且次要是在国外市场,这里列举两个比拟有名的Web3.0利用。 MetaMask只有对Web3.0畛域有所涉猎,那么你必定不会对数字钱包小狐狸Metamask感到生疏,你能够将Metamask了解成Web3.0时代的支付宝,二者同样有用领取属性。但不同之处,Metamask还承载了独立的数字身份性能,它将数字身份与私有财产、个人信息高度绑定,齐全由本人掌控。 Brave目前市面上支流的 Web2 浏览器,无论是谷歌的 Chrome、还是国内的360、搜狗浏览器...其实都存在着售卖用户信息给广告商的变现模式,而这其中天然就会存在着用户隐衷泄露的问题。而Brave浏览器主打的就是隐衷爱护,它最大的特色就是广告拦挡性能,用户应用Brave不会受到广告轰炸的困扰。不久前,Brave浏览器就发明了,世界上第一个领有超过100万用户的加密应用程序的记录。 ...

September 26, 2022 · 1 min · jiezi

关于web:Web安全实战宝典完结无密内置文档

download:Web平安实战宝典完结无密内置文档Spring5源代码5-Bean生命周期后处理器 次要解释三种生命周期加强剂: bean factorypostprocessor:bean factory后处理器bean definitionregistrypostprocessor:bean定义注册后处理器插手容器的启动豆后处理器:豆后处理器bean后处理器MergedBeanDefinitionPostProcessorsmartinstantiationwarebeanpostprocessorinstantiationwarebeanpostprocessor回调接口DisposableBean(咱们临时不解释销毁计划)1.1什么是BeanPostProcessor?BeanPostProcessor是Spring提供的一个十分重要的扩大接口,Spring中的很多性能也是通过BeanPostProcessor实现的(目前看到的最典型的就是AnnotationAwareaspectJaoutProxyCreator的注入)。 1.2 bean post处理器的类型BeanPostProcessor在Spring中有很多子类(idea中有46个),比方 InstantiationAware后处理器适配器:在Spring的bean加载过程中起着十分重要的作用。AnnotationawareaspectjautoproxyCreator:当属性在bean创立期间被注入时,它起作用。aspectjawaareadvisorrotoproxycreator:Aspect的AOP性能也取决于BeanPostProcessor的个性。1.3发明机会BeanFactoryPostProcessor:在Spring开始时染指BeanDefinition的创立。 beanPostProcessor:首先,创立与Bean对应的Bean定义。第二个是Bean实例的创立。在Spring容器中,Bean的创立不仅仅是通过反射来实现的,在创立过程中还须要思考Spring容器中Bean的一些属性,所以BeanDefinition中不仅蕴含了Bean类文件的信息,还蕴含了Spring容器中以后Bean的一些属性,比方容器中的作用域、懒加载、别名等信息。当Bean被实例化时,它须要依赖相应的BeanDefinition来提供相应的信息。。 BeanPostProcessor参加了Bean的创立过程。所以必须在一般Bean之前创立。实际上,BeanPostProcessor是在Spring启动时刷新容器时创立的。 BeanPostProcessor的BeanDefinition创立计时和一般的Beans没有什么区别,都是在Spring启动时在BeanFactoryPostProcessor中实现的(精确的说是在ConfigurationClassPostProcessor中实现的)。 然而,BeanPostProcessor的实例创立优先于一般bean的创立,在Spring启动期间将调用abstractapplicationcontext # registerbeanpostprocessors办法。在这个办法中,Spring将从容器中获取BeanPostProcessor类型的所有beanName,通过beanFactory.getBean办法获取相应的实例,对它们进行排序,并在BeanFactory.beanPostProcessors属性中注册它们。当容器须要执行BeanPostProcessor办法时,能够间接从beanPostProcessors中获取。 2.案例定义几个测试类来实现bean的后处理器: bean definition registry post processor: /** BeanFactory的后处理器,优先级排序,已排序*/@组件公共类mybean definition registry postprocessor实现bean definition registry postprocessor {公共mybean definitionregistrypostprocessor(){system . out . println(" mybean definition registry postprocessor ");}@Override //立刻执行public void postprocessbean factory(configurablelistablebean factory)抛出BeansException {system . out . println(" mybean definition registry postprocessor....postProcessBeanFactory ... ");} @Override //首先执行public void postprocessbean definition registry(bean definition registry)抛出BeansException {system . out . println(" mybean definition registry postprocessor...postprocessbean definition registry ... ");//加强bean定义信息的注册,比方本人注册组件。 ...

September 23, 2022 · 2 min · jiezi

关于web:01秒大型-h5-页面无缝闪开方案

在传统的 web 优化中,咱们能够采取压缩、拆包、动静加载等办法缩小首屏资源大小,也能通过离线包、页面直出等计划减速 html 返回,之前一篇 h5 秒开大全 (opens new window)有局部简析。在大部分场景中,这些计划都足够用,也能失去杰出的成果。但仍有两种无奈尽如人意的中央:其一是短暂的白屏景象不可避免,其二是对于超大型 web 利用难以做到秒开。联合客户端个性,咱们有没有方法,进一步做到极致,关上 web 页面和关上客户端页面无差别的体验呢? 传统计划的窘境无论是 html 离线,还是直出,以及让 webview 启动和网络申请并行 ,页面的切换和关上都无奈防止 html 加载这一过程。对于大型利用而言,宏大的 js 初始化解析和执行会消耗微小的工夫。 新的思考方向?速度优化的实质是以空间换工夫。咱们是否能够从这个思路,将关上 webview 及解析 html 这以过程省略掉呢?答案是能够的。 容器化计划容器化即是咱们最终摸索与实际的进去的一套计划。失常 web 页面敞开后,webview 组件即会销毁掉,下一次再关上须要重新启动。通常让 webview 放弃常驻的做法能够节俭 webview 启动工夫, 但简略的常驻 webview 并不能做到页面秒开,页面关上依然须要从新解析 html。 对于咱们的利用特色而言,页面切换实际上是仅仅内容数据的变动,比方切换一篇文档,其 html 容器及款式都是同一套,而差别仅仅只是在数据上,从新载入 html 及初始化 js 这部分耗时齐全能够防止掉。让 webview 组件及其容器内的 html 页面常驻,在文档切换的过程,仅仅对数据进行替换,这即是容器化计划。容器化计划省去了 webview 反复启动和渲染 html 的问题,打开文档,耗时只在做数据替换,能够真正做到了秒开。 容器切换web 侧如何感知到不同的页面在进行互切换,数据如何做到替换呢? 首先在 app 关上的时候,文档列表会进行数据预拉取,同时触发客户端预启动容器,除此外,其余任意场景也能按需触发容器启动(前面会聊到)。容器内会提前进行 html 渲染和 js 执行,此时的数据是空的。用户点击文档,客户端会对关上 url 这一行为进行监听,同时解析 url,取出惟一标识符, 判断本地是否曾经存在并且符合要求的数据,如果条件命中,间接应用曾经关上的容器切出,告诉到容器内的 web,web 收到告诉,通过 url 取出标识符,从本地进行数据获取,而后对数据进行替换渲染,从而实现页面切换。 ...

September 23, 2022 · 2 min · jiezi

关于web:Web-安全实战宝典含资料

download:Web 平安实战宝典含材料1 .简介本文次要钻研跨模态行人再辨认问题。Re-ID的指标是从数据库中检索相干人的图像。事实世界中的身份识别系统有时须要日夜辨认同一个人。为此,须要应用两种不同的设施:白天应用RGB摄像头,早晨应用红外(IR)摄像头。当查问和图库图像来自不同模式时,显著的模式差别是最突出的挑战。本文试图通过解决模态差别来进步跨模态辨认的成果。从度量学习的角度来看,re-ID的次要目标是学习一个 类内紧致 类间拆散的嵌入空间。基于深度分类的学习基线是用于身份辨认和人脸识别工作的风行办法。在训练过程中,它将所有具备雷同ID的特色拉至相应的代理(即分类层中的权重向量)。当这个基线利用于跨模态re-ID时,作者发现模态差别显著妨碍了类内紧凑性,如图1 (a)所示。在基线中,不论其底层模式如何,具备雷同ID的所有实例共享一个代理。与模式无关的代理试图适应IR和RGB个性,并充当它们之间的两头中继。这种中继效应导致对模式差别的相当大的容差。从图1 (a)中的t-SNE可视化中能够察看到,两种模式的特色之间存在显著的模式差别。具备不同ID的雷同模态的特色比具备雷同ID的不同模态的特色更靠近。例如,ID116和ID119的类间间隔小于ID-116的类内间隔。 为了克制模态差别,作者提出了一种记忆加强的单向度量学习办法(MAUM),该办法有两个新鲜的设计:(1)学习单向度量;(2)用记忆库加强。首先,咱们学习了两个单向指标(“IR”到“RGB”和“RGB”到“IR”)来缓解基线的中继效应。MAUM为每个ID学习两个特定的模态代理(MS-proxy ),如图1 (b)所示。RGB(IR)代理只接管来自RGB(IR)特色的梯度,因而它们能够用于示意非凡模式。而后,解冻它们并应用RGB代理作为动态参考来提取IR特色,反之亦然。这两个单向指标促成了更好的跨模态相关性。其次,这两个单向指标通过基于记忆的加强失去进一步强化。每次迭代后,MAUM将IR和RGB代理存储在它们各自的记忆库中。因为MS代理一直迭代变动(即“漂移”景象),每个ID在存储体中都有多个不同的IR和RGB代理,如图1(b)所示。一些历史MS-proxy(与最新MS-proxy相比)间隔模态边界更远,因而对相应的模态特色具备更强的“放大”效应。总之,记忆库通过使阳性样本难以辨别来加强MAUM,从而促成跨模态相干。作者指出,基于记忆的学习揭示了MAUM未知但重要的后劲。具体来说,作者用“漂移”来加强参考性。相比之下,以前的钻研认为“漂移”会带来负面影响,并试图防止。如图1(b)所示,具备雷同ID的特色散布严密,这表明模态差别被克制。例如,如图1(a)所示,ID-116的类内嵌入显著比基线更紧凑。除了无效地缩小模态差别之外,所提出的MAUM在模态不均衡的状况下也具备非凡的劣势。在训练数据中,因为人在夜间流动较少,红外图像通常比RGB图像更稀少,红外图像的标注难度更大。在MAUM中,单向测量和基于记忆的加强是基于特定模式的,并且在IR代理上的加强独立于在RGB代理上的加强,反之亦然。因而,MAUM能够从新均衡红外和RGB模式的加强。通过增益再均衡,补救了红外图像的有余,对模态不均衡具备鲁棒性。作者的次要奉献总结如下:(1)针对跨模态辨认问题,提出了一种新的记忆加强的单向度量学习办法。它在两个单向方向上学习明确的跨模态度量,并通过基于记忆的加强进一步加强;(2)思考了模态不均衡,这是跨模态辨认中一个重要的理论问题。通过调整特定模式的增益,MAUM对模式不均衡体现出很强的鲁棒性。(3)综合评估了模态均衡和模态不平衡条件下的办法。试验结果表明,MAUM在两种状况下都能显著进步跨模态re-ID的性能,显著优于现有办法。2.相干著述2.1跨模态测量学习首次钻研了异构人脸识别中的跨模态问题。这些晚期的作品都应用了与模态无关的代理来增强类内的紧密性。RGB受进犯的跨模态行人再辨认首次引入行人再辨认中的跨模态问题,并逐步引起再辨认界的关注。与本文最靠近的工作是通过模态感知的合作集成学习进行跨模态的人从新辨认,这与作者的办法相似,也应用了特定的模态分类层。然而,这两种办法之间存在显著差别。他们应用特定模态分类器的集成来生成用于合作集成学习的加强老师模型;MAUM应用模态特定分类器来学习模态特定代理,这些代理在收敛后是固定的,并用于学习单向指示器。2.2基于记忆的学习记忆库广泛应用于监督、半监督和无监督零碎。在半监督学习中,利用记忆库获取历史预测的工夫集,增强了未标记样本的最新预测与工夫集的一致性。无监督学习的两个重要研究成果(MOCO和监督测量学习(XBM))在应用记忆库方面有类似的动机。具体来说,MOCO减少了存储密钥的数量,以便更好地进行比拟钻研;XBM通过存储历史特色来进步疑难案例开掘的成果。他们都受害于记忆银行减少负面特色。在基于记忆学习的背景下,作者指出MAUM的新鲜之处在于一种新的跨模态度量学习机制。在MAUM,记忆银行的益处不是因为工夫一致性(如半监督学习)或更多的负样本(如MOCO和XBM)。MAUM受害于模型漂移,帮忙MAUM取得难以辨别的正样本参考,促成跨模态关联。此外,MAUM将代理存储在记忆银行中,这能够视为测量学习工作的一种新的模型扩大。相比之下,以前的工作只存储特征向量。2.3不均衡数据的学习数据不均衡是深度学习中的一个重要挑战。以往的钻研多集中在类别不均衡上,解决办法次要有两种,即重采样和从新加权。重采样是指在训练中对少数类(大量样本)进行过采样,对高频类(大量样本)进行欠采样,以均衡每次迭代中的头尾数据。加权指的是在损失函数中为不同类别甚至不同样本调配自适应权重。留神到跨模态工作中有一个独特的数据不均衡问题,即模态不均衡。模态不均衡是指一种模态比另一种模态蕴含更多样本的状况。在MAUM,对特定模式的加强是离开的,容许对特定模式的独立加强,这使得MAUM对模式不均衡更鲁棒。3.办法3.1 MAUMMAUM的框架如图2所示。MAUM应用ResNet50作为骨干,并承受RGB和IR图像作为输出。MAUM将第一卷积块分成两个独立的分支,以适应特定模式的低级特色模式,一个用于RGB,另一个用于IR。为了进步计算效率,两种模式共享所有卷积模块。对于卷积特色映射,MAUM应用全局均匀池(GAP)来为每个输出图像生成深度嵌入。基于这种罕用的骨干设置,提出的MAUM着重于其记忆加强的新的单向测量学习办法。 3.1.5具备组件特色的MAUM个性通常能够进步视觉重辨认和跨模态重辨认的性能。为了验证MAUM与重量特色兼容,作者引入了一种基于重量特色的变体,即Maum P,这种变体将最初的卷积特色图依照一个简略的重量特色基线均匀分成六个重量特色。在训练过程中,每个组成部分都有本人的监督。在测试过程中,所有六个组件特色被串联以造成最终的示意。3.2模式失衡情景下的MAUM在跨模态re-ID中,红外图像通常比RGB图像稀缺,导致模态不均衡,红外图像更难标注。当模态不均衡达到极限时,一些id可能只有一个模态(例如只有RGB)。咱们把这两种状况定义为:(1)模态不均衡场景,每个ID有两种状态,红外图像比RGB图像少;(2)情态片断情景,有些id只有一个情态,而有些则有两个情态。MAUM是第一个在跨模态钻研中思考模态不均衡的人。试验表明,模态不均衡显著升高了re-ID的精度。在MAUM,因为加强是基于两种特定模式的记忆库,它们之间的比例能够灵便调整,以补救红外图像样本的有余。因而,MAUM对模式失衡是持重的。3.3机理剖析本文剖析了MAUM记忆加强的机制。作者指出记忆库中积攒的代理漂移是单向度量学习加强的起因。当咱们在两个不同的训练迭代中察看具备雷同ID的代理时,两个察看后果天然是不同的。对于定量分析,同一药剂的两次察看值之间的差别被定义为药剂漂移,如公式(4)。 6.摘要本文提出了一种用于跨模态辨认的单向测量学习办法MAUM。MAUM有两个长处:(1) MAUM不应用模式无关的代理作为两个模态之间的两头中继,而是强制应用两个单向度量的显式跨模态关联;(2)通过摸索模型漂移的后劲,MAUM通过基于记忆的加强进一步增强了跨模态相关性。联合这两个长处,MAUM显著地克制了模态差别,进步了跨模态辨认的能力。另一个奉献是将模态不均衡问题引入到跨模态re-ID社区中,并证实了MAUM在该问题中具备较高的鲁棒性和优越性。在MAUM,应用两种特定模式的存储体来存储MS-proxy。尽管这些代理没有梯度,但依然须要一些内存和计算开销来存储和应用它们。当训练集很大时,如工业数据集,其内存和计算开销不可疏忽。如何优化内存和计算开销将是将来工作的重点。

September 16, 2022 · 1 min · jiezi

关于web:开课吧web前端高级工程师20期

download:开课吧web前端高级工程师20期数据异构简略 何谓数据异构,上周交易部门商品的共事过去做分享,又看到这个词,他的PPT外面是 数据库异构。其实咱们以前做的事件,也是可能称之为数据异构。比如咱们将DB外面的数据持久化到Redis外面去,就是一种数据异构的形式。 如果要下个定义的话:把数据按需(数据结构、存取形式、存取形式)异地构建存储。 常见利用场景分库分表中有一个最为常见的场景,为了晋升数据库的查问能力,咱们都会对数据库做分库分表操作。比如订单库,开始的时候咱们是按照订单ID维度去分库分表,那么起初的业务需要想按照商家维度去查问,比如我想查问某一个商家下的所有订单,就非常麻烦。 数据异构总结起来大概有以下几种场景 数据库镜像数据库实时备份多级索引search build(比如分库分表后的多维度数据查问)业务cache刷新价格、库存变动等重要业务消息数据异构方向在日常业务开发中大抵可能分为以上几种数据去向,DB-DB这种形式,一般常见于分库分表后,聚合查问的时候,比如咱们按照订单ID去分库分表,那么这个时候咱们要按照用户ID去查问,查问这个用户上面的订单就非常不便利了,当然可能使用对立加到内存中去,但这样不太好。 所以咱们就可能用数据库异构的形式,从新按照用户ID的维度来分一个表,像在下面常见利用场景中介绍的那样。把数据异构到redis、elasticserach、slor中去要解决的问题跟按照多维度来查问的需要差不多。这些存储天生都有聚合的功能。当然同时也可能提高查问性能,应答大访问量,比如redis这种抗量银弹。 数据异构的罕用方法 完整克隆这个很简略就是将数据库A,全副拷贝一份到数据库B,这样的使用场景是离线统计跑工作脚本的时候可能。缺点也很突出,不适用于持续增长的数据。标记同步这个是业务场景比较简略的时候,现实情况下数据不会发生改变,比如日志数据,这个时候可能去标记,比如工夫戳,这样当发生故障的时候还可能回溯到上一次同步点,开始从新同步数据。binlog形式通过实时的订阅MySQL的binlog日志,生产到这些日志后,从新构建数据结构插入一个新的数据库或者是其余存储比如es、slor等等。订阅binlog日志可能比较好的能保证数据的一致性。MQ形式业务数据写入DB的同时,也发送MQ一份,也就是业务外面实现双写。这种形式比较简略,但也很难保证数据一致性,对简略的业务场景可能采纳这种形式。binlog形式 binglog是数据的日志记录形式,每次对数据的操作都会有binlog日志。现在开源的订阅binlog日志的组件,比如使用比较广泛的canal,它是阿里开源的基于mysql数据库binlog的增量订阅和生产组件。 因为cannal服务器目前读取的binlog事件只保存在内存中,并且只有一个canal客户端可能进行生产。所以如果需要多个生产客户端,可能引入activemq或者kafka。如上图绿色虚线框部分。 咱们还需要确保全量对比来保证数据的一致性(canal+mq的重试机制基本可能保障写入异构库之后的数据一致性),这个时候可能有一个全量同步WORKER程序来保障,如上图深绿色部分。 canal的工作原理 先来看下mysql主备(主从)复制原理 mysql主备(主从)复制原理,从下层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可能通过show binlog events进行查看); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。 canal模拟mysql slave的交互协定,伪装自己为mysql slave,向mysql master发送dump协定 mysql master收到dump请求,开始推送binary log给slave(也就是canal) canal解析binary log对象(原始为byte流) 咱们在部署canal server的时候要部署多台,来保障高可用。然而canal的原理,是只有一台服务器在跑处理,其它的服务器作为热备。canal server的高可用是通过zookeeper来保护的。 注意点确认MySQL开启binlog,使用show variables like 'log_bin'; 查看ON为已开启确认目标库可能产生binlog,show master status 注意Binlog_Do_DB,Binlog_Ignore_DB参数确认binlog格局为ROW,使用show variables like 'binlog_format'; 非ROW模式登录MySQL执行 set global binlog_format=ROW; flush logs; 或者通过更改MySQL配置文件并重启MySQL失效。为保障binlake服务可能获取Binlog,需增加授权,执行 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'admin'@'%' identified by 'admin'; FLUSH PRIVILEGES;MQ形式mq的形式,就绝对简略,实际上是在业务逻辑中写DB的同时去写一次MQ,然而这种形式不能够保证数据一致性,就是不能保障跨资源的事务。注:调用第三方近程RPC的操作肯定不要放到事务中。 ...

September 15, 2022 · 1 min · jiezi

关于web:开课吧web前端高级工程师20期含源码ppt

download:开课吧web前端高级工程师20期含源码ppt自建数据库可视化平台,在线治理数据库Bytebase简介Bytebase是一款面向开发者的数据库变更管理工具,目前在Github上已有3.6K+Star。它的次要个性如下: SQL审核:具备一站式SQL审核面板,可能直观地看到数据库所有变更记录。SQL倡导:能主动查看SQL语句规范,额定提供GitHub Action和API接入形式。SQL编辑器:可能在线治理及查看数据库表,反对语法的主动提醒。GitOps工作流:反对集成GitHub和GitLab,使用GitOps工作流进行数据库变更。备份复原:反对主动备份数据库及复原数据。 安装 首先咱们将在Linux下安装Bytebase,使用Docker来安装无疑是最便利的。 因为ByteBase对MySQL8的反对比较好,这里推荐安装MySQL8,首先下载MySQL8的Docker镜像; docker pull mysql:8复制代码 再使用如下命令运行MySQL8的容器; docker run -p 3506:3306 --name mysql8 \-v /mydata/mysql8/mysql-files:/var/lib/mysql-files \-v /mydata/mysql8/conf:/etc/mysql \-v /mydata/mysql8/log:/var/log/mysql \-v /mydata/mysql8/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:8复制代码 而后使用如下命令下载Bytebase的Docker镜像 docker pull bytebase/bytebase:1.3.1复制代码 下载胜利后,使用如下命令运行ByteBase容器; docker run --init \ --name bytebase \ --restart always \ --add-host host.docker.internal:192.168.3.105 \ --publish 5678:5678 \ --health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \ --health-interval 5m \ --health-timeout 60s \ --volume /mydata/bytebase/data:/var/opt/bytebase \ -d bytebase/bytebase:1.3.1 \ --data /var/opt/bytebase \ --host http://localhost \ --port 5678 ...

September 14, 2022 · 1 min · jiezi

关于web:偶数科技亮相-2022-年服贸会-Web30-发展趋势高峰论坛用湖仓一体实现基于业务本质的监管数据治理

2022年9月3日,由中国社会科学院社会科学文献出版社、中国领取清理协会、北京金融科技产业联盟领导,由北京区块链技术利用协会(BBAA)主办的“Web 3.0发展趋势高峰论坛暨2022元宇宙、区块链、金融科技蓝皮书发布会”在服贸会上胜利举办,偶数科技应邀出席。大会隆重公布《中国金融科技倒退报告》、《中国区块链倒退报告》、《中国元宇宙倒退报告》三部年度蓝皮书。其中偶数科技参加了本年度的《中国金融科技倒退报告》编写。会上,偶数科技专家蒋秀峰就主题《用湖仓一体实现基于业务实质的监管数据治理》进行了分享,以下为发言实录:嘉宾发言现场非常高兴有这个机会把偶数科技在数据资产治理畛域的一些实际和摸索成绩跟大家分享。明天我分享的题目是《用湖仓一体实现基于业务实质的监管数据治理——如何做好数据资产化工作》。数据治理是咱们实现数据资产转化一个十分重要的伎俩,所以小标题是数据资产化。如何做好数据资产化相干工作?难道之前数据资产化(如数据治理)的工作咱们做的不好吗?过来10到15年咱们的金融机构其实做了大量的数据管控和数据治理相干的工作,获得了十分不错的问题。咱们能够回顾一下咱们数据管理类零碎通过了十几年建设之后的数据利用的现状。几个数字跟大家分享一下:第一个,90%能够说靠近90%的金融机构曾经实现了数据仓库、大数据平台等这类平台的建设工作。第二个,100%曾经建设完数据平台的企业简直100%同时做了数据管控和数据治理相干的工作。第三个,80%咱们曾经实现了这些数据管控和数据治理的前提下,咱们看到约80%的数据管控零碎利用状况并不乐观,他的效费比绝对是比拟低的。第四个,100%当初简直所有的数据治理的工作呈现出“静止式”治理的特点,针对不同畛域每个阶段进行数据治理工作。第五个,60%数据应用过程中靠近60%的工时和资源耗费在数据筹备的过程,并且更多的是通过外包的开发资源,外包的资源理论存在下面 第1、第2和第3的特点,一个外包资源在做数据筹备工作的第一年可能品质、成果、效率都不是很能满足要求,第二年各方面做的不错,第三年可能就走了,这意味着一些重复性的工作,挑战性不大。第六个,80%以监管为例,咱们发现在监管报送的数据品质方面, 80%会呈现一些错报、漏报,更多是因为数据治理没有很好的解决底层业务复杂性,稍后我会讲为什么业务复杂性会影响到整个数据品质。数据资产化工作现状以上是以后数据利用过程中遇到的问题和特点,由这几个特点能够得出:咱们的数据治理工作过来10到15年尽管获得了十分不错的功效,然而依然有进一步的晋升空间,这个晋升空间就是咱们做好数据治理工作的指标,咱们把这个指标再提炼一下,至多从偶数科技实际和察看角度应该包含三个局部:第一点,要造成一套基于业务视角的对立数据模型,这套数据模型是要解决底层业务逻辑复杂性的。第二点,这套数据模型可能切实解决数据利用过程中数据看不懂、数据找不到、数据找不全,以及数据利用过程中次要依附集体教训的问题。第三点,可能造成一套满足不同用户、不同利用场景的数据架构。这是咱们认为做好数据资产化工作最根底的三点。为什么要基于业务实质进行数据治理工作?过往在数据治理过程中更多的是偏差于业务的数据品质治理,以及业务数据的可读性,次要集中在元数据缺失治理和准确性治理,这种治理带来的益处是在应用数据的时候能够用表的名称来判断表中业务数据的范畴以及业务含意,比方,咱们常常看到的《对公客户信息表》能够判断其蕴含所有对公客户的信息,这种判断大多数状况是无效的。然而咱们也发现,往年一季度银保监会公布了一个EAST处罚信息,1/5以上的金融机构都被处罚,总共罚款8000多万。处罚起因是数据的错报、漏报、瞒报,为什么会产生错报、漏报、瞒报?咱们能够通过一个简略的例子剖析其起因。如果要统计全机构危险数据资产,针对委托贷款风险数据资产是否应该纳入进来,这是十分细节的问题。委托贷款能够在现金管理项下,也能够在非现金治理项下。(1)从业务口径角度,咱们可能对“委托贷款风险数据资产”的定义有了解偏差,进而间接影响到监管报送的数据品质;(2)即使没有了解偏差,咱们在理论进行“委托贷款风险数据资产”数据提取整合过程中,该数据扩散在不同的业务零碎(如信贷、国内结等零碎)依然会对数据提取造成阻碍,最终造成错报和漏报。因而,偶数科技通过实际和剖析发现,错报、漏报背地的根本原因是金融机构在数据处理过程中没有基于业务实质对底层逻辑化繁为简。除了基于业务实质的数据治理,还有一个关键词是监管数据治理。后面咱们分享提到,金融行业数据管理及应用领域广泛外包的景象,少有企业有志愿、有能力投入大量的资源进行相干工作。但监管机构例外,监管机构面向的是几千家不同的金融机构,无论从业务能力、技术能力以及职能指标,都须要建设一个基于风控视角的数据模型,这个数据模型当初以EAST最为典型(审计署也有一套统计数据模型起到了同样的作用)。实际层面来看,EAST从1.0、2.0到5.0,始终是基于业务实质的设计思路,咱们是能够借鉴监管研究成果进行基于业务实质的数据治理工作的。咱们后面说到的相干数据治理成绩,造成风控视角的对立数据模型,其利用场景也是丰盛的、有价值的。利用场景最有价值之处在于如何构建数据湖或者湖仓一体平台。通过这张图,咱们看到的是技术倒退的脉络,通过技术倒退这个脉络,咱们总结出数据管理平台的现状和有余。监管数据治理成绩的利用(湖仓一体)第一个阶段是晚期传统OLTP数据库的呈现。从第二阶段,大规模并行处理技术MPP呈现的同时,数据管理平台对应的是咱们数据仓库建设的阶段,大略是在2004年、2005。有些起步较早的国内厂商(如IBM和TD)既有底层的数据库平台,也有下层的数据仓库建设办法和对立的数据模型,这套数据模型在市面上失去了金融客户的认可。当初数据湖厂商的一个特点是只关注底层技术平台,下层的平台建设办法呈现出百家争鸣的特点,并没有造成一套行业标准和被认可的数据模型,偶数也在思考和摸索湖仓一体的数据模型到底应该如何建设。实际上,基于监管数据治理后造成的面向危险管控的对立数据模型是十分重要的,可能领导咱们建设湖仓一体平台。高性能的底层根底平台加上下层的整合的数据模型,可能更便捷的撑持咱们的数据利用,成为数据利用的加速器。当然数据治理不仅是方才说到的基于业务实质做数据整合,还包含数据资产自身的盘点、传统数据管控三大项、基于数据向上做的元数据治理、业务数据治理、数据画像工作和数据资产经营。传统的数据管控或数据治理是为治而治,并没有建设管控与利用之间的抓手,抓手的问题其实要通过数据利用相干策略和伎俩进行。以上是偶数科技数据治理的钻研,目前偶数曾经有一些实际和摸索成绩,并且咱们研发了一套对立的监管数据模型,咱们把这套对立的监管数据模型叫做偶数模式。偶数模式与进阶模式不同,在进阶模式,尽管很多银行都有对立的监管数据平台或监管报送零碎,然而其底层架构依然是数据分体的,这也是为什么金融机构即使正确理解了某一业务口径(如委托贷款风险数据资产),实操层面依然不可避免受到技术架构掣肘,造成疏漏。偶数科技监管数据治理研究成果偶数岂但曾经摸索研发的监管数据模型以外,还有一套残缺的施行办法和流程,这套施行办法流程区别于传统办法的,是引入了数据资产这个概念,联合后面提到的数据资产的经营伎俩,偶数施行方法论实现底层业务简单逻辑所要求的模型整合。此外,咱们还有配套的工具类产品,包含基于数据开发和数据管理的组件 Lava,向上数据利用、数据分析的组件 Kepler 和 Littleboy 建模平台。因而,偶数从工具层面、施行办法层面、模型层面都能更好的撑持金融机构实现基于业务实质的监管数据治理,利用到对立的报送平台。当然,这套办法也能够扩大出如方才提到的面向审计的对立数据治理和数据模型、面向营销的对立数据治理和数据模型。我的分享就到这里。谢谢大家!

September 13, 2022 · 1 min · jiezi

关于web:Web-Electron-平台即时通讯产品的技术选型

(点击报名融云 2022 社交泛娱乐出海嘉年华) 8 月底,“IM 进阶实战高手课·第二讲”围绕“Web & Electron 平台即时通讯产品的技术选型”进行了具体拆解。 融云讲师巧用比喻等办法,活泼而又逻辑清晰地对 IM 场景前端技术计划进行了剖析比照,并分享了融云的最佳实际。下期聚焦 IM 全能力 ,就在 9 月 20 日 关注【融云寰球互联网通信云】理解更多 IM 常见业务状态及外围性能即时通讯产品常见的业务状态有以下几种:聊天室、单群聊、超级群、实时告诉、在线播送。而底层性能就像根底整机,能够用不同的办法拼接出下层的不同业务状态。 根底性能单元模块,大略就分为三类:最根底的是连贯治理类的需要,这是即时通讯业务的根底。接着是两端基于连贯的数据传输,这里咱们要关注的是前后端通信时的数据传输协定,也就是对于数据的序列化和反序列化的过程治理。最初就是基于既有数据的查问性能,咱们次要分享前端的长久化存储技术。 即时通讯场景下,对于这三个技术点的一些技术要求各不相同。 连贯治理 - 继续、稳固、及时的双向网络连接数据传输 - 平安、高效、易拓展的前后端数据传输协定记录查问 - 前端数据长久化存储计划网络连接计划比照咱们通过五个指标来横向比照连贯计划,别离是:连贯速度、传输效率、即时性、安全性、兼容性。 WebSocket 是前端的首选计划,它也是 Web 平台上构建长连贯业务的原生技术计划。因为浏览器平安沙箱的存在,咱们不能在 Web 浏览器内间接拜访传输层协定,然而 Electron 主过程内是百无禁忌的,咱们能够在 Electron 场景下选用 TCP。 基于 HTTP 的模仿双工协定解决方案,并不是单纯的 HTTP 协定自身,因为在长连贯业务中,短连贯个性的 HTTP 协定并不匹配需要场景。 连贯速度连贯速度是从发动连贯到连贯建设的耗时。TCP 的连贯须要进行三次握手,对于发动端是发两次收一次,对于应答端就是发一次收两次。为什么要做三次握手?其实这也是一个很常见的面试题。打个比方来说,两个人要达成一次无效对话,就须要确定两个信息:一是本人的耳朵和嘴巴没有问题;二是对方的耳朵和嘴巴没有问题。只有在这个根底之上,两者之间的对话才是无效的。三次握手就是要实现这么一个能力确认过程。嘴巴=发送能力,耳朵=接管能力。 当然这个比喻也不谨严,单方语言不通时也沟通不来。这是第二个技术方向数据封装协定要解决的问题,也就是对对端用意了解问题。 WebSocket 连贯要建设在 TCP 连贯根底之上,因为 WebSocket 是一个应用层协定,也就是运维们常常说的 7 层协定,而 TCP 是一个传输层协定,是 4 层协定。TCP 握手实现之后,通过 HTTP 报文向服务器协定提出降级申请,服务通过 HTTP response 报文来响应申请,至此 WebSocket 协商实现。比 TCP 多了两个动作,所以 WebSocket 的连贯速度是慢于 TCP 的。HTTP 是短连贯协定,连贯无奈稳固放弃,每次通信要重建连贯,所以连贯速度对它没有意义。 ...

September 9, 2022 · 2 min · jiezi

关于web:渗透攻防Web篇深入浅出SQL注入

1 背景 京东SRC(Security Response Center)收录大量内部白帽子提交的sql注入破绽,破绽产生的起因多为sql语句拼接和Mybatis使用不当导致。 2 手工检测 2.1 前置常识 mysql5.0以上版本中存在一个重要的零碎数据库information_schema,通过此数据库可拜访mysql中存在的数据库名、表名、字段名等元数据。information_schema中有三个表成为了sql注入结构的要害。 1)infromation_schema.columns:table_schema 数据库名table_name 表名column_name 列名 2)information_schema.tablestable_schema 数据库名table_name 表名 3)information_schema.schemataschema_name 数据库名SQL注入罕用SQL函数 length(str) :返回字符串str的长度substr(str, pos, len) :将str从pos地位开始截取len长度的字符进行返回。留神这里的pos地位是从1开始的,不是数组的0开始mid(str,pos,len) :跟下面的一样,截取字符串ascii(str) :返回字符串str的最右面字符的ASCII代码值ord(str) :将字符或布尔类型转成ascll码if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0 2.2 注入类型 2.2.1 参数类型分类整型注入例如?id=1,其中id为注入点,类型为int类型。 字符型注入例如?id=”1”,其中id为注入点,类型为字符型,要思考闭合后端sql语句中的引号。 2.2.2 注入形式分类 盲注布尔盲注:只能从利用返回中推断语句执行后的布尔值。工夫盲注:利用没有明确的回显,只能应用特定的工夫函数来判断,例如sleep,benchmark等。报错注入:利用会显示全副或者局部的报错信息重叠注入:有的利用能够退出 ; 后一次执行多条语句其余 2.3 手动检测步骤(字符型注入为例) // sqli vuln code Statement statement = con.createStatement(); String sql = "select * from users where username = '" + username + "'"; logger.info(sql); ResultSet rs = statement.executeQuery(sql);// fix code 如果要应用原始jdbc,请采纳预编译执行 String sql = "select * from users where username = ?"; PreparedStatement st = con.prepareStatement(sql);应用未预编译原始jdbc作为demo,留神此demo中sql语句参数采纳单引号闭合。 ...

August 26, 2022 · 2 min · jiezi

关于web:开课吧Web前端面试涨薪名企培养计划2022云pan

download:开课吧-Web前端面试涨薪名企造就打算|2022最新定时工作是每个业务常见的需要,比方每分钟扫描超时领取的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等。01Java 中自带的解决方案Cloud Native1应用 Timer创立 java.util.TimerTask 工作,在 run 办法中实现业务逻辑。通过 java.util.Timer 进行调度,反对依照固定频率执行。所有的 TimerTask 是在同一个线程中串行执行,相互影响。也就是说,对于同一个 Timer 里的多个 TimerTask 工作,如果一个 TimerTask 工作在执行中,其它 TimerTask 即便达到执行的工夫,也只能排队期待。如果有异样产生,线程将退出,整个定时工作就失败。import java.util.Timer;import java.util.TimerTask; public class TestTimerTask { public static void main(String[] args) { TimerTask timerTask = new TimerTask() { @Override public void run() { System.out.println("hell world"); } }; Timer timer = new Timer(); timer.schedule(timerTask, 10, 3000);} }复制代码2应用 ScheduledExecutorService基于线程池设计的定时工作解决方案,每个调度工作都会调配到线程池中的一个线程去执行,解决 Timer 定时器无奈并发执行的问题,反对 fixedRate 和 fixedDelay。import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit; public class TestTimerTask { public static void main(String[] args) { ScheduledExecutorService ses = Executors.newScheduledThreadPool(5); //依照固定频率执行,每隔5秒跑一次 ses.scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("hello fixedRate"); } }, 0, 5, TimeUnit.SECONDS); //依照固定延时执行,上次执行完后隔3秒再跑 ses.scheduleWithFixedDelay(new Runnable() { @Override public void run() { System.out.println("hello fixedDelay"); } }, 0, 3, TimeUnit.SECONDS);}}复制代码02Spring 中自带的解决方案Cloud NativeSpringboot 中提供了一套轻量级的定时工作工具 Spring Task,通过注解能够很不便的配置,反对 cron 表达式、fixedRate、fixedDelay。import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component; ...

August 19, 2022 · 2 min · jiezi

关于web:下一代响应式Web设计组件驱动式Web设计

自从驰名设计师 Ethan Marcotte(@beep)在 A List Apart上发表了一篇名为《 Responsive Web Design》的文章之后,响应式网页设计(RWD,即 Responsive Web Design)的身影就呈现在了公众背后。自此就有了响应式 Web 设计这个概念。从提出这个概念到明天曾经有十多年的工夫了。在这十多年来,CSS 也产生了微小的变动,新增了很多新的个性,近两年尤其如此,近两年尤其如此(具体请参阅《2022 年的 CSS》一文)。这些变动,对于响应式Web设计的开发也有较大的扭转。Una Kravets(@Una)大神,在2021的Google I/O 大会上的分享,提出 新的响应式:组件驱动式 Web 设计。Web 生态行将进入响应式 Web 设计的新时代,并转变咱们对其含意的认识,也为会Web设计带来新的变动。组件式驱动 Web 设计(或开发)也被称为是下一代响应式 Web 设计(或开发)。如果你对这方面话题感兴趣的话,请持续往下浏览。文章链接:《Responsive Web Design》《2022 年的 CSS》《新的响应式:组件驱动式 Web 设计》响应式Web设计的倒退历程既然要聊响应式Web设计,那么咱们就花一点篇幅和工夫简略地理解一下其倒退历程。家喻户晓,自从 Tim Berners-Lee 创立第一个 Web页面(大概在1991年8月份左右)到90年代末,Web页面都是十分简陋的:直到90年代末20年代初,Web设计和用户体验随着 CSS 的到来才缓缓地有了美感,Web页面看起来开始像咱们明天应用的网站:正如上图所示,越往后,Web 的 UI 越来越丰盛,越来越丑陋。这也让 Web 开发人员不得不在布局、设计和排版等方面破费更多的工夫。尽管 Web 开发人员为 Web 布局破费不少工夫,但在这个过程中,也积攒了很多不同的布局办法。在晚期,Web 开发人员次要采纳 固定宽度 和 流式布局 两种布局计划来实现 Web 页面的布局。特地是流式布局,自 Glenn Davis提出和推广之后,堪称是轰动一时,并且长期以来,都认为流式布局就是响应式Web布局。流式布局(Liquid Layout)能够调整Web页面尺寸以适应不同的显示器分辨率或浏览器窗口的大小。来看一个流式布局的简略示例: Liquid Page Layout Example@nickpettitCodePen但流式布局并不是完满的。应用流式布局的Web页面上,内容可能会溢出,在较小的屏幕上文字可能会换行,在较大的屏幕上可能会有很多不用的空白。大多数流体布局在 800px x 600px到 1280px宽或更大的屏幕分辨率下看起来还不错。然而,如果咱们能把它宰割得更细一些,比方为 800px ~ 1024px、1024px ~ 1280px以及1280px以上的分辨率提供不同的定制布局,那成果会更佳。同样,对于 640px ~ 800px、320px ~ 640px、240px ~ 320px 以及 240px 以下的分辨率也能够定制不同的布局。大概在 2004 年的时候,Cameron Adams(@themaninblue)在他的博文《Resolution dependent layout》提出了基于屏幕分辨率来动静构建Web布局,即 应用JavaScript依据浏览器窗口大小加载不同CSS文件。 ...

August 11, 2022 · 8 min · jiezi

关于web:建设下一代-Web-开放技术WebContain

基于 Webassembly + QuickJS 的 Web 平安沙箱技术计划,面向 Web 端建设下一代凋谢技术背景Web 端侧的凋谢技术长期以来始终在寻找最好的解决方案,从晚期基于 Webview + API管控 的凋谢模式 ,到目前基于小程序的重容器的架构计划。或多或少都无奈全面的解决开发者体验的问题,API 凋谢模式无奈做到平安管控,小程序凋谢模式的架构必然会给业务带来孤岛效应。如何给开发者带来更好的研发体验、给商家带来更好的产品体验始终是咱们淘宝凋谢技术前端团队的命题。 通过半年的技术演进和业务落地,咱们自研了一套基于 Webassembly + QuickJS 的架构计划,来解决上述的问题。 指标三年的小程序模式凋谢根底曾经造成了规模化壁垒,落地新的技术计划必然思考到老本问题,所以本次架构降级的指标能够形容为 “面向 Web 端建设下一代 PC 凋谢技术,建设基于 W3C 规范的 Web 技术三方凋谢计划,与小程序、小部件凋谢状态互补,构建电商域的残缺凋谢技术生态”。 思考端侧凋谢到底解决什么问题,我了解凋谢技术在端侧次要围绕这2个点:如何让内部代码平安的可控的执行、用户数据的平安如何保障,做到无端不透; 对于第一个点落实到细节是 JavaScript/CSS/HTML 如何执行的问题。我的解法是:JavaScript 运行在 Webassembly+QuickJS 平安容器里,基于 Webassembly 的平安水位保障 JS 执行的隔离和可控;CSS 基于 Shadow DOM + iframe 做到款式隔离。数据安全次要依靠浏览器容器环境对数据做加签验签加密操作,本文章不开展解说;技术细节工欲其事必先利器,咱们先对技术底层细节做一个理解 WebAssembly图起源地址(https://medium.com/jspoint/th...)这里重点提到2个事件: WebAssembly 二进制码会通过 Liftoff 生成未优化的 ByteCode,再给到 TurboFan 优化代码编译为机器码WebAssembly 和 JavaScript 的编译后端是共享的,WebAssembly 的止境是和架构相干的机器码,这里是一个关键点也是 VM 和 HOST 同步调用的关键点。WebContainer 架构实质上咱们会以 App 级别的思维来架构计划(多页面、路由、通信),底层运行时基于 QuickJS ,波及到多页面治理、鉴权、内存剖析等等。 ...

August 8, 2022 · 1 min · jiezi

关于web:Go语言WEB框架使用说明使用拦截器验证用的户登录状态

WORM拦截器WORM拦截器是一个action(处理器函数)之前或之后被调用的函数,通常用于解决一些公共逻辑。拦截器可能用于以下常见问题: 申请日志记录错误处理身份验证解决WORM中有以下拦截器: before_exec :执行action之前拦截器after_exec :执行action之后拦截器本文用一个例子来阐明如何应用拦截器来实现用户登录状态的断定。在这个例子中,用户拜访login_get来显示登录页面,并调用login_post页面来提交登录信息。在login_post页面中断定用户登录信息是否非法,并将登录账号保留在session中。用户拜访其余须要登录验证的页面(例如:index页面)前首先执行拦截器:handler.BeforeExec。在拦截器中获取用户账号,若没有获取到用户账号,则跳转到登录页面:login_get。应用拦截器来进行用户登录状态的查看的有点是,不必在每个处理器函数中都蕴含用户登录状态的查看逻辑。只有将登录逻辑独立进去,并实现为before_exec拦截器即可。以下时main函数的次要内容: main函数package mainimport ( "demo/handler" "github.com/haming123/wego" log "github.com/haming123/wego/dlog")func main() { web, err := wego.InitWeb() if err != nil { log.Error(err) return } wego.SetDebugLogLevel(wego.LOG_DEBUG) web.Config.SessionParam.SessionOn = true web.Config.SessionParam.HashKey = "demohash" web.BeforExec(handler.BeforeExec) web.GET("/login_get", handler.HandlerLoginGet).SkipHook() web.POST("/login_post", handler.HandlerLoginPost).SkipHook() web.GET("/index", handler.HandlerIndex) err = web.Run("0.0.0.0:8080") if err != nil { log.Error(err) }}阐明: 本例子中应用基于cookie的session数据存储引擎,用于存储用户登录账号。调用web.BeforExec(handler.BeforeExec)来设置拦截器,在handler.BeforeExec拦截器中实现了登录状态的查看逻辑。因为login_get页面、login_post页面不须要进行登录测验,应用SkipHook()来疏忽拦截器。登录逻辑用户拜访须要进行登录验证的页面时,首先会查看session的登录账号,若没有登录账号,则跳转到登录页面:login_get, 登录页面的处理器实现如下: func HandlerLoginGet(c *wego.WebContext) { c.WriteHTML(http.StatusOK, "./view/login.html", nil)}login.html的内容如下: <!doctype html><html><head> <meta charset="UTF-8"> <title>登录页面</title></head><body><h2>用户登陆</h2><form action="/login_post" method="post"> <div>用户账号:</div> <div> <input type="text" name="account" placeholder="请输出用户账号" /> </div> <br /> <div>登录明码:</div> <div> <input type="password" name="password" placeholder="请输出登录明码"/> </div> <br /> <div> <input type="submit" value="立刻登录" /> </div></form></body></html>用户点击"立刻登录"后项服务器发送post申请到login_post, login_post处理器的实现如下: ...

July 15, 2022 · 1 min · jiezi

关于web:WEB前端线上系统课2022最新coderwhy

download:WEB前端线上零碎课2022最新coderwhy想到多线程并发就心虚?先来巩固下这些线程基础学识吧!计算机系统里每个过程(Process)都代表着一个运行着的程序,过程是对运行时程序的封装,零碎进行资源调度和调配的基本单位。一个过程下可能有很多个线程,线程是过程的子工作,是CPU调度和分派的基本单位,用于保障程序的实时性,实现过程外部的并发,线程同时也是操作系统可辨认的最小执行和调度单位。在 Java 里线程是程序执行的载体,咱们写的代码就是由线程运行的。有的时候为了减少程序的执行效率,咱们不得不使用多线程进行编程,诚然多线程能最大化程序利用 CPU 的效率,但也是程序事变多发、程序员脱发的最大诱因。次要是平时咱们的思维默认是单线程的,写多线程的时候得可能切换一下才行,这就申请咱们对线程的基础学识了解的比较透彻。 Java 中的线程到目前为止,咱们写的所有 Java 程序代码都是在由JVM给创建的 Main Thread 中单线程里执行的。Java 线程就像一个虚构 CPU,可能在运行的 Java 应用程序中执行 Java 代码。当一个 Java 应用程序启动时,它的入口方法 main() 方法由主线程执行。主线程(Main Thread)是一个由 Java 虚拟机创建的运行你的应用程序的非凡线程。因为 Java 里所有皆对象,所以线程也是用对象示意的,线程是类 java.lang.Thread 类或者其子类的实例。在 Java 应用程序外部, 咱们可能通过 Thread 实例创建和启动更多线程,这些线程可能与主线程并行执行应用程序的代码。创建和启动线程在 Java 中创建一个线程,就是创建一个 Thread 类的实例 Thread thread = new Thread(); 启动线程就是调用线程对象的 start() 方法 thread.start(); 当然,这个例子没有指定线程要执行的代码,所以线程将在启动后立即停止。指定线程要执行的代码有两种方法可能给线程指定要执行的代码。 第一种是,创建 Thread 的子类,覆盖父类的 run() 方法,在run() 方法中指定线程要执行的代码。第二种是,将实现 Runnable (java.lang.Runnable) 的对象传送给 Thread 构造方法,创建Thread 实例。 其实,还有第三种用法,不过细究下来可归类到第二种的非凡使用形式,上面咱们看看这三种的用法和区别。通过 Thread 子类指定要执行的代码通过继承 Thread 类创建线程的步骤: 定义 Thread 类的子类,并覆盖该类的 run() 方法。run() 方法的方法体就代表了线程要实现的工作,因此把 run 方法称为执行体。创建 Thread 子类的实例,即创建了线程对象。调用线程对象的 start 方法来启动该线程。 ...

July 10, 2022 · 3 min · jiezi

关于web:web-跨域请求安全问题

说起前端平安问题,大部分都听过 XSS 和 CSRF 这两个名词,前端面试中咱们也常常会问这两个点作为 web 平安的一些根底考查。但大部分只是从浅谈辄止,停留在根本词义,很少有人真正去被动实际过平安,并且思考背地的关联。 前端平安次要起源两个方面,一个是不平安的脚本、另一个是不平安的申请,前者代表各种 XSS 等注入脚本的伎俩、后者则发动非法的申请,CSRF 是代表。 web 平安基石——同源策略这篇文章次要想剖析下以跨域为代表的平安攻打和爱护。很多人晓得同源策略SOP,它是 web 的平安基石。因为浏览器是 http 无状态的连贯,所以对于不同源头的区别至关重要,简而言之:协定、域名、端口三者雷同,浏览器则认定它为同源,在同一源下,诸如、cookie\html5贮存等资源是能够共享的。 有了同源策略作为保障,为什么会呈现其余源的非法申请呢? 这里就是很多人容易混同的中央。同源策略的外围是爱护属于某个源的资源不被其余源读取,它们彼此独立,这个设计的初衷并非为避免非法申请而存在,也就是说同源不等于非法申请,它也不关怀申请是否非法。简略的定义为“可写不可读”。 那么问题来了,为什么咱们在跨域申请的时候会被浏览器会有报错呢?(前面有解释) 上图是申请是被 CORS 规定阻止的谬误提醒。 跨域共享策略同源策略是爱护对立源资源部被窃取,但事实是,咱们很多场景,须要在不同源之间共享,跨源资源共享(CORS)既是针对如何非法的冲破 SOP。在造成官网协定前,已经有各自非官方的伎俩来冲破不同源之间共享资源,比方 JSOP 。CORS 是一种官网的协定用来在不同源间接共享资源,所以它目标也不是为了平安,某种程度,正因为不合理的应用,反而不平安,比方应用这样的协定: Access-Control-Allow-Origin: *容许所有源共享资源,无疑是向入侵者敞开大门。 所以、SOP 和 CORS 是资源隔离和共享的相同方向。 CSRF 的实质之所以强调这一点,是要通知开发者,浏览器所做的只不过是实现相干根底协定,不要试图误会这两个协定会爱护你的利用,利用的平安应该由你本人掌控。 回到 CSRF 的场景,攻击者在另一个非法的源对你的源发动申请,骗过服务器。为什么服务器会置信一个非法的源呢,或者说服务器如何保障这个源是非法的。早在一份统计中,至多百分之的网站 30% 有 CSRF 破绽,很多开发者对 CSRF 意识不够粗浅。因为 http 是无状态的,前后端会话的维持和用户身份校验大部分是基于 cookie。cookie 的数据默认会受到 SOP 策略的爱护——既不同源之间是无奈共享的。然而,浏览器并不保障每次申请中,cookie 是否在同一源,这就是 CSRF 中招的本源。 也就是说,在不同的源下申请雷同的接口,cookie 会携带过来,如果只是依赖 cookie 中的 token 登录态去校验用户身份, 那么齐全是不够平安的。假如用户在 A 站点登录了个人账户,这个站点基于cookie 保护的会话,同时没有做任何 scrf 爱护,接下来,它收到一份两头邮件,点击关上一个钓鱼网页,这个网页就能像 A 站点发送任何携带登录态的数据,任意批改这个用户 在 A 站点的数据。 ...

July 3, 2022 · 2 min · jiezi

关于web:如何在-2022-年为-Web-应用程序选择技术堆栈

抉择最佳的 Web 应用程序堆栈并非易事:它必须在资源和品质方面达到最佳。Web 利用程序开发所需的品质、老本和工夫将取决于您的抉择。 这就是为什么抉择技术堆栈可能须要比您预期更多的工夫。 在本文中,我将帮忙您抉择最无效的 Web 开发技术栈。 我将解释哪些技术可供选择,它们的长处和毛病,并告知您哪些技术适宜不同的我的项目。我还将就如何抉择正确的技术堆栈提供有价值的倡议。 什么是技术堆栈?术语“技术堆栈”是指编程语言、软件和一系列用于开发应用程序的框架的简单组合。应该在 Web 开发过程的布局阶段抉择它。 任何 Web 应用程序的架构都蕴含两个方面:客户端(前端)和服务器端(后端)。客户端是用户能够在其显示器上看到的可视化数据。它包含以下组件: 编程语言,负责 Web 应用程序的交互局部,在浏览器中显示网站内容的文档标记语言,用于形容文档示意的样式表语言,用户界面框架。服务器端对用户不可见。它为客户端提供数据。服务端的开发波及到以下技术的应用: 数据库,后端编程语言,构架,Web 服务器(也能够抉择无服务器架构),云基础设施和服务。那么,如何从所有可用选项中明智地抉择呢? 为 Web 开发抉择技术堆栈时要思考的事项正如我在介绍中解释的那样,抉择技术堆栈对于您正在从事的我的项目至关重要。所需的工夫和老本,以及最终产品的整体品质,都间接受到您的抉择的影响。要明智地抉择,请思考以下倡议。 抉择相熟的技术假如您想创立一个只有几个性能的简略 Web 应用程序。如果您应用一种新的但齐全不相熟的技术,您将不可避免地节约太多工夫来修复谬误和解决小问题——如果您应用更简略、更相熟的技术,您就不会遇到这些问题。 简而言之,在这种状况下,一个简略易懂的工作变成了一场噩梦,你对本人的我的项目不再有信念。 所以,如果你的软件工程师善于 PHP 开发,那么应用 Node.js 是没有意义的。只管你不应该应用过期的技术——因为它们可能会导致性能降落和技术支持问题——你依然应该抉择你的开发团队从内到外都晓得的技术,特地是如果你想尽快启动你的 web 应用程序。 追随趋势 如果你在估算方面不受限制并且能够从 Web 开发公司延聘任何团队,那么你简直能够抉择任何技术堆栈。 技术趋势在一直变动。顶级语言每 5-7 年更换一次,框架每 2-3 年更换一次。抉择古代 Web 开发堆栈是一个很好的策略,因为它将帮忙您防止未来呈现许多问题。依据Statista的数据,2021 年最罕用的编程语言是 JavaScript(64%)、HTML/CSS(56%)和 Python(48%)。 确保您抉择的技术失去在软件开发畛域领有惊人职业生涯的大型开发人员社区的反对是一件坏事。这样,如果遇到困难,您将很快找到专家来帮忙您解决问题。 总的来说,您应该信赖您的开发人员。向他们询问可能适宜开发 Web 应用程序的技术的优缺点。专家的技术特长将有助于将将来的危险降至最低。 思考我的项目的细节思考到您的 Web 应用程序的大小和用处,抉择一个技术堆栈。例如,对于小型单页网站,Node.js和React.js堆栈将实现这项工作。中等规模的 Web 应用程序(例如购物网站)须要更简单的技术堆栈、多个级别的编程语言和多个框架。 对于大型项目,您将须要一个可能解决大量数据并放弃 Web 应用程序性能所需程度的堆栈。 此外,请记住您的应用程序的演变。您的网络应用程序未来必定须要技术支持和更新。因而,在抉择技术堆栈时,请思考您对应用程序将来开发的打算:兴许您想让它在其余设施上可用?或者想增加一些额定的性能? 确保高安全级别用户个人资料的平安是重中之重。如果您的服务包含在线领取零碎,您应该更喜爱在造成堆栈时提供最大安全性和网络攻击不可拜访性的技术。 记住你的最初期限如果您的我的项目有严格的截止日期,那么采纳现成的技术堆栈解决方案将是一个理智的决定。这将缩小整个 Web 应用程序的开发工夫。 LAMP、MERN 和 MEAN 是最受欢迎的型号。它们将实用于各种大中型 Web 应用程序。然而,这并不意味着它们必定实用于任何我的项目——您的集体我的项目可能须要更具创造性的办法。 ...

June 25, 2022 · 1 min · jiezi

关于web:大型-web-应用公共组件架构思考

腾讯文档公共组件历史包袱1. 架构问题——开发层面腾讯文档治理的公共组件, 设计之初,采纳了各种便于疾速迭代的设计形式,组件代码构造和标准也不足对立,在长期的开发过程中品质没有失去保障。随着需要一直累积,目前存在比拟大的历史包袱。大量组件盘根错节,互相辑合严密,而导致不论如许小的改变都须要数天的恶战能力完,对于开发新性能和修复缺点的同时时,都异样苦楚。次要存在的问题是以下几点。 1.1 难以预料第三方公共组件导致的卡顿腾讯文档治理的公共组件(以下称FC)次要通过 script-loader 动静加载承载了各个页面的公共业务逻辑,而后将脚本注入到品类的 HTML 中,比方登陆、分享,权限等。这些逻辑都是同一个线程中执行的。 第三方组件是由不同团队和开发人员在保护着,往往有着不可管制的预期,品类方难以保障引入某一个组件的性能是否正当,从而容易导致品类编辑产生卡顿,及性能数据降落。 目前在 excel 中是在调用公共组件的工夫会进行卡顿监控,从而让通过组件不影响详情页的卡顿数据。然而,这无奈从根本上扭转用户主过程卡顿的体验问题。 // 以下伪代码async loadModule(name){ // 卡顿监控进行 jank.stopReport(); await dosomeThingToLoadModule(name); jank.restartReport();}【案例】 关上权限组件 cpu 暴涨,表格卡顿。 1.2 script-loader 加载模式链路十分长,公共组价加载异样提早。 首先须要加载 assets.json 依赖映射文件,而后再异步加载须要性能的 js 代码,最初再初始化组件,向后盾申请组件所需数据,进行渲染,最终能力残缺展现。这是一个十分长的链路,导致用户应用体验相干性能十分耗时。 1.3 公布没有版本控制。“一次更新,多端降级” 原本是 FC 设计之初的一种思考,但在与日俱增的迭代中,咱们积攒了有数 bug,每一次惯例公布之夜都随同着惊恐与噩梦。因为模块A 公布修复了某个 ppt 的 bug,带了某个 word 的新 bug; 因为某一个版本的降级,带来全品类性能的解体。不足版本控制的结果就是,为了节俭半个小时的包降级工夫,带来了大量调用品类方之间的缺点连锁反应。咱们的设计指标除了尽可能保障公布效率,公布的品质和稳定性也是十分重要的。 1.4 组件调用模式不标准和对立 // 以下伪代码 // 业务A const someModule = await loadModule('someModule'); someModule.init({ xxx: 'yyyy', zzz: 'hello', from: 'xxx' }) // 以下伪代码// 业务B const someModule = await loadModule('someModule'); someModule.init({ bbb: 'yyyy', ccc: 'hello' })公共组件没有对立的入参标准。每次开发的步骤是,在品类 A 曾经提前接入前提某组件下,品类 B、C间接复制黏贴过来,而后完事。由此带来的问题是:咱们发现大量因为品类间接差异性导致的公共组件 bug 。 ...

June 15, 2022 · 2 min · jiezi

关于web:初探-vscode-一

为什么要钻研 vscodevscode 是一款优良的开源编辑器,从代码复杂度和架构层面,无疑是 web 前端畛域最值得学习和钻研的指标之一。通过开源代码,咱们能够看到,如何组织超过百万行的代码量,保障开发效率和可扩展性。 先简略介绍下这个团队的背景,vscode 的总负责人兼设计师 Erich Gamma, 是《设计模式:可服用面向对象软件根底》的四人帮之一,这本书也奠定了目前咱们看到的各种设计模式的实践根底。此外、Erich Gamma还参加设计了 Eclipse,同时开发了 Java 界最驰名的单元测试框架 Junit。除了负责人外,其余核心成员在 IBM 一起过来的,有着丰盛的编辑器教训,平均年龄大于40,而新退出的成员,大部分是开源社区出名插件高手,比方Gitlengs、Vetur 作者等。 咱们有理由置信可能从 vscode 源码中获得丰盛的宝藏。 多过程架构为进行跨平台兼容 mac/linux/window,vscode 采纳 electorn + web 的技术。从性能角度登程、传统简单的跨平台客户端,要么是基于 C++ 自研 UI 框架、要么是是基于 C++ Qt框架。vscode 为什么要抉择 web 技术实现整个编辑器,我只能从以下几个角度进行揣测: Erich 最早到微软的首要任务是设计出一款基于浏览器的在线 Monco Editor, 以便能够不便的集成在 Azure DevOps 等微软其余外部产品,而 Monco 自身设计足够优良,基于它进行扩大成更简单的编辑器,能够连续原有教训。 另外一方面,云编辑器是一个趋势,采纳 web 架构,能够更好的适应将来的这种云端化(近程 vscode 真的很香)。 多过程+多线程vscode 客户端的主过程是基于 electorn 的宿主环境、搜寻模块是 从主过程中创立的node 子过程。整个编辑器视图跑在 electron 提供的 render 过程,渲染层相当于浏览器的 webview。 家喻户晓,vscode 最为弱小最早的是它基于 web 的插件生态。事实上,通过插件扩大编辑器是很常见的做法,已经风行的开源 ide eclipse ,也是依附弱小的插件体系而闻名,但 eclipse 最重大的问题之一就是大量第三方插件让 ide 自身变得臃肿不堪。同样 github 官网基于 electron 开发 atom 编辑器,在插件架构下具备弱小的自定义能力,插件开发者甚至能够自在批改页面弹出任意内容,但插件卡顿问题始终被大量用户诟病。 ...

June 12, 2022 · 2 min · jiezi

关于web:开课吧WEB全栈架构师进阶指南30期

download:开课吧-WEB全栈架构师进阶指南(30期)大道至简,一个注解实现数据库配置明天来试试使用一个注解实现数据库配置.最终成果: 开始SpringBoot这个框架还是挺厉害的,或者有些人认为SpringBoot不算一个框架,它只是Spring的增强工具.当然Spring对于Java而言有着不可动摇的地位.就像我之前说的: 天不生Spring,Java万古如长夜. 可是SpringBoot的重要性也不能熟视无睹.明天就基于SpringBoot来实现使用一个注解来实现数据库配置.EnableXXX在SpringBoot中,可能自定义这样一个注解@EnableXXX,就是启用某种功能.在@EnableXXX这个注解上使用@Import这个注解,就可能把配置类,或者什么其余需要Spring治理的货色,注入到Spring容器.就像上面这样,在启动类上使用这个注解, MybatisExtraConfig.class这个类就会注入到Spring容器中.相当于这个类就由Spring帮你治理了,你可能在这个类里使用@Autowired,或者获取容器等,而且MybatisExtraConfig这个类上不需要使用@Component等注解.@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Import(MybatisExtraConfig.class)public @interface EnableMpExtra {}复制代码其实不使用@EnableXXX也可能.在resources目录下新建一个文件夹META-INF,而后再新建一个文件spring.factories,而后在spring.factories中设置org.springframework.boot.autoconfigure.EnableAutoConfiguration=等于你的配置类.这样不使用注解,在包被引入的时候,就会主动加载配置类.动静抉择数据库 ImportSelector咱们也可能在@EnableXXX注解里加一些值,在启动类上使用的时候,设置这些值,最终咱们取到这些值.这些值就是连接数据库的各种参数,要获取这些值,就少不了ImportSelector.最初注解是这样的@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Import(DBSelector.class)public @interface EnableDbStarter { DbType type() default DbType.MySQL;String url() default "localhost";String port() default "3306";String dbName();String username() default "root";String password();String basePackage();}复制代码DBSelectorpublic class DBSelector implements ImportSelector { public static String url;public static String port;public static String dbName;public static String username;public static String password;public static String basePackage;@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) { AnnotationAttributes attributes = AnnotationAttributes.fromMap(importingClassMetadata.getAnnotationAttributes(EnableDbStarter.class.getName())); DbType type = attributes.getEnum("type"); url = attributes.getString("url"); port = attributes.getString("port"); dbName = attributes.getString("dbName"); username = attributes.getString("username"); password = attributes.getString("password"); basePackage = attributes.getString("basePackage"); switch (type) { case Oracle: return new String[]{OracleConfig.class.getName()}; case MariaDB: return new String[]{MariaDBConfig.class.getName()}; case SqlServer: return new String[]{SqlServerConfig.class.getName()}; case PostgreSQL: return new String[]{PostgreSQLConfig.class.getName()}; case MySQL: default: return new String[]{MySqlConfig.class.getName()}; }}}复制代码这个可能根据枚举值,来抉择对应的数据库配置.因为其余数据库临时不需要,就只写了一个MySQL的.枚举类public enum DbType { ...

June 10, 2022 · 2 min · jiezi

关于web:BUIDLCON2022Web3-开发者峰会线上报名火热开启

随着区块链技术的成熟落地以及翻新开发团队的涌现,行业开始催生出了新一代互联网技术 —— 去年以来,随同元宇宙后火起来的 Web3 热度一度风靡寰球,且被看作是是互联网的将来。 Web3 作为人们对下一代互联网的设想,在过来十多年里,互联网畛域曾呈现过多个对于 Web3.0 的提法。前有万维网发明者 Tim Berners-Lee, 后有以太坊联结创始人Gavin Wood ,但他们两者所探讨的 Web3 却已不是同一个概念。 眼下市场上所探讨的 Web3,即运行在区块链技术之上的去中心化互联网。相比 Web1 和 Web2 ,Web3 更多的不是仅仅一种技术上的变革,而是以对立的通信协定,通过更加简洁的形式为用户提供更为个性化的互联网信息资讯定制的一种技术整合。 特地是近年来随着区块链、数字货币、元宇宙等新技术的爆火,Web3 也引来了寰球科技巨头如微软、软银、红杉资本及国内大厂阿里、腾讯的纷纷布局,市场规模前景大有可观。 作为比拟热门的 Web3 我的项目,备受关注的 RSS3 堪称是 Web3 的信息流传架构,通过将用户的数据贮存在去中心化的网络上的形式,将信息的所有权与控制权交还给了用户。目前,RSS3 曾经倒退的颇具规模,在被业内人士看好的同时还被评估为“曾经实现了 Web3 的雏形”。 为了进一步摸索 Web3将来互联网的倒退、打造全新互联网世界,近日主办方 RSS3 正式发表备受期待的「BUIDLCON2022」“Web3 开发者峰会”行将通过线上的形式举办。 目前,该「BUIDLCON2022」“Web3 开发者峰会”的线上报名通道已正式开启,6 月 9 日 20:00 — 6 月 13 日 20:00,欢送所有宽广开源社区、开源我的项目及学术界、互联网畛域的开发者积极参与。 报名截止日期:6 月 9 日 20:00 — 6 月 13 日 20:00进入报名通道:https://segmentfault.com/e/11...主 办 方:RSS3

June 9, 2022 · 1 min · jiezi

关于web:vscodeDI-依赖注入实现原理

前言上次咱们解释了 vscode 这种大型项目设计依赖注入治理海量的模块有什么益处。也提到了 DI 必须有这样一种机制: 1、模块与模块之间的无源码依赖(这里的模块次要指类) 2、只依赖接口/形象,不依赖具体实现 3、模块的创立,循环援用、谬误等能够主动被捕捉到 那么这样的一种机制如何实现呢? 咱们先展现一下 vscode 源码的经典片段 // mian.ts//独立的 app 初始化阶段的文件中let collection = new ServiceCollection();let service = new InstantiationService(collection);collection.set(IService1, new Service1());// IService1.ts// 独立的接口文件let IService1 = createDecorator<IService1>("service1");interface IService1 { readonly _serviceBrand: undefined; c: number;}// Service1.ts// Service1 是对 IService1 接口的具体实现class Service1 implements IService1 { declare readonly _serviceBrand: undefined; c = 1;}// Service1Consumer.ts// 依赖 IService1 接口的模块class Service1Consumer { constructor(@IService1 service1: IService1) { assert.ok(service1); assert.equal(service1.c, 1); }}装璜器从下面咱们能够看到 Service1Consumer 模块 对 IService1 接口有依赖,通过 @IService1[第一个] 装璜器润饰 service1 ,参数类型也叫 IService1[第二个]。这里的两个 IService1 是同名,但性能不一样的标识,能够设想为函数重载(实际上一个是函数,一个是接口)。为什么要把装璜器和接口名定义成一样的,这里是 vscode 的特地设计,上面再讲。 ...

May 14, 2022 · 4 min · jiezi

关于web:开发者大调查区块链新手超-40-认为-Web3-是互联网的未来9-认为这是骗局

1998 年,万维网发明者 Tim Berners-Lee 首次提出了 Web3 的概念。时至今日,Web3 已被从新定义 —— 即运行在区块链技术之上的去中心化互联网。去年以来,Web3 的热度一度风靡寰球,甚至被业内人看做是“互联网的将来”。 近日,StackOverFlow 网站就面向社区开发者做了一项对于“Web3、区块链、加密”相干话题的考察,想理解以上概念是时尚、炒作还是真正的互联网将来。 在承受考察的 595 名开发者中,相当一部分人不晓得这是啥:36%的人答复“what's Web3?”在晓得的人里,25% 的人认为 Web3 是互联网的将来,15% 的人认为它是炒作,14% 的人认为它对加密和相干应用程序很重要,9% 的人认为这些都是骗局。 区块链体验建设在工作之外:85% 开发者没有应用区块链进行开发 因为 Web3 是一种“运行在区块链技术之上的去中心化互联网”,因而想要理解 Web3 相干数据,就得先理解区块链从业者。 据调查显示,目前有绝大多数(85%)开发者没有应用区块链进行开发,甚至或多或少没有应用过区块链。在这些人中,咱们看到大部分区块链开发都是作为一个辅助我的项目或喜好进行的。 而在工作中应用区块链开发的人里,有 31% 的人最有可能为软件公司工作(72%),超过一半(55%)的人也将其作为辅助我的项目或业余爱好。这种业余爱好的编码仿佛也有用,因为咱们看到 60% 的人在工作中开发的区块链利用都投入了生产。 区块链老手:超 40% 的人认为 Web3 可能是将来 考察显示,对于那些晓得 Web3 是什么但没有区块链教训的开发者而言,40% 的人认为 Web3 可能是将来,25% 认为它只是炒作,20% 认为它对加密很重要,15% 认为这都是骗局。 而那些领有区块链教训的人里,也有相似的感触——41% 认为这是将来,29% 认为这对加密很重要,19% 认为这都是炒作,10% 则认为这是骗局。 除了区块链老手置信之外,考察中还发现 20-30% 的区块链相干问题由新的堆栈溢出用户提出。因为对区块链的趣味,这些新用户可能正处于编码生涯的晚期阶段。对于初学者来说,与两种最常见的编程语言(JavaScript 和 Python)相干的大部分区块链问题也反对了这一点。 区块链相干热词:JavaScript 持续占据主导地位通过对区块链标签中最常见的非区块链标签进行钻研,考察发现在堆栈溢出时,最多能够有五个不同的标记。 其中,JavaScript 和 Python 持续排在“区块链相干问题上应用了哪些非区块链标签”这项考察的榜首,这也并不奇怪,因为它们多年来始终是最常见的编程语言之一(JavaScript 已间断九年位居榜首,Python 则在 2021 刚刚占据第三位)。 ...

May 11, 2022 · 1 min · jiezi

关于web:火山引擎推出基于全新视角的-Web-端性能监控方案

背景“异样感知——发现根因——解决问题”,基于该理念,火山引擎APM团队设计了高可用易扩大的SDK和生产平台,造成了一种面向Web监控的解决方案,该计划严密关联了各个性能,足以撑持简单场景下的性能、异样数据生产和剖析的需要。目前,字节外部已有超过3000+个我的项目接入,在进行一直迭代、打磨后,决定把它交融入火山引擎全链路监控,为宽广内部的利用开发者提供服务。重点性能介绍平台通过灵便上报不同类型的谬误、性能、操作、自定义数据,联合多维分析和日志链路,帮忙开发者对于Web端实在数据进行报警归因、聚类分析、细节定位,解决用户白屏、性能瓶颈、慢查问等关键问题。下图从用户的角度,形容了发现问题、剖析问题、解决问题、成果确认的整个流程。其中,JS谬误监控、申请监控、动态资源监控等前端监控的外围性能均在以后平台涵盖,相干应用流程能够到文档站(https://www.volcengine.com/do...)查看。本文会对以后解决方案的重点性能白屏监控、性能监控以及数据摸索做具体介绍。 白屏监控白屏往往是因为代码执行谬误或者资源加载失败,导致页面渲染失败。一旦产生了白屏,页面就处于不可交互的状态,妨碍了用户应用,导致了用户散失。业界现有的检测方法是单纯基于dom的检测,办法繁多、通用性较差,不足业界认可的检测算法,并且无奈针对白屏进行归因,无奈为白屏提供无效的修复疏导。对此,火山引擎利用性能监控全链路版Web Pro监控采纳不断完善的打分策略、回测工作、即时截图保障了白屏检测的高准确性,使用户可能及时发现页面的白屏状态,并提供可归因剖析的相干数据,无效帮忙业务定位问题。首先,应用白屏列表查看趋势以及条目,如下图所示:其次,点击跳转到数据摸索,依据链路日志定位问题,比方下图定位到是js谬误导致了白屏,进而能够依据反解,定位到出错的代码行。点开Session标签页,能够很具体地看到以后session的日志流,找到对应的JS谬误和白屏,依据上下文进一步还原现场。性能监控SDK侧,Web Pro监控采集了十分全面的性能指标,蕴含了fp、fcp、fmp、tti、navigation timing 等惯例性能指标,也有lcp、fid、mpfid、cls等最能代表用户体验的指标,此外,页面产生的longtask也会进行上报,更多具体阐明能够查看该文档链接以及同级链接https://www.volcengine.com/do...。平台侧,Web Pro监控提供了页面性能总览和页面维度的性能指标,配合参考线,可能直观地展现所有性能指标在该时间段内的达标水平,而后针对于异样指标,进入数据摸索页面进一步剖析。具体步骤如下:进入「我的项目设置」页面依据业务场景对于性能指标参考线进行设置。性能参考线默认值参考了web.dev(https://web.dev/user-centric-...),例如LCP的参考值为2000ms以内优良,4000ms以上为较差,使用者能够在设置里依据理论需要调整参考值,比方下图把3500ms以上定义为较差。同时,平台给出了默认打分的配置,也能够依据理论须要来更改打分的比重。接下来,进入「站点性能总览」能够查看以fcp均值作为排序指标筛选出的最差的5个页面,从表格中可能看到页面性能评分等性能指标。在同一页面中,也展现了优化top5页面以及劣化top5页面, 点击指定pid后,可跳转至对应的性能指标和趋势,进行查看。此时,能够发现LCP的值超过了之前设置的3500ms警戒线,须要对其进一步剖析。点击LCP题目,能够带上相干上下文,跳转至「数据摸索」。进入数据摸索页后,主动筛选出了以后LCP > 3500ms的日志,能够查看优化倡议文档https://zjsms.com/FRDMgec/ ,联合指定日志的瀑布图进行针对性优化,具体能够参考下文数据摸索中对于页面加载的剖析。同理,其余性能指标也可依照上述的形式进行逐个优化。数据摸索目前大部分的监控工具,都提供了相似 Feed 流布局的日志细查能力,但这类工具存在以下缺点: 状态难以放弃;数据起源太过扩散,归因能力差,定位速度慢;仅展现原始上报,无奈进一步展示更多信息。为了解决这些问题,火山引擎Web Pro监控推出了弱小的数据摸索能力,该页面可能同时满足日志细查、多维分析、用户行为重建等性能,通过它来承载从宏观视角到宏观视角的转换。例如,白屏监控、JS谬误监控、申请监控等页面展现的聚合数据,都能带上以后的上下文信息跳转到数据摸索页面,下钻到具体日志。定位到某一条日志后,能够通过如下形式进行摸索剖析:(1)按时序查问用户在某一次会话的全副上报信息,如下图所示。 在数据摸索的 Session 事件中,将用户的一次站点拜访中的所有事件聚合按时序展现;通过关键字或事件类型进行过滤,能够疾速找到用户关怀的事件;点击列表中具体事件,能够间接查看该事件的详情页面。(2)深入分析影响页面加载的具体资源、申请、longtask或用户行为,并针对性优化。 View 标签页里的每一条日志,将产生在该次页面拜访下的动态资源,申请,longtask等信息聚合成时序瀑布,联合 RUM、navigation 指标线,帮助用户进一步判断影响以后指标的因素。同时,针对时序中体现异样的事件,点击具体事件名进入其详情,具体观测其 timing、申请等相干信息。高性能易扩大的SDK多样的生命周期监控SDK内置了丰盛的生命周期,提供了11个生命周期钩子函数,笼罩了从初始化到销毁的全过程。每个实例都会经验初始化(init)、配置上报参数(config,可选)、开启上报(start)、收集数据(report)、包装数据(build)、发送数据(send)、销毁实例(destroy)的过程。在这个过程中会运行这些生命周期钩子的函数,用户能够利用这些生命周期实现上报拦挡、补充自定义上下文等等一系列能力。多实例反对监控SDK外部没有依赖任何全局变量,同一个页面能够引入多个监控实例互不抵触。在微前端场景下,不同子利用能够别离引入监控实例并初始化。同样的,其余SDK也能够引入监控SDK以监听异样和使用量而不必放心影响业务自身的监控。插件化SDK外部的所有监控能力齐全是一个个插件,反对可拔插、按需打包,且反对自定义插件。更多对于自定义插件的具体阐明可参考文档(https://www.volcengine.com/do...)灵便的采样采样规定重构,反对所有上报字段的采样、各种操作符的过滤以及采样条件的与和或。新增全局信息 提供release概念,买通研发流程,为平台提供版本间优劣化数据比拟,谬误主动调配解决人等提供根底纬度提供env以配置不同环境, 平台反对不同环境数据隔离生产,防止线下/测试数据影响线上稳定性监控提供viewid等标识,更好形容和串联一次页面生命周期的各类上报数据,为性能优化等排查提供根据SDK本身性能优化SDK在性能上也进行了大量性能优化,通过比照测试,SDK对页面性能的影响曾经微不足道。目前字节外部绝大部分前端我的项目曾经接入了新版SDK,没有任何性能异样相干的反馈。总结面向Web监控的全新解决方案带来了更加优雅、轻便、高性能的SDK,更加贴近用户需要的生产平台,同时将来还会减少更多实用的新个性,比方白屏主动归因、React谬误生产、action的上报及相干链路生产等等,欢送体验并继续关注咱们的更新。

May 7, 2022 · 1 min · jiezi

关于web:Tech-Talk-宣传-如何高效极简构造无服务器-Web-应用

无服务器计算服务的诞生让开发者能够疾速结构低成本、高可用、主动扩大的应用程序。说到无服务器服务,由亚马逊云科技推出的 Amazon Lambda 你肯定不生疏。 随着云计算的倒退,Amazon Lambda 也在一直迭代。新性能 Lambda Function URLs 提供 Lambda 内置的 HTTPS Endpoint,开发者无需学习额定的服务,就能够疾速上手开发 Serverless Web 利用。新工具 Lambda Adapter 可能使开发者在 Lambda 上运行任意 Web Framework 开发的 Web 利用,不仅无需学习新的开发模式,应用相熟的工具就能进行开发调试,而且无需批改可间接部署到 Lambda 上。 Lambda Adapter 配合 Lambda Function URLs,可轻松结构 Serverless Web 利用。 那么,该如何利用最新公布的 Lambda Function URLs 和 Lambda Adapter 结构无服务器 Web 利用,进一步简化无服务器 Web 利用的开发和调试,并且实现 Web 利用在 Lambda,Fargate 和 EC2 等计算平台之间平滑迁徙? 5 月 11 日,20:00,亚马逊云科技将举办《 如何高效、极简结构无服务器 Web 利用》为主题的 Tech Talk,并邀请亚马逊云科技资深无服务器技术专家孙华作为嘉宾带来分享。 本期主题如何高效、极简结构无服务器 Web 利用 ...

May 5, 2022 · 1 min · jiezi

关于web:融云实践实时音频混音在-Web-端的探索与实践

互联网扭转世界,以社交为地基。关注【融云寰球互联网通信云】理解更多 在社交中,分享欲是维持关系和感情的重要规范,无论是熟人社交、婚恋交友还是趣味社群。 分享欲体现在语聊房、连麦直播等具体社交场景中,不仅是维系关系的形式,还带有更多陪伴的情绪价值。比方,语聊房中一起听一首最爱的歌,敌人连麦一起看一场独特期待的电影。 为了给用户提供基于分享的优质互动体验,就须要利用实时音频混音技术了。本文将从技术原理、技术计划、接口设计等方面分享融云实时音视频 Web 端 SDK 在混音技术方面的摸索实际。 Web 端音频分享实现计划对于反对公布本地或线上音视频资源的 Web 端 SDK 来说,最简略地实现在利用中分享音频的形式是:同时公布麦克风资源和须要共享的音频资源,对方通过订阅麦克风音频和共享音频便可听到两个声音。 这种形式的外部门路如下:(双通道获取两路音频) 但“公布端公布两个音轨,订阅端订阅两个音轨”的实现计划显然不够优雅。 融云采纳的计划,是通过实时音频混音技术,把麦克风和共享音频混合成一个音轨进行公布。这样,订阅端仅需订阅一个音轨。流程如下:(实时音频混音) 混音后公布,不仅能够节俭带宽,还能够缩小订阅端的操作,更少操作,更优体验。 技术原理Web Audio API 中的所有操作都基于音频节点 AudioNode 进行。AudioNode 是解决音频模块的通用接口,音频节点类型蕴含:音源节点、音效节点、音频输入节点、音频剖析节点等。 每一个音频节点都有输出和输入,上一个音频节点输入解决完的音频,connect 连贯到下一个音频节点的输出,实现音频数据在音频节点间的流转。 不同的音频节点连贯在一起形成一个音频图 (Audio Graph),音频图内的节点操作须要依赖音频上下文 AudioContext,每一个音频节点只有一个音频上下文。 理论利用中,须要应用 AudioContext 创立各类型音频节点,从一个或多个音源节点开始,通过一个或多个音频解决节点(如一个过滤器节点 BiquadFilterNode,一个音量控制节点 GainNode),最终连贯到一个目的地(AudioContext.destination)。 AudioContext.destination 返回一个 Audio DestinationNode,是音频图中的最初一个节点,它负责把声音数据传输给扬声器或耳机。 如下是一个精简的音频图(Audio Graph):(单音轨 Audio Graph) 因为能够把多个音频源节点输入到同一个 AudioDestinationNode,也就意味着能够把麦克风音频和背景音乐连贯到同一个输入口播放,音频图(Audio Graph)就变成了上面这个样子:(双音轨 Audio Graph) 把两个不同的音频源连贯到同一个输入口,即可达到混音目标。 技术计划创立音源音频源能够来源于一段从本地或线上读取的音频数据 ArrayBuffer、一个 audio 标签或浏览器麦克风生成的 MediaStream。以利用 MediaStream 生成音频源为例,创立音源节点的办法如下:获取麦克风资源生成音源 // 创立一个音频上下文实例const audioContext = new AudioContext();// 浏览器生成一个蕴含音轨的 mediaStream 对象let mediaStream = null;navigator.mediaDevices.getUserMedia({audio: true}).then((ms) => { mediaStream = ms;});// 生成一个 mediaStream 音频源const micSourceNode = audioContext.createMediaStreamSource(mediaStream);本地播放背景音乐生成音源 ...

April 26, 2022 · 2 min · jiezi

关于web:登月工坊-Web3-Hackathon-报名正式开启

Moonshot Hackathon 简介“登月工坊”是一个由年轻人开办 为年轻人搭建的守业“沙盒”Moonshot Web3 Hackathon将于往年5.20 - 6.20举办,是一场面向海内外 Z 世代的Web 3-focused的守业试炼。咱们欢送任何阶段的我的项目申请。 Hackathon 将采纳线上模式,每周由 Web3 行业老兵、资深投资人主持Web3 Workshop、Group Office Hour,我的项目将最终在Apollo Day进行展现,50 余家中国、新加坡、美国的风投机构、Crypto Fund、生态基金、区块链媒体将参加最终 Demo Day。获胜的团队将有机会取得 VC 间接投资、流量曝光、以及晚期团队招聘的帮忙。 1 面向群体There's a first time for everything. Moonshot Web3 Hackathon面向所有对 Web3 感兴趣,有肯定技术实力和号召力,领有创造力、爱折腾的海内外 GenZ。 参加的搭档能够仅仅只有一个想法,可能在着手一个方向,可能曾经在守业试错过程中... 这都不重要,重要的是在参加的一个月中提出一个令人兴奋、具备可行性的计划,一直试错并搭建出一个不错的 MVP。 2 报名渠道任何感兴趣的创业者、投资人、Apollo Day 听众都能够扫描上面的二维码获取报名链接: ▲ 扫码获取报名表(预计 3 ~ 5 分钟实现报名) 链接:https://xsxo494365r.typeform.... 如果有任何问题,也欢送扫描并增加登月社区负责人: ▲ 扫码增加登月社区负责人 3 赛程安顿5.20Hackathon Kickoff5.20-6.20BUIDL MONTH6.20我的项目提交 DDL6.25Apollo Day赛程 Highlight**Highlight #1:闭门 Workshop在一个月的 Hackthon 过程中,咱们会在每周举办 Insight 满满的闭门 Workshop,从技术路线、品牌宣发、Web3的特点和守业教训为 GenZ builders 赋能。 ...

April 26, 2022 · 1 min · jiezi

关于web:WEB-PC-管理端打包详细教程

首先下载的源码,并导入开发工具解压后的代码包内容设置prod 环境api地址为java admin对应的域名,Vue代码没有install 的须要先intsall之后再打包。打包胜利后压缩源码并上传到admin域名下图中的admin和front是同一个站点 只有有admin域名拜访通即可,只是咱们多解析了一个域名。拜访WEB PC 治理端如果呈现默认图片加载不正确的,须要如下图设置,本地图片域名即可。刷新呈现404的问题须要设置伪动态,以下两种配置形式二选一 二选一 二选一 第一种配置形式 location / {if (!-e $request_filename){rewrite ^/(.*) /index.html last;break;}}第二种伪动态配置 location / {try_files $uri $uri/ /index.html;}以上步骤曾经将WEB PC 治理端部署胜利! WEB PC 治理端打包过程中如果呈现谬误等问题,论坛发问 Java零碎 - CRMEB社区 最初如果你感觉这篇文章对你有点用的话,麻烦请给咱们的开源我的项目点点star:https://gitee.com/ZhongBangKe...不胜感激 ! 收费获取源码地址:http://www.crmeb.com PHP学习手册:https://doc.crmeb.com 技术交换论坛:https://q.crmeb.com

April 24, 2022 · 1 min · jiezi

关于web:为什么Web端登录需要验证码

很多敌人们对于登录必然遇到的验证码这个事件很不了解,减少用户操作的冗余性,间接登录很不便,为什么web端登录要增加个验证码?直到上周,一家做业务平安的公司给出咱们当初Web网站的平安报告,我才意识到:验证码的本质属性安全性,除了避免歹意破解明码、刷票、羊毛党、论坛灌水、爬虫等行为外,还是用户与网站信息安全的无力保障。 上面是咱们技术人员给的从平安角度看,为什么Web登录须要验证码? 因为你的WEB站有时会碰到客户机歹意攻打。其中一种很常见的攻打伎俩就是身份坑骗,它通过在客户端脚本写入一些代码,而后利用其客户机在网站、论坛重复登陆,或者攻击者创立一个HTML窗体,其窗体如果蕴含了你注册窗体或发帖窗体等雷同的字段,而后利用"http-post"传输数据到服务器,服务器会执行相应的创立帐户,提交垃圾数据等操作。如果服务器自身不能无效验证并回绝此非法操作,它会很重大消耗其系统资源,升高网站性能甚至使程序解体。 ## 上面援用2个常见的HTML攻打举例说明:1、HTML语法裸露的账户平安问题规范的HTML语法中,反对在form表单中应用标签来创立一个HTTP提交的属性,古代的WEB登录中,常见的是上面这样的表单: <form action = "http://localhost:8080/Application/login" method = "POST"> 用户名:<input id="username" name="username" type="text" /> 明码:<input id="password" name="password" type="password" /> <button type="submit">登陆</button></form> form表单会在提交申请时,会获取form中input标签存在name的属性,作为HTTP申请的body中的参数传递给后盾,进行登录校验。 例如账号是user1,明码是123456,那么在提交登录的时候会给后盾发送的HTTP申请如下(Chrome或者FireFox开发者工具捕捉,需开启Preserve log): 能够发现即使password字段是黑点,然而本机仍以明文的模式截获申请。 2、HTTP协定传输间接裸露用户明码字段在网络传输过程中,被嗅探到的话会间接危及用户信息安全,以Fiddler或Wireshark为例,发现捕捉的HTTP报文中蕴含敏感信息: 而当初风行的判断拜访WEB程序是非法用户还是歹意操作的形式,就是采纳一种叫“字符校验”的技术,WEB网站像当初的动网论坛,他采纳达到办法是为客户提供一个蕴含随即字符串的图片,用户必须读取这些字符串,而后随登陆窗体或者发帖窗体等用户创立的窗体一起提交。 那么该怎么办?有什么防护的方法呢?这时候咱们的平安钻研人员就创造了验证码。具体创造史记介绍详见我前几篇文章的介绍。因为人的话,能够很容易读出图片中的数字,但如果是一段客户端攻打代码,通过个别伎俩是很难辨认验证码的这样能够确保以后拜访是来自一个人而非机器和AI机器人。 验证码: 就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些烦扰象素(避免OCR),由用户肉眼辨认其中的验证码信息,输出表单提交网站验证,验证胜利后能力应用某项性能。 典型利用场景: 网站平安:垃圾注册、歹意登录、歹意攻打数据安全:数据爬取、数据毁坏、账号盗用经营平安:歹意刷单、虚伪秒杀、虚伪评论、占座、刷票交易平安:虚伪交易、歹意套现、盗卡领取 意义: 当初网站为了避免用户利用机器人主动注册、登录、灌水、刷票、薅羊毛等,都采纳了验证码技术。 当下,随着科技的倒退,验证码在交互模式上也失去了很大的晋升,越来越重视用户体验,比方顶象的智能无感验证,推出了无需验证即可判断使用者身份的验证体系,其原理其实也非常简单。 风控引擎在用户尝试登陆或者做其余传统须要验证的操作行为前,就会对操作环境进行扫描,并对一些要害参数做剖析,包含罕用IP、地理位置、应用习惯、歹意特色、设施指纹等。基于大量模型和数据的剖析,风控引擎便能够对用户身份做出一个事后的判断。如果风控引擎认为使用者是“坏蛋”,便间接放行;如果断定为“机器”,则不予放行;如果存疑,便给出验证码滑一滑。 验证码能无效避免对某一个特定注册用户用特定程序暴力破解形式进行一直的登陆尝试,实际上用验证码是当初很多网站通行的形式(比方12306、各大银行网上集体银行登录页,BBS论坛等),尽管登陆麻烦一点,然而对网站还来说这个性能还是很有必要,也很重要。

April 21, 2022 · 1 min · jiezi

关于web:Web服务器

一、HTTP 二、Web服务器 - Tomcat

April 3, 2022 · 1 min · jiezi

关于web:关于-WebRTC-API-navigatormediaDevicesgetUserMedia-返回类型的讨论

如下图所示,我在我的项目中应用了 SAP UI5 前端框架的 BarCode scanner 控件,点击 scan 按钮后,执行如下的逻辑: navigator.mediaDevices .getUserMedia(defaultConstraints) .then( function(stream) { if (oZXingScannerAPI) { openBarcodeScannerDialogContains(); } else { oScanDialog.getModel().setProperty("/isNoScanner", true); openBarcodeInputDialog(); } } )getUserMedia 返回值是一个 Promise,它的实现处理程序在胜利获取申请的媒体时接管一个 MediaStream 对象。 该对象在调试器里显示如下: 执行 openBarcodeScannerDialogContains: 调用 Dialog.open: oZXingScannerAPI.decodeFromConstraints: ZXing.js 位于 /sap/ndc/thirdparty/ZXing.js,从正文看是微软的 Copyright: 扫描窗口通过 sapNdcRTCDialogOverlayLine 实现: 能够从 Chrome network 标签页看到 ZXing.js 的加载行为。 ZXing(“斑马线”)是一个开源的、多格局的一维/二维条码图像处理库,用 Java 实现,可移植到其余语言。 https://github.com/zxing-js/l... MediaDevices.enumerateDevices()MediaDevices 办法 enumerateDevices() 申请可用媒体输出和输出设备的列表,例如麦克风、相机、耳机等。 返回的 Promise 应用形容设施的 MediaDeviceInfo 数组解析。 ...

March 16, 2022 · 1 min · jiezi

关于web:使用gulp上传打包文件到服务器

我的项目是应用create-app-rewired生成的react我的项目,应用gulp主动上传打包文件到服务器,倡议只在测试环境和模仿环境应用。 1.装置gulp,gulp-ssh包 2.编写脚本 3.批改config-overrides.js,将打包文件分环境生成 4.编写gulp配置文件gulpfile.js const { src, task, series } = require("gulp");const GulpSSH = require("gulp-ssh");const { APP_ENV } = process.env;//获取零碎环境const LOCAL_PATH = `./build/${APP_ENV}/**/*`;//本地目录let remotePath = "/home/web/project";//近程服务器目录let config = { test: [ { remotePath, deleteCommand: `rm -rf ${remotePath}/*`, ssh: { host: "*.*.*.*",//测试站 port: 22, username: '***', password: "***", } } ], mock: [ { remotePath, deleteCommand: `rm -rf ${remotePath}/*`, ssh: { host: "*.*.*.*",//模仿站 port: 22, username: '***', password: "***", } }, ]}task("deploy", cb => { let sshConfigs = config[APP_ENV] || [];//配置 let seriesArray = [];//工作队列 for (let i = 0; i < sshConfigs.length; i++) { const { remotePath, deleteCommand, ssh } = sshConfigs[i] || {}; let gulpSSH = new GulpSSH({ ignoreErrors: false, sshConfig: ssh }); seriesArray.push(series(function step1() { console.log(`开始革除指标服务器文件,ip:${ssh.host},命令:${deleteCommand}`); return gulpSSH.shell(deleteCommand); }, function step2() { console.log(`开始上传文件到指标服务器,源目录:${LOCAL_PATH},目标目录:${remotePath}`); return src(LOCAL_PATH).pipe(gulpSSH.dest(remotePath)); })); } series(seriesArray)(); cb();})5.执行脚本 yarn deploy:test 即可 ...

February 17, 2022 · 1 min · jiezi

关于web:智汀云盘开发指南web业务功能我的

次要有两大模块,一是贮存治理,二是我的文件治理 1.存储管理 治理主页这里次要就是两个列表,一个硬盘列表,一个存储池列表 <!--闲置硬盘列表 html--><div v-if="diskList.length" class="new-storage-box"> <p class="tip">{{ $t('storage.findTitle1') }}{{ diskList.length }}{{ $t('storage.findTitle2') }}</p> <div class="new-scroll"> <div v-for="(item, index) in diskList" :key="index" class="new-storage-item" :class="[`new-storage-item-${index % 4 + 1}`]"> <div class="disk-icon"></div> <h3 class="name one-line">{{ item.name }}</h3> <p class="many">{{ $methods.transformByte(item.capacity) }}</p> <van-button class="btn" :class="[`btn-${index % 4 + 1}`]" @click="handleAddDisk(item)">{{ $t('storage.addBtn') }}</van-button> </div> </div></div><!--存储池列表 html--><div class="storage-box"><p class="tip">{{ $t('storage.listTitle') }}</p><!-- 没有贮存池 --><div class="empty-box" v-if="isNoStorages"> <van-empty class="custom-image" :description="$t('global.noStorage')"> </van-empty></div><!-- 有贮存池 --><div class="storage-list" v-else> <div v-for="(item, index) in storageList" :key="index" class="storage-item" :class="{'blur': item.status==='TaskDelPool_0'}" @click="!item.status?toStorageDetail(item):''"> <div class="clearfix"> <div class="disk-icon float-l"></div> <div v-if="!item.status" class="more float-r"></div> <div class="status-type" v-if="item.status==='TaskDelPool_1'"><van-icon name="clock-o" /> <span class="one-line">{{$t('global.deleting')}}</span></div> </div> <h3 class="name two-line">{{ item.name }}</h3> <p class="many">{{ $methods.transformByte(item.capacity) }}</p> <div class="mask-cover" v-if="item.status==='TaskDelPool_0'"> <div class="warning-icon"><img src="../../../assets/icon-warning.png" alt=""></div> <div class="warning-text two-line">{{$t('storage.delStorage')}} ({{item.name}}) {{$t('global.fail')}}</div> <div class="btn-box"> <van-button type="info" color="#427AED" size="small" @click="retry(item)">{{ $t('global.retry') }}</van-button> </div> </div> </div></div></div>// 初始化数据列表methods: { // 获取闲置硬盘列表 getDiskList(params) { this.http.disksList(params).then((res) => { if (res.status !== 0) { return } const list = res.data.list || [] this.diskList = list }) }, // 获取存储池列表 getStorageList(params) { this.loading = true this.http.poolsList(params).then((res) => { this.loading = false if (res.status !== 0) { return } const list = res.data.list || [] list.forEach((item) => { item.checked = false }) this.storageList = list }).catch(() => { this.loading = false }) }, },created() { this.getDiskList() this.getStorageList() }闲置硬盘增加 能够抉择现有的存储池增加,或者新建一个贮存,新建胜利则默认已增加到新建的存储池中 ...

February 12, 2022 · 4 min · jiezi

关于web:Web-Components-系列-详解-Slots

前言相熟 Vue 的同学应该都晓得”插槽(slot)“的概念,通过应用插槽能够让页面内容的组织更加灵便。 在 Web Components 体系中也有插槽的概念,明天咱们就来具体理解一下 Slots,本文次要包含以下内容: 为什么要用 Slots ?Slots 的相干个性Slots 的作用咱们首先来看一个模板元素: <template> <div class = "header">MY CARD</div> <div class="details"> My name is 编程三昧。 </div></template>复制代码既然是模板,那就意味着在很多中央都会应用到它,然而,这里会存在一个问题:所有应用这个模板的中央都将显示模板中的内容,即并不是所有人的名字都叫 ”编程三昧“。 在这种状况下,叫其余名字的人是没法应用这个模板的,显然,这就和应用模板的初衷相违反了,这个模板的应用范畴太过狭小,不存在通用性。 想要使得这个模板具备通用性,其关键点在于 .details 中显示的内容是否具备通用性。 开动脑筋想一想,咱们是不是能够将其中的”编程三昧“设为动静内容,谁应用这个模板,谁就传入本人的名字。恰好, Slots(插槽)就能够实现这种成果,具体如下: <!--在模板中应用 slot 进行占位--><template id="cardTmp"> <div class="header">MY CARD</div> <div class="details"> My name is <slot name="userName">编程三昧</slot>。 </div></template><!--在应用下面模板的自定义元素中给 slot 传值--><my-card> <span slot="userName">插槽传值</slot></my-card><my-card> <span slot="userName">web Components</slot></my-card>复制代码其对应的 JS 代码如下: class MyCard extends HTMLElement { constructor () { super(); const template = document.getElementById('cardTmp'); const templateContent = template.content; this.attachShadow({mode: 'open'}).appendChild( templateContent.cloneNode(true) ); }}customElements.define('my-card', MyCard);复制代码实现成果: ...

February 12, 2022 · 2 min · jiezi

关于web:智汀云盘开发指南web项目架构

这里次要讲下我的项目的构造和技术架构,不便咱们疾速开始开发 1. 我的项目技术架构• 本我的项目次要采纳vue + webpack + vant• 我的项目次要用vue-cli3脚手架进行初始化,而后依据我的项目需要进行构造上的调整 vuejs个性• vuejs体积小• 学习成本低• 能疾速提交开发效率• vuejs的生态欠缺 webpack个性• 模块化• 按需加载• 丰盛的插件• 丰盛的配置 vant个性• 提供 60 多个高质量组件,笼罩挪动端各类场景• 性能极佳,组件均匀体积不到 1kb(min+gzip)• 单元测试覆盖率 90%+,提供稳定性保障• 欠缺的中英文文档和示例• 反对 Vue 2 & Vue 3• 反对按需引入• 反对主题定制• 反对国际化• 反对 TypeScript• 反对 SSR 2.我的项目构造│ .browserslistrc │ .editorconfig│ .eslintrc.js // eslint配置文件│ .gitignore // git提交疏忽配置│ babel.config.js // babel配置文件│ package-lock.json // 依赖缓存文件│ package.json // package配置文件│ postcss.config.js // postcss独立配置文件│ README.md // 阐明文件│ vue.config.js // webpack相干配置文件├──public // 动态资源文件├──plugins // 插件汇合└─src ├─api │ ├──http.js // api申请文件,每个api申请都在这里 │ ├──instance.js // api申请总入口,在这里能够做申请的对立解决 ├─assets // 资源文件夹 │ ├─lang // 多语言文件夹 │ ├─bus // 全局vue bus │ ├─components // 通用组件库 │ ├─router.js // 路由文件 │ ├─store.js // store相干 │ ├─App.vue // 程序入口vue文件 │ ├─main.js // 程序入口文件 │ ├─utils // 相干工具的办法汇合 │ └─views // 页面文件3. 示例:hello word怎么增加一个hello word的页面? ...

February 11, 2022 · 1 min · jiezi

关于web:Angular-之-zonejs-介绍

或者你据说过 Angular 应用了zone.js, 但 Angular 为什么要应用zone.js, 它可能提供哪些性能呢?明天咱们独自写一篇文章聊聊zone.js,对于它在 Angular 框架中施展的作用将在下一篇文章讲述。 什么是 Zone ? 官网文档是这么解释的:Zone 是一个跨多个异步工作的执行上下文。一句话总结来说,Zone 在拦挡或追踪异步工作方面有着特地弱小的能力。上面咱们将通过一个示例来展现它的能力,并简略分析一下背地的工作原理。 <button id="b1">Bind Error</button><button id="b2">Cause Error</button><script> function main() { b1.addEventListener('click', bindSecondButton); } function bindSecondButton() { b2.addEventListener('click', throwError); } function throwError() { throw new Error('aw shucks'); } main();</script>这是一个简略的 HTML 页面。页面加载时会给第一个按钮增加点击事件,其点击事件函数的性能是给第二个按钮增加点击事件,而第二个按钮的点击事件函数性能是抛出一个异样。咱们顺次点击第一个按钮和第二个按钮,控制台显示如下: (索引):26 Uncaught Error: aw shucks at HTMLButtonElement.throwError ((索引):26:13)然而如果咱们通过zone.js启动运行代码,控制台输入会有什么不同呢,咱们先调整启动代码: Zone.current.fork( { name: 'error', onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) { console.log(error.stack); } } ).fork(Zone.longStackTraceZoneSpec).run(main);此时控制台输入如下: Error: aw shucks at HTMLButtonElement.throwError ((索引):26:13) at ZoneDelegate.invokeTask (zone.js:406:31) at Zone.runTask (zone.js:178:47) at ZoneTask.invokeTask [as invoke] (zone.js:487:34) at invokeTask (zone.js:1600:14) at HTMLButtonElement.globalZoneAwareCallback (zone.js:1626:17) at ____________________Elapsed_571_ms__At__Mon_Jan_31_2022_20_09_09_GMT_0800_________ (localhost) at Object.onScheduleTask (long-stack-trace-zone.js:105:22) at ZoneDelegate.scheduleTask (zone.js:386:51) at Zone.scheduleTask (zone.js:221:43) at Zone.scheduleEventTask (zone.js:247:25) at HTMLButtonElement.addEventListener (zone.js:1907:35) at HTMLButtonElement.bindSecondButton ((索引):23:10) at ZoneDelegate.invokeTask (zone.js:406:31) at Zone.runTask (zone.js:178:47) at ____________________Elapsed_2508_ms__At__Mon_Jan_31_2022_20_09_06_GMT_0800_________ (localhost) at Object.onScheduleTask (long-stack-trace-zone.js:105:22) at ZoneDelegate.scheduleTask (zone.js:386:51) at Zone.scheduleTask (zone.js:221:43) at Zone.scheduleEventTask (zone.js:247:25) at HTMLButtonElement.addEventListener (zone.js:1907:35) at main ((索引):20:10) at ZoneDelegate.invoke (zone.js:372:26) at Zone.run (zone.js:134:43)通过比照咱们晓得:不引入zone.js时,咱们通过谬误调用栈仅仅可能晓得,异样是由按钮2的点击函数抛出。而引入了zone.js后,咱们不仅晓得异样是由按钮2的点击函数抛出,还晓得它的点击函数是由按钮1的点击函数绑定的,甚至可能晓得最开始的利用启动是main函数触发。这种可能继续追踪多个异步工作的能力在大型简单我的项目中异样重要,当初咱们来看zone.js是如何做到的吧。 ...

February 2, 2022 · 2 min · jiezi

关于web:Web30时代-数字人如何突破规模落地三大难点-百度李士岩两年内每个人有望实现数字人自由

刚刚过来的 2021 年,元宇宙概念爆火到一度“出圈”成了顶流。在寰球科技巨头纷纷下场、web 3.0 减速构建的过程中,虚构数字人作为元宇宙的场景入口与连贯纽带也备受瞩目。刚刚举办的江苏卫视跨年晚会上,周深与邓丽君跨时空独唱《大鱼》在全网刷屏。面对数字人展现出的泛滥可能性,2022 年 1 月 14 日,百度科技沙龙《AI 呀,我去!》第四期以数字人为主题,为百余位媒体、专家学者展示了数字人产业的全景。 本次流动上,百度智能云 AI 人机交互实验室负责人李士岩基于多年教训,围绕以后数字人产业的倒退格局、技术难点和底层驱动力进行了零碎分享。李士岩示意,虚构数字人产业格局中,提供建模、渲染、动静捕获等服务于数字人制作的基础设施服务商已造成巩固格局,大多由海内巨头把持,但在工具、应用层,中国企业已开始锋芒毕露。 尽管如此,数字人规模化落地还面临三大难点:产业链割裂、服务场景与演艺场景没有无效买通、满足高频需要老本高。为零碎解决这些难题,百度推出数字人平台“曦灵”,将来数字人生产、内容创作、业务配置服务将能够在一个平台上实现全链路制作和调优,降本增效。“咱们近两年的奋斗目标是,通过百度智能云曦灵平台的凋谢,让每个人实现数字人自在。”李士岩示意。 数字人大规模落地要冲破三大难题目前,数字人经验了以“纸片人”为代表的 1.0 阶段,以 Vtuber 主播为代表的 2.0 时代,已进化至3.0阶段,具备模型高精、人工智能驱动特点的数字人 3.0 成为行业支流。李士岩介绍,第三代数字人的建模和内容生产均有 AI 参加,这使得数字人的制作效率更高,也更智能,能面向更多利用场景。可面向全群体用户,可由视频、直播、chatbot 等载体承载,更具备千人千面的互动能力。 现阶段,数字人 3.0 已展现出微小的市场空间。依据次元光谱不齐全统计,2021 年国内虚构偶像/数字人畛域里至多产生 19 笔融资,2021 年产业上下游也纷纷从本人善于的角度切入市场。虚构数字人产业格局中,提供建模、渲染、动静捕获等服务于数字人制作的基础设施服务商已造成巩固格局,大多由海内巨头把持。不过,在工具、应用层,中国企业已开始锋芒毕露。 中国企业中,数量最多的是资产制作和策动经营类的公司,比方推出超写实数字人的 AYAYI 燃麦科技,推出虚构人物柳夜熙的创壹视频,但这类公司面临的挑战是门槛较低、可替代性高。此外,把握技术和场景的互联网公司则表演综合性技术服务商的角色,一边推出基于本身劣势场景的数字人,打造利用标杆;一边推出数字人平台,将产品持续落地到更细化的场景中,点、线相互推动。 李士岩示意,数字人产业有三大外围推动力,第一级火箭是用户需要与技术升级、第二级是政策反对与资本涌入、第三级是计算平台的迭代 —— “每一次数字人倒退实质上都是技术推动的,用户从立体的图文影音获取信息与交互,向实时 3D 交互反馈的需要转变,将成为数字人长期倒退的基本动能,将来也将发明大量需要。“ 尽管数字人行业领有强劲的驱动力,但李士岩认为,当下国内数字人要大规模产业落地还面临三大难题。 首先,数字人产业链各个节点绝对割裂,不能高效协同,导致数字人在制作和调优上存在较高壁垒,目前行业中大多数公司只是数字人制作与经营全流程上的一环或其中几环。其次,服务场景与演艺场景没有无效买通,体现为演艺型数字人不具备客户所需的业务能力,而服务型数字人不足人设,难以与用户进行情感交换。第三是满足高机动性、高频需要的老本仍旧很高,这一问题归根结底还是数字人的生产效率问题。 百度推出数字人平台“曦灵”面对以后数字人制作的高门槛,在 2021 年 12 月底举办的百度 create 大会(百度 AI 开发者大会)上,百度 CTO 王海峰正式公布了“百度智能云曦灵数字人平台”, 搭建集数字人生产、内容创作、业务配置服务为一体的平台级产品。目前该产品已具备规范平台的疾速交付能力,帮忙不同畛域客户疾速实现麻利型需要,降本增效。百度的数字人平台曦灵具备全场景、一站式、平台化的特点,能反对从最后数字人形象定制、人设治理再到业务编排、内容创作,最初到多种驱动模式下与用户互动的全副需要,这也意味着在一个平台上即可实现数字人的全链路调优,从而将成果做到最好。 李士岩以数字人生成环节为例,演示了百度智能云曦灵平台的性能。用户在百度智能云曦灵平台上传一张照片,就能疾速生成一个可被AI驱动的 2D 数字人像,以前须要两三个月工夫做进去的 3D 数字人,当初能够压缩到小时级,同时还能够通过一句话语音形容或简略捏脸等多种形式疾速生产数字人。数字人个性化性能开发也较之前更加欠缺,以百度刚刚公布的 3D 超写实书面语数字人为例,其口型合成准确率高达 98.5%。 ...

January 14, 2022 · 1 min · jiezi

关于web:什么是-StackBlitz-的-web-container

如下图所示,咱们能够利用 StackBlitz,在浏览器里开发 Node.js 利用: 这所有归功于所谓的 WebContainer,如下图 Booting WebContainer 和 Installing dependencies 的信息: 几年前,咱们就能感觉到,web 开发正在走向一个要害的拐点。 WebAssembly 和新的 capabilities API 的呈现,使得编写一个基于 WebAssembly 的操作系统仿佛成为可能,该操作系统功能强大到能够齐全在浏览器中运行 Node.js。 提供一个比本地环境更快、更平安、更统一的卓越开发环境,以实现无缝代码合作,而无需设置本地环境,这个指标仿佛离 Web 开发人员越来越近了。 实现这个指标的要害之一是 Web Container. 传统在线 IDE 在近程服务器上运行您的整个开发环境,并将后果通过 Internet 流式传输回您的浏览器。 这种办法的问题在于,它简直没有平安劣势,并且在简直所有方面都比本地机器提供更蹩脚的体验:启动容器须要几分钟工夫,容易呈现网络提早,无奈离线工作,常常导致网络超时, 调试解冻/损坏的容器简直是不可能的,点击刷新只会将您从新连贯到损坏的容器。 StackBlitz 提供的 WebContainers 容许您创立全栈 Node.js 环境,该环境可在几毫秒内启动并立刻处于在线状态,能够通过链接共享——只需单击一下。 该环境加载了 VS Code 弱小的编辑体验、残缺的终端、npm 等。 它也齐全在浏览器中运行,这会产生下列这些要害的益处: 比本地环境更快。 构建实现速度比 yarn/npm 快 20%,包装置实现速度 >= 5 倍。Node.js 利用能够在浏览器中调试。 与 Chrome DevTools 的无缝集成反对本地后端调试,无需装置或扩大。默认的安全级别。 所有代码执行都产生在浏览器的平安沙箱内,而不是近程虚拟机或本地二进制文件上。同样,这些环境不在近程服务器上运行。 相同,这些运行环境都齐全蕴含在 Web 浏览器中。 Node.js 运行时自身第一次在浏览器外部本地运行。 更多Jerry的原创文章,尽在:"汪子熙": ...

January 14, 2022 · 1 min · jiezi

关于web:直播预告-拍乐云与你相约RTSCon2021开发者沙龙

12月26日,RTSCon2021开发者沙龙将在线上举办,拍乐云Pano受邀缺席,服务端专家沈伟锋将在流动中带来对于《拍乐云交融语音通话技术实际》的主题演讲。 RTSCon的前身是FreeSWITCH开发者沙龙,而RTS的全称是Real-Time Solutions,即实时解决方案。随着时代和技术的倒退,FreeSWITCH开发者沙龙慢慢演变成了一个RTS社区,失去了泛滥开发者的反对。RTSCon2021汇聚了来自LiveVideoStack、中移在线、统信软件、贝壳找房等行业和技术首领,独特探讨Kamailio、OpenSIPS、WebRTC、直播、RTC、Docker、云原生、物联网、国产化、元宇宙、5G新倒退及边缘计算等,把开源实时通信的利用场景落地并发扬光大。拍乐云作为受邀参会的合作伙伴,也是实时音视频畛域疾速崛起的创新者与推动者,致力于为客户提供更好的音视频品质、更丰盛的场景计划,让更多的利用从“能用”过渡到“好用”。 随着实时音视频在会议、社交、医疗、金融、IoT等行业的利用普及率回升,实时语音技术在一直迭代与成熟。为了解决极限弱网、通话不稳固和跨平台互无奈互通等问题,拍乐云推出VoIP+PSTN交融语音通话产品,通过一个SDK满足所有语音通话场景需要。因而,本场主题演讲将围绕着交融语音通话的需要背景、技术根底、架构搭建和技术实际,开展深入分析与解说。 讲师介绍 沈伟锋:拍乐云合伙人&服务端专家,多年音视频服务端教训,16年WebEx平台开发教训,经验WebEx整个音视频零碎的演进。曾主导第一阶段WebEx会议与思科网真零碎的交融及演进等,率领WebEx媒体引擎团队构建了新一代WebEx会议媒体引擎,精通音视频技术架构、媒体服务等。 RTSCon2021已开启报名通道,扫描海报二维码或点击“浏览原文”即可报名,具体登录形式将会在流动开始前在rts.cn网站上颁布,期待你的到来!

December 24, 2021 · 1 min · jiezi

关于web:web30是什么

你好,我是悦创。 博客首发:https://www.aiyc.top/2099.html 原想录成视频的,奈何条件不容许。当前录吧。。。 最近,有个概念特地火,叫 web3.0 。很多对于它的视频在网络上刷屏,那到底什么叫 web3.0?如果要了解这个货色,你必须首先要了解:什么叫 1.0 、什么叫 2.0 。 所谓 web1.0 指的是,在早起的互联网,比方像新浪、网易、搜狐等这些网站,这些网站的内容,都是编辑把它整理出来。咱们作为一个一般的互联网用户,只能去看也就是:read-only 。 而到起初随着互联网提高,交互的形式也提高了。咱们能够开始写了,这最次要的一个象征就是 blog 的呈现。我在 2018年开始写博客,博客呈现后,就呈现了大量能够写的互联网,比方: 新浪微博,你能够发表本人的微博;Facebook 你能够发表本人的动静;微信你能够发表本人的朋友圈;甚至早起的咫尺,你发本人的帖子,大量的用户开始奉献内容。那一时刻开始,互联网岂但能够只读了也就是可读可写了。——这就是 web2.0 然而 2.0 仍然有一个问题,就是:作者,一个普通用户发明内容,他的所有权其实属于平台的,所以对这个内容的控制权、收益权是你发明的。然而平台拿走了。平台能够封你账号、删你内容、不容许你的内容被搬家,平台能够因为你的内容而收益。这在很多人看来是不对的,咱们能不能发明一个新机制。 就是:你发明进去的内容,所带来控制权、收益权都归你本人(创作者自身),也就是你领有所有权。我举个例子:比方我在我家里弄了一台服务器,而后让一些电影能够主动存在我的服务器上,这个时候当我的街坊想要看一部电影的时候,他就从我家里的服务器上看,那肯定比从机房看,速度更快。这个时候,我为互联网提供了价值。我这个价值是某种奉献模式,这种奉献是我发明的,它带来的收益应该属于我。我用什么办法来认可这个收益呢?——明天有一群人提出来,这就是 web3.0 的根本逻辑。咱们认为给他发一种货色叫:token ,也就是所谓的通证或者有人翻译成叫代笔,拿到代币之后来确认你对互联网的奉献,你提供的价值越多,不论是内容、还是网络带宽、硬盘等等货色,那我给你发的通证就越多也就是 token 越多代币越多。也一直一直收到越来越多的代币来确认你的价值。 明天的代币,可能没有太大的价值,比方只值一分钱、两分钱,然而随着大家奉献的认可,会越来越贵,变成 1毛钱、2 毛钱、5 块钱、10 块钱,这个时候你的奉献就被认可价值了。这就是 web3.0 ,通过代币的形式、通过 token 的形式来确认价格的机制,那这个时候平台自身也是须要倒退、须要去开发。所以,他通过交易所的形式有可能会发行一些代币,来拿到一些钱,给本人来做根本的开发费用。 所以,他们设想的互联网,是要去掉一个中心化平台的互联网,是要把价值还给用户的互联网。 当初咱们总结一下: web1.0 read-only 只读互联网web2.0 能够读也能够写web3.0 可读、可写、可领有这是三个不同的提高,可领有别离是:控制权、收益权。收益权也要是我,收益权不属于我,我就要控制权,我能够把我所有内容迁徙到另一个平台,你还不能拦截我。这就是咱们说的 web3.0 ,那么 3.0 会不会有将来呢?咱们还须要刮目相待,然而在这个行业两头,曾经呈现一种乱象:起的最早的是理想主义者,跑的最快的是骗子,而胆子最大的是那些冒险家,胆怯错过所有,疯狂往里冲的是韭菜,而真正的成功者,可能还没有入场。 AI悦创·推出辅导班啦,包含「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 安排作业 + 我的项目实际等。QQ、微信在线,随时响应!V:Jiabcdefh,公众号:AI悦创

December 17, 2021 · 1 min · jiezi

关于web:亚马逊宣布停用-Web-世界排名网站-Alexacom

近日,亚马逊发表其将在 2022 年 5 月 1 日停用Alexa.com平台,今后将不再公布新的月度统计数据。 Alexa.com 是亚马逊的子公司,一家专门公布网站世界排名的网站。 以搜索引擎起家的 Alexa 创立于 1996 年 4 月(美国),目标是让互联网网友在分享虚拟世界资源的同时,更多地参加互联网资源的组织。 Alexa 每天在网上收集超过 1,000GB 的信息,不仅给出多达几十亿的网址链接,而且为其中的每一个网站进行了排名,其 URL 数量宏大,且排名信息公布详尽。 除了寰球网站排名零碎外,亚马逊的 Alexa.com 还通过付费订阅提供一整套 SEO 和竞争对手剖析工具。

December 9, 2021 · 1 min · jiezi

关于web:紫金桥组态软件Web发布实现方式

前言Web公布性能,实现了浏览器 /服务器模式的运行性能。客户端只需通过 IE浏览器就能够拜访服务器上公布的运行画面,与在服务器端拜访运行画面等效。 W eb公布性能 升高了保护的复杂度,不便进行对立治理,所有的操作仅须要在服务器端实现。 简要步骤服务器端1、须要装置IIS服务,且确保IIS服务失常运行2、防火墙平安配置,确保相干端口畅通。 3、工程Web配置及公布4、网络服务器勾选,确保运行客户端1、IE浏览器拜访,须要配置浏览器相干设置2、360平安浏览器拜访,须要切换到IE内核拜访,版本<=IE93、倡议应用360平安浏览器,方便快捷,无繁冗设置,间接拜访流程演示查看IIS是否装置关上控制面板,关上管理工具,如果有上面画框文件,阐明曾经装置双击关上,查看默认网站是否启动: 如果未启动,点击启动运行。如果IIS未装置,点击控制面板-程序-增加windows性能: 防火墙配置如果IIS默认站点是默认80端口,请确认80端口凋谢,另外1998端口也必须凋谢(软件数据端口)工程Web配置及公布1、关上Web配置,配置相干参数点击高级,勾选应用IIS,设置虚拟目录。 2、发布页面 确认网络服务器勾选启动点击运行即可,浏览器输出地址拜访 演示视频:演示视频(页面最上面) 更多紫金桥软件技术文章,请拜访:紫金桥知识库

November 30, 2021 · 1 min · jiezi

关于web:web-应用开发最佳实践之一避免大型复杂的布局和布局抖动

Avoid Large, Complex Layouts and Layout Thrashing 布局是浏览器计算元素几何信息的中央:即元素在页面中的大小和地位。 每个元素都将具备基于所应用的 CSS、元素的内容或父元素的显式或隐式大小信息。 该过程在 Chrome、Opera、Safari 和 Internet Explorer 中称为布局(Layout). 在 Firefox 中,它被称为回流(reflow),但实际上过程是雷同的。 与款式计算相似,布局老本的间接关注点是: 须要布局的元素数量。这些布局的复杂性。简而言之: 布局通常限定于整个文档。DOM 元素的数量会影响性能; 你应该尽可能防止触发布局。评估布局模型性能; 新的 Flexbox 通常比旧的 Flexbox 或基于浮动的布局模型更快。防止强制同步布局和布局抖动; 读取款式值而后进行款式更改。Avoid layout wherever possible当您更改款式时,浏览器会查看是否有任何更改须要计算布局,以及是否须要更新渲染树。 更改“几何属性”,例如宽度、高度、左侧或顶部都须要执行布局过程。 .box { width: 20px; height: 20px;}/** * Changing width and height * triggers layout. */.box--expanded { width: 200px; height: 350px;}布局简直总是作用于整个文档。 如果您有很多元素,则须要很长时间能力弄清楚它们的地位和尺寸。 如果无奈防止布局,那么要害是再次应用 Chrome DevTools 来查看须要多长时间,并确定布局是否是造成瓶颈的起因。 首先,关上 DevTools,转到 Timeline 选项卡,点击记录并与您的站点进行交互。 当您进行录制时,您会看到您的网站体现的细分: 在上例中深入研究帧时,咱们看到在布局外部破费了超过 20 毫秒,当咱们有 16 毫秒在动画中在屏幕上显示帧时,这太高了。 您还能够看到 DevTools 会告诉您树的大小(在本例中为 1,618 个元素),以及须要布局的节点数量。 ...

October 17, 2021 · 2 min · jiezi

关于web:什么是-Web-应用性能评测领域的-RAIL-模型

Measure performance with the RAIL model RAIL 是一种以用户为核心的性能模型,它提供了一种思考性能的构造。 该模型将用户体验合成为要害操作(例如,点击、滚动、加载)并帮忙您为每个操作定义性能指标。 RAIL 代表 Web 应用程序生命周期的四个不同方面:响应、动画、闲暇和加载,即 response, animation, idle 和 load的缩写。用户对这些上下文中的每一个都有不同的性能冀望,因而性能指标是依据上下文和用户如何感知提早的 UX 钻研来定义的。 Focus on the user让用户成为性能工作的焦点。 下表形容了用户如何感知性能提早的要害指标: 用户对性能提早的认识0 到 16 毫秒 用户十分善于跟踪静止,并且不喜爱动画不晦涩时的跟踪。 只有每秒渲染 60 个新帧,他们就会认为动画很晦涩。 这是每帧 16 毫秒,包含浏览器将新帧绘制到屏幕所需的工夫,让应用程序生成一个帧大概须要 10 毫秒。0 到 100 ms 在此工夫窗口内响应用户操作,用户感觉后果是空谷传声的。 如果超过这个时延,口头和反馈之间的分割就被突破了。100 到 1000 ms 在这个窗口内,事件感觉是工作天然和间断停顿的一部分。 对于网络上的大多数用户来说,加载页面或更改视图是一项工作。1000 毫秒或更多 超过 1000 毫秒(1 秒),用户会失去对他们正在执行的工作的注意力。10000 毫秒或更多 超过 10000 毫秒(10 秒),用户感到丧气并可能放弃工作。 他们当前可能会也可能不会回来。Goals and guidelines在 RAIL 的上下文中,术语指标(goals)和指南(guidelines)具备特定含意: 指标:与用户体验相干的要害性能指标。 例如,点击即可在 100 毫秒内渲染。 因为人类的感知是绝对恒定的,这些指标不太可能很快扭转。 ...

October 17, 2021 · 2 min · jiezi

关于web:Web-Bundles-学习笔记

Web BundlesChrome 开发者工具新性能 将残缺的网站捆绑为单个文件并使其可共享为网络开拓了新的用例。 设想一个你能够: 创立本人的内容并以各种形式散发,不受网络限度通过蓝牙或 Wi-Fi Direct 与您的敌人分享网络应用程序或网络内容在您本人的 USB 上携带您的网站,甚至将其托管在您本人的本地网络上Web Bundles API 是一项前沿提案,可让您实现所有这些工作。 Web Bundles API 目前仅在基于 Chromium 的浏览器中受实验性标记反对。 Web Bundle 是一种文件格式,用于将一个或多个 HTTP 资源封装在单个文件中。 它能够蕴含一个或多个 HTML 文件、JavaScript 文件、图像或样式表。 Web Bundles,更正式地称为 Bundled HTTP Exchanges,是 Web Packaging 提案的一部分。 Web Bundle 中的 HTTP 资源由申请 URL 编制索引,并且能够抉择带有保障资源的签名。 签名容许浏览器了解和验证每个资源的起源,并将每个资源视为来自其实在起源。 这相似于 Signed HTTP Exchanges(一种用于对单个 HTTP 资源进行签名的性能)的解决形式。 Explaining Web Bundles精确地说,Web Bundle 是一个扩大名为 .wbn 的 CBOR 文件(依照常规),它将 HTTP 资源打包成二进制格局,并以 application/webbundle MIME 类型提供服务。您能够在标准草案的顶级构造局部浏览更多相干信息。 Web Bundles 有多个独特的性能: ...

October 2, 2021 · 1 min · jiezi

关于web:Web-应用服务器端渲染入门指南

Rendering on the Web 作为开发人员,咱们常常面临会影响应用程序整个架构的决策。 Web 开发人员必须做出的外围决策之一是在他们的应用程序中实现逻辑和出现的地位。 这可能很艰难,因为有许多不同的办法来构建网站。 咱们对这一畛域的了解源于咱们过来几年在 Chrome 中与大型网站的交换工作。 从狭义上讲,咱们激励开发人员思考服务器渲染或动态渲染,而不是齐全从新 hydration 的办法。 为了更好地了解咱们在做出这个决定时抉择的架构,咱们须要对每种办法和在议论它们时应用的统一术语有粗浅的了解。 这些办法之间的差别有助于从性能的角度阐明在 Web 上渲染的衡量。 渲染SSR:服务器端渲染 - 在服务器上将客户端或通用应用程序渲染为 HTML。CSR:客户端渲染 - 在浏览器中渲染应用程序,通常应用 DOM。Rehydration:在客户端“启动”JavaScript 视图,以便它们重用服务器渲染的 HTML 的 DOM 树和数据。Prerendering:在构建时运行客户端应用程序以将其初始状态捕捉为动态 HTML。TTFB:Time to First Byte - 被视为单击链接和第一个内容进入之间的工夫。FP:First Paint - 任何像素第一次对用户可见。FCP:First Contentful Paint - 申请的内容(文章正文等)变得可见的工夫。TTI: Time To Interactive - 页面变为可交互的工夫(事件连贯等)。Server Rendering服务器渲染为服务器上的页面生成残缺的 HTML 以响应导航。 这防止了在客户端上进行数据获取和模板化的额定往返,因为它是在浏览器取得响应之前解决的。 服务器渲染通常会产生疾速的首次绘制 (FP) 和首次内容绘制 (FCP)。 在服务器上运行页面逻辑和渲染能够防止向客户端发送大量 JavaScript,这有助于实现疾速交互工夫 (TTI)。 这是有情理的,因为通过服务器渲染,您实际上只是向用户的浏览器发送文本和链接。 这种办法能够很好地实用于各种设施和网络条件,并开启了乏味的浏览器优化,例如流式文档解析。 通过服务器渲染,用户不太可能在应用您的网站之前期待 CPU 绑定的 JavaScript 解决。即便无奈防止第三方 JS,应用服务器渲染来升高您本人的第一方 JS 老本也能够为您提供更多的“估算”。然而,这种办法有一个次要毛病:在服务器上生成页面须要工夫,这通常会导致首字节工夫 (TTFB) 变慢。 ...

September 6, 2021 · 2 min · jiezi

关于web:前端截图实现

前言需要背景:指标:将页面内容变成图片分享进来长久化:不须要服务端存储客户端能力:不依赖客户端端能力应用pupeteer做截图服务长处: 前端应用简略,只需调用接口即可分享页面能够和给用户展现的页面内容拆散,不必额定解决款式等问题毛病: 新开服务&保护服务接口响应工夫较长会影响体验论断调研发现,能够应用html2canvas纯前端做页面转化成图片的性能。 注释后记

August 26, 2021 · 1 min · jiezi

关于web:Web内容安全策略浅析

前言Web平安问题始终是前端畛域一个绕不开的话题,但很多前端人员对Web的相干安全策略都只停留在面试过程中,本文次要是对上线过程中遇到的平安问题踩坑进行了一个总结,旨在对Web平安相干问题能有一个更为平面切身的领会,也心愿能给大家提供一些踩坑时候的参考。 背景XSS vs CSRFXSSXSS是Cross-site scripting的缩写,为了和Cascading Style Sheets进行辨别,因此将其简写为XSS: Cross-site scripting (XSS) is a security exploit which allows an attacker to inject into a website malicious client-side code. This code is executed by the victims and lets the attackers bypass access controls and impersonate users.从MDN给出的定义能够看出,XSS是通过inject(注入)无害代码来实现攻打计划的,也就是说XSS的攻打计划是注入,这里个别是通过注入脚本,因为浏览器中dom、bom的为js提供了接口,因此js能够操作html和css,其也能够插入html片段等。 CSRF很多人分不清CSRF,其实他们还是有很大区别的,只不过通常会应用XSS拿到一些权限后才进行CSRF。CSRF是Cross-Site Request Forgery的简写: CSRF (Cross-Site Request Forgery) is an attack that impersonates a trusted user and sends a website unwanted commands.从MDN定义能够看进去,CSRF是通过伪造来进行攻打,也就是其本质目标须要用所有伎俩来假装本人获取本不属于它的权限资源 区别名称目标备注XSS篡改内容不关怀权限CSRF获取资源只关怀权限XSS分类名称寄存侵入形式场景存储型(长久型)后端数据库HTML带有用户保留数据的网站,如:论坛发帖、商品评论、用户私信反射型(非长久型)URLHTML网站搜寻、跳转DOM 型后端数据库/前端存储/URLjs前端js执行,如写了eval等XSS进攻计划XSS预防次要分为两大部分: 避免攻击者提交恶意代码浏览器执行恶意代码从这两大部分能够整顿出不同的防备思路: 办法步骤类型利用模板引擎1存储型、反射型限度及本义输出1存储型、反射型限度js执行办法2DOM型Content Security Policy1、2存储型、反射型、DOM型从上述列表能够看出,Content Security Policy对XSS的防备是比拟好的,那么接下来就到了本文的重点内容,在下一part会重点介绍CSP相干的内容 ...

August 17, 2021 · 2 min · jiezi

关于web:Web前端架构师

download:Web前端架构师package com.ican.yueban.jwgl; import java.io.IOException; import java.io.InputStream;import java.util.ArrayList;import java.util.List;import java.util.Scanner; import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements; import com.ican.yueban.utils.DateUtils;import com.ican.yueban.utils.GlobalConstant;import com.ican.yueban.utils.IOUtils;import com.ican.yueban.utils.ParseUtils; public class Jwgl { private static String stuNumber = "";private static String stuName = "";private static String Cookie = "";private String indexUrl = GlobalConstant.INDEX_URL;private String secretCodeUrl = GlobalConstant.SECRETCODE_URL;private String loginUrl = GlobalConstant.LOGIN_URL;private String mainUrl = GlobalConstant.MAIN_URL;private String queryClassroomUrl = GlobalConstant.QUERY_CLASSROOM_URL;private String queryClassroomGnmkdm = GlobalConstant.QUERY_CLASSROOM_GNMKDM;private String queryStuGradeUrl = GlobalConstant.QUERY_STU_GRADE_URL;private String queryStuGradeGnmkd = GlobalConstant.QUERY_STU_GRADE_GNMKDM;private String queryStuCourseUrl = GlobalConstant.QUERY_STU_COURSE_URL;private String queryStuCourseGnmkd = GlobalConstant.QUERY_STU_COURSE_GNMKDM;private String xixiaoqu = GlobalConstant.XIXIAOQU;private String identityStu = GlobalConstant.IDENTITY_STU;/** * 登录性能 * * @param stuNumber * @param password * @return * @throws Exception * @throws UnsupportedOperationException */public boolean login(String stuNumber, String password) throws UnsupportedOperationException, Exception { this.stuNumber = stuNumber; // 获取验证码 HttpGet secretCodeGet = new HttpGet(secretCodeUrl); CloseableHttpClient client = HttpClients.createDefault(); CloseableHttpResponse responseSecret = client.execute(secretCodeGet); // 获取返回的Cookie Cookie = responseSecret.getFirstHeader("Set-Cookie").getValue(); String viewState = IOUtils.getViewState(indexUrl, "", ""); // 将验证码下载到C盘 IOUtils.getSecret(responseSecret.getEntity().getContent(), "secretCode.png", "c://"); Scanner sc = new Scanner(System.in); System.out.println("请输出验证码:"); // 手动填充方才获取的验证码的值 String secret = sc.next().trim(); HttpPost loginPost = new HttpPost(loginUrl);// 创立登录的Post申请 loginPost.setHeader("Cookie", Cookie);// 带上第一次申请的Cookie List<NameValuePair> nameValuePairLogin = new ArrayList<NameValuePair>();// 封装Post提交参数 nameValuePairLogin .add(new BasicNameValuePair("__VIEWSTATE", viewState));// 暗藏表单值 nameValuePairLogin .add(new BasicNameValuePair("txtUserName", stuNumber));// 学号 nameValuePairLogin.add(new BasicNameValuePair("TextBox2", password));// 明码 nameValuePairLogin.add(new BasicNameValuePair("txtSecretCode", secret));// 验证码 nameValuePairLogin.add(new BasicNameValuePair("RadioButtonList1", identityStu));// 身份,默认学生 nameValuePairLogin.add(new BasicNameValuePair("Button1", "")); nameValuePairLogin.add(new BasicNameValuePair("lbLanguage", "")); nameValuePairLogin.add(new BasicNameValuePair("hidPdrs", "")); nameValuePairLogin.add(new BasicNameValuePair("hidsc", "")); UrlEncodedFormEntity entity = new UrlEncodedFormEntity( nameValuePairLogin, "GB2312"); loginPost.setEntity(entity); HttpResponse responseLogin = client.execute(loginPost); // client1.close(); // 第三步:判断提交数据是否胜利,胜利返回302 if (responseLogin.getStatusLine().getStatusCode() == 302) { // 如果提交胜利,带着Cookie申请重定向的main页面,并获取学生姓名 HttpGet mainGet = new HttpGet(mainUrl + stuNumber); mainGet.setHeader("Cookie", Cookie); mainGet.setHeader("Referer", loginUrl); HttpResponse responseMain = client.execute(mainGet); InputStream is = responseMain.getEntity().getContent(); String html = ""; try { html = IOUtils.getHtml(is, "GB2312"); } catch (Exception e) { System.out.println("解析html失败!"); e.printStackTrace(); } stuName = Jsoup.parse(html).getElementById("xhxm").text(); System.out.println("登录胜利!欢迎您:" + stuName); client.close(); return true; } else { System.out.println("登录失败!"); client.close(); return false; }}/** * 查问空教室 * * @throws Exception * * @throws Exception */public void queryClassroom(String xiaoqu, String xqj, String sjd) throws Exception { CloseableHttpClient client = HttpClients.createDefault(); String newQueryClassrommUrl = queryClassroomUrl + stuNumber + "&xm=" + stuName + queryClassroomGnmkdm;// 拼接申请的Url String parseSjd = ParseUtils.parseWeek(sjd);// 解析以后节次对应的字符串 String nowWeek = DateUtils.getWeek() + "";// 获取以后工夫是第几周 String viewState = IOUtils.getViewState(newQueryClassrommUrl, Cookie, mainUrl + stuNumber); // 封装查问空教室申请参数 List<NameValuePair> queryClassroomPair = new ArrayList<NameValuePair>(); queryClassroomPair.add(new BasicNameValuePair("__EVENTTARGET", "")); queryClassroomPair.add(new BasicNameValuePair("__EVENTARGUMENT", "")); queryClassroomPair .add(new BasicNameValuePair("__VIEWSTATE", viewState)); queryClassroomPair.add(new BasicNameValuePair("xiaoq", xiaoqu));// 校区类型,默认西校区 queryClassroomPair.add(new BasicNameValuePair("jslb", ""));// 教室类别,默认为空 queryClassroomPair.add(new BasicNameValuePair("min_zws", "0"));// 最小座位数,默认为0 queryClassroomPair.add(new BasicNameValuePair("max_zws", ""));// 最大座位数,默认为空 queryClassroomPair.add(new BasicNameValuePair("ddlKsz", nowWeek));// 起始周,默认以后周 queryClassroomPair.add(new BasicNameValuePair("ddlJsz", nowWeek));// 完结周,默认以后周 queryClassroomPair.add(new BasicNameValuePair("xqj", xqj));// 星期几,默认当天 queryClassroomPair.add(new BasicNameValuePair("ddlDsz", ""));// 单双周,默认 queryClassroomPair.add(new BasicNameValuePair("sjd", parseSjd));// 第几节 queryClassroomPair.add(new BasicNameValuePair("Button2", "空教室查问")); queryClassroomPair.add(new BasicNameValuePair("xn", "2015-2016")); queryClassroomPair.add(new BasicNameValuePair("xq", "2")); queryClassroomPair.add(new BasicNameValuePair("ddlSyXn", "2015-2016")); queryClassroomPair.add(new BasicNameValuePair("ddlSyxq", "2")); UrlEncodedFormEntity entityClassroom = new UrlEncodedFormEntity( queryClassroomPair); HttpPost queryClassroomPost = new HttpPost(newQueryClassrommUrl); // newQueryClassrommUrl示例:http://jwgl2.ujn.edu.cn/xxjsjy.aspx?xh=20121214104&xm=XXX&gnmkdm=N121611 queryClassroomPost.setEntity(entityClassroom); queryClassroomPost.setHeader("Referer", mainUrl + stuNumber);// 设置头信息 queryClassroomPost.setHeader("Cookie", Cookie); HttpResponse responseClassroom = client.execute(queryClassroomPost); InputStream is = responseClassroom.getEntity().getContent(); String html = IOUtils.getHtml(is, "GB2312"); Document doc = Jsoup.parse(html); Elements eleClassroom = doc.select("td"); Elements eleInfo = doc.select("#lblbt"); System.out.println(eleInfo.get(0).text()); for (int i = 0; i < eleClassroom.size(); i++) { // 只打印教室名称 if (i % 8 == 1) { System.out.println(eleClassroom.get(i).text()); } } client.close();}/** * 重载查问空教室办法,默认工夫,课程节次的无参数查询方法 * * @throws IOException * @throws ClientProtocolException */public void queryClassroom() throws ClientProtocolException, IOException, Exception { String weekDay = DateUtils.getWeekDay() + "";// 获取以后工夫是星期几 String sdj = DateUtils.getNowCourse() + "";// 获取以后工夫是第几节课 new Jwgl().queryClassroom(xixiaoqu, weekDay, sdj);}/** * 查问集体问题办法 * * @throws ClientProtocolException * @throws IOException */public void queryStuGrade(String xn, String xq) throws ClientProtocolException, IOException { CloseableHttpClient client = HttpClients.createDefault(); String newQueryStuGradeUrl = queryStuGradeUrl + stuNumber + "&xm=" + stuName + queryStuGradeGnmkd; HttpPost queryGradePost = new HttpPost(newQueryStuGradeUrl); String viewState = IOUtils.getViewState(newQueryStuGradeUrl, Cookie, mainUrl + stuNumber); // 封装申请参数 List<NameValuePair> queryGradePair = new ArrayList<NameValuePair>(); queryGradePair.add(new BasicNameValuePair("__EVENTTARGET", "")); queryGradePair.add(new BasicNameValuePair("__EVENTARGUMENT", "")); queryGradePair.add(new BasicNameValuePair("__VIEWSTATE", viewState)); queryGradePair.add(new BasicNameValuePair("hidLanguage", "")); queryGradePair.add(new BasicNameValuePair("ddlXN", xn));// 学年 queryGradePair.add(new BasicNameValuePair("ddlXQ", xq));// 学期 queryGradePair.add(new BasicNameValuePair("ddl_kcxz", "")); queryGradePair.add(new BasicNameValuePair("btn_xq", "学期成绩")); queryGradePost.setHeader("Cookie", Cookie); queryGradePost.setHeader("Referer", mainUrl + stuNumber); UrlEncodedFormEntity entityGrade = new UrlEncodedFormEntity( queryGradePair); queryGradePost.setEntity(entityGrade); HttpResponse responQueryGradePost = client.execute(queryGradePost); String gradeHtml = IOUtils.getHtml(responQueryGradePost.getEntity() .getContent(), "GB2312"); // System.out.println(gradeHtml); Document gradeDoc = Jsoup.parse(gradeHtml); Elements eleGrade = gradeDoc.select("td"); // 按需要解析html<td>标签内容并输入 for (int i = 0; i < 7; i++) { System.out.println(eleGrade.get(i).text()); } for (int i = 11; i < eleGrade.size(); i = i + 10) { if (i + 15 < eleGrade.size()) { System.out.print(eleGrade.get(i).text() + " "); i = i + 5; System.out.print(eleGrade.get(i).text()); System.out.println(); } client.close(); }}/** * 查问集体课表办法 * * @param xnd * @param xqd * @throws ClientProtocolException * @throws IOException */public void queryStuCourse(String xnd, String xqd) throws ClientProtocolException, IOException { CloseableHttpClient client = HttpClients.createDefault(); String newQueryStuCourseUrl = queryStuCourseUrl + stuNumber + "&xm=" + stuName + queryStuCourseGnmkd; String viewState = IOUtils.getViewState(newQueryStuCourseUrl, Cookie, mainUrl + stuNumber); HttpPost queryStuCoursePost = new HttpPost(newQueryStuCourseUrl); List<NameValuePair> stuCoursePair = new ArrayList<NameValuePair>(); stuCoursePair.add(new BasicNameValuePair("__EVENTTARGET", "xqd")); stuCoursePair.add(new BasicNameValuePair("__EVENTARGUMENT", "")); stuCoursePair.add(new BasicNameValuePair("__VIEWSTATE", viewState)); stuCoursePair.add(new BasicNameValuePair("xnd", xnd)); stuCoursePair.add(new BasicNameValuePair("xqd", xqd)); UrlEncodedFormEntity entitySource = new UrlEncodedFormEntity( stuCoursePair); queryStuCoursePost.setEntity(entitySource); queryStuCoursePost.setHeader("Cookie", Cookie); queryStuCoursePost.setHeader("Referer", mainUrl + stuNumber); HttpResponse responseStuCourse = client.execute(queryStuCoursePost); String html = IOUtils.getHtml(responseStuCourse.getEntity() .getContent(), "GB2312"); Document docCourse = Jsoup.parse(html); Elements eleCourse = docCourse.select("td"); for (int i = 2; i < eleCourse.size(); i++) { System.out.print(eleCourse.get(i).text() + " "); if (i % 9 == 0) { System.out.println(); } }}public static void main(String[] args) { Jwgl jw = new Jwgl(); try { jw.login("这里是学号", "这里是明码"); System.out.println("查问问题测试-------"); jw.queryStuGrade("2015-2016", "1"); // 查问西校区,周一,第12节空教室测试。 // jw.queryClassroom("1", "1", "2"); System.out.println("查问空教室测试------"); jw.queryClassroom(); System.out.println("查问集体课表测试-------"); jw.queryStuCourse("2014-2015", "1"); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } //QQ:451209214

August 8, 2021 · 5 min · jiezi

关于web:实战-如何使用云开发-Webify-部署-vuepress

webifyWeb 利用托管:Web 利用托管(CloudBase Webify)为您的 Web 利用提供一站式托管服务,反对包含动态网站、动静 Web 服务各种类型的 Web 利用,提供默认域名、自定义域名、HTTPS 和 CDN 减速等性能,晋升 Web 利用的性能和安全性,此外还提供基于 Git 的工作流、DevOps 流程和减速开发部署流程,为您提供极佳的服务体验。 VuePress :VuePress 是一个以 Markdown 为核心的动态网站生成器。你能够应用 Markdown 来书写内容(如文档、博客等),而后 VuePress 会帮忙你生成一个动态网站来展现它们。 创立我的项目1.创立并进入一个新目录 mkdir vuepress-startercd vuepress-starter2.初始化我的项目 yarn init -y3.将 VuePress 装置为本地依赖 yarn add -D vuepress@next4.在 package.json 中增加一些 scripts { "scripts": { "docs:dev": "vuepress dev docs", "docs:build": "vuepress build docs" }}5.创立你的第一篇文档 mkdir docsecho '# Hello VuePress' > docs/README.md6.在本地启动服务器来开发你的文档网站 yarn docs:devVuePress 会在 http://localhost:8080 启动一个热重载的开发服务器。当你批改你的 Markdown 文件时,浏览器中的内容也会自动更新。拜访后能够看到上面这个页面 ...

August 2, 2021 · 1 min · jiezi

关于web:TomCat在IDEA控制台输出乱码的解决

解决 在TomCat文件夹中的conf文件夹中找到 logging.properties文件 其中设置了5个UTF-8 把其中1,2,5改成GBK 1catalina.org.apache.juli.AsyncFileHandler.level = FINE1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-82localhost.org.apache.juli.AsyncFileHandler.level = FINE2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-83manager.org.apache.juli.AsyncFileHandler.level = FINE3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs3manager.org.apache.juli.AsyncFileHandler.prefix = manager.3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-84host-manager.org.apache.juli.AsyncFileHandler.level = FINE4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8java.util.logging.ConsoleHandler.level = FINEjava.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatterjava.util.logging.ConsoleHandler.encoding = UTF-8

July 22, 2021 · 1 min · jiezi

关于web:Go语言入门分享

简介: Go语言出自Ken Thompson、Rob Pike和Robert Griesemer之手,起源于2007年,并在2009年正式对外公布。Go的次要指标是“兼具Python等动静语言的开发速度和C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的状况下升高代码的复杂性,具备“部署简略、并发性好、语言设计良好、执行性能好”等劣势。 作者 | 赋行起源 | 阿里技术公众号 前言已经我是一名以Java语言为主的开发者,做过JavaWeb相干的开发,起初转Android,还是离不开Java,直到转去做大前端了,其实也就是始终在用JS写业务。现在因为集体倒退起因,来到阿里云,因为我的项目须要就撸起了Go语言;多年编程教训通知我,语言只是工具罢了,重要的还是其思维与逻辑,所以只需学学语法就好了,于是我便三天入门Go,期间次要用Java和JS来类比,语法变动之大,差点让我从入门到放弃了!其实,还真不是学习语法就好了呢,其中蕴含了很多Go的设计理念。正所谓好忘性不如敲烂键盘,学过的货色,还是要积淀积淀,也能够分享进去一起探讨,更有助于成长,于是我就简略记录了一下我的Go语言入门学习笔记。 一 简介Go语言出自Ken Thompson、Rob Pike和Robert Griesemer之手,起源于2007年,并在2009年正式对外公布,其实都是Google的,设计Go语言的初衷都是为了满足Google的需要。Go的次要指标是“兼具Python等动静语言的开发速度和C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的状况下升高代码的复杂性,具备“部署简略、并发性好、语言设计良好、执行性能好”等劣势。最次要还是为了并发而生,并发是基于goroutine的,goroutine相似于线程,但并非线程,能够将goroutine了解为一种虚构线程。Go语言运行时会参加调度goroutine,并将goroutine正当地调配到每个CPU中,最大限度地应用CPU性能。 二 环境咱们玩Java的时候须要下载JDK,相似于此,用Go开发也须要下载Go,外面提供各种develop-kit、library以及编译器。在官网下载mac版本pkg后间接装置,最初用 go version 命令验证版本: 而后就是设置这两个环境变量,mac零碎是在 .bash_profile 文件外面: export GOROOT=/usr/local/goexport GOPATH=$HOME/goGOROOT:示意的是Go语言编译、工具、规范库等的装置门路,其实就相当于配置JAVA_HOME那样。GOPATH:这个和Java有点不一样,Java里并不需要设置这个变量,这个示意Go的工作目录,是全局的,当执行Go命令的时候会依赖这个目录,相当于一个全局的workspace。个别还会把$GOPATH/bin设置到PATH目录,这样编译过的代码就能够间接执行了。1 纯文本开发编写代码,能够保留在任意中央,例如新建一个helloworld目录,创立hello.go文件: package mainimport "fmt"func main() { fmt.Println("hello, world")}而后执行 go build hello.go 就能够编译出hello文件,在./hello就能够执行了;或者间接 go run hello.go 合二为一去执行。执行这个命令并不需要设置环境变量就能够了。看起来和c差不多,然而和Java不一样,运行的时候不须要虚拟机。晚期的GO工程也是应用Makefile来编译,起初有了弱小的命令 go build、go run,能够间接辨认目录还是文件。 2 GoLand主动import,超爽的体验!不必按command + /了! 运行我的项目须要设置build config,和Android、Java的都差不多,例如创立一个hello-goland我的项目: 导入go module我的项目的时候须要勾选这项,否则无奈像maven/gradle那样sync下载依赖: 3 VSCODE间接搜寻Go插件,第一个最多装置量的就是了,我还没用过所以不太分明如何。 三 工程构造在设置GOPATH环境变量的时候,这个目录外面又分了三个子目录bin、pkg、src,别离用于寄存可执行文件、包文件和源码文件。当咱们执行Go命令的时候,如果咱们指定的不是当前目录的文件或者绝对路径的目录的话,就会去GOPATH目录的去找。这样在GOPATH目录创立了xxx的目录后,就能够在任意中央执行 go build xx 命令来构建或者运行了。 pkg目录应该是在执行 go install 后生成的包文件,包含.a这样的文件,相当于一个归档。 ...

July 15, 2021 · 6 min · jiezi

关于web:KubeVela-上手1|让云端应用交付更加丝滑

简介: KubeVela 是阿里云和微软独特发动的 OAM(Open Application Model)规范的技术实现,旨在打造对立、规范、跨环境的云端利用交付,省时省力,轻松简略 作者|KubeVela 社区 本文适宜所有软件工程师进行浏览应用,尤其是心愿开辟后端技术视线的前端、挪动端和全栈工程师们。 前言在软件开发越来越麻利的明天,后端技术架构也始终一刻不停地演进以适应需要的变动。 从最后的物理机时代、云计算萌芽的虚拟机时代,再到大暴发的容器时代,所有这所有,咱们原本都朝着一个确定方向倒退,即:让利用交付更好、更快和更强。目前处在容器时代的咱们,一边迎接 Kubernetes 等云原生技术浪潮带来的丰盛能力,一边又不得不面对这些懊恼: Kubernetes 平缓的学习曲线和一堆目迷五色的概念,使得利用开发人员的开发效率很难令人满意。服务利用开发的平台团队,却没有一个适合的框架来构建用户敌对且高度可扩大的形象。尤其在将来的混合云、多云、分布式云这些日益简单的业务场景中,利用交付更是变得碎片化。KubeVela 是阿里云和微软独特发动的 OAM(Open Application Model)规范的技术实现,旨在打造对立、规范、跨环境的云端利用交付,省时省力,轻松简略: 以应用程序为核心- KubeVela 引入了凋谢应用程序模型(OAM)来作为更高级别的 API,通过高度一致的工作流来捕捉面向混合环境的微服务交付的所有信息。包含多集群散发策略、流量调配和滚动更新等运维特色,都申明在利用级别。用户无需关怀任何基础设施细节,只须要定义和部署利用即可。可编程式交付工作流- KubeVela 的模型层是利用 CUE 来实现的。它使得你能够轻松地将利用交付工作流申明为一个 DAG,并将所有步骤和利用部署需要以可编程的形式粘合在一起。这里没有任何限度,原生可扩大。运行时无关 - KubeVela 是一个齐全与运行时无关的利用交付与管理控制立体。它能够依照你定义的工作流与策略,面向混合环境交付和治理任何利用组件:包含容器、云函数、数据库甚至 AWS EC2 实例。当初快跟我来,走进 KubeVela 一探到底! 能够先相熟的概念Docker:罕用的一种容器。Image:容器镜像。Docker 的最外围组成,简略了解为可拷贝的装置光盘。DockerHub:Docker 公司负责保护的一个容器镜像公开下载核心。Kubernetes:容器编排规范,工作是对立治理调度容器。YAML:一种配置文件格式。话不多说,来欢快地敲代码学习吧! 试玩 KubeVela 环境搭建这一次,咱们将介绍应用 Kind(Kubernetes in Docker)来搭建本地 Kubernetes 环境。顾名思义,Kubernetes in Docker,所以持续往下看之前,请确保追随链接先装置好 Docker(_https://docs.docker.com/deskt...)和 Kubernetes 的命令行工具 kubectl(_https://kubernetes.io/zh/docs...)。 装置 Kind,如果是 MacOS 零碎,请在命令行键入: curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-darwin-amd64chmod +x ./kindmv ./kind /some-dir-in-your-PATH/kind如果是 Windows 则应用: curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.11.1/kind-windows-amd64Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe装置好 Kind 之后启动 Kind,运行如下命令: ...

July 13, 2021 · 2 min · jiezi

关于web:什么是-Immutable-Web-Apps

官网 不可变 Web 应用程序是一种与框架无关的办法,用于构建和部署动态单页应用程序: 最大限度地升高实时公布的危险和复杂性。简化和最大化缓存。最大限度地缩小对服务器和运行时环境治理的需要。通过简略、灵便的原子部署实现继续交付。准则该办法基于严格拆散的准则: 从代码配置。从构建工作中开释工作。来自动态内容的动静内容。以下概念定义了不可变 Web 应用程序的外围要求。 它们与框架和基础设施无关。 Static assets are independent of the web application environment(s)动态资产是从 Web 利用程序代码库的构建生成的文件(javascript、css、图像)。 当它们不蕴含任何特定于环境的内容并且它们被公布到一个独特的、独立的地位时,它们就会变得不可变。 Static assets must not contain anything that is environment-specific所有当先的应用程序框架(Angular CLI、Create React App、Ember CLI、Vue CLI 3)都倡议在编译时定义环境变量。 这种做法要求为每个环境生成动态资产,并针对环境的任何更改从新生成动态资产。 不可变 Web 应用程序援用在全局范畴内定义的环境变量并援用以下两种形式之一: 间接从窗口对象通过包装环境变量的注入服务一个例子: 动态资产必须托管在惟一且独立于 Web 应用程序环境的地位。 不蕴含任何特定环境的动态资产能够构建一次,公布到惟一地位,而后在 Web 应用程序的多个环境中应用。 这些动态资产与内容交付网络 (CDN)(Google 托管库、cdnjs、jsDelivr、UNPKG)上托管的 javascript 库具备雷同的品质: https://ajax.googleapis.com/a... 下面的 jquery 库的地位,被有数的 web 应用程序援用,既独立于应用程序,又是惟一的版本。 https://assets.myapp.com/apps... 同样,Web 应用程序 javascript 文件的地位是惟一的,并且托管在专用于动态资产的地位。 动态资产 Web 服务器是 Web 应用程序版本的存储库。 ...

July 10, 2021 · 2 min · jiezi

关于web:The-Graph介绍

The Graph是用于索引和查问区块链数据的去中心化协定。建设subgraphs用规范 GraphQL API 查问这些索引解决了去中心化数据遍历的苦楚。 海量的去中心化数据难以统计计算,现通过一个为区块链数据提供索引的主机服务解决了这个问题。 应用规范 GraphQL API 查问这些索引(“subgraphs”)。 将来,主机服务将演变为具备雷同性能的齐全去中心化的协定。 两者都由 Graph Node 的开源实现提供反对,它提供了一种用于查问以太坊和IPFS网络数据的公开通明的解决方案,任何人都能够基于其提供的凋谢API创立并公布索引数据,即subgraph。 本篇入门文档通过一个简略交易量统计例子,带你领略一番如传统数据库信息汇聚之旅(收集与抓取),当具备THe Graph常识储备后,咱们就开始吧。 次要钻研路线(一路私服到底)智能合约被truffer cmd 公布到truffle/ganache 容器(私链)合约adress&abis与thegraph节点(私node)markdemo1工程(the graph)监听,收集数据,解决数据,包装通用查问the graph输入查问接口到Dapp2(8000->3000)/query page(8001)Dapp2 调用合约交易触发the graph输入变动辅助输入: the graph subgraphs官网浏览https://thegraph.com/explorer 集体subgraphs核心https://thegraph.com/explorer/dashboardtruffle/ganache 对智能合约治理(部署、调试)Rimax 浏览器版对合约操作Dapp2对智能合约的操作Dapp1对智能合约的监听truffle/ganache 、ganache cl、the graph私节点 部署和应用各种网络、本机环境、脚本替换踩过的坑(坑就是是为后来者节约工夫)公布一个线上subgraph到https://thegraph.com/explorer线上体验subgraph在 https://thegraph.com/explorer 上有很多subgraph,让咱们来看看uniswap-v2 Githubhttps://github.com/Uniswap公布地址IDQmWTrJJ9W8h3JE19FhCzzPYsJ2tgXZCdUqnbyuo64ToTBNsubgraphQueries (HTTP)https://api.thegraph.com/subg...大量可体验数据查问uniswap-v2 关上浏览器体验一下先 2输出查问性能、参数和条件【点击紫色按钮】—>到节点数据中心3里->4.查问出冀望后果;当让2这个通用API也能够通过编程形式来调用,传入不同参数,体验下GraphQL API 查问 { pairs{id}}{ pairs(where:{id:"0x00004ee988665cdda9a1080d5792cecd16dc1220"}){id}}{ pairs(orderBy:id){id}}The graph 用subgraph跟踪智能合约 数据抓取/事件监控数据汇聚及查问 获取存储展现线上智能合约的subgraph简略例子markdemo11. 抓以后工夫到上次update工夫内的记录2. 存交易大于2的记录3. 取某客户所以交易记录的条数和汇总金额4. 以上仅在设想中(实在the graph 就是踩好坑) 按 the graph 思路来1) 零碎初始化把链上最近的区块拉下了,定时取最近区块2)subgraph的监听事件(原理就是event监听统统拉下数据,所以1,2,3就无意义)是拉下所有数据3)让咱们来看看我踩过的那些坑 mac机器环境遗留问题brew upgrade 时文件找不到,长期解决找到一个同目录类似文件替换(始终睡不着觉,后找到计划见附录brew upgrade装置报错问题解决替换homebrew-bottles)代理端口8001和the graph 零碎端口抵触,改代理yarn,git的代理和镜像要不停切换来应答家喻户晓的网络现状docker 里the graph拜访里面truffle/ganache系统配置,脚本生成一个拜访不可达ip172.18.2.0,批改为本机IP 192.168.0.136(不能应用127.0.0.1补脑docker拜访localhost回到哪里?)sel 命令第二次替换合同号要用第一次的合同号:例子程序中有2合同,可能都会再批改一次truffle/ganache每次启动会生成不同的账号序列,所以不同工夫导入合同的owner不同的,不要记第一个账号,会坑死人(能够用合同的历史交易记录查看owner,见markdemo2) 4) 写subgraph 须要留神或曾经实现的脚手架id: ID! 要求每个实体都有一个非空的不反复主键IDdataSources数据源配置初始读取块跳过合同公布之前的那些块:startBlock: 6627917公布subgraph例子markdemo1先要部署容器公布一个智能合约(可参见Hardhat + VS code,本篇应用Ganache部署) ...

July 5, 2021 · 6 min · jiezi

关于web:540-万美元万维网源代码以-NFT-形式成功拍卖

万维网源代码拍卖流动昨日落下帷幕,源代码(1990-1991)的 NFT 版本最终以略高于 540 万美元的价格发售。 这场拍卖由万维网之父蒂姆 - 伯纳斯 - 李(Tim Berners-Lee)爵士发动,于 6 月 23 日正式开启,起拍价 1000 美元。 这个名为 “This Changed Everything“的 NFT 作品共蕴含四局部: 带有原始工夫戳的源代码文件(1990.10.03-1991.8.24),蕴含 9555 行代码以及领导晚期用户应用 web 的原始 HTML 文档。代码涵盖蒂姆爵士创造的三种语言和协定的实现(HTML、HTTP、URL)。一段时长 30 分钟 25 秒的视频,用动画模式展现了代码编写过程;蒂姆爵士应用 Python 基于原始文件创建的残缺代码海报;一封蒂姆-伯纳斯-李写的信,记录了代码创立过程。万维网代码图示 WWW(World Wide Web,万维网)是首个超媒体浏览器 / 编辑器,于 1989 年由蒂姆 - 伯纳斯 - 李创造。这一创造带来了 90 年代通用网站的倒退,使得咱们当初所晓得的古代互联网的应用成为可能。万维网的呈现确实扭转了所有(This Changed Everything)。 一场 NFT 拍卖引起的争议NFT (Non-Fungible Tokens) 是一种数字资产,艺术品、不动产或收藏品等非同质化资产的代币化版本。NFT 无奈复制,因此独特且有价值。往年,越来越多的 NFT 拍卖新闻涌现。 然而,此次拍卖却引起了大量争议,很多人认为其不合乎互联网价值。 对此,蒂姆-伯纳斯-李示意:“这和互联网的价值完全一致。我并不是发售代码,我发售了一张本人应用 Python 制作的图像,用于展现源代码贴在墙上是什么样子,并且有我的签名。如果他们认为我发售 NFT 海报不适合,那么发售一本书呢?我已经出过书,挣到过钱,然而并未影响到互联网的自在凋谢实质。当初也是一样。” 他示意:“无论是艺术品还是这样的数字艺术品,NFT 都是该畛域最新的游戏规则扭转者,也是目前最合适的所有权表现形式。NFT 模式是将 web 起源打包的现实形式。” ...

July 1, 2021 · 1 min · jiezi

关于web:你有一份Rx编程秘籍请签收

一、背景在学习Rx编程的过程中,了解Observable这个概念至关重要,惯例学习过程中,通常须要进行屡次“碰壁”能力逐步“开悟”。这个有点像小时候学骑自行车,必须摔几次能力把握一样。当然如果有方法能“言传”,则能够少走一些弯路,尽快领悟Rx的精妙。 二、ObservableObservable从字面翻译来说叫做“可观察者”,换言之就是某种“数据源”或者“事件源”,这种数据源具备可被察看的能力,这个和你被动去捞数据有本质区别。用一个形象的比喻就是Observable好比是水龙头,你能够去关上水龙头——订阅Observable,而后水——数据就会源源不断流出。这就是响应式编程的核心思想——变被动为被动。不过这个不在本篇文章中详解。 (图片起源自网络) Observable是一种概念,能够通过不同的形式去具体实现,本文通过高阶函数来实现两个罕用Observable:fromEvent和Interval。通过解说对Observable的订阅和勾销订阅两个行为来帮忙读者真正了解Observable是什么。 三、高阶函数高阶函数的概念来源于函数式编程,简略的定义就是一个函数的入参或者返回值是一个函数的函数。例如: function foo(arg){ return function(){ console.log(arg) }}const bar = foo(“hello world”)bar() // hello worldps:高阶函数能做的事件很多,这里仅仅针对本文须要的情景进行应用。下面这个foo函数的调用并不会间接打印hello world,而只是把这个hello world给缓存起来。前面咱们依据理论须要调用返回进去的bar函数,而后真正去执行打印hello world的工作。 为啥要做这么一步封装呢?实际上这么做的成果就是“提早”了调用。而所有的精华就在这个“提早”两个字外面。咱们实际上是对一种行为进行了包装,看上去就像某种统一的货色,好比是快递盒子。 (图片起源自网络) 外面能够装不同的货色,但对于物流来说就是对立的货色。因而,就能够造成对快递盒的对立操作,比方重叠、运输、存储、甚至是关上盒子这个动作也是统一的。 回到后面的例子,调用foo函数,相当于打包了一个快递盒,这个快递盒外面有一个固定的程序,就是当关上这个快递盒(调用bar)时执行一个打印操作。 咱们能够有foo1、foo2、foo3……外面有各种各样的程序,然而这些foos,都有一个独特的操作就是“关上”。(前提是这个foo会返回一个函数,这样能力满足“关上”的操作,即调用返回的函数)。 function foo1(arg){ return function(){ console.log(arg+"?") }}function foo2(arg){ return function(){ console.log(arg+"!") }}const bar1 = foo1(“hello world”)const bar2 = foo2("yes")bar1()+bar2() // hello world? yes!四、快递盒模型4.1 快递盒模型1:fromEvent有了下面的根底,上面咱们就来看一下Rx编程中最罕用的一个Observable—fromEvent(……)。对于Rx编程的初学者,起初很难了解fromEvent(……)和addEventListener(……)有什么区别。 btn.addEventListener("click",callback)rx.fromEvent(btn,"click").subscribe(callback)如果间接执行这个代码,的确成果是一样的。那么区别在哪儿呢?最间接的区别是,subscribe函数作用在fromEvent(……)上而不是btn上,而addEventListener是间接作用在btn上的。subscribe函数是某种“关上”操作,而fromEvent(……)则是某种快递盒。 fromEvent实际上是对addEventListener的“提早”调用 function fromEvent(target,evtName){ return function(callback){ target.addEventListener(evtName,callback) }}const ob = fromEvent(btn,"click")ob(console.log)// 相当于 subscribe哦!fromEvent实质上是高阶函数 至于如何实现subscribe来实现“关上”操作,不在本文探讨范畴,在Rx编程中,这个subscribe的动作叫做“订阅”。“订阅”就是所有Observable的对立具备的操作。再次强调:本文中对Observable的“调用”在逻辑上相当于subscribe。 上面再举一个例子,根本能够让读者举二反N了。 4.2 快递盒模型2:intervalRx中有一个interval,它和setInterval有什么区别呢? 预计有人曾经开始抢答了,interval就是对setInterval的提早调用!bingo! ...

June 15, 2021 · 2 min · jiezi

关于web:构建高性能Web站点学习笔记03

第3章 服务器并发解决能力3.1 吞吐率吞吐率:Web服务器单位工夫内解决的申请数最大吞吐率:单位工夫内服务器可能解决的最大申请数压力测试:模仿大量并发用户继续发送HTTP申请,统计测试继续的总工夫,据此计算吞吐率。(个别会简化模型,对有代表性的特定申请进行压力测试)3.1.1 压力测试的前提条件并发用户数:某一时刻同时向服务器发送申请的用户总数。总申请数申请资源形容3.1.2 申请等待时间用户均匀申请等待时间:肯定并发用户数下,对于单个用户的服务质量服务器均匀申请解决工夫:吞吐率的倒数Web服务器应用多个执行流并发解决申请(交织应用CPU工夫片),单个用户的申请等待时间会拉长,但服务器均匀申请工夫可能缩小。3.1.3 来一次压力测试压力测试软件:ab,LoadRunner,Jmeterab测试: ab -n1000 -c10 http://xxx.com/test.html#-n1000 示意总申请数1000#-c10 示意并发用户数10申请后果 Concurrency Level: 10Time taken for tests: 7.616 secondsComplete requests: 1000Failed requests: 0Non-2xx responses: 1000Total transferred: 374000 bytesHTML transferred: 178000 bytesRequests per second: 131.30 [#/sec] (mean)Time per request: 76.161 [ms] (mean)Time per request: 7.616 [ms] (mean, across all concurrent requests)Transfer rate: 47.96 [Kbytes/sec] received吞吐率 Requests per second = Complete requests / Time taken for tests用户均匀申请等待时间Time per request = Time per request / (Complete requests / Concurrency Level)服务器均匀申请解决工夫Time per request(across all concurrent requests) = Time taken for tests / Complete requests ...

June 3, 2021 · 1 min · jiezi

关于web:构建高性能Web站点学习笔记02

第2章 数据的网络传输2.1 分层网络模型基础知识:OSI七层模型、TCP/IP四层模型OSI(Open System Interconnection)七层模型: 应用层:网络服务与用户的接口。(HTTP,FTP,DNS,TELNET,POP3...)表示层:定义数据格式及加密。(JPEG,ASCII...)会话层:建设,治理,终止会话。(RPC,SQL...)传输层:定义数据传输的协定端口号,流控,过错校验。(TPC,UDP...)网络层:逻辑地址寻址,实现不同网络间的门路抉择。(IPV4,IPV6...)数据链路层:建设逻辑连贯,进行硬件地址寻址、过错校验等。物理层:建设,保护,断开物理连贯。TCP/IP四层模型: 应用层: 为用户提供所须要的各种服务。传输层: 为应用层实体提供端到端的通信性能,保障了数据包的程序传送及数据的完整性。网际互联层: 次要解决主机到主机的通信问题。(OSI模型的网络层)网络接入层: 负责监督数据在主机和网络之间的替换。 (OSI模型的物理层和数据链路层绝对应)2.2 带宽数据如何发送1.数据写入内存地址空间(变量赋值)2.通过零碎函数库接口向内核收回零碎调用,将数据从用户态内存区复制到内核缓冲区。3.内核告诉网卡控制器取数据;网卡控制器依据网卡驱动信息将要发送的数据复制到网卡缓冲区。4.对数据进行字节到位的转换,将数字信号发送到线路中,同时开释缓冲区。5.网卡通过物理安装生成能够流传的各种信号(电信号/光信号)数据发送速度数据发送安装将二进制信号传送至线路的能力,称为信号传输频率。数据链路层对于数据帧传输的管制机制是依照接管能力来确定发送速度的。要进步计算机总线宽度,能够进步频率和总线宽度。2.3 响应工夫下载速度下载速度:单位工夫内从服务器达到用户PC的数据量大小,个别用字节数来形容Bytes/s。数据从服务器开始发送到齐全达到用户PC的工夫,称为响应工夫。解决工夫:数据在替换节点中为存储转发而进行解决破费的工夫。响应工夫 = 发送工夫 + 流传工夫 + 解决工夫2.4 互联互通

May 30, 2021 · 1 min · jiezi

关于web:webpack相关整理

package.json我的项目的根目录上面个别都会有一个package.json文件,定义了这个我的项目所须要的各种模块,以及我的项目的配置信息。 #一个最简略的package.json(定义了项目名称和我的项目版本){ "name" : "xxx", "version" : "0.0.0",}scripts字段,指定了运行脚本命令的npm命令的缩写比方npm run start将会执行接下来的操作 "scripts": { "start": "一条残缺的命令",}dependencies字段和devDependenciesdependencies字段指明了我的项目运行所依赖的木块,devDependencies字段指定了我的项目开发所须要的模块。两者都指向一个对象,这个对象的各个成员,别离由模块名和对应的版本要求组成。p.s. package.json能够手工书写,也能够npm init命令主动生成。 摘抄博主的文档:https://javascript.ruanyifeng...Q1:--save-dev 和 --save的区别?S1:前者装置到生产环境所需的模块devDependencies,后者会装置到运行环境所须要的模块dependencies。Babelp.s. Babel是一个转码器,能够将ES6代码转换为ES5代码,以反对现有环境的运行。 1.配置文件.babelrc这个文件用来设置转码规定和插件。 #根本格局{ "presets": [], "plugins": []}在Vue-Cli4生成的我的项目中,这个配置文件叫做babel.config.js 2.命令行转码babel-cli$ npm install --global babel-cli 相干文档:(阮一峰老师的集体博客)http://www.ruanyifeng.com/blo...

May 26, 2021 · 1 min · jiezi

关于web:深入理解Linux中网络IO复用并发模型视频笔记

原视频地址: https://www.bilibili.com/vide... 模型1-单线程Accept 模型2-单线程Accept+多线程读写业务

May 8, 2021 · 1 min · jiezi

关于web:15个免费生成器用于加速Bootstrap开发

这是15个收费工具的残缺列表,可用于为最新的Bootstrap 5构建/生成各种自定义组件。 Glassmorhismp 生成工具 花式边框半径生成器工具 Instagram过滤器生成工具 卡片生成工具 CSS突变生成工具 元标记生成工具 按钮生成工具 暗影生成工具 图标动画生成工具 响应表生成工具 Flexbox生成工具 页脚生成工具 SVG波浪生成工具 徽标生成工具 导航栏生成工具

April 30, 2021 · 1 min · jiezi

关于web:基于-Flutter-的-Web-渲染引擎北海正式开源

简介: 阿里巴巴历时 3 年自研开发的 Web 渲染引擎北海(英文名:Kraken)正式开源,致力打造易扩大,跨平台,高性能的渲染引擎,并已在优酷、大麦、天猫等业务场景中应用。 作者 | 染陌起源 | 阿里技术公众号 阿里巴巴历时 3 年自研开发的 Web 渲染引擎北海(英文名:Kraken)正式开源,致力打造易扩大,跨平台,高性能的渲染引擎,并已在优酷、大麦、天猫等业务场景中应用。 官网:https://openkraken.comGithub:https://github.com/openkraken... 一 背景 互联网业务热火朝天地倒退离不开跨平台技术,而最成熟的跨平台技术就是大家相熟的浏览器了,它与生俱来的跨平台能力、凋谢的规范以及弱小的生态使它成为煊赫一时的容器之一。而因为其自身不是为了性能而设计的,并且历史包袱重、兼容性、厂商更新慢等问题,浏览器在挪动端的体现并不突出。只管网络以及硬件的倒退带来了足够多的性能红利,然而日益简单的业务总能把已有的性能吃透。 过来也有很多对跨平台计划的摸索与实际,新的技术计划也随着历史的浪潮一直地倒退。从最早的 H5 计划到 Hybrid 计划,以及起初的 Weex/React Native 计划,到当初热火朝天的 Flutter。 Flutter 因为其精简的渲染管线,高效的布局渲染能力,以及自绘渲染的个性,一跃成为这两年跨端届的新宠。而在 Flutter 呈现之前,支流的计划还是用 React Native(Weex)的,这套计划的底层调用了原生的 View。正是因为如此,导致这套计划很难保障齐全的多端一致性,因为原生 View 自身就存在一些限度,无限的能力不能满足开发者所有的需要,所以在实现 W3C 规范时有些牵强。而 Flutter 基于更底层的 Skia 做自绘渲染,能够很好地保障多端一致性。 相熟 Flutter 的同学必定晓得 Flutter 是用 Dart 语言以及 Widget 来开发的,虽说 Dart 语言对相熟 JavaScript 的前端同学来说上手老本并不是很高,对于 Widget 这种基于状态驱动的开发模式也曾经是十分相熟,然而整体上与已有基建与前端生态割裂的矛盾是无奈承受的。再者,动态化能力对于互联网业务来说几乎就是刚需,而目前来看 Flutter for Web 并不现实。 毕竟,引入一项新技术的第一步是解决引入这项新技术的老本问题。所以咱们积极探索一种向上对接前端生态,向下应用原生渲染的跨平台计划。 于是诞生了这款基于 W3C 规范的高性能跨终端渲染引擎——北海(Kraken)。 ...

April 25, 2021 · 2 min · jiezi

关于spring:分层架构项目中对各个层级的理解

明天真正写性能的时候,在模拟各个功能模块中的dao,entity,service,web。本人入手写代码的时候,才开始了解各个包中代码的作用。次要是对service,dao层和web中的controller的了解加深了。 dao 我的了解: dao层是在Mybatis框架下通过@MyBatisDao连贯后盾代码与数据库的,次要对连贯了对数据库的操作。 dao层用于定义方法接口,而后在service层和serviceimpl层实现接口的办法,从而达到操作数据库的目标。对数据库进行数据长久化操作,办法语句次要是针对数据库的,次要实现一些增删改查操作,在Mybatis中的办法次要与xx.xml内互相一一映射。 留神: interface entity 我的了解: entity层是用于定义实体,定义各个属性以及各个属性的getter和setter办法。 实体层,用于寄存实体类,与数据库中的属性值根本保持一致,实现setter和getter办法。 service 我的了解: service层是用于实现操作的具体方法,蕴含了对页面操作模块的代码。 service层用于寄存业务逻辑解决,也有对于数据库的操作,但不间接和数据库打交道,为controller层提供办法接口,service层不仅有接口也有接口的实现办法。。 web 我的了解: web层中的controller次要将后盾与前端连接起来,从前端获取对后盾的操作,并将操作好的数据显示到前端界面。 管制层,负责具体模块的业务流程管制,须要调用service逻辑设计层的接口来管制业务流程。因为service中的办法才是须要应用到的,controller通过接管前端传过来的参数进行业务操作,再将处理结果返回给前端。

April 22, 2021 · 1 min · jiezi

关于阿里云:春色满园关不住带你体验阿里云-Knative

简介:Knative 是基于 Kubernetes 的开源 Serverless 利用编排框架。阿里云 Knative 在社区Knative根底之上,与阿里云产品进行了深度的交融,给你带来最纯正的容器化 Serverless 体验。Knative 是基于 Kubernetes 的开源 Serverless 利用编排框架。阿里云 Knative 在社区Knative根底之上,与阿里云产品进行了深度的交融,给你带来最纯正的容器化 Serverless 体验。章程• 对于 Knative• Serverless 服务引擎 - Serving• Serverless 事件驱动 - Eventing• 阿里云 Knative• 阿里云产品交融• 阿里云 K8s 生态集成• 一个例子对于KnativeKnative 是基于 Kubernetes 的开源 Serverless 利用编排框架。实际上 Knative 蕴含的不单单是 Workload,它还有 Kubernetes 原生的流程编排引擎和齐备的事件零碎。 Knative 指标是基于 Kubernetes 提供利用 Serverless 工作负载编排的标准化。Knative 外围模块次要包含事件驱动框架 Eventing 和部署工作负载的 Serving。Serverless 服务引擎 - ServingKnative Serving 外围能力就是其简洁、高效的利用托管服务,这也是其撑持Serverless 能力的根底。当然作为SeverlesssFramework 就离不开按需分配资源的能力,Knative 能够依据您利用的申请量在顶峰期间主动扩容实例数,当申请量减少当前主动缩容实例数,能够十分自动化的帮忙您节省成本。Serving 还提供了的流量治理能力和灵便的灰度公布能力。流量治理能力能够依据百分比切分流量,灰度公布能力能够依据流量百分比进行灰度简略的利用模型提供了极简的利用模型 - Knative Service,同时满足服务部署、服务拜访以及灰度公布的能力。能够用上面的公式表述:Knative Service = 工作负载(Deployment)+服务拜访(service)+灰度流量(Ingress)。利用模型如图:• Service: 对 Serverless 利用模型的形象,通过Service 治理利用的生命周期• configuration: 用于配置利用冀望的信息。每次更新Service 就会更新Configuration• revision: configuration的每次更新都会创立一个快照,用来做版本治理• route: 将申请路由到Revision,并能够向不同的Revision 转发不同比例的流量• 利用托管• Kubernetes 是面向 IaaS 治理的形象,通过 Kubernetes 间接部署利用须要保护的资源比拟多• 通过 Knative Service 一个资源就能定义利用的托管• 流量治理• Knative 通过 Gateway 后果利用流量,而后能够对流量按百分比进行宰割,这为弹性、灰度等根底能力做好了根底• 灰度公布• 反对多版本治理,利用同时有多个版本在线提供服务很容易实现• 不同版本能够设置不同的流量百分比,对灰度公布等性能实现起来很容易• 弹性• Knative 帮忙利用节省成本的外围能力是弹性,在流量减少的时候主动扩容,流量降落的时候主动缩容• 每一个灰度的版本都有本人的弹性策略,并且弹性策略和调配到以后版本的流量是相关联的。Knative 会依据调配过去的流量多少进行扩容或者缩容的决策丰盛的弹性策略作为 Serverless 框架,其外围能力就是主动弹性,Knative中提供了丰盛的弹性策略:• 基于流量申请的主动扩缩容-KPA• 基于CPU、Memory的主动扩缩容-HPA• 反对定时 + HPA的主动扩缩容策略• 事件网关,提供申请与Pod 1对1解决能力Serverless 事件驱动框架 - Eventing事件驱动是Serverless的标配,在Knative 同样提供了事件驱动框架-Eventing。Knative 的 Eventing 提供了残缺的事件模型,能够很容易地接入各个内部零碎的事件。事件接入当前通过 CloudEvent 规范在外部流转。在Knative Eventing提供两种事件转发形式:• 事件源间接转发到服务• 事件源转发到Broker/Trigger,而后通过过滤转发到服务 ...

April 19, 2021 · 1 min · jiezi

关于web:有奖征文WEB前端大作战走在技术最前端

摘要:投稿分享你在前端畛域的积攒,秀出你的技术“肌肉”,为本人,也为技术发声。本文分享自华为云社区《【有奖征文】WEB前端大作战,走在技术最前端!》,原文作者:技术火炬手 。 近几年大家对于WEB前端的关注度很高, 比方整体势头倒退良好,各种技术百花齐放,人才稀缺, 随着互联网的倒退,用户对前端体验的要求也越来越高,无码化、智能化、沉迷式体验、多端联动...... 对于前端工程师来说,综合素质显得越来越重要。 So,华为云社区设置了本次【WEB前端大作战】有奖征文,想邀请关注前端开发的你,投稿分享你在前端畛域的积攒,为本人,也为技术发声。 咱们会把收到的优质内容汇编成册,并注明原作者,凋谢给圈内开发者下载查阅,提供实际参考。 同时,在华为云站内外10+个技术社区醒目地位进行举荐,给与百万级流量资源。 心愿最终的这份《华为云WEB前端大作战》精选集,有你的署名。 对于奉献优质内容的作者,咱们还将送出机械键盘,华为音箱等各项大礼! 你,筹备好了吗? 01 .流动流程介绍 02. 流动奖品及评奖规定奖品评比根据 :文章投票数50%+专家评审打分50% 投票流程 :5月6日截稿后评审会选出20篇最优良的文章到论坛进行投票。 投票链接 :5月10日开启投票,更新投票链接。 专家评分根据 :文章篇幅、技术含金量、排版好看度、浏览量、点赞、珍藏等指标综合评分 其余阐明 :“阳光普照奖”及“投票抽奖”奖项不能与其余奖项叠加,以上所有奖项能够与云社区“云驻打算”激励叠加。 点击理解云驻打算 03. 征文规定阐明01 ) 征文内容:与Web前端相干的技术文章,例如“框架运维和算法,设计Node可视化...” 能够是你联合本身业务场景的技术实际,或是对于前端新技术趋势的认识,也能够是你攻克某个前端难题的教训分享… 总之,所有原创的技术观点,咱们都是欢送的! 02 ) 投稿细则:1、文章内容需体现技术看点,图文并茂,字数不少于500字; 2、文章须要发表在社区博客; 是时候展示真正的技术了, 点击返回公布 题目以 【WEB前端大作战】结尾,例如:前端的自动化重构丨【WEB前端大作战】。文章开端需加上流动名称及链接地址:【WEB前端大作战】炽热进行中:https://bbs.huaweicloud.com/b... 文章要求为投稿人原创,凡转载或剽窃一经发现将勾销参赛资格; 文章须在华为云社区为首发,如华为云平台已有文章内容则视为稿件有效; 稿件投稿后,华为云领有该稿件的使用权、改编权等。 04. 局部前端细分畛域及参考文章(仅供参考,征文内容包含但不限于以下畛域) 客户端基于mui的H5套壳APP开发web框架 WEB端【从0开始Web开发实战】Spring Boot集成WebSocket,具体代码手把手操作 框架类TS 加持的 Vue 3,如何帮你轻松构建企业级前端利用React 还是 Vue: 你应该抉择哪一个Web前端框架? 前端运维2020成绩单:前端脚手架的开发思路与实现智联招聘的微前端落地实际——Widget 算法前端面试的数据结构与算法 设计模式react/vue中的设计模式 nodenodejs中的并发编程nodejs学习——http-server疾速搭建前端利用 可视化搭建前端可视化框架是怎么炼成的? 面试类前端大佬举荐:261页前端面试题宝典,坚固温习 3D图形学基于WebGL的3D可视化告警零碎关键技术解析 ThingJS 是时候秀出你的肌肉了!速来华为云社区博客,一起来前端大作战吧! 点击立刻公布 如有任何问题,可增加华为云社区小助手微信号:bbs_huaweicloud,进行沟通征询。增加微信时请备注:前端大作战+报名流动时应用的华为云昵称。 点击关注,第一工夫理解华为云陈腐技术~

April 16, 2021 · 1 min · jiezi

关于web:前端知识体系思维导图

前言hello大家好,我是"风不识途",本文是想分享一下,笔者在自学前端时所学到的常识,总结的思维导图(并不蕴含前端所有知识点),很多都是联合本人的笔记来进行总结的思维导图哟; 本篇文章适宜人群:正在自学前端的小伙伴,能够参考前端大略都须要学习哪些技术,或者是曾经学习过的兄弟姐妹,能够联合思维导图对面试、温习串联知识点进行温习; 如需查看源文件:曾经上传的Github仓库中,对于拜访Github比较慢的小伙伴,我也贴心的上传到Gitee仓库了,如果对你有帮忙的话,那就给个 star ⭐ 激励一下吧~ 前端三剑客HTML5&CSS3HTML和CSS都对入门者比拟友善,学一些标签和CSS属性很快就能做出成果,有反馈之后比拟有能源往下持续学习,HTML5和CSS3新增了许多有用的个性,学习起来绝对轻松的; 挪动Web学习挪动端的很多适配布局还是很有必要的,你会发现比浮动+定位布局不要太爽,挪动端除了适配计划多比拟麻烦,除此之外,布局比PC端轻松了许多; JavaScript根底JavaScript语法不算难,如果学习过其余语言再上手js也很容易,但js的诡异的特点都是须要靠日常我的项目填坑逐步积攒的,js库也是形形色色,没有所谓的学会,换成其余语言也是一样,要害是思维,函数编程思维、面向过程、面向对象、设计模式,浩如烟海,深不可测; WebAPIS大抵的学习一遍,记住一些罕用的API,最初再手写一个轮播图哈哈,根本都能理解到很多操作DOM的API了; JavaScript高级&ES6ES6新增的许多个性,在理论开发中简直每天都在应用,十分有必要把握; 挪动WEB知识点补充 jQueryjQuery尽管曾经过期了,外面封装代码的思维还是能够借鉴下的 (能够选择性跳过)jQuery知识点散布 版本控制Git 前端进阶前端性能优化 Node.jsNode.js根底 Node罕用的第三方模块 网络申请AJAX 前端框架Vue React

April 12, 2021 · 1 min · jiezi