首页 文章 精选 留言 我的

精选列表

搜索[国产神器],共5622篇文章
优秀的个人博客,低调大师

5款安卓神器方便连接到网络存储

安卓可以很好地处理网络。它可以很容易地连接到你公司网络上的各种服务……包括你的存储。当然,几乎所有主流NAS制造商都为自己的设备提供了一款应用,但是那些正在寻找更加通用的(或者内部的)解决方案的人呢?所幸的是,安卓在这方面也有大量的工具。 我寻找并且测试了一下,发现有5款方便的存储甚至是NAS就绪的工具支持安卓平台。有了这些工具,你应该就可以连接到来自Windows共享、Samba共享、WebDAV、FTP以及NAS的大量存储解决方案——甚至是保持你的NAS处于工作状态。 如果你恰巧在网络上有一个专门的NAS,那么最好的办法就是采用卖给你这个设备的厂商所提供的解决方案。但是如果这家厂商并没有针对自己NAS的应用,下面这些解决方案可能正是你需要的。 1、ES File Explorer (File Manager) ES File Explorer(如图A)是一款安卓文件管理器,允许你很容易地连接到网络共享(而无需增加一个插件或者第三方软件)。它可以连接到SMB共享,以及一个FTP客户端,还有WebDAV服务。ES File Explorer有针对Google Drive、Dropbox、Box.net、Sugarsync、OneDrive、Amazon S3等的嵌入式云存储管理工具。 在所有的安卓文件管理器中,ES File Explorer提供了最为用户友好的界面。从快速访问栏中,你可以从几个标签中快速访问网络共享。 2、AndSMB AndSMB(如图B)是一款原生的安卓Samba客户端,可以轻松地连接到你的SMB共享。一旦连接,你可以轻松地下载文件、发送文件到打印机、创建文件夹、上传到共享,等等。创建一个共享连接,并不要求你知道共享的主机名和(如果需要的话)用户名/密码进行身份验证。 AndSMB包括匿名访问,让连接更加简单(如果匿名访问适用于你的共享)。 3、Network Browser Network Browser(如图C)让你定位和连接到你网络上任何Windows或者Samba(Linux以及Mac OS X)共享。借助两个简单的连接工具,Network Browser让连接到网络的流程简单到只需要一个IP地址就可以了。 一旦连接,你可以下载或者上传文件,甚至是将远程文件夹放到主屏幕上以便快速访问。Network Browser现在还支持音乐和电影的流式传输。(现有发布版本只支持MP3和MP4文件格式。) 4、NAS Wake On LAN NAS Wake On LAN(如图D)允许你运行一项服务以发送魔力唤醒包到你的NAS。一旦完成安装,启用这项服务,输入你NAS的IP和MAC地址,设置时间(从10秒到1个小时),然后配置端口。当你配置好之后,只要你的安卓设备是向和NAS相同的网络上,唤醒包就会被发送到这个NAS上以保持运行。 如果你的NAS在保持清醒方面有问题的话,这将会是在设备修复之前一个暂时性的解决方案。 5、Upload 2 NAS Lite Upload 2 NAS Lite(如图E)是一款简单的安卓应用,用于设置从你的移动设备自动上传到支持FTP的NAS。这款应用最初设计旨在自动上传来自相机拍摄的照片。现在你可以增加上传的辅助目录,这样你几乎可以把任何东西都上传到支持FTP的NAS上。 设置有点麻烦,但是一旦你完成了设置,它的表现会相当出色。你可以设置这个应用在特定的时间进行自动上传,或者你可以通过点击“现在上传”按钮进行手动上传。 你的选择? 不管你是否采用Windows Share、Samba Share、FTP、WebDAV,或者一个专有的NAS解决方案,这些应用都将让你连接上,甚至是一直保持连接。 原文发布时间为:2016-7-14 本文作者:孙博 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网

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

淘富成真|这次带来了女性的护肤神器

