Spring Boot入门实验

一、 实验目的和要求

1、掌握使用 IDEA 通过 Maven 和 Spring Initializr 的方式创建 Spring Boot 应用程序;
2、掌握 Maven 的工作原理;
3、了解 spring-boot-starter-parent 的配置内容;
4、掌握配置场景依赖启动器 starter 的方式,了解 starter 的原理;
5、掌握利用 starter 扩展 Spring Boot 应用程序的功能;
6、掌握通过配置文件修改 Spring Boot 应用程序的初始化参数及自定义参数的 注入;
7、掌握使用 Spring Boot 编写简单的单元测试;
8、完成 Spring Boot 简单入门程序的编写。
9、独立完成实验
10、书写实验报告书

二、 实验平台

1、 JDK 1.8 或更高版本
2、 Maven 3.3+
3、 IntelliJ IDEA

三、实验内容及结果

(一)Maven 方式搭建项目

  1. 使用maven创建项目
    image
  2. 导入依赖
<!-- 父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.10</version>
</parent>
<!-- 起步依赖 -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 编写主程序启动类
@SpringBootApplication
public class SpringBootApp {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootApp.class,args);
    }

}

  1. 创建访问 Web 的 controller
@RestController
public class MyController {

    @GetMapping("/hello")
    public String hello(){
        return "创建第一个springboot项目!";
    }

}

(二)Spring Initializr 方式搭建项目

  1. 选择 Spring Initializr 导航创建项目

进入场景依赖页面,了解左边属于开发场景汇总部分、中间属于场景依赖 启动器部分、右边属于选中的场景依赖。本实验选择 Spring Web 依赖启动器。

  1. 创建 domain 层实体类 User
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String stdId;
    private String userName;
    private String[] hobby;
    @Override
    public String toString() {
        return "User{" +
                "stdId='" + stdId + '\'' +
                ", userName='" + userName + '\'' +
                ", hobby=" + Arrays.toString(hobby) +
                '}';
    }
getter,setter方法省略
}

  1. Application.properties文件
user.stdId=1008611
user.userName=坤哥
user.hobby=唱,跳,rap

  1. 创建 service 层的实体类 UserService
public class UserService {
    @Autowired
    private User user;

    public User getUser() {
        return user;
    }

}

  1. 自定义配置类,创建 config 包的 MyConfig 类
@Configuration
public class MyConfig {

    @Bean
    public UserService getUserService(){
        return new UserService();
    }

}

  1. 创建 controller 层的 UserController 类
@RestController
public class UserController {

    @Autowired
    private UserService userService;
    public User getUser(){
        User user = userService.getUser();
        return user;
    }

    @GetMapping("/h")
    public String hello(){
        return "hello springboot";
    }

}

  1. 编写测试类
@SpringBootTest
public class UserControllerTest {

    @Autowired
    public UserController userController;
    @Test
    public void userController(){

        User user = userController.getUser();

        List<String> hobby = Arrays.asList(user.getHobby());
        System.out.println("学号:"+user.getStdId());
        System.out.println("姓名:"+user.getUserName());
        System.out.println("爱好:"+hobby);
        System.out.println(user.toString());

    }
}

四、心得体会

(1)Maven 方式和 Spring Initializr 方式创建 Spring Boot 项目有什么区别?
Maven方式创建时,需要自己导入起步依赖和父项目,然后根据需要选择导入相关的依赖,在使用Spring Initializr创建项目时,会自动生成起步依赖和父项目,在选择所需依赖后,会自动导入。
(2)解释项目 pom.xml 文件主要标签的意义
1)作用
通过给出的父项目的group ID, artifact ID and version导入父项目
2)作用
通过group ID, artifact ID and version导入相关依赖
(3)如何理解依赖启动器 starter?
依赖启动器是一个聚合项目,每一个场景的依赖启动器都聚合了这个场景所需要的依赖包括了group ID, artifact ID and version,这样只需要引入场景启动器,就可以使用这个场景下的所有依赖,不需要人为管理版本号。

本文来自博客园,作者:街酒,转载请注明原文链接:http://www.cnblogs.com/sorrymine/p/17415990.html

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

