首页 文章 精选 留言 我的

精选列表

搜索[技能变化],共10002篇文章
优秀的个人博客,低调大师

DolphinScheduler 11 月最值得关注的变化

各位热爱 Apache DolphinScheduler 的小伙伴们,11 月社区月报来啦! 本期 Apache DolphinScheduler 11 月月报全面回顾了社区在过去一个月中的重要进展,包括核心模块的缺陷修复、功能增强、文档完善、CI 稳定性提升,以及 Helm、UI、Registry 等多方向的改进。同时,本月 "Merge Stars" 多达十余位,跨国贡献者持续提升 Apache 项目的全球影响力,向所有为 Apache DolphinScheduler 作出贡献的社区成员致以特别感谢。 月报亮点 多项关键 Bug 完成修复:涵盖 API、Master、Registry 等多个核心模块,显著提升系统稳定性。 功能持续增强:包括 SQL 任务取消能力、日志查询优化、Prometheus 认证支持、K8S 环境适配等实用增强。 文档升级与生态完善:新增注册表插件文档、负载均衡文档更新,以及安全文档联系人调整,更有助于用户快速理解系统。 CI/测试体系更稳健:多项 Chore 优化修复 CI 不稳定问题,并补充了 taskGroup、禁止条件任务等集成测试。 Helm Chart 新能力上线:worker StatefulSet 支持密钥与 init 容器,使 K8S 部署更加灵活。 月度Merge Stars 感谢以下小伙伴上个月为 Apache DolphinScheduler 做的精彩贡献(排名不分先后): @KwongHing,@qiong-zhou,@kvermeulen,@ruanwenjun,@ChaoquanTao,@det101,@dill21yu,@SbloodyS,@Mrhs121,@CauliflowerEater,@jmmc-tools,@sdhzwc,@njnu-seafish apache/dolphinscheduler仓库 修复 [Fix-17721] [API]优化查询下游依赖工作流定义的逻辑 @det101 [Fix-17638][API]优化工作流血缘更新逻辑 @det101 [Fix-17668] [jdbc-registry]旨在清理超过N小时的历史注册表数据更改事件,但实际上清理了N小时内发生的事件 @qiong-zhou [Fix-17527][registry-api]修复主工作器 API 启动失败,无法由于无效的 ZooKeeper 路径而清理已完成故障转移的节点 @qiong-zhou [Fix-17643] [registry-jdbc]修复未触发 JdbcDataChangeEvent 的死客户端问题 @qiong-zhou [Fix-17637] [API]工作流血缘删除优化 @det101 [Fix-17613] [Master]任务组队列优先级始终为 0 @KwongHing [Fix-17604][API]正确分配和移除工作组到项目的逻辑 @Mrhs121 [Fix-17534][Service/Master]从当前工作流实例中添加全局参数和varpool,并将它们添加到子工作流触发请求的开始参数列表中。 @kvermeulen 优化 [Improvement-17749][UI][DATAX]datax json 参数校验改进 @sdhzwc [Improvement-17738][Dependency]升级 PostgreSQL JDBC 驱动以修复 CVE-2024-1597 @dill21yu [Improvement-17697][SqlTask]支持取消 SQL 任务 @ruanwenjun [Improvement-17664][Master]定期清理注册表中的故障转移标记 @ruanwenjun [Improvement-17573][UI]更新UI标签及相关变量名称及升级脚本 @CauliflowerEater [Doc-17616][Improvement]添加注册表插件使用文档 @SbloodyS [Improvement-17649][registry-jdbc]更正"DataChance的拼写错误 @qiong-zhou [Improvement-17647][Resource Center]在上传文件时禁用前端逻辑中的超时限制。 @njnu-seafish [Improvement-12563]向Prometheus端点添加认证功能,并将其适配到Kubernetes(K8S)环境。 @njnu-seafish [Feature-17566][Helm]在 worker 有状态集添加密钥和初始化容器 @jmmc-tools [Improvement-17025][UI]优化查询日志以避免无限递归调用 @ChaoquanTao 其他 [Doc-17728][Master]更新负载均衡文档 @Mrhs121 [Chore]修复 sonar 错误 @SbloodyS [Doc-17472]更新安全文档联系人 @dill21yu [Chore]使用 taskGroup 添加 IT 案例,且 taskGroupPriority 不同 @ruanwenjun [Chore]修复不稳定的 CI @SbloodyS [Chore]热修复文档 CI 错误 @SbloodyS [Chore]API日志中的掩码令牌 @ruanwenjun [Chore]将IT案例添加到验证禁止条件任务中。 @ruanwenjun [DSIP-92][Master]重构工作流串行策略 @ruanwenjun

