C++string中的insert()函数用法详解

在原串下标为pos的字符前插入字符串strbasic_string& insert (size_type pos, const basic_string& str);str从下标为pos1开始数的n个字符插在原串下标为pos的字符前basic_string& insert (size_type pos, const basic_string& str, size_type pos1, size_type n);在原串下标为pos的字符前插入n个字符cbasic_
分类: 其他 发布时间: 10-03 22:45 阅读次数: 0

LinkedList 源码解析和设计思路

LinkedList源码分析和ArrayList一样,LinkedList 也是处理集合的,但是从名字就可以看出来两者的不同,前者底层的实现是基于数组实现的,后者是基于链表实现的。LinkedList更适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用。一:整体架构1.1、LinkedList 结构LinkedList 底层数据结构是一个双向链表,整体结构如下图所示:上图代表了一个双向链表结构,链表中的每个节点都可以向前或者向后追溯,从以上结构中我们可以看出:first 是双向链
分类: 其他 发布时间: 10-03 22:45 阅读次数: 0

List 源码面试题总结

List 源码面试题总结List 作为工作中最常见的集合类型,在面试过程中,也是经常会被问到各种各样的面试题,一般来说,只要你看过源码,心中对 List 的总体结构和细节有所了解的话,基本问题都不大。1、面试题1.1、 说说你对 ArrayList 的理解?很多面试官喜欢这种问法,主要是考察面试同学对 ArrayList 有没有总结经验,介于 ArrayList 内容很多,建议先回答总体架构,再从某个细节出发作为突破口,比如这样:ArrayList 底层数据结构是个数组,其 API 都做了一层对数
分类: 其他 发布时间: 10-03 22:45 阅读次数: 0

String 不变性、Long 缓存源码解析和面试题

String 不变性、Long 缓存源码解析和面试题String 和 Long 大家都很熟悉,现在我们结合实际的工作场景,来一起看下 String 和 Long 的底层源码实现,看看平时我们使用时,有无需要注意的点,总结一下这些 API 都适用于哪些场景。一:String1.1、不变性我们常常看到这样的面试题:请简单的说说 String、StringBuilder 和StringBuffer 三者之间的区别。其中 String 就有一点与其他两者不一样的地方,那就是String值一旦被初始化,就不能
分类: 其他 发布时间: 10-03 22:45 阅读次数: 0

Java 常用关键字理解

Java 常用关键字理解Java 中的关键字很多,大约有 50+,在命名上我们不能和这些关键字冲突的,编译会报错,每个关键字都代表着不同场景下的不同含义,接下来我们挑选几个比较重要的关键字,深入学习一下。一:staticstatic 意思是静态的、全局的,一旦被修饰,说明被修饰的东西在一定范围内是共享的,谁都可以访问,这时候需要注意并发读写的问题。1.1、修饰的对象static 只能修饰类变量、方法和方法块。1)、修饰类变量当 static 修饰类变量时,如果该变量是 public 的话,表示
分类: 其他 发布时间: 10-03 22:45 阅读次数: 0

TreeMap 和 LinkedHashMap 核心源码解析

TreeMap 和 LinkedHashMap 核心源码解析在熟悉 HashMap 之后,现在我们来看下 TreeMap 和 LinkedHashMap,看看 TreeMap 是如何根据 key 进行排序的,LinkedHashMap 是如何用两种策略进行访问的。一:基础知识在了解 TreeMap 之前,我们来看下日常工作中排序的两种方式,作为我们学习的基础储备,两种方式分别为:实现 Comparable 接口;利用外部排序器 Comparator 进行排序;现在我们来看下这两种排序方式的代
分类: 其他 发布时间: 10-03 22:45 阅读次数: 0

Map 源码面试题总结

Map 源码面试题总结Map 在面试中,占据了很大一部分的面试题目,其中以 HashMap 为主,这些面试题目有的可以说得清楚,有的很难说清楚。一:Map 整体数据结构类问题1.1:说一说 HashMap 底层数据结构答:HashMap 底层是数组 + 链表 + 红黑树的数据结构,数组的主要作用是方便快速查找,时间复杂度是 O(1),默认大小是 16,数组的下标索引是通过 key 的 hashcode 计算出来的,数组元素叫做 Node,当多个 key 的 hashcode 一致,但 key 值不同
分类: 其他 发布时间: 10-03 22:44 阅读次数: 0

HashSet、TreeSet 源码解析

HashSet、TreeSet 源码解析HashSet、TreeSet 两个类是在 Map 的基础上组装起来的类,我们学习的侧重点,主要在于 Set 是如何利用 Map 现有的功能,来达成自己的目标的,也就是说如何基于现有的功能进行创新,然后再看看一些改变的小细节是否值得我们学习。一:HashSet1.1、HashSet 类注释看源码,首先要看类注释,我们看看类注释上面都说了什么,部分截图如下图所示:类注释主要讲了以下四点底层实现基于 HashMap,所以迭代时不能保证按照插入顺序,或者其它
分类: 其他 发布时间: 10-03 22:44 阅读次数: 0

