当前位置: 首页 > news >正文

学习第五篇:【SpringBoot-Labs】Spring Boot 调试环境、热部署入门、Lombok、MapStruct入门

本周(8.21-8.27)将学习芋道 Spring Boot的以下文章:
8.21: 快速入门
8.22:Spring Boot 自动配置原理 、Jar 启动原理
8.23:调试环境、 热部署入门、消除冗余代码 Lombok 入门
8.24:对象转换 MapStruct 入门、SpringMVC 入门
8.25: WebFlux 入门、 分布式 Session 入门
8.26:API 接口文档 Swagger 入门、API 接口文档 Swagger Starter 入门
8.27:参数校验 Validation 入门、WebSocket 入门

芋道 Spring Boot 调试环境

  • Gradle 支持使用 Maven 依赖,所以可以使用阿里云的 Maven 镜像
  • 使用 spring-boot-smoke-test-tomcat 项目可以调试SpringBoot项目的启动环境

芋道 Spring Boot 热部署入门

  • spring-boot-devtools 是 Spring Boot 提供的开发者工具,它会监控当前应用所在的 classpath 下的文件发生变化,进行自动重启

  • spring-boot-devtools没有采用热部署的方式,而是一种较快的重启方式。

  • Spring Boot 通过使用两个类加载器来提供了重启技术。

    • 不改变的类(例如,第三方 jar)被加载到 base 类加载器中。
    • 经常处于开发状态的类被加载到 restart 类加载器中。
    • 当应用重启时,restart 类加载器将被丢弃,并重新创建一个新的。这种方式意味着应用重启比冷启动要快得多,因为省去 base 类加载器的处理步骤,并且可以直接使用。
  • 点击 IDEA 的菜单 IntelliJ IDEA -> Preference...,然后选择 Compiler 选项卡,将 Build project automatically 勾选上。

    Build project automatically

  • Build project automatically 后面的一行提示,自动编译仅在项目不处于运行,或者处于 Debug 运行中时,才会自动生效

  • IDEA 提供了 HotSwap 插件,可以实现真正的热部署。

    IDEA HotSwap 插件

  • 修改项目的Run Configuration的Running Application Update PolociesUpdate classes and resources,此时焦点从 IDEA 离开,IEDA会自动触发更新类和资源

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UX50Lhqj-1629732382336)(http://www.iocoder.cn/images/Spring-Boot/2019-01-04/23.png)]

  • Jrebel 是比较有名的一款 Java 热部署插件。

芋道 Spring Boot 消除冗余代码 Lombok 入门

  • Lombok 是一个 Java 工具,通过使用其定义的注解,自动生成常见的冗余代码,提升开发效率。

  • 添加Lombok依赖后,只需在 Java POJO 类上,添加 @Setter@Getter 注解,自动生成 set、get 方法的代码。

  • Lombok 的实现原理,基于 JSR269(Pluggable Annotation Processing API) 规范,自定义编译器注解处理器,用于在 Javac 编译阶段时,扫描使用到 Lombok 定义的注解的类,进行自定义的代码生成。

  • Lombok 的注解非常多,主要有以下注解。

    • @Getter 注解,添加在属性上,生成对应的 get 方法。

    • @Setter 注解,添加在属性上,生成对应的 set 方法。

    • @ToString 注解,添加在上,生成 toString 方法。

    • @EqualsAndHashCode 注解,添加在上,生成 equals 和 hashCode 方法。

    • @AllArgsConstructor@RequiredArgsConstructor@NoArgsConstructor 注解,添加在上,为类自动生成对应参数的构造方法。

    • @Data 注解,添加在上,是 5 个 Lombok 注解的组合。

      • 为所有属性,添加 @Getter@ToString@EqualsAndHashCode 注解的效果
      • 为非 final 修饰的属性,添加 @Setter 注解的效果
      • final 修改的属性,添加 @RequiredArgsConstructor 注解的效果
    • @Value 注解,添加在上,和 @Data 注解类似,区别在于它会把所有属性默认定义为 private final 修饰,所以不会生成 set 方法。

    • @CommonsLog@Flogger@Log@JBossLog、@Log4j、@Log4j2、@Slf4j、@Slf4jX 注解,添加在上,自动为类添加对应的日志支持。

    • @NonNull 注解,添加在方法参数类属性上,用于自动生成 null 参数检查。若确实是 null 时,抛出 NullPointerException 异常。

    • @Cleanup 注解,添加在方法中的局部变量上,在作用域结束时会自动调用 #close() 方法,来释放资源。例如说,使用在 Java IO 流操作的时候。

    • @Builder 注解,添加在上,给该类加个构造者模式 Builder 内部类。

    • @Synchronized 注解,添加在方法上,添加同步锁。

    • @SneakyThrows 注解,添加在方法上,给该方法添加 try catch 代码块。

    • @Accessors 注解,添加在方法属性上,并设置 chain = true,实现链式编程。

芋道 Spring Boot 对象转换 MapStruct 入门

  • 不同的项目分层对应的对象不同

    • DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
    • DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
    • BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。
  • 手动进行对象的转换,虽然执行性能很高,但是开发效率非常低下,且可能会存在漏写的情况。因此,我们会选择借助框架或是工具来实现对象的转换,例如:

    • Spring BeanUtils
    • Apache BeanUtils
    • Dozer
    • Orika
    • MapStruct
    • ModelMapper
    • JMapper
  • MapStruct基于 JSR 269 的 Java 注解处理器(与Lombok一致),自动生成对象的代码,使用便捷,性能优秀。

  • 通过创建一个 MapStruct Mapper 接口,并定义一个转换接口方法,后续交给 MapStruct 自动生成对象转换的代码即可。

  • MapStruct使用纯 Java 的方法调用源对象和目标对象之间进行映射,并非 Java 反射机制

  • 与动态映射框架相比,MapStruct 具有以下优点:

    • 使用纯 Java 方法代替 Java 反射机制快速执行。
    • 编译时类型安全:只能映射彼此的对象和属性,不能映射一个 Order 实体到一个 Customer DTO 中等等。
    • 如果无法映射实体或属性,则在编译时清除错误报告。
  • 通过 Lombok 帮我们自动生成相对“冗余”代码,例如说 setter、getter 等等方法。恰好,MapStruct 自动生成的对象转换的代码,也是依赖 setter、getter 方法的,因此两者在一起使用时,需要进行相应的配置。

    MapStruct + Lombok

  • 在对象转换时,我们可能会存在属性不是完全映射的情况,例如说属性名不同。此时,我们可以使用 MapStruct 提供的 @Mapping 注解,配置相应的映射关系。示例如下图:

 映射

  • @Mapping 注解还支持多个对象转换为一个对象。
  • MapStruct 提供了 IDEA MapStruct Support 插件,在 使用IDEA开发过程中,可以更愉快的使用 MapStruct

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

剑指 Offer 11. 旋转数组的最小数字

class Solution:def minArray(self, numbers: List[int]) -> int:left 0right len(numbers) - 1while left < right:# 取中点mid left (right - left) // 2# 如果 numbers[mid] > numbers[right] ,分界点落在 (mid, right]if numbers[mid] > numbers[right]:le…...

offer来了读书笔记-数据库三范式

面试中被问到了数据库三范式&#xff0c;只知道范式是数据库的设计规范&#xff0c;但是具体文档化的内容一下子却想不起来了&#xff0c;回顾平时的数据库表设计&#xff0c;其实也没有特别遵守范式&#xff0c;一切都是以方便开发为第一要素&#xff0c;这里对数据库的几个范…...

Linux 之 RAID 磁盘阵列

目录一、RAID磁盘阵列1.1 RAID磁盘阵列介绍1.2 常用的RAID级别1.2.1 RAID 0&#xff08;条带化存储&#xff09;1.2.2 RAID 1 (镜像存储)1.2.3 RAID5 磁盘列阵1.2.3 RAID6 磁盘列阵1.2.4 RAID 10&#xff08;先做镜像&#xff0c;再做条带&#xff09;1.2.5 RAID 01&#xff08…...

740_CTEX安装

全部学习汇总&#xff1a; https://github.com/GreyZhang/g_Tex 最终还是走上了这条路&#xff0c;没有抵制住这个神秘的诱惑。其实&#xff0c;TEX对我来说似乎并不是一个必须要接触的东西&#xff0c;接触的最大原因也是因为高德纳创造了他&#xff0c;我想看看这一套工具背后…...

【论文阅读笔记】Partial Convolution based Padding

论文地址&#xff1a;https://arxiv.org/abs/1811.11718 代码地址&#xff1a;https://github.com/NVIDIA/partialconv 论文小结 本文提出一种有效地解决因padding造成的无效信息增加的方案。   本文提出的解决方案借鉴于partial convolution的思想&#xff0c;以此一起解决…...

用 Python 进行 OCR 图像识别

数据采集就怕遇到图片,只能看不能复制怎么办。手动将文字提取出来,要耗费很大的工作量。 例如下图,某楼盘的一房一价表,怎么样发现单价低位的房子?光凭肉眼很难发现吧,能否让计算机进行文字的识别,然后再对这些数值型信息进行数据分析? 首先把图片中的单价提取出来, …...

大端小端存储二进制与字节的转换

大端小端二进制与字节的转换 单位换算 位&#xff1a;“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节&#xff1a;8个二进制位构成1个“字节(Byte)”&#xff0c;它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字&#xff0c…...

5个实用提速深度学习模型的方法

您是否通过深度学习模型获得了良好的准确性&#xff0c;却发现推理时间不足以部署到生产环境中&#xff1f;您是否对如何优化模型的推理速度迷失了方向&#xff1f;那么这篇文章是给你的。众所周知&#xff0c;数据科学项目有一个奇特的特性&#xff0c;即项目者需要不断转换关…...

Linux系统中安装MySQL

文章目录提前须知Linux版本的MySQL下载卸载系统自带的数据库安装前准备解压MYSQL安装包创建MYSQL用户和用户组创建data文件夹修改MYSQL目录的归属用户准备MYSQL的配置⽂件正式开始安装MYSQL复制启动脚本到资源目录设置MySQL系统服务并开启⾃启启动MySQLD将MySQL的BIN目录加入PA…...

(更新时间)2021年6月3日 商城高并发秒杀系统(.NET Core版) 24-性能优化-nginx负载均衡优化

一、关于Nginx的负载均衡 在服务器集群中&#xff0c;Nginx起到一个代理服务器的角色&#xff08;即反向代理&#xff09;&#xff0c;为了避免单独一个服务器压力过大&#xff0c;将来自用户的请求转发给不同的服务器。 二、Nginx负载均衡策略 负载均衡用于从“upstream”模…...

webui自动化测试框架(2)——对基本操作进行封装common

接上篇&#xff1a;webui自动化测试框架&#xff08;1&#xff09;——框架介绍 封装driver.py: driver的初始化&#xff0c;查找元素&#xff0c;点击元素&#xff0c;输入内容&#xff0c;切换iframe&#xff0c;切换Windows等 1.类&#xff0c;构造函数init里面适配浏览器…...

Python学习日记3

今天换了一个视频资源学习&#xff0c;因为发现之前的教学视频讲的是python2&#xff0c;python2跟现在的python3差别很大&#xff0c;所有换了一个平台学习。 今天学习内容主要是把python重新从头看了一遍&#xff0c;重新学习了一下&#xff0c;补充了关系运算符的知识&…...

如何用Python快速爬取小姐姐的美图

最近有一个小伙伴拿一个python代码来问我为什么报错&#xff1f; 我仔细一看&#xff1a;是用来爬取某个网站妹子图的代码&#xff0c;结果发现那个网站已经404了&#xff0c;当然爬不到了。 其实很多初学者都喜欢拿网上的案例作为练习&#xff0c;但是我们的爬虫可能会对一些…...

CentOS8安装activeMQ

Active简介 ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件&#xff1b;由于ActiveMQ是一个纯Java程序&#xff0c;因此只需要操作系统支持Java虚拟机&#xff0c;ActiveMQ便可执行。 它解决了下面的问题&#xff1a; 做到系统解耦&#xff0c;当新的模块接进来时&am…...

leetcode刷题笔记 322.零钱兑换【中等】

1、广度优先搜索 int coinChange(vector<int>& coins, int amount) {if (amount 0)return 0;int n coins.size();vector<int> flags(amount);queue<int> q;q.push(amount);int count 0;while (!q.empty()) {count;int s q.size();for (int i 0; i …...

wordpress新创建文章404问题解决

修改httpd.conf 找到AllowOverride None修改为ALL...

[高维随机矩阵-2]

本系列主要按照《Introduction to random matrices theory and practice》进行&#xff0c;后续不再一一声明。每次使用新资料&#xff0c;都会在第一次使用时声明&#xff0c;后续也不再一一生明。 1. 本书目标读者是绝对的零基础人员。 2.随机矩阵理论random matirx theory…...

EasyExcel + Vue +Springboot 前后端联动,快捷导出Excel文件

预期效果&#xff1a;前后台联动&#xff0c;即点击“导出Excel”按钮后弹出下载框 导出效果&#xff1a; 1. 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version>…...

优质ip代理怎么使用?

目前&#xff0c;大家上网越来越依赖于代理IP&#xff0c;代理IP的应用范畴正在逐步扩展。对于因特网这个巨大的网站空间&#xff0c;大家一样期待着这其中的标准和实际中的一样&#xff0c;因此也期待着自己的个人信息能在互联网上得到最大的利益维护。但是事实上由于互联网是…...

windows下python3.5+安装scrapy与创建项目

scrapy框架的安装与创建项目 scrapy安装&#xff1a; 相信第一次安装scrapy框架都会遇到各种安装不上的问题&#xff01;哈哈&#xff0c;别问我为啥知道&#xff01; 那我分享下我是如何安装scrapy框架的。 首先安装scrapy框架之前需要先安装几个依赖的库 依照顺序分别是 z…...

PHP性能分析:Xhprof介绍

什么是性能分析&#xff1f; 性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括&#xff1a;CPU的使用&#xff0c;内存的使用&#xff0c;函数的调用时长和次数&#xff0c;以及调用图。性能分析的行为也会影响应用性能。 什么时候应该进行性能分析? …...

【MyBatis-Plus】第一章 快速入门

第一章 快速入门 文章目录第一章 快速入门一、介绍1.概述2.特性二、入门案例1.安装插件2.准备工作3.MyBatis-Puls 替换 MyBatis4.修改 StudentDao 接口5.修改实体类 Student.java6.修改 StudentServiceImpl.java7.修改 StudentController.java一、介绍 1.概述 MyBatis-Plus 是…...

Python 使用标准库原始socket 生成 pcap 文件

注意事项 : 1.仅限linux/uninx 使用 2.不需要任何第三方库,仅用标准库 3.格式为公开格式,可以whireshark 直接打开 代码如下: import time,structclass Pcap:def __init__(self, filename, link_type1):self.pcap_file open(filename, wb)self.pcap_file.write(struct.pack(…...

高斯消元法解方程组

高斯消元法是线性代数里解线性方程组的一种方法同时也可以用来求矩阵的秩。原理是通过将原线性方程的增广矩阵初等变换来使原始矩阵化为行最简阶梯型&#xff0c;从而求出线性方程组的解&#xff0c;方程组的解的数量有三种情况&#xff0c;如果矩阵为行满秩矩阵的话显然这个矩…...

API框架:swagger上手,接口注释,接口测试,简单使用

swagger 每日格言 贵在坚持、难在坚持、成在坚持。 学习目标&#xff1a; 了解Swagger的作用和概念了解前后端分离在SpringBoot中集成Swagger Swagger简介 故事还是要从前后端分离讲起啊 **前后端分离&#xff1a;**VUESpringBoot 基本上都用这一套 **后端时代&#xf…...

命令行优化、Pod介绍、label标签、控制器(Deployment、DaemonSet)

文章目录一、优化命令行二、kubernetes带来的变革1.对于开发人员2.对于运维人员3.Pod1>Pod生命周期2>Pod是如何管理多个容器的3>Pod中数据持久性4>Pod的状态5>Pod的资源清单详解6>Pod的重启策略三、名词介绍1.k8s中的名称空间2.namespace3、Label标签3.k8s中…...

LPL比赛数据可视化,完成这个项目,用尽了我的所有Python知识

LPL比赛数据可视化 效果图 完成这个项目&#xff0c;我感觉我已经被掏空了&#xff0c;我几乎用尽了我会的所有知识 htmlcssjavascriptjQuerypythonrequestsnumpymysqlpymysqljsonajaxflaskecharts 在这个过程中&#xff0c;并不是那么顺利&#xff0c;遇到了很多坑&#xff0…...

模拟,枚举与递推

模拟 模拟指的是将题目描述转化为可执行的代码&#xff0c;其中我们会用到编程语言的基础内容&#xff0c;最常见的就是循环。 简单的题目&#xff0c;通常直接模拟就够了&#xff0c;比如 874. 模拟行走机器人 。 而如果是中等和困难的题目&#xff0c;除了使用模拟&#x…...

一种比较直观地推断递归算法时间复杂度的思路

用快速排序举例 问题规模为N 递归第一层为 N 递归第二层 分成两个分区&#xff0c;每个分区的规模为 N/2 &#xff08;取平均值1/2&#xff09; ... 因为递归一直二分&#xff0c;所以&#xff0c;到了logN层&#xff0c;分无可分。 每一层其实都要遍历整个数组&#xff…...

计组第五章:中央处理器

文章目录CPU的功能和基本结构1.运算器的基本结构①专用数据通路方式②CPU内部单总线方式2.控制器的基本结构小结CPU的功能和基本结构 1.运算器的基本结构 ①专用数据通路方式 AX、BX……这些就和图里的R0、R1……对应 三态门每一路都接上&#xff08;一端接输出一端接输入&am…...

多功能手持读数仪VH03如何连接手机蓝牙

VH03 内置有基于 SPP&#xff08;Serial Port Profile&#xff09;协议的蓝牙接口&#xff0c;蓝牙名称为“VH03”。 使用任何支持 SPP 协议的蓝牙设备均可实现与 VH03 的连接。当蓝牙建立连接后&#xff0c;可向 VH03 发送指令进行交互&#xff08;前述 MODBUS、AABB、字符串…...

linux离线下载并安装amd64包

1、https://packages.ubuntu.com/ 官方网站搜索需要下载的安装包 2、sudo dpkg --install package_name.amd64 安装...

package architecture (amd64) does not match system (arm64)

rchitecture的问题&#xff0c;一个编译好的软件是与操作系统类型&#xff0c;cpu架构都有关的。这个architecture就是cpu的体系结构。 sudo dpkg --print-architecture该命令用于显示本机的architecture&#xff0c;我在不同的机器上得到的结果有&#xff1a;arm64或amd64 …...

Linux | ubuntu-16.04-server-amd64 的安装过程

1.选择语言–建议选成英文 2.选择第一项–安装Ubuntu16.04系统 3.选择语言–建议选择英文 4.地区设置–选择other到下一页 5.地区设置–选择Asia亚洲 6.地区设置–选择china中国地区 7.字符集设置–选择United States - en_US.UTF-8 8.键盘设置–建议选no&#xff0c;因为国内基…...

amd平台运行linux,在amd64平台上安装linux的经历

在amd64平台上安装linux的经历(2011-08-29 01:36:25)标签&#xff1a;杂谈在amd64平台上安装linux的经历在amd64平台上安装linux的经历硬件&#xff1a;Althon 64 30001G Mem120G HD软件&#xff1a;Windows XP 64-Bit 2003 (光盘安装)SuSE 9.1 for x86-64 (下载&#xff0c;硬…...

为什么64位计算机CPU架构叫amd64

x86 1978 年 6 月&#xff0c;Intel 发布了新款 16 位微处理器 8086&#xff0c;开创了一个全新时代&#xff0c;x86 架构由此诞生。x86 架构指的是特定微处理器执行的计算机语言指令集&#xff0c;定义了芯片的基本使用规则。 事实上&#xff0c;8086 处理器发布之初并没有获…...

数据库------E-R图和关系模型

1、请输出下面E-R图,并转换成关系模型 有实体 A B C A属性有a1(主键),a2,a3 B属性有b1(主键),b2,b3 C属性有c1(主键),c2,c3 A和B之间有X关系,B和C之间有Y关系,A和C之间有Z关系 一个A对应多个B,一个B对应多个A 一个A对应一个C,一个C对应一个A 一个B对应一个C,一个C对应多…...

资源分享网站html模板,史上最全的资源分享网站大全,拿走不谢!

很多开发者查找资源时&#xff0c;像设计教程、高清图库、界面设计资源等&#xff0c;不知道去哪里查找。还有下载资源时&#xff0c;像需要下载免费图标、PS笔刷、网站模板等时&#xff0c;很多地方都要付费。有些时候&#xff0c;即使付费也找不到好资源。没关系&#xff0c;…...

亲,好用的jquery焦点图轮换,亲,还带缩略图哦

2019独角兽企业重金招聘Python工程师标准>>> 下面先给出js $(document).ready(function() {var i_curIndex 0;var beauBeauSlide; //函数对象var i_curID 0; //取得鼠标下方的对象IDvar pictureID 0; //索引ID$("#i_focus_piclist li").eq(0).show(); …...

Flash独立游戏人必备开源库大全

转自&#xff1a;http://blog.sina.com.cn/s/blog_56c9b55c0100v8ff.html 3D Engines Papervision3D http://blog.papervision3d.org/ Away 3D http://www.away3d.com/ Sandy 3D http://www.flashsandy.org/ Alternativa Platform http://blog.alternativaplatform.co…...

jquery点击滚动图片列表

效果图&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head> <title>&l…...

jquery 左右滚动

$(function(){//Mr.Think***变量var $cur 1;//初始化显示的版面var $i 4;//每版显示数var $len $(.showbox>ul>li).length;//计算列表总长度(个数)var $pages Math.ceil($len / $i);//计算展示版面数量var $w $(.ibox).width();//取得展示区外围宽度var $showbox $…...

两个渐隐渐现图片轮播

<style>div,ul, ol, li, h1,h2, p{margin:0;padding:0}body{font-size:0.8em;letter-spacing:1px;font-family:"微软雅黑"; line-height:1.2}a{color:#047;text-decoration:none}a:hover{color:#a40000;text-decoration:none}h1{font-size:1em; font-weight:no…...

资料工具网站

10个优秀的占位图片(Placeholder Image)生成工具 Placehold.it A quick and simple image placeholder service. <img src"http://placehold.it/350x200" /> <img src"http://placehold.it/300/09f/fff.png" /> <img src"http://place…...

Javascript面向对象编程Tab切换组件

今天用面向对象编程也写了一个tab切换组件&#xff01;构造函数模式和原型模式封装了一个&#xff01;本来写个这样的非常简单 但是在写过程中碰到一个问题想了一些时间 就是切换后类怎么加上去的问题&#xff01;用了下时间去想 这个tab组件不支持自动切换 只支持 要那个直接…...

javascript tab组件

今天研究了下javascript tab代码 到网上看了下 然后自己封装了一个tab组件 本来用jquery写tab是非常简单的事件 但是在做淘宝页面时候 淘宝现在不允许用jquery框架 哇靠 一定要用kissy框架 我就便不用 靠 我直接用javascript写 这应该没有错吧&#xff01;靠 废话少说&#xff…...

2008年顶尖 Web 设计师访谈

2008 年行将结束之际&#xff0c;SmashingMagazine 准备了一系列问题&#xff0c;对 2008 年顶尖 Web 设计师做了集体访谈&#xff0c;每人提问两个问题。如果你对这些问题感兴趣&#xff0c;还可以参考 SmashingMagazine 之前做过的更多 Web 设计师访谈&#xff1a;向 35 个We…...

BZOJ3723 : PA2014Final Gra w podwajanie

暴力搜索出所有可行的形状&#xff0c;可以发现本质不同的形状数只有6000个左右。 对于每个形状&#xff0c;它的大小不超过$8\times 8$&#xff0c;故可以按照右下角为原点重建坐标系&#xff0c;用一个unsigned long long来存储。 然后对于每个中心&#xff0c;先进行第一步扩…...

立体图与三维数据展示

我的左眼有相当严重的散光&#xff0c;因此无缘各种类型的3D立体图&#xff0c;包括看对眼、立体眼镜、左右两幅图&#xff08;一只眼睛看一个&#xff09;等等。后来&#xff0c;网上出现了一种只需要一只眼睛就能体验的3D图&#xff0c;原理非常简单&#xff0c;效果也比较震…...

[转载] ANTLR——词法分析

来源&#xff1a;ANTLR中文网站&#xff1a;http://www.antlr.org.cn 词法分析是编译过程的第一步&#xff0c;是编译过程的基础。词法分析除了上一章讲过它为语法分析提拱记号流&#xff0c;滤掉编译过程不关心的内容以外&#xff0c;还有一个重要的作用是有了词法分析可以大大…...