本周知识清单:
- Java集合
- 线程
- vue环境搭建和绑定属性、class、style
1.Java集合(此块参考美团实习| 周记(二))
这块知识很多,但有些不是很常用,限于篇幅,下面只介绍常用的几种(参考疯狂Java讲义)。
a.Java集合是什么?
java集合可用于存储数量不等的对象,并可以实现常用的数据结构,如栈、队列等等。除此之外,Java集合还可用于保存具有映射关系的关联数组。
b.Java集合有几个体系?
大致分为四个体系,Set、List、Map、Queue。
- Set:代表无序、不可重复的集合
- List:代表有序、可重复的集合
- Map:代表具有映射关系的集合
- Queue:代表一种队列集合
白话:Set跟我们数学中学的集合定义一样,List跟它相反,Map就是存储的键值对,两个数据绑定在一块。Queue用的较少,有点类似于List。
下面粗略地介绍各个常见类:
(1)Collection接口:
- 是List、Set和Queue接口的父接口,该接口中定义的方法可操作以上三种集合。
- 常用方法:添加对象
add()
、删除对象remove()
、清空容器clear()
、判断容器是否为空isEmpty()
等。
(2)List
- ArrayList:
- 底层结构是数组,可用索引实现快速查找
- 非线程安全
- 动态数组,默认初始容量为10,每次扩容为原1.5倍。
- LinkList:
- 底层是链表,增删速度快
- 非线程安全
- 是一个双向循环链表
- 包含一个非常重要的内部类Entry,是双向链表节点所对应的数据结构,其包括的属性有『当前节点所包含的值』、『上一个节点』、『下一个节点』.
(3)Set:
-
HashSet:
-
不能保证元素的排列顺序
-
使用Hash算法来存储集合中的元素,有良好的存取和查找性能
-
非同步,多线程并发要注意线程同问题
-
集合元素值可为null
-
通过
equal()
判断两个元素是否相等,并两个元素的hashCode()
返回值也相等 -
TreeSet:
-
是SortedSet接口的实现类,根据元素实际值的大小进行排序
-
采用红黑树的数据结构来存储集合元素
-
非同步
-
支持两种排序方法:自然排序(默认情况)和定制排序。前者通过实现Comparable接口中的
compareTo()
比较两个元素之间大小关系,然后按升序排列;后者通过实现Comparator接口中的compare()
比较两个元素之间大小关系,实现定制排列。
(4)Map(只提HashMap和HashTable):
-
-
HashMap:
- 基于AbstractMap类,实现了Map、Cloneable(能被克隆)、Serializable(支持序列化)接口
- 无序
- 非线程安全
- 允许存在一个为null的key和任意个为null的value
- 采用链表散列的数据结构,即数组和链表的结合
- 初始容量为16,填充因子默认为0.75,扩容时是当前容量翻倍,即2capacity
-
HashTable:
- 基于Map接口和Dictionary类
- 无序
- 线程安全,开销比HashMap大,如果多线程访问一个Map对象,使用Hashtable更好
- 不允许使用null作为key和value
- 底层基于哈希表结构
- 初始容量为11,填充因子默认为0.75,扩容时是容量翻倍+1,即2capacity+1。
2.线程
学过操作系统都知道,关于线程和进程的定义,线程是系统调度的基本单位,进程是系统分配资源的基本单位。在Java中,经常用到多线程编程,是因为线程较进程更加灵活多个线程可以共享一个进程的资源空间,也更加的方便线程通信。以下部分总结:
-
线程创建和启动
- 继承Thread类创建线程类,重写run方法,调用start方法启动
- 实现runnable接口创建线程类,重写run方法,调用start方法启动
- 使用Callable和Future创建(暂未遇到)
ps:这里请注意,启动线程一定是start方法,如果用run方法启动,则多线程就成了单线程,run方法就成了普通方法。
-
线程的生命周期
- 新建、就绪、运行、阻塞和死亡
- 新建、就绪、运行、阻塞和死亡
-
线程死亡、join线程、后台线程、线程睡眠、改变线程优先级
-
线程同步
由于线程具有随机性,所以需要同步。关键字:synchronized。代码示例:
synchronized(obj){
....
//此处的代码就是同步代码块
}
3.Vue的环境搭建和绑定属性、class、style
-
Vue的环境搭建
首先vue的环境搭建是很简单的,百度“vue环境搭建”一大堆,但是比较遗憾的是没有补充简洁的方式去操作vue,我是看视频才知道还有vscode以及插件等等。视频链接:学 Vue.js 看这个就够了,Vue.js文档。列举一下有用的东西:- 工具:vscode
- 浏览器插件:reveal in exploer、view in brower
- 建立项目的简单方式,在视频中有教。你需要下载一个vue.js文件。
-
Vue入门知识:
- v-for:列表渲染,可以把数据中的一个数组对应为一组元素,需要以 item in items 形式的特殊语法, items 是源数据数组并且 item 是数组元素迭代的别名。
<template>
<div id="app">
<h2>{{msg}}</h2>
<br>
这是根组件
<br>
<h3>{{obj.name}}</h3>
<br>
<hr>
<br/>
<ul>
<li v-for="item in list">
{{item}}
</li>
</ul>
<br>
<hr>
<br/>
<ul>
<li v-for="item in list1">
{{item.title}}
</li>
</ul>
<br>
<hr>
<br/>
<ul>
<li v-for="item in list2">
{{item.cate}}
<ol>
<li v-for="news in item.list">
{{news.title}}
</li>
</ol>
</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
msg:'你好vue',
obj:{
name:"张三"
},
list:['111','222','333'],
list1:[
{'title':'11111'},
{'title':'222'},
{'title':'333333'},
{'title':'44444'},
],
list2:[
{
"cate":"国内新闻",
list:[
{'title':'11111'},
{'title':'国内新闻2222'}
]
},
{
"cate":"国际新闻",
list:[
{'title':'11111'},
{'title':'国内新闻2222'}
]
}
]
}
}
}
</script>
-
{{}}:双花括号,声明式渲染,Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统,其实是加载数据的。
-
v-bind:Class 与 Style 绑定。V-bind详细使用
来到这里两周了,上周因为返校,没有时间写博客总结,总结也不全面,后面会再补充。最近心情有所缓和,与师哥们交谈中学习到很多东西。现在觉得,无论在哪个公司,都会有这样那样的问题,所以我现在能做的和可做的,只有放平心态,先保持坚定,去学习一切能学习的东西。