自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 收藏
  • 关注

原创 新冠的经历

2022-12-18 20:51:22 457 1

原创 2.Java基础

1.数据类型4种整型:类型长度取值范围包装类int4字节(32位)-2的31次方~~2的31次方-1java.lang.Integershort2字节(16位)-2的15次方~~2的15次方-1java.lang.Shortlong8字节(64位)-2的63次方~~2的63次方-1java.lang.Longbyte1字节(8位)-2的7次方~~2的7次方-1java.lang.byte2种浮点类型:1种字符类型:1种真值类型:

2021-08-05 20:43:55 155

原创 1.Java简介

1.Java特点简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性2.Java环境JDK:JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javawJRE:只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库...

2021-08-05 20:25:54 151

原创 Java静态块、静态变量加载

public class test { //1.第一步,准备加载类 static int num = 4; //2.第二步,静态变量和静态代码块的加载顺序由编写先后决定 static { // 3.第三步,静态块,然后执行静态代码块,因为有输出,故打印a System.out.println("a"); }

2020-10-23 10:51:07 185

原创 TreeSet分析

1. 概述TreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承了AbstractSet抽象类,实现了NavigableSet,Cloneable,Serializable接口。TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator进行排序。(1)TreeSet继承于AbstractSet,并且实现了NavigableSet接口。(2)TreeSet是一个包含有序且没有重复元素的集合,通过TreeMap实现。TreeSe

2020-09-12 18:37:41 316

原创 LinkedHashSet分析

1. 概述LinkedHashSet内部使用的是LinkHashMap。好处就是LinkedHashSet中的元素顺序是可以保证的,也就是说遍历序和插入序是一致的。public static void main(String[] args) { Object value = new Object(); HashMap<String, Object> hashMap = new HashMap<>(); HashSet<Stri

2020-09-12 09:54:46 282

原创 HashSet分析

1. 概述HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。底层数据结构是哈希表。哈希表是一个元素为链表的数组HashSet具有以下特点:不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也可能发生变化;HashSet不是同步的、线程不安全、效率高可以存储null元素元素唯一,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。具体实现唯一性的比较过程:存储元素首先会使用ha

2020-09-12 09:42:59 483

原创 LinkedList分析

1. 概述1.1 简介java.lang.Object ↳ java.util.AbstractCollection<E> ↳ java.util.AbstractList<E> ↳ java.util.AbstractSequentialList<E> ↳ java.util.LinkedList<E>public clas

2020-09-10 21:45:04 114

原创 Vector和CopyOnWriteArrayList分析

1. Vector1.源码分析public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ //这就是存储数据的数组,注意啦这是一个动态的数组 protected Object[] elementData; //当前元素的个数 protected int

2020-09-10 16:52:37 1135

原创 ArrayList分析

1.ArrayList基础属性构造方法public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable { // 序列化id private static final long serialVersionUID = 8683452581122892189L; // 默认初始的容量 private static fi

2020-09-10 16:20:32 124

原创 foreach和for

Foreach和for循环的区别写法格式不相同foreach适用于只是进行集合或数组遍历,for则在较复杂的循环中效率更高。在固定长度或者长度不需要计算的时候for循环效率高于foreach,在不确定长度或者计算长度有损性能的时候用foreach比较方便foreach不支持在循环中添加、删除、修改操作,因为在使用foreach循环的时候数组(集合)就已经被锁定不能被修改,否则会报出java.util.ConcurrentModificationException异常分析出错情况:首先看第一种

2020-09-10 10:07:53 225

原创 Java线程池

1. 线程池概念线程池就是事先创建若干个可执行的线程放入一个池((容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。2. 线程池的优势(1)降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;(2)提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;(3)方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线

2020-09-09 10:59:39 102

原创 android面试/笔试问题

intent可以传递的数据类型:支持传递基本类型的数据和基本类型的数组数据String/CharSequence类型的数据和String/CharSequence类型的数组数据(CharSequence接口,实现了这个接口的类有:CharBuffer、String、StringBuffer、StringBuilder这四个类)实现了Serializable接口,将数据序列化成二进制进行传输实现了Parcelable接口的数据Bundle主要用于传输数据,它保存的数据,是以key-value的形.

2020-09-04 16:37:27 71

原创 SQL

1. SQL简介1.什么是SQL? Structured Query Language:结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。 2.SQL通用语法 1. SQL 语句可以单行或多行书写,以分号结尾。 2. 可使用空格和缩进来增强语句的可读性。 3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。 4. 3 种注释 * 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) *

2020-08-30 20:22:20 174

原创 数据库设计、备份和还原

1.数据库的基本概念1. 数据库的英文单词: DataBase 简称 : DB2. 什么数据库? * 用于存储和管理数据的仓库。3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL4. 常见的数据库软件 * 参见《MySQL基础.pdf》2.数据库的设计1. 多表之间的关系 1. 分类: 1. 一对一(了解): 2. 一对多(多对一): 3. 多对多: 2. 实现关

2020-08-30 20:17:22 144

原创 数据库的系统原理

1. 事务1.1 事务的基本介绍 1. 概念: * 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。 2. 操作: 1. 开启事务: start transaction; 2. 回滚:rollback; 3. 提交:commit; 3. 例子: CREATE TABLE account ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), balance DOUB

2020-08-30 17:01:22 184

原创 MySQL多表查询

今日内容1. 多表查询2. 事务3. DCL多表查询:* 查询语法: select 列名列表 from 表名列表 where....* 准备sql # 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部'); # 创建员工表 CREATE TABLE

2020-08-30 09:49:47 208

原创 MySQL约束课堂笔记

今日内容1. DQL:查询语句 1. 排序查询 2. 聚合函数 3. 分组查询 4. 分页查询2. 约束3. 多表之间的关系4. 范式5. 数据库的备份和还原DQL:查询语句1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的。 * DESC:降序。 * 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。2.

2020-08-30 09:49:14 83

原创 MySQL基础课堂笔记

基本内容数据库的基本概念MySQL数据库软件安装卸载配置SQL1.数据库的基本概念1. 数据库的英文单词: DataBase 简称 : DB2. 什么数据库? * 用于存储和管理数据的仓库。3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL4. 常见的数据库软件 * 参见《MySQL基础.pdf》2.MySQL数据库软件1. 安装 * 参见《MyS

2020-08-30 09:46:48 87

原创 文件管理之磁盘

1. 磁盘的结构2. 磁盘调度算法读写一个磁盘块的时间的影响因素有:旋转时间(主轴转动盘面,使得磁头移动到适当的扇区上)寻道时间(制动手臂移动,使得磁头移动到适当的磁道上)实际的数据传输时间其中,寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短。2.1. 先来先服务FCFS, First Come First Served按照磁盘请求的顺序进行调度。优点是公平和简单。缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。2.2 最短寻道时间优先SSTF

2020-08-29 18:38:06 97

原创 内存管理

1. 内存管理概念内存管理:操作系统对内存的划分和动态分配1.1 内存管理的功能内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理地址转换。在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。内存空间的扩充。利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。存储保护。保证各道作业在各自的存储空间内运行,互不干扰。1.2 进程运行的基本原理和要求1.程序装入和链接创建进程首先要将程序和数据装入内存。将

2020-08-29 11:34:01 196

原创 死锁

死锁是指多个进程因为竞争资源而造成的相互等待的僵局1. 死锁产生原因1.1 系统资源的竞争系统资源分为可抢占资源和不可抢占资源。通常系统中拥有的不可抢占资源,其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局,如磁带机、打印机等。只有对不可抢占资源的竞争才可能产生死锁,对可抢占资源的竞争是不会引起死锁的。1.2 进程推进顺序非法进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁。例如,并发进程P1,P2分别保持了资源R1、R2,而进程P1申请资源R2、进程

2020-08-28 11:07:21 132

原创 Java基础知识点

学习Java前提位(bit) :一个数字或者一个数字1代表一位。字节(Byte) :每逢8位是一个字节,这是数据存储的最小单位。1Byte=8bit1 KB = 1024 Byte1 MB =1024KB1 GB =1024 MB100Mbps的宽带,传输速率应该为100/8=12.5MB/s命令行的操作:进入文件夹 cd 文件夹名称进入多级文件夹 cd 文件夹1文件夹2\文件夹3返回上一级 cd . .真接回根路径 cd \查看当前内容 dir清屏 cls退出 exi

2020-08-26 21:58:57 134

原创 进程管理

1. 进程和线程1.1 进程的概念和特征进程是资源分配的基本单位。为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。系统利用PCB来描述进程的基本情况和运行态,进而控制和管理进程。由程序段、相关数据段和PCB三部分构成了进程映像(进程实体)。所谓创建进程,实质上是创建进程映像中的PCB;而撤销进程,实质上是撤销进程的PCB。进程映像是静态的,进程则是动态的。1)动态性。进程是程序的一次执行,它有着创建

2020-08-26 16:24:26 187

原创 计算机系统概述

1.操作系统的基本概念操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代标准而言,一个标准PC的操作系统应该提供以下的功能:进程管理、内存管理、文件系统、网络通信、安全机制、用户界面、驱动程序1.1 操作系统的特征1.1.1 并发并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目

2020-08-26 09:11:59 222

原创 老鼠试毒问题

7瓶水1瓶有毒3只老鼠,怎么找有毒的水,再加个条件,必须要求第二天出结果二分查找思路,每次均分两组,每组各取一滴水混合成新溶剂喂给老鼠,继续对导致老鼠死亡的一组水进行同上操作。假如是第1瓶有毒,过程演绎如下,第一只老鼠死于前一堆(mid=(0+6)/2=3, 即服用了第1、2、3、4瓶的混合溶剂),第二只老鼠死于前一堆(mid=(0+3)/2=1, 即服用了第1、2瓶的混合溶剂),第三只老鼠随意试一瓶,根据服用后状态即可判断有毒的水。二进制编码思路,对每瓶水二进制编码,所需编码位数正好为三位,将第一

2020-08-19 09:18:19 1362

原创 100盏灯开关问题

房间里有100盏电灯,编号为1,2,3……100,每盏灯上有一个按钮,初始时灯全都是关的。编好号的100位同学由房间外依次走进去,将自己编号的倍数的灯的按钮全部按一次,例如第一位同学把编号是1的倍数的灯的按钮按一下(此时100盏灯全亮),第二位同学把编号是2的倍数的灯的按钮按一下(此时只有50盏灯亮着,50盏被这个人按灭了)……第100位同学把编号是100的倍数的灯(即编号为100的灯)的按钮按一下,请问依次走完后,还有多少盏灯亮着?分析:编号1同学:打开所有的灯编号2同学:关闭了2、4、6…100编

2020-08-19 09:05:12 3070

原创 设计模式相关问题

android涉及的设计模式生产者消费者模型装饰模式和代理模式

2020-08-18 18:23:17 81

原创 MVC、MVP、MVVM

MVCMVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。View(视图) - 视图代表模型包含的数据的可视化。Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。实例实现:创建一个作为模型的 Student 对象StudentView 是一个把学生详细

2020-08-18 17:56:15 114

原创 recyclerview和listview区别

ListView和RecyclerView的区别Android ListView 与 RecyclerView 对比浅析—缓存机制以上是两位借鉴链接 谢谢他们

2020-08-07 20:34:35 310

原创 RecyclerView的缓存机制

1.概述1.1 四级缓存缓存级别实际变量含义一级缓存mAttachedScrap和mChangedScrap这是优先级最高的缓存,RecyclerView在获取ViewHolder时,优先会到这两个缓存来找。其中mAttachedScrap存储的是当前还在屏幕中的ViewHolder,mChangedScrap存储的是数据被更新的ViewHolder,比如说调用了Adapter的notifyItemChanged方法二级缓存mCachedViews默认大小为2,通常用

2020-08-06 22:27:29 690

原创 RecyclerView 源码分析

RecyclerView本身是一个展示大量数据的控件,相比较ListView,RecyclerView的4级缓存表现的非常出色,在性能方面相比于ListView提升了不少。同时由于LayoutManager的存在,让RecyclerView不仅有ListView的特点,同时兼有GridView的特点。RecyclerView在设计方面上也是非常的灵活,不同的部分承担着不同的职责。其中Adapter负责提供数据,包括创建ViewHolder和绑定数据,LayoutManager负责ItemView的测量和.

2020-08-06 17:27:07 185 1

原创 缓存及图片三级缓存分析

1.缓存基础CPUCPU分为运算器跟控制器,是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。中央处理器、内部存储器和输入/输出设备是现代电脑的三大核心部件。存储器存储器的种类很多,按用途可以分为主存储器和辅助存储器:主存储器又称内存,是CPU能直接寻址的存储空间,它的特点是存取速率快。内存一般采用半导体存储单元,包括随机存储器(Random Access Memory)、只读存储器(Read Only Memory)和高

2020-08-04 09:54:12 729

原创 Binder连接池Demo

1.首先在AIDL包中提供两个 AIDL 接口 :ISecurityCenter 和 ICompute// ICompute.aidlpackage AIDL;interface ICompute {/*用来做加法计算的aidl*/ int add(int a,int b);}// ISecurityCenter.aidlpackage com.example.binderpooldemo;interface ISecurityCenter {/*写入账号,密码的aidl*/

2020-08-01 22:00:47 121

原创 Retrofit 框架详解和使用

一、概述1. retrofit是什么retrofit是现在比较流行的网络请求框架,可以理解为okhttp的加强版,底层封装了Okhttp。准确来说,Retrofit是一个RESTful的http网络请求框架的封装。因为网络请求工作本质上是由okhttp来完成,而Retrofit负责网络请求接口的封装。本质过程: App应用程序通过Retrofit请求网络,实质上是使用Retrofit接口层封装请求参数、Header、Url等信息,之后由okhttp来完成后续的请求工作。在服务端返回数据后,okhttp

2020-07-28 17:56:25 3010

原创 ButterKnife

ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的classButterknife 项目地址1. ButterKnife的优势:1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率2、方便的处理Adapter里的ViewHo

2020-07-28 17:39:41 266

原创 Glide

Glide 的github链接Glide使用学习链接1. Glide使用准备1.添加依赖implementation 'com.github.bumptech.glide:glide:4.11.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'2.添加网络权限<uses-permission android:name="android.permission.INTERNET" />2. 常用方法

2020-07-28 17:26:16 252

原创 Picasso

1.简介github链接实现图片加载功能的第三方图片加载库,需要添加依赖implementation 'com.squareup.picasso:picasso:2.71828'1.1 功能特性使用默认的内存缓存和磁盘缓存(可自定义)可自定义图片的变换操作、解析格式等可以选择裁剪方式、大小等可以加载网络资源、本地资源等可以选择内存缓存和磁盘缓存的策略可以暂停、恢复、取消加载可以设置加载成功失败的占位图及相应监听1.2 使用方式Picasso.with(context)//拿到

2020-07-28 12:35:14 185

原创 Rxjava

Rxjava是NetFlix出品的Java框架, 是“使用可观察序列组成的一个异步地、基于事件的响应式编程框架”,典型实例如下: Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception {

2020-07-27 23:06:49 183

原创 队列代码

有借鉴的地方 但是忘记哪个博客了 如果侵权请联系我package QueueDemo;public interface Queue<E> { boolean isEmpty(); void push(E data); E pop(); E peek(); void clear(); int length();}1. 队列的线性存储package QueueDemo.SequenceQueueTest;import QueueDem

2020-07-26 15:36:13 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除