面试准备(Java部分)
面试准备(Java部分)Java是一种技术,由四个方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)
Java Class 类文件格式看这一篇就够了_java class文件-CSDN博客
JVMJVM(虚拟机):指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的计算机系统,是物理机的软件实现,Java虚拟机是采用虚拟化技术,隔离出一块独立的子操作系统,使Java软件不受任何影响在虚拟机内进行执行。
Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM(JDK1.8合并)
开发人员编写Java代码,并将Java源代码文件(.java文件)通过Java编译器进行编译后形成java字节码文件(.class文件),通过类加载子系统加载到运行时数据区(内存空间),再通过JVM执行引擎进行执行。
JVM实现了Java平台的无关性
在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Ja ...
Android模块化开发和组件化开发
Android模块化开发和组件化开发简介单工程项目
单工程项目结构
单工程项目的缺陷
随着应用的不断迭代更新,业务代码持续增加,随之而来的问题逐步呈现出来:
各种业务代码混杂在同一个模块中,开发人员在开发、调试过程中的效率越来越低,比如定位某个业务问题,需要在多个业务代码混合的模块中寻找和跳转。
工程师需要了解各个业务的功能,避免代码的改动影响其他业务的功能,导致开发和维护成本不断增加。
由于功能工程越来越庞大,编译完整代码所花费的时间越来越长。
多人协同开发时,开发风格不一,又难以将业务完全分割,大家互相影响,导致开发效率低下。
代码复用性差,写过的代码又很难抽离出来再次使用。
模块化和组件化
什么是组件化
组件(Component),对数据和方法的简单封装,功能单一,高内聚,并且是业务能划分的最小粒度。
组件化是基于可重用的目的,将大型的软件系统按照分离关注点的形式,拆分成多个独立的组件,使得整个软件系统也能做到电路板一样,是单个或多个组件元件组装起来,哪个组件坏了,整个系统可继续运行,而不出现崩溃或不正常现象,做到更少的耦合和更高的内聚。
为什么需要使用组件化 ...
Android导入项目及环境说明
Android导入项目及环境说明配置 build | Android Studio | Android Developers
这里有完整的Android项目构建的不同部分的说明,可以根据需求点击跳转去查看
环境说明首先需要知道的是不同的版本的Android Studio支持的AGP版本范围是不同的,不同的AGP能支持的Gradle版本也是不同的,项目使用不同的API版本也需要不同的AGP支持,这就是几者之间的关系,具体需要可以参考官网。
Android Gradle 插件 8.4 版本说明 | Android Studio | Android Developers (google.cn)
而项目使用的JDK只是构建项目使用
导入项目因版本不匹配出现的编译错误一般JDK版本是没什么问题的,可以在project structure中选择SDK Location,里面…可以找到jdk的设置,如果项目sync失败可以进去看看,顺便看JDK有没有问题再做其他修改了,也可以在setting中直接搜索Gradle也可以找到。
主要看API版本先,旧版的Gradle构建出来的项目是可以在pro ...
牛客面试必刷101(包含经典排序算法)
面试算法准备(Java)十大经典排序算法经典的十大排序算法可以大致分为两类:
比较类排序:
冒泡排序 =》快速排序(冒泡排序优化)
插入排序=》希尔排序(插入排序优化)
选择排序=》堆排序(选择排序优化)
归并排序(二路、多路)
非比较类排序:
计数排序 = 》桶排序
基数排序
冒泡排序123456789101112131415161718192021222324252627282930313233343536373839404142public class BubbleSort { public static void main(String[] args) { int[] ints = new int[]{2343, 234, 765, 1, 23, 5, 3, 2, 0, 3}; bubbleSort(ints); for (int i : ints) { System.out.print(i + & ...
小白个人Android面试准备
准备整体知识框架
Java知识Tempstatic:是静态的意思;
final:是最后的意思;
区别:
1.final可以修饰类,方法和变量,但是static只能修饰方法和变量;
2.final可以修饰全局变量和局部变量,但是static只能修饰全局变量,不能修饰局部变量;
3.final不可以修饰代码块,但是static可以修饰代码块。
static与final的区别_static和final的区别-CSDN博客
作用域public/private/protected的具体区别_public protected private的作用域-CSDN博客
泛型
Java的泛型符号的名称不要求,个数也不要求,一般有T type,E element,K key,V value,Java的泛型是一个占位符,先给引用类型进行占位,泛型符号可以应用在类的声明处、接口声明、方法的声明
泛型类
ArrayList<E>和HashMap<K,V>就是泛型类
在类中声明了之后就需要在创建类的对象的时候就需要去确定类的声明处定义的泛型的具体类型,如果在构建对象的时候 ...
Kotlin学习笔记
Kotlin学习笔记第一阶段基本介绍
Kotlin成为Android的第一语言
Kotlin语言编译后产生字节码,JVM产生指令对,操作系统进行命令式的执行
Kotlin集聚各个语言的精华于一身,走全栈语言之路
val只读变量
1234567val a:String = "111"/** * val只读,不可以改变 * 下面一行加上错误 * a = "222" */println(a)
var可变变量
123456/** * var可变变量,下面写法正确 */var a:String = "111"//这里的:String可以省略,kotlin会自动进行类型的推断a = "222"println(a)//println打印
Java语言有两种数据类型,基本数据类型(int,double等等)和引用类型(String)
Kotlin语言只有一种数据类型,看起来都是引用类型,实际上,编译器会在Java字节码中修改为基本类型
查看字节码
range表达式
12345678910111213val nu ...
Git(B站学习笔记)
Git(B站学习笔记)版本控制系统简介版本控制系统是一种记录文件或代码变化的软件工具,用于管理多个版本的文件和代码。它可以追踪文件或代码的修改历史,保存每个版本的快照,使得用户可以轻松地回滚到之前的版本,也可以比较和合并不同版本之间的差异,同时还可以协作开发,多人同时修改同一个文件,版本控制系统可以确保每个人的修改都被记录下来,避免冲突和丢失数据。
版本控制系统分为集中式版本控制系统和分布式版本控制系统
集中式版本控制系统
集中式版本控制系统是把代码的管理和同步放在同一个服务器端来进行,如CVS、SVN(Subversion),其中SVN的设计目标是取代CVS,现在互联网上很多版本控制服务从CVS迁移到了SVN
优点:
权限系统完善
提交修改操作简便
缺点:
打分支需要联网到服务端
依赖服务器的稳定性
分布式版本控制系统DVCS(Distributed Version Control System)
分布式版本控制系统相当于把集中式版本控制系统的服务端和客户端都交给参与开发的客户端来保管,只要需要不同开发者合并代码时,才需要一个中转站来完成。如Git
优点:
...
Maven的使用
Maven的使用
进入maven官网下载maven
如Windows系统下载压缩包解压即可apache-maven-3.9.5-bin.zip
配置环境变量
新建一个系统变量,变量名为MAVEN_HOME,对应值为maven压缩包解压位置,如D:\maven\apache-maven-3.9.5
在Path中编辑并新建填入%MAVEN_HOME%\bin
在cmd命令窗口输入 mvn -v 有输出对应版本号即可
修改maven压缩包解压路径下conf中的setting.xml配置
自己定义本地仓库路径,maven在本地找不到依赖才会去中央仓库寻找
配置国内镜像
1234567<!-- 中央仓库在中国的镜像 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/gro ...
神经网络与深度学习速成
神经网络与深度学习速成整体架构神经网络和深度学习的整体架构包括了各种组件和层次,用于构建、训练和应用复杂的深度学习模型。下面是它们的一般架构:
输入层(Input Layer):
输入层接受原始数据,例如图像、文本、声音等,将其转换为神经网络可处理的格式。对于图像数据,可以是像素值;对于文本数据,可以是单词嵌入向量;对于声音数据,可以是声谱图等。输入层通常具有与输入数据的特征数量相对应的节点。
隐藏层(Hidden Layers):
隐藏层是神经网络的核心组成部分,它包含多个神经元(或节点),并通过权重连接到前一层的神经元。深度学习中的深度来自于具有多个隐藏层。隐藏层的任务是学习数据的特征表示。常见的隐藏层类型包括全连接层、卷积层、循环层等。
激活函数层(Activation Function Layer):
激活函数层用于引入非线性性质到神经网络中,允许网络学习复杂的函数。常见的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid、Tanh等。激活函数在每个神经元上应用,将线性加权和映射到非线性输出。
输出层(Output Layer):
输出层 ...
算法
算法加油!!!
递归改写迭代引入队列是递归改写程序常做方法,然后借助循环
12345678910111213141516171819202122232425262728293031323334353637383940414243//递归public boolean isSymmetric(TreeNode root) { return check(root,root);}public boolean check(TreeNode left,TreeNode right){ if (left==null&&right==null){ return true; } if (left==null||right==null){ return false; } return left.val== right.val&&check(left.left,right.right)&&check(left.right,rig ...