自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HopCoder

Life is pain, but hope is a good thing

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

原创 小白学习后端开发之Spring框架注解大全(一)

一、Spring 初次尝试1、通过xml形式配置IOC容器Bean在Project下面找到一个resources 文件夹创建一个beans.xml (xml的文件名随意)。如下,把你需要加载的bean 插入到bean节点下面。定义id 和 class类。当application被创建的时候,他就会去扫对应的xml文件,将这里定义的bean加载到IOC容器。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.s

2020-07-04 12:28:01 416

原创 初级排序算法-选择排序、插入排序、希尔排序

选择排序选择排序思想1、假设第一个元素是最小元素,依次从后面的元素中一直到N位置,找到一个最小的元素记录下来,执行一次交换(与最小的元素)2、然后开始找第二小的元素,重复第一步(以第二个元素为最小元素,依次从向后找,直到到达N位置)。public void selectionSort(int[] a){ int length = a.length; for(int i = 0; i < length; i++){ int min = i; for(int j = i+1; j

2020-05-12 23:23:38 243

原创 JNI基础学习-jni调用java原生方法

调用java方法有四个很重要的东西,class、methodID、sig(签名)、实例对象。class:自然不必说就是类信息methodID:就是方法信息sig:就是方法签名,里面包括了方法的参数类型信息 和返回信息。如(Ljava/lang/String;)V 代表的就是 void xxx(String)方法;其中构造方法用<init> ,多个参数的方法这样表示 (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 代表 String

2020-04-29 21:54:37 380

原创 Android Native与Html互相调用

JS调用Android原生Js调用原生的有很多种,有使用通过在js中打开一个url,android采用拦截Url的形式获取参数,执行android 原生的代码逻辑,比如跳转或者弹出键盘。 也有使用prompt 实现,通过调用html的prompt方法,android这边通过WebChromeClient方法的boolean onJsPrompt(WebView view, String url,...

2020-04-27 20:16:58 260

原创 Android面试框架源码-EventBus源码初探

本来以为我自己很懂EventBus源码,其实我只是对EventBus的实现原理很了解,但是框架源码内部的代码逻辑,并不是很了解,因为今天面试的时候并没有回答出来,所以特意补一下。 总的来看缓存是根据 eventType作为key 的。

2020-04-08 22:39:57 164

原创 BadgeView 给控件设置未读消息红点

最近做设置未读消息红点时,感觉TextView显示一个shape背景 时候,文字信息不在圆的正中心,所以自己写了一个可控的BadgeView。之所以说可控是因为代码是自己写的,以后需要什么样的就直接自定义。 if (numberStr != null){ int radius = getWidth() / 2; canvas.drawCircle(radius,radius,...

2020-03-27 14:16:38 576

原创 ListPopupWindow如何设置显示位置

ListPopupWindow 其实跟PopupWindow 显示效果相同的,只不过他是一个写好的ListView不需要重新写布局,只不过API跟PopupWindow 还是有点区别,本来想设置window显示位置,但是并没有找到 showAtLocation 类似的api。 但是找到了一些可以设置位置的api。记录下来希望对大家有用。 ListPopupWindow listPopupWind...

2020-03-27 13:53:40 1461

原创 面试必问框架之Retrofit源码解析

[retrofit](https://github.com/square/retrofit)是目前Android移动端领域最火的框架,相比我们之前使用的HttpClient 、XUtils、Volley等拥有非常方便的API、丰富的注解,帮助开发者轻松实现网络请求,并且遵从RESTFUL接口的场景。众所周知这个框架是对OKhttp的封装,意思就是说它本身不具备网络请求的功能,它只是把我们需要请求的URL、参数以及请求类型封装起来,然后告诉底层的OkHttp发送请求,并把请求结果返回回来。

2020-03-07 17:39:52 667 1

原创 面试必问框架之OkHttp源码解析

OkHttp是目前应用最广泛的网络底层框架,网络访问效率相比其他框架要快很多,归结于它底层使用的Okio访问服务器,相比于传统IO 它使用的叫做NIO与传统IO结合,是一种非阻塞式IO。我们今天想介绍的是基于此做的上层封装, 介绍它是如何把请求发送给服务器。

2020-03-06 22:15:16 435

原创 面试必问框架之ARouter源码解析

关于ARouter如何使用我们这里不做解释,主要针对两个问题1、初始化做了什么事;2、如何启动Activity或者Fragment的1、初始化做了什么事ARouter.init(this) 在使用ARouter时这句话是必须调用的。 protected static synchronized boolean init(Application application) { ...

2020-03-06 19:07:25 2540

原创 Android面试 - Android部分

`Fragment`与`ViewPager` 搭配使用的时候切换`Fragment`时,显示一个`Fragment`或者隐藏一个`Fragment`时,他们的`onPause` 和 `onResume` 并不会执行,`viewpager`只会保留三个页面,切换的时候只有装不下三个的时候, 就会舍弃最早的那个`Fragement` 执行,`onPause`方法; 所以不能通过`onResume` `onPause` 判断`Fragment`的隐藏和显示。

2020-03-02 22:34:23 626

原创 数据结构之图论基础和深度优先与广度优先

在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。

2020-03-01 17:16:02 1030

原创 结合源码了解RecyclerView工作机制详解

RecyclerView 众所周知有四级缓存是目前性能最好的ListView控件,官方也是推荐使用这个控件,同时支持LayoutManager 以及 ItemDecoration 自定义元素的摆放以及分线线。接下来我们结合RecyclerView的源码来了解下它的工作机制, 只有了解了工作机制以后我们才更容易方便我们来使用它。首先我们来一个简单使用RecyclerView recycler_v...

2020-03-01 13:54:35 286

原创 阅读java1.8 HashMap源码必须要懂的数据结构之红黑树

前面一章我们聊到了平衡二叉树,它是一种搜索效率极高的树, 但是它有一个缺点就是建树成本、 插入节点以及删除节点都需要进行 左平衡和右平衡旋转,需要消耗大量的计算资源。所以引进了红黑树,它相对平衡二叉树,牺牲了一小部分的搜索效率,但是换来了在建树、插入节点和删除节点的极大的方便。 这就是红黑树的由来。红黑树的定义它是以棵空树,或者是一个具有以下性质的树:节点非红即黑根节点是黑色所有的...

2020-02-28 16:39:33 371

原创 数据结构之AVL树(平衡二叉树)

什么叫AVL树 平衡二叉树?说到这个问题我们先说说二叉排序树 它也叫二叉搜索树,它解决数组和链表集合遍历和插入所有优势。但是假如我们是一个这样的树你觉得它的效率还会很高吗?如上图中 这样一棵搜索它的效率显然不高,因为除了7 其他的几个数字就类似一个链表。就因为这样的情况,所以平衡二叉树就诞生了,它是为了解决极限情况下,树的搜索效率低下的问题。那么什么样的树才叫平衡二叉树呢?作为一个平衡二...

2020-02-26 10:24:14 296

原创 数据结构之 Haffman编码

前面一篇博客已经介绍了什么是haffman树以及如何创建一棵haffman树。 这节我们将介绍 关于haffman树最重要的一个应用 haffman编码 它是一种压缩效率很高的算法。比如我们有这样一个字符串 ABAC BDCE DFEG FACA CCDE FG假如把这段字符串存储起来,按照UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。每个字符是8个0和1,22 *...

2020-02-25 16:50:18 427

原创 数据结构之Haffman树

什么是Haffman树Haffman树也叫最优二叉树,它是一种带权路径长度WPL最小的树。那么什么叫权 ? 什么叫路径长度?什么叫WPL?路径: 在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度: 在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点...

2020-02-25 15:02:08 463

原创 数据结构之树与栈结合-启发式寻路

1. 实际距离(f) = 实际代价(g) + 预估代价(h)如图我们从起点到终点位置需要绕开障碍物,我们实际走的距离是称为实际代价, 而中间位置到达终点位置,我们的路线不确定, 所以算作预估代价。2. 曼哈顿距离图中的红色线 就是曼哈顿距离做启发式寻路,就是从起点位置不停的找可以走的点, 然后计算实际代价和预估代价,所以预估代价需要不停的计算,这个计算的次数非常大,为了方便计算,所以预估...

2020-02-23 17:00:23 506

原创 数据结构必须要懂的类型之二叉排序树

1、什么是二叉排序树二叉排序树 又叫(排序树 搜索数)他是一个一棵空树,或者是一棵具有如下性质的树:1)若左子树不为空,那么左子树上面的所有节点的关键字值都比根节点的关键字值小2)若右子树不为空,那么右子树上面的所有节点的关键字值都比根节点的关键字值大3)左右子树都为二叉树4)没有重复值(这一点在实际中可以忽略)2、如何遍历二叉树中序遍历,先访问左节点,然后访问中间节点,然后在访问...

2020-02-23 12:09:51 488

原创 FFmpeg音频解码逻辑详解

这篇博客主要任务是讲封装格式的音频文件解码成pcm数据,然后使用ffplay播放, 其中ffplay 一定要配置环境变量否则不能播放一、 解封装解封装主要任务就是把mp3 等封装格式的文件,解析到FFmpeg对应的结构体中(AVFormatContext)。AVFormatContext是FFmpeg一个存放解封装格式数据的结构体,里面存放了有 媒体流(音视频流), 媒体文件包含的流的个...

2020-02-06 11:50:55 1023

原创 C++ 01 算法排序

复习C++ 友元函数 和 运算符重载 模板函数1、C++模板函数模板是泛型的基础1、函数模板定义形式template <class type> ret-type func-name(parameter list){ // 函数的主体}示例:template<typename T>T Max(T a, T b) { return a ...

2020-02-02 23:01:30 236

原创 NDK 与 FFmpeg相关问题

1、ffmpeg 播放音视频代码流程第一步 、 解封装1、avformat_alloc_context初始化一个AVFormatContext 结构体2、avformat_open_input(&avFormatContext, data_source, 0, &dictionary) 打开一个媒体源3、avformat_find_stream_info(avFormatC...

2020-02-02 10:48:47 247

原创 性能优化01 - 图片压缩 (NDK 哈夫曼算法压缩)

libjpeg-turbo | Main / libjpeg-turbolibjpeg编译文档libjpeg-turbo/BUILDING· GitHubMac环境编译 libjpeg压缩库cmake version 3.5.2针对的arm-v7完整的编译脚本#!/bin/bash# Set these variables to suit your needsNDK_PATH=/...

2020-02-02 10:48:01 543

原创 NDK问题集-执行 brew install 命令长时间卡在 Updating Homebrew 的解决方法

转:执行 brew install 命令长时间卡在 Updating Homebrew 的解决方法 | Mac 用户论坛在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。例:执行 brew install composer 命令~ brew install composerUpdating Homebrew... # ...

2020-01-14 22:28:11 248

原创 NDK02-Shell脚本编程

java语言编写的后缀是.java 而 .sh 就是shell脚本的后缀Shell Script有两种解释器解释器一 .bash解释器二 .sh执行脚本语言的方式有三种/bin/bash test02.sh./test02.sh (这种方式如果没有权限不能够执行 chmod 777 test02.sh)sh test02.sh示例一、test01.sh#!/bin/ba...

2020-01-14 22:26:48 186

原创 NDK01-打包静态库 动态库在mk和cmake环境配置使用

动态库和静态库动态库: libxxx.so运行的时候,才会去加载,加载一次就在内存中存在副本,其他地方使用就都是公用的。使用场景就是 高德百度sdk对外开房静态库: libxxx.a编译期把静态库完整的copy一份去执行,使用场景是如果不需要对外开放就使用静态库编译静态库、动态库先编写一个get.c 和 get.h文件localhost:test01 dsh$ cat test_ge...

2020-01-12 15:05:55 718

原创 Kotlin上手教程一、构造函数

构造函数class Person( name: String="Tom") { constructor(age:Int) : this() { //如果这个构造函数不传主构造的参数, 就必须手动传一个参数或者 主构造设置默认参数, 但是这里是得不到name属性,因为主构造函数最先执行 println("constructor(name: String, ...

2019-12-16 14:31:43 323

原创 仿QQ控件下拉放大阻尼效果的ScrollView

先放效果图,可能跟QQ原有的实现有点差别,只能说类似完成这个效果主要用到的就是ScrollView 的overScrollBy 这个方法主要是当你的滑到边界了然后继续向下滑动的时候触发。 /** * Scroll the view with standard behavior for scrolling beyond the normal * content bo...

2019-12-10 20:02:36 477 2

原创 完全搞懂CoordinatorLayout Behavior之实战一

完全搞懂CoordinatorLayout Behavior 你能做些什么完全搞懂CoordinatorLayout Behavior 系列之API讲解完全搞懂CoordinatorLayout Behavior之源码学习之前我们已经讲解了CoordinatorLayout Behavior 之间的关系以及与NestedScrollView 是如何联系 进行通知回调等操作的,还结合源码讲解了...

2019-12-01 00:06:46 544

原创 完全搞懂CoordinatorLayout Behavior之源码解析

前面我们已经简单介绍了CoordinatorLayout 的工作机制以及Behavior核心API,原则上是已经可以上手写demo。但是这一节,我想从源码的角度在讲一次CoordinatorLayout 与 Behavior的工作原理。在看源码之前先要明白一个前提: 1、CoordinatorLayout 之所以能够协调子视图的相关动作,是因为它实现了NestedScrollingParent2...

2019-11-28 20:51:39 418

原创 完全搞懂CoordinatorLayout Behavior 系列之API讲解

MaterialDesign相信大家一定很熟悉,Toolbar 、CardView、AppbarLayout、TabLayout 等等很多控件大家或多或少都应用过,但是由于国内的审美,所以这些控件并不想国外那么普遍。 而对于今天介绍的CoordinatorLayout 和Behavior 也是属于MaterialDesign的一部分。相比前面的那些控件单纯的只是使用api 属性就能达到效果而Coo...

2019-11-24 14:58:59 525

原创 完全搞懂CoordinatorLayout Behavior 你能做些什么

国外的一些应用经常可以看到一些比较炫酷的滑动动画交互,例如折叠、 放大缩小、平移、透明度变化等等,最近几年国内也有很多app逐渐使用了这种动画。比如这些。只有完全搞懂CoordinatorLayout Behavior 相关的知识点,包括原理我们才能够对上面的各种动态效果信手拈来。在这之前我说一个我自己的经历,在我自己项目中,我之前第一次看到58同城的那个首页效果时就想搬到我自己的项目中...

2019-11-24 14:58:44 356

原创 View事件分发机制,看完这些你一定能懂

当一个点击事件发生时,事件的传递顺序是从Activity -> PhoneWindow -> DecorView(当前界面的容器,setContentView最终得到的布局就是添加到DecorView),然后事件就传递给setContentView这个布局设置的View树上。事件传递的入口是从Activity dispatchTouchEvent 开始处理。 public bo...

2019-11-07 21:53:34 213

原创 UI绘制过程(一) -- APP如何启动的

源代码是28版本,使用的软件是AS入口是ActivityThread.main()方法attachApplication在main()方法中会调用一个attach方法在这个方法里面会使用一个IActivityMannager去调用一个attachApplication方法,IActivityMannager实际是ActivityManagerService(AMS)的代理类。Activit...

2019-10-27 18:24:30 690

原创 UI绘制流程(二)-- 测量、布局、绘制方法

上一篇中 ActivityThread 的handleResumeActivity 执行了Activity的onResume方法大概的路径是performResumeActivity() -> activity.performResume -> mInstrumentation.callActivityOnResume -> activity.onResume() @...

2019-10-26 17:45:51 182

原创 Jetpack相关系列 - Lifecycle使用和源码解读

这是今天在使用Lifecycle 时因为好奇,所以看了一下源码, 初次阅读,可能理解的不够深,讲的不够好请大家踊跃批评谢谢。初级使用简单介绍Lifecycle 是google为我们提供的一个专门用来监听Activity或者Fragment生命周期的一个组件。它是通过观察生命周期状态来回调LifecycleObserver中的方法的。先看一个简单的小例子Activityprotect...

2019-09-21 22:58:23 302

原创 详解Rxjava原理,其实没有那么难

一、基础知识RxJavaPlugins.onAssembly(new SingleJust<T>(item));这个方法的作用设什么呢,其实它的作用就是一个转换作用。使用的hook技术,这里原理比较难懂 暂时理解成会转换成 new出来的对象吧。/** * Calls the associated hook function. * @param <T> the va...

2019-08-18 16:17:23 954

原创 小试牛刀 --- Tinker集成教程

项目中我们总会遇到这样的问题刚刚发布版本就发现了一个严重错误,对用户的使用体验非常的差,所以需要立马更新. 但是如果全量更新的话,小则就是20M APK大小, 多则 50多 M. 这样频繁的让用户下载非常影响用户体验。 事实上我所在的项目组一直都是这么干的,个人感觉这样非常low。Tinker的作用Tinker就是为了解决这种问题而生的, 修改少量的代码,生成差分包,然后用户下载非常小...

2019-07-18 16:46:32 4084 1

原创 再一次看Handler源码的一些收获

Handler原理的大致描述一、APP启动在ActivityThread 类的main方法(这是APP启动入口方法),会有下面代码ActivityThread.javapublic static void main(String[] args) { //调用了prepare 方法 将当前线程与创建的Looper对象关联起来 Looper.prepareMainLoope...

2019-06-23 10:32:57 104

原创 git常用的操作命令学习

提交。从暂存区撤回修改reset命令可以用来重置暂存区,主要用于被重置add的部分。如果add命令之后,这个文件有了其他修改,那么这些修改有可能会丢失。git reset HEAD .git reset HEAD foo.txt保存修改我们可以用stash命令,将工作区和暂存区的修改保存在一个储藏栈中。git stash恢复被储藏的修改我们可以用这个命令将储藏的修改恢复到工作区...

2019-04-19 00:34:39 154

BadgeView.java

Android 控件显示红色的未读消息点,优点可以自己设置背景 和文字大小。 Android 控件显示红色的未读消息点,优点可以自己设置背景 和文字大小。

2020-03-27

启发式寻路博客资源文件

该资源是图片资源, 配合博客一起看的, 如果博客的图片没有失效 可以不下载,如果博客的图片没有失效 可以不下载,如果博客的图片没有失效 可以不下载

2020-02-23

Android 反编译工具合集

apktool: 查看 APK 包中的 AndroidManifest.xml 等 XML 资源文件 dex2jar: 将 APK 包中的 Dalvik 字节码文件(.dex)转换为 .jar 文件 JD-GUI: 查看 .jar 文件的 Java 源码

2018-10-24

仿qq微信的带滑动删除的按钮swipeMenuListView

仿qq微信 左滑出现删除按钮 swipeMenuListView.jar demo 都有可以直接用

2015-03-19

空空如也

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

TA关注的人

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