当前位置: 首页 > 编程日记 > 正文

springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

a7b1cc997e86aacf9dee791ae23e1793.png

源码精品专栏

  • 中文详细注释的开源项目
  • RPC 框架 Dubbo 源码解析
  • 网络应用框架 Netty 源码解析
  • 消息中间件 RocketMQ 源码解析
  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
  • 作业调度中间件 Elastic-Job 源码解析
  • 分布式事务中间件 TCC-Transaction 源码解析
  • Eureka 和 Hystrix 源码解析
  • Java 并发源码
爽!不解释!
六月份的尾巴,水滴石穿!继续加油~

abb1441b2f4c0a431e1398c0b3cb3600.png
  • 1. 概述
  • 2. 快速入门
  • 3. Spring Initializr
  • 4. IDEA x Spring Initializr
Java进阶:架构设计、并发编程等核心知识、电子书、视频、面试题等免费获取​shimo.im
83604f71e2aeedb38b343e22c7b04c44.png

1. 概述

我们先来简单了解下 Spring Boot 是什么?其官方介绍自己如下:

“FROM 《Spring 中文文档 —— Spring Boot 简介》使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。 我们对 Spring 平台和第三方类库有自己的考虑,因此您可以从最基本的开始。大多数 Spring Boot 应用只需要很少的 Spring 配置。
您可以使用 Spring Boot 来创建一个可以使用 java -jar 命令来运行或者基于传统的 war 包部署的应用程序。我们还提供了一个用于运行 spring scripts 的命令行工具。
我们的主要目标是:
  • 为所有 Spring Boot 开发提供一个更快、更全面的入门体验。
  • 坚持自我虽好,但当需求出现偏离,您需要能迅速摆脱出来。
  • 提供大量非功能性特性相关项目(例如:内嵌服务器、安全、指标、健康检查、外部配置)。
  • 绝对没有代码生成,也不要求 XML 配置。

是不是看着有点懵逼?重点先理解是加粗的两句话。简单来说,通过使用 Spring Boot,我们无需再进行大量的 Spring 配置,只需要少量甚至零配置。

可能这么说还是有点抽象,我们直接来动手,奥利给,干就完事了!

2. 快速入门

本小节,我们搭建 Spring Boot 示例项目,并在其中使用 SpringMVC 来提供一个简单的 HTTP API。

在开始搭建示例项目之前,胖友需要先做好如下准备:

  • JDK8+
    “友情提示:Spring Boot 2.X 版本,需要最低的 Java 版本是 8。
  • Maven
    “本文希望胖友对 Maven 构建工具有过一定的了解。如果没有的话,可以看看《Maven最全教程,看了必懂》文章。
  • IDEA
    “宇宙最强 Java 开发者工具,没有之一。

2.1 创建 Maven 项目

① 打开 IDEA,点击菜单 File -> New -> Project... 来创建项目。如下图所示:

477f195ce278bc9baa9b4994f4ed7779.png

② 选择 Maven 类型,点击「Next」按钮,进入下一步。输入 Maven 的 GroupIdArtifactId,如下图所示:

d89cac26dc4d487d2e73a9c85b1c3945.png

③ 点击「Next」按钮,继续进入下一步。如下图所示:

28cb75a23545c5b677f98ce350268cfc.png

④ 点击「Finish」按钮,完成 Maven 项目的创建。此时项目如下图所示:

9d1e7e0bd5d6d6a499c479eb64a2dff7.png

最终,我们的示例项目会如下图所示:

8b377a45e1e84b463853e3486722797a.png

下面,我们逐步来看看。

2.2 引入依赖

pom.xml 文件中,引入相关依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.iocoder</groupId><artifactId>demo01</artifactId><version>1.0-SNAPSHOT</version><!-- 从 Spring Boot 继承默认配置 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><!-- 实现对 SpringMVC 的自动化配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>
  • 引入 spring-boot-starter-parent 作为父 POM,从而继承其默认配置。
    “友情提示:考虑到一般公司项目中都已经有自己的父 POM,可以参考文档修改。
  • 引入 spring-boot-starter-web 依赖,实现对 SpringMVC 的自动化配置。同时该依赖会自动帮我们引入 SpringMVC 等相关依赖。

