自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 资源 (8)
  • 收藏
  • 关注

原创 Linux常用命令详介

rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项软件包的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。sudo(以超级用户身份执行命令)命令是在Linux系统中以超级用户(root)的权限执行特定命令的命令。是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。-A:显示匹配行之后的若干行。-B:显示匹配行之前的若干行。-C:显示匹配行前后的若干行。-n:显示匹配行的行号。

2024-04-05 23:00:44 758

原创 Android升级版本兼容问题

【代码】Android升级版本兼容问题。

2024-01-28 22:50:10 1064

原创 AppTask.moveToFront()源码分析

ActivityManager.AppTask.moveToFront()执行后,导致其他AppTask退到了后台,点击返回直接回到了桌面(HomeScreen),没有回到上一个AppTask。下面分析一下源码看看为什么其他AppTask退到了后台,如何解决该问题。

2023-06-12 14:59:21 590

原创 Shell的起源与发展

Brian Foxzsh。

2023-05-11 10:32:25 560

原创 Android App专属文件(app-specific files)存储

Android 10(API level 29) 及以后,App默认开启作用域存储模式,App将不能访问非当前应用专属的路径。该目录也提供两个目录:一个专门存储持久化文件(getFileDir),一个存储缓存文件(getCacheDir)。该目录提供两个目录:一个专门存储持久化文件(getFileDir),一个存储缓存文件(getCacheDir)。此目录旨在存储本应用使用的文件,如果需要存储一些可供其他应用访问的共享文件,请使用。访问getFileDir()目录下的文件。此目录其他App无法访问。

2023-04-25 19:39:57 893

原创 【Android源码分析】 Android子线程可以更新UI

一、现象:子线程更新UI操作,竟然不崩溃二、原因:宽和高尺寸未变化,仅需替换text

2022-01-17 21:54:21 2477

原创 Android新荣耀手机角标只增不减

荣耀不再是华为2020年11月17日,深圳市智信新信息技术有限公司完成了对荣耀品牌业务资产的全面收购,自此华为将不再持有新荣耀公司的任何股份。新荣耀手机包名变更新荣耀手机桌面包名:“com.hihonor.android.launcher”Build.MANUFACTURER:“HONOR”华为/鸿蒙手机桌面包名:com.huawei.android.launcherBuild.MANUFACTURER:HUAWEI兼容新荣耀角标更新public void setBadgeNum(int

2021-11-09 17:00:23 4128 4

原创 Could not find tools.jar. /Library/Internet Plug-Ins/ contains a valid JDK installation

Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.原因:JDK版本较旧解决方法一、查看现在已安装的JDK二、删除旧版JDK三、下载新版本JDK8原因:JDK版本较旧旧版jdk 8的JavaAppletPlugin.plugin会安装在/Library/Internet P

2021-11-09 15:01:33 4514 1

原创 Gradle和Android Gradle Plugin

目录一、下表列出每个版本的Gradle plugin所需的Gradle版本:二、什么是GradleGradle集成方式Gradle作用三、什么是Gradle pluginAndroid Gradle Plugin DSLGradle plugin集成方式一、下表列出每个版本的Gradle plugin所需的Gradle版本:为了能有更好的体验,我们应该尽可能使用最新版的gradle和gradle plugin。更新Gradle点这里Plugin versionRequired Gradle

2020-09-15 20:30:41 1420 1

原创 Android Camera2笔记

1、Camera2操作四步骤CameraManager–>openCamera —> 打开相机CameraDeviceImpl–>createCaptureSession —> 创建捕获会话CameraCaptureSession–>setRepeatingRequest —> 设置预览界面CameraDeviceImpl–>capture —> 开始捕获图片2、createCaptureSessionCameraDeviceImpl-

2020-07-22 17:28:49 352

原创 Junit单元测试

英文原文本教程将介绍如何使用Junit4.x和Junit5.x实现单元测试。1、软件测试的目的1.1、什么是软件测试软件测试是一个执行另外一个软件的软件。用来检验代码结果是否符合预期状态(状态测试)或着是否执行了期望的事件顺序(行为测试)。1.2、为什么说软件测试有用软件单元测试帮助开发者验证程序逻辑是否正确。自动运行测试有助于确定由代码修改引起的软件回归,我们的代码测试覆盖率高会让...

2019-11-26 15:59:36 129

原创 Android Gradle语法(Android Gradle DSL)

Google关于Android Gradle DSL的官方文档:Android Gradle DSL一、cmake下面由两个cmake语句,但其类型不同,所以其属性不同1、CmakeOptions类型的cmake路径:(AppExtension) android->(ExternalNativeBuild) externalNativeBuild ->(CmakeOpt...

2019-10-12 13:40:22 474

原创 android配置cmake

介绍完cmake基础知识,再来将cmake与Android NDK,gradle结合使用。CMake 编译脚本是一个纯文本文件,您必须将其命名为 CMakeLists.txt,并在其中包含 CMake 编译您的 C/C++ 库时需要使用的命令。如果原生源代码文件还没有 CMake 编译脚本,您需要自行创建一个,并在其中包含适当的 CMake 命令。本部分将介绍您应该在编译脚本中包含哪些基本命令...

2019-10-11 18:20:32 1810

原创 Android运行X86模拟器

1、libs中有armeabi-v7a和x86目录及so文件如果:app的build.gradle中配置ndk { abiFilters "armeabi-v7a"}Terminal中运行./gradlew installDebug则报错:> Task :app:installDebug FAILED06:15:10 V/ddms: execute: running am...

2019-10-10 18:29:42 2305

原创 cmake指令基础知识

1、add_library使用指定的source文件,添加library到项目中。1.1 normal librariesadd_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])1.2 Imported libr...

