11.CSS盒子定位
[toc]
前端基础–CSS盒子定位
理解
能说出为什么要用定位
能说出定位的4种分类
能说出四种定位的各自特点
能说出我们为什么常用==子绝父相==布局
1. 再看CSS 布局的三种机制
网页布局的核心 —— 就是用 CSS 来摆放盒子位置。CSS 提供了 3 种机制来设置盒子的摆放位置,分别是普通流、浮动和定位,其中:
普通流(标准流)。
浮动
让盒子从普通流中浮起来 —— 让多个盒子(div)水平排列成一行。
定位
将盒子定在某一个位置 自由的漂浮在其他盒子的上面 —— CSS 离不开定位,特别是后面的 js 特效。
2. 为什么使用定位?
我们先来看一个效果,同时思考一下用标准流或浮动能否实现类似的效果?
小黄色块在图片上移动,吸引用户的眼球。
当我们滚动窗口的时候,盒子是固定屏幕某个位置的
结论:要实现以上效果,标准流或浮动都无法快速实现。
将盒子定在某一个位置 自由的漂浮在其他盒子(包括标准流和浮动)的上面 。
标准流在最底层 (海底) ——- 浮动 的盒子 在 中间层 (海面) ——- 定位的盒子 在 最上层 ...
11.对象实例化、内存布局与访问定位
薄悻不来门半掩,斜阳。负你残春泪几行。
——冯延巳《南乡子》
对象实例化、内存布局与访问定位
对象在JVM中是怎么存储的?
对象头信息里面有哪些东西?
Java对象头里有什么?
1. 对象实例化
从对象创建的方式 和 创建对象的步骤开始说:
1.1 创建对象的方式
new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法。
Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器。
Constructor的newInstance(XXX):反射的方式,可以调用空参的,或者带参的构造器。
使用clone():不调用任何的构造器,要求当前的类需要实现Cloneable接口并重写其中的clone方法。
使用序列化:序列化一般用于Socket的网络传输。
第三方库 Objenesis。
1.2 创建对象的步骤一、判断对象对应的类是否加载、链接、初始化
虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是 ...
11.数据结构之快速排序
排序算法之快速排序1. 快速排序基础
快速排序(Quicksort)是对 冒泡排序的一种改进。
基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行,以此达到整个数据变成有序序列。
2. 案例实现要求: 对 [-9,78,0,23,-567,70] 进行从小到大的排序,要求使用快速排序法。``【测试 8w 和 800w】
如果取消左右递归,结果是 -9 -567 0 23 78 70
如果取消右递归,结果是 -567 -9 0 23 78 70
如果取消左递归,结果是 -9 -567 0 23 70 78
2.1 代码实现☆☆123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263/** * 快速排序的方法: */public static void quickSort( ...
11.设计模式-组合模式
何须浅碧深红色,自是花中第一流。
——李清照《鹧鸪天》
## 设计模式-组合模式
1. 案例引出组合模式
编写程序展示一个学校院系结构(使用数据库中的表间关系很容易实现,注意这里是使用Java程序实现):需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个专业,如下图:
传统方式解决上述问题(类图如下):
传统方案存在的问题:
将学院看做是学校的子类, 专业是学院的子类,这样实际上是站在组织大小来进行分层次的。
实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个专业, 因此这种方案, 不能很好实现的管理的操作,比如对学院、专业的 添加,删除,遍历等。
解决方案:把学校、院、系都看做是组织结构,他们之间没有继承的关系,而是一个树形结构,可以更好的实现管理操作。这就要使用到设计模式中的组合模式。
2. 组合模式2.1 组合模式基本介绍
组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“ 整体- 部分”的层次关系。
组合模式依据树形结构来 ...
11.面向对象特性之继承
花自飘零水自流。一种相思,两处闲愁。
——李清照《一剪梅》
## 1. 面向对象特性之继承
extends
1.1 继承定义
就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性,相同的行为,子类可以直接询问父类中的非私有的属性和行为
格式:class 子类 extends 父类{ … };
好处
提高代码的复用性
类与类之间产生了关系,是多态的前提
继承和成员变量的特点
不重名;无影响
重名:子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰父类成员变量。
Fu 类中的成员变量是非私有的,子类中可以直接访问。若Fu 类中的成员变量私有了,子类是不能直接访问的。通常编码时,我们遵循封装的原则,使用private修饰成员变量,那么如何访问父类的私有成员变量呢?对!可以在父类中提供公共的getXxx方法和setXxx方法。
继承和成员方法的特点
不重名:如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类 ...
12.JVM之直接内存
驿寄梅花,鱼传尺素。砌成此恨无重数。
——秦观《踏莎行》
JVM之直接内存1. 直接内存概述
不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。
直接内存是在Java堆外的、直接向系统申请的内存区间。
来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。
通常,访问直接内存的速度会优于Java堆。即读写性能高。
因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。
Java的NIO库允许Java程序使用直接内存,用于数据缓冲区。
使用下列代码,直接分配本地内存空间:
12int BUFFER = 1024*1024*1024; // 1GBByteBuffer byteBuffer = ByteBuffer.allocateDirect(BUFFER);
1.2 非直接缓存区
原来采用IO的架构,我们需要从用户态切换成内核态
1.3 直接缓存区
NIO的方式使用了缓存区的概念
123456789101112131415161718192021222324/** * IO ...
12.Java基础之接口interface
庭院深深深几许,杨柳堆烟,帘幕无重数。
——欧阳修《蝶恋花》
1. Java基础之接口1.1 接口的定义
是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。
接口就是多个类的公共的规范,接口是一种引用数据类型(引用数据类型:数组,类,接口。),接口中最重要的内容就是:抽象方法。
1.2 定义一个接口
备注:把class替换成interface。但是.java文件编译之后依然是生成class字节码文件。
1234567public interface 接口的名称{ //常量; //抽象方法;(并不是所有的方法都是抽象方法)}
定义实现类
既然说接口中存在大量抽象方法,无法直接创建对象,必须有一个实现类来实现当前的接口。
1234567// 1.实现类的格式为: public class 类名 implements 接口名{ // 实现所有的抽象方法} ...
12.MySql高级之内存管理及优化
剪不断,理还乱,是离愁。别是一般滋味在心头。
——李煜《相见欢》
MySql高级之内存管理及优化1. 内存优化原则
将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。
MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。
排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。
2. MyISAM 内存优化
myisam存储引擎使用 key_buffer 缓存索引块,加速myisam索引的读写速度。对于myisam表的数据块,mysql没有特别的缓存机制,完全依赖于操作系统的IO缓存。
key_buffer_size
key_buffer_size决定MyISAM索引块缓存区的大小,直接影响到MyISAM表的存取效率。可以在MySQL参数文件中设置key_buffer_size的值,对于一般MyISAM数据库,建议至少将1/4可用内存分配给k ...
12.模板引擎art-template
[toc]
模板引擎art-template
模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
art-template是一个简约、超快的模板引擎。它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。由腾讯公司研发的,市面上有很多类似的模板引擎技术,但是这个应用相对较多。
优点: 执行效率高,兼容所有浏览器,使用方便。
有两种语法形式:
简洁语法结构。 类似 vue, angularjs, freemarker,valocity;
原生JavaScript语法结构。 类似jsp;
art-template
1. 简洁语法结构12345678910111213141516171819202122232425262728293031<!DOCTYPE html><html lang="zh-cn"><head> ...
12.数据结构之归并排序
排序算法之归并排序1. 归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的 分治 (divide-and-conquer )策略(分治法将问题分(divide)成一些 小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之)。
1.1 归并排序思想示意图
1.1.1 合并相邻有序子序列
由上图可知分的阶段逻辑相当简单,那我们仔细看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8]。
1.2 实现归并排序的分-治
对数组, int[] arr ={8, 4, 5, 7, 1, 3, 6, 2 } ,使用归并排序完成排序。
public static void mergetSort(int[] arr,int left,int right,int[] temp);分的方法
public static void merget(int[] ...