2017年5月12日, 淘富成真线下见面会在云栖小镇淘富成真第二创客咖啡厅举办。 淘富成真资源对接会是闭门形式,每一次参与见面会的企业都是经过严格筛选的幸运儿;今日,淘富成真导师团到场共9人,均是电商、技术、供应链、工业设计、投资各领域的高级专家。 这是一场内行与内行的交谈,在场人员围绕每个路演项目的产品设计、市场反应、性能诊断、技术壁垒热烈互动,提问者一针见血,回答者则真诚透彻。 经验丰富的专家们拥有着行业顶端视野,不仅在细处帮忙优化和提升,聊high了还帮助产品重新定义场景。 以下是来自现场的热讯: 现场的每家企业有10分钟介绍项目+5分钟与嘉宾互动时间, 真真儿是不够用啊, 幸好会后还有自由交流环节,不然红包真心发不起。 小编独家透露: 超时1分钟100元红包, 演讲人和导师人人平等, 啧啧, 一字千金是这么来的。 下面让我们来看一下给小编留下印象较为深刻的几家路演企业: 项目一: 这是一家基于智能手机、可穿戴、人工智能等技术的智能医疗器械创业公司。通过手机端的创新,打造智能医疗类产品在手机端的服务。 今天,带来路演的产品是一款拥有三项以上专利,在设计上获得过国际设计大奖的的血压管理器,同样也是在国外圈粉无数的网红产品,这款血压管理器与手机相结合让用户操作起来更加方便。 项目二: 日常出行中大家有没有觉得拖着个又大又重的行李箱特别的笨重。那么,现在有这样的一款机器人行李箱,可以在机场、旅途中像一个小跟班一样的跟随你自动行走是不是很酷! 来自淘富成真中的“机器人行李箱”,基于射频的跟踪定位技术,激光测距技术,避障与导航技术,策略层的人工智能技术做成模块,实现了用户使用场景化。创始人还说,类似产品目前最大的问题就是生产成本高无法量产,但是,他们的产品能够严格控制产品商业化的成本,目前已经投放市场。 项目三: 自从有了PM2.5,家家户户也都多了一件“家用电器-空气净化器”。随之,我们也面临着家电占据了生活中的大量的空间。今天淘富成真的项目中有一款“不占地方”空气净化器,可以随意的挂在墙面上在居家环境、酒店、餐厅娱乐场所都非常的受欢迎。Ps:产品还可以当做LED屏显示哦~ 项目四: 关于水和女性护肤的健康产品;日常中家用的水龙头的水质较硬,通过一款颜值颇高的软水水龙头解决日常清洁中水质对皮肤的伤害。同时,还有一款“水轻轻”水素水杯可以让我们平时喝的水具有抗氧化功能,健康、养生,简直就是女性的福音产品。 再来感受下自由交流环节的温度: 完美收官合影, 小编再插播一句:淘富成真是凭脸对接资源的,这调性是高高挂起啊 会后,淘富成真COO 蔡素卿兴奋表示,此次参加项目路演的企业与淘富成真的资源匹配度很高,后续快速开展对接。 关于企业后续情况,好奇者可关注小编后续报道哦~ 下期预告: 淘富成真65-66期 将于5月19号厦门5月26日深圳举办届时欢迎厦门和深圳的企业报名参与~ 报名方式: 1、在线报名https://chuangke.aliyun.com/markets/aliyun/taofumeeting?spm=0.0.0.0.f3FaRI 2、扫描二维码 ——淘富成真介绍 “淘富成真”是阿里巴巴集团和富士康科技集团联手打造的“智能硬件一站式创新赋能平台”,于2015年3月在杭州云栖小镇启动,旨在把大型企业的核心能力和生态开放出来赋能给中小初创企业,助力他们站在大企业肩膀上,以直达行业顶端的视野和基础,实现从制造到“质造”和“智造”的转变。平台上线至今已赋能过500多个企业、1300多位国内外创客,涌现出多款众筹金额过千万、销售金额过千万,融资金额过千万的明星产品,一个硬件+智能的产业小集群正在形成。 在“淘富成真”平台上,阿里巴巴开放出世界领先的科技能力、强大的电商渠道及众多生态资源,包括一,云存储和云计算能力、YunOS芯片和模组、IOT套件等; 二、云市场中海量数据和API,提供地图、定位、生物识别等基础智能和技术应用;三、开放淘宝众筹、跨境电商、潮电街、极有家、阿里智能等频道;四、开放互联网金融、支付、物流等资源; 助力企业高起点、低成本地硬件创新、硬件智造,帮助企业迅速将创新产品转变为商品,打开全球销售通路。 富士康则将其8大平台,14次集团的能力开放出来,从设计、研发、材料、专利、生产、供应链管理多角度帮助中小企业打造“高贵不贵”的产品,让他们不做价格的破坏者,成为价值的创造者。 同时,围绕硬件创新者“找人、找钱、找渠道、找资源”诉求,淘富成真也不断发展新的生态伙伴,致力提供一站式赋能。以银杏谷资本、洛客工业设计、硬功馆硬创实验室、微链为代表的众多伙伴在“淘富成真”平台上为智能硬件创业者提供着一键融资、产品众创、性能诊断、芯片与套件、股权结构、知识产权保护等诸多服务。 2017年,淘富成真再度升维运营形式,以开放式的生态平台为基础,推出“百、千、万”计划,万是通过网上自助申请普惠赋能万量级项目;千指在全国巡回36场资源对接见面会,面对面诊断、深度赋能千家企业; 百是指聚集淘富资源打造一百家有潜力成为智能硬件标志性、或领头羊的企业。

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

堵车预测神器诞生,浙江已用来治疗高速顽疾

