首页 文章 精选 留言 我的

精选列表

搜索[密码管理],共10000篇文章
优秀的个人博客,低调大师

Linkis & DolphinScheduler强强联合,探索计算治理难题的终极密码!

2022 年 12 月 1 日,Apache Linkis(Incubating)&Apache DolphinScheduler线上 Meetup 活动即将来袭!来自两个社区的核心贡献者将带来项目整合的技术分享,聚焦解决计算治理难题的方法,干货满满! 在大数据平台的建设中,计算引擎能力的构建是极其重要的,DolphinScheduler 整合了越来越多的计算中间件,帮助中间件串行任务,提高大数据计算能力,提升效率。 Linkis 是由微众银行开源的计算中间件产品,其设计理念弥补了开源社区中这类软件的空白,在底层平台和上层应用之间建立起了标准化、可复用的转换模式。 更多内容请到linkis.apache.org了解 可视化易操作的任务调度系统和计算中间件相结合,可以大幅提高大数据计算能力和处理能力。强强联合之下,将会碰撞出怎样的火花呢?敬请期待! 活动时间 12月1日(周四)20:00-21:30 活动形式 线上多平台直播(WeDataSphere、DS、SegmentFault 思否、开源中国、开源基础软件社区视频号、开源中国网站、B站) 报名通道 加入直播交流群↓ 活动简介 多轮抽奖炸不停! 本次活动为大家准备了超多福利,直播间多轮抽奖送豪礼,想要搂几件DolphinScheduler 和 Linkis 周边礼物做纪念的的小伙伴,别错过这次机会哦! 奖品分别是:白鲸开源赞助的 DolphinScheduler 纪念钥匙扣、定制大尺寸鼠标垫、定制数据线、定制口罩,以及 WeDataSphere 赞助的 Linkis 定制功夫茶杯,定制运动水杯、定制鸭舌帽,以及可爱的定制冰箱贴。 心动不如行动,干货满满的技术分享和诚意满满的社区福利回馈给社区的小伙伴,希望大家多多支持,预约参加吧!也欢迎加小助手来到 WeDataSphere 社区用户群! 加好友获取沙箱体验名额,以及更多项目材料~

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

手部骨骼跟踪能力,打造控制虚拟世界的手势密码

AR作为一项增强现实技术,带来了虚拟数字世界与现实世界的深度融合,这种虚实融合,不仅能应用于虚拟汽车展示、虚拟室内设计等视觉交互场景,更可通过动作交互控制虚拟世界场景,实现无边界的人机互动。 比如人们在拍摄短视频时,可以不接触屏幕,仅通过做出特定手势来控制特效切换;也可以在拍照时通过手势识别控制快门拍摄;还可以实现试用美甲款式、戒指试戴等。以上AR应用场景需做到精确的手部识别,这就要用到AR Engine的手部骨骼跟踪能力。 手部骨骼跟踪能力可识别和跟踪21个手部关节点的位置和姿态,并输出手指端点、手掌朝向、手部骨骼等手部高级特征,形成手部骨骼模型。当图像中出现多只手时,只反馈最清晰置信度最高的手的识别结果和坐标信息,目前仅支持可获取深度信息的指定华为机型。 通过手部骨骼识别能力,可将虚拟物体叠加到更为精确的手部位置,例如手指尖、手掌心等;利用手部骨骼,可驱动虚拟手做出更为丰富和精细的操控动作,能够为AR应用提供增强的交互功能,便于拓展更多新奇的玩法。 手部骨骼定义图 应用场景 一、简单的手语翻译 手部骨骼跟踪能力可以形成简单的手语理解。在对手部骨骼关键点进行提取的基础上,根据关键点的变化预测手部姿态,可以将弯曲、竖直等手指状态集映射到一组预定义的手势,比如食指直直伸出就代表计数手势“1”,通过此类算法推导出的手势动作,就是形成手语理解的基础,可应用于手语的识别和翻译。 二、构建非接触式操作界面 科幻电影中常常会出现人物隔空操作电脑界面的场景,而此类功能基于手部骨骼跟踪能力也可以实现。 通过摄像头对手部骨骼的识别跟踪,可精确定位指尖等关键节点信息,从而实现对虚拟对象的物理交互。比如使用手指按下虚拟按钮或其他UI元素;捏住虚拟对象并释放菜单项;拉伸较大对象上的小目标等物理控制;甚至用手重新调整对象大小或将其存储在虚拟口袋中等等。 该功能可应用于医疗行业的机械控制、机车界面控制等。 三、短视频直播互动 AR Engine的手部骨骼跟踪能力也可以在短视频传播过程中增添一些手部特效,比如当用户在拍摄短视频或直播时做出比耶、点赞、比心等指定手部动作时,可识别用户手势并叠加相应的特效或贴纸,实现手势触发特效、手部特效跟踪等效果,丰富视频直播过程中的交互体验。 除此之外,手部骨骼跟踪能力还可应用于影视动画制作、儿童教学、医学康复、智能家居控制等领域。 在AR技术快速发展的今天,基于手势识别的人机交互已逐渐成为热点,如何实现自然的、符合人类习惯的手势识别,是人机交互接口中的一个重要组成部分,作为手势识别的一项基础能力,手部骨骼跟踪也凸显出了在该领域的重要地位。华为AR Engine希望该能力能够帮助开发者们激发出更广泛的研究方向和更具创新力的实际应用。 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gitee 关注我们,第一时间了解 HMS Core 最新技术资讯~

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

【Java小工匠聊密码学】--数字签名-RSA