2.3 配置文件

在 Spring Boot 项目中,约定通过 application.yaml 配置文件,进行 Spring Boot 自动配置的 Bean 的自定义。

resource 目录下,创建 application.yaml 配置文件。内容如下:

server:port: 8080 # 内嵌的 Tomcat 端口号。默认值为 8080。
  • 通过 server.port 配置项,设置稍后启动的内嵌 Tomcat 端口为 8080 端口。
“友情提示:关于配置文件,后续胖友可以阅读《芋道 Spring Boot 配置文件入门》文章。

2.4 DemoController

创建 DemoController 类,提供一个简单的 HTTP API。代码如下:

@RestController
@RequestMapping("/demo")
public class DemoController {@GetMapping("/echo")public String echo() {return "echo";}}
  • 标准的 SpringMVC 使用示例,没有什么特别哈。

2.5 Application

创建 Application 类,提供 Spring Boot 应用的启动类。代码如下:

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}
  • 在类上,添加 @SpringBootApplication 注解,声明是一个 Spring Boot 应用。通过该注解,可以带来 Spring Boot 自动配置等等功能。
  • #main(String[] args) 方法中,我们通过 SpringApplication#run(Class<?> primarySource, String... args) 方法,启动 Spring Boot 应用。

2.6 简单测试

① 执行 Application#main(String[] args) 方法,启动示例项目。

这里我们会发现,我们无需在部署 Web 项目到外部的 Tomcat 中,而是直接通过 Application#main(String[] args) 方法,就可以直接启动,非常方便。完全符合 Spring Boot 文档对自己的介绍:

“使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。

② 此时,我们可以看到 IDEA 控制台输出 Spring Boot 启动日志如下:

// Spring Boot 自带 Banner.   ____          _            __ _ _/ / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    /  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |___, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::        (v2.2.2.RELEASE)// 启动 Java 进程使用的 PID 进程号
2020-02-08 15:38:25.724  INFO 10645 --- [           main] cn.iocoder.demo01.Application            : Starting Application on MacBook-Pro-8 with PID 10645 (/Users/yunai/Java/demo01/target/classes started by yunai in /Users/yunai/Java/demo01)
// Spring Boot Profile 机制,暂时可以忽略
2020-02-08 15:38:25.727  INFO 10645 --- [           main] cn.iocoder.demo01.Application            : No active profile set, falling back to default profiles: default
// 内嵌 Tomcat 启动
2020-02-08 15:38:26.503  INFO 10645 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-02-08 15:38:26.510  INFO 10645 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-02-08 15:38:26.510  INFO 10645 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2020-02-08 15:38:26.561  INFO 10645 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-02-08 15:38:26.561  INFO 10645 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 799 ms
2020-02-08 15:38:26.693  INFO 10645 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-02-08 15:38:26.839  INFO 10645 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-08 15:38:26.842  INFO 10645 --- [           main] cn.iocoder.demo01.Application            : Started Application in 1.396 seconds (JVM running for 1.955)
// SpringMVC DispatcherServlet 初始化
2020-02-08 15:38:44.992  INFO 10645 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-02-08 15:38:44.992  INFO 10645 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-02-08 15:38:44.996  INFO 10645 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
// ... 暂时可以忽略
2020-02-08 15:39:37.113  INFO 10645 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
  • 注意,以 // 开头的每一行,是艿艿添加的注释哟,胖友仔细看看。

有木有发现,Logger 日志组件,Spring Boot 都已经帮我们自动配置好啦。是不是很舒服~

③ 使用浏览器,访问 http://127.0.0.1:8080/demo/echo 接口,返回结果为 "echo"

这说明,SpringMVC 框架,也被 Spring Boot 自动配置完成。同时,使用的是内嵌的 Tomcat 服务器。