免费开通大数据服务:https://www.aliyun.com/product/odps 十一假期第一天,你以为半夜3点起床,4点开车出门,就不会被堵在路上了吗?错了,那天太阳落山前,杭州绕城高速最不堵的时段其实是下午2点左右。凭借常识推论,我们大概觉得能半夜起床的人不多。不巧的是,大家都这么认为。信息不对称,最后的结果可能是堵在路上不断告诉自己的膀胱,“亲,你再忍一下,高速休息区就在前面”。憋着尿堵在高速上是多么痛的领悟。 浙江省交通运输厅正在开展一项新的试点:将高速历史数据、实时数据与路网状况结合,基于阿里云大数据计算能力,预测出未来1小时内的路况。结果显示,预测准确率稳定在91%以上。浙江省交通信息中心主任韩海航表示,通过对未来路况的预测,交通部门可以更好的进行交通引导,用户也可以做出更优的路线选择。 阿里云大数据计算服务(OD

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

DeepSeek 拥抱国产 GPU 编程语言 TileLang

9 月 29 日,深度求索正式发布DeepSeek V3.2-Exp 模型(实验性版本),大幅提升了长文本处理效率,并宣布 API 调用成本降低 50% 以上。在这篇公告中,有这样一段表述: 在新模型的研究过程中,需要设计和实现很多新的 GPU 算子。我们使用高级语言 TileLang 进行快速原型开发,以支持更深入的探索。 据介绍,TileLang 是一种简洁的领域专用语言(DSL),旨在简化 GPU 和 NPU 等加速器上的算子编程,其核心设计理念是将复杂的硬件调度与开发者的算法逻辑解耦。 TileLang 由北大团队主导开发,核心人物除了王磊、董宇骐,还有北大计算机学院的副研究员、博士生导师杨智。 https://bbs.pku.edu.cn/v2/post-read-single.php?bid=322&postid=28065519 Tilelang 主要技术亮点包括: 简化 NPU 算子编程复杂度:Tilelang 采用类 Python 语法,大大降低 NPU 算子开发门槛,封装调度空间为自定义原语,开发者更加关注数据流本身。 支持灵活扩展:实现调度空间与数据流解耦,NPU 算子优化由编译器自动完成,同时充分利用 NPU 底层硬件特性。 高性能:Tilelang 可以实现高性能 NPU 算子,允许用户感知 NPU 硬件特性,相较 Triton 理论上可以获得更好的性能。 TileLang 采用类 Python 语法,并在 TVM 之上构建底层编译器基础架构,使开发者能够专注于提高生产力,而无需牺牲实现最佳性能所需的底层优化。 https://github.com/tile-ai/tilelang TileLang 的核心价值在于大幅降低了 GPU 编程的技术门槛。传统 GPU 编程一直被视为高性能计算领域的 “技术高地”,需要开发者精通硬件架构、内存管理等复杂知识。 据 TileLang 开发社区 Tile-AI 发起人王磊博士在技术沙龙上透露,传统开发模式下,一个高性能算子的开发需要数周时间,且代码难以维护。而 TileLang 通过分层设计,让不同技术背景的开发者都能参与 GPU 编程。王磊博士在分享中表示: 如果你是完全不懂硬件的初学者,可以像写高级数学表达式一样编程;如果你是专家,也能进行深度优化。

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

BeetlSQL 3.25.3 发布,流行国产 ORM 工具

BaseMapper增加updateByIdBatch实现,通过AutoMapper申明接口函数的实现类 public interface BaseMapper<T> { ..... @AutoMapper(UpdateByIdBatchAMI.class) int[] UpdateByIdBatch(List<?> list); } 2 重定义RewriteBaseMapper,所有继承RewriteBaseMapper的DAO,将发生SQL重写,以实现多租户,数据权限等功能。增加@DisableRewirte,可以关闭重写功能。 public interface RewriteBaseMapper<T> extends BaseMapper<T> { @AutoMapper(InsertAMI.class) @DisableRewrite void insert(T entity); @AutoMapper(InsertTemplateAMI.class) @DisableRewrite void insertTemplate(T entity); @AutoMapper(InsertBatchAMI.class) @DisableRewrite void insertBatch(List<T> list); } 3 修复DebugInteceptor 在输出调试信息,某些情况下定位调用类和调用行数不准的BUG BeetlSQL 最新扩展包 BeetlSQL 扩展包 功能 sql-xml 高仿 myabtis 的 xml 语法,如果有想喜欢使用 xml 写 sql 模板的,可以使用此扩展包 sql-accelerator 性能加速包,通过反射优化,缓存,让 beetlsql 性能提升 50%-200%,接近一半手写 JDBC 的性能 sql-firewall sql 防火墙,避免不小心写的 sql 破坏数据库 sql-dynamic-table 支持像访问静态表格那样防火动态表格,简化这类需要开发 sql-bean-encrypt 支持 @MD5 ,@AES 等对字段加密解密 sql-tenant 采用 sql 重写,支持单表多租户模式,逻辑删除,数据权限功能 SAGA(实验) BeetSQL的 SAGA 是实现,实现SAGA分布式事务 使用加速扩展性能优化结果:能达到一半手写 JDBC 的性能 查询 优化前(ops/ms) 优化后 (ops/ms) 纯 jdbc mybatis JPA beetlsqlExecuteJdbc 222 318 678 / 64 beetlsqlExecuteTemplate 198 268 / 44 66 beetlsqlFile 191 266 / 41 / beetlsqlInsert 139 129 248 43 59 beetlsqlGetAll 5 13 40 4 5 beetlsqlLambdaQuery 150 196 / 9 / beetlsqlPageQuery 128 159 / 17 59 beetlsqlSelectById 186 259 670 43 61 maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.25.3-RELEASE</version> </dependency> BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不亚于 MyBatis。你不想写 SQL 也好,或者想更好地写 SQL 也好,BeetlSQL 都能满足这要求,目前支持的数据库如下 传统数据库:MySQL (包括支持 MySQL 协议的各种数据库), MariaDB ,Oralce ,Postgres (包括支持 Postgres 协议的各种数据库), DB2 , SQL Server ,H2 , SQLite , Derby ,神通,达梦,华为高斯,人大金仓,PolarDB,GBase8s,GreatSQL 等 大数据:HBase,ClickHouse,Cassandar,Hive,GreenPlum 物联网时序数据库:Machbase,TD-Engine,IotDB SQL 查询引擎:Drill,Presto,Druid 内存数据库:ignite,CouchBase 阅读文档源码和例子在线体验多库使用性能测试

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

