自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 HashMap 的实现原理

接口的常用类,它基于哈希表(Hash Table)实现,提供了高效的键值对存储和访问机制。)来存储键值对,数组的每个位置称为一个“桶”(Bucket)。:将键转换为一个整数值(哈希码),并根据这个值将键值对存储到数组(桶数组)的某个位置。:由于哈希函数可能会将不同的键映射到同一个位置(哈希冲突),需要通过某种机制解决冲突。哈希表是一种通过哈希函数将键(Key)映射到存储位置(桶,Bucket)的数据结构。)中,节点是一个内部类,包含键、值、哈希码以及指向下一个节点的引用(用于解决冲突)。

2025-03-12 17:03:48 674

原创 谈一谈ArrayList的扩容机制

能够在运行时动态调整容量,但扩容操作会带来一定的性能开销。了解扩容机制可以帮助开发者更好地优化代码,减少不必要的扩容操作,从而提高性能和内存使用效率。数组的初始容量可以通过构造函数指定,如果不指定,默认为 10(在 Java 7 及以上版本中)。接口的动态数组,它允许在运行时动态调整数组的大小。:扩容时会创建一个新的数组,新数组的容量是旧数组的 1.5 倍,这可能导致内存占用瞬间增加。:如果扩容后的容量仍小于所需的最小容量,会直接扩容到最小容量。方法将旧数组的内容复制到新数组中,这会带来一定的性能开销。

2025-03-12 17:02:00 269

原创 请说一下HashMap与HashTable的区别