至此,我们已经进行了 Spring Boot 的快速入门。后续,胖友可以阅读《芋道 Spring Boot SpringMVC 入门》文章,进一步的学习。

另外,Spring Boot 自动配置是个很神器,胖友一定一定一定要去阅读《芋道 Spring Boot 自动配置原理》。知其然,知其所以然。千万不要只停留在入门或者使用的层级上,而是要不断死磕。

3. Spring Initializr

我们可以通过使用 Spring Initializr 工具,快速生成一个 Spring Boot 项目。如下图所示:

aab87d2398147e92f15effb3973a1cf5.png

下面,我们就来使用 Spring Initializr 来搭建一个示例。

3.1 生成项目

① 使用浏览器,打开 http://start.spring.io/ 地址,配置如下图所示:

ba8485f83b426ce0688f438b7440e38d.png

② 点击「Explore」按钮,浏览生成的项目。如下图所示:

dd651fa725573c2c03a1f6f55bc2d21e.png

还是蛮酷炫的,可以在线直接浏览即将生成的项目。

③ 关闭弹窗,然后点击「Generate」按钮,生成项目,会以 .zip 压缩包的方式进行下载。

3.2 导入 IDEA

① 解压 .zip 压缩包,用于稍后导入 IDEA 中。

② 打开 IDEA,点击菜单 File -> Project from Existing Sources... 来导入项目。如下图所示:导入项目

③ 然后 Maven 类型,然后不断点击「Next」按钮,最终完成项目的导入。此时项目如下图所示:项目结构

“友情提示:如果胖友选择的 Spring Boot 版本比较新,可能需要耐心等待下,IDEA 需要等待 Maven 下载相关依赖。
  • resource/static 目录,放静态资源。例如说,js、css、图片等等。
  • resource/templates 目录,放页面模板。例如说,thymeleaf、freemarker 等等。

下面,我们逐步来看看。

3.3 引入依赖

pom.xml 文件中,引入相关依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.iocoder</groupId><artifactId>demo02</artifactId><version>0.0.1-SNAPSHOT</version><name>demo02</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

我们只说差异的地方哈:

  • 设置 <java.version> 属性为 1.8,表示使用 JDK8。
  • 引入 spring-boot-starter-test 依赖,实现对 Test 的自动化配置。
    “友情提示:对在 Spring Boot 进行单元测试感兴趣的胖友,可以后续阅读《芋道 Spring Boot 单元测试 Test 入门》文章。
  • 引入 spring-boot-maven-plugin 插件,用于将 Spring Boot 项目打包成 jar 或者 war 包。
    “友情提示:对构建 Spring Boot 项目感兴趣的胖友,可以后续阅读《芋道 Spring Boot 持续交付 Jenkins 入门》文章。

3.4 配置文件

配置文件 application.properties 内容为空。

注意,Spring Boot 支持 YAML、PROPERTIES、JSON 等等格式的配置格式。

3.5 Demo02Application

Demo02Application 类,提供 Spring Boot 应用的启动类。代码如下:

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

还是老样子,通过执行 #main(String[] args) 方法,启动 Spring Boot 应用。这里,艿艿就不演示了,胖友自己去倒腾哈。

3.6 Demo02ApplicationTests

Demo02ApplicationTests 类,单元测试类。代码如下:

@SpringBootTest
class Demo02ApplicationTests {@Testvoid contextLoads() {}}
  • 在类上,添加 @SpringBootTest 注解,声明这是一个 Spring Boot 环境下的单元测试类。

运行 #contextLoads() 方法,执行一次单元测试。

4. IDEA x Spring Initializr

IDEA 内置了 Spring Boot 插件,提供了对 Spring Initializr 集成。

“Spring Boot / Spring Initializr project wizard.

下面,我们来使用该插件,创建一个 Spring Boot 项目。

① 打开 IDEA,点击菜单 File -> New -> Project... 来创建项目。如下图所示:

8be3e404968440cf02f632e7f4eaa855.png

② 选择 Spring Initializr 类型,点击「Next」按钮,进入下一步。输入 Maven 的 GroupIdArtifactId,如下图所示:

