首页 文章 精选 留言 我的

精选列表

搜索[AI可见性],共10000篇文章
优秀的个人博客,低调大师

MIT CSAIL 推出可轻松创建领域特定语言的工具

MIT CSAIL 的研究人员启动了一个新工具BuildIt,旨在使开发人员更轻松地创建自己的编程语言。 根据 MIT CSAIL 的说法,许多编程语言被归类为领域特定语言(domain-specific languages,DSL),即以某种方式从传统语言中改编出来的语言,是为非程序员使用而设计的。但是,DSL存在的一个可能很难创建的问题。例如,如果要使用 C++创建新的 DSL,则需要聘请专家通过查看团队已经编写的程序来确定需要合并哪些元素来进行设计,并且他们还需要编写一个新的编译器、解析器和代码生成器。 因此,BuildIt工具则旨在消除聘请专家的需要。它充当一个 multi-staging 框架,可以将语言的复杂性降低到一些通用功能的集合。使用 BuildIt,开发人员只需采用现有程序并进行一些更改,就可以创建 DSL。 MIT CSAIL 博士生 Ajay Brahmakshatriya解释称,BuildIt 并没有全面了解该程序,而是通过程序中发生的单个简单操作(例如乘法和除法)的狭窄窗口对其进行检查。这相当于一个人走过迷宫:即使他们一次只能看到其中的一部分,他们也可以通过记录观察结果并将标记留在他们探索过的不同路径上来进行导航。 麻省理工学院教授 Saman Amarasinghe则表示,他希望 BuildIt 能够激发非程序员在他们的工作中使用编程,因为他们不需要太多的编程知识就可以使用这些 DSL。 他认为,有了 BuildIt,任何具有应用领域知识的人,从物理研究人员到疫苗开发人员,都可以编写自己的 DSL,而无需创建大型库。”这为未来几年推进新的创新打开了很多令人兴奋的可能性。“ 感兴趣的可以查看 Ajay Brahmakshatriya与 Saman Amarasinghe 共同撰写的关于BuildIt 的论文。

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

jSqlBox5.0.4 发布,精雕细凿,写出可维护的 SQL

