自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kernel Exception基本流程

Kernel Exception基本流程框架:一张网络上的图通俗易懂。空间布局:32 bit 为例,先说概括一下用户空间吧;对于32位的RAM来说,最大的访问空间是4G,其中用户空间占0-3G,每个进程独享的;内核空间占3G-4G,所有进程共享。接下里是那1G大小的内核空间:vmlinux代码/数据段:任何程序都有TEXT(可执行代码),RW(数据段),ZI段(未初始化数据段),用户空间也有,对应的是.text,.data,.bssmodule区域:kernel可以支持ko(模块),因

2022-04-01 09:42:54 3346

原创 Watchdog机制原理

Watchdog机制1.什么是SWT:Softwere Watchdog Timeout,顾名思义就是软件超时监控狗。Watchdog.java 位于frameworks/base/services/core/java/com/android/server/Watchdog.java2.为什么需要SWT:System Server 进程是Android的一个核心进程,里面为App运行提供了很多核心服务,如AMS、WMS、PKMS等等,如果这些核心的服务和重要的线程卡住,就会导致相应的功能异常。如果

2022-03-16 11:18:40 10647 1

原创 Launcher3 桌面加载流程分析

Launcher3 桌面加载流程分析主入口Launcher首先来看Launcher.java的onCreate方法,里面代码很多,只看主流程部分:@Overrideprotected void onCreate(Bundle savedInstanceState) { ...... LauncherAppState app = LauncherAppState.getInstance(this); ......}这里的LauncherAppState类是用来保存一些全局

2022-03-01 17:29:45 3694

原创 DirectBoot阻塞开机详解

DirectBoot阻塞开机DirectBoot介绍当设备已开机但用户尚未解锁设备时,Android 7.0 将在安全的“直接启动”模式下运行。为支持此模式,系统为数据提供了两个存储位置:(Credential encrypted storage)凭据加密存储,这是默认存储位置,仅在用户解锁设备后可用。(Device encrypted storage)设备加密存储,该存储位置在“直接启动”模式下和用户解锁设备后均可使用。默认情况下,应用不会在Direct Boot模式下运行,如果需要在该模式

2022-02-24 16:12:48 3711

原创 Android 开机流程

Android 开机流程Android 系统启动流程1.启动电源即系统启动:当电源键按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。2. 引导程序BootLoader:引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。3. Linux Kernel 启动:当Kernel启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在文件系统中寻找i

2022-02-24 15:59:00 6300 1

原创 Android 四大组件之一 Activity

Android Activity生命周期:onCreate() :它在活动第一次被创建的时候调用,所以在方法中完成活动的初始化操作,比如加载布局文件、初始化View、事件绑定等。只会被调用一次。onStart() : 在活动在屏幕上由不可见变为可见的时候该方法被调用,但是在这个时候界面是不可交互的。在调用onRestart()方法后会再次调用onStart()方法。onResume() : 在活动准备好可以和用户进行交互的时候该方法被调用。此时的活动是处于任务栈的栈顶,并且处于运行状态的。on

2022-01-27 17:16:07 1781

原创 Android四大组件

Android四大组件Activity(活动)Service(服务)Broadcast Receive(广播接收者)Content Provider(内容提供者)1.Activity1.1定义:Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几乎都要依托于Activ

2022-01-27 16:58:24 246

原创 深入理解volatile

一.概念volatile是JVM提供的轻量级的同步机制,它有如下三大特性:保证可见性不保证原子性禁止指令重排(保证有序性)二.JMM之可见性JMM(Java内存模型Java Memory Model 简称JMM)本身就是一种抽象的概念并不真实存在,它描述的是一组规范或规则,通过这组规范定义了程序中的各个变量(包括实例字段、静态变量、构成数组对象的元素)的访问方式。JMM关于同步的规定:线程解锁前,必须把共享变量的值刷从工作内存回主内存线程加锁前,必须读取主内存中的最新值到自己的工作内

2021-12-22 23:06:28 540

原创 spring boot实现图书管理系统

spring boot实现图书管理系统我的版本:spring boot 2.6.0java 11log4j 1.2.17druid-spring-boot-starter 1.2.6mybatis-spring-boot-starter 2.2.0程序部分截图:源码链接:https://gitee.com/zhang-zhang-hao/spring-boot-library数据库sql也在里面!...

2021-12-20 19:28:28 775 1

转载 java中数据类型的分类

