自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我想月薪过万的博客

一直在努力,从未放弃

  • 博客(306)
  • 资源 (4)
  • 收藏
  • 关注

原创 Gradle入门使用简介

说明:1、在执行 Gradle命令的时候,会默认加载当前目录下的build.gradle脚本文件。2、可以通过 -b 参数指定需要加载执行的脚本文件3、-q 参数用于控制 gradle 输出的日志级别4、hello 是gradle脚本中定义的Task任务名。

2023-07-20 19:04:05 471

原创 web端video常用控制配置

【代码】web端video常用控制配置。

2022-10-16 10:21:53 1685 1

原创 Activity的启动过程详细分析

我们在平时开发中都知道通过这样的代码就可以启动一个Activity,如下但是,你有没有思考这个方法的大致实现呢?下面,我们一起来看看。1、一般我们都是通过调用来启动一个 Activity 的,紧接着它会调用其内部的方法,注意这里的,因为我们不需要返回result;2、接下来调用到了方法,它最终调用了如下代码:这个是什么呢?可以说它是应用进程的管家,监控着应用进程与系统的所有交互,所有的创建、暂停、停止activity,都是通过它去发起的,它可以统计所有的开销。...

2022-08-28 22:32:21 1699 1

原创 一文彻底教会你玩转java动态代理

代码】一文彻底教会你玩转java动态代理。

2022-08-14 22:53:32 526

原创 android room史上最快速入门教程(kotlin版本)

