自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

水草葫芦娃的博客

记录一些成长上的内容

  • 博客(84)
  • 资源 (2)
  • 收藏
  • 关注

原创 远程jvisualvm连接遇到的坑

远程jvisualvm连接遇到的坑本次尝试主要遇到的问题就是端口问题,jmx连接时服务器会开启两个端口,之前看到的文章基本都是就说了一个端口,而领一个端口会随机监听,故而导致一直连接失败下面是配置:-Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=自己的ip地址-Dcom.sun.management.jmxremote.port=jmx连接时使用的port -Dcom.sun.management.jmxremote

2020-05-12 14:32:02 784

原创 el-upload图片上传前端压缩(auto-upload版本)

标签中添加before-upload的hock <el-upload class="avatar-uploader" :action="baseUrl + '/v1/addimg/shop'" :show-file-list="false" :on-success="handleShopAvatarScucess" :before-upload="befor...

2020-03-11 16:56:40 3763

转载 Nginx的基础功能使用

Nginx1.静态HTTP服务器2.反向代理3.负载均衡4.虚拟主机5.FastCGINginx1.静态HTTP服务器server{ Listen 80; Location { Root /usr/share/nginx/html }}2.反向代理server { listen 80; ...

2018-07-12 10:54:39 241

原创 Vim快捷键

Vim快捷键单键 快捷键 功能 r 倒序 s 按各种类型排序 S 特定标示优先级排序 - 回到上一层 u 回到之前的位置 a 只显示某些文件,跟c-h配合使用 d 在当前目录新建文件 D 删除当前文件 i 使当前目录变成可扩展 I 显示隐藏头部的内容 ...

2018-06-19 09:50:53 248

原创 OkHttp请求解读

OkHttp请求解读一.基础内容1.请求体访问协议, 响应码, 描述信息, 响应头, 响应体2.使用代码1.get同步和异步方式Request request = new Request.Builder() .url("http://publicobject.com/helloworld.txt") .build();Response res...

2018-04-12 15:29:56 350

原创 Java中使用DecimalFormat保留两位小数,同时不保留0

import java.text.DecimalFormat;/** * Created by laozhu on 2018/4/10. */public class Helo { public static void main(String[] s){ DecimalFormat decimalFormat = new DecimalFormat("0.#...

2018-04-10 11:57:02 8985

原创 Android中当item数量超过一定大小RecyclerView高度固定

Android中当item数量超过一定大小时,将RecyclerView高度固定

2018-04-09 16:30:18 17632 8

原创 java线程池的4种拒绝模式

简介在线程池的使用中,当任务数量超出之前设定的线程池大小(既:核心线程数+等待队列大小),系统需要采取相应策略来应对新进来的任务。当前java线程池有4种不同的策略来应对这种情况。拒绝策略1.AbortPolicy In the default {@link ThreadPoolExecutor.AbortPolicy}, the handler throws...

2018-04-08 11:19:24 468

原创 python爬虫scrapy的使用

简介本文将记录一次使用scrapy进行网页数据爬取的经历。环境与安装环境python – 3.6.1(区别python2和python3就行了,两者的语法在有些地方有区别) scrapy – 1.5.0 (这个是根据你的python版本来选择的) twisted wheel pywin32安装python 这里就不再赘述了,无非就是到python的官方网站下载相应安装包安装。如果要看的话,

2018-02-08 16:45:00 296

原创 Dagger2全面解析

Dagger2的好处相关标签标签使用方式注入方式不同类的关系编译后的生成文件与原文件及关系图注入路径Scope用于划分作用域各标签的意义Singleton的单例模式是如何起作用的我只是个栗子Qualifier的巧用指哪打哪Dagger2的好处依赖的注入和配置独立于组件之外。因为对象是在一个独立、不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不

2017-08-18 16:29:09 363

原创 Android自动化测试

Android自动化测试Android自动化测试摘要Monkey测试简介使用方式效果展示更多参数介绍可能会遇到的问题单元测试简介使用方式Junit标签解析Mockito使用方式UI测试简介使用方式标签解析总结摘要Android自带了很多方便的测试工具和方法,包括我们常用的单元测试、UI测试、Monkey测试、Robotium测试、MonkeyRunner测试、s

2017-06-30 16:54:35 516

原创 来看看compileSdkVersion, minSdkVersion, targetSdkVersion这三兄弟

选择你自己的 compileSdkVersion, minSdkVersion, and targetSdkVersion当你将一个App发布出去之后,也许马上Google又发布了一个新的Android版本。那这是否就意味着你发布的App会出现一些版本上的问题。当然这并不会困扰我们,因为Android是向前兼容的—向前兼容即旧版本能够适应新版本的应用—对Android而言就是在旧版上开发的应用当我们

2016-11-30 16:25:41 393

原创 Android gradle: buildtoolsVersion vs compileSdkVersion

首先来一段从stackoverflow上看到的英文解释 compileSdkVersion is the API version of Android that you compile against.buildToolsVersion is the version of the compilers (aapt, dx, renderscript compiler, etc…) that you

2016-11-30 11:14:26 783

转载 Activity启动过程全解析

Activity启动过程一些基本的概念ActivityManagerServices,简称AMS,服务端对象,负责系统中所有Activity的生命周期ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与ActivityManagerServices配合,一起完成Activity的管理工作Appli

2016-11-28 14:44:34 483

转载 android调用高版本api函数的兼容性问题

有时候代码中调用的一些api函数对api版本有要求,比如ListView的smoothScrollToPosition函数,该函数要求android api版本在8或者以上才可以使用,即要求用户的手机必须是android2.2及其以上的才行。有些同学可能会这么做[java] view plaincopytry  {      final int mVer

2016-11-16 22:56:27 559

转载 Android程序Crash时的异常上报

转载请注明来源:http://blog.csdn.net/singwhatiwanna/article/details/17289479前言大家都知道,android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉你的

2016-11-16 22:53:44 305

转载 知道这20个正则表达式,能让你少写1,000行代码

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; v

2016-11-16 22:49:15 204

转载 Java核心技术点之内部类

为什么要使用内部类内部类就是定义在一个类内部的类,那么为什么要使用内部类呢?主要原因有以下几点:第一,内部类中定义的方法能访问到外围类的私有属性及方法;第二,外围类无法实现对同一包中的其他类隐藏,而内部类可以做到这一点;第三,匿名内部类在我们只需使用该类的实例一次时可以有效减少我们的代码量。关于以上三点,我们在下文中会举出具体例子进行进一步的说明。如何使用内部类使用内部类访

2016-11-16 22:44:53 392

转载 git github 详解

注册账户以及创建仓库要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。步骤如下: 打开https://github.com 直接在首页上注册点按钮注册成功之后,在页

2016-11-16 00:07:30 320

原创 Git常用指令

Git常用指令本地仓库管理创建版本库:git init添加文件到暂存: git add readme.txt将文件暂存中的文件提交到本地仓库:git commit -m “add 3 files” -m之后冒号中的是当前提交的描述,以备之后查看历史时,知道该次提交做了什么。查看仓库当前状态:git status查看修改的内容有什么区别:git diff readme.txt查看历史版本

2016-11-15 23:58:15 248

转载 git学习详解

本地库创建版本库$ mkdir learngit$ cd learngit$ pwd/Users/michael/learngit                    git init用命令git add告诉Git,把文件添加到仓库:$ git add readme.txt为什么Git添加文件需要add,commit一共两步呢?因为

2016-11-15 22:25:12 226

原创 关于android系统架构中的HAL层

HAL(hardware abstraction layer) 硬件抽象层HAL层主要是为规避GPL【开源协议】而设计的,它将将硬件驱动分成内核空间和用户空间两部分,其中用户空间两部分采用的是商业友好的Apache License。应用程序框架层主要包括系统服务,例如组件管理服务、应用程序安装服务、窗口管理服务、多媒体服务和电信服务等。应用程序框架进一步又分为C

2016-11-12 19:13:41 1014

转载 Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客)前言为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问

2016-11-12 19:10:05 332

转载 Android apk动态加载机制的研究

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/22597587 (来自singwhatiwanna的csdn博客)背景问题是这样的:我们知道,apk必须安装才能运行,如果不安装要是也能运行该多好啊,事实上,这不是完全不可能的,尽管它比较难实现。在理论层面上,我们可以通过一个宿主程序来运行一些未安装的apk,当然,

2016-11-12 19:08:01 326

转载 Android源码分析-资源加载机制

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客)前言我们知道,在activity内部访问资源(字符串,图片等)是很简单的,只要getResources然后就可以得到Resources对象,有了Resources对象就可以访问各种资源了,这很简单

2016-11-12 19:03:31 225

原创 深入理解Android消息处理系统——Looper、Handler、Thread

Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等。MessageQueue:消息队列,用来存放Handle

2016-11-12 19:01:20 286

原创 源码解析--activity启动过程

Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又要写两篇长文,更何况分析它们的源码呢。不过本文的侧重点不是它们,我要介绍的是一个Activity典型的启动过程,本文会从源码的角度对其进行分析。我们知道,当startActivity被调用的时候,可以启动一个Activity,但是你知道这个Ac

2016-11-12 18:59:45 495

原创 android art和Dalvik的比较

Dalvik和art的比较 Art4.4才有,源于google收购的Flexycore公司。Dalvik模式像是一台折叠自行车,每次骑之前都要组装后才能上路。而ART模式就是一个已经装好的自行车,直接就能上车走人。所以ART模式在效率上肯定是要好于Dalvik。 通过以上这种表格,我们可以直白的看出,全新的ART模式具备用RAM内存小、流畅度更好以及更省电的特性。 

2016-11-12 17:07:26 310

原创 GNU和apache协议的对比

android系统的用户空间使用apache协议,linux内核使用gpl协议。 GNU General Public Licence (GPL)GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:可自由复制你可以将软件复制到你的

2016-11-12 17:04:05 1567

转载 Android源码分析-全面理解Context

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/21829971 (来自singwhatiwanna的博客)前言Context在android中的作用不言而喻,当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context,而这个Context到底是什么呢,这个问题好像很好回答又好像难以说清楚

2016-11-12 17:01:25 225

原创 binder学习

C++层我们开发时所见到的Binder是Android系统提供给我们的java接口,java层的Binder对象只是Android对底层Binder的一个封装,提供给上层开发人员使用,真正的Binder其实隐藏在系统底层,默默的替我们进行着跨进程通信。Java层的服务端Binder对象在C++层对应的对象为BBinder,而客户端拿到的BinderProxy对象对应的则为BpBinder,

2016-11-12 16:56:02 338

原创 Zygote和System进程的启动过程

init脚本的启动+------------+ +-------+ +-----------+|Linux Kernel+--> |init.rc+-> |app_process|+------------+ +-------+ +-----------+ create and public

2016-11-12 16:45:33 251

转载 service详解

1、Service的种类  按运行地点分类:类别区别 优点缺点  应用本地服务(Local)该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。 主进程被Kill后,服务便会终止。 非常常

2016-11-12 16:42:40 485

原创 activity的生命周期

1).按back退出activity此时会走onPause()->onStop()->onDestroy()方法:2).在一个Activity中启动另一个Activity从MainActivity中启动SecondActivity我们可以很清楚的看到MainActivity中的onPause方法执行完了以后然后新的SecondActivity的o

2016-11-12 16:40:27 244

原创 从源码角度解析android APP启动过程中各类及其方法的调用

上图就可以很好的说明App启动的过程ActivityManagerService组织回退栈时以ActivityRecord为基本单位,所有的ActivityRecord放在 同一个ArrayList里,可以将mHistory看作一个栈对象,索引0所指的对象位于栈底,索引mHistory.size()-1所指的对象位于 栈顶Zygote进程孵化出新的应用进程后,会执行ActivityThread类的

2016-11-12 16:34:32 366

原创 mvvm模式详解

mvvm是在mvp之上改进的,并且是因为wpf的出现。wpf的数据绑定功能这种模式跟经典的MVP(Model-View-Presenter)模式很相似,除了你需要一个为View量身定制的model,这个model就是ViewModel。ViewModel包含所有由UI特定的接口和属性,并由一个 ViewModel 的视图的绑定属性,并可获得二者之间的松散耦合,所以需要在

2016-11-12 16:29:28 2877

转载 mvc mvp mvvm详解

相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框 架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候想用MVP的,代码写着写 着就变成了MVC,久而久之就对它们三个的选择产生了恐惧感,如果你也是这样的人群,那么这篇文章可能会对你有很大的帮助,希望大家看完都会有收获吧!文章重点:

2016-11-12 16:26:26 681 2

原创 3次握手,4次放手

注释:ACK = 1是确认标示  ack = x 是希望的到的seq最后一次握手:   (防止已失效连接请求报文传到sever,这样就不会出现sever连接等待现象)最后一次放手的等待时间(time-wait)=2msl,是因为若ACK返回丢失了,sever重传。保证client能接收。4次握手是因为sever收FIN后并不能立即关闭socket,需将所有报文传输完毕后才可

2016-11-11 19:21:25 258

转载 http状态码

200-299 是ok300-399  关于服务器资源的定位或修改400-499  用户权限或语法错误500-599  服务器问题100 Continue  初始的请求已经接受,客户应当继续发送请求的其余部分101 Switching Protocols  服务器将遵从客户的请求转换到另外一种协议

2016-11-11 19:19:59 353

转载 网络5层,对应每层的协议

2016-11-11 19:16:45 384

tmod的使用

tmod代码,js模板,欢迎各位下载,只为完成任务,hello world

2014-08-24

struts-2.3.16.3

java开发,平台搭建,ssh,内容比较全,欢迎下载,初学者使用

2014-08-24

空空如也

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

TA关注的人

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