Spring_day01

2023-11-10

Spring-day01

一、 spring入门

1.什么是框架

  • 源自于建筑学,隶属土木工程,后发展到软件工程领域

  • 软件工程框架:经过验证的,具有一定功能的,半成品软件

    • 经过验证
    • 具有一定功能
    • 半成品

2.框架的作用

在这里插入图片描述

3. spring是一个轻量级的一站式解决方案,它并没有给你提供任何实质的功能,他的主要的作用是用来改善系统架构的。

在这里插入图片描述

4. spring体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QPziGO9T-1596084492001)(/Users/hackerc5/Library/Application Support/typora-user-images/image-20200728091536526.png)]

5.Spring发展史

在这里插入图片描述

二、Spring的核心

1. IoC(Inversion Of Control)控制反转

  • IoC就是控制反转

  • Spring反向控制应用程序所需要使用的外部资源

  • 对象的创建从主动变成被动

一、IoC的入门

步骤:

1、导入jar包

2、编写java业务代码

3、创建Spring配置文件

4、创建spring控制的资源

  • 1.导入spring的核心jar包

    •  <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>5.1.9.RELEASE</version>
        </dependency>
      
    1. 编写java业务代码
    //创建一个业务接口
    public interface UserService { 
        //业务方法
        void save(); 
    }
    
    //创建接口实现类
    public class UserServiceImpl implements UserService{ 
      //业务方法实现
    			public void save(){
    					System.out.println("user service running...");
    		} 
    }
    
    1. 在resources目录下创建一个配置文件
    • 名字建议使用applicationContext.xml 或者 beans.xml

      • 该配置文件有自己独立的头空间
    1. 在配置文件中配置对象(bean)

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
      				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             	xsi:schemaLocation="http://www.springframework.org/schema/beans
      							https://www.springframework.org/schema/beans/spring-beans.xsd">
      				<!-- 1.创建spring控制的资源-->
      				<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"/>
      </beans>
      
    
    
  • 一个bean标签就是一个对象

    • bean标签的具体配置
      • id属性-对象的唯一编号(名字),这个属性是获取对象的时候的唯一标识
      • id属性的值一般都是接口的名字-首字母消小写-规范
      • class属性-配置的是java类的完整的类名(通过反射的方式,所以要配置类名位置)
 public static void main(String[] args) { 
   //2.启动Spring容器
 	ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
   //3.从容器中获取对象
 	UserService userService = (UserService) ctx.getBean("userService");
 		UserService userService = (UserService) ctx.getBean("userService");
   //4.对象就可以调用方法
     userService.save();
 }
  **原来是通过的方式**

  ```java
  //在Controller层创建bean对象调用
  protected UserService userService = new UserServiceImpl();
  //执行方法
  UserService.save();
  ```

2. 核心配置

一、bean标签
  • id:bean的名称,通过id值获取bean

  • name:bean的名称,可以取多个名字,名字与名字之间使用逗号分割(了解)

  • class:bean的类型

  • scope

    • 作用: 控制创建的对象是单例还是多例
    • 默认情况下如果没有配置该属性,则默认为singleton
    • 需要掌握的配置属性:scope=singleton/prototype
  • init-method

    • 作用:创建完对象以后完成一些初始化的工作

    • 执行的次数

      • 单例模式

        • 运行一次
      • 非单例模式

        • 获取一次运行一次
  • destory-method

    • 作用:当对象不在使用的时候进行一些资源的回收操作

    • 执行的次数

      • 单例模式

        • 运行一次
      • 非单例模式

        • 不执行
        • 非单例的对象spring只负责帮忙创建,不负责帮忙管理和回收