优秀的个人博客,低调大师

python pyinotify 监控文件与目录的变化

!/usr/bin/env python encoding:utf-8 import os import sys from pyinotify import * class EventHandler(ProcessEvent): def process_IN_CREATE(self, event): print "Create file: %s " % os.path.join(event.path,event.name) def process_IN_CREATE(self, event): print "Create file: %s " % os.path.join(event.path,event.name) def process_IN_MODIFY(self, event): print "Modify file: %s " % os.path.join(event.path,event.name) def FSMonitor(path='.'): wm = WatchManager() mask = IN_DELETE | IN_CREATE |IN_MODIFY notifier = Notifier(wm, EventHandler()) wm.add_watch(path, mask,auto_add=True,rec=True) print 'now starting monitor %s'%(path) while True: try: notifier.process_events() if notifier.check_events(): print "cccc" notifier.read_events() except KeyboardInterrupt: print "aaaa" notifier.stop() break if name == "main": FSMonitor(sys.argv[1])

优秀的个人博客,低调大师

企业邮件系统的发展和变化

以往的大型企业邮件系统主要是采用分布式搭建,表现为各个站点都有自身的邮件服务器,大概可以支持 300-500 个邮箱使用,这种构建方式相对而言,成本较低,维护风险较大,不利于企业的邮件系统长期稳定应用。 我们可以从企业邮件系统发展历史中看到,从 96 年企业开始应用邮件系统,受到当时的技术限制,大家使用的主要是企业邮箱功能,也就是使用 服务商提供的免费或是付费邮箱,邮箱的大小和安全性都不是很满意。这段时期也是企业邮件系统开始发展的时期,企业越来越需要邮件来满足业务沟通的需要,有条件的企业开始搭建自己的邮件系统,当时有开源的 Linux 邮件系统,也有架构设计很超前的 Lotus 邮件系统。 Lotus 邮件系统是最早基于目录服务的邮件系统,提出的树型目录,分级管理,各个服务器之间的路由复制技术,解决了大型企业邮件系统平台的问题。企业需要安全的邮件身份认证和内部之间邮件的发送,在这方面 Lotus 邮件系统的设计架构已经有了公钥和私钥的机制,用户的 ID 文件是私钥,用于身份认证,访问服务器用公钥进行验证,从而确保邮件信息的安全性,可以这么说,从 Lotus 邮件系统一开始就具备发加密邮件的功能。 SMTP 网关是邮件系统防范和过滤垃圾邮件的有效手段,采用两台硬件 SMTP 网关作为外部邮件的入口,这样以来再加上反垃圾邮件系统和病毒扫描系统,从而确保企业的邮件系统的安全和可靠。企业在邮件系统发展初期,也没有很明确的邮件系统架构设计,选择开源邮件系统是节省成本的有效方法。不过开源邮件系统设计上没有 Lotus 的企业地址薄这么完善, Lotus 的企业地址薄不光有用户信息,还有用户位置的服务器信息,这样以来邮件路由就有保障,另外一方面地址薄复制技术应用保证企业每台邮件服务器上的一致性。在邮件系统发展初期,我们知道好的企业邮件系统要有全球地址薄设计, SMTP 网关,还要有完善的路由复制技术,能够和 Lotus 抗衡的也只有微软的 Exchange 产品。 2003 年开始企业邮件系统发展进入到成熟阶段,微软推出 Window Server2003 和 Exchange2003 产品,微软从 99 年 Window NT 开始应用的活动目录更加成熟,在扩展的活动目录上从而支持 Exchange 邮件系统,从而使得企业邮件系统搭建起来更加容易,管理起来也可以同活动目录一起进行,基于 GC 服务器得到的活动目录信息, Exchange2003 能够生成全球地址薄,路由组的架构能够帮助 Exchange 进行内部邮件的传送,从架构上对 SMTP 协议的支持,让用户可以有多个邮箱地址,企业甚至可以给第三方用户加上外部的邮箱地址,在灵活性上 Exchange 要比 Lotus 领先,随着前后端服务器的搭建,以及邮件服务器集群使用,使得 Exchange 性能得到大幅提升,可以支持手机收发邮件,以及 Web 方式查看邮件,都使得企业放弃开源邮件系统,转而使用 Exchange2003 。企业黑莓邮件服务也支持 Exchange 之后,更显得 Exchange 的强大,相比而言, Lotus 最大的方便之处还是搭建服务器很方便,有企业 ID 和服务器 ID 就可以重新搭建,而 Exchange 服务器严重依赖 DNS 和 GC 服务器。相对比而言, Lotus 在金融领域和 OA 系统方面的应用还是有优势,可以直接开发应用数据库,用户只需用 ID 去验证,然后根据 ACL 去设置不同的访问权限,用于 OA 工作流方面有其独特的优势,还有公共邮箱的建立和管理都很容易, Lotus 邮件数据库复制技术本是设计之初很好,可是用户不得不面对频繁的复制等待,尤其是服务器负载过大时, Lotus 服务器就没响应,还有其它站点过来的大邮件经常堵在服务器的队列上,这些复制方面的缓慢没响应都制约 Lotus 服务器的性能。 微软的 Exchange 2007 的推出直接是基于 64 位平台上, 64 位最大的好处是可以支持 4GB 以上的内存,从每个用户 10MB 物理内存使用上看,无疑提高了服务器性能,让邮件系统能够支持更多的用户,而 Lotus 邮件系统也被 IBM 收购改为 Domino ,推出 8.5 新版本,内核更好地支持 JAVA ,用户界面也改进不少。 Exchange2007 取消路由组,采用 AD 的桥头堡服务器的复制技术去发送内部邮件,使用边缘服务器才保证邮件系统的安全,使得企业的邮件系统更加安全,还有就是企业内部的即时消息工具 Communicator2007 的普及应用, Communicator 和 Outlook 可以集成使用,让用户能够更便捷的联系沟通,再加上 Live Meeting 平台的集成,说明企业的邮件系统已经到了集成通讯的时代,语音邮件在 UC 平台上使用,能够把企业的 PBX 电话交换机也能加入进来,实现企业邮件系统成为更加集成的平台。 如果说 Exchange 2007 是在 Exchange2003 上的改进,那么 Exchange2010 代表企业邮件系统集中管理的趋势,可以做到每台服务器上支持上千个邮箱,更强大的集群支持技术,改进邮箱和日志复制,可以让集群服务器平衡邮箱文件,而管理方式是用 PowerShell 方式,安全性和操作性更强,企业还可以直接使用 Exchange2010 邮件服务,直接购买微软的云邮件服务,把整个企业邮件系统作为服务来管理,让邮件信息服务更加安全可靠,所以说,企业邮件系统现在又面临一个更加集中,更加深入的阶段,比如说: Lync 服务器让企业通信无处不在,没准以后企业的邮件系统都会变成统一通讯的平台。 本文转自 zhaiken 51CTO博客,原文链接:http://blog.51cto.com/zhaiken/826317,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android -- ADT变化&aar&Lint

