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

javaee之黑马乐优商城3

异步查询工具axios(儿所以时)

vue官方推荐的ajax请求框架

 

新增品牌页面 

 如何找到上面这个页面

 下面这个页面里面的新增商品弹窗

 

上面就是请求路径与请求方式

那么请求参数是什么?

brand对象,外加商品分类的id数组cids (这里其实不止就是添加一个分类)

返回值没有就是一个响应,这里201就成功,表明创建了数据

下面我们去写Controller页面

这个Controller就是BrandController

这个Controller里面要增加如下一个方法

这个方法内部的参数是什么?

 一个对象,和一个ids的数组

我们先去看一下实际传递的是什么鬼?

这里很明显传递的是一个json对象

这个对象现在要拿到控制器的方法里面去

我用两个参数来接收一个json对象

 下面是BrandController里面的保存品牌的方法

下面就去service里面完成saveBrand()这个方法

 我先去数据库当中创建一张中间表,因为品牌与分类是有一个多对多的关系

上面就创建了一个中间表

下面先来预先插入一些数据

 

 

上面数据是到位了对吧

 再回到我们的Service里面

那我们现在去通用mapper里面添加一个方法,并且用注解配置好sql语句

这里必须在注解上写sql和原理,可以去javaee里面mybatis4进行查看

下面我们去完成mapper里面的方法BrandMapper

下面去到我们BrandService里面,有一个saveBrand()方法这个方法我们必须加上spring的事务注解,要么都成功,要么都失败,因为这里涉及到插入了品牌表之后,我们还要去插入品牌表与分类表的中间表

下面我们去测一下我们这个方法,从新启动商品这个微服务

我在测这个模块的时候,给我报了一个错误,就是500

这里就很明显是服务器的代码出了问题,我去测试了一下,直接是连controller层都没有进来,就直接报错了

我怀疑是参数接收的时候没有设置好,从前端传过来的是一个JSON数据,里面包含了一个多选框数据,那么在用List集合进行接收的时候,我们需要加@RequestParam注解

改进如下

修改完了之后,重新启动服务模块

 还是会报错,但是这个时候就是给我们响应的一个400的报错

400的报错 

这里其实也就是参数中的数据格式出现了问题,我们看一下请求的数据格式

很明显的是这里是一个json的数据格式

来说一下axios的处理请求原则

这里解决方案是你引入npm里面的工具包,QS,这是一个第三方库,安装方式npm install qs --save

我们的项目已经装好了如上

 

 下面我们就要用这个QS对象去修改一下前端页面了,不过这个页面该怎么去找,如何去寻找到这个页面呢

首先找到商品的的vue组件,也就是Brand.vue组件

 在我们的目录里面,也就是左边

然后我们再去提交一次查询,发现数据已经不是之前的JSON格式了

但是服务器又报500错误

 

我们还是去后端进行测试一下

直接看一下给我们报的错误异常

.apache.ibatis.binding.BindingException: Parameter 'cid' not found. Available parameters are [arg1, arg0, param1, param2]

那我把这里做一些修改,用放到dao层的注解Param做一个参数名字的映射

 重新启动service模块,然后重新访问

插入成功,这是我刚刚在tb_brand里面插入的一个品牌

现在去关联的表里面看一下,有没有与分类连接起来

 这里可以很明显的看到关联了两个分类

下面我们做图片上传功能

文件的上传它并不是只在品牌管理中有需求,以后其他服务可能也需要,因为把它变成一个独立微服务,专门处理各种上传

把它变成一个微服务之后,我们需要导入下面的依赖

 下面说一下spring-boot-starter-test的用法

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;@SpringBootTest
public class MySpringBootApplicationTests {@Testpublic void testSampleMethod() {// 假设您有一个名为 SampleService 的 Spring Bean,并且它有一个方法返回 "Hello, World!"SampleService sampleService = new SampleService();String result = sampleService.getGreeting();// 使用断言来验证结果是否符合预期assertEquals("Hello, World!", result);}
}

解释一下上面的代码

下面我们去编写一下配置文件

server:port: 8082
spring:application:name: upload-serviceservlet:multipart:max-file-size: 5MB # 限制文件上传大小
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eurekainstance:lease-renewal-interval-in-seconds: 5 #每隔五秒发送一次心跳,保证这个方法还在lease-expiration-duration-in-seconds: 10 #10秒不发送心跳就过期,会把服务剔除掉prefer-ip-address: trueip-address: 127.0.0.1instance-id: ${spring.application.name}:${server.port}

 

下面我们编写spring boot启动类

在我们编写具体的业务代码之前,我们必须弄清楚请求路径,请求蚕丝,请求方式,返回值类型

我们直接在下面这个位置点击上传测试一下下面的路径

 