二、spring创建对象的方式有几种-面试题
  • 使用反射调用无参的构造方法进行创建

  • 静态工厂

    1. 编写工厂类和方法(静态的方法)-在方法里面创建对象

      public static UserService getService(){
        System.out.println("静态工厂创建了一个对象...");
        return new UserServiceImpl();
      }
      
    2. 在spring的核心配置文件中配置该静态工厂,然后在测试类中通过ctx.getBean(“userService”)获得bean对象即可调用

      <bean id="userService4" class="com.itheima.service.UserServiceFactory" factory-method="getService"/>
      
      //通过工厂即可获得bean
      public static void main(String[] args) {
           ApplicationContext ctx = new ClassPathXmlApplicationContext("applictionContext.xml");
              UserService factoryBean = (UserService) ctx.getBean("userService4");
              factoryBean.save();
          }
      
  • 实例工厂

      1. 编写实列工厂类和方法(实例方法)-在方法里面创建一个对象

        public UserService getService(){
            System.out.println("工厂创建了一个对象...");
            return new UserServiceImpl();
        }
        
      1. 在spring的核心配置文件中配置该实列工厂

        先造一个工厂的bean,再通过factory-bean获取工厂bean获取工厂返回的原始bean

      <bean id="factoryBean" class="com.itheima.service.UserServiceFactory"/>
      	<!--实例工厂创建bean,依赖工厂对象对应的bean-->
      <bean id="userService" factory-bean="factoryBean" factory-method="getService" />
      
    1. 注解方式
三、DI(Dependency Injection)依赖注入

依赖注入-其实跟ioc是一回事只是站的角度不同,ioc是站在spring容器的角度看问题,di是站在程序的角度看问题

依赖注入(DI)和控制反转(IOC)基本是一个意思,因为说起来谁都离不开谁。

简单来说,a依赖b,但a不控制b的创建和销毁,仅使用b,那么b的控制权交给a之外处理,这叫控制反转(IOC),而a要依赖b,必然要使用b的instance,那么

  1. 通过a的接口,把b传入;
  2. 通过a的构造,把b传入;
  3. 通过设置a的属性,把b传入;

这个过程叫依赖注入(DI)。