java中数据类型的分类我们知道Java是强类型语言,那么肯定对应的也就有弱类型语言,以下是强类型语言与弱类型语言的区别:强类型语言:强类型语言也就是强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过转换,那么该变量就永远是此数据类型了。(如:定义一个整型变量叫“a”,程序也只会认为“a”这个变量是整型,并且不可能把它来当作字符来处理。)强类型语言也是类型安全的语言。弱类型语言:弱类型语言也就是同强类型语言相对的语言,也就是说它的数据类型是可以被忽略的语言。它与强类型语

2021-12-16 14:51:40 1559

原创 java中的四种引用类型

java中的引用类型对象引用的强度比较:强引用(Strong Reference)> 软引用(Soft Reference)> 弱引用(Weak Reference)> 虚引用(Phantom Reference)Strong Reference :所谓强引用,就是我们最常见的普通对象引用,只要还有一个强引用指向对象,就表名对象还活着,立即回收器就不会去染指。对于一个普通对象,如果没有其它引用关系,只要超过了引用的作用域或者显式的将相应的强引用赋值为null,就可以被垃圾回收器进行

2021-12-16 14:33:06 285

原创 什么是守护线程

什么是守护线程守护线程:​ 顾名思义,为所有非守护线程(用户线程)提供服务的线程;任何一个守护线程都是整个jvm中所有非守护线程的保姆。它类似于整个进程中一个默默无闻的小老弟,它的生死无关重要,基本上没有人去关注它,但是它依赖与整个进程而运行,比如哪天其它线程结束了,没有需要再执行的了,程序就结束了,无需过问守护线程的意见,直接咔嚓。注意:由于守护线程的终止是无法控制的,因此重要的操作分配给它,比如说IO、File等,因为它不靠谱,说不定文件正写着,突然就结束了。作用:​ 说到这里肯定就感觉守护线

2021-12-13 16:40:22 465

原创 线程有几种状态?

线程的生命周期?线程有几种状态?线程的状态通常有五种:创建、就绪、运行、阻塞、死亡。其中阻塞呢又分为三种情况:等待阻塞:运行的线程执行wait方法,则该线程会释放占用的的所有资源,jvm会把该线程放入==“等待池”==中,进入这个状态后是不能被自动唤醒的,需要调用notify/notifyAll 方法才能被唤醒。同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被其它线程占用,则jvm会把该线程放入==“锁池”==中。其它阻塞:运行的线程执行sleep/join方法、或者发出了I/O请求时,

2021-12-11 14:55:56 5145

原创 springBoot实现记住我功能

springBoot实现记住我功能前端:<input type="checkbox" id="remember">var isChecked = $("#remember").prop("checked")console.log(isChecked)// false/true后端:​ 接收前端传过来的isChecked进行判断,如果勾选就给客户端返回一个Cookie@PostMapping("/remember")public String remember(HttpServl

2021-12-09 09:22:45 687

原创 java实现多继承的三种方式

