自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JS的构造函数、原型、原型链

JS的构造函数,原型,原型链

2022-09-22 00:02:37 333 1

原创 iOS学习:isKindOfClass & isMemberOfClass

iOS中isKindOfClass和isMemberOfClass的区别

2022-09-05 23:40:33 1522

原创 React Native验证码图片设计(验证码图片使用的是同一个链接)

React Native验证码图片设计与实现

2022-08-30 23:42:34 562 1

原创 React Native报错:Error: Unable to resolve module react-native/Libraries/Animated/src/Easing

Toast使用:Teaset无法使用

2022-08-30 23:38:53 652

原创 升级到了MacOS Monterey 12.3之后,不兼容Node、adb等,出现env: node: Bad CPU type in executable报错

系统升级到了MacOS Monterey 12.3之后,不兼容Node、adb等

2022-08-11 00:11:07 4393

原创 React Native报错:Unable to install /Users/code/HustHello/android/app/build/outputs/apk/debug/app-d

React Native项目运行时报错

2022-08-11 00:06:57 803

原创 Android的Handler机制(2)

Handler机制Handler机制主要是用作线程间通信,尤其是主线程和子线程之间的通信。Handler机制里面涉及到四个对象:Handler,message、MessageQueue、Loo per**Handler:消息的处理者,**负责将Message添加到消息队列以及对消息队列中的Message进行处理。主线程创建一个Handler对象,重写handleMessage()方法在子线程中创建一个Message对象,保存要传递的消息。通过Handler的sendMessage()方法

2022-03-21 17:40:34 2612

原创 Android的Handler机制(1)

Android的Handler机制使用Handler的原因Handler4个组成部分解析Handler流程:主线程创建Handler实例MHandler子线程中保存创送的消息到message子线程调用MHandler 的sendMessage()message添加到MessageQueueLooper循环获取message送至Handler的handlerMessage()中处理1.使用Handler机制的原因Handler------异步消息处理机制Android的UI

2022-03-21 17:39:08 3102

原创 Android-事件分发机制

事件分发机制三种方法的解析具体流程分析(点击事件为例):图View处理事件优先级:3种的对比dispatchTouchEvent()-------分发事件onInterceptTouchEvent()--------判断是否拦截某个事件,如果当前View拦截了某个事件,那么在同一个事件序列中,此方法不会被再次调用,返回结果表示是否拦截当前事件。(只存在于ViewGroup中,为什么?)------->解释原因:结合传递顺序如果拦截事件,则调用onTouchEvent()来处理点

2022-03-21 17:35:43 92

原创 Android-View的工作流程

View的工作流程measure:ViewViewGrouplayout:layout()onLayout()draw:draw()中调用的4个方法PhoneWindow是窗口类,继承自抽象类Window,也是唯一子类。WindowManager是Window管理接口,继承自ViewManager,他的唯一实现类是WindowManagerImpl。WindowManagerImpl并没有真正实现windowManager接口逻辑,而是把逻辑转给了WindowManagerGl

2022-03-21 17:34:07 1549

原创 RecyclerView 与 ListView 的主要区别

RecyclerView 与 ListView 的主要区别:使用布局效果局部刷新嵌套滚动机制布局效果对比常用功能和API对比RecyclerView 和 ListView 在 Android L 引入嵌套滚动机制之后的对比(1)简单使用ListView:继承重写BaseAdapter类自定义 ViewHolder 和 convertView 一起完成复用优化工作(在自定义的ADP、adapter中完成)RecyclerView:继承重写RecyclerView.A

2022-03-21 17:31:17 1864

原创 Java-集合-HashSet(2)

HashSet可以直接看HashMap1. 底层实现HashSet的底层实现是HashMapSet不能有重复的元素,HashMap不允许有重复的键Set中有且只有1个元素的值为nullHashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。在HashSet中:元素都存到HashMap键值对的Key上面,Value是有一个统一的值private static final Object PRESENT = new Object();定义

2022-03-21 17:14:44 602

原创 Java集合-(1)HashSet之不重复原理

Set集合的不重复性是怎么做到的(Set集合的不重复原理)因为当我们向Set集合加入数据时,要加入的数据会和集合里的数据比较会先比较hashCode()的值,如果不同那么jvm就会认为这是两个不同的数据 就会直接加入,而如果hashCode()的值相同,jvm会调用equals()来比较,如果相同就认为是一个数据,否则 就是两个数据。(当hashCode()的值不同时就不会继续调用equals()了)Set集合是一个无序的不可以重复的集合。Set是一个接口,最常用的实现类就是Has