4f3c512e029c74872a95a0405448df73.png

③ 点击「Next」按钮,选择需要的依赖,这里暂时我们只需要 Web 依赖。如下图所示:

82aecb5f2787fd66e0b6ac0b59cefed5.png

④ 点击「Next」按钮,之后点击「Finish」按钮,完成 Maven 项目的创建。此时项目如下图所示:

a9b94c764a85c2c2c569822d2431b0e4.png

和「3. Spring Initializr」是一致的,就不哔哔重复解释了。

喜欢的小伙伴们点赞、评论、分享、收藏。

谢谢各位大大!

相关文章:

浏览器缓存网站静态文件

当用户第一次访问你的网站时&#xff0c;让用户的浏览器缓存网站的静态文件&#xff0c;如图片\CSS\JS等,然后接访问接下来的页面就会直接调用浏览器的缓存而不是重新从服务器下载&#xff0c;这样既节省带宽和流量又加快了用户打开网页的速度&#xff0c;一石三鸟&#xff0c;…

MQTT 心跳和keepalive配置

MQTT 心跳和keepalive配置 内容&#xff1a; 正常MQTT 服务器端会配置一个超时时间&#xff0c;一般为60s&#xff0c; 在这个时间段内一个连接如果没有数据传输的话&#xff0c;服务端会主动断开连接以释放资源&#xff0c; 有两种方式可以规避这个问题: 方式1: 最为简单&a…

android开发我的新浪微博客户端-登录页面功能篇(4.2)

上一篇中完成了如上图的UI部分的实现&#xff0c;现在继续来讲功能的实现&#xff0c;用户登录操作主要就是账号列表显示和选择账号登录两个功能其他的都是些简单的辅助功能&#xff0c;首先是点击id为iconSelectBtn的ImageButton时显示用户选择窗口&#xff0c;这个时候去数据…

大脚本运行常见问题总结

1. Allowed memory size of 8388608 bytes exhausted 出现原因&#xff1a;脚本运行超过最大运行时间 解决方法&#xff1a;1 ) 修改 php.ini 文件。将memory_limit 由默认值改成合适的大小&#xff0c;重启服务器。 2&#xff09;在脚本中加入 ini_set("memory_limit&qu…

MQTT Qos类型解释

MQTT Qos类型解释 原文连接: https://blog.csdn.net/yangguosb/article/details/78653228 内容&#xff1a; Qos0 发送者只发送一次消息&#xff0c;不进行重试&#xff0c;Broker不会返回确认消息。在Qos0情况下&#xff0c;Broker可能没有接受到消息&#xff0c;流程如…

对做技术的一点思考

做技术在中国有没有前途&#xff1f;这个问题是每个在国内做技术的人都会思考的问题。在我看来&#xff0c;我们之所以会产生样的困扰&#xff0c;主要原因在于我们所谓的研发都是二次开发&#xff0c;国内任何公司&#xff0c;研究单位&#xff08;除开严格保密的单位&#xf…

iis伪静态排除css_魔众系统伪静态规则怎么配

魔众系列系统目前已经有大量用户在使用&#xff0c;大家对于伪静态的配置一直有所疑惑&#xff0c;经过和技术小哥哥的协商&#xff0c;我们特意将三种不同的 HTTP 服务器配置文件分享给大家&#xff0c;方便大家参考。魔众系列系统目前已经有大量用户在使用&#xff0c;大家对…

R.drawable 转 bitmap

引用&#xff1a;http://zhidao.baidu.com/question/291703800.html Bitmap bmpBitmapFactory.decodeResource(r, R.drawable.icon); Bitmap newb Bitmap.createBitmap( 300, 300, Config.ARGB_8888 ); Canvas canvasTemp new Canvas( newb ); canvasTemp.drawBitmap(bmp, …

洛谷P3254 圆桌问题(最大流)