AWTK 1.5 发布,国产开源 GUI 引擎

ZLG AWTK 1.5 Release Notes 一、介绍 AWTK全称 Toolkit AnyWhere,是ZLG开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 欢迎广大开发者一起参与开发:生态共建计划。 AWTK寓意有两个方面: Toolkit AnyWhere。 ZLG 物联网操作系统 AWorksOS 内置 GUI。 AWTK源码仓库: 主源码仓库:https://github.com/zlgopen/awtk 镜像源码仓库:https://gitee.com/zlgopen/awtk 稳定版整合包:https://pan.baidu.com/s/1_oRgj67M-I4kivk-YzwFWA提取码:1cmi AWTK Designer 界面设计工具: 不再需要手写 XML 拖拽方式设计界面,所见即所得 快速预览,一键打包资源 注册及下载地址:https://awtk.zlg.cn 运行效果截图: 二、最终目标: 支持开发嵌入式应用程序。✔ 支持开发 Linux 应用程序。✔ 支持开发 MacOS 应用程序。✔ 支持开发 Windows 应用程序。✔ 支持开发 Web APP。✔ 支持开发 Android 应用程序。✔ 支持开发 iOS 应用程序。✔ 支持开发微信小程序。 支持开发支付宝小程序。 支持开发百度小程序。 支持开发 2D 小游戏。 三、主要特色 1. 跨平台 AWTK是跨平台的,这有两个方面的意思: AWTK 本身是跨平台的。目前支持的平台有 ZLG AWorksOS、Windows、Linux、MacOS、嵌入式 Linux、Android、iOS、Web 和嵌入式裸系统,可以轻松的移植到各种 RTOS 上。AWTK 以后也可以运行在各种小程序平台上运行。 AWTK 同时还提供了一套跨平台的基础工具库。其中包括链表、数组、字符串 (UTF8 和 widechar),事件发射器、值、对象、文件系统、互斥锁和线程、表达式和字符串解析等等,让你用 AWTK 开发的应用程序可以真正跨平台运行。 2. 高效 AWTK通过一系列的手段保证 AWTK 应用程序高效运行: 通过脏矩算法只更新变化的部分。 支持 3 FrameBuffer 让界面以最高帧率运行 (可选)。 UI 描述文件和主题文件使用高效的二进制格式,解析在瞬间完成。 支持各种 GPU 加速接口。如 OpenGL、DirectX、Vulkan 和 Metal 等。 支持嵌入式平台的各种 2D 加速接口。目前 STM32 的 DMA2D 和 NXP 的 PXP 接口,厂家可以轻松扩展自己的加速接口。 3. 稳定 AWTK通过下列方式极力让代码稳定可靠: 使用 cppcheck 和 facebook infer 进行静态检查。 使用 valgrind 进行动态内存检查。 近两万行的单元测试代码。 ZLG 强大 GUI 团队的支持。 经过多个实际项目验证。 多平台 / 多编译器验证。 优秀的架构设计。 Code Review。 手工测试。 4. 强大 丰富的控件 (持续增加中)。 支持各种图片格式 (png/jpg/gif/svg)。 支持各种字体格式 (点阵和矢量)。 支持窗口动画。 支持控件动画。 支持高清屏。 支持界面描述文件。 支持主题描述文件。 主题切换实时生效。 支持控件布局策略。 支持对话框高亮策略。 丰富的辅助工具。 支持从低端的 Cortex M3 到各种高端 CPU。 支持无文件系统和自定义的文件系统。 支持裸系统和 RTOS。 支持事件录制与重放进行压力测试。 支持 Appium 进行全自动化 UI 测试。 5. 易用 大量的示例代码。 完善的 API 文档和使用文档。 ZLG 强大的技术支持团队。 用 AWTK 本身开发的界面编辑器。 声明式的界面描述语言。一行代码启用控件动画,启用窗口动画,显示图片 (png/jpg/svg/gif)。 6. 高度扩展性 可以扩展自己的控件。 可以扩展自己的动画。 可以实现自己的主循环。 可以扩展自己的软键盘。 可以扩展自己的图片加载器。 可以扩展自己的字体加载器。 可以扩展自己的输入法引擎。 可以扩展自己的控件布局算法。 可以扩展自己的对话框高亮策略。 可以实现自己的 LCD 接口。 可以扩展自己的矢量引擎 (如使用 skia/cairo)。 所有扩展组件和内置组件具有相同的待遇。 7. 多种开发语言 AWTK本身是用 C 语言开发的,可以通过 IDL 生成各种脚本语言的绑定。生成的绑定代码不是简单的把 C 语言的 API 映射到脚本语言,而是生成脚本语言原生代码风格的 API。目前支持以下语言 (以后根据需要增加): C C++ lua java python Javascript on jerryscript Javascript on nodejs Javascript on quickjs 8. 国际化 支持 Unicode。 支持输入法。 支持字符串翻译 (实时生效)。 支持图片翻译 (实时生效)。 文字双向排版。 9. 为嵌入式软件定制的 MVVM 框架,彻底分离用户界面和业务逻辑。 性能高。 内存开销小。 隔离更彻底。 可移植到其它 GUI。 代码小 (~5000 行)。 无需学习 AWTK 控件本身的 API。 支持多种编程语言(目前支持 C/JS)。 详情请参考:https://github.com/zlgopen/awtk-mvvm 10. 开放源码,免费商用 (LGPL)。 四、1.5 版本更新 1. 细节完善 增加离线 canvas。 修改切换语言奔溃的问题。 完善 android 资源加载。 修改输入法中内存临时泄漏。 button 支持设置长按时间。 edit/mledit 支持翻译提示信息。 支持 shift+tab 向后切换焦点。 edit/mledit 支持 cancelable 属性。 软键盘支持“clear"/"cancel"两个功能按钮。 完善表达式,增加 iformat/fformat 函数。 Linux/MacOS/Windows 支持编译为动态库。 候选字控件 (candidate) 支持设置 margin style。 完善 keyboard 增加 back/back_to_home 按钮的支持。 edit/mledit/slider 支持 WIDGET_PROP_INPUTING 属性,用于辅助实现 MVVM。 大量细节完善去请参考:https://github.com/zlgopen/awtk/blob/master/docs/changes.md 2. 新增文档 新增文档《如何使用对话框》 新增文档《如何实现弹出菜单》 新增文档《如何绘制旋转文字》 新增文档《为 512K Flash 优化空间》 新增文档《如何用 edit 控件编辑日期》 新增文档《如何用 edit 控件编辑时间》 新增文档《如何用 edit 控件编辑 IP 地址》 新增文档《如何存取应用程序的配置信息》 新增文档《项目描述文件 project.json 介绍》 新增文档《如何使用软键盘上的 action 按钮》 新增文档《如何用 valgrind 查找内存相关问题》 新增文档《如何去掉不需要的控件,以节省 flash 空间》 新增文档《如何定制 combo_box 控件中按钮的风格和大小》 3. 新增特性 新增触屏版 T9 输入引擎。 新增按键版 T9 输入引擎。 支持 rgb565 格式的图片 新增 app_conf 实现配置文件的访问。 edit 支持时间、日期和 IPV4 等格式的编辑。 支持从 SD 卡加载资源,做了一些小的改动 增加事件录制与重放功能,辅助手动测试和压力测试。 新增自动化测试引擎,兼容Appium,实现全自动化测试。 重新设计内存管理器架构,新增加锁、调试和防内存碎片功能。 基本控件的文本支持双向排版 (Unicode Bidirectional Algorithm) 4. 新增控件 二维码 number-label 代码编辑器 日期选择器 表格视图 仿微信列表项 5. 新增重要 API 新增类 mutex_nest 新增类 object_locker 新增函数 emitter_exist 新增函数 str_append_more。 新增函数 tk_wstr_dup_utf8 新增函数 fs_os_file_tell 新增函数 fs_os_file_size 新增函数 fs_os_file_stat 新增函数 fs_os_file_sync 新增函数 tk_mutex_try_lock 新增函数 widget_get_text_utf8 新增函数 canvas_get_font_height 新增函数 date_time_get_month_name 新增函数 date_time_get_wday_name 7. 新增平台 mvvm 在 stm32上的移植。 8. 新增相关项目 UI 自动测试引擎 Restful WEB 框架 自定义控件生成器 自定义字体加载器 演示窗口之间的通讯方式 欢迎广大开发者一起参与开发:生态共建计划。

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

