自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android面试题:MVC、MVP、MVVM

具有控制的部分功能,若想无限增强它的功能,甚至控制器的全部功几乎都可以迁移到各个View上(不过这样不可取,那样View干了不属于它职责范围的事情)。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。客户端开发最常用的重用是View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同模块的model都不同。2.Model:对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算,变更等操作也是必须放在的该层的。

2023-08-24 10:57:37 1510

原创 【Android基础面试题】ViewPager与ViewPager2的区别

ViewPager2提供了一些新的功能,如无从右到左(RTL)的布局支持和停用用户输入的功能(setUserInputEnabled、isUserInputEnabled)。ViewPager2内部实现了懒加载,默认不进行预加载,通过Lifecycle对Fragment的生命周期进行管理。ViewPager2的内部实现是RecyclerView,而ViewPager是通过继承自ViewGroup实现的。因此,ViewPager2的性能更高。的滑动页面控件,具有更高的性能和更多的功能。

2023-08-21 09:53:09 930

原创 记录测试代码

记录测试代码import android.graphics.Colorimport android.os.Bundleimport android.os.Handlerimport android.os.Looperimport android.os.Messageimport android.view.Gravityimport com.blankj.utilcode.util.SizeUtilsimport com.wind.base.BaseActivityimport com.wi

2022-04-02 15:47:24 2085 1

原创 【工具类】使用Spannable设置TextView的各种样式