题意 $m$个不同单位代表参加会议&#xff0c;第$i$个单位有$r_i$个人 $n$张餐桌&#xff0c;第$i$张可容纳$c_i$个代表就餐 同一个单位的代表需要在不同的餐桌就餐 问是否可行&#xff0c;要求输出方案 Sol 比较zz的最大流 从$S$向$1-m$连流量为$r_i$的边 从$m 1$向$m n$连流…

设置commit 提交模板

设置commit 提交模板 建议提交 &#xff08;.template&#xff09;模板文件 放在用户目录(Doceuments)下 (~/Doceuments) 原文连接: https://blog.csdn.net/mafei852213034/article/details/51908049 内容&#xff1a; 1、在根目录建立模板文件 如 xxx_template文件&#…

listen函数的第二个参数_【图像处理】OpenCV系列十七 --- 几何图像变换函数详解(一)...

上一篇我们学习了仿射变换的warpAffine函数&#xff0c;知道了如何用这个函数对图像进行旋转、平移等操作&#xff0c;那么本节我们一起来学习一下与仿射变换相关的其他函数以及相关的几何图像变换。一、convertMaps()函数1、函数原型void convertMaps(InputArray map1, InputA…

flex java socket通信

引用:http://developer.51cto.com/art/201003/189791.htm Java socket通信如何进行相关问题的解答呢&#xff1f;还是需要我们不断的学习&#xff0c;在学习的过程中会遇到不少的问题。下面我们就从源代码中找到有关的问题解决方案。希望大家在以后的Javasocket通信使用中有所收…

编程珠玑:对DAO层的一点修改

由于以前的Domain对象都是不需要序列化的&#xff0c;所以为了操作数据库查询的方便&#xff0c;直接采用继承BaseDomain的方式来完成。这样在传递动态参数的时候&#xff0c;只需要把参数放到Map总&#xff0c;就可以很好的在ibatis配置文件(map.xx来直接获取值)中使用。 这样…

solr 下载 有dist目录的(6需要8)

http://archive.apache.org/dist/lucene/solr/ solr6 需要java8 转载于:https://www.cnblogs.com/hnqm/p/9367140.html

抛出一个nullpointerexception_Java 14 发布了,再也不怕 NullPointerException 了!

推荐阅读&#xff1a;Java程序员danni&#xff1a;就一个HashMap&#xff0c;居然能跟面试官扯上半个小时&#xff1f;​zhuanlan.zhihu.com2020年3月17日发布&#xff0c;Java正式发布了JDK 14 &#xff0c;目前已经可以开放下载。在JDK 14中&#xff0c;共有16个新特性&#…

linux平台软件动态分析工具valgrind系列工具及其可视化

linux平台软件动态分析工具valgrind系列工具 Memcheck–内存检查工具Callgrind–函数调用分析工具Cachegrind–缓存命中分析工具Helgrind–线程分析工具Massif–内存堆栈分析工具 一、Valgrind 概述 Valgrind是一套Linux下&#xff0c;开放源代码&#xff08;GPL V2&#xf…

codeviz安装使用全记录

安装过程 $ sudo apt-get install -y graphviz graphviz-dev graphviz-doc $ sudo apt-get install -y libgv-* $ sudo apt-get install -y ncftp $ sudo ln -sf /usr/include/asm-generic/ /usr/include/asm http://www.csn.ul.ie/~mel/projects/codeviz/ $ wget http://www.c…

运维工程师的职责和前景

转载自网络 运维中关键技术点解剖&#xff1a;1 大量高并发网站的设计方案 &#xff1b;2 高可靠、高可伸缩性网络架构设计&#xff1b;3 网站安全问题&#xff0c;如何避免被黑&#xff1f;4 南北互联问题,动态CDN解决方案&#xff1b;5 海量数据存储架构 一、什么是大型网站运…

java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

本文转自互联网&#xff0c;侵删本系列文章将整理到我在GitHub上的《Java面试指南》仓库&#xff0c;更多精彩内容请到我的仓库里查看https://github.com/h2pl/Java-Tutorial喜欢的话麻烦点下Star哈文章将同步到我的个人博客&#xff1a;http://www.how2playlife.com本文是微信…

WCF入门(一)——简单的示例