国产微服务 网关Apache APISIX 上手

2019 年 10 月 17 日,支流科技 API 网关 APISIX 进入 Apache 开始孵化。笔者表示去搜索了一下这家公司 OpenResty 圈内顶级大牛《OpenResty 最佳实践》作者 温铭 和 王院生,这就非常有意思了 APISIX 是一个高性能、可扩展的微服务 API 网关。它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 作为微服务请求⽹关,通过插件提供负载平衡,⽇志记录,身份验证等功能: 动态负载均衡: ⽀持不同上游服务的动态负载均衡 安全插件: 内置安全处理层,⽀持如OAuth2、ACL、CORS、动态 SSL 和IP 限制等 流量控制插件: 速率限制,请求⼤⼩限制和响应速率限制等 分析和监控插件:借助如 Prometheus,Datadog 和 Runscope 产品,完成API

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

🔥 动态编译 Java 的神器 Liquor v1.6.2 发布

Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,40KB),它可以在运行时编译 Java 字符串代码片段、类、方法等。 开源项目地址: gitee:https://gitee.com/noear/liquor github:https://github.com/noear/liquor 基础编译特性: 可以单个类编译 可以多个类同时编译 可以增量编译 增值功能: java 求值表达式引擎 java 脚本引擎(支持 java8 到 java24 语法) 本次更新 使用 getTypeName 替换 getCanonicalName (优化 arm jdk 兼容性) 优化 LiquorEvaluator:addSource ';' 号补全处理 简化 LiquorEvaluator clazzName 生成,避免冲突可能 添加 JavaFileSource 类 特性展示 (1)动态编译展示(编译即服务!) // A.java public class A { private B b = new B(); } // B.java public class B {} // Demo.java public class Demo { @Test public void test() throws Exception { final DynamicCompiler dynamicCompiler = new DynamicCompiler(); dynamicCompiler.addClassPath(new File(".../test/")); //有此设置。动态编译,也可调试 dynamicCompiler.addSource(new JavaFileSource(new File(".../test/A.java"))); dynamicCompiler.build(); final Class<?> clazz = dynamicCompiler.getClassLoader().loadClass("test.A"); System.out.printf("clazz: %s\n", clazz); } } (2)求值表示式展示 System.out.println(Exprs.eval("1+1")); (3)脚本展示 Scripts.eval("System.out.println(\"hello word\");"); (4)JSR223 规范脚本展示 ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("java"); System.out.println(scriptEngine.eval("return 2*6-(6+5);"));

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