 首先请求方式:肯定是POST上传

路径:/upload/image

请求参数:

我们可以看到请求参数是一个 文件对象,SpringMVC会把它封装成一个接口:Multiple

返回结果:上传成功之后得到文件的一个url路径

下面我们开始去编写controllerl类

package com.leyou.controller;import com.leyou.service.UploadService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@RestController
@RequestMapping("upload")
public class UploadController {//我们需要一个上传的Service对象@Autowiredprivate UploadService uploadService;@PostMapping("image")public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) {String url = uploadService.upload(file);System.out.println("打印url:" + url);if(StringUtils.isBlank(url)) {System.out.println("这里为空串");//上面的url为空//为空上传有可能就是参数错误,直接返回400的错误状态码return new ResponseEntity<>(HttpStatus.BAD_REQUEST);}//下面就是成功,返回200状态码与url数据return ResponseEntity.ok(url);}}

下面去service层完成相应的方法

在上传文件中,我们需要对上传内容进行校验:我们这里重点关注过程,不关注代码,代码可以copy

1.检验文件大小

2.检验文件的媒体类型,也就是说互联网传输过程中是什么类型

可以直接去查这个对照表

 3.校验文件内容

下面说一下SLF4J(Simple Logging Facade for Java)和Logback来记录日志的使用状况

 下面说一下下面这部分内容的含义

// 2)校验图片内容

BufferedImage image = ImageIO.read(

file.getInputStream());

if (image == null) {

logger.info("上传失败,文件内容不符合要求"); return null;

}

下面我们上servcie的完整代码

package com.leyou.service;import com.leyou.controller.UploadController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Arrays;
import java.util.List;@Service
public class UploadService {//做一个日志变量,用来记录某个类会出现的错误信息private static final Logger logger = (Logger) LoggerFactory.getLogger(UploadController.class);//列出支持的文件类型//利用Arrays类的asList()方法把支持的类型做成一个集合private static final List<String> suffixes = Arrays.asList("image/png", "image/jpeg");//下面去完成主体代码//MultipartFile file这个是处理文件上传的对象//他可以获取文件类型信息,还有就是文件的原始名字等等public String upload(MultipartFile file) {try {// 1、图片信息校验// 1)校验文件类型String type = file.getContentType();if (!suffixes.contains(type)) {logger.info("上传失败,文件类型不匹配:{}", type);return null;}// 2)校验图片内容BufferedImage image = ImageIO.read(file.getInputStream());if (image == null) {logger.info("上传失败,文件内容不符合要求");return null;}// 2、保存图片// 2.1、生成保存目录File dir = new File("D:\\pxx\\upload");if (!dir.exists()) {dir.mkdirs();}// 2.2、保存图片file.transferTo(new File(dir, file.getOriginalFilename()));// 2.3、拼接图片地址String url = "http://image.leyou.com/upload/" + file.getOriginalFilename();return url;} catch (Exception e) {return null;}}}

 下面我们用rest client 测试一下这个接口

 上面很明显就是接口测试成功

我们看一下上面的路径

http://127.0.0.1:8082/upload/image

这个路径很明显就是绕过了网关的,因为网关会给我们过来的所有连接加上/api前缀