这篇随笔写了一段时间了&#xff0c;当时没有发布&#xff0c;今天整理文档的时候发现了&#xff0c;顺便给配了些图。主要是绍了一下WCF编程模型&#xff0c;并给了一个简单的示例。 概述 WCF框架是下一代.NET平台通信应用程序的核心。它包含了Web服务、Remoting、同步和异步…

Callgrind--函数调用分析工具以及可视化方法

生成分析文件 命令行运行: valgrind --toolcallgrind ./palmGateMachine 检测完毕之后会生成一个文件callgrind.out.26805&#xff0c; 后面的数字其实是这个待测进程的pid 可视化方法 可视化方法 可视化工具 kcachegrind 1、下载地址: https://launchpad.net/ubuntu/trust…

Java中BASE64 编码

2019独角兽企业重金招聘Python工程师标准>>> BASE64 编码是一种常用的字符编码&#xff0c;在很多地方都会用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder&#xff0c;用它们可以非常方便的完成基于 BASE64 的编码和解码。下面是本人编的两个小的函数…

java script (二)

实现轮播图 获取元素 document.getElementById("id名称") 事件&#xff08;onlond&#xff09; onlond "changeImg()" 在<script>中function changeImg(){ document.getElementById("img").src "图片地址"} 定时操作&…

转 [JAVA] 使用 common-fileupload 实现文件上传

就在前段时间&#xff0c;还在苦于找到不到合适的上传组件&#xff0c;虽然很早就知道了 common-fileupload&#xff0c;但当时却因为没有找到如何获取表单参数的方法而使用 jspSmartUpload&#xff0c;历尽艰辛终于找到了它的 jar&#xff0c;可是使用后才发现此东西对中文参数…

Cachegrind--缓存命中检查工具及其可视化

Cachegrind–缓存命中检查工具及其可视化 和 Callgrind–函数调用分析工具以及可视化方法 一模一样 命令改为: valgrind --toolcachegrind ./palmGateMachine 生成的文件名: cachegrind.out.8025 用kcachegrind 打开 参考我的另一篇文章&#xff1a; https://editor.csdn.…

java 快排_八大排序-快速排序(搞定面试之手写快排)

概要快速排序由C. A. R. Hoare在1960年提出&#xff0c;是八大排序算法中最常用的经典排序算法之一。其广泛应用的主要原因是高效&#xff0c;核心算法思想是分而治之。快速排序经常会被作为面试题进行考察&#xff0c;通常的考察思路是快排思想、编码实践之手写快排以及进一步…

maven命令简介

为什么80%的码农都做不了架构师&#xff1f;>>> 创建普通应用项目&#xff1a; mvn archetype:create -DgroupIdcom.byread -DartifactIdblog 创建WEB项目&#xff1a; mvn archetype:create -DgroupIdcom.byread -DartifactIdblogweb -DarchetypeArtifactIdmav…

分治策略解决幂乘问题

float fast_pow ( float x, float y ) {if ( y 1 )return x;else if ( (int)y % 2 0 )return fast_pow(x,y/2)*fast_pow(x,y/2);elsereturn fast_pow(x,(y-1)/2)*fast_pow(x,(y-1)/2)*x; } 转载于:https://www.cnblogs.com/Nicholastwo/p/9368076.html

用java实现一个计算器程序_1.2第一个java程序——hello world

第一个java程序——hello world实现一个java程序&#xff0c;主要有三个步骤&#xff1a;1、编写源代码&#xff0c;2、编译源代码&#xff0c;3、运行。java的源代码必须先编译&#xff0c;然后才能由JVM解析执行。所以我们程序员第一步的工作就是要编写java的源代码文件&…

linux valgrind Memcheck--内存检查工具

linux valgrind Memcheck–内存检查工具 使用方法: 注意&#xff0c;这里要用debug版本&#xff0c;如果是release的运行文件&#xff0c;则用debug编译出来的可执行文件替换 输出到终端: valgrind --toolmemcheck --leak-checkfull ./test.out输出到文件: valgrind --toolm…