SpringBoot版的低代码开发平台,关联无 SQL,性能高10倍!

Java面试指南网站:javaguide.cn

你好,我是 Guide。今天在逛开源社区的时候,发现了一个基于 Spring Boot 技术体系的低代码开发平台 Diboot 挺有意思的,号称“关联无 SQL,性能高 10 倍”。

  • Gitee 地址:https://gitee.com/dibo_software/diboot
  • 官网:https://www.diboot.com

体系架构图

diboot平台组成结构图

主要技术栈

  • 后端 Java + 关系数据库,跟紧 Spring 体系 (Spring Boot、Spring Cloud)
  • ORM 站队 Mybatis,通用 Mapper 框架选用 Mybatis-plus
  • 权限: Spring Boot 版本使用 Shiro+JWT;Spring Cloud 版本使用 Spring Security + Oauth2
  • 前后分离,前端选型 Vue,支持 ElementUI 和 Antd vue pro

基于 diboot-core 的 CRUD 和常规关联的

设计理念

  • Web 开发需要一个普适的基础框架,把复杂的问题简单化,最好还能做到更佳性能,让开发人员避开常见问题
  • 程序员很难被替代,但程序员应该聚焦于数据结构设计、业务实现、难点解决,提高解决问题的能力(未来竞争力)
  • 低代码是未来的趋势,CRUD 类重复有规律的工作应该交给工具去做

效果图

演示地址:http://demo.diboot.com/

工作台:

代码生成:

事务管理:

组织管理:

特点

  • 基础组件高效简化,SQL 代码减少 80%以上,降低开发门槛
  • 优雅注解省掉关联查询场景的 SQL 代码,彻底告别重复 CRUD
  • 更优的 RBAC 权限与访问控制 (权限自动提取、无状态、多方式登录)
  • 定时任务、消息通知、Excel 导入导出等组件更合理的实践封装...
  • 单体应用、移动端、微服务、工作流,更广的开发场景覆盖

