- 博客(41)
- 资源 (3)
- 收藏
- 关注
原创 实现无障碍服务
无障碍服务,可以监听界面的操作,比如:点击、拖动、界面更新等信息。更为强大的是可以获取屏幕信息,同时具备普通Service的能力。(在别人手机中植入一个无障碍服务并开启,可以监听他的手机操作和屏幕信息,eg:获取微信、QQ当前聊天文字并上传)因为无障碍服务相比一般Service过于强大,安装后还需要在设置->辅助功能中手动开启。创建AccessibilityService与声明创建一个类继承自AccessibilityServicepublic class MyAcc...
2021-05-06 09:58:47 835 3
原创 docker-compose redis集群搭建
docker-compose redis集群搭建 1、准备好docker、docker-compose环境 2、找一个自己喜欢的目录,通过 vi install.sh 创建sh文件 3、给install.sh文件放入以下内容,:wq保存退出 4、.sh文件就是文本文件,如果要执行,需要使用chmod a+x install.sh来给可执行权限 执行 方法一 本身目录下运行 进入 cd /目录/目录文件下 执行 ./install.sh 命令会在当前目录下创建一个“tes...
2020-12-17 17:21:07 232 1
原创 JVM以及垃圾回收器的工作原理
Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。这是因为:编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM屏蔽了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。因此实现java平台无关性。它是 J
2020-11-26 17:35:21 248
原创 JAVA线程池原理解析
前言可以说,线程池是Java并发场景中应用到的最多并发框架了。几乎所有需要异步或者并发执行的任务程序都可以使用线程池。在开发过程中,合理的使用线程池会带来以下3个好处:降低资源的消耗。如果了解Java线程的前因后果,对于这一点应该很好理解。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,等待中的线程可以立即执行任务,不用等创建线程。 提高线程的可管理性。线程是稀缺资源,通过线程池框架可以进行统一的线程分配、监控、调优。世界上没有完美无瑕的事情,任何事情都有正
2020-11-26 11:36:57 211
原创 五分钟搞懂hashCode()和equals()方法的原理
Java中的超类java.lang.Object 有两个非常重要的方法:public boolean equals(Object obj)public int hashCode()这两个方法最开发者来说是十分重要的,必须清楚的理解,但实际上,甚至很多经验丰富的Java开发者有时候也没有真正搞清楚这两个方法的使用和原理。当我们自定义了对象,并且想要将自定义的对象加到Map中时,我们就必须对自定义的对象重写这两个方法,才能正确使用Map。我们接下来将用这篇文章指出在使用hashcode和eq.
2020-11-26 09:57:51 174
原创 Java Proxy和CGLIB动态代理原理
动态代理在Java中有着广泛的应用,比如Spring AOP,Hibernate数据查询、测试框架的后端mock、RPC,Java注解对象获取等。静态代理的代理关系在编译时就确定了,而动态代理的代理关系是在编译期确定的。静态代理实现简单,适合于代理类较少且确定的情况,而动态代理则给我们提供了更大的灵活性。今天我们来探讨Java中两种常见的动态代理方式:JDK原生动态代理和CGLIB动态代理。JDK原生动态代理先从直观的示例说起,假设我们有一个接口Hello和一个简单实现HelloImp://
2020-11-21 09:48:25 95
原创 分布式事务的实现原理
事务是数据库系统中非常有趣也非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全不执行;在 SOA 与微服务架构大行其道的今天,在分布式的多个服务中保证业务的一致性就需要我们实现分布式事务。在这篇文章中,我们将介绍事务的实现原理、分布式事务的理论基础以及实现原理。事务在文章的开头,我们已经说过事务是数据库管理系统执行过程中的一个逻辑单位,它能保证一组数据库操作要么全部执行,要么全不执行,我们能够通过事务将数据库从一个状态迁移到另一个.
2020-11-20 18:33:44 315 1
原创 android 沉浸式状态栏 软键盘挡住输入框问题
http://blog.csdn.net/brian512/article/details/52096445http://www.jianshu.com/p/a95a1b84da11
2017-05-23 10:38:12 2333 1
原创 解决安卓上层输入控件与聊天信息随键盘弹起,底部ui不动
很多直播的app,直播页面是全屏视频加聊天列表。而聊天列表要输入文字,就需要输入框,如何让输入框以及聊天内容跟随键盘往上移动却不影响直播画面呢。activity的windowSoftInputMode选项只能设置一种值,如果希望输入框随着键盘弹起而顶上去,那底下的视图要么会顶上去,要么会变形。解决思路在mainfest.xml中相关的activity加:
2017-02-24 14:21:02 3206
转载 Android优质技术资源合集
本文摘自Open软件开发小组,作者张明云。精选技术日/周报Android开发技术周报Android博客周刊移动开发前线干货集中营App开发日报精选技术资讯极客头条掘金开发者头条推酷精选技术视频InfoQ演讲阿里技术沙龙腾讯大讲堂讲座视频精选面试题skillgu
2016-09-18 10:54:59 538
原创 微信公众号开发者接入
首先给自己搞个服务器(微信接入需要拥有自己的服务器资源,就是外网服务器,可以给别人访问的)我购买的是阿里云的服务器(最低配置)服务器系统为:win2012数据中心版阿里云服务器服务器环境为:jdk1.7+tomcat7解压版开发框架:springmvc+spring+mybatis构建:maven我的结构在这里不解释如何搭建s
2016-09-18 10:49:56 662
转载 Tomcat中JVM内存溢出及合理配置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。一、Java JVM内存介绍JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配,
2016-09-18 10:48:20 451
原创 解压版tomcat7配置
Tomcat涉及到的配置比较多,文件也多,根据我现在掌握的知识,简单的做了一下免安装版的tomcat的基本配置和安装方法。一、配置JDK要想在自己的计算机上安装Tomcat,需要JDK的支持,因为Tomcat是用java语言编写的一个很轻量级的Web服务器。Java SE的最新版下载地址:点击这里1、安装首先将自己下载的jdk(这里使用的是1
2016-09-18 10:46:53 7403 1
原创 使用SourceTree提交代码到github
主界面设置添加配置码云添加配置github上面的github远端配置分支对应分支码云拉取推送主界面设置添加配置码云添加配置
2016-09-18 10:44:33 3678
原创 Maven安装配置
一、配置maven的环境下载地址:下载(window下载(Binary zip)的)将maven解压,然后配置环境变量打开: 计算机------系统属性------高级系统设置------环境变量系统变量新建 M2_HOME变量值E:\apache-maven-3.2.5(maven解压位置)path中添加;%M2_HOME%\bin ----在path的后面先添加;号
2016-09-18 10:42:50 1083
原创 Android string.xml中使用html标签
一、使用html方法1、使用 CDATA(推荐)ABC ]]> 方法2、转义HTML标签bold, underline 二、使用方法加载数据使用:String demo1 = Html.fromHtml(getResources().getString(R.string.demo1));当string文件中有参数时: 使用Html.fromHtml(
2016-09-18 10:41:42 956
原创 环境配置
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底。安装完成之后当然要配置环境变量了。———————————————————————————————————————————————————1.1新建变量名:JAVA_HOME 变量值:E:\Java\jdk1.6.0_4
2016-08-25 16:55:46 411
原创 android提高webview兼容以及富文本编辑器RichEditor的使用总结
手机浏览器内核不同以及手机系统版本不同让webview在使用上面对于html标签css等可能会出现不同的效果。为什么写这一篇文章首先说一下我为什么要写这一篇,因为我就是踩着这个屎坑过来的,由于需求问题,我需要做一个富文本编辑器,这个富文本编辑器最终出来的内容要兼容ios以及web,效果要一致,所以选择用html标签作为富文本显示,而我使用的是github上面开源的RichEditor,地址
2016-04-20 17:30:46 15773 3
原创 面向对象的六大原则之 —— 迪米特原则
学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下什么是迪米特原则也称为最少知识原则,意思就是一个对象应该对其他对象有最少的了解,其实就是解耦合,两个类之间的关系分离的越细越好,比如面向对象的六大原则之 —— 单一原则中讲的,Imageloader类,它需要缓存,然而缓存ImageCache的具体实现,ImageLoad
2016-03-02 10:18:22 4105 5
原创 面向对象的六大原则之 —— 接口隔离原则
学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下什么是接口隔离原则接口隔离的目的就是将庞大的接口拆分成更小的或者说更具体的接口,使得系统的耦合度大大降低,从而容易重构、修改等在《面向对象的六大原则之 —— 单一原则》中我们有如下代码: /** * 缓存到sd卡 * @param url 图片
2016-03-01 18:18:22 3859
原创 面向对象的六大原则之 —— 依赖倒置原则
学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下什么是依赖倒置原则其实依赖倒置原则就是告诉你,不要让你的程序耦合度过高在依赖倒置原则中有几个关键点:第一:高层模块不应该直接依赖低层模块,两者应该依赖其抽象第二:抽象不应该依赖细节第三:细节应该依赖抽象我们知道在java中,抽象就是指接口或者抽象类,两
2016-03-01 17:44:10 5094
原创 面向对象的六大原则之 —— 里氏替换原则
学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下什么是里氏替换原则面向对象的语言有三大特性:封装、继承、多态,里氏替换原则就是依赖于继承、多态这两大特性,它的原则就是只要父类能出现的地方子类就能出现,而且不会报错,但是子类能出现的地方,父类不一定能出现,术语就是 —— 抽象。在上一篇《面向对象的六大原则之 —— 开
2016-03-01 17:13:57 3566 1
原创 面向对象的六大原则之 —— 开闭原则
学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下什么是开闭原则一个类、模块、函数等应该对于扩展是开放的,但是对于修改是封闭的,简单说就是当你的系统要升级维护需要对原有的代码进行修改时,可能会将错误引入到了原来的旧代码中,因此,在软件升级维护时,应该尽可能的通过扩展的方式而不是修改原有的代码,虽然在实际开发中,修改原本的
2016-03-01 14:53:46 4634 2
原创 面向对象的六大原则之 —— 单一原则
学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下在开发中,我们要注意程序设计的六大原则:一、单一责任原则二、开闭原则三、里氏替换原则四、依赖倒置原则五、接口隔离原则六、迪米特原则什么是单一原则单一原则的意思就是就一个类而言,它需要做的事情就一件,这一件事可以是拆分的很细的一件事(如:
2016-03-01 10:58:36 10745
原创 android手把手教你实现QQ侧滑菜单效果
侧滑菜单功能非常常见,借鉴学习了之后,自己总结记录一下下面实现一种最简单的侧滑菜单,后面再修改代码实现不同的侧滑菜单效果首先是第一种效果第一种效果是继承ViewGroup,需要我们自己来测量、滑动处理等。首先讲解一下思路:1、继承GroupView重写构造方法a、我们需要重写三个构造方法b、在构造方法中初始化宽高值等2、重写onMeasure方法a、在o
2016-02-22 17:50:48 2608
原创 listview精确监听向上向下的滚动
listview的上下滚动监听,很多人的做法是利用OnScrollListener的onScroll方法有一个 firstVisibleItem 参数(第二个参数),向下滑动会越来越大,向上滑动就会越来越小可以在滑动的时候存储一下这个值,然后再与当前值进行判断这种做法在某些情况下适用,可是如果你的item高度是超过了屏幕高度的,这个时候,这个判断就失去作用了直接贴代码:clas
2016-02-16 16:58:59 1334
原创 解决Android 应用方法数不能超过65K的问题
Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536如果你的应用出现这种问题,那恭喜你,你的app内容已经非常多了,也恭喜你遇到了这么一个坑爹的问题这个问题在很多地方都有解释如果解决,但是都非常麻烦,我给个比较方便的此处讲解用的是android
2016-02-16 11:25:26 1493
原创 android 启动页面
很多应用都有启动页面,如何做一个高效的,退出应用后再进依旧能快速启动的启动页面。直接贴代码代码如下:启动页面Activity代码如下:public class SplashScreen extends BaseActivity{/* * Called when the activity is first created. */ @Override
2016-02-16 10:53:28 955
原创 android 设置textview边框以及点击效果
android 设置textview边框以及点击效果<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable
2016-01-29 14:13:40 4431
原创 如何在edittext的光标位置插入数据等
1.获取光标位置 int index = editText.getSelectionStart(); int index = editText.getSelectionStart();2.在光标处插入字符 int index = editText.getSelectionStart(); Editable editable = editText.getTex
2016-01-29 14:02:17 788
原创 android日夜间模式切换动画
转载请说明出处在一些应用中需要有日夜间模式,当切换模式之后,如果不给点过渡动画,那效果看起来比较差。那用什么方式来做这个切换过渡动画呢?第一种:选择用一个activity来做过渡首先我们建一个activityimport android.os.Bundle;import android.os.Handler;import android.view.View;imp
2016-01-19 12:56:05 2716
原创 Extjs布局详解
序言 1、百度百科上说:ExtJs功能丰富,无人能出其右。无论是界面之美,还是功能之强,extjs都高居榜首。 2、呵呵,界面之美当是少不了布局的,这篇文章我写layout的七种布局。(extjs是4.+版本)Border布局__边界布局 这中布局是最常用的布局之一,看图 border布局:border布局也称边界布局
2014-08-22 10:59:56 496
原创 Extjs里表格grid显示日期类型数据
尽管返回的JSON里都没有数字和字符串,但在EXT里我们同样可以从后台获得日期类型的数据,然后交给表格初始化。我们在定义store的render里增加一行配置,除了设置name以外,还设置了type和dataFormat两个属性。其中type属性会告诉reader在解析原始数据时把对应的列作为日期类型处理,dataFormat属性把得到的字符串转换成相对应的日期格式。按照EXT的约定,Y是
2014-08-19 14:37:53 1242
原创 java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元格居中
package com.chinova.test; import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import
2014-08-18 16:45:10 1393
原创 java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元
WritableCellFormat headerFormat = new WritableCellFormat( HEADER_FONT_STYLE); //水平居中对齐 headerFormat.setAlignment(Alignment.CENTRE); //竖直方向居中对齐
2014-08-12 10:45:07 831
原创 js原型分析研究
原型是个很微妙的东西,很多人不是很理解,理解了原型对于研究其他js类的框架(比方Extjs)很有帮助. 下面我们开始讨论下原型,对于理解js中的原型概念十分重要。简单来说,一个原型类似其他语言中的一个类,它定义的属性且可以被此类产生的所有对象所共享。然而它又不像一个类,原型可以在运行时获得和改变。可以增加属性到原型上或者删除原型上已经存在的属性。所有的变化将立即影响由原型派生的对象。它是如
2014-08-11 16:40:09 499
SourceTree
2016-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人