2022-03-21 17:11:54 1359

原创 Java中volatile关键字

volatilevolatile关键字在Java面试中几乎是必考题单例模式的双重检查模式(DCL)一般会引申到synchronized关键字和volatile关键字volatile关键字了解吗?它保证了什么特性?用什么方式禁止指令重排的吗?1)volatile保证了什么特性保证线程可见性(多线程环境下保证内存可见性)线程修改后的共享变量值能够及时刷新,从工作内存中刷新回主内存;其它线程能够及时的把共享变量的值从主内存中更新到自己的工作内存中;Java 内存模型规定,对于多个线程共享

2022-03-20 17:08:39 275

原创 MVP 和 MVC架构的比较

MVP架构本人面试Android时被问到的问题。基于什么样的场景采用MVP架构模式?MVP解决了你什么问题?P层里面写的是什么?activity属于哪一层?activity中坐的事情太多,代码不美观Presenter:作为View和Model之间沟通的桥梁,它从Model层检索数据后返回给View层,使得View和Model之间没有耦合。activity属于View层MVC的activity属于哪一层Model-View-Presenter。在MVP中,M代表Model,V代表

2022-03-20 16:52:03 785

原创 Java重写和重载的区别

重写和重载的区别1、首先是含义不同1)方法重载是在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法,与参数列表的数量、类型和顺序有关,与修饰符和返回值类型以及抛出异常类型无关2)方法重写(方法覆盖)的前提是发生在具有继承关系的两个类之间,方法重写有以下规则:参数列表,返回值,方法名必须保持一致重写方法的访问权限范围必须大于等于父类方法重写方法的抛出异常类型范围不能大于父类方法2、方法的重载和重写的作用不同重载:在同一个类中为一种行为提供多种实现方式并提高可读性重写:父类方法无

2022-03-20 16:48:26 2913 1

原创 Java集合-(2)HashMap

3. HashMap参考其他博主 + 自己总结3.1 什么是HashMapHashMap继承了AbstractMap,实现了Map接口,存储的是一个键值对对象。底层结构 数组+链表+红黑树,可以存储null键null值,线程不安全初始size为16,扩容:newSize = oldSize * 2,size一定为2的n次幂(元素分配更均匀)计算index方法:index = hash & (tab.length – 1)3.2 HashMap数据结构解析1、继承关系:H

2022-03-20 16:45:25 894

原创 Java集合-(1)hashCode

