自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 收藏
  • 关注

原创 leetcode-比较版本号-88

1.因为字符串比较大小不方便,并且因为需要去掉前导的0,这个0我们并不知道有几个,将字符串转换为数字刚好能避免。2.当判断到符号位的时候加加,跳过符号位。3.判断数字大小,来决定版本号大小。

2024-04-24 20:34:40 111

原创 全栈必须要了解的常用网站(持续更新)

【代码】全栈必须要了解的常用网站(持续更新)

2023-06-28 10:49:21 148

原创 leetcode-字符串分隔-89

【代码】leetcode-字符串分隔-89。

2023-04-25 19:11:46 163

原创 22届23届找工作的同学看这里

近期,在晚上经常刷到很多朋友说我22届毕业还没有找到工作,我23届考研失败还没找到工作,问怎么办,我想说其实在找工作的过程中是有很多技巧的,比如,简历 是否足够有吸引力,hr能够浏览简历的时间可能也就是10秒钟,这10秒钟你是否能够吸引到她,笔试过程中总是时间不够,很少有公司给面试机会等。因此,有需要的同学可以私聊我,免费进行指导,希望在这个都不容易的时代能够帮助更多的人早日上岸!

2023-04-24 17:07:24 188 1

原创 leetcode-明明的随机数-88

1.获取输入的元素个数。

2023-04-24 12:03:34 116

原创 leetcode-计算某字符出现次数-87

【代码】leetcode-计算某字符出现次数-87。

2023-04-24 11:14:38 115

原创 leetcode-字符串最后一个单词的长度-86

3.获取数组的元素个数,得到所需元素的下标。4.获取所需元素,并获取元素长度。2.将字符串以空格进行分割。

2023-04-24 11:10:28 46

原创 python-正则表达式re.match&re.search&re.compile&re.sub

正则表达式是一个特殊的字符序列,它能够帮助方便检查一个字符串是否与某种模式匹配,python中的re模块,提供Perl风格的正则表达式模式,使python语言拥有全部的正则表达式功能,也提供了与这些方法功能完全一致的函数。

2023-04-21 12:18:29 65

原创 文档在线转换工具

文档在线转换工具 pdf word

2022-12-30 18:57:27 101

原创 Linux-tmux工具

tmux工具的下载和使用

2022-11-08 19:04:04 155

原创 中关村产品报价网

中关村产品报价网

2022-10-27 12:34:16 225

原创 1024程序员节日快乐

1024程序员节日快乐!

2022-10-24 21:10:54 241 2

原创 Android-ASM字节码插桩与APT原理补充

APT补充1.策略模式2.SPI机制分析3.通过javac源码分析APT执行原理ASM1.逆波兰表达式2.java文件转换class文件基本规则3.ASM框架完成字节码插桩。

2022-10-17 16:13:03 1020

原创 Android-Super分区

super分区也叫做dynamic动态分区,动态分区是Android的用户空间分区系统,在Android R版本开始引入,目的是为了解决system和vender等分区size不能动态调整的问题。引入super动态分区之后,将system,vendor等分区一起“打包”在super分区中,物理分区表只有super,不再单独配置system,vendor等分区的配置,其中的子分区可以动态的调整大小。Super分区包含列出了每个子分区的名称和块范围的metadata元数据.属于LVM逻辑卷管理。

2022-10-08 10:43:24 4311

原创 Android-从本质层面了解数据结构与算法

1.计算机存储单元与存储结构分析2.算法与数据结构的关系3.基础存储单元与连续存储单元4.ArrayList与LinkedList结构分析5.HashMap底层存储原理详解6.Hash算法详解与Hash冲突7.HashMap头插法与尾插法的优缺点8.HashMap导致100%CPU解密

2022-09-16 15:34:30 822 1

原创 Android-IO加解密核心与dex文件改造过程分析

1.IO应用加解密核心原理2.文件加密的意义3.文件加密与文件混淆4.初探加密算法5.dex文件加密与解密6.APK打包流程与加壳过程7.APK解包流程与脱壳过程

2022-09-13 14:24:02 930

原创 Android-IO底层原理看序列化

底层原理看序列化和反序列化技术点1.序列化概念与目的2.序列化协议与特性3.API提供的序列化方案4.java的序列化步骤与数据结构分析5.Parcelable与Serializable的性能比较6.面试相关问题

2022-09-08 11:18:35 846 1

原创 Android-从Basic IO到NIO内核机制(原理篇)

8.系统在进行IO操作的时候,会有一组优化方案存在,在每次操作的数据为4k1页,但是为了优化可能扩展到8k,在分配到具体物理内存的时候,我给你8k数据,就占用8k数据,但是我看着你还不断的写,我提前先给你8k或者16k,下次,看你空间够用了,不分配,接着用,不够了再分配。3.IO的优化是在解决CPU的瓶颈问题,但是通常在C端很少会出现,所以在学习IO的角度上来说,我们不会把重点放在CPU瓶颈的解决,而是会探寻IO本质原理及序列化的应用与Dex文件的加壳脱壳。