相关文章

  • 万字+28张图带你探秘小而美的规则引擎框架LiteFlow

    大家好,今天给大家介绍一款轻量、快速、稳定可编排的组件式规则引擎框架LiteFlow。一、LiteFlow的介绍LiteFlow官方网站和代码仓库地址官方网站:https://yomahub.com/liteflowGitee托管仓库:https://gitee.com/dromara/liteFlowGithub托管仓库:https://github.com/dromara/liteflow前言在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关,这些核心业务业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。时间一长,项目几经易手,维护的成本就会越来越高。各种硬代码判断,分支条件越来越多。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。一小段逻辑的变动,会影响到其他模块,需要进行完整回归测试来验证。如要灵活改变业务流程的顺序,则要进行代码大改动进行抽象,重新写方法。实时热变更业务流程,几乎很难实现。LiteFlow框架的作用LiteFlow就是为解耦复杂逻辑而生,如果你要

  • 信号与系统实验二 信号运算的MATLAB 实验

    目录【实验目的】【实验原理】【实验设备】【实验内容】1.实验教程p15练习二,1 2.用diff和int各画出一个函数x(t)(自定),和x(t)的导数与积分图。【实验感悟】【实验目的】学会运用MATLAB进行信号时移、反折和尺度变换。学会运用MATLAB进行连续信号微分、积分运算。学会运用MATLAB进行连续信号相加、相乘运算。学会运用MATLAB进行连续信号的奇偶分解。【实验原理】1.连续时间信号的微分运算对于连续时间信号,其微分运算如果用符号表达式来表示,则用diff命令函数可完成求导运算,其语句格式为diff(function,'var',n),其中,function表示需要进行求导运算的函数﹐或者被赋值的符号表达式;var为求导运算的独立变量;n为求导阶数﹐默认值为求一阶导数。2.连续时间信号的积分运算对于连续时间信号,其积分运算如果用符号表达式来表示,则用int命令函数可完成积分运算,其语句格式为int(function,’var’,a,b),其中,function表示需要进行积分运算的函数﹐或者被赋值的符号表达式;var为积分变量;a为积分下限,b为积

  • 别再被叫linux小白了,你跟linux高手只差这8个快捷键命令?

    不管是运维、开发还是测试,熟悉linux命令已经是必备的技能了。但初学者往往都将学习停留在掌握基础命令上,用来用去还是那几个常见命令,却不知道,真正的高手都是在寻找最短路径解决问题。高手总是能用高效的方法完成任务,不是因为天赋高,而是因为他们踩过的坑比你多,最后总结出来了最高效的方法。今天就给大家罗列了几个高手总结的快捷键命令,让你的linux操作也能健步如飞。linux最常用的8个快捷键1.tab:应该是linux最常用的快捷键了,输入任何命令、文件名、目录的部分字符,敲击tab键。它将自动完成你输入的内容,或为你显示全部可能的结果,快速提升输入效率。2.方向键或者ctrl+p、ctrl+n:当你看到你想使用的命令时,按[Enter]键选中执行。↑(Ctrl+p)显示上一条命令 ↓(Ctrl+n)显示下一条命令复制3.ctrl+u:清除光标之前的内容,在vim和命令行中都适用,不要再一个字符一个字符退格删了,极力推荐使用。在vim中ctrl+u还有复制的作用,一般搭配ctrl+y使用。4.ctrl+c:中断命令或者任务,比如在查看日志文件时,想停在某个地方,就可以使用该命令。 5.c

  • 基于cobbler 实现自动安装linux系统

    1.安装个组件yuminstallepel-rpm-macros.noarch-y#安装epel源 yuminstall-ycobblercobbler-webdhcptftp-serverpykickstarthttpdrsyncxinetd复制cobbler\##安装cobbler\ cobbler-web\##提供web管理 dhcp\##地址分配服务 tftp-server\##放压缩和引导文件 pykickstart\##Python开发的kickstart httpd\##提供web rsync\##远程同步管理 xinetd##管理平台复制2.配置cobblervim/etc/cobbler/settings#打开配置文件修改以下几项 next_server:10.1.1.1#设置监听的IP地址 server:10.1.1.1 manage_dhcp:1#开启dhcp vim/etc/xinetd.d/tftp#配置tftp,开启tftp复制opensslpasswd-1-salt'123456''123456'#使用ssl加密密码

  • 腾讯位置服务小程序妙课堂线上直播圆满举行

    6月23日晚,腾讯位置服务在腾讯北京总部举办了一场《地图开发者小程序妙课堂》的线上直播沙龙。此次直播沙龙是面向小程序开发者的一次深度交流,并结合现场演示环节,为开发者们答疑解惑,可谓干货满满! 此次直播沙龙分别从腾讯位置服务为什么是小程序下集成地图的不二之选、千行千面的个性化地图、小程序地图插件、服务各业务场景的位置服务API等几个方向进行了分享和剖析。腾讯位置服务小程序下集成地图的不二之选目前,腾讯LBS数据量已位居行业第一,覆盖用户达10亿,涉及智慧城市、智慧出行、智慧物流、运动健康等多个领域。以这些数据为依托,组建起了腾讯位置服务的基础开发底层,腾讯位置服务为开发者提供了地点搜索、逆地址解析(位置描述)、路线规划等多种常用接口API,以及地点云和海外位置服务;并且同时提供了地图展示和覆盖物绘制组件,满足小程序开发者对地图类功能的基础开发需求。总之,腾讯位置服务已经针对小程序开发者建立起一套完整的产品体系,从服务API、基础地图组件、小程序插件、行业方案等多个层面服务不同场景需求的小程序开发者! 事实上,腾讯位置服务是为微信和小程序生态提供了底层地图能力,所以基于腾讯位置服务开发出

  • 基于问题导向与成果产出的教学模式:《大数据与城市规划》特色课程

    [编者按]2015年12月,清华大学推出“大数据能力提升项目”,旨在促进大数据人才培养,服务国家大数据发展战略。项目由清华-青岛数据科学研究院(以下简称:数据院)和研究生院共同设计组织实施,为了构建大数据思维与技能、跨界学习、应用实操相结合的人才培养体系,培养具有数据思维和应用创新能力“π”型人才。项目推出以来,开设了一系列大数据特色课程,我们将为大家逐一介绍这些课程。 《大数据与城市规划》是国内高校城乡规划专业首次开设大数据与城市规划方面的课程,也得到了清华多个院系研究生的广泛关注。课程培养学生利用数据和先进技术手段来认识城市和改变城市的思维方式和实践能力。课程结合中国城市规划特点以及技术发展特点进行讲授,秉承技术方法与城市理论/规划设计并重的原则,倡导以技术作为认识城市、衡量城市的手段,强调以问题为导向、以成果产出为目标的教学方式。同时通过线上+线下、课内+课外以及理论课+设计课等丰富的授课形式,实现开放性、融入性教学体验。而在今年度,课程亦成功申请到学校的MOOC在线课程,将结合线上授课的方式持续拓展课程内容。在经过两个学学度实践中的不断发展和完善,课程形成以下主要特色:一、学生

  • [LeetCode]Longest Continuous Increasing Subsequence 最长连续增长序列 [LeetCode]Longest Continuous Incr

    链接:https://leetcode.com/problems/longest-continuous-increasing-subsequence/description/ 难度:Easy 题目:674.LongestContinuousIncreasingSubsequence Givenanunsortedarrayofintegers,findthelengthoflongestcontinuousincreasingsubsequence(subarray). Example1:Input:[1,3,5,4,7] Output:3 Explanation:Thelongestcontinuousincreasingsubsequenceis[1,3,5],itslengthis3. Eventhough[1,3,5,7]isalsoanincreasingsubsequence,it'snotacontinuousonewhere5and7areseparatedby4.复制Example2:Input:[2,2,2,2,2] Output:1 Explanatio

  • 微服务中 Dubbo 和 Spring Cloud 架构技术路线对比

    微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和SpringCloud。各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大。微服务主要的优势如下:一、核心部件微服务的核心要素在于服务的发现、注册、路由、熔断、降级、分布式配置,基于上述几种必要条件对Dubbo和SpringCloud做出对比。1、总体架构Dubbo核心部件(如下图):Provider:暴露服务的提供方,可以通过jar或者容器的方式启动服务Consumer:调用远程服务的服务消费方。Registry:服务注册中心和发现中心。Monitor:统计服务和调用次数,调用时间监控中心。(dubbo的控制台页面中可以显示,目前只有一个简单版本)Container:服务运行的容器。▲Dubbo总体架构SpringCloud总体架构如下图ServiceProvider:暴露服务的提供方。Serv

  • 谷歌AI部门大改组:搜索与人工智能分家,Jeff Dean升任AI总负责人

    机器之心整理机器之心编辑部今日,国外媒体网站TheInformation报道,2016年谷歌合并的搜索与人工智能部门再次分裂为两个部门。而在至关重要的新AI部门中,谷歌大脑负责人JeffDean将担当领导者。谷歌母公司Alphabet曾在2016年2月合并了谷歌的搜索与人工智能部门,并将其交由资深科学家JohnGiannandrea掌舵。本周一谷歌放出消息:这位高管已经离开,谷歌两年以后再次分裂为两大部门。这家互联网巨头一直被认为是搜索与人工智能领域的领军者,但近年来正日益受到亚马逊、苹果等公司在语音搜索等方面上的挑战。在新的搜索部门上,谷歌选择了BenGomes,它是谷歌资深员工,在过去一年搜索业务的一系列大型工程中已扮演重要的角色;而在至关重要的新AI部门中,谷歌大脑负责人JeffDean将担任领导者。AI部门的新领导者:JeffDean现年49岁的JeffDean在获得华盛顿大学计算机科学博士学位的三年之后(1999年)加入了谷歌公司,成为了该公司最早的员工之一。在谷歌的成长过程中,他一直是该公司的技术头面人物——设计和实现了支撑谷歌大部分产品的许多分布式计算基础设施。谷歌CEO

  • OpenCV中积分图介绍与应用

    OpenCV中积分图函数与应用 一:图像积分图概念积分图像是Crow在1984年首次提出,是为了在多尺度透视投影中提高渲染速度。随后这种技术被应用到基于NCC的快速匹配、对象检测和SURF变换中、基于统计学的快速滤波器等方面。积分图像是一种在图像中快速计算矩形区域和的方法,这种算法主要优点是一旦积分图像首先被计算出来我们可以计算图像中任意大小矩形区域的和而且是在常量时间内。这样在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。第一个应用积分图像技术的应用是在Viola-Jones的对象检测框架中出现。上图左侧四个点的矩形区域像素求和,只要根据每个点左上方所有像素和表值,进行两次减法与一次加法即可=》46–22–20+10=14二:OpenCV中积分图函数OpenCV中通过integral()函数可以很容易的计算图像的积分图,该函数支持和表积分图、平方和表积分图、瓦块和表积分图计算。integral函数与参数解释如下:voidcv::integral( InputArraysrc,//输入图像 OutputArraysum,//和表 OutputArraysqsum

  • 【原】机器学习几个基本的问题

      从今年四月份到现在已经工作快9个月了,最开始是做推荐系统,然后做机器学习,现在是文本挖掘,每个部分研究的时间都不多,但还是遇到了很多问题,目前就把一定要总结的问题总结一下,以后有时间多看看,提醒自己看有没有解决。  推荐系统:  1.冷启动热启动区别和联系?各个阶段需要的算法?  2.每个算法的数学推导、适用情况、优缺点、改进方法、数据类型?  3.如何平衡热启动时的准确率和召回率,两者不可能同时高,怎么平衡?从算法本身还是业务层面?惊喜度怎么添加?  4.如何评价推荐系统的好坏?指标是啥?  机器学习:  1.能解决哪几类问题?(分类聚类回归预测?)每一类型会有哪些算法?  2.每个算法优缺点各是什么?各能解决什么问题?侧重点是什么?对数据的平衡性要求大吗?对初始值敏感吗?需要的数据类型是什么?(数值or类别?或者混合使用?)  3.每个算法是如何推导的?如果要调优要从哪些步骤着手?目前的局限是什么?(背后的数学依据)各个算法之间的联系和区别是啥?各算法之间可以结合吗?瓶颈和局限是什么?  4.python的scikit-learn包是不是都熟悉了,源码有没有看过?自己尝试把每个

  • GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的增多,平台已经臃肿不堪。 设计基于.NET的GPS部标平台,我们坚定不移的选择了基于JQUERY+Asp.NETMVC来作为前端交互和后台处理的框架。选用一个灵活的脚手架,同时团队又能掌握这个脚手架为团队所用。 对于一个web应用项目,基于MVC的框架,前面文章提到过,最大的优点就是结构清晰,强制性的将繁乱的页面,请求,后台处理逻辑,划分成MVC三层结构,一层一层的做开发,一层一层的维护,同时层也不多,适可而止。通过MVC,高手和低手,在开发的初期基本上站在一个起跑线上,这个我认为很重要,特别是团队开发和维护,团队中的人开发水平各不一样,对于架构设计这种抽象到家的技术,理解也各不一样,每次项目启动的时候,都有各种各样的争论,都觉得自己是架构师,这是很要命的,很多人认为设计可以让开发效率更高,代码更容易扩展,后期更容易维护,性能更好更稳定,更易用。但糅合各种意见、评审、讨论、妥协的设计无一例

  • ActiveX 控件重绘无效问题,用CClientDC 而不是CPaintDC

    ActiveX控件重绘子控件时,用Invalid()会出现无效的情况即不会更新界面。OnPaint方法里,是用的CPaintDC,经测试无效,后换CClientDC,发现可以,百度查他们的区别:MFC中的CDC,CClientDC,CPaintDC,CWindowDC的区别CDC是Windows绘图设备的基类。CClientDC:(1)(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC。CPaintDC:(1)用于响应窗口重绘消息(WM_PAINT)是的绘图输出。(2)CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。(3)CPaintDC也只能用在WM_PAINT消息处理之中。CWindowDC:(1)可在非客

  • Node Stream 流探究

    流(stream)是一种在Node.js中处理流式数据的抽象接口。stream模块提供了一些基础的API,用于构建实现了流接口的对象。 Node.js提供了多种流对象。例如,发送到HTTP请求,和fs.createReadStream都可以使用流。 流可以是可读的、可写的、或是可读写的。所有的流都是EventEmitter的实例。 流的类型 Node.js中有四种基本的流类型: Writable-可写入数据的流(例如fs.createWriteStream()) Readable-可读取数据的流(例如fs.createReadStream()) Duplex-可读又可写的流(例如net.Socket) Transform-在读写过程中可以修改或转换数据的Duplex流(例如zlib.createDeflate()) 在v12.x源码中你能看到这四种类型就是四个js文件 Stream.Readable=require('_stream_readable'); Stream.Writable=require('_stream_writable'); Stream.Duplex=requir

  • 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

    如题,在使用python语言的open函数时,提示错误OSError:[Errno22]Invalidargument:‘文件路径’,在查阅了大量资料后也得到了一些解决方案,但是这些解决方案对于作者的情况都不适用,依然报错,没办法,虽然作者的英语水平很不咋地,但中文帮不了作者,只好求助于英文了。 建议各位看客在修改时,仔细看清楚自己的情况是否适用。废话不多说,开始正文。 作者的路径为open(‘D:\LearningBooks\test.txt’) 在使用时报错是因为这个路径是直接从Windows的文件目录里复制过来的,在python中\是转义字符,作者文件中的\test.txt中,\t是制表字符,要想正常使用路径需要改成如下形式D:\LearningBooks\\test.txt,或者r‘D:\LearningBooks\test.txt’。 或者D:/LearningBooks/test.txt即直接用斜杠/不用反斜杠\。 这一点其实在多个语言中都很重要,写下此文主要是提醒自己一定要注意路径的书写规范。 转自:https://blog.csdn.net/qq_33363973/ar

  • rainmeter 修正天气插件信息不准确 设置居住城市

    rainmeter天气插件的原理是用爬虫抓取一个天气网页然后用自带的那一套正则表达式匹配出天气信息 在国外官网社区下载的插件的天气信息城市都会出现问题(因为插件作者又不知道你在哪),解决方法是在原基础上纠正城市代码或者换一个url和正则表达式 我选择的前者 但我并不知道是哪个天气网站的api,于是我就根据url的规律爬了将近10000个应该是中国城市的代码,如下 纠正方法 打开rainmeter找到你要修正的插件右键选择编辑皮肤 然后就会看到这样的url(网址) 正确的url格式为 http://wxdata.weather.com/wxdata/weather/local/城市代码?cc=*&unit=#Unit# 城市代码在后面的表中查询 查询到以后将对应的城市代码替换掉城市代码部分的内容就可以了,注意,插件刚下载时这个url城市代码左右有一个'#'号,一并替换掉 样例: http://wxdata.weather.com/wxdata/weather/local/CHXX4125?cc=*&unit=#Unit# 因为是爬虫搜集的数据并且没有处理成中文汉字

  • vue-router的Import() 异步加载模块问题的解决方案

    关注不迷路,如果解决了问题,留下个赞。 1、问题现象 2、出现问题的代码点 3、替代方案: 把import()替换成如下: Promise.resolve().then(()=>require(`@/views/${str}`)) 复制 4、原因分析 项目在编译时,出现一个警告 这个警告的含义: require接收了一个变量,会报上面的警告,接收一个写死的字符串值时则没有警告! 我们通过控制台查看到import()对应编译过后的代码: 从上图可以看到require接收了一个变量,所以运行时出现了警告。 那这样就会报上面找不到对应的模块。 那我们再来看一个import()正确编译过后的代码: 通过对比编译过后的代码,可以轻易发现不同点。 花了大量时间,去找node_modules中的那个包版本不一致导致的,有一次尝试成功了,但回想不起是哪一步操作的呢,再复现的时候,也没对了。先暂时搁置吧,希望对webpack和Babel熟悉的大佬看到,能指点一二了。 所以根据编译过后的代码,以及require的特性,尝试出了一个临时解决方案。

  • Python字典

    本节主要内容:1.字典的简单介绍2.字典增删改查和其他操作3.字典的嵌套一.字典的简单介绍字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成.在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在这个地址中.这种算法被称为hash算法,所以,切记,在dict中存储的key-value中的key'必须是可hash的,如果你搞不懂什么是可哈希,暂时可以这样记,可以改变的都是不可哈希的,那么可哈希就意味着不可变.这个是为了能准确的计算内存地址而规定的.已知的可哈希(不可变)的数据类型:int,str,tuple,bool不可哈希(可变)的数据类型:list,dict,set语法:{key1:value1,key2:value2....}注意:key必须是不可变(可哈希)的.value没有要求.可以保存任意类型的数据 #合法 dic={123:456,True:999,"id":1,"name":'sylar',"age":18,"stu":['帅哥','美女'],(1,2,3):'麻花藤'} print(di

  • WPF中GDI+图形图像的绘制:绘制图像——鼠标拖动改变位置和大小

    转: https://blog.csdn.net/dnazhd/article/details/90369905 复制   

  • 关于清除浮动的几种方法

      给元素设置浮动是开发中比较常见的,但是设置浮动后,会导致元素脱离正常的文档流,影响页面的布局,如果不对元素进行清除浮动的处理,会对页面布局造成 很多影响。   在什么情况下需要清除浮动呢?     当父元素没有设置宽度或者高度的时,又需要子元素撑开父元素的时候使用清除浮动。   不清除浮动会有什么影响?     1.父元素在不设置宽高的情况下,子元素设置了浮动,会造成父元素的宽高无法被撑开     2.后续页面布局造成影响     3.父级设置的一些背景不能正确显示,因为父级没有宽高   基础布局html+css <divclass="Box"> <divclass="boxItem1"></div> <divclass="boxItem2"></div> </div> <divclass="Box2"></div>复制 <style> .boxItem1{ width:100px; height:100px; background:red; float:left; }

  • 无法将类型为“Kingdee.BOS.Web.DynamicForm.DynamicWebFormView”的对象强制转换为类型“Kingdee.BOS.Core.Bill.IBillView”

    动态表单应该继承AbstractDynamicFormPlugIn  

相关推荐

推荐阅读