jSqlBox是一个Java DAO工具,主要特点是架构优、尺寸小、功能全,基本上所有与数据库操作相关的功能,jSqlBox都已提供。它的主要特点有: 1.只有单个1M大小的jar包,不依赖任何第三方库。它可以独立使用,也支持在Spring环境下使用。 2.内核基于DbUtils并与之兼容,最差情况下可以降级当成DbUtils来使用,上手快。 3.提倡在java里拼写SQL,独创参数内嵌式SQL写法(下面会详细介绍)。 4.支持分库分表、多租户、声明式事务、分布式事务、长文本、ActiveRecord。 5.支持80多种数据库方言,分页、函数变换、DDL生成、实体源码生成、实体或数据库结构导出Excel。 6.主要的实体类注解兼容JPA标准。 在Java里直接写SQL,独创参数内嵌式SQL写法是jSqlBox的主要特点。传统的SQL写法有什么问题? 最大的问题就是它是“不可维护”的,比如说下面这个SQL, 当要添加、更新或删除列时会很困难,因为要找到列名和参数的对应位置需要花时间,SQl越长,越难维护: insert into tb_price_setting (id,code,adult_price,child_price,total_price,adult_note,child_note, currency,type,time_zone,status,include_tax,adult_discount,child_discount,total_discount, created_at,updated_at,) values(1200, "BJD837434", 50, 30, 80, "15以上全价", "8-15半价", "USD, 8, "UTC", "A", 3.03, 0, 0, 0, "2019-09-17 04:07:55", "2020-03-10 22:43:00"; 而采用jSqlBox后,写法是这样的: DB.exe("insert into tb_price_setting (", // "id,", par(1200), // "code,", par("BJD837434"), // "adult_price,", par(50), // "child_price,", par(30), // "total_price,", par(80), // "adult_note,", par("15以上全价"), // "child_note,", par("8-15半价"), // "currency,", par("USD"), // "type,", par(8), // "time_zone,", par("UTC"), // "status,", par("A"), // "include_tax,", par(3.03), // "adult_discount,", par(0), // "child_discount,", par(0), // "total_discount,", par(0), // "created_at,", par("2019-09-17 04:07:55"), // "updated_at,", par("2020-03-10 22:43:00"), // ")", valuesQuestions()); 在jSqlBox中SQL的参数是可以挪动到任意位置的,在不降低SQL的可读性和保持原生SQL功能的前提下,这种写法极大地提高了SQL的可维护性,新增或删除列时只要增删对应的行即可。相比与JPA利用实体ORM进行CRUD, MyBatis利用模板书写SQL, jSqlBox这种写法是最简单明了的,直接拼写SQL,打完就收工,不需要引入额外的实体类和模板。模板的问题是需要两次书写,列名在模板里写一次,在参数代入时要又要再写一次,增加了维护工作量。 有眼尖的同学可能会发现,这种写法列名字符串直接写在SQL里,如果数据库字段变动,IDE不能发现和报错,也就是说,SQL是不支持重构的,这个问题怎么解决? 不用担心,本次更新提供了解决方案。 方案一,利用jSqlBox最新出炉的Q类生成工具,根据数据库内容自动生成所有表格的Q类,并且可以定制Q类格式。每次数据库变动,重新生成一遍Q类即可。Q类中包含了所有表格字段常量。则上述的SQL可以写成如下形式: QTbPriceSetting p=QTbPriceSetting.instance; DB.exe("insert into ",p," (", // p.id, par(1200), // p.code, par("BJD837434"), // p.adult_price, par(50), // p.child_price, par(30), // p.total_price, par(80), // p.adult_note, par("15以上全价"), // p.child_note, par("8-15半价"), // p.currency, par("USD"), // p.type, par(8), // p.time_zone, par("UTC"), // p.status, par("A"), // p.include_tax, par(3.03), // p.adult_discount, par(0), // p.child_discount, par(0), // p.total_discount, par(0), // p.created_at, par("2019-09-17 04:07:55"), // p.updated_at, par("2020-03-10 22:43:00"), // ")", valuesQuestions()); 方案二: 利用QueryDSL的Maven插件,适用于已存在JPA实体类的场合。这个插件可以扫描项目已有的JPA实体类,生成Q类,jSqlBox借花献佛可以把它的Q类拿过来用于拼接原生SQL。使用示例如下,和方案一的用法类似,在需要表格名的时候,直接传入Q类实例,在需要SQL列名的时候,传入Q类的常量字段即可: QUser u = QUser.user; DB.exe("insert into ", u, " (", u.id, ",", par(1), u.userName, ",", par("张三"), u.userAge, par(15), ")", valuesQuestions()); 以上两种方案的详细使用介绍请参见jSqlBox用户手册的"支持重构的SQL"一节。 jSqlBox (5.0.4.jre8版) 本次更新内容: 1. 如上所述,新增生成和使用Q类来写出支持重构的SQL。根据数据库生成Q类只需要在jSqlBox中调用以下方法即可: TableModelUtils.db2QClassSrcFiles(ctx.getDataSource(), ctx.getDialect(), "c:\\outputFolder", "com.demo", "Q"); 2. 新增多租户功能,详见用户手册"jSqlBox进阶-主从、分库分表、多租户"一节的介绍。 3. TableModelUtilsOfDB添加了compareDB方法,这是个小功能,可以用来比较两个数据库结构是否有差异,用法如下: TableModelUtilsOfDb.compareDbIgnoreLength(connection1, connection2); 4. DbContext新增一个SqlItemhandler配置选项,可以用来定制自已的Sql条目解析器。 5. DbPro类中新增qryBooleanValue方法,返回一个boolean类型值。 6. DB类中新增notBlank和noBlank两个方法,用来在动态拼接SQL时判断空字符串条件,和原有的notNull、noNull使用方法类似,比如说下面这种写法,当 用user.getAge()为null时不会插入age列,当user.getEmail()为null或空白字符串时,不会插入email列: DB.exe("insert into users (", // " name ,", par("Sam"), // notNull("age,", user.getAge()), // notBlank("email,", user.getEmail()), // " address ", par("Canada"), // ") ", valuesQuestions()); 用DB中的when()方法也可以实现根据条件来动态拼接SQL,但notBlank/noBlank/notNull/noNull这类判空方法写起来更简洁一些。

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

Dubbo 反序列化漏洞,可导致远程代码执行

近日 Dubbo 官方报告了一个 Dubbo远程代码执行问题(CVE-2020-1948),该问题由 Provider 反序列化漏洞引起。根据介绍,攻击者可以使用无法识别的服务名称或方法名称,并带上一些恶意参数有效载荷发送 RPC 请求。当恶意参数反序列化后,将执行一些恶意代码。 受影响的版本: 2.7.0 <= Dubbo Version <= 2.7.6 2.6.0 <= Dubbo Version <= 2.6.7 所有 2.5.x 版本(官方团队不再支持) 所有 Dubbo 版本都可以升级到 2.7.7 或更高版本,避免该漏洞:https://github.com/apache/dubbo/releases/tag/dubbo-2.7.7 详情查看邮件列表。

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

云备份软件 v1.2 升级,可备份到自建 SFTP

更新日志 1. 增加SFTP支持,可以将文件备份到自建SFTP服务器 2.修复华为云 isUsable() 函数,如果填写错误,运行时无错误提示问题 3. 优化华为云OBS联网异常、授权异常 4.增加日志面板中,如果备份异常,在状态label中显示 5.版本更新增加 http 200 判断拦截 6.mac系统,优化右上角窗口关闭按钮,点击后弹出提醒 7.更新版本检测及windows自动更新机制, windows 64 的更新,不需要重新下载,在线升级。 yunbackups 云备份软件,纯Java编写,代码开源。提供命令行方式、以及可视化界面两种方式运行。用户可以将自己电脑、或手机、或服务器等文件,进行备份。 目前可以将备份的文件存放到华为云对象存储(归档存储)、以及FTP进行存储。

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

DuckDuckGo 开源 Tracker Radar,可自定义在线跟踪阻止方案

以注重隐私著称的搜索引擎及浏览器制造商DuckDuckGo宣布推出Tracker Radar(跟踪器雷达),并开源其背后的代码。 Tracker Radar是一个公开的数据集,包含了最常见的跨站点跟踪器,以及有关其跟踪行为的详细信息,包括普遍性、所有权、指纹行为、cookie 行为、隐私策略,特定资源的规则和性能数据等等。它可用于生成或研究跟踪器拦截列表。 DuckDuckGo决定构建自己的跟踪器数据集的原因之一是,现有的跟踪器拦截列表大都是手动管理,其中的数据通常较旧且不够全面。而且,这些列表有时甚至会对站点造成破坏,阻碍主流采用。于是,DuckDuckGo Tracker Radar 诞生了,它能够自动生成数据,同时不断更新、不断测试。 具体来说,Tracker Radar 包含两个主要信息。一是每个第三方域的文件,并包含关于该文件的详细信息;二是每个父实体的域文件,它列出了实体拥有的所有域。 ▲ Google 拥有的跟踪器数量最多 面对目前广告跟踪器泛滥的现象,DuckDuckGo 认为最好的应对方法之一是使用跟踪拦截器,但根据他们对隐私行为的研究发现,只有 19% 的人在使用跟踪保护。DuckDuckGo 表示,Tracker Radar 能够使用户获得高质量的跟踪保护,它目前已内置于DuckDuckGo 移动端和浏览器扩展中。 开发人员也可以使用Tracker Radar 来自定义一份跟踪器拦截列表。此外,对于研究人员来说,借助 Tracker Radar 中的详细信息,可以更轻松地对网络跟踪展开研究。 作为一家盈利性公司,DuckDuckGo 也需要通过其搜索业务获利,在接受外媒CNET的采访时,其负责人Weinberg表示,公开Tracker Radar 数据集可能也会“蚕食”自己的产品,但这不是最重要的,信誉标准应当优先于利润潜力。 更多详细信息,可查看完整公告。

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

zuihou-admin-cloud 1.3 发布, 多租户模式可自由切换

更新日志: 1. 完善数据字典相关接口对接 2. 重构数据源配置 BaseDbConfiguration 3. 让项目的租户模式变成自由切换(包括 zuihou-ui 支持配置) (通过配置文件的参数修改即可) 4. 解决 p6spy 打印 为 null 的sql语句 5. 将配置文件中过时的配置(logging.path等)升级为 最新版本的配置 6. 用于测试 分布式事务(seata) 的2个服务取消多租户配置,并将分布式事务调试通过 7. 修复 zuihou-admin-ui 运行报错 : `Cannot read property 'range' of null` 解决方案: "babel-eslint": 降级为 "8.0.1" 8. 统一 zuihou-admin-ui 的接口调用返回值 9. 记录更加详细的登录日志(登录失败原因等) 简介: 基于`SpringCloud(Hoxton.SR1)` + `SpringBoot(2.2.2.RELEASE)` 的 SaaS型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss防跨站攻击、自动代码生成、多存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发,支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,非常适合学习使用。核心技术采用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Seata、Nacos、Sentinel、RabbitMQ、FastDFS等主要框架和中间件。 希望能努力打造一套从 SaaS基础框架- 分布式微服务架构- 自动化部署- 系统监测的解决方案。本项目旨在实现基础能力,不涉及具体业务。 功能点介绍: 服务注册与调用: 基于Eureka来实现的服务注册与调用,在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。 服务鉴权: 通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的安全性。 负载均衡: 将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和rebbion,可以帮我们进行正常的网关管控和负载均衡。其中扩展和借鉴国外项目的扩展基于JWT的Zuul限流插件,方面进行限流。 熔断机制: 因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Hystrix的作为熔断器,避免了服务之间的“雪崩”。 监控: 利用Spring Boot Admin 来监控各个独立Service的运行状态;利用turbine来实时查看接口的运行状态和调用频率;通过Zipkin来查看各个服务之间的调用链等。 数据权限: 利用基于Mybatis的DataScopeInterceptor拦截器实现了简单的数据权限 SaaS的无感解决方案: 使用Mybatis拦截器实现对所有SQL的拦截,修改默认的Schema,从而实现多租户数据隔离的目的。 二级缓存: 采用J2Cache操作缓存,第一级缓存使用内存(Caffeine),第二级缓存使用 Redis。 由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。 该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的缓存冷启动后对后端业务的冲击。 优雅的Bean转换: 采用Dozer组件来对 DTO、DO、PO等对象的优化转换 前后端统一表单验证: 严谨的表单验证通常需要 前端+后端同时验证, 但传统的项目,均只能前后端各做一次检验, 后期规则变更,又得前后端同时修改。 故在hibernate-validator的基础上封装了zuihou-validator-starter起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则, 以后若规则改变,只需要后端修改即可。 防跨站脚本攻击(XSS): 通过过滤器对所有请求中的 表单参数 进行过滤 通过Json反序列化器实现对所有 application/json 类型的参数 进行过滤 当前用户信息注入器: 通过注解实现用户身份注入 在线API: 由于原生swagger-ui某些功能支持不够友好,故采用了国内开源的 knife4j ,并制作了stater,方便springboot用户使用。 代码生成器: 基于Mybatis-plus-generator自定义了一套代码生成器, 通过配置数据库字段的注释,自动生成枚举类、数据字典注解、SaveDTO、UpdateDTO、表单验证规则注解、Swagger注解等。 定时任务调度器: 基于xxl-jobs进行了功能增强。(如:指定时间发送任务、执行器和调度器合并项目、多数据源) 汉化 Eureka 注册中心页面: 请切换分支进行查看 大文件/断点/分片续传: 前端采用webupload.js、后端采用NIO实现了大文件断点分片续传,启动Eureka、Zuul、File服务后,直接打开docs/chunkUploadDemo/demo.html即可进行测试。 经测试,本地限制堆栈最大内存128M启动File服务,5分钟内能成功上传4.6G+的大文件,正式服耗时则会受到用户带宽和服务器带宽的影响,时间比较长。 分布式事务: 集成了阿里的分布式事务中间件:seata,以高效并且对业务0侵入的方式,解决 微服务 场景下面临的分布式事务问题。 项目代码地址 项目 gitee github 备注 微服务项目 https://gitee.com/zuihou111/zuihou-admin-cloud https://github.com/zuihou/zuihou-admin-cloud SpringCloud 版本后端代码 单体项目 https://gitee.com/zuihou111/zuihou-admin-boot https://github.com/zuihou/zuihou-admin-boot SpringBoot 版本后端代码 租户后台 https://gitee.com/zuihou111/zuihou-ui https://github.com/zuihou/zuihou-ui | 给客户使用的前端 开发&运营后台 https://gitee.com/zuihou111/zuihou-admin-ui https://github.com/zuihou/zuihou-admin-ui 给公司内部开发&运营&运维等人员使用 代码生成器 https://github.com/zuihou/zuihou-generator 开发人员使用 演示地址 (演示账号没有写权限,只能查询) 项目 演示地址 管理员账号 普通账号 租户后台 http://tangyh.top:10000/zuihou-ui zuihou/zuihou test/zuiou 开发&运营后台 http://tangyh.top:180/zuihou-admin-ui demoAdmin/zuihou 无

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

Firefox 73 可禁用来自网站的 VR 设备访问通知

随着 Firefox开始支持Virtual Reality,包含 Vimeo 视频或 VR 内容的网站现在都会尝试请求访问 VR 设备。当用户访问受 VR 支持的网站时,当前可以在 Firefox 73 Nightly 中看到这些通知。同时,像其他通知请求一样,Firefox 也允许在新的 Virtual Reality权限设置中阻止 Virutal Reality 设备访问请求。 Mozilla 为 Virtual Reality 提供了专门的 Firefox 浏览器,称为 Firefox Reality,其允许用户在其中打开 Web。当前,Firefox Reality 支持以下VR headsets:Viveport,Oculus Go 和 Google Daydream。 到目前为止,包含有 Vimeed 视频的网站可以看到该通知,如下所示:“您是否允许 player.vimeo.com 访问 virutal reality设备?” Firefox 在通知中警告说,这可能会暴露敏感信息,您可以选择允许或不允许访问该站点的 VR 设备。 Block website requests to access Virtual Reality devices in Firefox 1.点击Firefox hamburger menu > 选项 2. 隐私和安全 > 权限 > Virtualy Reality 3. 单击设置,然后选择“阻止要求访问您的 Virtualy Reality 设备的新请求(Block new requests asking access to your virtual reality devices)”。 参考消息:https://techdows.com/2019/12/firefox-73-block-website-notifications-to-access-virtual-reality-devices.html

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

Chrome 引入 Web Bundles,可实现完整的离线 Web Apps 功能

在迈向“渐进式 Web 应用”(WPA)的持续努力下,谷歌已经使 Web Apps 向着原生应用迈进了重要的一步。在新版 Chrome 工具中,其引入了 Web Bundles 技术,以完全弥合两者之间的差距。 据悉,该框架不仅可以使 Web Apps 脱机工作,甚至能够从 USB 等驱动器介质进行安装,并具有后台同步和内容索引之类的功能技术,可在互联网中断时继续无缝运行。 (题图 viaMSPU) 该工具包允许开发者将整个网站打包成一个脱机文件,甚至包含用于身份验证的短信接收、联系人选择、文件系统访问等功能。 下面是 Google 讲述的 Web bundles 的一些特性: 支持多页面封装,将整个网站打包到一个文件中; 与 MHTML 不同的是,它能够启用可执行的 JavaScript; 使用 HTTP Variants 进行内容协商,若离线使用,可在标头中启用 Accept-Language 国际语言支持; 支持发布者加密签名,在其来源的上下文中加载; 本地即时加载。 相关视频点此查看:Web Bundles - user-to-user sharing demo 下面是 Google 给出的一些用例: 创建自己的内容,并以各种方式去分发,而不受网络的限制; 通过蓝牙或 Wi-Fi Direct 向好友分享一个 Web App 或一段内容; 将整个站点装在一个 USB 驱动器里,甚至将其托管在本地网络中。 感兴趣的朋友,可在 Chrome 浏览器中激活这项实验性功能(Web Bundle)。不过随着 Web Apps 功能的不断增强,可能迟早会闹出 HTML 病毒啥的。 来源:cnBeta原文:engadget.com

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

F5网络公开课(可复听)

F5网络公开课是基于移动平台的课程,出新课时会有新课通知,已讲过的课程可以在线复听。请使用微信访问。扫描右侧“F5网络公开课”二维码进入直播间复听免费无加密课程。 多层级DDoS防护系列讲座(一):SSL无处不在多层级DDoS防护系列讲座(二):DDoS防护多层级DDoS防护系列讲座(三):运营商环境防御架构及技术剖析 云方案系列讲座(一):混合云方案之F5与Azure云方案系列讲座(二):混合云方案之F5与AWS云方案系列讲座(三):F5与OpenStack构架的私有云方案 F5双活数据中心解决方案

资源下载

更多资源
Nacos

Nacos

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

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

用户登录
用户注册