hashCode()public native int hashCode();【问题1】可以直接根据hashcode值判断两个对象是否相等吗?肯定是不可以的,因为不同的对象可能会生成相同的hashcode值。虽然不能根据hashcode值判断两个对象是否相等,但是可以直接根据hashcode值判断两个对象不等,如果两个对象的hashcode值不等,则必定是两个不同的对象。如果要判断两个对象是否真正相等,必须通过equals方法。默认情况下,hashCode方法是将对象的存储地址进行映射(通过对象

2022-03-20 16:17:03 230

原创 Java值传递和引用传递

Java值传递和引用传递基本数据类型传值,对形参的修改不会影响实参;引用类型传引用形参和实参指向同一个内存地址,所以对参数的修改会影响到实际的对象;形参和实参指向不同内存地址的,则对参数的修改不会影响到实际的对象;String 是引用类型 Integer m1 = 127; Integer m2 = 127;//当在-128~127范围内返回true,否则返回false int x1 = 500; int x2 = 500;//全都返

2022-03-20 15:34:14 160

原创 字节一面面经

输入一个int数组和一个数,找到两数和为这个数的下标。找不到的话返回[-1,-1]。只需要找一组。给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。[1,2,3,4,5] 133 5+5+3 = 13当线程A执行到对象引用执行分配好的内存时,这时对象还未初始化,线程B此时调用getInstance()方法,判断引用已经不为null,因此直接返回,此时对象是半初始化状态,使用会导致异常出现。

2021-08-08 22:13:27 230

原创 快手Android一面复盘

人生第一次面试,回答得特别特别烂,我觉得面试官肯定对我很无语。但是真的很感谢这个面试官,让我有了一次对我面试帮助很大很大的面经。这次面试之后,记录了面试的要点,进行了针对性查缺补漏,对我后面的面试帮助很大。不要畏惧面试,多面试涨涨经验总是好的。不要有自己在浪费面试官时间的想法,面试官在面试你的时候也是在完成他的任务(公司不可能让他白干活),你要学会合理利用资源,利用面试长经验。当你面试得足够多了,准备得足够充分了,offer自然也就到手了。加油!1. Java四种访问修饰符public.

2021-08-08 22:12:23 367

原创 面试-设计模式(全)

设计模式一、设计模式六大原则单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。开放封闭原则:类、模块、函数等应该是可以拓展的,但是不可修改。里氏替换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法。运行时,子类实例替换父类实例,我们可以很方便地扩展系统的功能,同时无须修改原有子类的代码增加新的功能可以通过增加一个新的子类来实现里氏替换原则是开放封闭原则的具体实现手段之一依赖倒置

2021-08-08 21:56:18 829

原创 面试题解---计算机网络(全)

计算机网络(1)TCP、UDP区别以及用处TCP VS UDPTCP 的可靠性含义: 接收方收到的数据是完整, 有序, 无差错的。UDP 不可靠性含义: 接收方接收到的数据可能存在部分丢失, 顺序也不一定能保证。TCPUDP面向连接无连接提供可靠服务“Best effort”服务,UDP传输的数据可能会丢失,非按序到达面向字节流,TCP把数据看成一连串无结构的字节流面向报文TCP连接是一对一的:一个发送方,一个接收方UDP支持一对一,一对多,多

2021-08-08 21:55:32 2680

原创 面试题解--操作系统(全)

操作系统(1)进程和线程的区别进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程**根本区别:**进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。( 线程是可由CPU直接运行的实体)内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。**开销:**CPU切换一个线程比切换进程开销小,创建一个线程比进程开

2021-08-08 21:54:48 1816

原创 面试题解--Java(全)

Java线程不安全的线程安全的StringBuilderStringBufferArrayListVectorHashMapHashtable基本数据类型字符型:char布尔型:Boolean数值型:整数类型:byte(1字节), short(2字节), int(4字节), long(8字节)浮点型:float(4字节), double(8字节)byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。short:16位,

2021-08-08 21:54:09 2093

原创 深入理解Java虚拟机(全)

​​垃圾回收,类加载,线程安全问的比较多2,3,6,7,12,13第二章 Java内存区域与内存溢出异常2.2 运行时数据区域3个区域线程私有(不需要垃圾回收,因为它们随着线程结束而自动销毁),2个区域所有线程共享(需要垃圾收集回收)程序计数器(Programmer Counter Register):一块很小的内存,可以看做当前线程所执行的字节码的行号计数器。线程隔离的数据区(线程私有)为了多线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程之间计数

2021-08-08 21:52:36 1488

原创 Android面试题解(全)

Android(一)RecyclerView 与 ListView 的主要区别:使用布局效果局部刷新嵌套滚动机制布局效果对比常用功能和API对比RecyclerView 和 ListView 在 Android L 引入嵌套滚动机制之后的对比(1)简单使用ListView:继承重写BaseAdapter类自定义 ViewHolder 和 convertView 一起完成复用优化工作(在自定义的ADP、adapter中完成)RecyclerView:继承重写Rec

2021-08-08 21:50:38 372

原创 synchronized用法(二):synchronized的底层实现原理

synchronized底层实现在Java里面,最基本的互斥同步手段是synchronized(1)原理synchronized关键字经过反编译之后,会在同步块的前后分别形成 monitorenter和monitorexit这两个字节码指令。这两个字节码指令都需要一个reference类型的参数来指明要锁定和解锁的对象。其中monitorenter指令指向同步代码块的开始位置,monitorexit指令则指明同步代码块的结束位置。当代码执行到monitorenter 指令时,将会尝试获取该对象对应

2021-05-31 22:39:53 165

原创 synchronized用法(一):synchronized的使用

synchronized的用法三种用法:修饰实例方法修饰静态方法修饰代码块synchronized的作用:原子性:synchronized保证语句块内操作是原子的可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lock操作”)一、3种用法synchronized是Java中的关键字,是一种同步锁。修饰一个类:其作用的范围是s

2021-05-31 22:34:24 840

原创 Java中static的用法

static的用法static关键字涉及很多Java虚拟机相关内容,感兴趣的读者可以看看Java虚拟机相关内容哦!方便在没有创建对象的情况下来进行调用(方法/变量)。static:静态的,用于修饰成员(成员变量,成员方法);被static所修饰的变量或者方法会储存在数据共享区(静态存储区);被static修饰后的类成员变量只有一份!当成员被static修饰之后,就多了一种访问方式,除了可以被对象调用之外,还可以直接被类名调用,(类名.静态成员);使用:(一定要提到类加载)