优势

  • 极简易用(pom 中引入依赖 jar,配置参数后,即可随应用启动 UI 界面)
  • 功能强大(数据结构与代码同步、前后端、面板组件、移动端一键生成)
  • 代码标准(devtools 标准化了数据结构定义与代码规范,降低维护成本)
  • 配置灵活(可按需配置生成代码路径、模块前缀及LombokSwagger
  • 支持多库(支持 MySQL、PostgreSQL、达梦、人大金仓等 7 种主流数据库)

基础组件

1、 diboot-core: 精简优化内核:写的更少,性能更好

主要特性:

  • 单表 CRUD 无 SQL
  • 关联绑定无 SQL(注解自动绑定)
  • 数据字典无 SQL(注解自动绑定)
  • 跨表查询无 SQL(自动构建 QueryWrapper 与查询)
  • BaseService 扩展增强,支持常规的单表及关联开发场景接口
  • 其他常用工具类、状态码、异常处理的更优实践封装

基于 diboot-core 的 CRUD 和常规关联的功能实现,代码量比传统 Mybatis 项目减少 80%+,且性能更好更易维护。

详细文档: https://www.diboot.com/guide/diboot-core/introduce.html

2、IAM 身份认证基础组件 及 配套 VUE 前端框架(diboot-antd-admin、diboot-element-admin)

  • 开箱即用的 RBAC 角色权限模型与预置组织人员岗位模型
  • 基于无状态 token 的认证授权,支持刷新 token
  • 简化的 BindPermission 注解,支持兼容 shiro 的简化权限配置与自动鉴权
  • 自动提取需要鉴权的后端接口, 借助前端功能方便配置菜单按钮权限
  • 无缝适配 redis,引入 redis 依赖即可启用 shiro 的 redis 缓存
  • 支持基于注解的数据权限实现、简化的 Log 注解记录操作日志等
  • 支持灵活的扩展能力(扩展多种登录方式、灵活替换用户实体类、自定义缓存等)

详细文档:https://www.diboot.com/guide/diboot-iam/introduce.html

3、diboot-file 文件相关处理组件

  • EasyExcel 轻量封装,支持 Java 注解校验与@ExcelBind注解实现字典及关联字段的 name-value 转换,并提供完善的校验错误提示
  • 文件存储接口化,预置本地存储,简单扩展 OSS、分布式存储等实现
  • 封装常用的文件上传下载、图片压缩水印等常用处理

详细文档: https://www.diboot.com/guide/diboot-file/introduce.html

4、diboot-scheduler 定时任务组件

  • Quartz 定时任务统一管理及日志的最佳实践封装
  • @CollectThisJob 注解提供定时任务定义,自动收集供前端选择

详细文档: https://www.diboot.com/guide/diboot-scheduler/introduce.html

5. diboot-message 消息通知组件

  • 通用的消息模板&模板变量的设计方案
  • 支持多通道的消息通知发送

详细文档: https://www.diboot.com/guide/diboot-message/introduce.html

6. diboot-mobile 移动端组件

  • 提供了配套的 diboot-mobile-ui ,内置了多种登录方式
  • 支持 账号密码登录、微信小程序登录(自动注册)微信公众号登录(自动注册)

详细文档: https://www.diboot.com/guide/diboot-mobile/introduce.html

使用

1. 克隆 playground 项目

以 IDEA 为例:

"File -> New -> Project from version control..."菜单打开克隆项目对话框:

新建项目

URL 中输入如下 playground 项目路径,指定项目本地路径(避免中文路径),点击 Clone 按钮:

https://gitee.com/dibo_software/playground.git

克隆项目

提示:如没有 git 环境,也可以通过访问 https://gitee.com/dibo_software/playground 下载项目 zip 包导入的方式创建项目。

提示:master 分支为正式版本,体验请基于 master 分支。

待克隆完成后,在右侧 Maven 视图中,添加 demo 项目下的 pom.xml,以让 IDEA 识别为 maven 项目。

设置maven项目

2. 准备空数据库

在你的开发库中创建一个数据库实例,比如: playground

-- mysql示例
CREATE DATABASE playground DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

根据你本地情况修改 application.properties 中的配置参数,比如:

  • 数据库连接信息:
    • spring.datasource.url=
    • spring.datasource.username=
    • spring.datasource.password=
  • 前端项目相对路径(前端 Vue 框架选择 antd 还是 element,默认是 antd):
    • diboot.devtools.output-path-admin-ui=diboot-antd-admin/
  • 默认本地文件存储路径:
    • diboot.component.file.storage-directory=D:/temp/playground

3. 运行 demo 项目

  • 点击 "Add Configuration...",添加 DemoApplication 启动类配置。添加的应用类型可以选择"Spring Boot" 或 "Application"(社区版 IDEA)。

运行

注意:取消勾选 "JMX agent" 选项,以免报 JMX 异常信息干扰查看控制台日志。

进入 devtools 正常情况下启动完毕会打印如下 devtools 入口信息:

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- Diboot devtools v2.x.x 初始化完成:
-> URL: http://localhost:8080/api/diboot/index.html
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

如您的 IDEA 启动完成并未打印出该信息,则您的版本对 maven 的 provided 支持有差异,需要手动删除 devtools 依赖配置中的:

<scope>provided</scope>

如下图所示:

移除provided

提示:devtools 是开发过程工具,正式打包前需要剔除 devtools 依赖。

4. 使用 devtools 初始化代码

点击控制台中打印出的 URL,进入 devtools 操作页面。(个人用户初次使用需要扫码)

初次启动 devtools 会提示初始化组件的基础代码(为了方便自定义修改,devtools 将 controller 等代码生成到本地项目中)。依次点击各组件的"生成代码"按钮。

生成初始代码

打开 demo 目录下的 java 目录,将会看到相关组件的初始化代码已生成。

5. 重启 demo 后端项目

重启 DemoApplication,确保新生成的后端代码生效

注意 :因登录验证相关的 controller 需要在步骤 4 中生成,如启动前端后发现验证码无法显示,则需要检查是否执行了步骤 4 并重启了后端项目。

6. 启动前端

安装 node 运行环境 (node 版本建议选择 v14.x,以避免兼容性问题)

切换到对应的前端路径下,依次运行以下命令,安装依赖组件及运行前端:

# yarn(推荐)
yarn install
yarn run serve
# 或者 npm
npm install
npm run serve

启动成功后,打开链接进入前端,输入账号: admin/123456 登录系统,即可进入管理后台。

登录

以上就完成了 diboot 基础项目的初始化搭建,接下来我们来体验使用 devtools 生成代码吧。

7. 使用 devtools 生成后端代码

点击"数据表管理"菜单,在这里可以建表、维护表字段与关联关系、索引、生成及更新后端代码等。

数据表管理

8. 使用 devtools 生成前端代码

devtools 除了具备后端能力外,还有强大的 CRUD、导入导出、前端组件编排、移动端等完整功能的生成能力 (devtools 订阅用户专享,新用户可免费体验 7 天)。

点击控制台中打印出的 devtools URL,进入 devtools 操作页面,点击"PC 前端功能生成" 或 "前端面板组件生成" 或 "移动端前端生成", 在这里可以配置生成前端页面增删改查、导入导出、弹框表单、多 tab 页展示、树形结构、时间轴、统计图表、移动端等各种场景的前端代码生成。

········· END ··············

本文转载于网络 如有侵权请联系删除

相关文章

  • 十.vue-resource实现get, post, jsonp请求

    本文最后更新于870天前,其中的信息可能已经有所发展或是发生改变。vue-resource实现get,post,jsonp请求methods:{ getInfo(){ //当发起get请求之后,通过.then来设置成功的回调函数 this.$http.get('http://vue.studyit.io/api/getlunbo') .then(result=>{ console.log(result) }) }, postInfo(){ //发起post请求application/x-www-form-urlencoded //手动发起的Post请求,默认没有表单格式,所以,有的服务器处理不了 //通过post方法的第三个参数,{emulateJSON:true}设置提交的内容类型为普通表单数据格式 this.$http.post('http://vue.studyit.io/api/post',{},{emulateJSON:true}).then(result=>{ console.log(result.body) }) },

  • 性能测试告诉你 mysql 数据库存储引擎该如何选?

    简介数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。查看引擎可以使用SHOWENGINES;查看当前数据库支持的所有存储引擎Engine列,代表存储引擎类型;Support列代表对应存储引擎是否能用,YES表示可以用,NO表示不能用,DEFAULT表示当前默认的存储引擎 myql提供了多种不同存储引擎,也可以在一个数据库中,针对不同的要求,使用不同的存储引擎。SHOWVARIABLESLIKE'%storage_engine%';可以查看当前数据库默认的存储引擎引擎介绍InnoDB存储引擎InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。InnoDB为MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(

  • CapitalOne - Artifactory高可用集群的自动化部署实践

    背景本文为大家介绍CapitalOne如何利用自动化流水线实现ArtifactoryHA集群进行自动化运维。CapitalOne银行是美国最大的数字化银行之一,在CapitalOne的devops体系中应用了JFrogArtifactoryHA集群进行软件制品管理。由于CapitalOne规模庞大并且为满足业务连续性要求,其部署的ArtifactoryHA拥有primary和DR(灾备)两套集群的架构。在运维ArtifactoryHA集群维护中通过建设和运行自动化的流水线,在不影响用户使用和业务连续性的前提下,自动地完成了版本升级、配置更新、功能更新,安全检测等工作,并且在检测到问题时,实现自动化的回滚。流水线总体介绍:通过Jenkins与Github集成驱动流水线。每个PULL请求触发一个小规模测试并提供快速反馈。每个Merge会触发研发环境HA集群范围的部署,并进行相关测试。标签(Tag)被用来标记代码更新的验证阶段和对应的环境。使用Terraform创建基础设施,实现蓝/绿的发布。并通过ChefCookbook完成整个集群内所有角色服务器配置流水线构成静态分析流水线通过对代码静态

  • QUIC网络协议简介

    【前言】QUIC全称QuickUDPInternetConnection,是谷歌公司研发的一种基于UDP协议的低时延互联网传输协议。在2018年IETF会议中,HTTP-over-QUIC协议被重命名为HTTP/3,并成为HTTP协议的第三个正式版本。本文将介绍QUIC协议的优势、特性和原理。 添加描述【现有TCP网络协议存在的问题】一、TCP队头阻塞,停等问题这是TCP的可靠性机制的特性。HTTP2是在一个TCP连接上并行发送多个资源,TCP队头阻塞将会导致所有资源的传输需要停等,对网络质量影响较大。二、握手延迟无法避免TCP的3次握手和4次挥手是其建立和断开连接的基本步骤,这无可避免的要消耗一次RTT。而现在主流的HTTPS协议,还需要2消耗两次RTT握手才能建立连接。三、网络中间设备僵化网络中间设备在传输TCP协议时设置了很多潜规则,例如部分防火墙只允许通过80和443端口;部分NAT网关在转换网络地址时会重写传输层头部,可能导致双方无法使用新的传输格式;部分中间代理有时候出于安全需要,删除一些它不认识的选项字段。因此升级基于TCP的网络协议时,就必须要考虑和兼容这些影响。四、协

  • VueCLI3如何更改安装时的包管理器为yarn或npm

    在执行 vuecreateproject 后如果显示如下 npmrunserve 则表示你使用的是npm创建的项目。 如果显示如下 yarnserve 则表示此项目为yarn创建。那如何切换包管理器呢?在VueCLI3官网有如下一段描述:注意最后一句,明确的说明了包管理器和淘宝npm镜像源会存入  ~/.vuerc此文件如果是windows环境,则存在了 C:/user/administrator/ 下:打开此文件:只需手动更改配置内容npm为yarn,即可更改创建项目时的包管理器了(亦可删除 .vuerc 文件重新运行 vuecreatexx 选择配置)而 .vuerc 文件是在初次使用 vuecreatexx 时进行提示选择配置:之后就会按照第一次选择的配置进行安装,不再重复提示选择包管理器。

  • 未来20大科技发展趋势—人工智能、物联网、量子计算...

    1物联网 在2045年,最保守的预测也认为将会有超过1千亿的设备连接在互联网上。这些设备包括了移动设备、可穿戴设备、家用电器、医疗设备、工业探测器、监控摄像头、汽车,以及服装等。它们所创造并分享的数据将会给我们的工作和生活带来一场新的信息革命。人们将可以利用来自物联网的信息来加深对世界以及自己生活的了解,并且做出更加合适的决定。在此同时,联网设备也将把目前许多工作,比如监视,管理,以及维修等需要人力的工作自动化。物联网、数据分析、以及人工智能这三大技术之间的合作将会在世界上创造出一个巨大的智能机器网络,在不需人力介入的情况下实现巨量的商业交易。但是,虽然物联网会提高经济效率、公共安全,以及个人生活,它也会加重对于网络安全和个人隐私的担忧。恐怖分子,犯罪集团以及敌对势力将会利用物联网作为新的攻击手段。而物联网中所包含的大量数据也会诱惑政府去实施针对人民的监控,从而进一步的引发隐私和安全之间的对抗。代表性技术:微电子机械系统(MEMS)、无线通讯、电源管理技术实际应用:海量数据分析、医疗实时监测 2机器人与自动化系统 在2045年的地球上,机器人和自动化系统将无处不在。自动驾驶汽车会使交通

  • 看我如何利用OSINT技术黑掉加密货币挖矿工具

    在实施攻击之前,公开资源情报计划(OSINT)是我们收集信息的首选技术。在此之前,也有很多使用OSINT实现攻击的事例。随着物联网设备的不断发展,我们现在可以在公共网站中收集到大量的关键数据了。那么在这篇文章中,我们将会跟大家介绍如何收集与加密货币挖矿工具(比特币—Antminer和以太坊—Claymore)有关的关键数据。很多加密货币挖矿工具以及软件都需要通过网络来发送或接收数据。因此,这也给攻击者提供了可乘之机。针对Antminer的网络侦察目前最受欢迎的比特币ASIC矿机当属AntminerS9/S7了,矿机的硬件使用的是“lighttpd/1.4.32”Web服务器,而这类服务器中某些还拥有开放的SSH端口,本文所介绍的漏洞利用技术针对的是“Lighttpd1.4.31”版本。但是,你无法利用本文的技术远程访问服务器。Web服务器的网页接口采用了“HTTP摘要认证”来进行保护,这里最关键的一点就在于,这些矿机需要使用用户名以及密码来完成登录。下图显示的是antMiner的配置页面(使用了摘要认证):大家都知道,在使用OSINT技术时我们需要使用一些信息和关键词来收集数据。通过分

  • Permute 3 for mac(万能音视频转换器)v3.9.10中文版

    Permute3formac中文版是Mac系统上最容易使用的视频格式转换器,它很容易使用,无需配置,你只需将文件拖放进界面窗口,对所有的媒体进行转换。Permute3formacPermute3forMac软件特色      1、易于使用–从头开始构建,Permute是Mac应用程序的完美示例。凭借华丽的界面和拖放简单,无需复杂的选项。      2、疯狂快速–Permute设计得非常快。让我们来处理困难的事情。只需选择您想要的视频格式,它就会比您说的“硬件加速”更快地完成–MP4和HEVC预设现在可以充分利用您机器的硬件加速能力,比先前版本的Permute加速HEVC转换3倍以上!      3、PDF支持–Permute3现在支持将多个图像拼接成单个PDF。      4、包含的一切–不管您正在转换家庭电影或处理图像并不重要。Permute可以做到这一切。我们支持几乎所有格式,并有大量的设备预设可供选择。      5、看起来很神奇–无论你是否使用暗模式,Permute看起来都很神奇。利用现代技术,Permute甚至可以在黑暗模式下更改其图标。      6、保持计划–视频重新编码

  • Docker如何镜像加速

    原文链接:https://www.zhoubotong.site/post/69.html 在使用Docker下载镜像时,如果不配置镜像加速,下载镜像会比较慢,因为国内从DockerHub拉取镜像有时会遇到困难, 此时我们可以配置镜像加速器。Docker官方和国内很多云服务商都提供了国内加速器服务,例如: 科大镜像:https://docker.mirrors.ustc.edu.cn/ 网易:https://hub-mirror.c.1com/ 阿里云:https://<你的ID>.mirror.aliyuncs.com 七牛云加速器:https://reg-mirror.qiniu.com 复制 当配置某一个加速器地址之后,若发现拉取不到镜像,可以切换到另一个加速器地址。国内各大云服务商均提供了Docker镜像加速服务, 建议根据运行Docker的云平台选择对应的镜像加速服务。Ubuntu好像是15.04带来的更大变化是从upstart切换到systemd, 这两个都是作为管理启动和系统服务启动的默认设置。 对于使用upstart的系统,编辑/etc

  • 微软面试

    一.i++和++i的区别 1.如果在程序中单独使用,则都是往上加一的意思 2.如果是赋值语句(赋于一个变量),那么++i则是先加一,然后赋值(所谓的前缀加),i++则是先赋值,然后再加一(所谓的后缀)   二.java按行读取磁盘中的某个文件,然后正则匹配某个特定的字符串。 packagecom.bili.hello; importjava.io.BufferedReader; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStreamReader; importjava.util.regex.Matcher; importjava.util.regex.Pattern; publicclassHello{ publicstaticvoidmain(String[]args)throwsIOException{ Filefile=newFile("/h

  • 记一次在闲鱼上购买 MacBook Pro 的经历

    前言 以前一直用的是windows的,但是最近特别想买个macOS的。其实不是为了其他什么目的,只是涉及到开发macOS更接近linux系统,一直没使用过所以就想尝试体验下,而且现在很多公司都配置了mac给开发人员使用,像阿里很多部门都是配Macbook的。提前体验下,不仅自己在家使用,娱乐、编程等。以后如果进了类似的公司也不需要适应能立即上手不影响工作。 苹果的产品也不是第一次使用了,14年底买了一部IPhone6,一直使用到现在还很流畅,要不是中间升级系统带来的一些小问题,例如电池问题和网络问题,也许还能再战几年。相对于苹果的手机,IPhone保持一年一更新的速度,苹果的笔记本的更新频率相对而言就比较慢一点。 既然准备入手了所以就去官网上去逛了一逛,发现对于笔记本而言,目前在售的有三款:MacBook,MacBookAir和MacBookPro。至于三者间的具体区别可以自行上网查询。 总的来说大致就是:Air系列保持较为低廉的价格作为最入门、最基础的机型,MacBook是目前苹果最轻薄的笔记本,而MacBookPro是目前苹果主推的旗舰个人电脑。性能上MacbookPro>M

  • HTML5移动端图片左右切换动画

    插件描述:HTML5移动端图片左右切换动画 小海今天要给大家分享一款很不错的图片左右切换焦点图动画,并且支持移动端触摸滑动。功能上,这款HTML5图片播放器支持鼠标滑动、手机端触摸滑动以及自动播放。外观上,这款HTML5图片切换动画的两侧有淡化处理,因此更显立体效果。       找html5教程开发,canvas开发,jquary特效的朋友来涂志海个人博客网,这里有你想要的一切(万一没有的,请联系涂志海,再解决,嘿嘿)同样的,这里静态图片完全体现不出来这个插件的效果,大家可以点击演示地址看看。  下载 演示地址   下载说明: 1、解压密码:tuzhihai.com 2、只有部分模板会提供多页面下载,未加说明都是只有一个首页index.html模板。 3、如果您发现模板有错,或者您有其他更好的意见、建议请给我们留言,我们会及时处理! 4、如果您遇到什么问题,或者您想要什么资源本站没有的也可加入本站互动QQ群 293840495(交流群),小海竭诚为您服务! *下载本站模板以及作品仅供学习研究

  • 浅谈 .NET Framework 与 .NET Core 的区别与联系

    2017到了,咱们学点啥啊,要想知道学点啥,先弄清.NETFramework与.NETCore这两个概念 .当今net生态系统如下: 从上面图中我们可以看到.net主要分为三个部分.netFrameWork,.netCore,Xamarin XAMARIN主要用来构建APP的(包括IOS,AndroidWindows)主要用的是C#语言 The.NETFramework这个是我们现在经常用的,用这个可以创建windows应用程序还有webapplications,现在你可以用它创建Winform,UWP,wpf等等相关的应用程序,web方面就是Asp.netMVC .NETCore是微软推出的最新的开源的,跨平台的框架,用它可以创建的应用可以运行在MAC,Linux上。.netcore支持UWP和ASP.NETCore,UWP即Windows10中的UniversalWindowsPlatform简称。即Windows通用应用平台,在Win10Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens等平台上运行,uwp不同于传统pc上的

  • 爬虫第六次作业

    作业①: (1)DoubanMoviesTop250 要求: 用requests和BeautifulSoup库方法爬取豆瓣电影Top250数据。 每部电影的图片,采用多线程的方法爬取,图片名字为电影名 了解正则的使用方法 候选网站:豆瓣电影:https://movie.douban.com/top250 输出信息: 排名 电影名称 导演 主演 上映时间 国家 电影类型 评分 评价人数 引用 文件路径 1 肖申克的救赎 弗兰克·德拉邦特 蒂姆·罗宾斯 1994 美国 犯罪剧情 9.7 2192734 希望让人自由。 肖申克的救赎.jpg 2...... 代码 importre frombs4importBeautifulSoup frombs4importUnicodeDammit importurllib.request importthreading defdownload(url,name): try: req=urllib.request.Request(url,headers=headers) data=url

  • 【独家】K8S漏洞报告|近期bug fix解读&amp;1.11主要bug fix汇总

    内容提要: 1.高危漏洞CVE-2018-1002105深度解读 2.11/19--12/11bugfix汇总分析 3.1.11重要bugfix解读 4.1.9重要bugfix解读 在本周的跟踪分析中,以1.11版本为例,共有24条bugfix,其中8条与Kubernetes核心内容相关。 另外,近期公布了一条高危漏洞,本文会对此进行具体分析。 由于社区目前已经停止维护1.9版本,建议大家尽快升级1.11。本文也将开始持续更新1.11版本bugfix解读,并停止更新1.9。 1  严重漏洞CVE-2018-1002105 深入解读 背景 近日kubernetes被爆出高位特权升级漏洞(CVE-2018-1002105),通过特制的网络请求,任何用户都可以通过Kubernetes应用程序编程接口(API)服务器与后端服务器建立连接。一旦建立,攻击者就可以通过网络连接直接向该后端发送任意请求。 攻击步骤 具体攻击步骤如下: 发送第一个请求,通过kube-apiserver创建一个错误的websocket请求(例如请求体中缺少必要的字段),去调用kubelet的api

  • 常见数字IC设计、FPGA工程师面试题

    1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。答案应该与上面问题一致 〔补充〕:同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态表中的每个状态都是稳定的。        异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。   2:同步电路和异步电路的区别:  同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,这有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。   3:时序设计的实质: &n

  • (Java)关于运算符

    算术运算符:   加法:"-",减法:"-",除法:"/"(求余:%),乘法:"*" 例子:inti=3;    inta=4;    intsum=a+i;    System.out.println(sum); 自增:++,自减:--  例子:intx=++1;x的结果为2,先(运算)自增再赋值;inty=--1;结果为零(此处的特殊,所以用的时候要记住,不清楚的情况下可以百度,或者试验)    inty=1++;y的结果为1,先赋值 , 今日易错点:java中split分隔字符时特殊情况有”*^:|.\"(所以在使用的时候如果没有记住就记得百度一下)我就不写了。

  • 【微软大法好】VS Tools for AI全攻略(3):低配置虚拟机也能玩转深度学习,无需NC/NV系列

    接着上文,现在我们需要一种穷人的方法来搭建好Azure虚拟机。 思路很简单,因为AI组件的原理其实是传送了script文件和命令上去,那么我们这个虚拟机只要做好了所有的配置,那么我们就可以将它当作深度学习虚拟机来用了。 写到这里,我忍不住哀叹一声。买不起外置显卡的穷人,只能绞尽脑汁想这种省钱的办法。 新建一个Ubuntu16.04LTS虚拟机。当然选择Windows虚拟机也是可以的,只是不太主流。 选择存储之后,使用XShell远程连接虚拟机(这样比较方便)。 注意此时的虚拟机,GPU约等于没有,所以我们不得不运行CPU版本。所以这个虚拟机的性能会比较差,但是虚拟机此时也可以拿来用作其他事情,比如当作私有云盘,或者是tizi。 具体的安装步骤可以查看http://www.cnblogs.com/ldzhangyx/p/7624771.html,这篇博文主要讲述了如何deploy你的虚拟机,并且安装好TensorFlow环境。注意,与那篇文章有些区别的是,Azure虚拟机一般情况下不能带动CUDA,所以我们需要做的仅仅是: 1,安装Python3 2,安装TensotFlow及必要的依

  • C++ Map常见用法

    https://blog.csdn.net/shuzfan/article/details/53115922

  • 第20组第二次作业

    完成下面的题目,并在小组博客中写出整个操作过程及学习心得(图文并茂):(每人都要在小组博客中写出来,并注明姓名) 1.参照http://www.cnblogs.com/xinz/p/3803109.html的第一题,每人建立一个GitHub账号,组长建立一个Project,将本组成员纳入此Porject中的Collaborators,并添加zykgnyue为Collaborator。 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。 3.完成小组的“CanTool”项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产生冲突。并验证GitHub上的文档确实是最新的文档。 陈桐作业: 1,建立好自己的GitHub账号:honeyxiaotong。并以合作者的身份加入到组长创建的project里。   2,自己建立一个HelloWorld项目,用vi编辑器写一个简单的hello

  • 把Python打包成可执行文件

      要想在没有安装Python集成环境的电脑上运行开发的Python程序,必须把Python文件打包成.exe格式的可执行文件(针对于windows)。网上介绍的各种打包工具的对比如下: SolutionWindowsLinuxOSXPython3LicenseOne-filemodeZipfileimportEggspkg_resourcessupport bbFreeze yes yes yes no MIT no yes yes yes py2exe yes no no yes MIT yes yes no no pyInstaller yes yes yes no GPL yes no yes no cx_Freeze yes yes yes yes PSF no yes yes no py2app no no yes yes MIT no yes yes yes   1、安装PyInstaller   pipinstallpyinstaller复制   2、PyInstaller的使用方

相关推荐

推荐阅读