废话不说,直接上图描述上图包含以下各项操作:textView内容中的关键字添加点击事件textView内容添加下划线textView内容添加删除线textView内容中的关键字添加删除线textView内容设置斜体textView内容中的关键字设置颜色textView内容中的关键字设置颜色+单位textView内容中的关键字设置背景色textView内容中的关键字添加超链接textView内容中的关键字设置大小textView内容中的关键字设置大小(关键字大小为默认字体大小的多

2021-12-27 16:32:38 1828

原创 【亲测有效】WebView内的本地网页,使用XMLHttpRequest加载失败

问题描述使用WebView来显示本地网页时,如果开发人员在网页里使用了XMLHttpRequest来额外加载本地文件,在部分手机上会呈现下列的错误讯息:Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///asset/content.txt'问题原因发生这个错误的原因,是因为Android基于安全性的考虑,从Android 4.1版开始禁止了WebView内的本地网页使用XMLHttpRequest来读取本地档案

2021-06-29 17:33:01 1343 1

原创 【亲测有效】:genymotion输入中文

问题:使用genymotion模拟器的时候,发现genymotion本身是不支持中文输入法的,怎样才能输入中文?这里给出一种解决方案:1、本地下载好 必应输入法的apk文件(在豌豆荚官网下载到本地,必应输入法亲测可用)(下载链接:https://www.wandoujia.com/)2、启动模拟器,直接将上面下载好的apk文件拖拽到模拟器屏幕上,会自动传输和安装 ps:这个就不需要图了吧3、按照步骤激活使用必应输入法4、之后弹出键盘就可以输入中文...

2021-03-23 11:19:46 959 2

原创 【亲测有效】Windows下ndk工具编译curl库生成.a文件

libcurl版本:7.73.0ndk版本:好像是最新版本编译android版本:arm64-v8a / all编译步骤:1. 新建jni文件夹,把libcurl源码所有文件拷贝到jni文件夹2. 在jni目录添加以下两个mk编译文件Android.mkLOCAL_PATH:= $(call my-dir)CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline \-Wnested-externs -..

2020-11-20 15:46:46 974

原创 android实现天气预报App(1)——全国省、市、县三级列表

前期准备工作首先创建XXXWeather项目,具体的我就不多说这里使用LitePal来管理App的数据库我们在app/build.gradle文件中增加App需要用到的依赖 implementation 'com.google.android.material:material:1.0.0' implementation 'org.litepal.android:core:1.4.1'...

2019-09-30 11:39:14 16631 10

原创 android实现天气预报App(0)

首先来看看目录结构activity:主要是天气预报的各个页面db:存放省、市、县三种数据的实体类gson:存放获取的天气相关的json实体类service:天气等数据更新相关代码的存储utils:存放的是一些网络请求,数据存储等相关工具类相关功能本天气预报App主要是在看郭霖大神的《第一行代码》时,顺便写一个练练手的,同时也有自己的一些改变。先看看图吧:基本功能如图所示...

2019-09-30 10:08:47 18260 43

原创 记录问题——Session 'app': Install failed.

发现问题在使用百度地图SDK时,在AndroidManifest.xml中增加了几个权限,和标签,又注册了LBS SDK中的服务,结果出现以下问题在网上搜了好多方法都不行,查看Event LogFailed to commit install session 2087392238 with command cmd package install-commit 2087392238. Err...

2019-09-29 11:15:08 2890 1

原创 解决方案----Android中出现 Cannot resolve symbol XXX

话不多说,直接上图解决方案1:然后点击解决方案2:1.哪个Jar包有问题就把该配置注释掉,比如下面这个:dependencies { //implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' //implementation 'com.android.support:desig...

2019-09-02 19:48:42 1569

原创 解决方案----标题栏使用 setSupportActionBar(toolbar) 后报错

标题栏使用 setSupportActionBar(toolbar) 后报错This Activity already has an action bar supplied by the window decor.Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBarto false in y...

2019-09-02 19:40:28 2399

原创 C++:堆栈溢出问题?

堆栈溢出的原因1.函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。2.动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态空间使用的是堆空间,动态空...

2018-09-21 18:31:09 4032

原创 C++:while(cin>>tmp)无法结束

有这样一段代码:int tmp;vector<int> arr;while (cin >> tmp){ arr.push_back(tmp);}for (int i = 0; i < arr.size(); i++){ cout << arr[i] << ' ';}运行输入:结果是无法结束,怎么回事呢?...

2018-09-14 20:25:46 2852

原创 解决:CentOS 7下yum install mysql-server无包可用

在Linux下安装mysql,同时要把mysql-server安装完成,但是使用yum安装会出现以下问题解决方法 如下:首先输入以下命令 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm然后输入ls 进入目录会发现有安装包输入以下命令rpm -ivh mysql-communi...

2018-09-08 10:07:48 3714 1

原创 面试题:虚函数与纯虚函数的区别

1.虚函数和纯虚函数可以定义在同一个类中,含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。2.虚函数可以被直接使用,也可以被子类重载以后,以多态的形式调用,而纯虚函数必须在子类中实现该函数才可以使用,因为纯虚函数在基类有声明而没有定义。3.虚函数和纯虚函数都可以在子类中被重载,以多态的形式被调用。4.虚函数和纯虚函数通常存在于抽象基类之中,被继承的子类重载,目的是提供...

2018-09-03 17:21:11 3950

原创 Struct和Class的区别

一、c++最初被称为“c with class”,足见class在c++中的地位。在c++中我们可以用class自定义用户数据类型,然而它还存在一个类似的——struct,他们似乎有着太多的相同的特点与功能。C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。最本质的一个区别就是默认的访问控制,体现在两个方面:   ...

2018-09-03 17:13:07 944

原创 STL之迭代器&&迭代器失效

1.说说设计模式?(迭代器模式)        迭代器模式作为STL的六大组件之一,通俗来讲,它就是用来遍历容器的,对容器进行一定的操作。我们通常使用的容器vector、list、map、set、multimap、multiset、deque,内部是实现有顺序表、链表、红黑树。如果我们遍历这些容器就要明白它们的底层构造,相当不方便。iterator被定义出来就是不需要了解这些容器的底层实现,来...

2018-08-11 19:59:59 453

原创 C++四种强制类型转换的机制与功能

C++四种强制类型转换1.static_cast(编译时处理)用于两个相关的类型的转换,属于静态转换(非多态类型转换)2.const_cast(编译时处理)删除已有变量的const属性,方便赋值,但是修改的话还是要加上volatile关键字只能对指针或者引用去除或者添加const属性,对于变量直接类型不能使用const_cast; 不能用于不同类型之间的转换,只能改变同种...

2018-08-09 11:29:19 1296

原创 C++11新特性之一

1.初始化方式C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号 (=),也可不添加。vector<int> v;v.pushback(1);...vector<int> v{1,2,3,4,5};...map<string,string> dict{{"in...

2018-08-09 01:33:30 221

原创 访问空指针程序崩溃的底层剖析

在C/C++程序中,我们访问空指针,产生“不可预料”的错误,导致程序崩溃,那为什么程序会崩溃呢? 访问指针的时候虚拟地址就会向物理地址映射,此时页表会去查看这块地址,而这块地址被存放在只读区,当页表发现地址是无效的,就会反映给操作系统,操作系统就会发送11号信号终止此进程,所以进程异常终止程序崩溃在 Linux 系统中:访问空指针会产生 Segmentation fault 的错误。...

2018-08-04 18:53:59 3204

原创 正则表达式

shell编程之正则表达式部分正则表达式简介 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找以及替换操作。正则表达式与通配符这里归纳一下:正则表达式:主要用来匹配文件内容,如greo包含匹配通配符:主要用来匹配文件名,如find完全匹配基础正则表达式字符截取命令cut [选项] 文件...

2018-08-01 17:24:21 689

原创 shell编程之条件判断与流程控制

shell编程之条件判断语句与流程控制简单点来说就是if,for,case,where之类的判断语句,然后结合一些shell命令来达到简化一些操作。下面的内容是重点,是条件判断的重点!!!刚开始不理解也没关系,下面有实例演示。按照文件类型判断判断格式 [ 需要进行判断的语句 ]按照文件权限进行判断两个文件之间进行比较两个整数之间比较字符串的判断...

2018-08-01 17:20:17 945

原创 shell运算符

declare [+/-][选项] 变量名-表示给变量设定类型属性+表示取消掉设定的类型属性选项:a 数组类型i 整数类型x 设为环境变量r 将该变量设定为只读属性,设定后无法被unset取消掉,无法修改其中的内容p 显示指定变量的被声明类型整数类型例子x=1y=2declare -i result=$x+$yecho $result#结果是3,不是之...

2018-08-01 17:08:36 137

原创 shell变量

shell编程简介shell编程目的主要是为了简化管理人员的管理操作,算是为偷懒找了一个好的办法。变量定义 变量是计算机内存的单元,其中存放的值可以改变。 变量让你能够把程序中准备使用的每一段数据都赋值给一个简短、易于记忆的名字,因此他们十分有用。 变量的命名规则变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成。变量名的长度不得超过25...

2018-08-01 17:02:45 175

原创 C语言复习—模拟实现C库函数、atoi

模拟实现C语言库函数str库函数\#include <stdio.h> \#include <stdlib.h> \#include <assert.h> 1.模拟实现strcpy 将源字符串src拷贝赋值到目标字符串dest中char *my_strcpy(char *dest, const char* src){ ass...

2018-08-01 15:40:47 282

原创 n!的末尾0的个数

题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 。解题思路: 对于这样的问题,我们可以换个思维方式,它要求0的个数,那么0是怎么来的? 是不是一对2*5得到的0,所以我们可以分解这个问题分,把他看作是求整数n分解质因数后,一共有多少组min(2,5),在当然2的个数肯定比5多,所以我们继续往...

2018-07-30 14:24:55 3418

原创 动态内存分配、malloc与new的区别

内存分配先看内存的分布状况 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束 时可能由OS回收 。分配方式...

2018-07-29 10:03:27 29220 5

原创 C语言复习—宏与函数、sizeof与strlen区别总结

#define定义的宏和函数的比较程序编译过程 预编译阶段(*.i) —>编译(*.s)—>汇编(*.o)—>链接 预处理在预编译阶段,做一些代码文本的替换工作,主要处理#开头的预编译指令。 C语言提供的预处理功能有: 1)宏定义 2)文件包含 3)条件编译 宏定义的函数和用户自定义的函数的区别及优缺点? 宏的优势 ...

2018-07-27 11:46:42 1364

转载 C++面试经典总结

1.    面向对象的程序设计思想是什么?答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。2.    什么是类?答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。3.    对象都具有的两方面特征是什么?分别是什么含义?答:对象都具有的特征是:静态特征和动态特征。静态特征是指能描述对象的一些属性(成员变量),动态特征是指对象表现出来的行为(成员函数)...

2018-07-27 09:46:07 1720

原创 C/C++经典面试题总结

面试题3:sizeof和strlen的区别sizeof和strlen有以下区别:     sizeof是一个操作符,strlen是库函数。     sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为‘\0‘的字符串作参数。    编译器在编译时就计算出了sizeof的结果。而strlen函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而...

2018-07-27 09:39:37 2153

转载 C语言面试题总结

1 预处理问题1:什么是预编译?何时需要预编译?答:预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。.何时需要预编译:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包...

2018-07-26 22:07:16 30157 1

原创 C语言复习—谈谈你理解的指针

指针讲讲你理解的指针 什么是指针呢? 指针实质上就是地址,而地址是内存单元的编号(不能重复),所以说,一个变量可以有两个地址,但是两个变量不能存在同一块地址空间中。指针就是一个存放地址的变量。指针也有大小,在32位平台下是4个字节,在64位平台下是8个字节。指针相减运算求的是两块内存之间的地址差。 为什么要用指针? 1. 可以处理堆中存放的大型数据。 2. 可以...

2018-07-26 18:09:49 515

原创 C语言复习—结构体的内存对齐规则、位段的内存分配、枚举的优点

结构体的内存对齐规则、枚举的优点结构体 如何对齐 1. 将结构体第一个成员放在与结构体偏移量为0的地址处; 2. 其他成员要对齐到对齐数的整数倍处,对齐数 = 编译器默认的一个数字 与 该成员大小的较小值。 3. 结构体的总大小为对最大齐数的整数倍。 对齐原因 1. 栈上存储的数据内存尽可能的在自然边界上对齐。 2. 为了访问未对齐的内存,...

2018-07-26 14:09:36 285

原创 C语言复习—static/const/volatile关键字

static/const/volatile关键字static 先从C语言开始 1- static修饰代码块内部的变量(局部变量),改变了变量的存储类型,变量将从栈区转到静态区,不改变变量的属性和作用域。 2- static修饰局部变量,具有 “记忆性” 的特点,还可以延长它的生命周期。 3- 普通的局部变量是在栈上分配空间,因此每次调用函数时,分配的空间可能都不...

2018-07-26 14:05:29 315

原创 复习—C复习重点总结

C复习重点总结 1.static/const/volatile关键字在C/C++中的作用 2.结构体的内存对齐规则、位段的内存分配、枚举的优点 3.指针 4.前置++,后置++ 5.#define定义的宏和函数的比较 6.sizeof与strlen 7.形参和实参 8.大小端问题 9.指...

2018-07-26 14:01:49 417

原创 冒泡排序的优化

传统的冒泡排序算法我们应该很熟悉,主要的原理是:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。但是此种方法每一趟循环只能找到一个最大或者最小...

2018-07-24 15:12:39 155

原创 二分查找有这么简单?

题目一给定一个有序(非降序)数组A,求任意一个i使得A[i]等于key,不存在则返回-1这个是最原始的二分查找题目,利用数组的有序特性,拆半查找,使得查找时间复杂度为O(logN)。int search(int arr[], int n, int key)  {      int low = 0, high = n-1;      while(low <= high)...

2018-07-19 14:55:45 183

原创 操作系统—进程的退出

进程退出linux下正常的退出方式:1.在main函数中使用了return返回. (return之后把控制权交给调用函数)2.调用exit()或者_exit; (exit()之后把控制权交给系统)异常退出:1.调用abort函数2.Ctrl+c,进程收到某个信号,而该信号是程序中止.不管是哪一种退出方式,最后都会执行内核中的同一代码,这段代码用来关闭进程所用到的已经打开的文件描述符所占用的内存和资...

2018-07-15 18:34:33 922

原创 操作系统—进程PCB浅析

先了解PCB 进程就是一个运行当中的程序. 程序本来是存储在磁盘的,当我们需要执行它的时候,先把他读取到内存当中,再然后放入到寄存器中,最后让cpu执行程序,这个时候程序就变成了一个进程. 但是进程的生命周期其实不是很长,因为程序运行结束之后,进程的生命周期就终止了. 那么每一个进程肯定都是一个独立的个体,那么每个进程与进程直接肯定都拥有自己独有的一份管理自己的单独的任务...

2018-07-15 17:19:48 3256

UNIX环境高级编程

    If you are an experienced C programmer with a working knowledge of UNIX, you cannot afford to be without this up-to -date tutorial on the system call interface and the most important functions found in the ANSI C library. Richard Stevens describes more than 200 system calls and functions; since he believes the best way to learn code is to read code,a brief example accompanies each description. Building upon information presented in the first 15 chapters, the author offers chapter-long examples teaching you how to create a database library, a PostScript printer driver, a modem dialer, and a program that runs other programs under a pseudo terminal. To make your analysis and understanding ofthis code even easier, and to allow you to modify it, all of the code in the book is available via UUNET. Advanced Programming in the UNIX Environment is applicable to all major UNIX releases, especially System V Release the latest release of 4.3BSD, including 386BSD. These real-world implementations allow you to more clearly understand the status of the current and future standards,including IEEE POSIX and XPG3.

2017-11-18

空空如也

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

TA关注的人

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