2019-10-10 18:16:44 1661

原创 JNI基础知识(JNI Design Overview)

1、JNI “接口函数” 和 “接口指针”Native代码通过调用JNI函数来访问Java VM特性。JNI函数可通过“接口指针”调用。“接口指针”是一个指向“某一指针” 的 指针。“某一指针”又指向一个指针数组,指针数组中的每个指针,都指向一个“接口函数”2、加载、关联Native方法加载:Native方法通过System.loadLibrary方法来实现加载。如果底层操作系统不...

2019-09-17 11:09:51 280

原创 华为手机崩溃后自动重启

一、华为、vivo手机的App崩溃后,会特定情况下会自动重启App。特定情况:1、如果Activity1---->Activity2,在Activity2崩溃,则,重新走Application—>Activity1,这两个的完整生命周期。2、如果Activity1(finish)---->Activity2----->Activity3,在Activity3崩溃,则,...

2019-08-23 10:48:13 1391

原创 Android BLE开发

目录Android BLE简介扫描绑定/配对连接Android BLE简介蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和...

2019-04-09 16:50:29 277

原创 Android 单元测试上传Sonarqube

前言我们的测试用聚焦在应用程序的业务逻辑上,凭经验来说一个好的单元测试应该有如下测试分布:70-80 % 是单元测试,保证基础代码功能的稳定20-30 % 功能性测试,保证我们的应用程序可以运行如果我们继承了其他应用组件的话,还需一部分交叉功能测试。Android测试分类Android测试分为本地测试(Local Unit Tests)和仪器测试(Instrumented Tests)...

2018-12-29 15:52:58 1355

原创 Android单元测试与sonar

参考文档:unified-test-coverage-report-in-android-with-jacoco-and-sonarqube1、本地测试和仪器测试本地测试:即local unit test,对应目录是src/test/目录,生成的报告文件是*.exec仪器测试:即instrumented unit test,对应目录是src/androidTest/目录,生成的报告文件是*....

2018-12-27 11:08:48 426

转载 Android Gradle之productFlavors(定制产品)