Android 中的网络操作(HttpURLConnection)

一、Android 网络知识简介Android 程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是 Android 程序的关键环节。Android 中对于网络操作的有很多很好用的框架,如 OkHttp、Velloy、Retrofit 等。但是今天我们来重点讲解一下 HttpURLConnection 这个抽象类。二、利用 HttpURLConnection 实现 Get 和Post 请求1、权限申请Android 中要做跟网络相关的操作,一定需要在清单文件中申请
分类: 其他 发布时间: 10-03 22:44 阅读次数: 0

Android Notification发送通知

一、Notification 概述Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容。系统为开发者提供了不同种类的通知样式模板可以使用,开发者也可以根据自己需要自定义通知样式。二、通知渠道(NotificationChannel)通知渠道是 Google 在 Android O 中新增加的功能,新的版本中把振动、音效和灯效等相关效果放在了通知渠道中控制,这样用户就可以有选择的控制应用的某一类通知的通知
分类: 其他 发布时间: 10-03 22:44 阅读次数: 0

两数之和 LeetCode 01

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]
分类: 其他 发布时间: 10-03 22:44 阅读次数: 0

整数反转 LeetCode 07

整数反转题目链接:https://leetcode-cn.com/problems/reverse-integer/题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2 ^ 31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。示例:示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120
分类: 其他 发布时间: 10-03 22:44 阅读次数: 0

回文数 LeetCode 09

回文数题目链接:https://leetcode-cn.com/problems/palindrome-number/题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

Android handler 消息通信实践(附计时器 demo)

一、Android 中的 UI 线程概述Android 的 UI 线程是线程不安全的,也就是说想要更新应用程序中的 UI 元素,则必须在主线程中进行。所以主线程又叫做 UI 线程。若在子线程中更新 UI 程序会报错。但是我们经常有这样一种需求:需要在子线程中完成一些耗时任务后根据任务执行结果来更新相应的UI。这就需要子线程在执行完耗时任务后向主线程发送消息,主线程来更新UI。也就是线程之间的通信,线程间通信方法有很多,今天我们主要来讲利用 Handler 来实现线程之间的通信。二、常用类1、Handl
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

整数转罗马数字 LeetCode12

整数转罗马数字&罗马数字转整数题目链接:https://leetcode-cn.com/problems/integer-to-roman/题目描述罗马数字包含以下七种字符: I、 V、 X、 L、C、D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000示例
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

最长公共前缀 LeetCode14

最长公共前缀题目链接:https://leetcode-cn.com/problems/longest-common-prefix/题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例:示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。解
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

给 Android 开发者的 Kotlin 教程(一)

一、Android 中的 UI 线程概述Android 的 UI 线程是线程不安全的,也就是说想要更新应用程序中的 UI 元素,则必须在主线程中进行。所以主线程又叫做 UI 线程。若在子线程中更新 UI 程序会报错。但是我们经常有这样一种需求:需要在子线程中完成一些耗时任务后根据任务执行结果来更新相应的UI。这就需要子线程在执行完耗时任务后向主线程发送消息,主线程来更新UI。也就是线程之间的通信,线程间通信方法有很多,今天我们主要来讲利用 Handler 来实现线程之间的通信。二、常用类1、Handl
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

给 Android 开发者的 Kotlin 教程(二)

一、Kotlin 概述在 给 Android 开发者的 Kotlin 教程(一)中我们Google 在2019年的 Google I/O 大会上宣布 Kotlin 被选为 Android 开发首选语言。1.1、Kotlin 特点简洁易用: Kotlin中提供了大量的扩展,使得我们的代码更加简洁,开发出来的框架更加易用;安全: 避免空指针异常等整个类的错误;互操作性: 充分利用 JVM、Android 和浏览器的现有库;工具友好: 可用任何 Java IDE 或者使用命令行构建。1.2、学
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

Android 四大组件之 Activity 解析(上)

一、概述简单来讲,Activity 就是一个可视化界面,负责承建一个屏幕窗口,防止 UI 组件,供用户交互。一般来说承建 Activity 有三个步骤:承建 Activity 类;在 AndroidManifest.xml 中注册;设置布局文件(可选)。二、Activity 的启动方法2.1、显示启动明确指定要启动的 Activity 的 class\color{red}{class}class 或者 包名.activity类名\color{red}{包名.activity类名}包名.ac
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0

Android 四大组件之 Activity 解析(下)

一、Activity 回顾在 完全看懂 Android 四大组件之 Activity(上)中我们已经讲了 Activity 的启动方法、生命周期以及启动模式。这一节我们来讲一下 Activity 之间的传参以及如何启动系统 Activity 这两大知识点。其中 Activity 之间的传参又包括利用 Intent 传参、利用Bundle传参以及复杂数据的传递。二、Activity 之间的数据传递2.1、利用 Intent 传递数据利用 Intent 传递数据主要是调用 Intent.putExtra
分类: 其他 发布时间: 10-03 22:43 阅读次数: 0