🔥 动态编译 Java 的神器 Liquor v1.3.9 发布

Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,40KB),它可以在运行时编译 Java 字符串代码片段、类、方法等。 源码地址:https://gitee.com/noear/liquor 基础编译特性: 可以单个类编译 可以多个类同时编译 可以增量编译 增值功能: java 表达式引擎 java 脚本引擎(支持 java8 到 java23 语法) 本次更新 添加 DynamicCompiler:addClassPath 方法 添加 DynamicCompiler:getStandardFileManager 方法 新特性示例: // A.java public class A { private B b = new B(); } // B.java public class B {} // Demo.java public class Demo { @Test public void test() throws Exception { final DynamicCompiler dynamicCompiler = new DynamicCompiler(); dynamicCompiler.addClassPath(new File(".../test/")); //这是重点 dynamicCompiler.addSource(new JavaFileSource(new File(".../test/A.java"))); dynamicCompiler.build(); final Class<?> clazz = dynamicCompiler.getClassLoader().loadClass("test.A"); System.out.printf("clazz: %s\n", clazz); } private static class JavaFileSource extends SimpleJavaFileObject { public JavaFileSource(File codeSourceFile) { super(codeSourceFile.toURI(), Kind.SOURCE); } @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException { return new String(Files.readAllBytes(Paths.get(this.uri)), StandardCharsets.UTF_8); } } }

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

🔥 动态编译 Java 的神器 Liquor v1.3.8 发布

Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,40KB),它可以在运行时编译 Java 字符串代码片段、类、方法等。 源码地址:https://gitee.com/noear/liquor 编译特性: 可以单个类编译 可以多个类同时编译 可以增量编译 增值功能: java 表达式引擎 java 脚本引擎(支持 java8 到 java23 语法) 本次更新 添加 评估器批量预编译支持(批量时,可大大提高编译速度。适合启动初始化) 修复 jar in jar 为空包时(没有类),会异常的问题

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

橙单免费代码生成工具 3.4,最强接单神器版本