productFlavorsBuild Type + Product Flavor = Build Variant每一个Build Type都会生成一个新的APK。 Product Flavor同样也会做这些事情:项目的输出将会拼接所有可能的Build Type和Product Flavor(如果有Flavor定义存在的话)的组合。 例如:android { .......

2018-09-10 19:09:38 6493

转载 Android Gradle之buildType(构建类型)

buildType默认情况下,Android Plugin会自动同时给项目设置构建应用程序的debug和release版本。 这些配置通过一个BuildType对象来配置。默认情况下,这两个实例都会被创建,分别是一个debug版本和一个release版本。 这也就是为什么buildType中没有设置debug,却在构建变量(Build Variant)中出现了debug版本。新建自...

2018-09-10 17:16:43 4339

原创 EventBus及Rxjava一些笔记

RxJava1、BehaviorSubjectBehaviorSubject&amp;lt;Integer&amp;gt; behaviorSubject = BehaviorSubject.create(); behaviorSubject.onNext(1); behaviorSubject.onNext(2); behaviorSubject....

2018-08-24 15:39:28 417

转载 北京全市医保定点医疗机构直接社保

目前北京全市医保定点医疗机构总数近2200家。可能有人问了,这和我有什么关系,反正我的医保只能选4家定点,只能去那4家报销啊! 其实这种想法大错特错!很多人都以为只有去自己医保定点上选的那4家医院看病才能报销,而实际上,除了你选的那4家之外,还有200多家医院是根本不用选就可以直接拿着社保卡去刷卡结算的。 所以说,千万不要把这些医院选入你的医保定点,那纯粹是浪费指标啊!来看这个超详细,巨清晰的大

2018-05-08 15:41:10 4496

原创 Git命令简介

Git版本库简介我们提到Git版本库,都知道是由一个本地git版本库和一个远程服务器git版本库,而本地库与远程库之间的交流,是通过在本地库中生成一个“远程库副本”的方式实现的(这个“远程库副本”的概念,在用到fetch命令时才会去关注)。 注: 本地库 master 远程库 origin master 远程库副本 origin/master一、创建Git...

2018-02-23 19:08:40 213

原创 Git笔记

基础知识点:一、origin master与origin/master区别origin:代表远程地址https://git.xxx.com/xxx.gitmaster:代表本地版本库的master分支。存于本地。origin/master:是git fetch后,在本地生成的远程master分支的复制版。也存于本地。二、merge##merge本地分支代码git mer

2018-01-05 21:37:19 208

原创 onLayout笔记(mTop,layout,setFrame,getMeasureWidth,getWidth)

1、onLayout(int l, int t, int r, int b)中的参数l、t、r、b都是相对于其父控件的位置。具体来说,t,不一定是0,因为自身不一定是位于父控件的顶部第一个元素。b-t,就是自身的高度,等同于getMeasuredHeight(),这没问题。另外,2、自身的mLeft, mTop, mRight, mBottom都是相对于父控件的位置。具体来

2017-12-16 15:44:46 371

原创 解决软键盘遮挡登录按钮

解决方案protected void registerListener() { final ViewWrapper wrapper = new ViewWrapper(rlRoot); rlRoot.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayou

2017-09-16 11:13:49 665

原创 RxJava笔记

1、map与flatmap区别一方面,两者的返回值类型不同。map的返回类型是一个特定数据类型。flatmap返回的类型是Observable.另一方面,转成数组时,map返回类型可能是List,那么在observer的onNext方法中就得for循环来读取每个元素的值。如果用flatmap,返回类型是Observable.fromArray(),那么observer的onNext方法会执

2017-08-22 20:04:47 219

转载 NDK示例:Teapot

Teapot 示例位于 NDK 安装根目录下的 samples/Teapot/ 目录内。 此示例使用 OpenGL 库渲染标志性的犹他茶壶。 特别值得注意的是,此示例展示 ndk_helper 帮助程序类,其中包含的许多原生帮助程序函数是以原生应用的形式实现游戏和类似应用所必需的。 此类提供:用于处理某些 NDK 特有行为的抽象层 GLContext。虽然很有用,但 NDK 中却不存在

2017-07-17 21:05:38 748

转载 NDK示例:native-activity

native-activity 示例位于 NDK 安装根目录下的 samples/native-activity 内。 这是一个非常简单的纯原生应用示例,不包含任何 Java 源代码。 尽管没有任何 Java 源代码,Java 编译器仍然会创建一个可由虚拟机运行的可执行存根。该存根用作 .so 文件内实际原生程序的包装器。该应用本身仅仅在整个屏幕上渲染一种颜色,然后根据检测到的运动,相应改

2017-07-17 21:04:52 2685

转载 NDK示例:hello-jni

本示例将引导您开发一个使用 NDK 构建的超小应用 HelloJNI。 此示例位于 NDK 安装根目录下的 samples/hello-jni/ 目录内。Android.mk以下两行代码提供原生源文件的名称,以及要构建的共享库的名称。 构建系统添加 lib 前缀和 .so 扩展名后,构建库的全名将为 libhello-jni.so。LOCAL_SRC_FILES := hell

2017-07-17 21:03:55 1127

转载 NDK(四)CMake

Using Android Studio 2.2 and higher, you can use the NDK and CMake to compile C and C++ code into a native library. Android Studio then packages your library into your APK using Gradle, the IDE's in

2017-07-17 20:43:07 845

转载 NDK(三)ndk-build

ndk-build 文件是 Android NDK r4 中引入的一个 shell 脚本。其用途是调用正确的 NDK 构建脚本。内部构建运行 ndk-build 脚本相当于运行以下命令:$GNUMAKE -f /build/core/build-local.mk$GNUMAKE 指向 GNU Make 3.81 或更新版本, 指向 NDK 安装目录。 您可以使用此信

2017-07-17 20:41:49 349

转载 NDK(二)Application.mk

本文档介绍 Application.mk 构建文件,此文件用于描述应用需要的原生模块。 模块可以是静态库、共享库或可执行文件。建议在阅读本页之前先阅读概念和 Android.mk 页面。 这样有助于您最深入地了解本页的内容。概览Application.mk 文件实际上是定义要编译的多个变量的微小 GNU Makefile 片段。 它通常位于 $PROJECT/jni/ 下,

2017-07-17 20:41:09 311

转载 NDK(一)Android.mk

本页介绍用于将 C 和 C++ 源文件粘合至 Android NDK 的 Android.mk 构建文件的语法。概览Android.mk 文件位于项目 jni/ 目录的子目录中,用于向构建系统描述源文件和共享库。 它实际上是构建系统解析一次或多次的微小 GNU makefile 片段。 Android.mk 文件用于定义 Application.mk、构建系统和环境变量所未定义的项

2017-07-17 20:40:26 377

原创 JNI笔记

1、JNI方法,如下所示JNIEXPORT void JNICALL Java_ClassName_MethodName (JNIEnv *env, jobject obj){ /*Implement Native Method Here*/}JNIEnv就是jin.h中的JNINativeInterface结构体。也就是说,*env->所能调用的所有方法,请到D:\A

2017-07-14 21:09:41 218

原创 wap页开发笔记

一、wap页开发与普通的网页开发区别:1、引入rem单位。为达到尺寸值自适应的目的,需要在html的css中设置font-size值作为rem的基准值,并且通过js代码判断手机屏幕分辨率,更新html的font-size基准值。html { /*rem基数*/ font-size: 100px;}(function(doc, win) { v

2017-06-20 16:48:26 277

原创 CSS笔记

1、串行问题描述:下方文字串到上方布局中。问题分析:div如果没有设置宽度和高度,默认自适应。所以导致串行。解决方法:1、给上方布局设计固定宽度和高度。否则默认自适应。所以导致串行。2、或者给上方布局使用如下css:.clearfix { display: block;}.clearfix:after { content: "."; display:

2017-06-15 11:20:45 284

原创 学习计划

1、学习TCP/IP2、学习数据结构3、学习加密技术,网络请求加密、数据库加密、文件加密。

2017-03-07 15:33:36 309

SSH框架及数据库

各种版本不兼容!hibernate试了6个版本!spring是了3个版本! 【struts-2.3.16+hibernate-3.6.10+spring-framework-3.2.6】 【jdk-1.7.0】 【新手必备!】

2016-03-25

SSH框架:struts-2.3.16+hibernate-3.6.10+spring-framework-3.2.6

新手初试牛刀,花了3天时间!各种版本不兼容! 尝试了6个版本的hibernate,3个版本的spring, 终于试出来了! 终于圆满了! 终于成功了! struts-2.3.16+hibernate-3.6.10+spring-framework-3.2.6 jdk-1.7.0

2016-03-25

jquery mobile api

用于移动端网页开发 实现跨平台和后台更新

2014-03-20

asmack源码

根据asmack.jar反编译过来的源码,是学习asmack api的好的辅助工具,方便修改其中代码

2014-03-20

C# Regex Validator Control errorprovider 通用封装类

C# Regex Validator Control errorprovider 通用封装类 这是VS2010写的封装类,在项目中一般放在COMMON层。 需要在每个窗体(form)中添加一个 errorprovider控件,然后,将命名空间改成自己项目的命名控件,然后,按照“调用验证.Txt”中那样,在form_load事件中写调用。 这个调用已经最小化工作量了,而且很好维护。 适合所有控件,随心所欲、非常灵活、方便设置验证方式。

2013-01-30

winform 验证

验证所有控件,大大降低工作量,而且很好维护

2013-01-29

winform 正则验证所有控件

load事件调用SetControlValitors(Control controlToValidate,params IValidator[] validators)

2013-01-26

winform正则验证所有控件

在load事件中调用 SetControlValitors(Control controlToValidate,params IValidator[] validators)即可! 减轻验证所有控件的工作量,方便维护。

2013-01-26

空空如也

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

TA关注的人

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