首页 文章 精选 留言 我的

精选列表

搜索[最大转化投放],共10000篇文章
优秀的个人博客,低调大师

国内最大、性能媲美 GPT 3.5,元象开源 650 亿参数高性能大模型

XVERSE-65B是由深圳元象科技自主研发的支持多语言的大语言模型(Large Language Model),参数规模为 650 亿,本次开源的模型为底座模型XVERSE-65B,主要特点如下: 模型结构:XVERSE-65B 使用主流 Decoder-only 的标准 Transformer 网络结构,支持 16K 的上下文长度(Context Length),能满足更长的多轮对话、知识问答与摘要等需求,模型应用场景更广泛。 训练数据:构建了 2.6 万亿 token 的高质量、多样化的数据对模型进行充分训练,包含中、英、俄、西等 40 多种语言,通过精细化设置不同类型数据的采样比例,使得中英两种语言表现优异,也能兼顾其他语言效果。 分词:基于 BPE(Byte-Pair Encoding)算法,使用上百 GB 语料训练了一个词表大小为 100,534 的分词器,能够同时支持多语言,而无需额外扩展词表。 训练框架:训练中采用 FlashAttention2 加速计算,3D 并行基础上采用虚拟流水线(virtual pipeline)技术,降低较长流水线和 16k 上下文窗口产生的过高气泡率,在千卡集群的峰值算力利用率达到业界前列。同时通过集群基础设施运营、资源调度、训练框架和调度平台协同等持续优化,打造出高稳定、低中断、强容错的训练系统,将每周有效训练率提升至 98.6%。 评测结果 硬件需求 下表列出了在 XVERSE-65B 上进行推理和微调所需要的硬件资源: 类型 方法 内存 GPU XVERSE-65B 训练 LoRA with ZeRO-3 1500GB 8*A800 80G XVERSE-65B 推理 BF16/FP16 500GB 2*A800 80G

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

Pwn2Own 2020春季赛落下帷幕,Fluoroacetate团队成最大赢家

每年春季在加拿大温哥华 CanSecWest 网络安全会议上举办的 Pwn2Own 黑客大赛刚刚落下帷幕,今年的大赢家是由安全研究人员 Amat Cama 和 Richard Zhu 组成的 Fluoroacetate 团队。在为期两天的比赛中,他们累计拿到了 9 个积分,并在四场比赛中将优势保持到了最后。 受新冠病毒疫情的影响,本届 Pwn2Own 赛事的情况有很大的不同。因为全球多地实施了旅行限制,导致大量安全研究人员无法或不愿前往参赛。 出于安全健康的考虑,今年的 Pwn2Own 黑客大赛也转到了线上进行。选手们预先将漏洞利用发给赛事主办方,然后在现场直播中与所有参与者一起运行了相关代码。 两天时间里,六支参赛队伍成功地入侵了 Windows、macOS、Ubuntu、Safari、Adobe Reader 和 Oracle VirtualBox 等应用程序和操作系统。 期间利用的所有漏洞,均立即向关联企业进行了汇报。漏洞爆破方面,乔治亚技术系统软件和安全实验室(SSLab_Gatech)团队在首日率先得分。 团队成员 Yong Hwi Jin(@ jinmo123)、Jungwon Lim(@ setuid0x0_)和 Insu Yun(@insu_yun_en)主要利用了 Safari 这个跳板。 通过一连串共六个漏洞,将计算器应用弹出到 macOS 上,最终实现了 macOS 内核提权攻击,这让他们夺得 7 万美元奖金和 7 个 Pwn 积分。 第二个是 use-after-free 漏洞利用,Flourescence(Richard Zhu)借此向微软 Windows 操作系统发起了本地提权攻击,夺得 4 万美元奖金和 4 个 Pwn 积分。 第三个漏洞利用是 RedRocket CTF 团队的 Manfred Paul 向 Ubuntu 桌面发起的本地提权攻击,获得 3 万美元奖金和 3个 Pwn 积分。 第四个起攻击利用了 use-after-free 漏洞,Fluoroacetate 团队的 Amat Cama 和 Richard Zhu 借此达成了 Windows 的本地提权,获得 4 万美元奖金和 4 个 Pwn 积分。 第五个漏洞由 STAR Labs 的 Phi Phạm Hồng(@4nhdaden)在次日率先用于攻破 VirtualBox 虚拟机,为其赢得 4 万美元奖金和 4 个 Pwn 积分。 第六个漏洞利用还是 Amat Cama 和 Richard Zhu 联手实现,但这次目标换成了通过 Adobe Reader 达成 Windows 本地提权,获 5 万美元奖金和 5 个 Pwn 积分。 第七个是 Synacktiv 团队的 Corentin Bayet(@OnlyTheDuck)和 Bruno Pujos(@BrunoPujos)的 VMware Workstation 虚拟机漏洞利用,可惜的是未能在规定时间内证明。

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