java如何实现多继承​ 众所周知,Java是一种面向对象的只允许单继承的语言,这是每个Java程序员从业者都知道定理。那么可不可以通过一些手段实现多继承呢?答案是可以!实现多继承有三个方法:多层继承内部类接口多层继承​ 如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承一般不建议超过三次。class A{//父类A类 private int num=10; public int getNum(){ return th

2021-12-05 19:14:32 35433 1

原创 java接口

interface1. 接口的修饰符​ 默认就是abstract,因为interface本身就是抽象的,加不加都一样。(把public去掉也没什么问题,接口中默认的访问修饰符就是public,因为接口就是哪来被实现的。)public interface Demo1 {}public abstract interface Demo2 {}interface Demo3 {}2.接口中的方法修饰符​ 默认就是public abstract 进行修饰,在阿里巴巴规范中提到接口中的方法和属

2021-12-05 19:13:46 483

原创 java抽象类

抽象类##1.抽象类的基本概念​ 普通类是一个完善的功能类,可以直接实例化对象,并且普通类中可以包含构造方法、普通方法、static方法、常量、变量等内容,而抽象类就是在普通类的结构里面增加抽象方法的组成部分。抽象类是对根源的抽象,而接口是一个特殊的抽象类,是对动作的抽象。​ 拥有抽象方法的类必须为抽象类!2.定义一个抽象类:abstract class Demo1 { public static void test1() { System.out.println("抽象类

2021-12-05 19:13:11 716

原创 SpringBoot实现邮件发送

SpringBoot实现邮件发送第一步导入springBoot的mail启动器<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s

2021-11-23 18:23:07 471

原创 JVM(Hotspot)

JVM(Hotspot)一.介绍JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。##二.JVM结构图2.1程序计数器(

2021-10-21 11:07:20 2119

原创 AJAX请求中的问题

AJAX请求中的问题##一.请求中出现400状态码报400,主要有两种形式:bad request 意思是 “错误的请求”invalid hostname 意思是 “不存在的域名”处理方法使用新版jquery二.请求中出现乱码导入jackson包<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-dat

2021-09-22 15:55:03 205

原创 Java逻辑运算符与八种基本数据类型

逻辑运算符& 与 false&true false 有一个为 false就为false| 或 false|true true 有一个为true就为true^ 异或 true^false true 两个相同为false,否则为true! 非 !true false

2021-09-18 14:46:16 430

原创 SSM框架整合

SSM框架整合一.环境1.1 SSM版本Mybatis 3.5.6Mybatis-spring 2.0.6Spring-webmvc 5.2.41.2MyBatis-Spring 适用的版本1.2 相关依赖及静态资源导出(Maven)<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.

2021-09-18 14:44:00 264

原创 scrapy 爬取苏宁图书

一.项目要求从每个大分类中获取里面的小分类从小分类里面获取图书列表,并进行翻页获取从图书列表里面获取每本书里面的详细信息二. 需要用到的库scrapy(整个爬虫的实现)re(需要用正则匹配需要的数据)copy(需要用到deepcopy)三. 开撸创建爬虫项目及爬虫scrapy startproject suningscrapy genspider book suning.com找到初始url地址start_urls = ['https://book.suning.

2021-05-16 01:25:55 415

原创 selenium实现zhilian招聘的爬取

一.主要目的:最近在玩Python网络爬虫,然后接触到了selenium这个模块,就捉摸着搞点有意思的,顺便记录一下自己的学习过程。二.前期准备:操作系统:windows10浏览器:谷歌浏览器(Google Chrome)浏览器驱动:chromedriver.exe (我的版本—>89.0.4389.128 )浏览器驱动需要根据你自己当前浏览器的版本来进行下载链接 http://chromedriver.storage.googleapis.com/index.html

2021-04-18 19:16:14 1202 8

原创 Python网络爬虫实战小项目

Python爬虫美女网之其乐无穷爬取目标:美女网的相关信息实现时需要用到的包:requests库Beautifulsouptimejson值得注意的是 Beautifulsoup 在bs4里 ,记得pip install bs4 安装一下目标分析:从页面中找出需要信息的位置很容易找到 class="content-box " 这个属性就是我们需要信息的位置,然后注意右下角的箭头,很明显这个标签属性是唯一的,看得出第一页就是10张图片,有了这个信息,我们就可以进一步分析所需

2021-04-12 00:45:41 567

原创 Python简单小爬虫

Python爬虫—古诗文网爬取目标:古诗文网的名句及其出处实现方法:requests库实现网络请求xpath实现数据提取目标分析:获取页面规则很明显,所有需要爬取的内容都在 div[@class=“sons”]下,因此只需要遍历该列表即可获得所需内容的位置,接下来进行xpath解析获得所需要的数据。获取下一页url分析可知,下一页的url在div[@class="pagesright "]/a[@class=“amore”]/@href 里面,值得注意的是,此处获取到的ur

2021-04-03 00:08:03 271 2

原创 循环语句的基本使用

循环语句的基本使用while循环for循环continue关键字的使用break关键字的使用while循环(当 条件满足时,会不断的运行,直到指定的条件不满足为止)语句格式:while 判断条件:​ 执行相应的代码比如说求1~100之间所有整数的和,应该怎么写呢i = 0 #定义一个初始值result = 0 #定义一个变量来保存所有数字的合while i < 100: i += 1 result += iprint(resul

2020-08-31 12:21:24 274

原创 if 语句的使用

if 语句的使用:条件判断语句if…elif…elif :if 条件一: 执行相应代码elif 条件二: 执行相应代码条件一满足就执行,不满足就会往下执行elif,直到满足为止,如果到该if语句的最底端没有满足的条件,则没有执行。if…else :if 条件一: 执行相应代码else 条件二: 执行相应代码条件一满足就执行,不满足就直接执行条件二,两者之间必有一个执行。隐式转换if 6 : print('Hello My

2020-08-24 14:29:05 1547

原创 Python基础数据类型

python中的基本数据类型:数字类型布尔类型字符串类型列表类型字典类型元组类型集合类型还有一个特殊常量None,末尾有说。数字类型int 整数型python中没有大小限制,某些语言有限制。float 浮点型即小数,如3.14complex 复数real + image ,实部和虚部都是浮点数,虚部的后缀是"j"或者"J"long 长整型(Python3中已经舍去)布尔类型(bool)False假 或者 0Tru

2020-07-26 18:50:32 147

空空如也

空空如也

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

TA关注的人

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