 图片上传是文件的传输,如果也经过zuul网关代理,文件就会经过多次网络传输,造成不必要的网络负担,在高并发的情况下,可能会导致网络阻塞,zuul网关不可用,下面我们需要绕过网关处理

我们可以在网关做如下配置过滤某个微服务

但是如果这样配置,首先路径还是不会变,如下

也就是还是回去加上/api 这样一个前缀,但是我们真正想要的链接是

http://127.0.0.1:8082/upload/image

这里多说一点在这个位置,上面api.leyou.com一过来,会路过linux上面的nginx服务器,给我们定向到网关,看一下下面的配置

她会给我们代理到192.168.1.100:10010也就是网关服务器的地址,这里我们是在本机上面配的网关,但很明显我们不想去这,我们想去的还是下面这个地址

http://127.0.0.1:8082/upload/image

下面说一个nginx重写地址并马上进行转发的指令rewirte指令

下面我们贴一个路径规则,然后来进行讲解一下

 

那么这里我们先去重写一下这个匹配规则

先贴一个原来的路径转发

上面还是保留一下原来的,我们配置一下现在的访问目录就行了,比如这个是/api/upload这样一个访问目录,也就是主机过来之后,遇到后面跟这样一个访问目录,就会跳到这个location位置给我们进行转发,但是,需要注意的一个问题是,这个配置必须写到location /这样一个位置前面,因为location \这个是一个相当于通配,并且它的配置级别比较大,/api/upload这样路径一过来,其实不止是这个路径,是任意路径一过来,一旦第一个匹配直接找到location /,那么就会进去,执行相应的转发代理

话不多说,我们来配置一下nginx 服务器

难道就是说上面这样配置一下就好了吗

如果我们只是上面这样匹配了一下,还是会出问题,因为下面的路径一过来

上面是原本的请求路径

然后经过上面代理,注意我们这里代理只是改变ip,不会把中间的请求路径也替换掉,所以路径会变成下面的样子

http://192.168.1.1000:8082/api/upload/image

但是就是即使是这个路径,前面还是会带有前缀,这个前缀还是会带有api,也就是当网关检测到有api这个路径之后,这个路径还是会被网关拦截,那么这里我们需要去做一个路径的复写,nginx给我们提供了一个路径复写的指令

下面详细讲解一下这个路径复写的规则

经过上面的处理,路径就会变成下面的方式

 http://192.168.1.1000:8082/upload/image

这个就是我们想要的路径,直达文件微服务

注意修改之后重新启动nginx

看一下conf的完整配置

下面我们去测提交的时候, 给我们报了一个403

403是表示服务器拒绝这个请求

看一下控制台报错,这里应该是报了一个跨域错误

为什么跨域出错,因为我们这个请求没有走网关,网关会处理跨域,但是ly-upl;oad这个微服务不会给我们处理跨域,所以,我们把之前那做的跨域放到这里来

重新启动一下我们上传的这个微服务

下面我们把跨域代码全部贴一下

package com.leyou.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;/*** @Author: TianCi.Xiong* @Description: 跨域配置* @Date: Created in 2019-11-02 17:22*/
@Configuration
public class GlobalCorsConfig {@Beanpublic CorsFilter corsFilter() {//1.添加CORS配置信息CorsConfiguration config = new CorsConfiguration();//1) 允许的域,不要写*,否则cookie就无法使用了config.addAllowedOrigin("http://manage.leyou.com");config.addAllowedOrigin("http://www.leyou.com");//2) 是否发送Cookie信息config.setAllowCredentials(true);//3) 允许的请求方式config.addAllowedMethod("OPTIONS");config.addAllowedMethod("POST");config.addAllowedHeader("*");//2.添加映射路径,我们拦截一切请求UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();configSource.registerCorsConfiguration("/**", config);//3.返回新的CorsFilter.return new CorsFilter(configSource);}
}

然后我们重新调用上传

上面很明显是200访问吗成功,服务器会给我们 返回一个图片地址

 

至于这个里面还是会给我们报错

 