Switch Case switch case 常用的使用方法: switch(v.getId()){ case R.id.btn1: doClick1(); break; } 在ADT中的改变 在正常的 Android 项目中,资源R类里的常量是这样声明的: public static final int main=0x7f030004; 然而,到 ADT 14为止,在类库项目中,他们会被这样声明: public static int main=0x7f030004; 原因 在库项目中这些常量都不是final的。原因很简单:当多个库项目整合时,字段的实际值(必须是唯一的)可能会出现碰撞。在ADT 14 之前,所有这样的字段都是final的,所以导致所有的库被使用的时候,主项目必须编译他们的所有资源和相关 Java 代码。这样的性能是很差的,因为它使构建的速度非常慢。它还阻碍了不包含源代码的库项目的分发,限制库项目的使用范围。 字段不再是 final 的原因是意味着库jar包可以只编译一次,并且能直接在其他项目中复用。以及允许分发库项目的二进制版本(将在 r15出现),这使得构建更快。 影响 以下代码不能再编译通过: switch(v.getId()){ case R.id.btn1: doClick1(); break; } 只能换成: if(v.getId() == R.id.btn1){ doClick1(); } //else if(...){....}else{...} 我是天王盖地虎的分割线 aar “aar”包是 Android 的类库项目的二进制发行包。 文件扩展名是.aar,maven 项目类型应该也是aar,但文件本身是带有以下各项的 zip 文件: /AndroidManifest.xml(mandatory) /classes.jar(mandatory) /res/(mandatory) /R.txt(mandatory) /assets/(optional) /libs/.jar(optional) /jni//.so(optional) /proguard.txt(optional) /lint.jar(optional) 这些条目是直接位 zip 文件根目录的。 R.txt 文件是aapt带参数--output-text-symbols的输出结果。 我是天王盖地虎的分割线 Lint Android lint工具是一个静态代码分析工具,检查你的Android项目源文件潜在的bug,并优化改进,确保正确性、安全性、性能、可用性、可访问性和国际化。 概述 Android SDK提供了一个代码扫描工具,称为lint。可以帮助您轻松地识别并纠正问题与结构质量的代码,不必执行应用程序或编写任何测试用例。每个问题检测到该工具报告的一个描述消息和严重性级别,您可以快速地优先考虑的关键改进。您还可以配置一个问题的严重性级别,忽略不相关的问题,或提高的严重程度。这个工具有一个命令行接口,所以您可以很容易地集成到您的自动化测试过程。 Lint工具可以检查你android工程潜在的bug和优化改进,以确保正确性、安全性、性能、可用性、可访问性和国际性。您可以从命令行运行lint,或eclipse中运行lint。 lint优点 除了测试Android应用程序满足其功能需求,重要的是要确保代码没有结构性问题。代码结构简陋的可靠性和效率的影响你的Android应用程序,使您的代码很难维护。例如,如果XML资源文件包含未使用的名称空间,这占用空间并产生不必要的处理。其他的结构性问题,比如使用弃用元素或API调用所不支持的目标API版本,可能会导致代码未能正确地运行。 Android lint是在ADT 16提供的新工具,它是一个代码扫描工具,能够帮助我们识别代码结构存在的问题。主要包括: 布局性能(以前是layoutopt工具,可以解决无用布局、嵌套太多、布局太多) 未使用到资源 不一致的数组大小 国际化问题(硬编码) 图标的问题(重复的图标,错误的大小) 可用性问题(如不指定的文本字段的输入型) manifest文件的错误 命令行用法 lint是命令工具,在SDK 的tools/ 目录下: $ lint /src/ 可以通过添加 --disable argument,禁用一个特定的检查,或一列的检查,例如: $ lint --disable MissingTranslation,UnusedIds,Usability:Icons /src/ 可以通过--check标志指定运行哪些确切的检查。这让你可以在代码库中查找一个具体的问题,比如: $ lint --check MissingPrefix /src/ 使用--show命令加上 id 列表或类别 (或不带参数查看全部)可以获取指定的问题的解释: $ lint --show MissingPrefix 要生成 HTML 报告,只需要添加--html文件名作为参数: $ lint --html /tmp/report.html 运行lint --help以获取可用参数的相关信息。 更多 http://developer.android.com/tools/help/lint.html 本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4783337.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android--监测文件夹内容变化

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/77932391 一. 概述: android.os包下的FileObserver类是一个用于监听文件访问、创建、修改、删除、移动等操作的监听器,基于linux的INotify。FileObserver是个抽象 类,必须继承它才能使用。每个FileObserver对象监听一个单独的文件或者文件夹,如果监视的是一个文件夹,那么文件夹下所有的文件和级联子目录的改 变都会触发监听的事件。 二. 监听的事件类型: ACCESS,即文件被访问 MODIFY,文件被 修改 ATTRIB,文件属性被修改,如 chmod、chown、touch 等 CLOSE_WRITE,可写文件被 close CLOSE_NOWRITE,不可写文件被 close OPEN,文件被 open MOVED_FROM,文件被移走,如 mv MOVED_TO,文件被移来,如 mv、cp CREATE,创建新文件 DELETE,文件被删除,如 rm DELETE_SELF,自删除,即一个可执行文件在执行时删除自己 MOVE_SELF,自移动,即一个可执行文件在执行时移动自己 CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) ALL_EVENTS,包括上面的所有事件 三.实例 import com.example.androidemail.R; import com.example.androidemail.R.layout; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.os.FileObserver; public class AndroidFileListenerActivity extends Activity { private FileObserver mFileObserver; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(null == mFileObserver) { mFileObserver = new SDCardFileObserver(Environment.getExternalStorageDirectory().getPath()); mFileObserver.startWatching(); //开始监听 } } public void onDestory() { if(null != mFileObserver) mFileObserver.stopWatching(); //停止监听 } static class SDCardFileObserver extends FileObserver { //mask:指定要监听的事件类型,默认为FileObserver.ALL_EVENTS public SDCardFileObserver(String path, int mask) { super(path, mask); } public SDCardFileObserver(String path) { super(path); } @Override public void onEvent(int event, String path) { final int action = event & FileObserver.ALL_EVENTS; switch (action) { case FileObserver.ACCESS: System.out.println("event: 文件或目录被访问, path: " + path); break; case FileObserver.DELETE: System.out.println("event: 文件或目录被删除, path: " + path); break; case FileObserver.OPEN: System.out.println("event: 文件或目录被打开, path: " + path); break; case FileObserver.MODIFY: System.out.println("event: 文件或目录被修改, path: " + path); break; case FileObserver.CREATE: System.out.println("event: 文件或目录被创建, path: " + path); break; } } } } onEvent是回调,系统监听到事件后会触发此事件,参数event就是上面所说的事件类型,参数path就是触发事件的目录,鉴定只针对于该层目录,其他层次无效。 我们大多数需要监听path目录下的所有文件对象的相关操作,那该如何是好呢?解决问题方法之一就是重新实现FileObserver类, 下面是对FileObserver类的重写实现过程 import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Stack; import android.os.FileObserver; import android.util.Log; @SuppressWarnings(value = { "rawtypes", "unchecked" }) public class MultiFileObserver extends FileObserver { /** Only modification events */ public static int CHANGES_ONLY = CREATE | MODIFY |DELETE | CLOSE_WRITE | DELETE_SELF | MOVE_SELF | MOVED_FROM | MOVED_TO; private List<SingleFileObserver> mObservers; private String mPath; private int mMask; public MuityFileObserver(String path) { this(path, ALL_EVENTS); } public MuityFileObserver(String path, int mask) { super(path, mask); mPath = path; mMask = mask; } @Override public void startWatching() { if (mObservers != null) return; mObservers = new ArrayList<SingleFileObserver>(); Stack<String> stack = new Stack<String>(); stack.push(mPath); while (!stack.isEmpty()) { String parent = stack.pop(); mObservers.add(new SingleFileObserver(parent, mMask)); File path = new File(parent); File[] files = path.listFiles(); if (null == files) continue; for (File f : files) { if (f.isDirectory() && !f.getName().equals(".") && !f.getName().equals("..")) { stack.push(f.getPath()); } } } for (int i = 0; i < mObservers.size(); i++) { SingleFileObserver sfo = mObservers.get(i); sfo.startWatching(); } }; @Override public void stopWatching() { if (mObservers == null) return; for (int i = 0; i < mObservers.size(); i++) { SingleFileObserver sfo = mObservers.get(i); sfo.stopWatching(); } mObservers.clear(); mObservers = null; }; @Override public void onEvent(int event, String path) { switch (event) { case FileObserver.ACCESS: Log.i("RecursiveFileObserver", "ACCESS: " + path); break; case FileObserver.ATTRIB: Log.i("RecursiveFileObserver", "ATTRIB: " + path); break; case FileObserver.CLOSE_NOWRITE: Log.i("RecursiveFileObserver", "CLOSE_NOWRITE: " + path); break; case FileObserver.CLOSE_WRITE: Log.i("RecursiveFileObserver", "CLOSE_WRITE: " + path); break; case FileObserver.CREATE: Log.i("RecursiveFileObserver", "CREATE: " + path); break; case FileObserver.DELETE: Log.i("RecursiveFileObserver", "DELETE: " + path); break; case FileObserver.DELETE_SELF: Log.i("RecursiveFileObserver", "DELETE_SELF: " + path); break; case FileObserver.MODIFY: Log.i("RecursiveFileObserver", "MODIFY: " + path); break; case FileObserver.MOVE_SELF: Log.i("RecursiveFileObserver", "MOVE_SELF: " + path); break; case FileObserver.MOVED_FROM: Log.i("RecursiveFileObserver", "MOVED_FROM: " + path); break; case FileObserver.MOVED_TO: Log.i("RecursiveFileObserver", "MOVED_TO: " + path); break; case FileObserver.OPEN: Log.i("RecursiveFileObserver", "OPEN: " + path); break; default: Log.i("RecursiveFileObserver", "DEFAULT(" + event + " : " + path); break; } } /** * Monitor single directory and dispatch all events to its parent, with full * path. */ class SingleFileObserver extends FileObserver { String mPath; public SingleFileObserver(String path) { this(path, ALL_EVENTS); mPath = path; } public SingleFileObserver(String path, int mask) { super(path, mask); mPath = path; } @Override public void onEvent(int event, String path) { String newPath = mPath + "/" + path; MultiFileObserver.this.onEvent(event, newPath); } } }

优秀的个人博客,低调大师

区块链给物联网带来的变化

区块链发展到今天,早已从最初的金融交易延伸到所有需要中间人作保或认证的应用项目,比如房屋交易、汽车买卖等,甚至可经由API的串联,将区块链技术与其他应用服务内容加以整合,据此加速产生各式各样的创新应用,甚至有助于加速推动物联网应用发展。 区块链最早期的应用就是比特币了, 区块链是一串使用密码学方法相关联产生的数据块,它像一个数据库账本,而账本里面也蕴涵自比特币以来的所有交易记录,包含多个区块记录,每个区块各自对应一部分交易,又记载着前一区块的Hash值,形成一个链条状的数据结构。 许多专家认为区块链技术的出现解决了物联网安全性、隐私性和可靠性问题所缺失的一环。它可以用于追踪数十亿相互连接的设备,促成设备之间的交易和协作处理,为物联网行业节省大量成本,这种去中心化方法将会消除单点失败,创造一种更为可靠的设备运行生态系统。同时区块链所使用的加密算法还能为消费者数据带来更高的隐私。 区块链的优势在于它是公开的,每一个网络参与者都能看到区块以及存储在里面的交易信息。不过,这并不意味着所有人都能看到你的实际交易内容,这些内容通过你的私钥被保护着。 区块链是去中心化的。因此没有一种单一的机构可以批准交易或者为交易的接收设定特殊的规则,这就意味着参与者之间存在着巨大的信任,因此所有的网络参与者都必须达成共识来接收交易。 更重要的一点是,区块链是非常安全的,这种数据只能不断被扩展,之前的记录是无法被改变的。并且区块链所使用的账本是防篡改的,并且无法被不法分子操纵,这种账本并不是位于某个具体的地点,并且无法对中间商进行攻击,因为没有任何单一的通信线程可以被截获。 区块链可以应用到物联网保证信息安全,比如设备仪器的制造商,可以借助区块链技术追溯到每一项零组件的生产厂商、生产日期、制造批号乃至于制造过程的其他信息,以确保整机生产过程的透明性及可塑性,有效提升整体系统与零组件的可用性,继而保障设备仪器运作的安全性。 区块链特有的共识机制,通过点对点的方式是各个设备之间连接起来,而不是通过中央处理器,各个设备之间保持共识,不需要中心验证,这样就保证了当一个节点出现问题之后,不会影响网络的整体数据安全性。 现在,随着区块链技术的不断发展和升温,深圳北航物联网研究院(www.buaaiot.org)认为它也将以自己独特的方式,去改变去融合到各个行业。区块链技术的诞生,让各类的算法更高效,其去中心化的原理以及分布式的计算规则,让万物连接秒算,并且防止了黑客对于数据的攻击,各类资产可以实现在区块上登记、交易并数据永远不可篡改,不可逆,这无形的魅力让各类资产汇聚在区块上。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册