第二十六天:多线程
计算机科学就是有关计算机的,正如天文学就是有关望远镜的。
【狂神说Java】多线程详解_哔哩哔哩_bilibili
学习内容
线程简介
多任务
很多看起来同时在进行的事情,比如一边看电视一边玩手机,其实是两件事情切换的快
进程、线程、多线程
一个进程可以有多个线程,如视频中同时听到声音、看到图像
程序
进程
线程
指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念
执行程序的一次执行过程,动态的概念,是系统资源分配的单位
一个进程中可以包含若干个线程,一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的单位
注意:很多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以有同时执行的错觉
核心概念
线程就是独立的执行路径
在程序运行时,及时没有自己创建线程,后台也会有多个线程,如主线程,gc线程
main()称之为主线程,为系统的入口,用于执行整个程序
在一个进程中,如果开 ...
第二十五天:IO流
生活本就沉闷,但跑起来有风
狂神未更新,转动力节点(bilibili.com)
学习内容
IO流的概述
用于读写文件中的数据(可以读写文件,或网络中的数据)
I: input
O: output
IO流的分类
按照流向(以内存作为参照):
输出流:程序->文件
输入流:文件->程序
按照操作类型(数据读写方式):
字节流:可以操作所有类型的文件(这种流一次读写一个字节byte,等同于一次读写8个二进制。可以读写文本、图片、声音、视频等文件)
字符流:只能操作纯文本文件(这种流按照字节读取数据,一次读写一个字符,这种流是为了操作文本文件存在的)
IO流的体系结构
IO流类的命名规则
注意:只要类名以Stream结尾的都是字节流,以”Read/Write“结尾的都是字符流
四大家族的首领都是抽象类(java.io.InputStream,java.io.Output,java.io.Reader,java.io.Write)
所有流都实现了java.io.Closeable接口,都是可关闭的,都有clos ...
第二十四天:HashSet、TreeSet、自平衡二叉树
知识最大的敌人不是无知,而是错觉。
狂神未更新,转动力节点(bilibili.com)
学习内容
HashSet集合
特点:无序,不可重复
12345678910111213141516171819202122232425262728293031package com.joker_yue.javalearn.DataStruct;import java.util.HashSet;import java.util.Set;public class HashSetTest { public static void main(String[] args) { Set<String> str = new HashSet<>(); //添加元素 str.add("hello3"); str.add("hello4"); str.add("hello1"); ...
第二十三天:泛型、自动推断机制、自定义泛型
“基础决定你未来的高度”
狂神未更新,转动力节点(bilibili.com)
学习内容
泛型(相当于C++模板类,可以参照学习)
不使用泛型之前(Java5),分析程序存在缺点
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package com.joker_yue.javalearn.DataStruct;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class GenericTest { public static void main(String[] args) {// 不使用泛型之前,分析程序存在缺点 List myList = new ArrayList();// 准备对象 Cat c ...
第二十二天:集合
“简单之至则为雅致。”
狂神未更新,转动力节点(bilibili.com)
学习内容
什么是集合,有什么用?
数组其实就是一个集合,集合实际上就是一个容器。可以用来容纳其他类型的数据
集合在实际开发中使用较多
集合是一个容器,是一个载体,可以一次承载多个对象。在实际开发中,假设连接数据库,数据库中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后10个Java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来
集合中储存什么
集合不能直接储存基本数据类型,另外集合也不能直接存储Java对象,集合当中存储的都是Java对象的内存地址(或者说集合中存储的是引用)
不过有这样一条代码
1list.add(100);
看上去是存了一个int类型数据,实际上因为Java的自动装箱,会将100自动转换成Integer对象然后储存其引用
注意:集合在Java中本身是一个容器,是一个对象。集合任何时候存储的都是引用
在Java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储 ...
第十八天:品优购项目
标准总是过时的,这让它们成为了标准。
学习目标
能够独立自主完成品优购首页制作
能够独立自主完成品优购列表页制作
能够独立自主完成品优购注册页制作
能够把品优购网站部署上线
网站制作流程
品优购项目规划
项目整体介绍
项目名称:品优购
项目描述:品优购是一个电商网页,我们要完成PC端首页、列表页、注册页的制作
学习目的
电商类网站比较综合,里面需要大量的布局技术,包括布局方式、常见效果以及周边技术
品优购项目能复习、总结当前学习的布局技术
写完品优购项目能对实际开发中制作PC端页面流程有一个整体的感知
为后端学习移动端项目做铺垫
开发工具
VSCode Photoshop Chrome
技术栈
利用HTML+CSS3手动布局,可以大量使用H5新增标签和样式
采取结构与样式相分离,模块化开发
良好的代码规范有利于团队更好的开发协作,提高代码质量。因此品优购项目中,需要遵守以下规范:
12345678910111213141516171819202122232425262728293031323 ...
第十七天:CSS初始化。H5C3新增内容
'任意’键在哪里?
学习目标
CCS初始化
H5C3新增
CSS初始化
不同浏览器对有些标签的默认值是不同的,为了能够解决不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS初始化
简单理解:CSS初始化是指重设浏览器的样式(CSS reset)
每个网页都必须首先进行CSS初始化
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121* { /* 边距清零 */ margin: 0; padding: 0}em,i ...
第十六天:CSS高级技巧
常识只有一个问题: 就是它不常见
学习目标
精灵图
字体图标
CSS三角
CSS用户界面样式
vertical-align属性应用
溢出的文字省略号显示
常见布局技巧
精灵图
为什么需要精灵图?
一般来说,网页是放在服务器上的,一个网页中往往会应用很多小的背景图像来做修饰,当网页中的图像过多时,服务器就会频繁的接收和发送请求图片,造成服务器压力过大,这将大大降低页面的加载速度
所以,**为了有效的减少服务器接收和发送请求的次数,提高网页的加载速度,**出现了CSS精灵技术(也称作CSS Sprites,CSS雪碧)
核心技术:将网页中的一些小背景图像整合到一张大图中,这样服务器就只需要一次请求就可以了
精灵图的使用
使用精灵图核心:
精灵技术主要针对于背景图片使用,就是把多个小背景图片整合到一张大图片中
这张大图片也被叫做sprites精灵图或者雪碧图
移动背景图片位置,此时可以用background-position
移动的距离就是这个目标的x和y坐标。注意网页中的坐标有所不同(右x下y)
一般情 ...
第十五天:定位、元素隐藏
给代码注释就像是给浴室做清洁一样 — 你永远都不想干,但它的确给你和客人带来了更愉快的体验。
学习目标
能够说出为什么需要定位
能够说出定位的4种分类
能够说出4种定位各自的特点
能够说出为什么常用子绝父相布局
能够写出淘宝轮播图布局
能够说出显示隐藏的2种方式以及区别
定位
为什么需要定位?
如果需要:
某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子
滚动窗口的时候,盒子是固定屏幕某个位置的
所以:
浮动可以让多个块级盒子一含内没有缝隙排列显示,经常用于横向排列盒子
定位则是可以让盒子在某个盒子内移动位置或者固定在屏幕种某个位置,并且可以压住其他盒子
定位组成
定位:将盒子定在某一个位置,所以定位也就是在摆盒子,按照定位的方式移动盒子
定位=定位模式+边位移
定位模式用于指定一个元素在文档中的定位方式
边位移则决定了该元素的最终位置
定位模式
定位模式决定元素的定位方式,它通过CSS的position属性来设置的,其值可分为4个:
值
语义
static
静态定 ...
第十四天:浮动
等一个有生产力的程序员出现要比等第一个程序员变得有生产力好。
学习目标
能够说出为什么需要浮动
能够说出浮动的排列特性
能够说出3种最常见的布局方式
能够说出为什么需要清除浮动
能够写出至少两种清除浮动的方式
传统网页的布局的三种方式
传统网页的本质:用CSS来摆放盒子,把盒子摆放到相应的位置
CSS提供了三种传统布局的方式(简单来说就是盒子如何进行排列顺序)
普通流(标准流)
浮动
定位
这三种布局方式都是用来摆放盒子的,盒子摆放到合适位置,布局自然就完成了
注意: 实际开发中,一个页面基本都包括了这三种布局方式,后面移动端的学习就会学习新的布局方式
标准流(普通流/文档流)
所谓标准流,就是标签按照规定好默认方式进行排列
块级元素会独占一行,从上向下顺序排列
常用元素:div,hr,p,h1-h6,ul,ol,dl,form,table等
行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘会自动换行
常用元素:span,a,i,em等
以上都是标准流布局,而我们之前学习的就是标准流,标准流是最基本 ...