Angular基础教程+Demo项目——尽可能全面一些——第二节
一、前言
Angular是一个类似于后端开发模式的前端开发框架,学习起来非常简单,当然需要一定的前端基础,本篇接着第一节继续介绍Angular基础
学习过程中所写的Demo_GitHub——学习Angular——浅度学习Demo
官网:https://angular.cn/(官网是最好的老师哦,追求技术的大神可以继续深入啦)
二、声明周期函数
当 Angular 实例化组件类并渲染组件视图及其子视图时,组件实例的生命周期就开始了。生命周期一直伴随着变更检测,Angular 会检查数据绑定属性何时发生变化,并按需更新视图和组件实例。当 Angular 销毁组件实例并从 DOM 中移除它渲染的模板时,生命周期就结束了。当 Angular 在执行过程中创建、更新和销毁实例时,指令就有了类似的生命周期。
说得简单点,就是在创建-销毁组件的过程中,有一系列的方法会被默认执行
这部分知识点可以参考官网
根据习惯还是先看案例,再详细讲解:
子组件:
HTML
<h1>lifecycle-method works!</h1>
<h2 #count ></h2>
<button (click)="countOperation()">累加</button>
<hr>
<br>
<hr>
<br>
TS文件
import {AfterContentChecked,AfterContentInit,AfterViewChecked,AfterViewInit,Component,DoCheck,OnChanges,OnDestroy,OnInit,ViewChild,Input
} from '@angular/core';// tslint:disable-next-line:no-conflicting-lifecycle
@Component({selector: 'app-lifecycle-method',templateUrl: './lifecycle-method.component.html',styleUrls: ['./lifecycle-method.component.scss']
})
export class LifecycleMethodComponent implements OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit,AfterViewChecked, OnDestroy{@Input() childData: any;num = 0;@ViewChild('count') count: any;// 构造方法constructor() {console.log('000 构造方法被执行---除了对局部变量的初始化,不应该进行其他操作(重点)');}ngOnChanges(): void{// 此组件作为子组件,被父组件传值的时候才会被调用,并且每次父组件传值过来时都会被调用,这里就不写例子了,很好理解console.log('001 ngOnChanges()被调用---当被绑定输入属性的值发生变化时被调用,一般为父子组件传值');}ngOnInit(): void {console.log('002 ngOnInit()被调用---请求数据一般被放到这里(重点)');}ngDoCheck(): void{console.log('003 ngDoCheck()被调用---检测,并在发生 Angular 无法或不愿意自己检测的变化时作出反应');}ngAfterContentInit(): void{console.log('004 ngAfterContentInit()被调用---当 Angular 把外部内容投影进组件视图或指令所在的视图之后调用。');}ngAfterContentChecked(): void{console.log('005 ngAfterContentChecked()被调用---每当 Angular 检查完被投影到组件或指令中的内容之后调用。');}ngAfterViewInit(): void{console.log('006 ngAfterViewInit()被调用---当 Angular 初始化完组件视图及其子视图或包含该指令的视图之后调用,一般进行dom操作(重点)');}ngAfterViewChecked(): void{console.log('007 ngAfterViewChecked()被调用---每当 Angular 做完组件视图和子视图或包含该指令的视图的变更检测之后调用。');}ngOnDestroy(): void{console.log('008 ngOnDestroy()被调用---每当 Angular 每次销毁指令/组件之前调用并清扫,当组件进行路由时会触发此声明周期函数(重点)');}countOperation(): void{this.num ++;this.childData ++;this.count.nativeElement.innerHTML = this.num;}
}
父组件:
HTML
<app-lifecycle-method *ngIf="exist" [childData]="title"></app-lifecycle-method><button (click)="changeTitle()">触发ngOnChanges()</button>
<button (click)="destroy()">触发ngOnDestroy()</button>
TS文件
// 引入核心模块中的Component
import { Component } from '@angular/core';@Component({selector: 'app-root', // 组件的名字templateUrl: './app.component.html', // HtmlstyleUrls: ['./app.component.scss'] // css
})
export class AppComponent {title = 'demo1'; // 定义属性exist: any = true;constructor(){ // 构造函数}changeTitle(): void{this.title = this.title + '1';}destroy(): void{this.exist = !this.exist;}
}
先提一下,不知道我又没有在第一节讲,不过我们使用哪个组件,一个很关键的操作就是将它加入到index.html页面中,因为Angular是单页面应用,也就是说它只会显示index.html,所以只有加入到index.html的视图才会被显示
说到生命周期函数,Angular一共有8个加上构造方法,上面的Demo也算是非常详细的展示了他们的执行顺序以及触发条件,这里讲详细讲解一下其中重点的生命周期函数
- constructor(): 构造方法,一般在其中引入一些服务或者进行局部数据的初始化
- ngOnInit(): 一般请求数据是放到这里边的,然后存储到类数据中,对页面进行渲染
- ngAfterViewInit():这个是在页面和组件加载完成后才会触发的生命周期函数,一般是进行一些dom操作的
- ngOnDestroy():销毁方法,一般是在组件被注销或者路由到其他组件时触发,可以进行一些保存数据的操作,防止数据丢失
基本上,上面四个函数就够用了,其他的可以有个印象就足够了,项目中真的用到了也可以随时查看官网的文档,很方便的。
三、Rxjs 异步调用
本人使用的比较浅显,感觉这个rxjs第三方包主要对异步调用提供了更加完善的支持。rxjs本来是第三方包,但是在Angular7之后就被集成到了Angular中了,基于这个情况,直接使用就可以了
直接上Demo,根据Demo进行解释这个功能点的含义
Service服务
import { Injectable } from '@angular/core';
import {Observable} from 'rxjs';@Injectable({providedIn: 'root'
})
export class DataStorageService {constructor() { }set(key: string, value: any): void{localStorage.setItem(key, JSON.stringify(value));}get(key: string): any{return JSON.parse(localStorage.getItem(key));}remove(key: string): void{localStorage.removeItem(key);}
// 同步方法getData(): any{const data = '这是一个同步方法';return data;}
// 异步方法getAsynData(): any{setTimeout( () => {const data = '这是一个异步方法';return data;}, 1000);}
// 函数回调解决异步getFunData(fun): void{setTimeout( () => {const data = '这是一个函数回调解决异步方法';fun(data);}, 1000);}
// 通过ES6 Promise 解决异步调用getPromiseData(): any{return new Promise((resolve, reject) => {setTimeout( () => {const data = '这是一个Promise解决异步的方法';resolve(data);}, 1000);});}
// 通过 rxjs Observable 解决异步的方法getRxjsData(): any{// tslint:disable-next-line:no-shadowed-variablereturn new Observable((observable) => {setTimeout( () => {const data = '这是一个rxjs解决异步的方法';observable.next(data);// observable.error(''); 返回一个错误的信息}, 1000);});}// 多次调用getRxjsInterval(): any{// tslint:disable-next-line:no-shadowed-variablereturn new Observable((observable) => {setInterval( () => {const data = '这是一个rxjs解决异步的方法-多次调用';observable.next(data);// observable.error(''); 返回一个错误的信息}, 1000);});}getRxjsNum(): any{return new Observable((observable) => {let num = 0;setInterval(() => {num ++;observable.next(num);}, 1000);});}
}
组件
import { Component, OnInit } from '@angular/core';
import {DataStorageService} from '../../services/data-storage.service';
import { filter, map } from 'rxjs/operators';@Component({selector: 'app-rxjs-data',templateUrl: './rxjs-data.component.html',styleUrls: ['./rxjs-data.component.scss']
})
export class RxjsDataComponent implements OnInit {constructor(public storage: DataStorageService) { }ngOnInit(): void {let data = this.storage.getData();console.log(data);data = this.storage.getAsynData();console.log(data);this.storage.getFunData((da) => {console.log(da);});const promise = this.storage.getPromiseData();promise.then((da) => {console.log(da);});const observable = this.storage.getRxjsData();observable.subscribe((da) => {console.log(da);});// 从上述看,rxjs并没有比Promise强到哪里,为什么不使用ES6的Promise,而选择第三方包的rxjs呢?// 很简单,因为rxjs支持订阅中断、重复订阅等功能const observableInterval: any = this.storage.getRxjsInterval();const inter: any = observableInterval.subscribe((da) => {console.log(da);});// 中断订阅setTimeout(() => {inter.unsubscribe();},3000);// pipe 工具const num = this.storage.getRxjsNum();num.pipe(filter((val) => {// @ts-ignorereturn 0 === val % 2 ;}),map((val) => {// @ts-ignorereturn val * val;})).subscribe((da) => {console.log(da);});}
}
要使用rxjs是要inport它的包的,这个是肯定需要的,不要忘了。
Demo主要解释了异步调用所面临的问题,而它的解决方法也比较多,下面列出来:
- 回调方法
- ES6的Promise
- Rxjs
可以看到回调方法,在我理解中和java JDK8的lambda语法很像,就是传递过一个匿名函数代码块
Promise是ES6支持的处理异步的方法,可以处理成功和失败两种返回。
Rxjs的Observable,看起来和Promise差不多,但是功能却要完善很多,可以额外支持订阅中断、多次订阅等,而且提供了工具包,类似于filter、map,插一句外话,这个和jdk8中的stream也是非常像的,都是对数据的预处理。
四、Http请求
Angular中Http请求还是比较简单的,都是利用封装好的服务,当然也可以使用第三方的组件去进行http请求,这里都是简单介绍,其实我认为官网这块写的已经很不错了
import { Injectable } from '@angular/core';
import {HttpClient, HttpHandler, HttpHeaders} from '@angular/common/http';
import axios from 'axios';
import {Observable} from 'rxjs';@Injectable({providedIn: 'root'
})
export class HttpsentService {private url: any = 'http://localhost:8099/';constructor(private http: HttpClient) {}get(param: any): any{return this.http.get(`${this.url}get`);}post(param: any): any{// 设置请求头let handler = {headers: new HttpHeaders({'Content-Type': 'application/json'})};return this.http.post(`${this.url}post`,param, handler);}jsonp(): any{return this.http.jsonp(`${this.url}jsonp`,'callback');}axiosGet(): any{return new Observable((observable) => {axios.get(`${this.url}get`).then((data) =>{observable.next(data);})})}}
这块就不详细写了,很零碎,主要是要使用http请求,一定要在app.module.ts中引入
import { HttpClientModule, HttpClientJsonpModule } from '@angular/common/http';
这个,然后在import中引入。之后哪里需要使用http请求就在哪里引入就好了
,上边demo中 分别是get、post、jsonp已经axios的get请求,前三个官网都有介绍,我主要把后端代码贴过来吧,也很简单的web请求(java)
package com.consul.provider.service.impl;import com.alibaba.fastjson.JSON;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;/*** @program: springCloud* @description: 应对与Angular的请求测试类* @create: 2020-11-23 17:51**/
//@CrossOrigin
@RestController
public class TestController {@CrossOrigin@GetMapping("get")public Object get(String param){return JSON.toJSONString("Get 请求,传过来的参数是 "+param);}/*** @RequestBody : 可以直接整个接受 json对象* @RequestParam: JSON参数*/@CrossOrigin@PostMapping("post")public Object post(@RequestBody Object object){System.out.println(JSON.toJSONString(object));return JSON.toJSONString("Post 请求,传过来的参数是 "+JSON.toJSONString(object));}@GetMapping("jsonp")public Object jsonp(HttpServletRequest request){try {String callback=request.getParameter("callback");if("".equals(callback)){return ResponseEntity.status(HttpStatus.OK).body("Jsonp 请求");}else{//包裹callback函数,给js解析。return ResponseEntity.ok(callback+"("+JSON.toJSONString("Jsonp 请求")+")");}} catch (Exception e) {e.printStackTrace();}return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);}
}
后端这里主要是接受请求,判断一下前端是否发送成功,所以也比较简单,这里其实关于jsonp这里我研究了一天,主要是这个地方以前听说过,但没有实际接触过,了解后还是有点一知半解,不敢说懂了,所以想深入了解的朋友还是自行百度吧
对了,要想在使用第三方包axios的朋友,需要引入依赖
cnpm install axios --save
这样就可以在需要的地方,引入使用了
这节很简单,没啥说的,不会的话留言吧
五、路由
寻求进阶请看官网路由文档
在单页面应用中,你可以通过显示或隐藏特定组件的显示部分来改变用户能看到的内容,而不用去服务器获取新页面。当用户执行应用任务时,他们要在你预定义的不同视图之间移动。要想在应用的单个页面中实现这种导航,你可以使用 Angular 的Router(路由器)。
为了处理从一个视图到下一个视图之间的导航,你可以使用 Angular 的路由器。路由器会把浏览器 URL 解释成改变视图的操作指南,以完成导航。
着重提一下Angular 中的路由顺序
路由的顺序很重要,因为 Router 在匹配路由时使用“先到先得”策略,所以应该在不那么具体的路由前面放置更具体的路由。首先列出静态路径的路由,然后是一个与默认路由匹配的空路径路由。通配符路由是最后一个,因为它匹配每一个 URL,只有当其它路由都没有匹配时,Router 才会选择它。
其他的基础知识点以Demo的形式看一下吧
路由跳转
app-routing.module.ts文件
const routes: Routes = [{path: 'mvvm', component: FormMVVMComponent},{path: 'logic', component: LogicComponent},{path: 'news', component: NewsComponent},{path: 'newsDetail', component: NewDetailComponent},{path: 'newsDetailDynamic/:sid', component: NewsDetailDynamicComponent},{path: 'fc_router', component: FCRouterComponent,children: [{path: 'f_router', component: FRouterComponent,children: [{path: 'f_one', component: FOneDetailComponent},{path: 'f_two', component: FTwoDetailComponent}]},{path: 'c_router', component: CRouterComponent,children: [{path: 'c_one', component: COneDetailComponent},{path: 'c_two', component: CTwoDetailComponent}]}]},{path: '**', redirectTo: '/fc_router'}
];
上面是路由的配置文件,其中不但包括了路由跳转的基本路由配置,还包括了父子嵌套路由的配置,就是这段
{path: 'fc_router', component: FCRouterComponent,children: [{path: 'f_router', component: FRouterComponent,children: [{path: 'f_one', component: FOneDetailComponent},{path: 'f_two', component: FTwoDetailComponent}]},{path: 'c_router', component: CRouterComponent,children: [{path: 'c_one', component: COneDetailComponent},{path: 'c_two', component: CTwoDetailComponent}]}]}
父路由组件
Html
<h3>新闻列表</h3>
<h4>Url请求</h4>
<ul><li *ngFor="let item of list, let key=index"><!--[routerLink]="'newsDetail'" ==> http://127.0.0.1:4200/news/newsDetail[routerLink]="'/newsDetail'" ==> http://127.0.0.1:4200/newsDetail--><a *ngIf="key % 2 ==0" [routerLink]="['/newsDetail']" [queryParams]="{sid:key}">{{item}}</a><a *ngIf="key % 2 !=0" [routerLink]="['/newsDetailDynamic/',key]">{{item}}</a></li>
</ul><hr>
<br>
<h4>TS跳转</h4>
<ul><li *ngFor="let item of list, let key=index"><a *ngIf="key % 2 ==0" (click)="get(key)">{{item}}</a><a *ngIf="key % 2 !=0" (click)="dynamic(key)">{{item}}</a></li>
</ul>
TS
import { Component, OnInit } from '@angular/core';
import { Router, NavigationExtras } from '@angular/router';@Component({selector: 'app-news',templateUrl: './news.component.html',styleUrls: ['./news.component.scss']
})
export class NewsComponent implements OnInit {list: any[] = [];constructor(public router: Router) { }ngOnInit(): void {for (let i: number = 0; i<10 ; i++) {if(i%2 ===0){this.list.push("这是第"+i+"条新闻——get请求");}else{this.list.push("这是第"+i+"条新闻——动态路由");}}}dynamic(key): any{// 普通跳转,动态路由this.router.navigate(['/newsDetailDynamic/',key]);}get(key): any{// get 传值this.router.navigate(['/newsDetail'],{queryParams:{sid:key}});}
}
子路由—get请求参数接受
html
<h3>新闻详情——{{sid}}</h3>
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';@Component({selector: 'app-new-detail',templateUrl: './new-detail.component.html',styleUrls: ['./new-detail.component.scss']
})
export class NewDetailComponent implements OnInit {public sid : any;constructor(public route:ActivatedRoute) { }
// get请求ngOnInit(): void {console.log(this.route);this.route.queryParams.subscribe(data => {console.log(data.sid);this.sid = data.sid;});}
}
子路由—动态路由参数接受
html
<h3>新闻详情动态路由——{{sid}}</h3>
TS
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';@Component({selector: 'app-news-detail-dynamic',templateUrl: './news-detail-dynamic.component.html',styleUrls: ['./news-detail-dynamic.component.scss']
})
export class NewsDetailDynamicComponent implements OnInit {public sid : any;constructor(public route:ActivatedRoute) { }
// 动态路由请求ngOnInit(): void {console.log(this.route);this.route.params.subscribe(data => {console.log(data.sid);this.sid = data.sid;});}
}
讲一下上边的吧,主要是get请求携带参数和动态路由携带参数,然后子组件分别去接收相应的参数,这个demo就是讲这样的语法过程
get请求:https://www.baidu.com?name=1
动态路由:https://www.baidu.com/1
上边就是get请求和动态路由的区别,其实就是两种常规的web请求,不过在Angular中获取参数的方式不同罢了。
我是分割线
嵌套路由的话,就不贴demo了,因为嵌套的话涉及的组件比较多,主要是贴上来就比较长了,而且很简单,有兴趣的可以看我的github里的Angular-demo,自己直接运行一下,别忘了下载下来后加载Angular依赖。
结语
自此Angular的基本语法我已经探索的差不多了,当然这点东西对于学习前端的大拿肯定是远远不够的,只是基础中的基础,但是对于我这个主要做java的,已经足够了。如果观看中哪里有问题,随时留言,一起讨论一起成长!
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- [Day04]Angular 2教程:04 注入依賴
说明:本系列是30天精通Angular2系列,此教程会第一时间发布在最三方平台,希望给你带来帮助! 本文出自最三方Angular系列教程,转载请注明出处! 前言 注入依赖 (Dependency injection, DI) 是 Angular 最大的特色和卖点。…...
2024/4/14 6:55:53 - Angular--自学教程
一、Angular指令含义 Angular为HTML页面扩展的:自定义标签属性或标签 与Angular的作用于对象(scope)交互,扩展页面的动态表现力 二、常用指令 ng-app 指定模块名,angular管理的区域 ng-model 双向绑定࿰…...
2024/4/21 2:22:19 - angular2 系列教程(一) HelloAngular
注:本教程基于angular6.0.8进行,尽量迅速了解每一个重要部分的定义与用法,能够按步骤编写完成需求。 一. Hello Angular 步骤 新建项目: ng new hello-angular --skip-install 安装依赖:进入hello-angular 目录&…...
2024/4/21 2:22:17 - Angular2入坑指南
序 对后端开发来说,前端是神秘的,眼花缭乱的技术,繁多的框架,出名的不出名的好几百种,看是“繁荣”,其实显得杂乱无章,但是我们在做开发的时候,技术选型还是主流的那么几个…...
2024/5/8 13:05:42 - Angular2 从搭建环境到开发
Angular2 的发布带来了一阵热议,很久之前就在筹备了,当时的官方答复就是彻底推翻重写,问世之后大家的呼声就是学习成本太高,虽然去掉了 1.x 里的一部分概念,但是加进了 typescript,虽然不强制使用ÿ…...
2024/4/22 1:51:16 - angular脚手架安装
下载最新的node.js https://nodejs.org/en/ 安装稳定版本的 npm install angular/cli -g 你也可以使用cnpm 安装 npm config set registry https://registry.npm.taobao.org // 创建项目 ng new my-app // 时间有点长慢慢等待哈 静静地等待项目的 安装 他会问你 需要 路由吗 看…...
2024/4/21 2:22:15 - Angular 5.x 系列教程笔记(一)——快速入门
前言 涉足Angular是从1.x的版本,几年间Angular已经从1.x迭代到了2.x、4.x在到现在的5.0, 发展非常的迅速,性能也得到了很大的提升,接下来我们会逐步带大家快速了解一下Angular 5.x的使用。 安装CLI Angular 2.0开始提供了CLI命…...
2024/4/20 20:25:57 - Angular2新手教程系列:Hello World
当今天下,分久必合,合久必分......作为一名前端,你应该懂我的意思。 如果不懂,也没关系,我不会啰嗦Vue和React,咱们只专注于今天的主角——Angular。这是一篇写给萌新的文章,无关人员请跳到感兴…...
2024/4/20 20:25:55 - Angular 2.x 从0到1 (一)史上最简单的Angular2教程
第一节:Angular 2.0 从0到1 (一)第二节:Angular 2.0 从0到1 (二)第三节:Angular 2.0 从0到1 (三) 第一章:认识Angular 2.0 Angular2简介 Angular 2 是Google推…...
2024/4/20 20:25:54 - angular 1 菜鸟教程
一、angular简介 AngularJS 是一个 JavaScript 框架。它是一个以 JavaScript 编写的库。 AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中: <script src"https://cdn.staticfile.org/angular.js/1.4.6/angular.mi…...
2024/4/20 20:25:53 - 【Angular2.*】视频教程
2019独角兽企业重金招聘Python工程师标准>>> // 大漠穷秋的Angular2.0视频教程 Angular2.0视频教程---课程大纲(标清) 第一节:1小时快速上手(1)(超清) 第一节:1小时快速上手(2)(超清…...
2024/4/21 2:22:13 - angular2 系列教程(0) Angular CLI安装
Angular CLI 安装 安装流程 1. 首先安装node.js,下载链接:http://nodejs.cn/download/ 我的项目环境是windows,所以我下载的是windows安装包。下载好了之后,直接点击安装,然后全部下一步(如果要安装到其它…...
2024/4/21 2:22:13 - Angular2环境配置
介绍: 2016年9月14号Angular宣布发布了Angular2的版本. 并且angular2提供的angular-cli来帮助我们快速搭建angular2应用环境。 但是angular-cli目前一直处于测试阶段,版本迭代比较快,陆陆续续发布了各种迭代的alpha和beta版本。并最终使用…...
2024/4/20 7:45:17 - Angular2知识概括
Angular2知识概括Angular版本更迭angular2入门Angular2架构Angular 2 模板语法脚手架cli路由RouterUI库Angular2入门之模块与组件RxJS异步编程使用总结Angular版本更迭 起源和版本(1~2): Augular 1.x: ①近年来,Web 开发技术的发展日新月异…...
2024/4/21 2:22:10 - angular教程推荐
angular系列在线交互式教程: angular5教程 angular5教程全面系统地讲解了最新版的Angular5,内容不仅涵盖组件模板语法、指令和管道运用、表单运用、指令开发等基础内容,还包括依赖注入原理与应用、变化检测机制原理及应用、模块和组件的编译…...
2024/4/20 9:14:22 - Angular2 系列教程
参考:http://www.liuyiqi.cn/tags/Angular2/转载于:https://www.cnblogs.com/Ceri/p/7723465.html...
2024/5/1 18:52:17 - [Day01]Angular 2教程:01 简介
说明:本系列是30天精通Angular2系列,此教程会第一时间发布在最三方平台,希望给你带来帮助! 本文出自最三方Angular系列教程,转载请注明出处! 前言 我目前仍在就学,每周也固定花一些时间去公司实习&#x…...
2024/4/21 2:22:07 - angular7中使用请求拦截和token验证
对于任何一个应用来说,安全都是必不可少的操作。 一般安全验证的比较流行的方式是:token验证 后台生成一个token,第一次登陆成功之后,将token从后台携带回来,然后前端每次的请求都要将token带到后台。后台验证有没有…...
2024/4/21 2:22:06 - angularcli 拦截器封装
新建一个service.ts import { Injectable } from angular/core; import { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from angular/common/http; import { Observable } from rxjs; import { tap } from rxjs/operators; const ignoreToken [ad…...
2024/4/26 8:05:42 - angular 路由拦截
$scope.$on($stateChangeStart,function(event, toState, toParams, fromState, fromParams){//如果是登录页面就不进行处理 retrunif(toState.namelogin) return;//comApi是有一个工具类 此处是判断是否登录 登录信息放缓存了if(!comApi.isNotNullAndUndefined($sessionStorag…...
2024/5/9 15:57:04
最新文章
- 机器人学【一、刚体运动】
机器人学 文章目录 机器人学1. 刚体运动1.1 刚体变换刚体刚体变换 1.2 三维空间中的旋转运动群求质点坐标的相对变换旋转矩阵的合成法则用线性算子来计算叉积叉积的右手法则叉积用于计算线速度旋转的指数坐标Rodrigues公式计算旋转矩阵的例子四元数 1.3 三维空间中的刚体运动齐…...
2024/5/10 16:07:02 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/9 21:23:04 - 【Java8新特性】四、强大的Stream api
这里写自定义目录标题 一、了解Stream二、流(stream)到底是什么?三、Stream操作的三个步骤四、创建Stream的四种方式五、Stream 的中间操作1、筛选和切片2、map 映射3、排序 六、Stream 的终止操作1、查找和匹配2、归约3、收集 一、了解Stream Stream是Java8中…...
2024/5/9 19:03:15 - ROS2高效学习第十章 -- ros2 高级组件之大型项目中的 launch 其二
ros2 高级组件之大型项目中的 launch 1 前言和资料2 正文2.1 启动 turtlesim,生成一个 turtle ,设置背景色2.2 使用 event handler 重写上节的样例2.3 turtle_tf_mimic_rviz_launch 样例 3 总结 1 前言和资料 早在ROS2高效学习第四章 – ros2 topic 编程…...
2024/5/9 17:21:28 - Oracle备份和还原的几种方式
1、使用数据泵方式 exp demo/demoorcl buffer1024 filed:\back.dmp fully demo:用户名、密码 buffer: 缓存大小 file: 具体的备份文件地址 full: 是否导出全部文件 ignore: 忽略错误,如果表已经存在,则也是覆盖 exp demo/de…...
2024/5/10 0:24:00 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/10 12:36:12 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/10 10:22:18 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57