自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

James-Tom的博客

活着就是最好的死亡

  • 博客(107)
  • 资源 (11)
  • 收藏
  • 关注

原创 致Zr.孜然阅读器的开发过程(纪念)

致Zr.孜然阅读器的开发过程主要原因  第一时间想知道最新的主题订阅资讯  迫切想证实自己是否具备独立开发能力  一种对已知技术知识汇总后的结晶  不想故步自封,屹立在原地,随着时间的推进,而逐渐被后退主要目标  对于应用开发流程更深入思考其存在的前后关系,存在与否的取舍。  对于技术知识系统化的积累与沉淀  理解对...

2018-03-14 09:49:37 1080 1

原创 Kotlin高阶函数与Lambda表达式及内联函数的介绍

高阶函数就是将函数类型用作参数或返回值的函数。举例说明,看看高阶函数到底长什么样子。最简单的理解就是写在大括号里面的代码段,与匿名内部类写法非常类似。内联函数主要涉及到三个关键字:inline(内联) ,作用于函数;noinline(禁止内联),作用于函数类型的参数;crossinline(限制lambda表达式直接调用 return,导致程序执行[逻辑异常],作用于函数类型的参数。

2024-09-07 19:49:19 952

原创 Android插件化技术之加载未安装APK

Android插件化是一种解决方案,当一个应用发展成一个平台级应用时,就更需要针对各个子业务模块按需动态加载,要做到按需动态加载一种是可以通过H5的方案,另一种就是针对各个子业务模块单独开发成一个APK,这时候这个平台级应用我们称为宿主,子业务模块APK称为插件,宿主通过反射点击去学习、代理点击去学习等实现hook技术来完成插件APK的免安装加载。所以必须要先了解这个HOOK技术。HOOK翻译成钩子,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。在Android系统中,通俗来讲,就是去阅读

2024-08-28 21:41:05 1119

原创 adb常用指令集合

安卓Adb常用指令收集文章,不定时会编辑更新。

2024-03-12 15:05:16 964

原创 06鸿蒙APP开发之布局优化与完善

接着前面的系列文章,来到了布局更新及新增内容详情查看界面。

2024-02-23 17:45:00 545

原创 日期格式化字符说明

Thu, 18 Jan 2024 09:57:58 GMT-8这种少见的日期格式化,及说明EEE, d MMM yyyy HH:mm:ss 'GMT-8'这个类格式字符的含义

2024-01-18 16:26:52 1482

原创 桌面小部件(Appwidget)的列表ListView点击启动Activity失败的解决方案

Android桌面小部件,点击listView列表项,无法打开Activity的问题解决办法。

2024-01-08 16:15:33 657

原创 05鸿蒙APP开发之加载网络列表

为了请求网络列表数据,实现动态加载。官方的DEMO封装得太深,看不出最简化的结构。基于这些原因,开始写下本篇博文,内容主要包含,网络请求封装、发起请求,及页面渲染。

2023-12-21 18:13:18 1584

原创 04鸿蒙APP开发之创建一个底部菜单栏及首页列表

构建一个带有底部四个菜单的导航栏,首页显示一个列表,并添加测试数据,及点击事件。

2023-12-18 17:22:09 2583

原创 03鸿蒙ArkTS应用开发及ArkTS语言学习

当我们在新建一个鸿蒙应用工程项目时,会要求你选择模型,能使用ArkTS开发语言。未知的一切,还在探索中。

2023-12-15 17:42:20 1869

原创 02鸿蒙APP真机运行及证书签名打包

整个签名到打包的过程确实很漫长,4个签名相关的文件创建就要费九牛二虎之力,还需要开发者账号才可以做鸿蒙开发,所以门槛还是存在,遇到失败多尝试,总会解决。

2023-12-13 18:02:17 4184

原创 01创建第一个鸿蒙APP

鸿蒙应用开发,从环境配置到Debug打包,展示全过程系列文章。

2023-12-12 17:53:49 1766

原创 Chrome浏览器关闭左上角搜索标签页的解决办法

最近升级到版本 119.0.6045.124(正式版本) (64 位),发现左上角莫名多了一个搜索标签页的图标,看着有点多余,可把它关掉,方法如下...

2023-11-09 10:53:31 19821 25

原创 Android经典蓝牙与低功耗蓝牙开发相关知识

Android蓝牙开发目前涉及到4.0以下及以上的蓝牙协议,随着低功耗蓝牙(BLE)越来越应用普遍,最新的设备厂商已使用蓝牙协议5.2版本,而经典蓝牙和低功耗蓝牙开发方式完全不同,所以需要针对性的做开发,同时也会涉及到一些小坑,需要特别注意。

2023-09-08 16:25:10 1813

原创 Java按位取反操作~

计算机存储的整型数据是存储的2进制,而此2进制并不是此10进制数直接对应的2进制数(原码),而是存储的此2进制数的补码。所以,取反(~)是对补码的按位取反操作,而要从原码转换成补码,必须要先从原码转换成反码,再从反码转换成补码才可以。注意:2进制的最高位是符号位(在最左侧)

2022-11-10 14:00:57 2020 1

原创 Android字节码ASM插桩

目录1、字节码ASM插桩到底什么意思?1.1、字节码1.2、ASM1.3、插桩2、插桩到底有什么用?3、怎么才能实现插桩呢?第一步:新建moudle第二步,配置属性文件和插件模块的build.gradle:第三步,编写对应的插件注入类,及类和方法访问器:第四步,上传插件库到本地maven仓库,方便主项目引用:第五步,配置主项目的MyAmsTest/app/build_gradle及MyAmsTest/build_gradle文件第六步,在主项目中编写被用于插桩的测试类:第七步,在启动Activity中正常使

2022-03-08 12:12:20 4063

原创 MutableLiveData实现消息订阅源码分析

目录1、创建MutableLiveData对象2、添加消息订阅3、发布消息3.1、setValue的具体实现3.2、postValue的具体实现4、总结1、创建MutableLiveData对象MutableLiveData翻译为可变实时数据创建一个针对List< MonitorTree >列表的对象如下: var monitorTree = MutableLiveData<List<MonitorTree>>()现在看看MutableLiveData的源码

2021-11-08 17:11:05 1077

原创 Android中正确使用Rsa加密算法

在Android中使用和在java程序中使用Rsa有些许区别,如,没有BASE64Decoder这个类等等...

2021-11-02 16:00:38 829

原创 Git标签(tag)的用法

1、在本地为当前最新提交的代码打上标签git tag -a v1.1 -m '版本介绍'2、推送标签到远程服务器上git push origin v1.13、查看标签查看所有标签:git tag按照关键字查看,其中 v1.* 就是类似模糊匹配的关键字:git tag -l "v1.*"4、为早期的提交补打标签先查看日志git log --pretty=oneline可能会遇到中文无法识别的问题,如下图所示的乱码:可以执行如下命令解决:git config --glob

2021-08-13 12:13:21 2662

原创 快速排序算法重新梳理

文章目录1、梳理背景2、算法原理第一步:先从右往左查找第二步:在从左往右查找第三步:交换值第四步:左右相遇第五步:继续递归调用重复上面的123步骤关键核心点:3、时间复杂度4、空间复杂度5、源码实现6、图片演示1、梳理背景最近在查阅关于快速排序算法的相关实现,发现关于算法原理、源码实现出现不同的变种版本,个人觉得有些版本不好理解,有些版本更易于理解。参考了各种不同的版本,通过自己实践,最终将此算法的原理、及源码实现进行了全新的梳理,更易于掌握。2、算法原理给定一个数字类的数组(arr[]),选定一个

2021-06-08 15:49:15 456

原创 RecyclerView实现空视图切换

实际的业务需求中:无列表数据的时候,我们希望显示一个空视图布局,以方便用户直观理解;而当有数据时,则正常加载列表数据。这样就形成了一个有数据和无数据的布局切换。基于此,本文提供了一种解决方案。

2021-04-20 09:35:53 704

原创 Retrofit @Multipart@PartMap@Part组合的一种用法

目录1、应用场景2、实现2.1、api的声明写法2.2、实际调用3、总结1、应用场景有这样一个需求:要实现附件与字符串参数同时提交请求。附件可能是多个,字符串参数也可能是多个。2、实现2.1、api的声明写法只实现多文件上传,处理方式如下: @Multipart @POST("api/uploadFile") fun uploadFiles( @Part parts: List<MultipartBody.Part> ): Call<R

2020-10-26 18:25:58 5726

原创 重学数据结构之第九章-排序

目录1、概述2、排序算法2.1、冒泡排序2.2、简单选择排序2.3、直接插入排序2.4、希尔排序算法2.5、堆排序2.6、快速排序算法3、算法的各项指标1、概述排序这一章主要是讲解了常用的一些算法,我们在选择用何种排序算法的时候可以根据时间复杂度来判断,文末会给出一个算法的时间及空间复杂度的表,方便决策。2、排序算法2.1、冒泡排序主要是分为三个版本,初级版,改进1,改进2。我们在实际应用时,直接使用改进2即可。初级版: /** * 冒泡排序初级版本 * 相邻比较

2020-10-08 18:24:27 213

原创 重学数据结构之第八章-查找

本章主要是各种算法,主要分为有序查找和无序查找。1、有序查找main调用 public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] arr2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] arr3 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int

2020-10-08 05:05:54 229

原创 重学数据结构之第七章-图

1、图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图是一种较线性表和树更加复杂的数据结构。在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。其中我们要明确的几个地方:线性表中我们把数据元素叫做元素,树中将数据元素叫结点,在图中,数据元素我们称之为顶点(Vertex)线性表中可以没有数据元素,称为空表。树中没有可以没有结点,叫做空树。那么对于图中则不能没有顶

2020-10-06 23:49:08 1264

原创 重学数据结构之第六章-树

1、树的定义树(Tree)是n(n>=0)个结点的有限集。当n=0时,称为空树。在任意一棵非空树种:(1)、有且仅有一个特定的称为根的结点(Root);(2)、当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。如下图所示:本书中还是少了一些有关红黑树的概念。树有很多概念和定义需要我们去理解记忆。1.1、树结点分类树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树称为

2020-10-05 22:21:48 1019

原创 重学数据结构之第五章-串

1、定义**串(string)**是由零个或多个字符组成的有限序列,又名叫字符串。零个字符的串称为空串。计算机中常用字符是使用ASCII编码,更准确一点,由7位二进制数表示一个字符,总共可以表示128个字符。后来发现一些特殊符号的出现,128个不够用,于是扩展ASCII码由8位二进制数表示一个字符,总共可以表示256个字符,这已经足以满足以英语为主的语言和特殊符合进行输入、存储、输出等操作的字符需要了, 可是,单我们国家就有除汉语以外的其他少数名族文字,换做全世界估计要有成百上千种语言与文字,显然25

2020-10-04 19:19:29 232

原创 重学数据结构之第四章-栈与队列

1、栈的定义2、栈的两种存储结构2.1、顺序存储结构2.1.1、进栈2.1.2、出栈2.2、链式存储结构2.1.1、进栈2.1.2、出栈3、栈的应用-斐波那契的递归函数3.1、迭代法3.2、递归法3.3、对比两种实现方法4、队列的定义4、队列的两种存储结构2.1、顺序存储结构2.1.1、出队2.1.2、入队2.2、链式存储结构2.1.1、出队2.1.2、入队5、总结栈和队列它们都是特殊的线性表,只不过对插入和删除操作做了限制。栈(stack)是限定仅在表尾进行插入

2020-10-03 22:42:46 434

原创 重学数据结构之第三章-线性表

线性表:零个或多个数据元素的有限序列。几个关键点:首先它是一个序列,元素之间是有顺序的,若存在多个元素,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继。前驱和后继后续文章中也会提到,就是指的前一个数据元素和后一个数据元素,只是简化了叫法。

2020-10-02 21:26:36 679

原创 重学数据结构之第二章-算法

1、算法定义算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。2、算法的启示举个例子,求1+2+3+…+100之和,我们来看两段代码:代码片段1:int sum = 0,n = 100;for(int i = 1 ; i < n ; i ++){ sum += i;}//sum结果5050system.out.println(""+ sum);代码片段2:int sum = 0 , n = 100;sum = ( 1 +

2020-10-01 18:59:40 301

原创 重学数据结构之第一章-数据结构绪论

目录1、数据结构的定义是什么?2、数据结构是怎么起源的?3、数据结构中我们必须要掌握哪些概念和术语?3.1、 数据3.2、数据元素3.3、数据项3.4、数据对象4、数据结构到底有那些结构?4.1、逻辑结构4.1.1、集合结构4.1.2、线性结构4.1.3、树形结构4.1.4、图形结构4.2、物理结构4.2.1、顺序存储结构4.2.2、链式存储结构5、抽象数据类型1、数据结构的定义是什么?数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。2、数据结构是怎么起源的?数据结构是一门研究非数值计算

2020-10-01 13:19:33 185

原创 Kotlin中的协程

目录1、协程是什么2、协程与线程的区别3、如何在Kotlin中使用协程4、协程使用场景5、总结1、协程是什么协程是程序中处理并发任务的一种方案,同时也是这种方案的一个组件。 提示:kotlin已集成了此框架。2、协程与线程的区别协程与线程是属于一个层级的,但是却又和线程处理并行任务有着不同的解决方案,协程可以在处理完并发任务之后,自动切回UI(mian/主)线程;协程的调用案例: GlobalScope.launch(Dispatchers.Main) {

2020-09-23 12:58:23 1116

原创 “50”计划

目标、计划还是只落实在口头上,为什么不把它写出来呢? 为了实现50万的存款目标,俗称 “50计划”,我写下了这篇文章。

2020-09-04 10:38:35 598

原创 (实战)基于MVVM+Kotlin+AAC架构之登录模块

互联网技术飞速发展的是时代,在Android领域从早期的MVC架构发展到现在的MVP、MVVM架构,开发语言也从Java语言,到新崛起的Kotlin语言,甚至是Flutter工具包所使用的跨平台Dart语言,一门新技术、新语言的出现总是需要不断的迭代,使之变得更为成熟才能更好的运用到实际项目中。时至今日,MVVM+Kotlin+AAC组合架构已经变得越来越广泛使用...

2020-08-13 18:24:59 1079

原创 Kotlin的基础用法

1、概述“如果你正在为Android开发寻找一种替代编程语言,那么应该试下Kotlin。它很容易在Android项目中替代Java或者同Java一起使用。”–Hathi

2020-07-24 16:28:28 486

原创 泛型

1、定义泛型是java1.5版本引进的概念。有两种定义:1、在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。2、在程序编码中一些包含参数的类。其参数可以代表类或对象等等。不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。上面两种定义不是很好理解,个人理解的话,想象成可以在定义时替代整型、字符串类型、对象类的一个集合代表类。2、常用术语2.1、类型擦除下面这段代码,会输出什么? List<String> sList = ne

2020-06-29 16:54:38 324

原创 反射

1、定义百度百科:Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。维基百科:反射指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。Java的反射机制的实现要

2020-05-11 16:44:57 234

原创 多线程环境下CountDownLatch的用法

1、概述谷歌直译:倒数计时还有一些其他翻译:计数减小门闩,倒计时闩锁CountDownLatch类所在的包路径: java.util.concurrent.CountDownLatch一种同步辅助类,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。使用场景:在主线程中创建多个子线程,等待所有子线程执行完成之后,再切换到主线程等待位置并往下继续执行。2、关键方法、函数...

2020-04-24 15:27:14 581

原创 (十九)Python中级知识-正则表达式(re模块)

1、概述正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。同样,在python中就内建了一个功能强大的正则表达式引擎。我们在普通的操作中已经可以拼接追...

2020-04-14 16:25:09 284

原创 Git分支管理

1、查看远程分支git branch -r2、查看本地分支git branch3、查看本地和远程分支git branch -a4、新建一个本地分支git branch develop其中develop为新建的分支名称,可自己修改。5、将本地分支推送到远程分支git push origin develop其中develop为需要推送到远程的分支名称,可自己修改。6、...

2020-04-05 10:31:38 255

slidingMenu菜单

应该是比较精简的侧滑菜单了,无需引入库,直接三个类搞定。

2014-12-05

ImageView动态底部菜单,点击某个菜单自动冒出

ImageView实现代码动态生成底部菜单,点击某个菜单自动冒出10dp,其他菜单自动底部对齐。(非布局实现)

2014-11-06

android webview实用demo

一个最简单直白的webview 用法,网上好多进度条都不符合我想要的效果,改进后去掉系统自带标题栏,实现进度条,标题,及添加顶部布局,简单实用(含进度条,关闭,标题显示等)

2014-10-23

私人文件加解密小软件

1.核心加密算法是借鉴网上的。 2.将程序进行了完善和升级,希望能为这方面的接触者有所参考作用 3.写得很初级,菜鸟也能看懂。 里面加入了很多我想要的功能和效果,包括按钮皮肤美化,以及进度条,加密文件列表等。

2014-02-19

Oracle11G数据库服务端客户端数据库创建详细教程

Oracle11G数据库创建实例,包含创建数据库管理账户,服务端客户端监听服务命名配置等,界面配置,拒绝复杂命令配置。非常适合Oracle接触者,能成功。

2014-01-26

全盘遍历查找文件(多线程)

C# 利用多线程方式 文件全盘遍历查找文件 程序生命力强 查找文件时Label动态显示正在查找的文件 文件查找速度还是蛮快的,采用递归算法 适合大家参看使用

2013-10-16

送女友示爱生日祝福浪漫小程序

在生日小惊喜基础上,重新设计了一版浪漫示爱,表达爱意,制造惊喜的绝佳源码小程序。 全屏的红心图形,缓缓洒落在屏幕的每个角落,伴随着独特的后台加载音乐,达到前所未有的浪漫气息。能让你的小女友感动到的,你的用心良苦定会为你增加更多得分。技术也可以浪漫,呵呵。

2013-09-09

mono开发的天气预报app

mono开发app的技术资料相对很少,这个apk程序是通过csdn前辈的资料学习后自己整理出来的天气预报apk,源码写得很简单,会c#即可看懂,有什么不明白的地方还可以给我邮件联系,希望mono for android c#这部分技术越来越多的爱好者加入。.netformwrok也可以打包进手机,只有5M左右,现在智能手机可以完全跑起来。

2013-09-09

生日快乐 送女友源代码 小惊喜

在异性好友过生日的时候,特别制作了这个,全屏都在下蛋糕的小程序,蛋糕下降的过程中伴随生日快乐歌曲,文字闪烁标示出主题,绝对值得,自己原创,现将源码分享给大家,希望大家喜欢。

2013-09-09

DataGridView设置列头,动态加载数据源,动态改变颜色

在ASP.Net中DataGridView设置列头标题,HeadText配置方式。 在ASP.Net中应用DataGridView动态绑定数据源 设置DataGridView行的颜色,鼠标移动改变数据行颜色。 很经典的DataGridView使用源码实例。 方法写的很简单,很容易理解,初学者也能快速使用。

2013-08-23

空空如也

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

TA关注的人

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