![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 85
介绍数据结构与算法相关知识
milan-xiao-tiejiang
2015年开始Android App开发,精通Java、Kotlin、c++等Android开发语言,阅读过系统源码及多方Android主流框架,对 vue、flutter等也有一定的认知。
Java方向技术全面,熟练掌握Spring、MySQL等Java Web相关技术,掌握分布式架构体系。
2020年转向c++工程师,重新系统学习c++语法,目前从事清洁服务机器人相关领域。
tip:北京寻求Android、c++职位
展开
-
编程思想汇总
CC 语言是一个静态弱类型语言,在使用变量时需要声明变量类型,但是类型间可以有隐式转换;不同的变量类型可以用结构体(struct)组合在一起,以此来声明新的数据类型;C 语言可以用 typedef 关键字来定义类型的别名,以此来达到变量类型的抽象;C 语言是一个有结构化程序设计、具有变量作用域以及递归功能的过程式语言;C 语言传递参数一般是以值传递,也可以传递指针;通过指针,C 语言可以容易地对内存进行低级控制,然而这加大了编程复杂度;编译预处理让 C 语言的编译更具有弹性,比如跨平台。原创 2021-06-02 14:07:26 · 347 阅读 · 0 评论 -
简单排序总结
冒泡排序原地排序算法:冒泡的过程只涉及相邻数据的交换操作,只需要常量级的临时空间,所以它的空间复杂度为 O(1)。稳定的排序算法:在冒泡排序中,只有交换才可以改变两个元素的前后顺序。为了保证冒泡排序算法的稳定性,当有相邻的两个元素大小相等的时候,我们不做交换,相同大小的数据在排序前后不会改变顺序。最好情况下,要排序的数据已经是有序的了,我们只需要进行一次冒泡操作,就可以结束了,所以最好...原创 2020-03-25 20:31:27 · 138 阅读 · 0 评论 -
深入理解Lru缓存
基于基础结构实现LRU缓存淘汰策略1)什么是缓存?缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。2)为什么使用缓存?即缓存的特点缓存的大小是有限的,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?就需要用到缓存淘汰策略。3)什么是缓存淘汰策略?指的是当缓存被用满时清理数据的优先顺序。...原创 2020-03-25 19:55:35 · 420 阅读 · 0 评论 -
Java并发相关知识总结
Java并发的一些总结Java并发包也就是 java.util.concurrent 及其子包,集中了 Java 并发的各种基础工具类,具体主要包括几个方面:提供了比 synchronized 更加高级的各种同步结构,包括 CountDownLatch、CyclicBarrier、Semaphore 等,可以实现更加丰富的多线程操作,比如利用 Semaphore 作为资源控制器,限制同时进...原创 2020-03-23 10:28:45 · 151 阅读 · 0 评论 -
ArrayList、LinkedList 源码解析
一、标准答案吧ArrayList是基于动态数组实现的,可以根据需要调整容量,扩容增加 50%。其内部元素以数组形式顺序存储的,所以非常适合随机访问的场合。除了尾部插入和删除元素,往往性能会相对较差,比如我们在中间位置插入一个元素,需要移动后续所有元素。LinkedList是双向链表结构,所以它不需要像上面两种那样调整容量。它进行节点插入、删除却要高效得多,但是随机访问性能则要比动态数组慢。...原创 2020-03-18 21:42:32 · 120 阅读 · 0 评论