任务一:

ArrayList、Vector 和 LinkedList 都实现了 List 接口,对它们分别进行如下操作后比 较它们的不同,然后形成初步耗时报告(三种不同 List 的耗时):

追加元素(追加一万次);

添加元素到任意位置(添加一万次);

分别使用 for 循环、forEach 循环、迭代器进行遍历;

删除任意位置的元素(删除一万次)。

public class ListDemo {

    //add 追加
public void addArrayList(){
//追加元素一万次耗时
ArrayList<Integer> a1 = new ArrayList<Integer>();
//开始的时间
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
a1.add(i);
//在同一位置追加
// a1.add(1);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("ArrayList追加一万次记录耗时:"+(endTime-startTime)+"毫秒");
} public void addVector(){
//Vector追加一万次耗时
Vector<Integer> v1 = new Vector<>();
//开始的时间
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
v1.add(i);
//在同一位置追加
// v1.add(1);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("Vector追加一万次记录耗时:"+(endTime-startTime)+"毫秒");
} public void addLinkedList(){
//LinkedList追加一万次记录耗时
LinkedList<Integer> link1 = new LinkedList<>();
//开始的时间
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
link1.add(i);
//在同一位置追加
// link1.add(1);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("LinkedList追加一万次记录耗时:"+(endTime-startTime)+"毫秒");
} //traverse 遍历
public void traverseArrayList(){
System.out.println("ArrayList的三种遍历方式:");
//创建ArrayList集合
ArrayList<String> a1 = new ArrayList<>();
//添加元素
a1.add("从前有座山");
a1.add("山上有座庙");
a1.add("庙里有个小和尚在敲代码");
//for 循环遍历
System.out.println("for循环遍历:");
for (int i = 0; i < a1.size(); i++) {
System.out.println(a1.get(i));
} //foreach 遍历
System.out.println("foreach 遍历:");
for (String s:a1) {
System.out.println(s);
}
//iterator(迭代器遍历)
System.out.println("iterator 遍历:");
Iterator<String> iterator = a1.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
} public void traverseVector(){
System.out.println("Vector的三种遍历方式:");
//创建Vector集合
Vector<String> v1 = new Vector<>();
//添加元素
v1.add("从前有座山");
v1.add("山上有座庙");
v1.add("庙里有个小和尚在敲代码");
//for 循环遍历
System.out.println("for循环遍历:");
for (int i = 0; i < v1.size(); i++) {
System.out.println(v1.get(i));
} //foreach 遍历
System.out.println("foreach 遍历:");
for (String s:v1) {
System.out.println(s);
}
//iterator(迭代器遍历)
System.out.println("iterator 遍历:");
Iterator<String> iterator = v1.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
} public void traverseLinkedList(){
System.out.println("LinkedList的三种遍历方式:");
//创建LinkedList集合
LinkedList<String> link = new LinkedList<>();
//添加元素
link.add("从前有座山");
link.add("山上有座庙");
link.add("庙里有个小和尚在敲代码");
//for 循环遍历
System.out.println("for循环遍历:");
for (int i = 0; i < link.size(); i++) {
System.out.println(link.get(i));
} //foreach 遍历
System.out.println("foreach 遍历:");
for (String s:link) {
System.out.println(s);
}
//iterator(迭代器遍历)
System.out.println("iterator 遍历:");
Iterator<String> iterator = link.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
} //remove 删除
public void removeArrayList(){
//创建集合
ArrayList<Integer> a1 = new ArrayList<>();
//添加一万个记录
for (int i = 0; i < 10000; i++) {
a1.add(i);
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除操作
for (int i = 0; i < a1.size(); i++) {
a1.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("ArrayList删除一万记录耗时:"+(endTime -startTime)+"毫秒"); } public void removeVector(){
//创建集合
Vector<Integer> v1 = new Vector<>();
//添加一万个记录
for (int i = 0; i < 10000; i++) {
v1.add(i);
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除操作
for (int i = 0; i < v1.size(); i++) {
v1.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("Vector删除一万记录耗时:"+(endTime -startTime)+"毫秒");
} public void removeLinkedList(){
//创建集合
LinkedList<Integer> link = new LinkedList<>();
//添加一万个记录
for (int i = 0; i < 10000; i++) {
link.add(i);
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除操作
for (int i = 0; i < link.size(); i++) {
link.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("LinkedList删除一万记录耗时:"+(endTime -startTime)+"毫秒");
} @Test
public void test(){
addArrayList();
addVector();
addLinkedList();
traverseArrayList();
traverseVector();
traverseLinkedList();
removeArrayList();
removeVector();
removeLinkedList();
}
}

任务二:

HashSet 和 TreeSet 都实现了 Set 接口,对它们分别进行如下操作后比较它们的不 同,然后形成初步耗时报告(两种不同 Set 的耗时):

添加元素(添加一万次);

分别使用 forEach 循环、迭代器进行遍历;

删除任意位置的元素(删除一万次)

public class SetDemo {

    //追加
public void addHashSet(){
//创建 HashSet集合
HashSet<Integer> hashset = new HashSet<>();
//开始的时间
long startTime = System.currentTimeMillis();
//追加元素
for (int i = 0; i < 10000; i++) {
hashset.add(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("HashSet追加一万条记录耗时:"+(endTime-startTime)+"毫秒");
} public void addTreeSet(){
//创建 TreeSet集合
TreeSet<Integer> treeSet = new TreeSet<>();
//开始的时间
long startTime = System.currentTimeMillis();
//追加元素
for (int i = 0; i < 10000; i++) {
treeSet.add(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("TreeSett追加一万条记录耗时:"+(endTime-startTime)+"毫秒");
} //遍历 traverse
public void traverseHashSet(){
System.out.println("HashSet遍历方式:");
//创建集合
HashSet<String> hashSet = new HashSet<>();
//添加元素
hashSet.add("从前有座山");
hashSet.add("山上有座庙");
hashSet.add("庙有个小和尚在敲代码"); //foreach 遍历
System.out.println("foreach遍历:");
for (String s:hashSet) {
System.out.println(s.toString());
} //iterator 遍历
System.out.println("iterator遍历:");
Iterator<String> iterator = hashSet.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
} public void traverseTreeSet(){
System.out.println("TreeSett遍历方式:");
//创建集合
TreeSet<String> treeSet = new TreeSet<>();
//添加元素
treeSet.add("从前有座山");
treeSet.add("山上有座庙");
treeSet.add("庙有个小和尚在敲代码"); //foreach 遍历
System.out.println("foreach遍历:");
for (String s:treeSet) {
System.out.println(s.toString());
} //iterator 遍历
System.out.println("iterator遍历:");
Iterator<String> iterator = treeSet.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
} //删除 remove
public void removeHashSet(){
//创建集合
HashSet<Integer> hashSet = new HashSet<>();
//添加元素
for (int i = 0; i < 10000; i++) {
hashSet.add(i);
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除元素
for (int i = 0; i < hashSet.size(); i++) {
hashSet.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("删除一万条元素HashSet耗时为:"+(endTime-startTime)+"毫秒");
} public void removeTreeSet(){
//创建集合
TreeSet<Integer> treeSet = new TreeSet<>();
//添加元素
for (int i = 0; i < 10000; i++) {
treeSet.add(i);
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除元素
for (int i = 0; i < treeSet.size(); i++) {
treeSet.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("删除一万条元素TreeSet耗时为:"+(endTime-startTime)+"毫秒");
}
@Test
public void test(){
addHashSet();
addTreeSet();
traverseHashSet();
traverseTreeSet();
removeHashSet();
removeTreeSet();
}
}

任务三:

HashMap、TreeMap、LinkedHashMap 和 Hashtable 都实现了 Map 接口,对它 们分别进行如下操作后比较它们的不同,然后形成初步耗时报告(两种不同 Map 的耗 时):

追加键值对(追加一万次);

替换键值对(替换一万次);

分别使用 entrySet、keySet/values、迭代器进行遍历;

删除键值对(删除一万次)

public class MapDemo {

    //追加
public void addHashMap(){
//创建集合
HashMap<Integer, String> hashMap = new HashMap<>();
//开始的时间
long startTime = System.currentTimeMillis();
//追加记录
for (int i = 0; i < 10000; i++) {
hashMap.put(i,"hello,word");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("HashMap追加一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} public void addTreeMap(){
//创建集合
TreeMap<Integer, String> treeMap = new TreeMap<>();
//开始的时间
long startTime = System.currentTimeMillis();
//追加记录
for (int i = 0; i < 10000; i++) {
treeMap.put(i,"hello,word");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("TreeMap追加一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} public void addLinkedHashMap(){
//创建集合
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
//开始的时间
long startTime = System.currentTimeMillis();
//追加记录
for (int i = 0; i < 10000; i++) {
linkedHashMap.put(i,"hello,word");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("LinkedHashMap追加一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} public void addHashtable(){
//创建集合
Hashtable<Integer, String> hashtable = new Hashtable<>();
//开始的时间
long startTime = System.currentTimeMillis();
//追加记录
for (int i = 0; i < 10000; i++) {
hashtable.put(i,"hello,word");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("Hashtable追加一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} //replace 替换
public void replaceHashMap(){
//创建集合
HashMap<Integer, String> hashMap = new HashMap<>();
//追加元素
for (int i = 0; i < 10000; i++) {
hashMap.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//替换元素
for (int i = 0; i < hashMap.size(); i++) {
hashMap.replace(i,"你好,世界");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("HashMap替换一万次元素耗时为:"+(endTime-startTime)+"毫秒");
} public void replaceTreeMap(){
//创建集合
TreeMap<Integer, String> treeMap = new TreeMap<>();
//追加元素
for (int i = 0; i < 10000; i++) {
treeMap.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//替换元素
for (int i = 0; i < treeMap.size(); i++) {
treeMap.replace(i,"你好,世界");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("TreeMap替换一万次元素耗时为:"+(endTime-startTime)+"毫秒");
} public void replaceLinkedHashMap(){
//创建集合
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
//追加元素
for (int i = 0; i < 10000; i++) {
linkedHashMap.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//替换元素
for (int i = 0; i < linkedHashMap.size(); i++) {
linkedHashMap.replace(i,"你好,世界");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("LinkedHashMap替换一万次元素耗时为:"+(endTime-startTime)+"毫秒");
} public void replaceHashtable(){
//创建集合
Hashtable<Integer, String> hashtable = new Hashtable<>();
//追加元素
for (int i = 0; i < 10000; i++) {
hashtable.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//替换元素
for (int i = 0; i < hashtable.size(); i++) {
hashtable.replace(i,"你好,世界");
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("Hashtable替换一万次元素耗时为:"+(endTime-startTime)+"毫秒");
} //遍历
public void traverseHashMap() {
//创建集合
HashMap<Integer, String> hashMap = new HashMap<>();
//添加元素
hashMap.put(1, "赵云");
hashMap.put(2, "张飞");
hashMap.put(3, "马超"); System.out.println("HashMap遍历方式:");
//entrySet 迭代器遍历
System.out.println("entrySet 迭代器遍历:");
Iterator<Map.Entry<Integer, String>> iterator01 = hashMap.entrySet().iterator();
while (iterator01.hasNext()){
Map.Entry<Integer, String> entry = iterator01.next();
System.out.print("key:"+entry.getKey());
System.out.println(" value:"+entry.getValue());
} //keySet 迭代器遍历
System.out.println("keySet 迭代器遍历");
Iterator<Integer> iterator02 = hashMap.keySet().iterator();
while (iterator02.hasNext()){
Integer key = iterator02.next();
System.out.println("key:"+key+" value:"+hashMap.get(key));
}
} public void traverseTreeMap() {
//创建集合
TreeMap<Integer, String> treeMap = new TreeMap<>();
//添加元素
treeMap.put(1, "赵云");
treeMap.put(2, "张飞");
treeMap.put(3, "马超"); System.out.println("treeMap遍历方式:");
//entrySet 迭代器遍历
System.out.println("entrySet 迭代器遍历:");
Iterator<Map.Entry<Integer, String>> iterator01 = treeMap.entrySet().iterator();
while (iterator01.hasNext()){
Map.Entry<Integer, String> entry = iterator01.next();
System.out.print("key:"+entry.getKey());
System.out.println(" value:"+entry.getValue());
} //keySet 迭代器遍历
System.out.println("keySet 迭代器遍历");
Iterator<Integer> iterator02 = treeMap.keySet().iterator();
while (iterator02.hasNext()){
Integer key = iterator02.next();
System.out.println("key:"+key+" value:"+treeMap.get(key));
}
} public void traverseLinkedHashMap() {
//创建集合
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
//添加元素
linkedHashMap.put(1, "赵云");
linkedHashMap.put(2, "张飞");
linkedHashMap.put(3, "马超"); System.out.println("linkedHashMap遍历方式:");
//entrySet 迭代器遍历
System.out.println("entrySet 迭代器遍历:");
Iterator<Map.Entry<Integer, String>> iterator01 = linkedHashMap.entrySet().iterator();
while (iterator01.hasNext()){
Map.Entry<Integer, String> entry = iterator01.next();
System.out.print("key:"+entry.getKey());
System.out.println(" value:"+entry.getValue());
} //keySet 迭代器遍历
System.out.println("keySet 迭代器遍历");
Iterator<Integer> iterator02 = linkedHashMap.keySet().iterator();
while (iterator02.hasNext()){
Integer key = iterator02.next();
System.out.println("key:"+key+" value:"+linkedHashMap.get(key));
}
} public void traverseHashtable() {
//创建集合
Hashtable<Integer, String> hashtable = new Hashtable<>();
//添加元素
hashtable.put(1, "赵云");
hashtable.put(2, "张飞");
hashtable.put(3, "马超"); System.out.println("hashtable遍历方式:");
//entrySet 迭代器遍历
System.out.println("entrySet 迭代器遍历:");
Iterator<Map.Entry<Integer, String>> iterator01 = hashtable.entrySet().iterator();
while (iterator01.hasNext()){
Map.Entry<Integer, String> entry = iterator01.next();
System.out.print("key:"+entry.getKey());
System.out.println(" value:"+entry.getValue());
} //keySet 迭代器遍历
System.out.println("keySet 迭代器遍历");
Iterator<Integer> iterator02 = hashtable.keySet().iterator();
while (iterator02.hasNext()){
Integer key = iterator02.next();
System.out.println("key:"+key+" value:"+hashtable.get(key));
}
} //remove 删除
public void removeHashMap(){
//创建集合
HashMap<Integer, String> hashMap = new HashMap<>();
//添加元素
for (int i = 0; i < 10000; i++) {
hashMap.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除元素
for (int i = 0; i < hashMap.size(); i++) {
hashMap.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("hashMap删除一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} public void removeTreeMap(){
//创建集合
TreeMap<Integer, String> treeMap = new TreeMap<>();
//添加元素
for (int i = 0; i < 10000; i++) {
treeMap.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除元素
for (int i = 0; i < treeMap.size(); i++) {
treeMap.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("treeMap删除一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} public void removeLinkedHashMap(){
//创建集合
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
//添加元素
for (int i = 0; i < 10000; i++) {
linkedHashMap.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除元素
for (int i = 0; i < linkedHashMap.size(); i++) {
linkedHashMap.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("linkedHashMap删除一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
} public void removeHashtable(){
//创建集合
Hashtable<Integer, String> hashtable = new Hashtable<>();
//添加元素
for (int i = 0; i < 10000; i++) {
hashtable.put(i,"hello,word");
}
//开始的时间
long startTime = System.currentTimeMillis();
//删除元素
for (int i = 0; i < hashtable.size(); i++) {
hashtable.remove(i);
}
//结束的时间
long endTime = System.currentTimeMillis();
System.out.println("hashtable删除一万条键值对耗时为:"+(endTime-startTime)+"毫秒");
}
@Test
public void test(){
addHashMap();
addTreeMap();
addLinkedHashMap();
addHashtable();
replaceHashMap();
replaceTreeMap();
replaceLinkedHashMap();
replaceHashtable();
traverseHashMap();
traverseTreeMap();
traverseLinkedHashMap();
traverseHashtable();
removeHashMap();
removeTreeMap();
removeLinkedHashMap();
removeHashtable();
}
}

三个小任务掌握List、Set、Map的更多相关文章

  1. 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27705613 容器 3.0版本号之前Cocos2d- ...

  2. JAVA:三种集合LIST、SET、MAP

    1. 集合框架介绍 我 们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,数组可以用来存储并处理大量类型相同的数 据,但是会发现数组在应用中的限制:数组长 ...

  3. 一个div,包含三个小的div,平均分布的样式

    从11月份开始,自学前端开发,写静态页面中,经常用到一个大的div下包含三个小的div,平均分布div大小样式,写过多次,也多次忘记,每次都要现找资料,不想之后,在这么麻烦,索性今天自己记录一下,方便 ...

  4. 《Mysql 公司职员学习篇》 第三章 小A的疑问

    第三章 小A的疑问  ---- 数据类型和自增列 小A拿着鸡腿,回到了房间里面,咬了一嘴油,说:"我有2个疑问,在Excell里面,像列PetAge(宠物年龄)这样的数字,我一般会设置成数值 ...

  5. arduino新入手体验:三个小实验

    新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...

  6. 【LibreOJ】#6392. 「THUPC2018」密码学第三次小作业 / Rsa 扩展欧几里得算法

    [题目]#6392. 「THUPC2018」密码学第三次小作业 / Rsa [题意]T次询问,给定正整数c1,c2,e1,e2,N,求正整数m满足: \(c_1=m^{e_1} \ \ mod \ \ ...

  7. 关于微信小程序下拉出现三个小点

    包子这天看美团外卖的小程序,再瞅瞅自己的背景色,发现,美团下拉的时候有三个小点,但是我自己的校车徐下拉的时候没有三个小点,很是郁闷,于是各种的找各种的找,发现,这三个小点是微信小程序自带的,你只需要设 ...

  8. mysql 使用的三个小技巧

    mysql 使用的三个小技巧 快速阅读 Mysql查询工具中如何查询多条语名,Mysql中如何设置变量,Mysql中如何查特定字段,后面再加* Mysql查询工具中如何查询多条语名 默认myslq只能 ...

  9. 大div中,三个小div水平居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. HTML横向滚动条和文本超出显示三个小圆点

    我们这次要说的就是:现在有很多的公司以及很多的app软件经常使用的两个方法横向滚动条和文本超出三个小圆点 横向滚动条:顾名思义嘛,就是能够一块内容可以横着滑动. 文本超出三个小圆点:文本超出就是当文本 ...

随机推荐

  1. Logstash: 启动监控及集中管理-总结

    Logstash: 启动监控 配置文件:logstash.yml xpack.monitoring.enabled: true xpack.monitoring.elasticsearch.usern ...

  2. InnoDB关于事务、锁、MVCC专题

    目录 并发所带来的的问题 脏写 脏读 不可重复读 幻读 事务 事务的特性 事务的四种隔离级别 锁 为什么要加锁 InnoDB的七种锁 不同事务RR和RC下加锁的规则 MVCC mvcc进一步提高并发 ...

  3. 洛谷P1714 切蛋糕(单调队列)

    先放代码...... 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=5e5+10,M=0x3f3f3f3f; ...

  4. C言语语法总结(随时更新)

    一.gcc1. gcc xxx.c -o xxx #把原代码编译成可执行文件xxx2. gcc -c xxx.c #编译: 把原代码编译xxx.o后辍的目标文件3. gcc xxx.o -o xxx ...

  5. Mysql 用户远程登录数据库

    其实这个技术不难.我只是站在巨人的肩膀上.梳理一下我遇见的问题. 方法有两种.修改当前用户的host 为 %.或者直接授权(推荐) 直接授权: # mysql -u root -proot  // 登 ...

  6. 最近无聊搭建一个齐博X1的下载页面

    https://layui.wanxiangsucai.com/ 用layui官方镜像站的模版 改了个齐博X1的下载页面 https://x1.wanxiangsucai.com/ 哈哈哈!!! 还有 ...

  7. P 算法与 K 算法

    P 算法与 K 算法 作者:Grey 原文地址: 博客园:P 算法与 K 算法 CSDN:P 算法与 K 算法 说明 P 算法和 K 算法主要用来解决最小生成树问题,即:不破坏连通性删掉某些边,使得整 ...

  8. 【Odoo】Odoo16-性能优化提升

    上海序说科技,专注于基于Odoo项目实施,实现企业数智化,助力企业成长. 老韩头的开发日常,博客园分享(2022年前博文) 10月12日,Odoo16版本正式发布,本文将就Odoo官方在性能方面做的优 ...

  9. LabVIEW开放神经网络交互工具包【ONNX】,大幅降低人工智能开发门槛,实现飞速推理

    前言 前面给大家介绍了自己开发的LabVIEW AI视觉工具包,后来发现有一些onnx模型无法使用opencv dnn加载,且速度也偏慢,所以就有了今天的onnx工具包,如果你想要加载更多模型,追求更 ...

  10. 驱动开发:内核监控Register注册表回调

    在笔者前一篇文章<驱动开发:内核枚举Registry注册表回调>中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监 ...