![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 92
helloworld开发者社区
这个作者很懒,什么都没留下…
展开
-
技术人员为什么一定要写技术博客?
技术人员为什么一定要写技术博客?大家好,我是待兔,也是helloworld.net创始人,今天想讲讲技术人员如何提高技术以及为什么一定要写技术博客?因为接触过很多的开发者,以及在各种技术群里,也有一些人问过我好多问题主要有以下几个大佬你是如何提高技术的?你的全栈是怎么学的?哪来的那么多时间学习技术?首先呢,我不是大佬,只是一个普通的开发者其次,我的上班时间和大学一样,忙于写公司的各种业务区别就是我下班后,周六日的时间里,会花大把的时间看技术文章,视频等,还有就是我把我学习的过程原创 2021-02-03 13:16:53 · 227 阅读 · 0 评论 -
使用 Payload 提高 RecyclerView 渲染效率
RecyclerView.Adapter 中有个带有 payloads 参数的函数,由于这个函数不是抽象函数,被很多人忽略了。该函数定义如下:public void onBindViewHolder(VH holder, int position, List<Object> payloads) { onBindViewHolder(holder, position);}该函数的默认实现会调用 onBindViewHolder(holder, position) 这个抽象函数。原创 2020-11-29 20:28:58 · 1259 阅读 · 0 评论 -
一篇文章彻底解释清楚Java的大Class到底是什么
作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用。因为自己本身以前刚学安卓的时候,甚至做安卓2,3年后,也是对 java的 Class不是太清楚,所以想写一篇关于Java Class 的文章,没有那么多专业名词,希望用通俗的语言能把Java的 Class 这个概念讲明白,理解了Class后,Java的反射也就好理解多了。Class很容易,保证看了就明白,我们先来熟悉一个最基础的概念,什么是类?什么是类?这个想必所原创 2020-11-28 14:39:45 · 282 阅读 · 0 评论 -
Java实现 一篇文章说尽设计模式之六大原则
我们知道,设计模式很有用,学好设计模式不但能让你写出更简洁,优雅的代码,还能使得代码的结构更清晰,也更有利于扩展当然设计模式也不是万能的,一成不变的.设计模式只是前人总结出来的一种经验,一种特定问题的解决方法,不能看作是死的东西不一定非要生搬硬套,非得按照设计模式书上来来,只要我们写的代码符合一定的一些原则,一样可以看作是自己的模式.但是前人总结出来的东西必须非常值得我们学的.本系列23种设计模式会用最简单的例子,会用最让人明白的语言讲清楚里面的思想即可,过多的细节不会涉及,本系列所有的代码有的是自原创 2020-11-25 13:06:59 · 144 阅读 · 0 评论 -
Gradle系列之三 Gradle概述以及生命周期
1 Gradle是一种编程框架gradle主要由以下三部分组成1 groovy核心语法2 build script block3 gradle api注:本章所有的代码都在 https://github.com/jiulu313/gradledemo.git如下图2 Gradle的优势1 更加的灵活,因为gradle是编程框架,所以功能要强大的多2 粒度性上,源码的编译,资源的编译,都是一个一个Task的,我们可以修改task来达到精细控制上3 扩展性上,gradle有插件机制原创 2020-11-18 15:47:44 · 415 阅读 · 1 评论 -
Gradle技术之二 Groovy对文件的操作
Groovy对文件的操作对文件的遍历假设文件的原始内容为:hello,world这里是北京andorid and ios are good system第一种方法:使用 eachLine()//1.1 new 一个Filedef file = new File(filepath)//1.2 groovy对文件的遍历file.eachLine { //打印每一行内容 line -> println line}//输出hello,world这里是北京an原创 2020-11-18 15:46:09 · 826 阅读 · 0 评论 -
Gradle技术之一 Groovy语法精讲
Gradle技术之一 Groovy语法精讲gradle脚本是基于groovy语言开发的,想要学好gradle必须先要对groovy有一个基本的认识1. Groovy特点groovy是一种DSL语言,所谓的DSL语言,就是专门针对某一特定领域的语言,专精而不专广是一种基于JVM的开发语言,也是编译成class字节码文件结合和Python,Ruby,PHP等语言的特性,写脚本非常强大Groovy可以与Java完美结合,而且可以使用Java所有的类库语法上支持动态类型,闭包等新语言的特性支持面向原创 2020-11-18 10:17:06 · 453 阅读 · 0 评论 -
二分搜索树的原理与Java源码实现
1 折半查找法了解二叉查找树之前,先来看看折半查找法,也叫二分查找法在一个有序的整数数组中(假如是从小到大排序的),如果查找某个元素,返回元素的索引。如下:int[] arr = new int[]{1,3,4,6,8,9};在 arr 数组中查找6这个元素,查到返回对应的索引,没有找到就返回-1思想很简单:1 先找到数组中间元素target与6比较2 如果target比6大,就在数组的左边查找3 如果target比6小,就在数组的右边查找java实现代码如下: private原创 2020-11-14 17:49:04 · 147 阅读 · 0 评论 -
手写Java LinkedHashMap 核心源码
概述LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少使用算法,核心思想就是当缓存满时,会优先淘汰那些近期最少使用的缓存对象LruCache的缓存算法LruCache采用的缓存算法为LRU(Least Recently Used),最近最少使用算法。核心思想是当缓存满时,会首先把那些近期最少使用的缓存对象淘汰掉LruCache的实现LruCache底层就原创 2020-11-14 17:47:50 · 121 阅读 · 0 评论 -
手写Java Stack 核心源码
Stack是Java中常用的数据结构之一,Stack具有"后进先出(LIFO)"的性质。只能在一端进行插入或者删除,即压栈与出栈栈的实现比较简单,性质也简单。可以用一个数组来实现栈结构。入栈的时候,只在数组尾部插入出栈的时候,只在数组尾部删除**我们来看一下Stack的用法 :如下 public static void main(String[] args){ //新建一个栈 Stack<String> stack = new Stack<原创 2020-11-14 17:46:20 · 156 阅读 · 0 评论 -
手写Java PriorityQueue 核心源码(2)
上一节介绍了PriorityQueue的原理,先来简单的回顾一下 PriorityQueue 的原理以最大堆为例来介绍PriorityQueue是用一棵完全二叉树实现的。不但是棵完全二叉树,而且树中的每个根节点都比它的左右两个孩子节点元素大PriorityQueue底层是用数组来保存这棵完全二叉树的。如下图,是一棵最大堆。最大堆的删除操作删除指的是删除根元素,也就是图中的100元素删除元素也就是 shiftDown操作,向下翻删除一个根元素有以下步骤:将100元素删除,将最后一个原创 2020-11-14 17:45:25 · 53 阅读 · 0 评论 -
手写Java PriorityQueue 核心源码(1)
本章先讲解优先级队列和二叉堆的结构。下一篇代码实现从一个需求开始假设有这样一个需求:在一个子线程中,不停的从一个队列中取出一个任务,执行这个任务,直到这个任务处理完毕,再取出下一个任务,再执行。其实和 Android 的 Handler 机制中的 Looper 不停的从 MessageQueue 中取出一个消息然后处理是一样的。不过这个需求还有一点。需要我们的任务是有优先之分的,优先高的先执行,优先级低的后执行。比如现在队列中已经有了10个任务了,现在有一个紧急的任务需要处理,怎么办?解决办法有多原创 2020-11-14 17:44:25 · 116 阅读 · 0 评论 -
手写LinkedList核心源码
上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素。在查找需求比较重要的情况下可以用ArrayList,如果是删除操作比较多的情况下,用ArrayList就不太合适了。Java为我们提供了LinkedList,是用链接来实现的,我们今天就来手写一个QLinkedList,来提示底层是怎么做的。如上图,底层用一个双链表,另外有两个指示器,一个指向头,一个指向尾。链表中的每个节点原创 2020-11-13 10:43:20 · 77 阅读 · 0 评论 -
手写Java HashMap核心源码
手写Java HashMap核心源码上一章手写LinkedList核心源码,本章我们来手写Java HashMap的核心源码。我们来先了解一下HashMap的原理。HashMap 字面意思 hash + map,map是映射的意思,HashMap就是用hash进行映射的意思。不明白?没关系。我们来具体讲解一下HashMap的原理。HashMap 使用分析//1 存HashMap<String,String> map = new HashMap<>();map.put("n原创 2020-11-11 11:13:09 · 278 阅读 · 1 评论