淘宝网官方网/宁波seo咨询
Dart入门
- Dart安装
- 创建项目
- 安装依赖(以`http`为例)
- 依赖库查询地址
- 添加依赖
- 编写运行示例
- dart常用命令
- 引用核心库、自定义库、第三方库
- 数据类型
- Numbers (int, double)
- Strings (String)
- Booleans (bool)
- Lists (List)
- Maps (Map)
- Sets (Set)
- Null (null)
- Records ((value1, value2, ...))
- Runes (Runes)
- Symbols (Symbol)
- 类型判断
- 单引号、双引号、三引号
- 运算符
- 除以取整(`~/`、`~/=`)
- 取余(`%`、`%=`)
- 如果空(`??`、`??=`)
- 判断类型(`is`、`is!`)
- 类型断言(`as`)
- 条件成员访问(`?`)
- Null断言运算符(`!`)
- 级联表示法(`..`)
- `late`
- 常量`final`和`const`
- 相同点
- 不同点
- 函数
- 基本函数
- 可选参数函数
- 命名参数函数
- 箭头函数
- 自执行函数
- 参数必传函数
- 类
- 示例
- 静态属性和方法
- 泛型
- 多态
- `get`和`set`
- 多接口继承
- `mixin`
- 常量构造函数
Dart安装
$ brew install dart-sdk
$ dart --version
创建项目
$ dart create -t console dart_app
$ cd dart_app
$ dart analyze # 分析项目的Dart源代码
$ dart run ./bin/dart_app.dart # 或 dart ./bin/dart_app.dart 或 dart run
安装依赖(以http
为例)
依赖库查询地址
https://pub.dev/
添加依赖
$ dart pub add http
编写运行示例
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;void main() async {var url = Uri.https('www.example.com');var response = await http.get(url);if (response.statusCode == 200) {print(response.body);} else {print(response.statusCode);}
}
dart常用命令
# 添加依赖
$ dart pub add date_format:'^2.0.5'# 删除依赖
$ dart pub remove http# 清空全局的本地缓存
$ dart pub cache clean# 获取所有在当前工作目录下的 pubspec.yaml 文件中列出的依赖项,以及这些依赖项的 间接依赖项,必要时下载该依赖项并更新缓存
$ dart pub get# 获取当前工作目录下 pubspec.yaml 文件中列出的所有依赖项以及它们 间接依赖项 的最低版本
$ dart pub downgrade# 识别过期的包依赖项,并获得如何更新它们的建议
$ dart pub outdated# 与 dart pub get 命令一样,都是用于获取依赖项的。不同的是该命令会忽略掉任何已存在的 lockfile 文件,因此 Pub 可以获取所有依赖项的最新版本
$ dart pub upgrade
引用核心库、自定义库、第三方库
import 'dart:math'; // 核心库
import '../lib/dart_app.dart'; // 自定义库
import 'package:date_format/date_format.dart'; // 第三方库
示例
import 'dart:math'; // 引用全部方法
import 'dart:math' as Math; // 别名void main() {print(Random().nextBool());print(Math.Random().nextBool());print(max(0, 0));
}
import 'dart:math' show max; // 只引入maxvoid main() {print(max(0, 1));print(Random().nextBool()); // Error
}
import 'dart:math' hide max,Random; // 只引入除了max和Randomvoid main() {print(Point(0, 1));print(max(0, 1)); // Errorprint(Random().nextBool()); // Error
}
数据类型
int、double、String、bool、List、Map、Set、null、(value1, value2, …)、Runes、Symbol
Numbers (int, double)
void main() {var a = 123; // var会自动推断类型为intint b = 123;double c = 1;double d = 1.23;b = d; // Error: “double”类型的值不能分配给“int”类型的变量.d = b; // Error: “int”类型的值不能分配给“double”类型的变量.print(0 / 0); // NaNprint((0 / 0).isNaN); // true
}
Strings (String)
void main() {var a = "1a2b3c"; // var会自动推断类型为StringString b = "1.2b3c";print(a.length); // 6print(int.parse(a));print(double.parse(b));String c = "123.4";print(double.parse(c)); // 123.4
}
Booleans (bool)
void main() {bool a = true;bool b = false;
}
Lists (List)
void main() {List l1 = [];l1.add("Lee");l1.add("男");l1.add("你好");l1.add(18);print(l1); // [Lee, 男, 你好, 18]print(l1.first); // Lee 返回第一个元素print(l1.last); // 18 返回列表中的最后一个元素print(l1.isEmpty); // false 如果集合没有元素,则返回trueprint(l1.isNotEmpty); // true 如果集合至少包含一个元素,则返回trueprint(l1.length); // 4print(l1.reversed); // (18, 你好, 男, Lee) 以相反的顺序返回包含列表值的可迭代对象List l2 = [];print(l2.isEmpty); // trueprint(l2.isNotEmpty); // falseList l3 = ["abc"];print(l3.single); // abc 检查列表是否只有一个元素并返回它,否则抛出异常List<int> l4 = [1, 2, 3];l4.add("abc"); // Error: 无法将参数类型“String”分配给参数类型“int”List l5 = ["Lee", 18, "男", "Tom", 20, "男"];l5.remove("男"); // [Lee, 18, Tom, 20, 男]// 创建固定长度的数组List l6 = List.filled(3, "Lee"); // ["Lee", "Lee", "Lee"]l6[1] = "Tom"; // [Lee, Tom, Lee]l6.length = 4; // Error: 不允许修改数组长度l6.add("Tom"); // Error: 不允许修改数组长度l6.remove("Lee"); // Error: 不允许修改数组长度
}
Maps (Map)
void main() {Map data = {1: "一","two": 2,"three": true// a: true, // Error: 找不到变量a};print(data); // {1: 一, two: 2, three: true}print(data["two"]); // 2data["three"] = false;print(data); // {1: 一, two: 2, three: false}
}
Sets (Set)
void main() {Set data = {1, 2, 3};print(data); // {1, 2, 3}data.add(4);print(data); // {1, 2, 3, 4}
}
void main() {Set<String> data = {"苹果", "香蕉"};print(data); // {苹果, 香蕉}print(data.toList()); // [苹果, 香蕉]
}
Null (null)
空安全(null safety)
空安全会在编译期防止意外访问 null 变量的错误的产生
void main() {String name = "Lee";name = null; // Error: 无法将值“null”分配给“String”类型的变量,因为“String”不可为null
}
允许为空
void main() {String? name = "Tom";name = null;
}
Records ((value1, value2, …))
void main() {var record = (1, b: 2, c: 3, d: true, null, 5, [7], {8}, {"i": 9});print(record); // (1, null, 5, [7], {8}, {i: 9}, b: 2, c: 3, d: true)print(record.$1); // 1print(record.$2); // nullprint(record.$3); // 5print(record.$4); // [7]print(record.$5); // {8}print(record.$6); // {i: 9}print(record.b); // 2print(record.c); // 3print(record.d); // truevar (lat, lng) = (1000, 2000);print(lat); // 1000print(lng); // 2000
}
Runes (Runes)
void main() {Runes input = new Runes("\u{1f605}"); print(new String.fromCharCodes(input));
}
Symbols (Symbol)
void main() {Symbol obj = new Symbol("Lee"); print(obj); // Symbol("Lee")
}
类型判断
void main() {var a = 123;print(a is int); // trueprint(a is double); // false
}
单引号、双引号、三引号
void main() {String msg1 = '你好,我叫''Lee';String msg2 = "你好,我叫""Lee";String msg3 = '''你好,我叫Lee''';String msg4 = """你好,我叫Lee""";print(msg1); // 你好,我叫Leeprint(msg2); // 你好,我叫Leeprint(msg3); // 你好,我叫\n\tLeeprint(msg4); // 你好,我叫\n\tLee
}
运算符
除以取整(~/
、~/=
)
void main() {print(3 ~/ 2); // 1print(1.2 * 2 ~/ 1); // 2
}
void main() {var a = 123;a ~/= 2;print(a); // 61
}
取余(%
、%=
)
void main() {print(3 % 2); // 1print(1.2 * 2 % 2); // 0.3999999999999999 精度问题
}
void main() {var a = 3;a %= 2;print(a); // 1
}
如果空(??
、??=
)
注意:
??
与||
不同
import 'dart:math';void main() {var a = Random().nextBool() ? null : 1;var b = a ?? 2;print('$a, $b'); // 1, 1 OR null, 2print(!!null || false); // Error: 无法将值“null”分配给“bool”类型的变量,因为“bool“不可为null”print(!!0 || false); // Error: 不能将“int”类型的值分配给“bool”类型的变量
}
import 'dart:math';void main() {var a = Random().nextBool() ? null : 1;a ??= 2;print(a); // 1 OR 2
}
判断类型(is
、is!
)
import 'dart:math';void main() {var a = Random().nextBool() ? "Lee" : 1;print(a is int); // false OR trueprint(a is String); // true OR falseprint(a is! bool); // true
}
类型断言(as
)
import 'dart:math';void main() {var str = "Hello, Lee!!!";String msg = str as String;print(msg.length); // 13var a = Random().nextBool() ? "Lee" : 1;print((a as String).length); // 3 OR Error: 类型“int”不是类型强制转换中类型“String”的子类型
}
条件成员访问(?
)
示例1
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><button id="confirm">Confirm</button><script src="./out.js"></script>
</body>
</html>
import 'dart:html';void main() {var confirm = querySelector('#confirm');// confirm.onClick.listen((e) => {window.alert('Confirmed!')}); // Error: 无法在“Element?”上访问属性“onClick”因为它可能为空confirm?.onClick.listen((e) => {window.alert('Confirmed!')}); // ok
}
$ dart compile js ./bin/dart_app.dart
示例2
import 'dart:math';void main() {String? name = Random().nextBool() ? "Lee" : null;print(name?.length); // 3 OR null
}
Null断言运算符(!
)
import 'dart:math';void main() {String? name = Random().nextBool() ? "Lee" : null;print(name!.length); // 3 OR Error: Null值上使用的Null检查运算符
}
级联表示法(..
)
class Person {String name = "Lee";int age = 18;void say(){print("$name, $age");}
}void main() {Person person = Person();person..name = "Tom"..age = 20..say(); // Tom, 20
}
late
在运行时而非编译时对变量进行约束
定义一个无初始值的非空字段
class Person {// String name; // Error: 字段“name”应初始化,因为其类型“String”不允许为nullString? name; // oklate String name; // ok
}void main() {}
常量final
和const
相同点
- 用来定义常量,一旦赋值不可改变,并且类型声明可以忽略
void main() {final a = "Lee";const b = "Tom";a = "AAA"; // Errorb = "BBB"; // Error
}
不同点
final
变量的初始值可以在编译时确定,也可以在运行时确定;const
变量的初始值只能是编译时确定的值
void main() {final a = DateTime.now();const b = DateTime.now(); // Error: 不能调用需要常量表达式的非“const”构造函数
}
- 内存中的创建。相同的值,
final
变量会重复创建,const
会引用同一份值
void main() {final a = {"name": "Lee"};final b = {"name": "Lee"};const c = {"name": "Lee"};const d = {"name": "Lee"};print(a == b); // falseprint(b == c); // falseprint(c == d); // true
}
const
变量的不可变性是嵌套的,final
不是
void main() {final a = {"name": "Lee"};const b = {"name": "Lee"};a["name"] = "Tom"; // okb["name"] = "Tom"; // Error: 无法修改不可修改的映射
}
const
初始化必须赋值,final
初始化可以先不赋值,调用前必须赋值
void main() {final a;print(a); // Error: 必须先分配最终变量“a”,然后才能使用它const b; // Error: 必须初始化常量变量“b”
}
- 在类中,
final
可直接修饰变量;const
需要使用static
修饰变量
class Person {final a = DateTime.now();const b = "Lee"; // Error: 只有静态字段才能声明为常量
}
函数
基本函数
String say1(String name, int age) {String msg = "$name $age";return msg;
}// 函数表达式
Function say2 = (String name, int age) {String msg = "$name $age";return msg;
};void main() {var msg1 = say1("Lee", 18);var msg2 = say2("Tom", 20);print(msg1); // Lee 18print(msg2); // Tom 20
}
可选参数函数
String say(String name, [int? age]) {String msg = "$name $age";return msg;
}void main() {print(say("Lee")); // Lee nullprint(say("Tom", 18)); // Tom 18
}
String say(String name, [int age = 18]) {String msg = "$name $age";return msg;
}void main() {var msg = say("Lee");print(msg); // Lee 18
}
命名参数函数
String say(String name, int age, {String? sex, String? desc}) {return "$name $age $sex $desc";
}void main() {print(say("Lee", 18, sex: "男")); // Lee 18 男 nullprint(say("Lee", 18)); // Lee 18 null nullprint(say("Lee", 18, desc: "不简单啊!")); // Lee 18 null 不简单啊!print(say("Lee", 18, desc: "不简单啊!", sex: "男")); // Lee 18 男 不简单啊!
}
箭头函数
注意:只允许存在一条语句
var method1 = (String name) => {print("Hi, $name!!!")};
var method2 = (String name) => print("Hi, $name!!!");void main() {method1("Lee"); // Hi, Lee!!!method2("Tom"); // Hi, Tom!!!
}
自执行函数
var msg1 = ((String name) {return "Hi, $name!!!";
}("Lee"));var msg2 = ((String name) {return "Hi, $name!!!";
})("Tom");void main() {print(msg1); // Hi, Lee!!!print(msg2); // Hi, Tom!!!
}
参数必传函数
String say1(String name, {required int age}) {String msg = "$name $age";return msg;
}String say2(String name, {int? age}) {String msg = "$name $age";return msg;
}void main() {print(say1("Lee")); // Error: 参数“age”为必填参数print(say1("Lee", age: 18)); // Lee 18print(say2("Lee")); // Lee nullprint(say2("Lee", age: 18)); // Lee 18
}
类
示例
lib/dart_app.dart
// 父类-利用抽象类实现接口
abstract class IParent {late String lastName;String say(int age);
}// 子类接口,继承自父类-利用抽象类实现接口
abstract class ISub extends IParent {late String firstName;late String _fullName;
}// 父类的实现
class Parent implements IParent { late String lastName;// 父类构造方法Parent(this.lastName);String say(int age) {print("My lastName is $lastName, $age years old!!!");return lastName;}
}// 子类的实现,继承自父类
class Sub extends Parent implements ISub { late String firstName; late String _fullName;// 子类构造方法Sub(this.firstName, String lastName) : super(lastName) {_fullName = "$firstName·${this.lastName}";}// 重写say方法String say(int age) {super.say(age);String msg = "Hi, My name is $firstName·$lastName, FullName is $_fullName!!!";return msg;}
}
bin/dart_app.dart
import 'package:dart_app/dart_app.dart';void main() {Sub lee = Sub("Prosper", "Lee");print(lee.firstName); // Prosperprint(lee.lastName); // Lee// print(lee._fullName); // Prosper·Lee 注意:同一文件下可访问; 不同文件下_fullName为私有属性,不可访问;print(lee.say(18)); // My lastName is Lee, 18 years old!!! Hi, My name is Prosper·Lee, FullName is Prosper·Lee!!!
}
静态属性和方法
class Person {static late String name;static setName(String n){name = n;}
}void main() {Person.setName("Lee");print(Person.name); // Lee
}
泛型
class CustomList<T> {List list = <T>[];List add<T>(T value) {list.add(value);return list;}
}void main() {CustomList<String> l1 = CustomList<String>();l1.add("Lee");l1.add("Tom");print(l1.list); // [Lee, Tom]CustomList l2 = CustomList();l2.add("Lee");l2.add(18);print(l2.list); // [Lee, 18]
}
多态
允许将子类类型的指针赋值给父类类型的指针, 同一个函数调用会有不同的执行效果
class Animal {void eat() {print('Animal eating...');}
}class Cat extends Animal {void eat() {print('Cat eating...');}void run() {print('Cat running...');}
}class Dog extends Animal {void eat() {print('Dog eating...');}void run() {print('Dog running...');}
}void main() {Animal animal = Animal();Animal cat = Cat();Animal dog = Dog();animal.eat(); // Animal eating...cat.run(); // Error: Animal类中没有定义run方法;cat.eat(); // Cat eating...dog.eat(); // Dog eating...
}
get
和set
class Person {String name = "Lee";get GetName {return name;}set SetName(String value) {name = value;}
}void main() {Person person = Person();print(person.name); // Leeprint(person.GetName); // Leeperson.SetName = "Tom";print(person.name); // Tomprint(person.GetName); // Tom
}
多接口继承
abstract class People {void say();
}abstract class Fish {void swim();
}class Person implements People, Fish {void say() {print("say...");}void swim() {print("swim...");}
}void main() {Person person = Person();person.say(); // say...person.swim(); // swim...
}
mixin
实现多继承(报错)
class A {printA() {print("A");}
}class B {printB() {print("B");}
}class C extends A, B {} // Error: 每个类定义最多可以有一个extends子句
使用mixin
mixin class A {printA() {print("A");}say() {print("say A");}
}mixin class B {printB() {print("B");}say() {print("say B");}
}class C with B, A {}class D extends B with A {}void main() {C c = C();c.printA(); // Ac.printB(); // Bc.say(); // say A 覆盖BD d = D();d.printA(); // Ad.printB(); // Bd.say(); // say A 覆盖B
}
常量构造函数
常量构造函数是指返回不可变对象的构造函数,内存中只保留了一个对象
// 常量构造函数
class Person {final String name;const Person(this.name);
}// 非常量构造函数
class Animal {String name;Animal(this.name);
}void main() {var a = Object();var b = Object();print(identical(a, b)); // false 检查两个引用是否指向同一个对象final p1 = const Person("Lee");final p2 = const Person("Lee");final p3 = const Person("Tom");print(identical(p1, p2)); // trueprint(identical(p1, p3)); // falsefinal a1 = Animal("Lee");final a2 = Animal("Lee");final a3 = Animal("Tom");print(identical(a1, a2)); // falseprint(identical(a1, a3)); // false
}
相关文章:

Dart(一):Dart入门
Dart入门 Dart安装创建项目安装依赖(以http为例)依赖库查询地址添加依赖编写运行示例 dart常用命令引用核心库、自定义库、第三方库数据类型Numbers (int, double)Strings (String)Booleans (bool)Lists (List)Maps (Map)Sets (Set)Null (null)Records (…...

[动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍
[动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍 文章目录 [动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍题目分析题目解析状态表示状态转移方程初始化和填表顺序 代码实现按摩师打家劫舍 总结 注:本题与…...

【EI会议投稿】第三届计算机、人工智能与控制工程国际学术会议 (CAICE 2024)
The 3rd International Conference on Computer, Artificial Intelligence and Control Engineering (CAICE 2024) 第三届计算机、人工智能与控制工程国际学术会议 第三届计算机、人工智能与控制工程国际学术会议(CAICE 2024)将于2024年1月26-28日在西…...

python 之 列表推导式
文章目录 基本结构示例 1:将列表中的元素乘以 2 添加条件判断示例 2:筛选出偶数并加倍 嵌套列表推导式示例 3:生成九九乘法表 使用条件表达式示例 4:根据条件返回不同的值 镶嵌使用详细介绍基本结构示例生成二维数组多重筛选和操作…...

【左程云算法全讲2】链表、栈、队列、递归、哈希表和有序表
系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于左程云算法课程进行的,每个知识点的修正和深入主要参考…...

SQL第三次上机作业
1.查询与王利就读同一专业学生的借书证号和姓名 SELECT Lno,Rname FROM Reader WHERE Dept(SELECT DeptFROM ReaderWHERE Rname王利)2.查询比希望出版社出版的所有图书价格都高的图书信息 SELECT * FROM Book WHERE Price>(SELECT MAX(Price)FROM BookWHERE Press希望出版…...

前端事件案例补充
目录 定时器示例 搜索框示例 省市联动 定时器示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><meta name"viewport" content"widthdevice-width, init…...

3.8 Android eBPF HelloWorld调试(二)
写在前面 我们开发eBPF程序的初衷就是再不改动内核的情况下,将内核监控数据传递给到用户态;像应用进程开发一样开发内核监控程序。 Android开机的时候eBPF程序被加载器加载到内核中,但此时它并没有被附加到内核函数上去,也就是ebpf程序并不会执行,我们可以理解为,它仅仅被…...

xss如何快速提取cookies
<script>alert(111)</script> <img srcx onerroralert(document.cookie)>测试一下baidu的xss <script>alert(111)</script><img srcx οnerrοralert(document.cookie)>...

在 ASP.NET C# 中用Aspose.PDF将 PDF 页面转换为 JPG 图像
PDF 是一种通用格式,通常用于打印和共享文档。 (一)C# PDF to JPG Converter API - 免费下载 Aspose.PDF for .NET是一个强大的 PDF 操作 API,可让您在 .NET 应用程序中创建和处理 PDF 文件。此外,它还允许您将 PDF 文…...

Docker Compose安装milvus向量数据库单机版-milvus基本操作
目录 安装Ubuntu 22.04 LTS在power shell启动milvus容器安装docker desktop下载yaml文件启动milvus容器Milvus管理软件Attu python连接milvus配置下载wget示例导入必要的模块和类与Milvus数据库建立连接创建名为"hello_milvus"的Milvus数据表插入数据创建索引基于向量…...

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队
引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…...

ES6~ES13新特性(二)
文章目录 一、ES71.Array Includes2.指数exponentiation运算符 二、ES81.Object values2.Object entries3.String Padding4.Trailing Commas5.Object Descriptors 三、ES9四、ES101.flat flatMap2.Object fromEntries3.trimStart、trimEnd4.其他知识点 五、ES111.BigInt2.Nulli…...

soildwork2022怎么样添加螺纹孔?
1.退出草图模式,点击需要添加螺纹孔的物体面,选中“特征”中的“异形孔向导” 2.选中“孔类型”为“直螺纹孔”,“标准”,“类型”,“孔规格”终止条件等。 3.设置完之后选择“位置” 4.鼠标左键在物体面上点一下&…...

【t5 pytorch版源码学习】t5-pegasus-pytorch源码学习
0. 项目来源 中文生成式预训练模型,以mT5为基础架构和初始权重,通过类似PEGASUS的方式进行预训练。 bert4keras版:t5-pegasus pytorch版:t5-pegasus-pytorch 本次主要学习pytorch版的代码解读。 项目结构: train…...

【springboot】spring的Aop结合Redis实现对短信接口的限流
前言 场景: 为了限制短信验证码接口的访问次数,防止被刷,结合Aop和redis根据用户ip对用户限流 1.准备工作 首先我们创建一个 Spring Boot 工程,引入 Web 和 Redis 依赖,同时考虑到接口限流一般是通过注解来标记,而注解…...

【MedusaSTears】怎么禁用edge浏览器截图功能?
版本 Microsoft Edge 版本 119.0.2151.44 (正式版本) (64 位) Ctrl Shift S 竟然是浏览器的截屏? 特么的啥时候多了这么个快捷键? 然后还没办法禁用,真TMD傻哔 edge://settings/accessibility解决方式: 参考资料: 怎么禁用edge浏览器截图功能? 您好&#x…...

【计算机网络】(谢希仁第八版)第三章课后习题答案
第三章 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别? “电路接通了”与”数据链路接通了”的区别何在? 答:数据链路与链路的区别在于数据链路出链路外,还必须有一些必要的规程来控制数据的传输,因此,数据链路比链路多了…...

批量异步任务处理
当我们在项目中遇到很多业务同时处理,如果是串行肯定是影响性能的,这时候就需要异步执行了,说道异步肯定就有很多方案了 方案一: 比如使用spring的异步注解,比如下面的代码,每个方法上面都是异步注解,当时…...

宜昌市公安局、点军区政府与中科升哲达成战略合作,共建视频图像联合创新实验室
11月3日,宜昌视频图像联合创新战略合作签约仪式在宜昌市公安局举行。 宜昌市副市长、市公安局党委书记、局长上官福令,市公安局党委副书记、副局长龚海波,宜昌市点军区委书记万红,点军区委副书记、区长黄文云,升哲科技…...

java版小程序商城免费搭建-直播商城平台规划及常见的营销模式有哪些?电商源码/小程序/三级分销
1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…...

Linux下yum源配置实战
一、Linux下软件包的管理 1、软件安装方式 ① RPM包管理(需要单独解决依赖问题) ② YUM包管理(需要有网络及YUM仓库的支持,会自动从互联网下载软件,自动解决依赖) ③ 源码安装(安装过程比较…...

JSONP 跨域访问(2), JSONP劫持
JSONP 跨域访问(2), JSONP劫持 一, 利用 XSS 漏洞执行jsonp 1. 利用过程 发现有jsonp的请求: <script type"text/javascript" src"http://192.168.112.200/security/jsonp.php?callbackjsonpCallback"></script>向xss漏洞的位置注入代码…...

【java】实现自定义注解校验——方法一
自定义注解校验的实现步骤: 1.创建注解类,编写校验注解,即类似NotEmpty注解 2.编写自定义校验的逻辑实体类,编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口,让注解用来校验) 3.开启使用自定义注解进…...

JavaScript基础入门03
目录 1.条件语句 1.1if 语句 1.1.1基本语法格式 1.1.2练习案例 1.2三元表达式 1.3switch 2.循环语句 2.1while 循环 2.2continue 2.3break 2.4for 循环 3.数组 3.1创建数组 3.2获取数组元素 3.3新增数组元素 3.3.1. 通过修改 length 新增 3.3.2. 通过下标新增 …...

P1903 [国家集训队] 数颜色 / 维护队列
带修改的莫队 带修改的莫队就是在基础莫队的基础上增加了一维属性,之前只需要维护l,r现在还需要维护一下时间t,排序还是先按照左端点块儿号排序,然后右端点块儿号排序,最后按时间排序。其它的都是差不多的。 #include…...

uniapp 请求接口的方式
在UniApp中,我们可以使用多种方式来发送请求接口。以下是几种常用的方式: 1、使用unmireuest方法:uni.reuest是uniApp提供的原生AP,可以发送HTTP请,我们可以通过传递一个图对象来设置请求的参数,RL、请求方法GET/POST…...

怎么查看当前vue项目,要求的node.js版本
要查看当前 Vue 项目所需的 Node.js 版本,你可以查看项目根目录下的 package.json 文件中的 engines 属性。该属性定义了项目所需的 Node.js 版本范围。 例如,以下是一个示例 package.json 文件: {"name": "my-vue-project&…...

QT5自适应
//集成屏幕自适应功能 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); DEVMODE NewDevMode; //获取屏幕设置中的分辨率 EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, &NewDevMo…...

蓝桥杯官网练习题(日期问题)
题目描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采…...