前言 橙单,一款可免费使用的线上代码生成工具,完整覆盖主流技术栈,业务代码生成完整覆盖第三范式的所有关联场景,80% 以上的前后端代码一键生成,如果您还在手写代码,不妨了解一下橙单,最懂程序员的代码生成工具。 最新尝试 橙单目前计划以 MES 和 ERP 等复杂业务场景为例,配置更多演示案例和教学视频,希望可以帮到更多的开发者,快速完成项目的实施交付和新产品的研发上线。 最新功能 代码生成,路由表单支持批量更新。 在线表单,支持批量更新。 在线表单,支持页面缓存。 在线表单,多表关联配置时支持自定义 SQL 作为从表数据的过滤条件。 在线表单,支持高级自定义查询,用户可选择主从表字段进行即席查询过滤。 在线表单,支持用户对表格列进行自定义显隐配置。 在线表单,日期组件显示格式支持自定义配置。 在线表单,支持多视图查询表单类型。 基础架构,数据权限支持自定义 SQL。 基础架构,支持微信、企微、钉钉和飞书的第三方登录。 工作流,发送消息支持邮件、微信、企微、钉钉和飞书。 工作流,在线表单工单列表支持与跨库业务表的关联查询过滤,并且可以动态配置。 工作流,路由表单工单列表支持与跨库业务表的关联查询过滤,并且可以动态配置。 工作流,以业务表主键发起流程时,可以动态配置流程发起时的变量参数。 工作流,自动化业务流新增支持缓存缓存加载、缓存删除、MQ 消息发送和异步消费通知等任务类型。

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

编写代码检查规则的神器,解读CodeNavi语法结构