2021-05-29 16:28:33 2875

原创 Java单例模式

单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式总共有5种实现饿汉模式懒汉模式DCL(双重检查模式)----很重要静态内部类单例模式枚举类单例(1)饿汉模式public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleto

2021-05-29 16:22:27 55

原创 Java四种访问修饰符

Java四种访问修饰符public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不    仅可以跨类访问,而且允许跨包(package)访问。private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以  及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、    属性以及方法

2021-05-29 16:13:09 502

原创 深入理解Java虚拟机(四):Java内存模型

Java内存模型一、概述二、硬件的效率与一致性计算机的存储设备与处理器的运算速度有着几个数量级的差距现代计算机系统都不得不加入一层或多层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲基于高速缓存的存储交互很好地解决了处理器与内存速度之间的矛盾,但是也为计算机系统带来更高的复杂度,它引入了一个新的问题:缓存一致性(Cache Coherence)。多路处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存(Main Memory),这种系统称为共享

2021-05-29 16:06:39 103

原创 深入理解Java虚拟机(三):Java类加载过程

Java类加载一、概述虚拟机的类加载机制:Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制与那些在编译时需要进行连接的语言不同在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的二、类加载时机类的生命周期(从被加载到虚拟机内存开始,到卸载出为止):加载(Loading)

2021-05-29 15:20:24 245

原创 深入理解Java虚拟机(二):Java内存回收及垃圾收集算法

Java内存回收 & 垃圾收集算法 & 垃圾收集器Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。本文重点:2 对象已死?(如何判断对象是否存活(回收已死亡的对象))3 垃圾收集算法5 垃圾收集器1 概述垃圾收集器(Garbage Collection, GC)程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个栈帧中分配多少内

2021-05-29 14:51:11 274

原创 深入理解Java虚拟机(一):Java内存区域(运行时数据区域)

Java内存区域(运行时数据区域)主要参考书籍《深入理解Java虚拟机》运行时数据区域3个区域线程私有(不需要垃圾回收,因为它们随着线程结束而自动销毁),2个区域所有线程共享(需要垃圾收集回收)程序计数器(Programmer Counter Register):一块很小的内存,可以看做当前线程所执行的字节码的行号计数器。线程隔离的数据区(线程私有)为了多线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程之间计数器互不影响,独立存储如果线程正在执行一个Ja

2021-05-29 14:29:48 144

原创 String,StringBuffer,StringBuilder的区别

String,StringBuffer,StringBuilderStringStringBufferStringBuilder不可变,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,效率低下,且大量优先的内存空间可变类。任何对它指向的字符串的操作都不会产生新的对象可变类,速度更快线程安全,效率低线程不安全,效率高多线程操作字符串单线程操作字符StringBuilder 类在

2021-03-20 12:24:30 79 1

原创 二分查找算法

二分查找(折半查找)二分查找,近适用于有序的顺序表(所有元素存放在数组中)算法思想将key与中间元素的关键字比较相等则放回元素位置不等则向前(前半部分)或者向后(后半部分)查找int binary_search(SeqList L,ElemType key){ int left = 0,right = SeqList.length -1; int mid; while(left <= right){ mid = (left + right)/2;

2021-03-06 11:12:44 390

原创 计算机组成原理:储系统综合实验

储系统综合实验一、 实验目的熟悉 Logisim 软件平台;熟悉 ROM、RAM 存储器的使用;掌握存储器字扩展,位扩展的基本原理;为 MIPS CPU 设计功能部件—寄存器文件;二、 实验环境Logisim 是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。它是一款基于 Java 的应用程序,可运行在任何支持 JAVA 环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim 中的主要组成部分之一就在于设计并以图示来显示 CP

2020-12-12 19:58:37 5577 2

原创 计算机组成原理:运算器组成实验(.八位串行可控加减法器等)

运算器组成实验一、 实验目的熟悉 Logisim软件平台。掌握运算器基本工作原理掌握运算溢出检测的原理和实现方法;理解有符号数和无符号数运算的区别;理解基于补码的加/减运算实现原理;熟悉运算器的数据传输通路。二、 实验环境Logisim是一款数字电路模拟的教育软件,用户都可以通过它来学习如何创建逻辑电路,方便简单。它是一款基于 Java 的应用程序,可运行在任何支持 JAVA 环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim中的主要组成部分之一就在于设计并以图示来显示

2020-12-12 19:55:04 39764 6

空空如也

空空如也

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

TA关注的人

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