为什么说LinkedHashMap是Java中最大的数据结构? 了解一下?

云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! Map 家族数量众多,其中 HashMap 和 ConcurrentHashMap 用的最多,而 LinkedHashMap 似乎则是不怎么用的,但是他却有着顺序。两种,一种是添加顺序,一种是访问顺序。 LinkedHashMap 继承了 HashMap。那么如果是你,你怎么实现这两个顺序呢? 如果实现添加顺序的话,我们可以在该类中,增加一个链表,每个节点对应 hash 表中的桶。这样,循环遍历的时候,就可以按照链表遍历了。只是会增大内存消耗。 如果实现访问顺序的话,同样也可以使用链表,但每次读取数据时,都需要更新一下链表,将最近一次读取的放到链尾。这样也就能够实现。此时也可以跟进这个特性实现 LRU(Least Recently Used) 缓存。 如何使用? 下面是个小 demo LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>(16, 0.75f, true); for (int i = 0; i < 10; i++) { map.put(i, i); } for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } map.get(3); System.out.println(); for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } 打印结果: 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 0:0 1:1 2:2 4:4 5:5 6:6 7:7 8:8 9:9 3:3 首先构造方法是有意思的,比 HashMap 多了一个 accessOrder boolean 参数。表示,按照访问顺序来排序。最新访问的放在链表尾部。 如果是默认的,则是按照添加顺序,即 accessOrder 默认是 false。 源码实现 如果看 LinkedHashMap 内部源码,会发现,内部确实维护了一个链表: /** * 双向链表的头,最久访问的 */ transient LinkedHashMap.Entry<K,V> head; /** * 双向链表的尾,最新访问的 */ transient LinkedHashMap.Entry<K,V> tail; 而这个 LinkedHashMap.Entry 内部也维护了双向链表必须的元素,before,after: /** * HashMap.Node subclass for normal LinkedHashMap entries. */ static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; Entry(int hash, K key, V value, Node<K,V> next) { super(hash, key, value, next); } } 在添加元素的时候,会追加到尾部。 Node<K,V> newNode(int hash, K key, V value, Node<K,V> e) { LinkedHashMap.Entry<K,V> p = new LinkedHashMap.Entry<K,V>(hash, key, value, e); linkNodeLast(p); return p; } // link at the end of list private void linkNodeLast(LinkedHashMap.Entry<K,V> p) { LinkedHashMap.Entry<K,V> last = tail; tail = p; if (last == null) head = p; else { p.before = last; last.after = p; } } 在 get 的时候,会根据 accessOrder 属性,修改链表顺序: public V get(Object key) { Node<K,V> e; if ((e = getNode(hash(key), key)) == null) return null; if (accessOrder) afterNodeAccess(e); return e.value; } void afterNodeAccess(Node<K,V> e) { // move node to last LinkedHashMap.Entry<K,V> last; if (accessOrder && (last = tail) != e) { LinkedHashMap.Entry<K,V> p = (LinkedHashMap.Entry<K,V>)e, b = p.before, a = p.after; p.after = null; if (b == null) head = a; else b.after = a; if (a != null) a.before = b; else last = b; if (last == null) head = p; else { p.before = last; last.after = p; } tail = p; ++modCount; } } 同时注意:这里修改了 modCount,即使是读操作,并发也是不安全的。 如何实现 LRU 缓存? LRU 缓存:LRU(Least Recently Used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。LinkedHashMap 并没有帮我我们实现具体,需要我们自己实现 。具体实现方法是 removeEldestEntry 方法。一起来看看原理。 首先,HashMap 在 putVal 方法最后,会调用 afterNodeInsertion 方法,其实就是留给 LinkedHashMap 的。而 LinkedHashMap 的具体实现则是根据一些条件,判断是否需要删除 head 节点。 源码如下: void afterNodeInsertion(boolean evict) { // possibly remove eldest LinkedHashMap.Entry<K,V> first; if (evict && (first = head) != null && removeEldestEntry(first)) { K key = first.key; removeNode(hash(key), key, null, false, true); } } evict 参数表示是否需要删除某个元素,而这个 if 判断需要满足的条件如上:head 不能是 null,调用 removeEldestEntry 方法,返回 true 的话,就删除这个 head。而这个方法默认是返回 false 的,等待着你来重写。 所以,removeEldestEntry 方法的实现通常是这样: public boolean removeEldestEntry(Map.Entry<K, V> eldest){ return size() > capacity; } 如果长度大于容量了,那么就需要清除不经常访问的缓存了。afterNodeInsertion 会调用 removeNode 方法,删除掉 head 节点 —— 如果 accessOrder 是 true 的话,这个节点就是最不经常访问的节点。 拾遗 LinkedHashMap 重写了一些 HashMap 的方法,例如 containsValue 方法,这个方法大家猜一猜,怎么重写比较合理?HashMap 使用了双重循环,先循环外层的 hash 表,再循环内层的 entry 链表。性能可想而知。 但 LinkedHashMap 内部有个元素链表,直接遍历链表就行。相对而言而高很多。 public boolean containsValue(Object value) { for (LinkedHashMap.Entry<K,V> e = head; e != null; e = e.after) { V v = e.value; if (v == value || (value != null && value.equals(v))) return true; } return false; } 这也算一种空间换时间的策略吧。 get 方法当然也是要重写的。因为需要根据 accessOrder 更新链表。 总结 雪薇的总结的一下: LinkedHashMap 内部包含一个双向链表维护顺序,支持两种顺序——添加顺序,访问顺序。 默认就是按照添加顺序来的,如果要改成访问顺序的话,构造方法中的 accessOrder 需要设置成 true。这样,每次调用 get 方法,就会将刚刚访问的元素更新到链表尾部。 关于 LRU,在accessOrder 为 true 的模式下,你可以重写 removeEldestEntry 方法,返回 size() > capacity,这样,就可以删除最不常访问的元素。 原文发布时间:2020-01-09本文作者:莫那一鲁道本文来自阿里云云栖号合作伙伴“互联网架构师”,了解相关信息可以关注“互联网架构师” 云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

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