 我们后面再来处理这个.

好了,第三篇也就先说到这,祝大家早安午安晚安。

 

相关文章:

javaee之黑马乐优商城3

异步查询工具axios(儿所以时) vue官方推荐的ajax请求框架 新增品牌页面 如何找到上面这个页面 下面这个页面里面的新增商品弹窗 上面就是请求路径与请求方式 那么请求参数是什么&#xff1f; brand对象&#xff0c;外加商品分类的id数组cids &#xff08;这里其实不止就是添加…...

Pytorch intermediate(二) ResNet

实现了残差网络&#xff0c;残差网络结构。代码比之前复杂很多 conv3x3&#xff1a;将输入数据进行一次卷积&#xff0c;将数据转换成为&#xff0c;残差块需要的shape大小 ResidualBlock&#xff1a;残差块&#xff0c;也是所谓的恒等块。为什么被称为恒等块&#xff0c;大概…...

【2023集创赛】加速科技杯作品:高光响应的二硫化铼光电探测器

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;加速科技杯西北赛区二等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰…...

编写postcss插件,全局css文件px转vw

跟目录下创建plugins文件夹&#xff0c;创建postcss-px-to-viewport.ts文件 文件内代码&#xff1a; // postcss 的插件 vite内置了postCss插件 无需安装 import { Plugin } from postcss;interface Options {viewportWidth: number }const Options {viewportWidth: 375, // …...

精品SpringCloud的B2C模式在线学习网微服务分布式

《[含文档PPT源码等]精品基于SpringCloud实现的B2C模式在线学习网站-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;springcloud JDK版本&#xf…...

解决vue项目导出当前页Table为Excel

解决vue项目中导出当前页表格为Excel表格的方案 用到的技术&#xff1a; Vue2Element-uifile-saverxlsx 1、创建vue项目&#xff0c;安装element-ui 2、创建一个组件&#xff0c;组件内放入表格&#xff0c;和导出按钮 <template><div><!-- 导出的按钮 -->…...

C++设计模式_04_Strategy 策略模式

接上篇&#xff0c;本篇将会介绍C设计模式中的Strategy 策略模式&#xff0c;和上篇模板方法Template Method一样&#xff0c;仍属于“组件协作”模式&#xff0c;它与Template Method有着异曲同工之妙。 文章目录 1. 动机&#xff08; Motivation&#xff09;2. 代码演示Stra…...

目标检测YOLO实战应用案例100讲-基于YOLOv3多模块融合的遥感目标检测(中)

目录 2.2.3 YOLO 2.3 目标检测算法分析 2.3.1 目标检测结果评价指标...

element 表格fixed列高度无法100%

下文提到的滚动条皆为横向滚动条错误方法&#xff08;旧方法&#xff0c;点击查看旧博客&#xff09; 一下代码虽然能解决fixed列高度无法100%问题&#xff0c;但是会出现fixed列下面的滚动条无法被点击的问题&#xff08;被fixed列遮挡&#xff09;&#xff0c;所以该方法并不…...

【接口自动化测试】Eolink Apilkit 安装部署,支持 Windows、Mac、Linux 等系统

Eolink Apikit 有三种客户端&#xff0c;可以依据自己的情况选择。三种客户端的数据是共用的&#xff0c;因此可以随时切换不同的客户端。 我们推荐使用新推出的 Apikit PC 客户端&#xff0c;PC 端拥有线上产品所有的功能&#xff0c;并且针对本地测试、自动化测试以及使用体…...

解决sass问题:npm ERR! node-sass@9.0.0 postinstall: `node scripts/build.js`

目录 一、遇到问题 解决办法 二、 再次遇到问题 解决办法 题外话 一、遇到问题 1.运行这个项目的适合&#xff0c;遇到了没有sass的问题 解决办法 然后就用命令下载sass npm install node-sass 二、 再次遇到问题 2.下载sass的时候又发现了一个这样的问题 npm ER…...

Python技巧---tqdm库的使用

文章目录 一、tqdm基本知识二、在pytorch中使用tqdm 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、tqdm基本知识 “tqdm” 是一个 Python 库&#xff0c;用于在命令行界面中创建进度条。 基本使用如下&#xff1a; from tqdm import tqdm impor…...

linux-线程条件变量(cond)

概述 与互斥锁不同&#xff0c;条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程&#xff0c;直到某特殊情况发生为止。通常条件变量和互斥锁同时使用 。 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制&a…...

面试算法6:排序数组中的两个数字之和

题目 输入一个递增排序的数组和一个值k&#xff0c;请问如何在数组中找出两个和为k的数字并返回它们的下标&#xff1f;假设数组中存在且只存在一对符合条件的数字&#xff0c;同时一个数字不能使用两次。例如&#xff0c;输入数组[1&#xff0c;2&#xff0c;4&#xff0c;6&…...

【智能家居-大模型】构建未来,聆思大模型智能家居交互解决方案正式发布

LISTENAI 近日&#xff0c;国内11家大模型陆续通过《生成式人工智能服务管理暂行办法》备案&#xff0c;多家大模型产品已正式开放&#xff0c;激发了新一轮大模型热潮。大模型在自然语言理解方面的巨大突破&#xff0c;实现了认知智能的技术跃迁&#xff0c;带来了时代的智慧…...

通讯网关软件002——利用CommGate X2HTTP-U实现HTTP访问OPC UA Server

本文介绍利用CommGate X2HTTP-U实现HTTP访问OPC UA Server。CommGate X2HTTP是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现上位机通过HTTP来获取OPC UA Server的数据。 【解决方案】设置网关机…...

模拟经营类游戏是怎么开发的?

模拟经营类游戏开发是一个充满挑战但也充满乐趣的领域。下面是一些步骤和关键考虑因素&#xff0c;可以帮助您开始开发自己的模拟经营游戏&#xff1a; 明确游戏概念&#xff1a; 确定游戏开发的主题和类型&#xff0c;例如城市建设、农场经营、餐厅经营等。 制定一个引人入胜…...

基于JAVA+SSM+微信小程序+MySql的图书捐赠管理系统设计与实现

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…...

软件设计模式系列之六——单例模式

1 模式的定义 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的创建型设计模式&#xff0c;其主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。这意味着无论何时何地&#xff0c;只要需要该类的实例&#xff0c;都会返回同一个…...

verdi dump状态机的波形时直接显示状态名

前段时间看到别人用verdi看状态机的波形时&#xff0c;可以显示定义的状态参数&#xff0c;觉得很有意思&#xff0c;特地学习了一下 通常拉出状态机信号的波形是下面这样的 这种信号&#xff0c;我们要想知道每个数值代表的状态&#xff0c;还需要跟定义的parameter比对 像这…...

代码随想录算法训练营19期第53天

1143.最长公共子序列 视频讲解&#xff1a;动态规划子序列问题经典题目 | LeetCode&#xff1a;1143.最长公共子序列_哔哩哔哩_bilibili 代码随想录 初步思路&#xff1a;动态规划。 总结&#xff1a; dp[i][j] &#xff1a;长度为[0, i - 1]的字符串A与长度为[0, j - 1]…...

二刷力扣--栈和队列

栈和队列 栈和队列基础&#xff08;Python&#xff09; 栈一种先进后出&#xff0c;队列先进后出。 Python中可以用list实现栈&#xff0c;用append()模拟入栈&#xff0c;用pop()模拟出栈。 也可以用list实现队列&#xff0c;但是效率较低&#xff0c;一般用collections.deq…...

第六章 图 十、关键路径

开始顶点&#xff08;源点)&#xff1a; 在AOE网中仅有一个入度为0的顶点&#xff0c;称为开始顶点&#xff08;源点)&#xff0c;它表示整个工程的开始; 结束顶点&#xff08;汇点)&#xff1a; 也仅有一个出度为0的顶点&#xff0c;称为结束顶点&#xff08;汇点)&#xf…...

Virtualbox固定存储硬盘转换为动态存储硬盘

现象 一开始分配固定存储过大&#xff0c;占了太多空间&#xff0c;现在想换成动态存储释放空闲空间。 解决 关闭虚拟机进入虚拟介质管理从使用的硬盘复制出一个动态存储硬盘在设置中把硬盘替换为副本硬盘 详细步骤参考&#xff1a; https://blog.csdn.net/qq_24033983/arti…...

【栈与队列面试题】有效的括号(动图演示)

leetcode20.括号匹配问题 前言&#xff1a; &#x1f4a5;&#x1f388;个人主页:​​​​​​Dream_Chaser&#xff5e; &#x1f388;&#x1f4a5; ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上栈与队列的面试OJ题目 目录 leetcode20.括号匹配问题 1.问题描…...

基于matlab实现的弹簧振动系统模型程序(动态模型)

完整代码&#xff1a; clear all; %System data m1.0; zeta0.01; omega01.0; Dt1.0; f01.0; x00.0; dotx00.0; xmaxsqrt(x0^2(dotx0/omega0)^2)min([0.5*abs(f0)*Dt/(m*omega0) f0/omega0^2]); omegadomega0*sqrt(1-zeta^2); dt00.1*pi/omega0; nstep500; a0.70; b0.…...

哨兵1号(Sentinel-1)SAR卫星介绍

1. 哥白尼计划 说起欧空局的哨兵1号&#xff0c;就不得不先说一下欧空局的“哥白尼计划”。 欧空局的哥白尼计划&#xff08;Copernicus Programme&#xff09;是欧空局与欧盟合作的一项极其重要的地球观测计划。该计划旨在提供免费开放的、可持续的地球观测数据&#xff0c…...

[maven] scopes 管理 profile 测试覆盖率

[maven] scopes & 管理 & profile & 测试覆盖率 这里将一些其他的特性和测试覆盖率&#xff08;主要是 jacoco&#xff09; scopes maven 的 scope 主要就是用来限制和管理依赖的传递性&#xff0c;简单的说就是&#xff0c;每一个 scope 都有其对应的特性&…...

css网页打印字体设置

media print {font-family&#xff1a;"SimHei";color: #000;border-color: #000; }常用字符编码表 中文名英文名Unicode 编码黑体SimHeiSimHei微软雅黑Microsoft YaHei5FAE\8F6F\96C5\9ED1宋体SimSun\5B8B\4F53仿宋FangSong\4EFF\5B8B html5常用转义字符℃ 字符十…...

JAVA高级技术入门(单元测试,反射,注解,动态代理)

JAVA高级技术入门&#xff08;单元测试&#xff0c;反射&#xff0c;注解&#xff0c;动态代理&#xff09; 一、Junit单元测试二、反射1.认识反射&#xff0c;获取类概念&#xff1a;快速入门&#xff1a;获取Class对象的三种方式 2.1获取类的构造器2.2获取类的构造器的作用&a…...

企业建网站报价/百度推广关键词技巧定价

中关村在线消息&#xff1a;华为今日发布了2019年上半年业绩&#xff1a;上半年销售收入4013亿元&#xff0c;同比增长23.2%。其中消费者业务2208亿元&#xff0c;占比55%。华为今年上半年智能手机发货量(含荣耀)达到1.18亿台&#xff0c;同比增长24%。华为董事长梁华表示&…...

网站被采集了 一个栏目不收录/网上推广产品哪个网好

合并分支代码&#xff0c;简单操作&#xff1a; 1、切换到master主干代码 2、到git repositories 视图&#xff0c;点击需要合并的分支&#xff0c;例如v1.1.9 点击merge 进行合并 3、然后push to Upstream 进行提交 还有回退上个版本代码Reset 转载于:https://www.cnblogs.com…...

网站引导动画怎么做/优化设计答案六年级上册

这个属性是只读的&#xff0c;传回值有以下的可能&#xff1a; 0-UNINITIALIZED&#xff1a;XML 对象被产生&#xff0c;但没有任何文件被加载。 1-LOADING&#xff1a;加载程序进行中&#xff0c;但文件尚未开始解析。 2-LOADED&#xff1a;部分的文件已经加载且进行解析&am…...

vs和dw做网站的区别/怎么制作一个网站

最近3d相册可谓是很火&#xff0c;小编的朋友圈就被刷屏了。再加上后台很多小可爱留言说想要关于3d旋转相册&#xff0c;但是大多数人又不会编程&#xff0c;代码什么的敲敲打打太费劲了&#xff0c;考虑到这些&#xff0c;小编找朋友做了这个相册的代码&#xff0c;一共有两个…...

一个wordpress程序搭建多个网站/seo平台是什么

最近仔细研读了苹果官网最新的设计规范。网上没有找到很满意的翻译版本&#xff0c;于是自己老老实实的啃了几遍官方文档&#xff0c;顺便把学习笔记输出给大家分享一下。这里有几点要提醒一下大家&#xff1a;这是简明笔记&#xff0c;只选了重点内容&#xff0c;不是通篇逐字…...

长沙百度做网站多少钱/推广软件赚钱的平台

手机上有好用的时钟APP&#xff0c;时钟软件哪个好用? 每个人的手机屏幕都有着自己独特的设计&#xff0c;而时钟软件能够为用户的手机再增添一些风采和魅力&#xff0c;更有专为来年人设计的大字体桌面时钟&#xff0c;更加的清晰直观&#xff0c;各种特色的桌面时钟app中都有…...