1、依赖注入-面试题

  • 一、set方法注入

      1. 要保证需要注入的对象在spring的容器中存在
      1. 在需要的地方声明private的属性并提供set方法
        • set方法必须要提供
        • set方法命令的时候严格按照规范进行命名
      1. 在创建对象的时候使用标签进行属性的注入
      • 注入普通的数据(4类8中基本数据类型和字符串)

        <property name="num" value="666"/>
        
      • 对象的注入

        <property name="userDao" ref="userDao"/>
        
  • 二、构造方法注入

      1. 在对应的类中提供对应的构造方法
      • 特别要注意:一旦你自己提供了一个构造方法那么系统默认的构造方法就不在提供了,所以你自己定义了构造方法以后一定要提供一个无参的构造方法,否则后面项目可能会出现意想不到的错误
      1. 在配置对象的时候使用标签来配置属性
      • 使用index

        <constructor-arg index="2" value="123"/>
        
      • 使用name-推荐使用

        <constructor-arg name="userDao" ref="userDao"/>
        
  • 三、注解----day02讲解

  • 四、集合的注入

    名称:array,list,set,map,props

    list:

    <!--List集合类型注入数据--> 
    <property name="myList">
    		<list>
            <value>itheima</value>
            <value>666</value>
            <ref bean="userService"/>
            <bean class="com.itheima.service.ApplyService"/>
    		</list>
    </property>
    

    props:

    <!--Properties类型注入数据--> 
    <property name="myProps">
        <props>
            <prop key="username">root</prop> 
            <prop key="password">root</prop>
        </props> 
    </property>
    

    Array(了解)

    <!--数组类型注入数据--> 
    <property name="myArray">
        <array>
            <value>itheima</value>
            <value>666</value>
            <ref bean="userService"/>
            <bean class="com.itheima.service.ApplyService"/>
        </array> 
    </property>
    

    Set:

    <!--Set集合类型注入数据--> 
    <property name="mySet">
        <set>
            <value>itheima</value>
            <value>666</value>
            <ref bean="userService"/>
            <bean class="com.itheima.service.ApplyService"/>
        </set> 
    </property>
    

    Map:

    <!--Map集合类型注入数据--> 
    <property name="myMap">
      <map>
          <entry key="name" value-ref="itheima"/> <entry key="fame" value-ref="666"/> 
          <entry key="userService">
          <ref bean="userService"></ref> </entry>
          <entry key="applyService">
          <bean class="applyService"/>
          </entry> 
      </map>
    </property>
    
  • 五、P命名空间-了解

    • 作用:简化xml配置中的标签的

      1. 在xml的命名空间出导入p命名空间
      • xmlns:p=“http://www.springframework.org/schema/p”
      1. 在配置bean的时候使用p:属性名名字[-ref]=xxx的形式进行配置
    <bean
    id="userService"
    class="com.itheima.service.impl.UserServiceImpl"
    p:userDao-ref="userDao"
    p:bookDao-ref="bookDao"
    />
    ```
    
    1. Spring的IoC和DI分别是什么?-面试题

三、 开发实用配置

1、properties文件的加载和读取

    1. 编写properties配置文件
    • 属性的key建议都要加上他的前缀(企业开发规范)
    1. 在xml中引入对应的命名空间(context空间)
    xmlns:context="http://www.springframework.org/schema/context"
    
    1. 加载配置文件
    <context:property-placeholder location="classpath:*.properties"/>
    
    1. 读取配置文件的内容
    <property name="propertyName" value="${propertiesName}"/>
    

    完整版配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"      
           <!--1.加载context命名空间的支持-->
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
          <!--2.加载配置文件-->
        <context:property-placeholder location="classpath:*.properties"/>
    
        <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
            <property name="userName" value="${username}"/>
            <property name="password" value="${pwd}"/>
        </bean>
    <beans/>
    
  • 注意:

    1. 如果需要加载所有的properties文件,可以使用***.properties**表示加载所有的properties文件

    2. 读取数据使用**${propertiesName}格式进行,其中propertiesName**指properties文件中的属性名

2.配置文件的分割和合并

  • 一般在开发的过程中,都会按照层或者业务的功能把一个大的配置文件拆分为N个小的配置文件

  • 在项目开发的过程中一般都会有一个主配置文件,在主配置文件中需要使用import来导入我们拆分的小的配置文件

    <import resource="config.xml"/>
    
  • Spring容器加载多个配置文件

    new ClassPathXmlApplicationContext("config1.xml","config2.xml");
    
  • Spring容器中的bean定义冲突问题

    • 同id的bean,后定义的覆盖先定义的
    • 导入配置文件可以理解为将导入的配置文件复制粘贴到对应位置
    • 导入配置文件的顺序与位置不同可能会导致最终程序运行结果不同

四、ApplicationContext对象层次结构

在这里插入图片描述

五、第三方资源配置(Spring整合其他框架)

1、导入对应的jar包
    1. 把其他框架的核心配置类交给spring来创建和管理-整合的过程

Druid在XML配置文件里的配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
  <property name="url" value="jdbc:mysql://localhost:3306/spring_ioc"></property> 
  <property name="username" value="root"></property>
  <property name="password" value="root"></property>
</bean>

在测试类中的获取bean,然后调用

DruidDataSource dataSource = (DruidDataSource) ctx.getBean("dataSource");
System.out.println(dataSource);

六、综合案例(整合mybatis)

案例效果:整合mybatis,完成账户模块(Account)的基础增删改查功能

image-20200729235400871

一、基础准备工作

  • 环境准备

    • 导入Spring坐标,MyBatis坐标,MySQL坐标,Druid坐标

          <dependencies>
              <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.5.3</version>
          </dependency>
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.47</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context</artifactId>
                  <version>5.1.9.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
                  <version>5.1.9.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid</artifactId>
                  <version>1.1.16</version>
              </dependency>
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis-spring</artifactId>
                  <version>1.3.0</version>
              </dependency>
          </dependencies>
      
  • 业务类与接口准备

    • 创建数据库表,并制作相应的实体类Account

    • 定义业务层接口与数据层接口 Service接口实现类里面注入Dao和Set方法

      		//在Service接口实现类里面注入Dao和Set方法
      		private AccountDao accountDao;
      
          public void setAccountDao(AccountDao accountDao) {
              this.accountDao = accountDao;
          }
      
    • 在业务层调用数据层接口,并实现业务方法的调用

  • 基础配置文件

    • jdbc.properties
    • MyBatis映射配置文件
  • 整合前基础准备工作

    • spring配置文件,加上context命名空间,用于加载properties文件

      <!--加载perperties配置文件的信息-->
      <context:property-placeholder location="classpath:*.properties"/>
      
      //加载context 必须添加这个头空间
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      https://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      https://www.springframework.org/schema/context/spring-context.xsd">
      
    • 开启加载properties文件

    • 配置数据源druid(备用)

      加载完配置文件后,把配置文件读取的数据变成Druid数据源对象
          <!--加载druid资源-->
          <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
              <property name="driverClassName" value="${jdbc.driver}"/>
              <property name="url" value="${jdbc.url}"/>
              <property name="username" value="${jdbc.username}"/>
              <property name="password" value="${jdbc.password}"/>
          </bean>
      
    • 定义service层bean,注入dao层bean

      <!--配置service作为spring的bean,注入dao-->
      <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
           <property name="accountDao" ref="accountDao"/>
      </bean>
      
    • dao的bean无需定义,使用代理自动生成

Mybatis的数据源用了造连接对象

二、整合工作

  • 导入Spring整合MyBatis坐标

  • 将mybatis配置成spring管理的bean(SqlSessionFactoryBean)

    • 将原始配置文件中的所有项,转入到当前配置中

      • 数据源转换

        <!--spring整合mybatis后控制的创建连接用的对象-->
        <bean class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
          	<!--设置类型别名-->
            <property name="typeAliasesPackage" value="com.itheima.domain"/>
        </bean>
        
      • 映射转换

        <!--加载mybatis映射配置的扫描,将其作为spring的bean进行管理-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        	<property name="basePackage" value="com.itheima.dao"/>
        </bean>
        
  • 因为底层是通过jdbc实现,但是导入的Spring包没有自动导入jdbc,所有要手动导入jdbc

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.1.9.RELEASE</version>
    </dependency>
    
  • 通过spring加载mybatis的映射配置文件到spring环境中

    然后创建测试类使用getBean获取Servicebean就可以测试了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring_day01 的相关文章

  • 如何用Java创建图像

    比如说在我的程序中 我有这个paint 方法 我的愿望是创建所绘制的矩形的图像 使用 for 循环 我尝试了下面的方法 它确实给了我那些矩形 蓝色 但背景是全黑的 当我运行程序而不创建图像 仅在 JFrame 上绘制矩形时 背景为白色 我怎
  • java.lang.NoClassDefFoundError:HttpSessionListener

    我正在尝试部署一场我没有编写的战争 但我在日志中收到此错误 java lang NoClassDefFoundError HttpSessionListener 我知道 HttpSessionListener 位于servlet api j
  • 如何在流中收集到TreeMap中?

    我有两个Collectors groupingBy在流中 我需要收集所有信息TreeMap 我的代码 Map
  • 无法解析配置“:app:debugRuntimeClasspath”的所有文件。问题

    我的 android studio 遇到了下一个问题 导致 org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveEx
  • 黄瓜与 Micronaut

    我正在尝试将 Cucumber 与 Micronaut 一起使用 但当我尝试将其与 Cucumber 一起使用时 MicronautTest 注释根本不起作用 未注入 theApple 请参阅下面的代码 如果我在没有黄瓜的情况下运行它就可以
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • org.hibernate.MappingException:没有 JDBC 类型的方言映射:1111

    我使用的是 postgres v8 3 它的列类型为 XML DDL 看起来像这样 CREATE TABLE contact ID INTEGER NOT NULL NAME VARCHAR NOT NULL Details XML 在映射
  • 在 javafx 中注册鼠标处理程序,但处理程序不是内联的

    我有一个 JavaFX 应用程序变得有点大 我想保持代码的可读性 我有一个折线图 我希望内置缩放功能 该功能在单击鼠标时发生 我知道我需要向图表注册鼠标侦听器 我无法从 Oracle 示例中弄清楚什么 即如下所示 http docs ora
  • 在 JSON 对象中强制执行非空字段

    我们的 REST API 接收一些 JSON 对象输入 其中某些字段要求不为空 这些可以是字符串 整数 甚至可以是其他一些类实例作为参考 我们正在尝试找到一种方法来强制这些字段不为空 而不是在 API 中进行空检查的正确方法 当前的 if
  • 日志记录在 Android 设备上实际上有什么作用?

    我一直在 Android 示例中看到这样的代码 try catch Exception e Log e Error e getMessage 什么是Log e实际上在物理设备上做什么 它进入系统日志 开发人员可以通过 SDK 工具访问该日志
  • 在openjdk:7-jre-alpine docker上如何安装python 3.6

    直到大约一周前 我才在 java 图像上成功使用 python 3 6 脚本 如下所示 FROM openjdk 7 jre alpine RUN apk update apk upgrade apk add no cache bash a
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • HashSet 与 LinkedHashSet

    它们之间有什么区别 我知道 LinkedHashSet 是 HashSet 的有序版本 维护一个跨所有元素的双向链接列表 使用此类代替 HashSet 当您关心迭代顺序时 当你迭代 HashSet 时 顺序是不可预测的 而 LinkedHa
  • WebSocketStompClient 将无法连接到 SockJS 端点

    我正在尝试新的 从版本 4 2 开始 java STOMP 客户端支持 我的出发点是入门指南 使用 WebSocket 构建交互式 Web 应用程序 http spring io guides gs messaging stomp webs
  • Spring Boot如何加入自定义查询

    我需要创建一个端点 该端点按州返回人口普查数据以及城市列表 我目前使用两个端点来获取此数据 目前回应 自定义查询一 censusByState id 1 code 11 name Rond nia statePopulation 18152
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • 如何将多部分文件从另一个服务发送到一个服务

    我有两个端点 api 它们是 uploadand 重定向 upload是我直接上传文件的地方 重定向是我接收文件并将其传递给上传并获取 JSON 响应的地方 upload 所以下面是我的代码 package com example impo
  • 对 Java 协议缓冲区对象进行一些小更改

    我想在 Java 协议缓冲区对象树的深处进行一个小更改 我可以使用 getBuilder 方法来创建一个新对象 该新对象是旧对象的克隆并进行一些更改 当深入完成此操作时 代码会变得丑陋 Quux Builder quuxBuilder fo
  • 在Java的System.out中以表格格式输出

    我正在从数据库获取结果 并希望将数据作为 Java 标准输出中的表输出 我尝试过使用 t 但我想要的第一列的长度变化很大 有没有办法将其显示在类似输出的漂亮表格中 Use System out format http java sun co

随机推荐

  • 【算法】——归并排序的解析

    目录 1 归并排序的思想 2 归并排序的分析 3 内排序和外排序 1 归并排序的思想 归并是将两个或两个以上的有序表组合成一个新的有序表 假设初始序列含有n个记录 则可看成是n个子序列 每个子序列的长度为1 然后两两归并 得到 n 2 个长
  • cocos2d中的anchorPoint

    cocos2d中的anchorPoint 将该图片放置到屏幕左下方 CCSprite sprite CCSprite sprite Default png addChild sprite 生成的精灵放置在 0 0 也就是屏幕左下角 但是精灵
  • (springmvc)页面找不到静态资源文件Failed to load resource: the server responded with a status of 404 (Not Found)

    今天打算整理之前写的一个插件功能上传到github 新建一个java项目 项目使用的是spring mvc框架 然后再调试页面的时候发现找不到静态资源文件 如下图所示 于是我第一时间检查jsp上页面资源的路径 经过确认 发现路径是没有
  • line-height(行高)

    line height 行高 line height 行高 介绍 字体框 line height 行高 介绍 1 行高指的是文字占有的实际高度 2 通过line height来设置行高 3 行高可以直接指定一个大小 px em 4 也可以直
  • Unity WebGL三维地球

    1 支持arcgis 天地图 bingmap 谷歌地图 高德地图等影像加载 2 支持高程三维地形加载 3 支持在线 离线数据加载 4 支持unity坐标和经纬度坐标互相转换 5 支持fbx模型放置在地球上 6 支持倾斜摄影数据放置在地球上
  • C#从数据库中读取二进制流并生成文件

    下面以图片文件为例加以说明 从数据库表 图片存储 中读取ID为1的图片数据并生成图片文件 MySqlConnection conn new MySqlConnection Server localhost Database test cha
  • fff

    http www migucloud com vi0 109 3j KJ59CLFb6F9pvcJ1egcF cld450p FILENAME 54 cld450p mp4 duration 201 owner 109 path 109 3
  • linux 杀死进程失败,linux - Ubuntu关闭失败“ *杀死所有剩余进程…” - Ubuntu问答...

    问题描述 我已经重新安装了Ubuntu Server reboot 有效 但是在 Killing all remaining processes 步骤上关闭失败 我在用 sudo shutdown now 在失败之后 由 fail 指示 f
  • 【廖雪峰python入门笔记】函数

    1 函数 我们知道圆的面积计算公式为 S r 当我们知道半径r的值时 就可以根据公式计算出面积 假设我们需要计算3个不同大小的圆的面积 r1 12 34 r2 9 08 r3 73 1 s1 3 14 r1 r1 s2 3 14 r2 r2
  • 深入学习java源码之ArrayList.iterator()与ArrayList.listIterator()

    深入学习java源码之ArrayList iterator 与ArrayList listIterator 内部类的使用典型的情况是 内部类继承自某个类或实现某个接口 内部类的代码操作创建其的外层类的对象 所以你可以认为内部类提供了某种进入
  • php excel导入

    excel导入导出是我们做项目中经常用到的功能 那么 今天就来说说excel导入 一 类文件 二 调用代码
  • 使用 htmx 构建交互式 Web 应用

    学习目标 了解htmx的基本概念 特点和用法 并能够运用htmx来创建交互式的Web应用程序 学习内容 1 什么是htmx htmx是一种用于构建交互式Web应用程序的JavaScript库 它通过将HTML扩展为一种声明性的交互式语言 使
  • 深入webpack打包原理,loader和plugin的实现

    本文讨论的核心内容如下 webpack进行打包的基本原理 如何自己实现一个loader和plugin 注 本文使用的webpack版本是v4 43 0 webpack cli版本是v3 3 11 node版本是v12 14 1 npm版本v
  • uboot启动流程图以及boot启动linux流程图

    运行厂商u boot的前提 运行u boot 需要DDR或者DRAM 串口 SD卡驱动 EMMC NAND 这些要和厂商的开发板一致 就能直接在自己板子上运行u boot 开机流程 当把u boot bin下载到SD卡上时 由于整个u bo
  • Web Scraping指南: 使用Selenium和BeautifulSoup

    在当今信息时代 数据是无处不在的宝贵资源 对于许多企业 研究人员以及开发者来说 从互联网上获取准确且有价值的数据变得越来越重要 而Web scraping 网络爬虫 技术则成为了实现这一目标的关键工具 本篇文章将向您介绍一个高级Web Sc
  • 学习Linux第六天

    linux中命令的匹配顺序 1 别名 gt 2 命令缓存 gt 3 通过相提并论中所定义的命令文件路径开始匹配 alias 命令别名 alias 别名 命令本身 alias cc touch root www tm tm不是别名命令 通过
  • 明星漫画

    明星漫画 转载于 https www cnblogs com Dicky archive 2005 02 24 122393 html
  • 《C++编程规范:101条规则、准则与最佳实践》——1.5做代码审查

    本节书摘来自异步社区出版社 C 编程规范 101条规则 准则与最佳实践 一书中的第1章 第1 5节 作者 加 Herb Sutter 罗 Andrei 更多章节内容可以访问云栖社区 异步社区 公众号查看 1 5做代码审查 摘要审查代码 更多
  • 数组sort方法的使用

    sort 方法是数组自带的一种排序方法 数组在原数组上进行排序 不生成副本 如果调用该方法时没有使用参数 将按字母顺序对数组中的元素进行排序 说得更精确点 是按照字符编码的顺序进行排序 要实现这一点 首先应把数组的元素都转换成字符串 如有必
  • Spring_day01

    Spring day01 一 spring入门 1 什么是框架 源自于建筑学 隶属土木工程 后发展到软件工程领域 软件工程框架 经过验证的 具有一定功能的 半成品软件 经过验证 具有一定功能 半成品 2 框架的作用 3 spring是一个轻