PHPRAP 2.0.0 发布,历时一年最大更新版本,底层架构重构

PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP。如果您觉得PHPRAP对您有用的话,别忘了给点个赞哦^_^ ! 官方网站www.phprap.com/ 演示地址demo.phprap.com/ 帮助文档www.phprap.com/wiki/index.html 更新记录 【新增】支持项目整体导出为HTML文档,方便离线传阅 【新增】支持单个接口导出为HTML文档,方便离线传阅 【新增】管理后台项目管理新增回收站功能,删除的项目可以在回收站里恢复 【新增】管理后台主页新增统计报表 【新增】接口主页新增删除按钮,并将导出文档按钮和删除接口按钮移到更多操作下拉菜单 【修复】修复本地部署,没有网络时安装界面巨卡的BUG 【修复】修复不同模块相同接口名提示接口已存在的BUG 【优化】底层框架更换为Yii2,架构更合理,扩展性更强 【优化】vendor目录精简,去掉不必要的composer包 【优化】入口文件index.php增加目录可读写权限判断,防止因为部分目录权限不够造成无法自动进入安装界面 【优化】优化安装程序,安装时默认加入示例项目,安装成功后自动变成管理员登录状态,无需再次登录 【优化】选择项目页面,去掉编辑、删除、转让以及退出项目按钮,统一移到项目主页更多操作下拉菜单 【优化】创建项目时,新增公开项目和私有项目选项,公开项目无需登录即可查看且只能查看,可以被搜索到;私有项目只有该项目成员才可以查看, 无法被搜索到 【优化】搜索项目页面只展示公开项目,有效保护私有项目的隐私性 【优化】优化接口字段录入用户体验,支持表单录入和JSON导入两种方式 【优化】CSS、JS等静态资源压缩

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Spring

Spring

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

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部分的功能。

用户登录
用户注册