2022-09-05 16:59:01 418 2

原创 Linux-Linux内核-进程调度

/////Linux调度器是以模块的方式提供的,这允许不同类型的进程可以针对型的选择调度算法。调度器类提供不同的调度算法,像CFS就是一个针对普通进程的调度器类(定义在kernel/sched_fair.c中),在Linux中称之为SCHED_NORMAL(在POSIX中称为SCHED_OTHER)。每个调度器都有一个优先级,内核会选择优先级最高的调度器,然后由该调度器调度进程并执行。...

2022-08-31 21:42:55 1518

原创 Android-AQS

AQS,全程AbstractQueuedSynchronizer,位于java.util.concurrent.locks包下,是JDK1.5提供的一套用于实现阻塞锁和一系列依赖FIFO等待队列的同步机器(First Input First Output先进先出)的框架实现,是除了java自带的synchronized关键字之外的锁机制,可以将AQS作为一个队列来理解。...

2022-08-25 23:51:09 619 2

原创 Android-线程池

1.救急线程性能提升2.状态设置对于线程池的管理3.原子合并利用位运算进行CAS的优化4.工厂模式的应用。

2022-08-11 14:20:43 586

原创 Android-CAS与原子变量(无锁并发和有锁并发)

对于并发处理,从业务角度出发看成两块:1.原子变量操作2.业务代码块的并发并发手段现在接触的是两种:1.加锁并发:synchronize(悲观)2.无锁并发:CAS应用实现(乐观)依靠核的支撑,最大限度保证不进行线程上下文的切换。...

2022-08-06 16:33:49 652

原创 Android-JMM内存模型-指令重排-Happens-Before原则-volatile-lock指令-内存屏障

  在计算机执行指令的顺序在经过程序编译器编译之后会形成指令序列,一般情况下,这个指令序列是会输出确定的结果,以确保每一次的执行都有一个确定的结果,但是,一般情况下,CPU和编译器为了提高程序执行的效率,会按照一定规则允许进行指令的优化,在某些情况下,这种优化会带来一些执行的逻辑问题,主要的原因是代码逻辑之间是存在一定的先后顺序。然而在并发执行的情况下,可能会发生二义性,会按照不同的执行逻辑,最终得到一个不同的结果。  JVM----编译的指令----JIT进行执行解释的时候会将指令进行优化优化:  1

2022-07-06 12:39:06 738 2

原创 Linux-设备驱动概述

文章目录Linux设备驱动概述1. 设备驱动的作用2. 无操作系统的设备驱动3. 有操作系统时的设备驱动4. Linux设备驱动4.1 设备的分类及特点4.2 Linux设备驱动与整个软硬件系统的关系4.3 Linux设备驱动的重难点5. 源代码阅读6. 设备驱动:LED驱动6.1 无操作系统的LED驱动6.2 Linux下的LED驱动Linux设备驱动概述1. 设备驱动的作用  对设备驱动的最通俗解释就是驱动硬件设备行动,驱动和底层硬件设备直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完

2022-04-24 12:51:54 2459

原创 Android-深入理解Binder(一)

文章目录深入理解Binder概述解析MediaServerMediaServer的入口函数ProcessStatedefaultServiceManager注册MediaPlayerService深入理解Binder概述Binder是Android系统提供的一种IPC机制(进程间通信),由于Android是基于Linux内核的,因此除了Binder以外,还存在其他的IPC机制,如管道和Socket等。Android系统基本上可以看作是一个基于Binder通信的C/S架构,Binder就像是网络一样,把

2022-04-21 19:27:25 2924 3

原创 答辩-PPT制作图片网站

PPT制作图片网站www.pexels.comwww.unsplash.comwww.pixabay.com

2022-04-13 17:53:42 150

原创 Android-深入理解常见类

文章目录深入理解常见类RefBase、sp和wp初识影子对象RefBase和它的影子sp上场sp析构的影响总结由弱生强总结破解生死魔咒延长生命的魔咒LIFETIME_WEAK的魔力LIFETIME_FOREVER深入理解常见类RefBase、sp和wpRefBase是Android中所有对象的始祖,RefBase结合sp和wp,实现了一套通过引用计数的方式来控制对象生命周期的机制,sp是strong pointer,wp是weak pointer。初识影子对象class A : public Re

2022-04-01 19:37:21 2732 1

原创 Java-对象的比较

对象的比较对象和对象的比较依赖于Object提供了equals方法,true相等,false不相等,所以,作为类的定义者,有责任重写来自Object的equals方法,作为类的使用者,必须调用equals方法进行比较而不是 == 来比较...