Android采用作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(ObjectRelationalMapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,GreenDAO等。Google也意识到了推出自家ORM的必要性,于是有了Room。...

2022-07-24 20:16:29 2086

原创 设计模式之观察者模式

Observer 接口的实现 Subject 接口 Subject 接口的实现 调用代码 效果展示

2022-07-10 20:15:11 536

原创 史上最全SurfaceView使用讲解

1、View主要适用于主动更新的情况下,而SurfaceView主要适用于被动更新,例如频繁地刷新。2、View 在主线程中对画面进行刷新,而 SurfaceView 通常会通过一个子线程来进行页面的刷新。3、View 在绘图时没有使用双缓冲机制,而 SurfaceView 在底层实现机制中就已经实现了双缓冲机制。总结,如果需要频繁刷新,或者刷新时数据处理量比较大,那么可以考虑使用 SurfaceView 。 kotlin逻辑文件1、通过 SurfaceHolder 添加 Surf

2022-07-10 11:48:42 2777

原创 Android Gradle三种自定义插件方式详解(含报错解决方案)

运行结果:1、新建一个 buildSrc 文件夹2、新建一个 build.gradle 文件,里面添加如下代码,然后点击 sync now,你就会发现 buildSrc 文件夹多了一个绿标 3、新建子目录 src/main/java ,并编写一个插件类4、在app下的build.gradle里面应用运行结果展示:1、新建一个独立的module,不要选错了!!!,2、在该模块下的build.gradle里添加依赖可能出现的报错 Build was configured to prefer s

2022-06-27 18:06:39 1914

原创 快速上手kotlin接口、抽象类及泛型

kotlin规定所有的接口属性和函数实现都要使用 override 关键字,接口中定义的函数并不需要open关键字修饰,他们默认就是open的代码展示: 接口里的属性和方法都得实现 属性实现可以选择在构造方法里,也可以不在构造方法里,如果不在构造方法里,就得设置get和set方法默认实现 我们也可以在接口里提供默认属性的getter方法和函数实现代码示例: 接口里属性修饰符是val,接口里属性必须提供get方法 接口里属性修饰符是val,实现类可以是val 或 v

2022-06-25 11:09:50 329

原创 史上最简洁Kotlin版EventBus的使用教程

GitHub - greenrobot/EventBus: Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.https://github.com/greenrobot/EventBus 1、配置gradle,导入依赖 2、定义Event类型(

2022-06-23 14:11:58 2388

原创 运行时数据区内部结构

内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。PC寄存器(程序计数器)...

2022-06-01 18:02:10 172

原创 ViewModel与LiveData的简单使用

使用注意点LiveData与ViewModel一般都是配合着一起使用。第一步:创建ViewModel类package com.example.jetpackdemo03;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewModel;public class NameViewModel extends ViewModel { private MutableLiveData<

2022-05-19 21:59:24 865

原创 用户自定义类加载器及具体实现

用户自定义类加载器在Java的日常应用程序开发中,类的加载几乎是由上节3种类加载器(引导、扩展和系统类加载器)相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。为什么要自定义类加载器隔离加载类 修改类加载的方式 扩展加载源 防止源码泄漏用户自定义类加载器实现步骤关于ClassLoaderClassLoader类,它是一个抽象类,其后所有的类加载器都继承自ClassLoader(不包括启动类加载器)获取ClassLoader的几种方...

2022-05-08 18:13:24 441

原创 几种类加载器的使用体会

类加载器的分类JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。 从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。 无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有3个,如下图所示:...

2022-05-06 14:35:11 400

原创 概述类的加载器及类加载过程

类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包含字符串字面量(这部分常量信息是Class文件中常量池部分的内存映射)类的加载过程加载1、通过一个类的全限定名获取定义此类的二进制字节流2、将这个字...

2022-05-05 18:20:43 297

原创 JVM系列笔记(一)

JVM的位置JVM是运行在操作系统之上的,它与硬件没有直接的交互。

2022-05-03 12:34:34 2242

原创 ThreadLocal详细解答(一)

官方描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是 private static 类型的,用于关联线程和线程上下文。总结:1、线程并发:在多线程并发场景下使用2、传递数据:我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量3、线程隔离:每个线程的变量都是独立的,不会互相影响基本使用常用方法使用案例线程

2022-04-27 12:25:24 228

原创 线程池基本原理详解答

线程池优点降低系统资源消耗。通过重用已存在的线程,降低线程创建和销毁造成的消耗。 提高系统响应速度。当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行。 方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换,cpu切换线程是有时间成本的,例如需要保持当前执行线程的现场,并恢复要执行线程的现场。 提供额外更强大的功能。延时定时线程池。...

2022-04-16 20:27:48 408

原创 【70】爬楼梯问题求解

题目描述思路分析当阶数为 1 时 ,解法为 1当阶数为 2 时 ,解法为 2当阶数为 3 时 ,解法为 3当阶数为 4 时 ,解法为 5......很明显可以分析出:一下公式:代码实现:递归法class Solution { public int climbStairs(int n) { if(n == 1) return 1; if(n == 2) return 2; return climbS

2022-04-14 11:59:17 224

原创 【力扣】76. 最小覆盖子串

题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。注意对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。 如果s中存在这样的子串,我们保证它是唯一的答案。示例示例 1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"示例 2:输入:s = "a", t = "a"输出:"a"示例 3:输入: ...

2022-04-09 22:30:31 241

原创 史上最全java泛型总结

java泛型的作用1、减少代码编写时类型的强转2、将类型强转代码运行期的报错提前到代码编译期java泛型的类型

2022-04-06 21:58:56 3048

原创 继承时父子类的初始化顺序是怎样的

在上一节中我们阐述了一个类被初始化的过程_super码王的博客-CSDN博客一个类被初始化的过程_super码王的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/123826227?spm=1001.2014.3001.5502下面我们来组合一下,当存在父子类的时候,他的类加载机制又是怎样的呢?代码设计父类package com.wust.yq;public class ParentClass { //静态.

2022-04-05 21:49:33 406

原创 一个类被初始化的过程

在上一讲中我们了解了JVM一个类的加载过程 :JVM一个类的加载过程_super码王的博客-CSDN博客

2022-03-31 15:03:18 626

原创 一文教你彻底玩懂Java反射

反射核心思想的图解所谓的反射是将一个类中的各个成员映射成相对应的Java类型反射获取构造方法我们以 User 类为例进行讲解:package com.wust.yq;public class User { //属性字段 private String username = "易齐"; int age = 30; protected float weight = 60.5F; public double height = 180.5;

2022-03-31 14:33:17 614

原创 JVM一个类的加载过程

七大步骤具体过程加载:classpath、jar包、网络、某个磁盘位置下的类的class二进制字节流读进来,在内存中生成一个代表这个类的 java.lang.Class 对象放入元空间,此阶段我们的程序员可以干预,我们可以自定义类加载器来实现类的加载;验证:验证Class文件的字节流中包含的信息符合《java虚拟机规范》的全部约束要求,保证虚拟机的安全;准备:类变量赋默认初始值,int为0,long为0L,boolean为false,引用类型为null;常量赋正式值;//常量

2022-03-29 16:57:26 1302

原创 java运行时一个类什么时候被加载

关键命令-XX:+TraceClassLoading项目框架分别创建 hello 和 user 两个类具体代码如下:hello.javapackage com.wust.yq;public class Hello { // -XX:+TraceClassLoading 监控类的加载 public static void main(String[] args) { User user = new User(); user.workin

2022-03-29 15:36:33 646

原创 Java单例模式的七种写法

概念简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。主要分为饿汉式和懒汉式这两种实现方式饿汉 和 懒汉主要区别在于 实例 初始化的时机不同饿汉式 :类加载的时候就初始化了实例,容易造成内存浪费。懒汉式 :需要使用时初始化实例,容易造成线程不安全实现思路简介构造方法私有化,保证不可以随便就能创建一个对象。 静态变量存储实例。 公开方法暴露实例以上总结的三步,不管是饿汉,还是懒汉,皆可以适用。他们之间的区别在于如何给这个静态变量 赋值。...

2022-03-28 16:22:01 362

原创 力扣之水果成篮史上最全解法

题目连接904. 水果成篮 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/fruit-into-baskets/题目描述解题思路像这种求最大长度的问题,滑动窗口成了最热门的解法。所谓滑动窗口 ,在我看来其实就是左右两个指针,右指针负责遍历数据,左指针根据条件移动,目标长度 = 右指针 - 左指针 + 1有了上面的大局观,我们就来结合本题目好好用一下滑动窗口:定义一个右指针 right,使用它.

2022-03-28 12:06:43 801

原创 Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are

dart下载网址:Dart for Windows (gekorm.com)https://gekorm.com/dart-windows/flutter中文网站:Flutter SDK 版本列表 | Flutter 中文文档 | Flutter 中文开发者网站https://flutter.cn/docs/development/tools/sdk/releases下载最新版本即可并将其bin目录配置在环境变量PATH中问题一:报错详情解决办法解决效果.

2022-03-23 22:36:15 9963 1

原创 插入排序史上最经典的实现方式

插入排序的原理插入排序的代码实现循环法let arrayData = [44, 3, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];let insertSort = (arr) => { //对于第0个元素 只有一个元素,所以没有比的必要,我们就从第1个元素开始 for (let i = 1; i < arr.length; i++) { //取出遍历到的元素

2022-03-18 19:18:41 448

原创 选择排序史上最经典实现方式

选择排序原理不得不说,选择排序和上一节我们讲的冒泡排序真的有点像,但是两者还是有点区别的,差别在于冒泡排序 是相邻元素进行比较,选择排序是选择一个基准,和其余的全部进行比较。代码实现双循环法let dataArr = [44, 3, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]var selectSort = (data, len) => { //目标数组有 len 个元素,所以我们每个遍历数组中的每一个元素 进行..

2022-03-16 18:49:15 510

原创 冒泡排序史上最经典的实现

冒泡排序概念讲解简单点说,冒泡排序就是将大的数通过一步步比较放在右边,将小的数一步步放在左边。代码实现本代码不是最优代码,但是肯定是最容易理解的代码双层循环法var arry = [44, 3, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]const bubblesort = function (arr) { //第一次需要排15个元素,第二次需要排序14个元素,所以从15个元素慢慢递减 15 14 ... f

2022-03-15 10:46:01 1190

原创 一文彻底让你明白https是如何加密的

http和https之间的关系由于http是明文传输,对数据安全没有保障。为了保证数据传输的安全性,https诞生了。https是在应用层和传输层之间,增加了一层ssl加密。对于如何加密的,是本篇博客的重点。对称加密(1)在发送数据之前,服务器先生成一把密钥(2)然后先通过明文传输的方式将密钥传递给客户端(3)之后服务器给客户端传送数据的时候,会用这把密钥 对数据进行加密(4)客户端收到加密数据之后,用刚刚收到的密钥对数据进行解密缺点:因为密钥是明文传输,所以容易被人截获

2022-03-11 21:14:59 6591

原创 快速排序算法史上最经典实现

快速排序算法经典介绍快速排序算法实现原理图解第一步:第二步: 取出基准值第三步:先右指针往左遍历,遇到比基准值44小的就填补到左指针指向的位置第四步:左指针向右遍历,遇到比基准值大的就放到右指针指向的位置第五步:重复第三步和第四步,直到左右指针指向同一个位置,然后将基准值放入该位置第六步:第五步之后很明显得到了左右序列,下面只需要对左右序列递归即可。快速排序代码实现var arry = [44, 3, 38, 5, 47, 15, 36, 26, .

2022-03-08 22:48:18 303

原创 Volatile的其他特性

2.1 volatile总体概览在上一节中,我们已经研究完了volatile可以实现并发下共享变量的可见性,volatile除了保证可见性外,volatile还具备如下一些突出的特性:volatile的原子性问题:volatile不能保证原子性操作禁止指令重排序:volatile可以防止指令重排序操作2.2 volatile不保证原子性2.3 代码测试package Ls;/** * 目标:研究Volatile的原子性操作 * <p> * 基本观点:V.

2022-03-03 09:35:00 3692

原创 volatile关键字概览

1、多线程下变量的不可见性1.1 概述在多线程并发执行下,多个线程修改共享的成员变量,会出现一个线程修改了共享变量的值后,另一个线程不能直接看到该线程修改后的变量的最新值。package Ls;import java.util.HashMap;import java.util.concurrent.ThreadPoolExecutor;/** * ClassName: Main <br/> * Description: 目标:研究一下多线程下变量访问的不可见性现象

2022-03-02 22:19:55 457

原创 【sm2算法】基于mbedtls开源库国密算法的使用(二)

在上一节中我们讲解了mbedtls基础知识:sm2环境、sm2公私钥的存储以及sm2公私钥的生成。【sm2算法】基于mbedtls开源库国密算法的使用(一)_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/123192953?spm=1001.2014.3001.5501在这一节我们就反着来玩一下,开发场景如下:我们已经明确的知道sm2加密算法的公私钥,如何将其放入sm2环境中???涉及到的具体方法/**

2022-03-01 15:31:34 1753 3

原创 【sm2算法】基于mbedtls开源库国密算法的使用(一)

基础知识(1)公钥:在代码编程中,公钥是使用64个字节来存储的。(2)私钥:在代码编程中,公钥是使用32个字节来存储的。对应的代码具体实现(1)mbedtls sm2环境在 mbedtls 中 sm2 环境是用结构体 sm2_context 结构体来表示的,具体结构体如下所示:typedef struct { mbedtls_ecp_group grp; /*!< elliptic curve used group */...

2022-02-28 22:55:14 3078 4

原创 【Redis详细教程】Linux下如何安装Redis

第一步:下载 rediswget https://download.redis.io/releases/redis-6.2.6.tar.gz第二步:解压 redis-6.2.6.tar.gz 并将其重新命名为 redistar -xvf redis-6.2.6.tar.gz //解压tar包mv redis-6.2.6 redis //重命名第三步:进入redis文件夹输入 make 进行编译make第四步:编译后进入src目录下...

2022-02-25 22:12:53 896

原创 【面试题】java常考面试题

java中sleep方法和wait方法的区别sleep是线程中的方法,但是wait是Object中的方法 sleep方法不会释放锁,但是wait会释放锁 sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字 sleep不需要被唤醒(休眠之后退出阻塞),但是wait需要(不指定时间需要被别人中断)HashMap的底层数据结构是怎么样的?JDK1.7及以前是数组加链表JDK1.8及以后是数组和链表以及红黑树JDK1.8什么时候链

2022-02-23 21:54:53 249

react学习资料中所需要的依赖包,在此下载即可

react学习资料中所需要的依赖包,在此下载即可

2022-05-10

alipayshare_Android_SDK.zip

支付宝应用签名专用软件

2021-10-27

Android调用系统相机/相册并裁剪源码

Android调用系统相机/相册并裁剪源码

2021-10-23

asm-bo-0.3.5.zip

ASM BYTECODE OUTLINE插件

2021-09-05

空空如也

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

TA关注的人

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