1、RSA数字签名概述 使用RSA非对称加密技术实现的数字签名。 2、RSA数字签名算法分类 (1)MD (MD2withRSA、MD5withRSA) (2)SHA (SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA) 3、RSA数字签名实现 3.1 JDK实现 package lzf.cipher.jdk; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; /** * @author java小工匠 */ public class JdkSignatureRsaUtils { public static final String RSA = "RSA"; public static final String MD5withRSA = "MD5withRSA"; // 初始化密钥对 public static KeyPair initKey() { try { KeyPairGenerator generator = KeyPairGenerator.getInstance(RSA); // 512 -65536 && 64 的倍数 generator.initialize(1024); return generator.generateKeyPair(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } // 获取公钥 public static byte[] getPublicKey(KeyPair keyPair) { byte[] bytes = keyPair.getPublic().getEncoded(); return bytes; } // 获取公钥 public static String getPublicKeyStr(KeyPair keyPair) { byte[] bytes = keyPair.getPublic().getEncoded(); return encodeHex(bytes); } // 获取私钥 public static byte[] getPrivateKey(KeyPair keyPair) { byte[] bytes = keyPair.getPrivate().getEncoded(); return bytes; } // 获取私钥 public static String getPrivateKeyStr(KeyPair keyPair) { byte[] bytes = keyPair.getPrivate().getEncoded(); return encodeHex(bytes); } // 签名 public static byte[] sign(byte[] data, byte[] privateKey, String type) { try { // 还原使用 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(privateKey); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PrivateKey priKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); // 1、实例化Signature Signature signature = Signature.getInstance(type); // 2、初始化Signature signature.initSign(priKey); // 3、更新数据 signature.update(data); // 4、签名 return signature.sign(); } catch (Exception e) { throw new RuntimeException(e); } } // 验证 public static boolean verify(byte[] data, byte[] publicKey, byte[] sign, String type) { try { X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKey); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PublicKey pubKey = keyFactory.generatePublic(keySpec); // 1、实例化Signature Signature signature = Signature.getInstance(type); // 2、初始化Signature signature.initVerify(pubKey); // 3、更新数据 signature.update(data); // 4、签名 return signature.verify(sign); } catch (Exception e) { throw new RuntimeException(e); } } // 数据准16进制编码 public static String encodeHex(final byte[] data) { return encodeHex(data, true); } // 数据转16进制编码 public static String encodeHex(final byte[] data, final boolean toLowerCase) { final char[] DIGITS_LOWER = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; final char[] DIGITS_UPPER = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; final char[] toDigits = toLowerCase ? DIGITS_LOWER : DIGITS_UPPER; final int l = data.length; final char[] out = new char[l << 1]; // two characters form the hex value. for (int i = 0, j = 0; i < l; i++) { out[j++] = toDigits[(0xF0 & data[i]) >>> 4]; out[j++] = toDigits[0x0F & data[i]]; } return new String(out); } public static void main(String[] args) { String str = "java小工匠"; byte[] data = str.getBytes(); // 初始化密钥度 KeyPair keyPair = initKey(); byte[] publicKey = getPublicKey(keyPair); byte[] privateKey = getPrivateKey(keyPair); // 签名 String type = MD5withRSA; byte[] sign = sign(str.getBytes(), privateKey, type); // 验证 boolean b = verify(data, publicKey, sign, type); System.out.println("验证:" + b); } }

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

【Java小工匠聊密码学】--消息摘要--RIPEMD算法

1、什么是RIPEMD RIPEMD(RACE Integrity Primitives Evaluation Message Digest,RACE原始完整性校验消息摘要,是Hans Dobbertin等3人在md4,md5的基础上,于1996年提出来的。算法共有4个标准128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。不过,让人难以致信的是RIPEMD的设计者们根本就没有真正设计256和320位这2种标准,他们只是在128位和160位的基础上,修改了初始参数和s-box来达到输出为256和320位的目的。所以,256位的强度和128相当,而320位的强度和160位相当。RIPEMD建立在md的基础之上,所以,其添加数据的方式和md5完全一样。 2、RIPEMD 应用案例 比特币在生成地址算法中,使用了该算法。 3、RIPEMD算法实现 package lzf.cipher.bc; import java.nio.charset.Charset; import org.bouncycastle.crypto.Digest; import org.bouncycastle.crypto.digests.RIPEMD128Digest; import org.bouncycastle.crypto.digests.RIPEMD160Digest; import org.bouncycastle.crypto.digests.RIPEMD256Digest; import org.bouncycastle.crypto.digests.RIPEMD320Digest; import org.bouncycastle.util.encoders.Hex; /** * @author Java小工匠 */ public class BCRIPEMDUtils { public static String ripemd128(byte[] bytes) { Digest digest = new RIPEMD128Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static String ripemd160(byte[] bytes) { Digest digest = new RIPEMD160Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static String ripemd256(byte[] bytes) { Digest digest = new RIPEMD256Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static String ripemd320(byte[] bytes) { Digest digest = new RIPEMD320Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static void main(String[] args) { byte[] bytes = "java小工匠".getBytes(Charset.forName("UTF-8")); String ripemd128 = ripemd128(bytes); System.out.println("ripemd128:" + ripemd128 + ",lengh=" + ripemd128.length()); String ripemd160 = ripemd160(bytes); System.out.println("ripemd160:" + ripemd160 + ",lengh=" + ripemd160.length()); String ripemd256 = ripemd256(bytes); System.out.println("ripemd256:" + ripemd256 + ",lengh=" + ripemd256.length()); String ripemd320 = ripemd320(bytes); System.out.println("ripemd320:" + ripemd320 + ",lengh=" + ripemd320.length()); } } 如果读完觉得有收获的话,欢迎点赞、关注、加公众号【小工匠技术圈】 个人公众号,欢迎关注,查阅更多精彩历史! image

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

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

用户登录
用户注册