使用分段锁(Segmented Locking)或锁分段(Lock Striping)机制,允许多个线程同时访问不同的段,从而提高并发性能。使用类级别的锁(即对整个表加锁),这在多线程环境下可以保证线程安全,但会带来较大的性能开销。是线程不安全的,它的方法没有加锁,因此在多线程环境下可能会出现并发问题(如数据丢失、使用类级别的锁,这意味着在并发操作时,整个表会被锁定,导致其他线程无法同时访问。的迭代器是快速失败的(fail-fast),在多线程环境下可能会抛出。的迭代器是线程安全的,但效率较低。

2025-03-12 17:01:03 496

原创 谈谈ArrayList和LinkedList的区别

内部使用双向链表存储元素,每个节点包含一个指向下一个节点的引用和一个指向前一个节点的引用。接口的常用类,但它们在内部实现、性能特点和适用场景上有很大的区别。每个节点除了存储元素外,还需要存储前后节点的引用,因此内存占用相对较大。不支持快速随机访问,需要从头或尾遍历链表,时间复杂度为。在数组中间插入或删除元素需要移动大量元素,时间复杂度为。元素在内存中不是连续存储的,因此不支持快速随机访问。元素在内存中是连续存储的,因此支持快速的随机访问。,并且不需要频繁随机访问,推荐使用。适合频繁通过索引访问元素的场景。

2025-03-12 16:59:13 542

原创 谈谈List,Set,Map的区别

基于动态数组实现,支持快速随机访问,但插入和删除效率较低(需要移动元素)。:基于双向链表实现,支持高效的插入和删除操作,但随机访问效率较低。:基于红黑树实现,元素按自然顺序或指定的比较器排序。:基于红黑树实现,按键的自然顺序或指定的比较器排序。:基于哈希表实现,提供快速的插入、删除和查找操作。:基于哈希表实现,提供快速的插入、删除和查找操作。是一个有序集合,元素的插入顺序和访问顺序一致。不允许存储重复的元素,重复添加的元素会被忽略。:基于哈希表和链表实现,保持插入顺序或访问顺序。

2025-03-12 16:54:59 944

原创 说说你对Java注解的理解

注解是 Java 中的一种特殊类型的接口,它使用。

2025-03-12 16:51:01 449

原创 String为什么要设计成不可变的?

当创建一个字符串时,如果字符串常量池中已经存在相同的字符串,就会直接返回池中的对象,而不是创建一个新的对象。在 Java 中被设计成不可变的(Immutable),这一设计决策带来了许多重要的好处,同时也与 Java 的语言特性和运行时环境紧密相关。如果字符串是可变的,修改字符串内容会导致哈希值改变,从而可能导致哈希表无法正确查找键值。:每次修改字符串内容时,都需要创建一个新的字符串对象,这可能导致内存消耗增加。:由于字符串不可变,相同的字符串内容可以共享同一个对象,从而节省内存。

2025-03-12 16:49:21 596

原创 谈谈你对Java泛型中类型擦除的理解,并说说其局限性

Java 泛型(Generics)是一种在编译时提供类型安全的机制,允许在定义类、接口和方法时使用类型参数。

2025-03-12 16:48:10 854

原创 谈谈如何重写equals()方法?为什么还要重写hashCode()?

类中的两个重要方法,它们在对象比较和哈希表操作中起着关键作用。操作符比较对象的内存地址,但这通常不符合我们对“相等”的定义。因此,当设计自己的类时,通常需要重写。方法用于计算对象的哈希码(一个整数值),主要用于哈希表的存储和查找(如。方法返回对象的内存地址的哈希值,但这通常不符合我们对“相等”的定义。方法相等,它们也可能被存储在哈希表的不同位置,从而导致查找失败。方法时,只要对象的字段值未改变,结果必须一致。方法保持一致,确保相等的对象具有相同的哈希值。对于类中的每个字段,逐一比较它们的值是否相等。

2025-03-12 16:46:05 955

原创 什么是反射机制?反射机制的应用场景有哪些?

反射机制(Reflection)是 Java 语言的一个强大特性,它允许程序在运行时动态地检查和操作类、方法、字段等信息。通过反射,程序可以在运行时获取类的结构、创建对象、调用方法、访问字段等,而无需在编译时知道这些信息。反射机制的核心是。

2025-03-12 16:44:57 440

原创 Java 中深拷贝与浅拷贝的区别

在 Java 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是两种不同的对象复制方式,它们的主要区别在于复制对象时对引用类型成员变量的处理方式。深拷贝是指创建一个新对象,然后将当前对象的非静态字段复制到新对象中。如果字段是引用类型的(如数组、对象等),则复制引用但不复制引用的对象。浅拷贝是指创建一个新对象,然后将当前对象的非静态字段复制到新对象中。例如,对象中包含的引用类型字段需要独立修改,或者对象需要被序列化传输。因此,原始对象和副本对象完全独立,修改一个对象不会影响另一个对象。

2025-03-12 16:43:00 755

原创 请简述一下String、StringBuffer和“equals”与“==”、“hashCode”的区别和使用场景

如果对字符串进行修改操作(如拼接、替换等),实际上会创建一个新的字符串对象。可以对字符串内容进行修改,而不会创建新的对象。适用于频繁修改字符串内容的场景,尤其是多线程环境。方法被重写,用于比较字符串的字符内容是否相同。类的方法,用于返回对象的哈希码(一个整数值)。用于比较两个对象的内存地址(引用是否相同)。方法被重写,根据字符串的字符内容计算哈希码。比较对象时,比较的是引用是否指向同一个对象。类的方法,用于比较两个对象的内容是否相等。适用于需要频繁修改字符串内容的场景。适用于字符串内容不经常修改的场景。

2025-03-12 16:41:23 610

原创 分别讲讲 final,static,synchronized

final表示不可变,用于类、方法和变量。防止继承、覆盖或修改。static表示静态,用于变量、方法和代码块。属于类本身,共享数据或工具方法。用于线程同步,确保代码块或方法在同一时刻只能被一个线程访问。防止数据竞争,确保线程安全。希望这些内容能帮助你更好地理解finalstatic和的用途和区别!如果你还有其他问题,欢迎继续提问!

2025-03-12 16:40:11 664

原创 抽象类与接口的区别

使用。

2025-03-12 16:38:06 522

原创 谈谈Error和Exception的区别

是程序运行过程中可以被预见和处理的异常情况。

2025-03-12 16:33:55 228

原创 Android源码下载地址

Index of /aosp-monthly/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorAOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

2021-11-05 09:48:23 1461

原创 linux :无法获得锁 /var/lib/dpkg/lock - open 解决方法

终端输入:sudo rm /var/lib/dpkg/lock

2021-08-28 13:15:20 299

原创 git相关命令收集

本地git仓库地址如何更新为最新地址:先删后加git remote rm origingit remote add origin [url]

2021-06-02 09:57:09 142

原创 android中的.class文件加载到内存中的过程

主要分为三个步骤:装载,链接,初始化一,装载:查找.class文件生成字节流,再生成class对象。隐式装载-》写代码时候new的对象,系统就会调用类加载器装载对应class到内存。显示装载-》写代码时候调用Class.forName()等方法会进行装载操作。二,链接:又分为3步骤(验证,准备,解析)1,验证:确保class文件中的字节流包含的信息符合要求,而且不会...

2020-04-09 17:41:39 610

原创 AOP使用教程

https://blog.youkuaiyun.com/BunnyCoffer/article/details/88028125https://www.jianshu.com/p/fb8d832e0dfd

2020-04-01 09:18:17 244

原创 GC回收机制和分代回收策略

GC垃圾回收:主要针对堆和方法区的动态内存分配和回收。可达性分析算法:将内存中的对象引用关系是通过一组GC Root的对象作为起始点,从这些节点搜索形成引用链,引用链中的对象不会被gc回收,不在引用链中的对象就会被gc回收。GC Root对象:1,虚拟机栈(局部变量表)中的引用对象。2,方法区中静态引用的对象。3,处于存活的线程对象。4,native方法中的JNI引用...

2020-03-27 15:09:12 433

原创 程序运行时,内存的分配

Java文件加载到内存中的过程:java文件-》编译生成class文件-》由classLoader加载到内存。内存划分情况:一,线程共享数据区:方法区,堆1,方法区:一块运行时数据区,主要存放已经被加载的类信息,常量,静态变量,即时编译器编译后的代码和数据。2,堆:根据存放时间的不同划分为新生代和老年代两个区域。二,线程私有数据区:虚拟机栈,本地方法区,程序计数器1,程序计...

2020-03-27 14:18:40 204

原创 win10调节分辨率

 桌面右键-》显示设置-》显示栏目-》高级显示设置,就可以调节分辨率了

2018-02-25 11:54:24 877

原创 win10调节屏幕亮度

鼠标右键-》NVIDIA控制面板-》调整桌面颜色设置-》使用NVIDIA设置,就可以调节亮度,对比度等等

2018-02-25 11:49:23 1380

转载 compile中的force = true

compile('com.android.support:support-v4:23.3.0') {        force = true    }解释:我们在依赖okhttp的时候很可能发生冲突,就比如依赖的依赖中也包含了okhttp,这种场合下,就会产生版本冲突的问题,加上force = true表明的意思就是即使在有依赖库版本冲突的情况下坚持使用被标注的这个依赖

2016-11-30 15:03:05 4918

转载 安卓学习资料2

关于Android图片分辨率应该放到哪个文件夹的问题(drawable-hdpi......)http://www.bkjia.com/Androidjc/950001.html

2016-11-12 15:20:40 425

转载 Android studio中自定义控件在Android Studio中xmlns不识别问题

Gradle工具会自动识别,所以不用指定包名把xmlns:xx="http://schemas.android.com/apk/res/com.xxx"换成xmlns:xx="http://schemas.android.com/apk/res-auto"然后同步一下,那个XX就是自定义控件自己设定的属性

2016-11-11 15:25:58 3523

转载 SDK版本出问题的解决方法

Android studio 新建项目出现这个错误,这个编译不通过一般需要查找原因了,对应的SDK版本肯定有问题了,需要替换一下,打开我们的file -> project struct 找到我们新建的APPmoudle 修改对应的compile 版本为21.1.2 新建的时候是22.0.1 ,SDK编译版本未通过Error:Execution failed for task ':app:pro

2016-11-10 18:52:05 1035

转载 Android倒计时案例

package com.example.timerrefurbish;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.

2016-11-09 19:31:38 401

原创 百度地图开发中遇到的问题

百度地图开发中遇到的问题注意Android SDK安全码组成:SHA1+包名。(查看详细配置方法)其中SHA1需要keystore,所以studio中要做额外的处理:开发时也出现了这个问题,终于搞定了,原来是签名文件没有打包到程序里面,开发环境直接使用默认的SHA1值,默认的SHA1值可以再在log中的mcode中查看到,要是想使用自己的签名文件,需要在菜单栏选择 file -

2016-11-01 18:08:21 402

转载 popupWindow弹出来后,背景变暗

private void showMakeGradeMarkedWindow() { View view = LayoutInflater.from(DetailActivity.this).inflate( R.layout.grade_screen_marked, null); final PopupWindow mPopupWindow = new PopupWindow(v

2016-07-25 18:51:55 410

转载 Android Studio:正确引入so文件的方法

方法一:将libs文件夹下的so文件,通过gradle配置任务编译成jar文件。将libs文件夹下的so文件,通过gradle配置任务编译成jar文件。123456789101112131415161718

2016-07-04 12:39:09 1513

转载 android 打开各种文件(setDataAndType)

转自:http://luhuajcdd.iteye.com/blog/1560225和 http://www.2cto.com/kf/201201/117389.htmlJava代码  /** * 打开文件 * @param file */ private void openFile(File file){          Intent i

2016-06-23 12:11:32 432

转载 Android 6.0: 动态权限管理的处理

Android 6.0: 动态权限管理的解决方案http://blog.youkuaiyun.com/caroline_wendy/article/details/50587230

2016-06-12 14:53:51 388

转载 关于刻度尺的资料

android自定义View之刻度尺MnScaleBarhttp://blog.youkuaiyun.com/zengdesen/article/details/50135043Android滚动刻度尺实现http://www.jianshu.com/p/12cee882dcce

2016-06-12 14:34:44 386

转载 切换fragment回来的时候如果有类似viewpager的控件,会自动的被隐藏了,自动滑动了最上方的问题解决

如题,这个问题:当切换fragment的时候,在切换回来,如果本页面有类似viewpager的控件,会自动的被隐藏了,自动滑动了最上方 。解决:http://stackoverflow.com/questions/16182331/scrollview-inside-viewpager-scrolls-to-middle-automatically

2016-05-31 11:13:10 1188

转载 studio中可能遇到的.9-patch图片报错处理

在build.gradle里添加以下两句:aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false,就直接添加到buildToolsVersion的下方即可。这个可以关闭Android Studio的PNG合法性检查。。。然后就可以大胆的用图了。。。

2016-05-26 00:20:53 1102

原创 pullToRefsh补充

pullToRefreshView.setMode(Mode.BOTH); ILoadingLayout endLabels = pullToRefreshView.getLoadingLayoutProxy( false, true); endLabels.setPullLabel("加载更多"); endLabels.setRefreshingLabel("正在加载..."

2016-03-25 16:39:00 329

原创 pullToRefresh的使用

//pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_START); pullToRefreshView .setOnRefreshListener(new OnRefreshListener2() { @Override public void onPullDownToRefresh(

2016-03-23 11:36:23 345

原创 点击显示一个样式自定义的Popupwindow

先定义一个点击按钮,一点击之后就退出PopupWindow:holder.checknumber.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // Toast.makeText(mContext, "dsvdfd", 0).show();

2016-03-19 18:08:18 825

jdk-8u381-window-64

jdk-8u381-window-64

2024-09-21

nvm-window v1.1.12

nvm-window v1.1.12

2024-09-21

autolayout屏幕适配

网络找的张鸿洋大神的屏幕适配的jar包,使用明细参考 http://blog.youkuaiyun.com/lmj623565791/article/details/45460089 免积分下载

2017-02-28

空空如也

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

TA关注的人

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