2022-03-28 12:35:01 232

原创 Java-Java不同于C/C++的基础语法-Java一些常见快捷键

文章目录不同于C/C++的基础语法字面量字面量的分割数组的声明数组获取长度打印数组的元素引用和对象类的加载class的定义包string类string的常用方法为什么String要设计成不可变对象?类和对象之继承重写finalabstract 抽象类interface接口Java一些常见快捷键不同于C/C++的基础语法字面量  0对应int  0L对应long  0.0对应double 8个字节  0.0F对应float 4个字节字面量的分割  1000_0000  在使用过程中可

2022-03-25 17:45:51 566 1

原创 Linux-http1.0-http1.1-http2.0区别

文章目录1. http1.0-http1.1-http2.0区别1.1 http1.0和1.1比较1.2 http1.1与2比较1. http1.0-http1.1-http2.0区别1.1 http1.0和1.1比较  1.http/1.0每次请求都需要建立新的tcp连接,连接不能复用  2.http/1.1连接可以复用  3.http/1.1在request消息头增加host,http1.0没有这个域  4.http/1.1增加了put,delete,connect等request方法1.

2022-03-19 23:28:08 214 1

原创 leetcode-序列化二叉树-85

题目要求代码实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: char* Serialize(TreeNode *root) { i

2022-03-17 15:06:32 90 1

原创 Android-深入理解zygote

文章目录zygotezygote分析AppRuntime分析创建虚拟机-startVm注册JNI函数-startRegWelcome to Java World建立IPC通信服务端-registerZygoteSocket预加载类和资源启动system_serverzygotezygote分析zygote最初的名字叫做app_process,这个名字在Android.mk文件中指定的,但是在运行过程中,app_process通过Linux下的pctrl系统调用将自己的名字换成了zygote,代码如下:

2022-03-16 16:50:27 4795 5

原创 leetcode-分糖果问题-84

题目要求代码实现#include <math.h>class Solution {public: int candy(vector<int>& arr) { vector<int> num(arr.size(), 1); int count = 0; for(int i = 1; i < arr.size(); i++) { if(arr[i] >

2022-03-16 10:42:27 1292 1

原创 leetcode-重建二叉树-83

题目要求代码实现/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#include <stack>class Solution {public: TreeN

2022-03-15 15:54:04 1602 4

原创 leetcode-字符串变形-82

题目要求代码实现class Solution {public: string trans(string s, int n) { stack<string> st;//用来存储反转 string str; s.push_back(' ');//避免特判 for(int i = 0; i <= n; i++) { if(s[i] == ' ')//以空格进行单词分割

2022-03-14 11:04:05 1391 2

原创 Android-深入理解init

文章目录initinit介绍学习路线init分析解析配置文件initinit介绍init是一个进程,它是Linux系统中用户空间的第一个进程,因为Android是基于Linux内核的,所以init也是Android系统中用户空间的第一个进程,它的进程号是1,本节关注几个重要的职责:1.init进程负责创建系统中的几个关键进程,尤其是zygote(后面会讲)2.Android系统有很多属性,于是init就提供了一个property service(属性服务)来管理他们,那么这个属性服务是怎么工作的呢

2022-03-11 19:35:33 4724 3

原创 leetcode-链表中的节点每k个一组翻转-81

题目要求代码实现class Solution {public: ListNode* reverseKGroup(ListNode* head, int k) { if(k <= 1) return head; ListNode* node = head; for(int i = 0; i < k; i++) { if(!node) ret

2022-03-08 11:48:35 264 6

原创 Android-深入理解JNI

文章目录JNIJNI概念学习JNI的实例:MediaScannerJava层的MediaScannerJNI层MediaScannerJNIJNI概念JNI是Java Native Interface的缩写,java本地调用,JNI是一种技术,可以做到以下两点:1.java程序中函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数2.Native程序中的函数可以调用Java层的函数,也就是说,C/C++程序中可以调用java的函数问题一:在平台无关的java中,为什么

2022-03-04 20:16:58 3041 8

原创 Java-javaSE不同于C/C++的语法

文章目录1. javaSE不同于C/C++的语法1.1 基本数据类型转换1.2 控制台输入1.3 数组的创建1.3.1 数组声明的两种方式1.3.2 数组创建的三种方式1. javaSE不同于C/C++的语法1.1 基本数据类型转换  1.java中可以从任意基本类型转型到另外的基本类型  2.boolean类型不可以转换为其他的数据类型1.2 控制台输入System.out.print("输入");Scanner scan = new Scanner(System.in);String r

2022-03-04 14:26:06 616

原创 Android-git常用操作集合

git常用操作集合创建仓库1.生成密钥,在终端执行

2022-03-03 14:43:40 1554 4

空空如也

空空如也

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

TA关注的人

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