自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

狂奔的蜗牛

青春是一张白纸,当你挥洒上色彩时,他有了另一个名字,叫梦想

  • 博客(89)
  • 收藏
  • 关注

原创 == & equals & hashCode有什么区别和联系,为什么这么设计

== & equals & hashCode这三个东西很基础,刚开始接触Java时都一直在用,但是为什么会有这些值,有这些值的目的是什么,怎么用好还是挺值得深思的

2022-01-10 23:12:37 410

原创 面试题-算法篇

一、单链表倒序排列public static void revse(Node node){ //拿到头结点 Node head = node; //拿到当前循环的节点 Node curNode = node.next; //头结点的next置为null head.next = null; ...

2019-12-01 08:34:18 268

原创 Mybatis核心源码分析

一、介绍 mybatis作为一款半自动化数据库持久层框架,提供了完整的JDBC操作,对参数解析,sql预编译,返回值解析,数据库事务的支持,还有对于session的管理,数据缓存的处理;有xml和注解两种配置方式,几乎屏蔽了JDBC的操作;正式因为这种灵活使它广受国内互联网公司的青睐;二、核心类 1.SqlSessionFactoryBuilder...

2019-11-22 01:52:29 310

原创 消息中间件kafka-架构及优势

一、消息中间件官方解释:消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。说白了就是在分布式中进行消息的收发和处理的,但是为什么用,怎么用,用来解决什么问题二、使用场景版本:kafka2.10简易架构:一般消息中间件有三大模块,producer(消息生产),...

2019-07-27 20:48:02 995

原创 elasticsearch搭建之遇到的那些坑

一.搭建过程最近项目会接入elasticsearch,想提前用一下,果断下载安装,从官网下载最新的7.2.0的包上传到服务器,解压,然后启动即可;但是在启动时会遇到以下几个问题二.问题解决问题一:启动es一直提示jdk版本太低刚开始修改了es的配置文件,指定了jdk的版本号,发现并没有什么卵用;现在看来只是一个友好提示而已问题二:root用户不能运行es好吧,既...

2019-07-15 23:38:28 1746

原创 springboot之redis集成(遇到的那些坑)

一.集成过程redis在阿里云已经搭建好,本地用单元测试也通过了,本以为使用springboot接入很easy,但是遇到了很多的坑首先列一下springboot接入redis的步骤1.在yml中配置一下redis的地址及端口,配置host主机地址和port端口即可即可2.创建JedisConnectionFactory连接,读取yml中的地址及端口;创建redisTemplate,...

2019-07-14 15:51:14 9328 1

原创 OGNL表达式

一、什么是OGNL OGNL:对象视图导航语言,个人理解是把视图和对象通过某种方式关联起来,类似的还有EL表达式,不过OGNL表达式的功能可比EL表达式强n多倍 二、详解两大对象 Root:可以放置任意对象 Context:只能存放Map形式键值对api使用 ①普通对象属性创建User user = new User(“haha”);创建map,Map<String,U

2017-09-09 15:37:21 463

原创 java内存泄漏问题

一、内存中都有什么栈:存放引用及基础变量,线程独有堆: 存放创建的对象,线程共享方法区: 存放方法的共享代码区,由对象共享,线程共享数据区:存放静态变量和常量,线程共享 主要由这四块内存区域组成,每块内存存放的数据不同,职能也不同二、堆栈分析栈 :先进后出 不管在哪里创建的变量或者引用都会存放在栈中,并且在方法执行完或者对象被销毁就会释放栈中的内存,并且每个线程都有自己的栈内存,不

2017-08-20 11:14:15 366 1

原创 Redis操作及持久化分析

一、什么是Redis 说起redis不得不提的就是nosql(非关系型数据库),数据之间没有像关系型数据库那样存在关联,不用复杂的sql语句操作,用key-value,列存储,文档存储多种形式;redis就是使用的key-value的形式存储的,直接把数据存放在内存中,也有自己的持久化存储机制,最大的优点就是访问速度炒鸡快 二、redis使用及命令使用 环境搭建在linux ①解压

2017-08-17 22:53:00 476 1

原创 ajax初步了解

一、什么是ajax ajax可以在不加载整个网页情况下,部分更新网页内容,可以定义为javascript与xml的结合体,目前有两种实现方式,一是用原生ajax语法,二是,使用jquery封装的ajax;不管怎样都是基于javascript来实现的 二、ajax使用 1.原生ajax XmlHttpRequest:与服务器进行交互实现网页的部分刷新,几乎目前所有浏览器都支持,IE5和IE6使

2017-08-05 11:57:46 330

原创 致敬经典之Hibernate

一、经典的原因 Hibernate是一个对象关系映射的框架,顾名思义就是把java的实体映射到数据库,并且自动帮助我们生成sql语句,这样我们就可以使用对象随心所欲的使用对象编程操作数据库,可以说是风靡一时,但是这也成为Hibernate框架的一个诟病,因为sql语句我们无法直接操作,对sql的优化造成了困扰,我想这也是MyBatis兴起的一个重要原因吧,两者的不同和优缺点这里暂时不做详细对比

2017-07-22 10:41:03 418 5

原创 SSH框架简单集成

一、SSH     Struts2,Spring和Hibernate在项目中的简单集成过程二、过程     1.从Dao层开始,首先集成Hibernate实现数据库层的访问        配置文件hibernate.cfg.xml文件,默认会在src目录下寻找该文件并加载        配置内容,以SessionFactory为根节点,如下 com.mysq

2017-07-16 10:26:32 405 4

原创 git操作教程

一、Git是什么?       一个分布式版本控制工具,与svn类似,但是功能比之强大,代码管理比较更安全,方便,不过上手难度相比svn要难一点点。代码分别在本地仓库和远程仓库管理。git命令格式可以参考linux命令二、怎么用?      1.本地搭建         ①.安装git         ②.创建本地目录         ③.进入目录,配置用户信息it

2017-04-23 22:22:34 535 6

原创 Android之神策集成

一、背景      神策:专注于大数据的分析,提供大数据分析和解决方案      之前公司一直用cobub,只是对用户的渠道和行为做简单的统计,由于产品的需求,需要更加详细的用户统计,比如按钮点击,数据来源,数据信息等内容,因此转向了神策二、集成      工具:as+gradle    1.添加依赖          compile 'com.sensorsdata.an

2017-04-18 22:34:01 4362 9

原创 Spring进阶

一、背景       使用Spring+MyBatis做了个登录的小例子,对Spring的框架又有了深入的了解,在做的过程中,更感觉Spring像是一个容器,帮助我们管理很多的东西,包括MyBatis在内,它是怎么做到如此强大的功能呢?在此记录一下二、过程      1.Spring的核心Beans问题       使用Spring框架后,那么我们的程序都会被Spring管理起

2017-04-13 14:52:08 394 4

原创 简单Spring框架搭建

一、背景       刚刚了解spring,给我的感觉就是封装好的工具类,让我们在开发的时候变得简单,更多的精力会放在业务逻辑上,当然还有spring一些优秀的思想,什么控制反转,面向切面等等吧,还不太了解到底是怎么个工作原理,以后慢慢了解...试着搭了一下spring的框架,在此记录一下二、搭建      项目搭的比较简单只用了spring的core和webMvc两个包,对于请求返回

2017-04-08 15:42:04 761 6

原创 Maven和Web项目标准目录结构

Maven标准目录结构:                  根目录必须有src和pom.xml文件,target目录可选主要存放注解和一些class文件     src下必须有main     main下有java包,resources资源包,webapp包Web项目标准结构:(如果用的是Tomcat的话)      项目包下必须有WEB-INF目录,META-INF可选,

2017-04-07 16:49:27 6905 8

原创 数据访问层MyBatis解析

一、背景        最近在研究Java的框架,刚刚接触到java对于数据访问层封装的框架之一,MyBatis,不得不说使用起来很是方便,跟写sql语句的感觉一样一样的;顺便读了少部分官方文档,由于英文有限读的太慢,只是读了一点关于作用域的内容,后续继续发现新东西...本文都是建立在自己对于MyBatis的理解之上的,标准还是要参靠官方文档...二、理解        1.两种使用方

2017-04-06 17:46:56 3647 5

原创 android混淆

一、背景       最近我负责的项目要添加混淆,有点小棘手,之前只是知道有这么东西,但是没有真正做过代码的混淆,于是各种google,在此记录一下二、混淆       工具:as+4.4       1.首先在项目的gradle中开启混淆          在android->buildTypes->debug or release节点中设置 minifyEnabled 为t

2017-04-05 14:37:09 443 5

原创 Linux入门指令

一、背景      最近开始接触linux,初始的感觉是高大上,其实就是一些指令,不习惯而已,万事开头难,慢慢适应了就好了,接触了一部分指令,用起来还不熟练,在此记录一下      linux的文件系统和windows区别挺大的,在linux所有东西都是以文件或者文件夹的形式存在的,文件后缀几乎是没用处的,不像windows分装成了各种不同后缀的文件,不      同后缀代表不同的意义

2017-03-24 22:40:40 350 5

原创 Dagger2.0基本使用及简单原理

一.Dagger2.0背景        依赖注入主要解决代码耦合性问题,使对象在一个封闭,独立的地方初始化,当对象的实现方法需要大量修改的时候不需要大改代码库。        在Android中的应用主要是在MVP模式中P层与V层的解耦,以及在网络请求中配合Retrofit2.0进行网络请求。二.比较        依赖注入分为两种:反射和APT工具        反射:利用

2017-02-20 23:06:38 544 7

原创 百度地图key值问题小记

背景:      前段时间没事玩了玩百度地图,玩的时候有个小问题,直接把把应用运行在手机上,按照百度地图开发者文档中获取密钥可以正常显示地图,但是在打包之后放在自己的手机上就只能显示网格了                        当时没在意这个问题,以为只是网络的原因,就没深究,然后前两天,公司项目需要接入地图的功能,这个问题又一次出现了,在我这里直接运行可以正常显示,但是打

2017-02-19 22:12:47 1274 7

原创 2016年终总结

2016年马上就过去了,最近一直在想怎么写年终总结,想来想去决定以点带面吧,想到哪里就写哪里,再为来年做个简单计划2016回顾     工作学习       前段时间跟峰哥聊天,他说,森哥,我好久没看到你的那种会发光的眼神了;我差点笑喷了,怎么?我的眼睛还会发光?峰哥:不是,就是以前在提高班,你在学新东西的时候,尤其是在给别人讲东西的时候眼睛里那种兴奋,给我感觉像是在发光,那种求知

2017-01-21 15:06:45 434 12

原创 MVP模式

一、背景        相信大家对于mvc这种开发模式都不陌生,无论是java开发,php还是Android都很常用,后来针对于Android网上又出来了一种mvp模式,这又是什么鬼?都知道mvp是从mvc进化来的,而且让model和view解耦,具体他是怎么做的还是值得去研究一下的,下面说一说自己对于mvp模式的理解二、比较     什么是mvc?       model:实体层

2017-01-16 23:18:46 764 7

原创 线程及消息

一、背景        Android中截面的更新必须要在UI线程中进行,但是向轮询器和网络请求这些比较耗时的操作如果放在主线程中执行会造成截面的卡顿,用户体验不友好,这时我们可以放在子线程中去执行这些耗时的操作,然后在通过消息传递的机制把消息传到主线程中去执行更新UI的操作        谷歌现阶段提供了Handler和线程池来实现这些操作,而且目前来说已经有很多基于这些已经封装好的框架

2017-01-07 11:33:33 779 4

原创 JNI&反射?

一、简介JNI怎么会和反射联系到一块?在对反射和JNI都还懵懵懂懂的时候,确实不知道怎么会把这两个东西联系到一块,随着对JNI和反射了解的深入越来与发现两者的相似之处,也可以说反射的原理就是JNI的调用.反射一般用在想要调用java中一些类私有的方法或不对外开放的类的方法时,深入想想为什么通过反射可以拿到这些私有的方法,java代码是跨平台的,实现这个的机制不可缺少的额就是jvm虚拟机,而

2016-12-31 15:05:01 2588 2

原创 as中jni调用姿势(实战)

一、背景        最近项目中网络请求用到了jni调用c++代码来实现加密的功能,做的过程中踩了一些坑,特此祭奠一下 二、过程       与eclipse中jni略有不同,as中需要在本地和gradle中做一下自己的配置       1.在项目gradle.properties目录中加入Android.useDeprecatedNdk=true         

2016-12-30 00:04:25 1267 6

原创 JNI入门

一、什么是JNI? Java Native Interface java本地接口 提供了java与其他语言的通信接口,主要是Android中的c和c++,方便调用底层的一些功能强大的方法 一句话总结就是,java代码调用c和c++代码。 二、为什么使用JNI? 1.效率 java代码跨平台,虚拟机解释执行,不能执行操作硬件,虽然现在有了art模式

2016-07-30 11:12:53 349 6

原创 Bitmap高效加载图片

一、什么是Bitmap Bitmap在Android中指一张图,格式不定。BitmapFactory提供了四类方法:decodeFile.decodeResource decodeStream和decodeByteArray,分别支持从文件,资源,输入流以及字节数组加载出一个bitmap对象, 其中decodeFile和decodeResource间接调用了decodeStream

2016-07-09 18:28:22 1608 7

原创 Fresco图片加载

关于 Fresco Fresco 是一个强大的图片加载组件。 Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空 间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。 Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用

2016-06-25 21:18:43 453 3

原创 Android系统启动原理

我们的Android手机在启动的时候都做了些什么,还有手机为什么需要耗费几十秒才能启动起来?? 一、启动过程 Android系统架构由四层组成,底层为Linux内核层,第二层为Librares(c或c++)层,第三层为frameWork层 顶层为app层;framework层和app层都算作是java层 二、详解 系统引导程序启动Linu

2015-12-23 22:57:59 1460 15

原创 Android屏幕适配

Android屏幕大小种类有很多,需要在开发的时候适配不同的手机屏幕,适配的方案有很多种可以在开发 中选择最适合的 一、常见适配方案 1.图片适配 2.等比缩放 分为:dimens(values文件下) 权重 java代码控制子控件宽高 3.layout重新布局 4.根据百分比布局(AndroidStudio)

2015-12-20 22:18:58 488 12

原创 AndroidStudio引入.so库

开发时我们经常会用到第三方的jar包或者.so动态链接库,在用这些文件的时候需要放在编译器指定的 位置才能被正确的打包到.apk文件中 一、问题 在eclipse开发Android时.so库只需要放在armeabi文件夹中,并且armeabi文件夹和普通jar包放在libs 下即可,但是在用AndroidStudio开发的时候so库就有所不同了,如果按照在eclipse中目

2015-12-15 00:04:44 620 7

原创 Android中事件分发机制

Android(触摸屏)中应用程序与用户交互用的就是touch事件来完成的,一个界面上的控件会有很多,那么 一个touch事件是如何传递的呢? 一、简介 Android中的touch事件都是以down(按下)事件开始,up(抬起)事件结束的 事件类型有:ACTION_DOWN(按下)、ACTION_UP(抬起)、ACTION_MOVE(移动)

2015-12-12 00:01:38 501 5

原创 view绘制流程

view在Android是比较重要而且不容易理解的知识了,尤其是在自定义控件这一块本章就view的绘制流程 做一些了解 一、整体把控 要想了解view的绘制流程,首先要知道Android中的view树结构,如下图 当我们想要绘制view的时候,会遍历DecorView下的每一个view,对每个view的绘制会经过onMeasure, onLay

2015-12-08 21:40:24 679 6

原创 自定义控件-侧拉菜单

手机版qq有一个挺不错的效果是侧拉菜单,在主界面向右滑动就会在左侧出现关于自己qq的一些信息; 实现侧滑效果目前知道有三种: 一是SlidingDrawer,谷歌在Android4.2之后已经不建议使用 二是DrawerLayout,谷歌提供的挺好用的控件,只需在布局文件中加载即可 三是第三方提供的开源控件,更加的灵活;下面就来简单介绍一下原理 一、需求 1.

2015-12-02 23:11:27 904 3

原创 自定义控件-ViewPager篇

相信大家都看到过手机上循环播放的广告吧,这就用到我们的自定义控件了,看下图 一、原理简介 1.在布局文件中用v4包下的ViewPager设置一个布局 2.在activity中找到该布局文件的ViewPager对象 3.设置ViewPager的数据(数据适配器) 4.开启子线程,动态改变ViewPager当前页的数

2015-11-29 23:26:33 827 13

原创 百度地图

很多应用都有获取自己位置的功能,比如QQ,微信等等都能获取到自己的位置 一、核心类简介 1.SDKInitializer:初始化SDK配置 2.MapView:地图数据显示 3.BaiduMap:控制地图状态 二、原理 Ⅰ.前期准备 jar包、库文件引入,key值获取 Ⅱ.地图显示 private BaiduMap bai

2015-11-28 23:45:27 811 8

原创 Fragment初识

Fragment翻译为碎片、片段;Android3.0引入进来的,是一种分解activity显示的组件 一、简介 1.当一个activity内容太多时,界面的切换会很不流畅,用fragment把activity'切碎'后可以提高流 畅度,适用不同的屏幕尺寸,而且每个fragment都有自己的生命周期 2.fragment使用比较灵活,即以类的形式

2015-11-25 22:58:31 488 8

原创 MD5加密

java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,即生成散列码,通过数据 中单向的哈希函数,接收任意长度的数据生成固定长度的哈希值,MD5就是其中的一种加密算法 一、MD5简介 任何数据经过MD5加密后值是唯一的,因此可以用来作为数据的唯一标识 MD5特点: 压缩性:任意长度的数据都会被经过MD5加密后都是长度固定

2015-11-22 22:19:18 944 9

空空如也

空空如也

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

TA关注的人

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