本文分享自华为云社区《CodeNavi 规则的语法结构》,作者: Uncle_Tom。 1. 代码和检查规则 1.1. 代码的构成 程序是由空格分隔的字符串组成的序列。在程序分析中,这一个个的字符串被称为"token",是源代码中的最小语法单位,是构成编程语言语法的基本元素。 Token可以分为多种类型,常见的有关键字(如if、while)、标识符(变量名、函数名)、字面量(如数字、字符串)、运算符(如+、-、*、/)、分隔符(如逗号,、分号;)等。 程序在编译过程中,词法分析器(Lexer)读取源代码并将其分解成一系列的token。语法分析器(Parser)会使用这些 token 来构建一个抽象语法树(Abstract Syntax Tree, AST),这个树结构表示了代码的语法结构。这个时候每个 token 也可以称为抽象语法树的节点,树上某个节点的分支就是这个节点的子节点。每个节点都会有节点类型、属性、值。 这些是程序员非常容易理解的。 1.2. 检查规则 检查规则是查找代码节点中符合缺陷模式的检查规则。 通常静态分析工具的规则编写采用程序语言,这样开发人员除了要了解检查的问题本省,还需要理解静态分析理论,以及静态分析工具的框架,无形中增加了开发的难度。所以我们一直期望寻找到一种更适合编写静态分析规则的语言,让开发人员能够更好的专注于理解检查问题的本身,而不需要花更多的时间在如何实现上。 《寻找适合编写静态分析规则的语言》中我们给出了两个问题的解决,来描述我们对编写静态分析规则的期望。 例如: 检查问题: 生产环境中不应该有调试代码。 问题检查条件: 查找所有函数声明 并且(And):函数名以"debug"开头 并且(And):函数只有一个参数 并且(And):参数类型为"java.util.List" 问题代码样例 package com.dsl; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.List; /** * 检查问题:生产环境中不应该有调试代码。 * 问题检查条件: * - 查找所有函数声明; * - 并且(And):函数名以"debug"开头; * - 并且(And):函数只有一个参数; * - 并且(And):参数类型为"java.util.List"。 */ public class CheckDebug { private static final Logger LOG = LogManager.getLogger(CheckDebug.class); // 应检查出的问题函数 public void debugFunction(List<String> msgs) { for (String msg : msgs) { LOG.error("print debug info: {}", msg); } } } 编写检查规则 DSL 写的检查规则 /** * 检查问题:生产环境中不应该有调试代码。 * 问题检查条件: * - 查找所有函数声明; * - 并且(And):函数名以"debug"开头; * - 并且(And):函数只有一个参数; * - 并且(And):参数类型为"java.util.List"。 */ functionDeclaration fd where and( fd.name startWith "debug", fd.parameters.size() == 1, fd.parameters[0].type.name == "java.util.List" ); 2. 规则语法结构 下面我们进一步给出这种用于编写代码检查规则的工具 CodeNavi 的语法结构。 2.1. 规则的语法 结构图 语法说明 规则语句是以分号 (;) 结尾, 作为规则的终止符。 2.2. 语句结构 结构图 语法说明 节点(node): 为待检测代码节点(token); as 别名:给要查找的节点一个别名,便于后面的使用。as可以省略。别名的命名规则如下: 只能包含大小写英文字母和数字; 数字只能出现在末尾; 不能和规则内置的节点或属性同名。 例如:va1、fd、Field1都是合法的别名,1fc、v2a是非法别名。 查询条件(condition):筛选节点的条件; 2.3. 节点和节点属性 结构图 语法说明 节点(node):是代码对应语法树的节点或子节点; 属性(attribute):是代码对应语法树的节点或子节点的属性; .: 节点、子节点、属性之间的连接符; 2.4. 条件表达式结构 结构图 语法说明 where: 条件表达式的标识; and:括号内的查询条件必须都为真; or:括号内的查询条件至少有一个为真; not:括号内的查询条件为假; 逻辑的连接祠是一种作用于查询条件的关键词。规则支持and、or和not三个关联词。 逻辑的连接词需要和括号一同使用,括号中为具体的查询条件。其中,and和or可以作用于多个查询条件(即括号中可以包含多个查询条件,以逗号分隔开),not只能作用于一个查询条件。 逻辑连接词是一类作用于查询条件的特殊运算符(普通的运算符作用于节点或属性) 逻辑的连接词作用的查询条件也可以包含逻辑连接词。 示例 /* * 问题检查条件: * - 查找函数名为 debug 或 foo; * - 并且(And): 参数数量为 1 或 3。 */ functionDeclaration fd where and(or(fd.name == "debug", fd.name == "foo"), or(fd.parameters.size() == 1, fd.parameters.size() == 3)); 2.5. 条件判断(condition) 结构图 2.5.1. 运算符 查询条件通过运算符作用于具体的节点或属性从而完成节点筛选。 根据运算符作用的属性类别,我们可以将运算符分为: 通用运算符 算术运算符 字符串运算符 布尔运算符 节点运算符 运算符的左值为:节点或节点的属性。 2.5.1.1. 通用运算符(==, contain) 等于(==)、不等于(!=) 数字 运算符右值为:整数或小数。 例如:arguments.size() == 3 字符串 运算符右值为:字符串常量。 例如:name == “foo” 布尔 运算符右值为:布尔常量:true或false。 例如:isPublic == true 节点 运算符右值为:空常量null。 例如:initializer == null 包含(contain)、不包含(notContain) 字符串 运算符右值为:字符串,且包含时,返回真。 例如:recordDeclaration where name contain "debug";,返回函数名中包含"debug" 时,返回真。 节点 运算符右值为:子查询条件,当子查询返回的节点满足时,返回真。 例如:functionDeclaration where parameters contain param where param.name == "i1";,返回包含名为i1参数的方法声明。 2.5.1.2. 算术运算符(>, <) 算术运算符操作数字。 大于(>)、小于(<)、大于等于(>=)、小于等于(<=) 数字 运算符右值为:数字,且满足时,返回真。 2.5.1.3. 字符串运算符(startWith, endWith, match) 字符串运算符操作字符串。 字符串的开始字符串( startWith) 左值开始字符串等于右值字符串时,返回真。 例如:functionDeclartion where name startWith "debug";,筛选出名字以debug开头的方法声明。 字符串的结束字符串( endWith) 左值结束字符串等于右值字符串时,返回真。 例如:functionDeclartion where name endWith "hello",筛选出名字以hello结尾的方法声明。 字符串匹配( match) 左值符合右值的正则表达式时,返回真。 例如:functionDeclaration where name match ".*(login).*",筛选出名字匹配正则表达式.*(login).*的方法声明。 2.5.1.4. 布尔运算符(!) 逻辑运算符操作布尔值。 非( !) 操作符位于布尔属性的左侧,表示布尔值为false时,返回真。 例如:recordDeclaration where !isPublic等价于recordDelaration where isPublic == false。 2.5.1.5. 节点运算符(contain,in,is) 节点运算符的左侧可以是节点属性 或 别名。 包含( contain) 用于查询语法树结构上的子节点。 例如: 筛选出方法体内调用了名为foo的无参方法的方法声明。 functionDeclaration fd where fd contain functionCall where and(name == "foo", arguments.size() == 0)); 存在于( in) 查询语法树结构上的父节点。 例如: 筛选出位于赋值表达式中的数据成员访问节点。 fieldAccess fa1 where fa1 in assignStatement; 是( is) 右侧节点属性或别名相同时,返回真。 例如:筛选出出现在赋值表达式左侧的变量访问节点,且赋值表达式的右侧为方法调用节点。规则中的va是节点variableAccess的别名。 variableAccess va where va in assignStatement where and(lhs is va, rhs is functionCall); 2.5.2. 值类型 2.5.2.1. 布尔值 布尔值为布尔常量true或false。 布尔属性可以单独使用。单独使用时,布尔属性隐式等价于一个包含==的通用条件表达式。 例如,recordDeclaration where isPublic;等价于recordDeclaration where isPublic == true; 2.5.2.2. 数值 规则中的数值可以为整数或小数。 2.5.2.3. 字符串 字符串支持大小写英文字母、数字、以及正则表达式特殊字符。 2.5.2.4. 空值(null) 空值指的是源码中的null。 在使用时,空值往往和==或!=一同出现。 例如: // private String field = null fieldDeclaration fd where fd.initializer == null; // str = null assignStatement as1 where as1.rhs == null; 3. CodeNavi插件 在Vscode 的插件中,查询:codenavi,并安装。 点击关注,第一时间了解华为云新鲜技术~

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

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等操作系统。

用户登录
用户注册