![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术
sun20209527
这个作者很懒,什么都没留下…
展开
-
Linux上如何使用Tomcat绑定域名
找到 Connector port="8080“ 改成 Connector port="80"转载自:https://www.jianshu.com/p/e5f38512a728。其中 www.189hall.cn 处填写你的域名,appBase="商业转载请联系作者获得授权,非商业转载请注明出处。打开tomcat/conf/server.xml。2、配置你的tomcat的默认端口为:80。文件夹,然后将你的网站的文件全部移到。1、首先域名要先绑定到你的服务器上。" 处,填写的是你的网站的根目录。转载 2022-11-29 14:35:06 · 1173 阅读 · 0 评论 -
viewpager的PageTransformer采坑
网上找了几个帖子,有几个需要几下的地方:1.mViewCard.setPageMargin(ScreenUtil.dp2px(10));//设置viewpage之间的间距这个是设置viewpager页面的间距,一定要转换成px;这个是正确的间距。2.布局文件要设置左右边距,父布局和viewpager都要设置android:clipChildren=false,以便在布局之外显示页面...原创 2019-01-29 16:34:23 · 726 阅读 · 0 评论 -
KMP算法
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直...转载 2018-04-13 18:57:33 · 163 阅读 · 0 评论 -
堆排序
堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下: 任意一节点指针 i:父节点:i==0 ? null ...转载 2018-04-14 15:53:01 · 268 阅读 · 0 评论 -
自定义View很简单 - Android翻页效果原理实现之引入折线
尊重原创转载请注明:From AigeStudio(http://blog.csdn.net/aigestudio)Power by Aige 侵权必究!炮兵镇楼PS:写得太嗨忘了说明一点,下面文章中提到的“长边”(也就是代码部分中出现的sizeLong)指的是折叠区域直角三角形中与控件右边相连的边,而“短边”(也就是代码部分中出现的sizeShort)则指的是折叠区域直角三角形中与控件底边相连的...转载 2015-11-05 15:44:56 · 2788 阅读 · 0 评论 -
应用中修改多个getDrawable的相同资源id的问题分析
记录下遇到的问题:程序中通过getDrawable加载统一资源,这个资源会在很多页面或者一个页面的不同地方使用,而当修改某一个地方的drawable的颜色等属性时,其他地方的该资源也同时变化了。public void changeDrawableColor (int color) { Drawable bgDrawable = context.getResources().getD...原创 2018-03-31 19:02:48 · 223 阅读 · 0 评论 -
【Android 性能优化】—— 详解内存优化的来龙去脉
APP内存的使用,是评价一款应用性能高低的一个重要指标。虽然现在智能手机的内存越来越大,但是一个好的应用应该将效率发挥到极致,精益求精。本文是【Android 性能优化】系列的第二篇文章,我们在第一篇【Android 性能优化】—— UI篇中主要介绍了Android界面的优化的原理以及方法,这一篇中我们将着重介绍Android的内存优化。本文的篇幅很长,但是请不要嫌烦,因为每看一节,你就多了一份在...转载 2018-03-08 17:49:19 · 433 阅读 · 0 评论 -
简化高仿以及源码分析Android 5.0的CardView
需求: 为了实现定制化的CardView效果,想要定制每一个角落都是圆弧或者直角的需求,需要了解CardView的绘制原理。 CardView核心思想:像版本控制就不讲了,只分析如何绘制圆角和阴影的,以下是源码的注释,整体看起来很复杂,但核心步骤就几行代码:主要涉及这个类: RoundRectDrawableWithShadow public void draw(Canvas canvas)...原创 2018-03-08 17:28:59 · 600 阅读 · 0 评论 -
OkHttp3连接建立过程分析
如我们前面在 OkHttp3 HTTP请求执行流程分析 中的分析,OkHttp3通过Interceptor链来执行HTTP请求,整体的执行过程大体如下:这些Interceptor中每一个的职责,这里不再赘述。在OkHttp3中,StreamAllocation是用来建立执行HTTP请求所需网络设施的组件,如其名字所显示的那样,分配Stream。但它具体做的事情根据是否设置了代理,以及请求的类型,如...转载 2018-02-26 15:16:06 · 3203 阅读 · 0 评论 -
Android Service完全解析,关于服务你所需知道的一切(上和下)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952435相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了。Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,转载 2017-11-28 11:33:39 · 8746 阅读 · 1 评论 -
花式写单例之单例的六种写法
一、前言 单例模式是一种常用的设计模式,其定义是单例对象类只允许一个实例存在,实现的核心原理是构造函数私有化。使用单例可以节省内存开销,也是现实场景中的一种映射,比如一台打印机同时只能运行一个打印任务,一个公司只有一个CEO等场景。二、实现步骤2.1 构造函数私有化;2.2 提供一个静态方法获取实例(需要注意多线程问题)。三、写法3.1 饿汉式(线程安全)p转载 2017-11-23 16:33:25 · 606 阅读 · 0 评论 -
Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
app程序入口中为主线程准备好了消息队列而根据Looper.loop()源码可知里面是一个死循环在遍历消息队列取消息而且并也没看见哪里有相关代码为这个死循环准备了一个新线程去运转,但是主线程却并不会因为Looper.loop()中的这个死循环卡死,为什么呢?像Activity的生命周期这些方法这些都是在主线程里执行的吧,那这些生命周期方法是怎么实现在死循环体外能够执行起来的?...转载 2019-03-20 22:03:55 · 213 阅读 · 0 评论 -
Android Studio中使用AIDL简单示例
这两天在学习aidl跨进程调用,研究了一天终于写出了个helloword。。做下记录吧。根据官方提供的指南,开发aidl跨进程调用,主要分以下步骤:1.创建.aidl文件-该文件(YourInterface.aidl)定义了客户端可用的方法和数据的接口。2.在makefile文件中加入.aidl文件-(Eclipse中的ADT插件提供管理功能)Android包括名为AIDL的编译器,位于t...转载 2019-03-20 22:22:43 · 2534 阅读 · 0 评论 -
Handler是怎么做到消息延时发送的
以handler.postDelayed()为例:它的调用逻辑是这样的:public final boolean postDelayed(Runnable r, long delayMillis) { return sendMessageDelayed(getPostMessage(r), delayMillis); }public final boo...转载 2019-03-20 22:38:18 · 2507 阅读 · 0 评论 -
Ndk jni编译so,亲测可用~_~
https://blog.csdn.net/qq_35071078/article/details/70502481使用ndk-build构建Jnindk-build是什么ndk-build 文件是 Android NDK r4 中引入的一个 shell 脚本。其用途是调用正确的 NDK 构建脚本。可以用这个命令来生成.so文件。ndk-build如何使用当你想使用该命令将.cpp/...转载 2019-08-13 20:16:42 · 241 阅读 · 0 评论 -
mac Android studio快捷键修改 左键查看源码 总弹出右键菜单
在mac中使用Android studio,需要进入某一个类时要使用ctrl+左键来进入,但是这个又是系统右键的快捷键,所以我们需要覆盖一下快捷键的设置。KeyMap中搜索Declaration,点击Add Mouse Shortcut,添加cmd+左键,即可完成覆盖,以后再也不会弹出右键的提示了。...原创 2019-05-06 08:14:28 · 1209 阅读 · 0 评论 -
从屏幕脉冲角度彻底理解属性动画原理
一.有个细节,就是设置不同差值器或者估值的,可以定义一个接口,不同的差值器比如线性插值器估值器,定义好,在主要也就是上层实现动画的时候,直接调用不同的差值器就行了,因为上层的需求就是一个插值器,调用的设置不同的差值器就行了,面向接口编程。二.整个动画原理流程:1.先明白2个概念,帧刷新率和屏幕刷新率,帧刷新率相当于在咱的应用中,经过cpu执行测量,布局和绘制流程,对图像转换成文理,再经过g...原创 2019-04-15 08:12:39 · 446 阅读 · 0 评论 -
Activity的四种启动模式应用场景
原文:https://blog.csdn.net/black_bird_cn/article/details/79764794挺好:https://blog.csdn.net/freekiteyu/article/details/69523967在这金三银四的时间里一个哥们忽然一本正经的问我Activity的启动模式和具体的应用模式;我也一想是啊,平是不太注意结果到了 关键的时刻卡壳了,...转载 2019-03-19 11:31:27 · 485 阅读 · 0 评论 -
android activity管理(二)之Activity(ActivityClientRecord)生命周期管理
原文:https://blog.csdn.net/tonyandroid1984/article/details/71046368 tonyandroid1984生命周期的管理,其实客户端和服务端来回调用,比如生命周期开启一个,就要暂停上一个,但这个同步是怎么做的,有待于研究。ActivityRecord是系统AMS的activity记录表,每一个ActivityRecord对应一...转载 2019-03-18 22:31:07 · 1289 阅读 · 0 评论 -
Android四大组件:BroadcastReceiver史上最全面解析
链接:https://www.jianshu.com/p/ca3d87a4cdf3前言BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver的一切相关知识目录示意图1. 定义即 广播,是一个全局的监听...转载 2019-03-20 23:00:59 · 215 阅读 · 0 评论 -
Android Studio 中的调试技巧1
如果看日志分析不出问题所在,可能就需要打断点去调试。本文通过总结Android Studio的一些调试技巧来加强我们发现并解决BUG的能力,而不是仅仅停留在“断点单步执行”上。一、概述先来看一段代码:上图中左侧是我们打的断点,因为断点所在代码类型不一样或断点设置不一样,所呈现的图标也不一样。在断点位置右键可对该断点进行设置,如下图变量(相关设置窗口)转载 2017-11-13 15:34:39 · 816 阅读 · 0 评论 -
从startActivity一步步到穿越进程壁垒
身为一名Android程序猿,我们每天都在调用StartActivity来启动另一个页面,可是在调用了成百上千次之后,我们往往会疑惑在执行这行代码的时候,背后到底隐藏着什么原理。是的,我曾不止一次的怀疑过,可是却始终鼓不起勇气去揭开它背后那神秘的面纱。今天,我终于决定硬着头皮走进这超长的调用链,正所谓不成功便成仁,男人就要对自己狠一点。好了,废话不多说,直接开始。(下面有些图来自网络,因为我们往往转载 2017-09-30 15:57:40 · 282 阅读 · 0 评论 -
Linearlayout 测量过程源码解析(二)
转自: http://blog.csdn.net/lfdfhl/article/details/51347818大家知道,自定义View有三个重要的步骤:measure,layout,draw。而measure处于该链条的首端,占据着极其重要的地位;然而对于measure的理解却不是那么容易,许多问题都是一知半解,比如:为什么父View影响到了子View的MeasureSpec的生成?为什转载 2016-06-01 11:08:22 · 843 阅读 · 0 评论 -
Android Context简介
1. Context基本概念1.1 Context是什么? 1) Context是一个抽象类,其通用实现在ContextImpl类中。 2) Context:是一个访问application环境全局信息的接口,通过它可以访问application的资源和相关的类,其主要功能如下: • 启动Activity • 启动和停止S转载 2016-05-26 17:13:27 · 807 阅读 · 0 评论 -
java父类子类上下转型总结 和 equals==的理解
关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本类型比较,equals 是对象比较,不懂 hashCode,想起来简直惨不忍睹。于是找了一点小时间,研究了一番整理成文章供大家参考。== 是什么?在《java核心技术卷 1》中将 ==归类于关系运算符;==常用于相同的基本数据类型之间的比较,也可用于相同类型的...原创 2014-09-02 17:01:21 · 1743 阅读 · 0 评论 -
安卓读取本机大图片
1. /** * 读取大图片 * @param key * @return */public Bitmap getBitmap(String key){ Bitmap bitmap = null; BitmapFactory.Options sBitmapOptions = new BitmapFactory.Options(); sBitmapOption原创 2015-09-02 13:40:15 · 417 阅读 · 0 评论 -
深度剖析Android MVPR架构模式(一)
全面的单元测试能提高内部系统的代码质量,因为系统的每一个组件都需要被测试,因此每个单元都需要在系统外被构建,在测试环境中进行测试。对对象进行单元测试需要创建该对象,提供该对象需要的依赖,并与它进行交互,最终检验测试环境的输出是否与预期一致。因此,为了让一个类易于进行单元测试,类的依赖必须明确,而且能够轻易地被替代和明确被调用和验证的责任。在软件工程领域中,这就意味着代码必须松耦合、高内聚,也就是说转载 2015-09-02 11:13:41 · 529 阅读 · 0 评论 -
Android Studio导入项目的几种方法
本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4。请尝试更新到该版本。Android Studio默认使用 Gradle 构建项目, Eclipse 默认使用Ant构建项目。建议Android Studio导入项目时,使用 Gradle 构建项目。导入 Eclipse 项目本例中,使用到的 Eclipse 项目结构如图:转载 2015-09-02 09:51:37 · 843 阅读 · 1 评论 -
ListView优化(三) 【来自知乎上的汇总,很有见地!!】
总结一下:复用convertView对象,减小内存压力使用ViewHolder,减少findViewById次数,在VIewHolder 使用关键字 static 使用图片缓存、压缩图片、异步加载图片listview滑动的时候,不加载图片,让滑动更加流畅只加载可见item的图片/********************************************** 华丽的分割转载 2015-09-02 10:28:38 · 573 阅读 · 1 评论 -
Quora如何在快速开发中保持高品质代码
高质量的代码库能使产品迭代、协作和维护变得更为容易,加快长期项目开发的速度。在Quora,我们十分重视代码库的质量。然而,纵然有上面提到的好处,维护高质量的代码仍会间接耗费大笔费用,占用开发周期。权衡得失对很多人而言是件难事,他们面临相悖的两个选择:降低代码质量以提高开发速度;还是放缓步伐,提高代码质量?对初创公司而言,开发速度快更重要,所以人们假定你会牺牲代码质量。通过设转载 2015-09-02 11:16:38 · 451 阅读 · 0 评论 -
Android多国语言的设置
Android 史上最强多语言国际化,不仅第一次会跟随系统,而且会保存用户的语言设置分类: Android2015-08-12 00:38 4614人阅读 评论(16) 收藏 举报国际化android语言1.我等屌丝喜欢简单粗暴,首先来一幅图哥们我是大陆人,当然默认语言是 中文简体,但是我刚刚切换成了繁体了2.看下配置文件,按照这个格式 ,看转载 2015-09-02 11:01:11 · 1074 阅读 · 0 评论 -
Android:Layout_weight的深刻理解
http://blog.csdn.net/fngy123/article/details/39002543转载 2014-09-02 17:19:22 · 504 阅读 · 0 评论 -
详细解析Java中抽象类和接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两转载 2014-09-02 17:40:01 · 473 阅读 · 0 评论 -
android源码解析之(十四)-->Activity启动流程
转载: 很经典的文章,比主席的分析的透彻全面: http://blog.csdn.net/qq_23547831/article/details/51224992好吧,终于要开始讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等,转载 2016-06-05 11:37:25 · 2220 阅读 · 0 评论 -
android自定义view 模仿win10进度条
先上预览图:流程1.一个匀速圆周运动的点2.多个匀速圆周运动的点3.多个圆周运动的点,速度由快到慢4.点与点之间的间距线性减少,动画的最后合为一个点5.为了让动画看起来更加流畅,需要在动画即将结束的时候手动绘制点核心控件PathMeasure:截取Path中的一部分并显示ValueAnimator:完成动画从初始值平滑的过度到结束值的效果,同时还负责管理转载 2016-09-20 10:02:46 · 1181 阅读 · 0 评论 -
Android优化最全面知识总结
界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。 我司这类做 ROM 的公司更不一样,预装的应用一定要非常流畅,这样给客户或用户的第一感觉就是快。又卡又慢的应用体验,会影响客户或用户对产品的信心和评价,所以不可忽视。目录一. Android渲转载 2017-09-18 12:04:45 · 418 阅读 · 0 评论 -
经验积累-内存泄漏
关于App内存泄漏,相信多多少少都会遇到一些关于怎么排查泄漏不再赘述,相关工具可以使用MAT/LeakCanary,下面标出一些常见的修改点:1.无论是单例还是常规引用,我们的Context用于都是第一位,只需记住无论何时,Context对象优先使用ApplicationContext,覆盖整个软件生命周期2.Activity,对于那些必须使用Activity对象的引用转载 2017-08-22 17:36:26 · 440 阅读 · 0 评论 -
如果检测我们的安卓卡顿?
企业级开发常态:在复杂的项目环境中,由于历史代码庞大,业务复杂,包含各种第三方库,偶尔再来个jni调用,所以在出现了卡顿的时候,我们很难定位到底是哪里出现了问题,即便知道是哪一个Activity/Fragment,也仍然需要进去里面一行一行看,动辄数千行的类再加上跳来跳去调来调去的,结果就是不了了之随它去了,实在不行了再优化吧。于是一拖再拖,最后可能压根就改不动了,客户端越来越卡。事实上,很多转载 2017-08-18 16:06:06 · 1030 阅读 · 2 评论 -
自定义万能回弹插值器 BounceInterpolator
可以实时查看插值器的曲线图: http://inloop.github.io/interpolator/这个是谷歌的震动插值器 BounceInterpolator//Use javascript syntax to create complex equationsfunction bounce(t) { return t*t*8; }if (x b原创 2017-06-12 10:55:09 · 4663 阅读 · 0 评论 -
开源库ImageLoader的使用
这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更深入了解这个库的使用和配置。 GITHUB上的下载路径为:htt转载 2017-06-09 18:43:28 · 259 阅读 · 0 评论