自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 并查集--QuickFind实现

1 并查集的意义判断连通性问题初始化每个元素都是不同集合判断两个点是否连通,查看是否在同一个集合中即可2 QuickFindUF实现顾名思义,查询非常快,用数组来存储,每个索引对应的是集合的编号/** * @author Created by qiyei2015 on 2019/12/11. * @version: 1.0 * @email: 1273482124@qq.com...

2019-12-22 17:05:52 73

原创 Android 中使用Aspectj进行切面编程

1 说明在Android中有时需要用到AOP编程的场景,aspectj是一个不错的选择。因此特此记录下2 Android引入Aspectj项目的build.gradle中引入如下配置 //for AspectJ classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'需要切入...

2019-11-16 19:23:51 164

原创 JDBC基本用法与HikariCP连接池

1 JDBCJDBC, Java Database Connecive, Java 数据库连接,是一组专门负责连接并操作数据库的标准,在整个JDBC 中实际上大量的提供的是接口。针对于各个不同的数据库生产商 ,只要想使用JAVA 进行数据库的开发,则对这些标准有所支持。使用JDBC我们可以在java中使用统一的API来访问数据库,进行CURD操作,而不用去关系底层是oracle、DB2、SQL...

2019-10-20 18:39:10 305

原创 JSP基本语法

JSP文件中,主要包含以下几部分程序,声明部分,程序脚本部分,包引入,注释等,下面是一个简单的介绍和总结1 JSP声明语法语法格式: <%! %>以<%! %><%! out.print(“hello world”); %> <%! String str = “hello world”; %> 主要作用如下:定义成员变量,以及成员方...

2019-09-22 10:45:55 46

原创 6月份占个位

6月份占个位,后面一定补上

2019-06-30 21:05:35 85 1

原创 Android 内存优化一 内存抖动的定位及优化

1 Android内存抖动内存抖动是指内存忽高忽低,有短时间内快速的上升和下落的趋势,内存呈锯齿状。此时会频繁的GC,造成卡顿,甚至有OOM的可能内存抖动越剧烈,说明单次分配的内存更大。2 内存抖动的定位对于内存抖动的定位可直接使用Memory Profiler,原因是Memory Profiler可直接反应APP的内存占用,方便进行跟踪发生内存抖动时,我们选择内存变化锯齿状的区域,然...

2019-05-03 19:10:04 1066

原创 Android APP启动优化二 使用Systrace和TraceView分析启动耗时

上一篇App启动已经初步的分析了有哪些启动类型以及怎么去简单的测量App启动的耗时,这一篇主要使用两个工具来粗略的分析启动的耗时到底在哪些地方。下面开始介绍1 使用systrace抓取trace.html文件在使用Systrace之前,建议大家好好参考官方的这边介绍systrace官方介绍这里面详细的介绍了systrace抓取trace.html的命令以及选项的意思,我采用的命令如下call...

2019-04-21 15:47:16 2353

原创 算法3

先占个坑

2019-03-31 10:00:07 55

原创 Android APP启动优化一 APP启动测量

先占个坑,后续来补齐

2019-02-09 22:34:31 249

原创 算法2

占位

2019-01-23 16:59:13 94

原创 java实现自己的动态数组

算法占位

2019-01-23 16:58:24 110

原创 Flutter2

出差,占个位

2018-12-09 16:30:07 451

原创 数据结构--线段树

因为出差,先占个位,后续补上

2018-12-09 16:27:16 245

原创 Flutter开发三 浅谈Flutter UI布局

1 Flutter布局浅述对于一个应用来说,开发UI界面是很基础的一个工作。Flutter中的布局是直接写在代码中的,没有像Android一样使用xml来布局,这一点与RN中使用jsx来布局类似,它遵循的也是一切都是widget的思想。因此Flutter 中UI界面的布局就是组合各种widget的过程。我们可以参考下面的一段话 In Android, the View is the fo...

2018-11-18 20:39:35 10665 2

原创 Flutter开发二 Flutter Widget 之Container

1 前言Container 是一个比较基础和常用的Widget,在Flutter中主要用作背景,或者padding等。Container的定义如下**定义:**是一个结合了绘制(painting)、定位(positioning)以及尺寸(sizing)widget的widget。可以得出几个信息,它是一个组合的widget,内部有绘制widget、定位widget、尺寸widget。后续看到...

2018-11-15 20:09:04 1741

原创 Flutter开发一 Flutter Widget 之MaterialApp,Scaffold

Flutter中一切皆widget,这和RN中一切皆组件的思想很类似,因此在学习Flutter中,我们必须首先来了解Flutter的widget.下面先从最基本的MaterialApp和Scaffold开始了解1 MaterialApp一个封装了很多Android MD设计所必须要的组件的小部件,一般作为顶层widget使用。继承关系InheritanceObject->Diagn...

2018-11-09 20:51:03 2725

原创 Kotlin开发五 Kotlin中集合常用函数式API

在kotlin中有一些常用的对集合进行操作的函数式API,掌握他们可以大大提高编程效率,这些API与java8中的Stream API类似。下面主要讲解以下几大类1 filter 和 mapfilter主要用作过滤器(对集合元素),它的返回值也是一个集合,定义如下:public inline fun <T> Iterable<T>.filter(predicate:...

2018-10-21 20:12:01 1046

原创 Kotlin开发四 kotlin中的高阶函数

1 高阶函数定义在kotlin中任何以lambda或者函数引用为参数的函数,或者函数的返回值是lambda或者函数引用,就是高阶函数高阶函数之前我们已经见过了,例如集合的map,filter等函数都是高阶函数,我们可以打开看下map的定义public inline fun <T, R> Iterable<T>.map(transform: (T) -> R): ...

2018-10-07 16:25:25 133

原创 Kotlin开发三 kotlin中的lambda表达式

1 Lambda表达式定义kotlin中lambda表达式定义如下:{param1:Type,param2:Type… -> ….}例子{x:Int,y:String -> y.length + x}就是一个lambda表达式在kotlin中如果要直接运行lambda,可以使用run{}来运行run{45}2 kotlin中lambda表达式的约定kotlin中...

2018-10-04 15:21:57 849

原创 Kotlin开发二 kotlin类型的可空性

1 可空类型kotlin中引入了Type?来表示Type类型是可能为null,这样从编译上避免了很多NPE的发生。Type? = Type or null问号?可以加载任何类型后面,表示这个类型的变量可能为null 没有问号?表示这种类型的变量不为null。 对可空类型的操作,kotlin中考虑了NPE的情况,做了一些限制 //可空类型 var name:...

2018-09-16 12:52:27 164

原创 Kotlin开发一 kotlin编程基础

1 kotlin数据类型1 数字类型 kotlin中数字的表示方式和java一样 kotlin中Float,Double,十六进制,二进制,10进制的表示和java一样,区别是kotlin中无八进制表示 kotlin中数字类型没有隐式转换,必须显示转换 每个数字类型支持如下的转换:toByte(): BytetoShort(): ShorttoInt(): Intt...

2018-09-09 14:53:41 978

原创 React-Native开发十 react-navigation开发中的一些常见的坑

1 前言都说RN开发效率高,一次学习随处编写。真的用RN开发了一个APP才知道,RN中坑真是太多,特别是很多坑只有在生产模式下才会出现,在平常的debug模式下,APP运行好好的,但是你一旦打正式包,就会发现各种报错,各种崩溃,如果在Android平台下,各种兼容性,各种奇葩的问题,加上js本身是动态语言,很多错误又无法在编译期间检查出来。因此用RN开发APP,在调试bug阶段消耗的时间和精力...

2018-09-02 14:44:40 4875

原创 React-Native开发九 react-navigation之Android的打包与发布

1前言RN的开发中正式发布前需要打包与签名,然后才能上架各家应用市场。打包需要将js与图片资源文件打包进apk文件中,生成index.android.bundle与index.android.bundle.meta文件。下面介绍RN开发中打包APK的主要步骤,IOS没研究过,不再本文讨论范围内。2 Android下的打包步骤1 生成Android签名证书 如果你已经有签名证书可以绕过...

2018-08-18 23:12:03 586

原创 React-Native开发八 react-navigation之自定义组件Counter

1 前言我们知道RN中任何界面元素都可以看成组件,小到一个按钮,大到一个页面。RN开发就是不停的开发组件和使用组件,并让他们协同工作,这样高效率协同的运行起来,这样就能完成一个APP的功能了 在实际的开发中,我们经常需要自定义一些满足我们项目开发的自定义组件,类似于Android开发中的自定义View。不过RN中自定义组件比Android中自定义View稍微简单一些。下面以一个计数器Coun...

2018-08-11 19:34:28 537

原创 React-Native开发七 react-navigation之AsyncStorage数据存储

1 前言我们都知道,在Android和IOS中分别有不同的持久化数据方式,例如Android中的文件,数据库,SharePrefences等。AsyncStorage是一个简单的key-value存储系统,是RN官方推荐的。它存储的都是String类型的数据,是一个RN中轻量级的数据持久化技术2 AsyncStorage主要用法export const AsyncStorage: ...

2018-08-04 20:58:27 580

原创 React-Native开发六 react-navigation之StackNavigator简介

1 前言react-navigation是RN开发中一款开源的导航组件,它的功能包括StackNavigator,TabNavigator,DrawerNavigator。react-navigation的出现替代了Navigator、 Ex-Navigation等老一代的导航组件,react-navigation可以说是Navigator的加强版,不仅有Navigator的全部功能,另外还支...

2018-07-21 18:04:48 783

原创 React-Native开发五 React Native 的Image组件

1 Image组件介绍RN中Image组件主要用于加载图片,可加载静态图片,网络图片,以及原生图片,本地文件系统中图片资源 官方参考https://facebook.github.io/react-native/docs/image#resizemode2 Image组件功能加载图片一般使用Image的source属性 1 加载静态图片 静态图片是指js下的图片资源,例如放在源码...

2018-07-14 11:33:38 2984

原创 React-Native开发四 React Native 的Touchable组件

1 Touchable组件简介Touchable组件是RN的按钮组件,一共有四大类 TouchableWithoutFeedback:不带任何反馈的可触摸组件 TouchableHighlight:在TouchableWithoutFeedback的基础上添加了当按下时背景会变暗的效果。 TouchableOpacity:相比TouchableHighlight在按下去会使背景变暗的效...

2018-07-09 21:08:11 258

原创 React-Native开发三 React Native组件生命周期

1 前言大家都知道React Native其实是由很多组件构成,开发RN界面的过程就是合理的组织各个组件的过程,在这其中需要不断的拆分和优化组件。因此理解RN组件的生命周期很重要,这样我们才能合理的在组件中进行我们的事务。2 React Native组件生命周期RN组件的生命周期分为四个阶段 分别是:创建阶段 实例化阶段 运行(更新)阶段 销毁阶段 整体流程图如下(借用别人的图) ...

2018-06-30 21:39:44 148

原创 React-Native开发二 Android 已有项目集成React-Native

1 前言之前写过一篇RN的环境搭建教程和新建一个新的RN项目的文章 https://blog.csdn.net/qiyei2009/article/details/78820207 但是其实在实际开发中,在已有的android项目中集成RN情况更普遍,这篇文章就是一个怎么在已有Android项目中引入RN的例子2 集成步骤首先搭建好Android开发环境,并有一个新建的或者已经存在...

2018-06-09 18:59:49 1728

原创 Cordova 开发环境搭建

1 前言现在跨平台开发或者混合开发非常流行了,例如RN Cordova等,感觉Cordova在国内的流行度也非常高,现在Cordova是Apache下的开源软件了。这里简单的记录一下环境搭建过程2 Cordova搭建步骤Cordova环境搭建主要参考官方指导文档 http://cordova.apache.org/#getstarted http://cordova.axuer....

2018-06-02 23:16:42 3878 2

原创 对角线打印二维数组问题

1 前言最近在网上看到这样一道面试题:二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: 4*4二维数组 { 1 2 3 4 } { 5 6 7 8 } { 9 10 11 12 } {13 14 15 16 } 打印顺序 4 3 8 2 7 12 1 6 11 16 5 10 15 9 14 13 网上已经有各种解法,也有现...

2018-05-13 01:14:16 3836 1

原创 索引堆简单介绍

1 索引堆基本概念堆的基本概念不用多种介绍了,但是对于堆来说,有时堆结点存储的数据结构交换时间及空间比较大,或者结点存储的是比较复杂的数据结构。这个时候,我们可以采用索引堆这种数据结构来解决索引堆:在堆的基础上用一个索引数组来存储数据元素的位置,即索引堆里面包含两个数组,如下: 建堆之前: 建堆之后 在这个图中,有两个数组,data[]存储真实的数据元素,index[]存...

2018-05-05 16:55:45 943 1

原创 优先队列或堆及堆排序介绍

1 堆的基本概念堆也叫优先队列,堆是一种特殊的完全二叉树数据结构,堆分为两种,最大堆,最小堆。 最大堆:根节点大于左右两个子节点的完全二叉树 最小堆:根节点小于左右两个子节点的完全二叉树 堆可以用数组来存储,a[i]处存根节点,a[2*i] a[2*i + 1]分别存左子树的根节点,右子树的根节点。i从1开始所以对于一个堆,结点i,其父结点为a[i/2],左子节点a[2*i],右子节...

2018-05-01 12:01:03 369

原创 java注解之编译时注解RetentionPolicy.CLASS 基本用法

1 前言我们知道,在日常开发中我们常用的两种注解是运行时注解和编译时注解,运行时注解是通过反射来实现注解处理器的,对性能稍微有一点损耗,而编译时注解是在程序编译期间生成相应的代理类,替我们完成某些功能。今天我们来讲解一下编译时注解以及写一个小例子,以便加深对编译时注解的理解。2 编译时注解编译时注解(RetentionPolicy.CLASS),指@Retention(Retent...

2018-04-15 11:54:00 4585

原创 高级排序算法

1 前言对于基本排序算法来说,时间复杂度一般都是O(n^2)。而高级排序算法的时间复杂度一般都是O(nlogn)。高级排序算法主要针对基本排序算法进行优化。下面介绍几种常见的高级排序算法,希尔排序,归并排序,快速排序,堆排序2 希尔排序希尔排序是插入排序的一个改进,它主要是用一个递增序列来使数组进行一个分组,然后对每组进行一个插入排序 例如递增序列 h = 3*h + 1;那么 ...

2018-04-05 14:10:52 618

原创 基本排序算法解析

1 前言排序再算法中是一个很重要又很基础的工作,在对数据的处理过程中,排序往往是第一步。排序算法很多,评价一个排序算法好不好也有很多标准。例如时间复杂度,空间复杂度,稳定性等。今天先来介绍三种比较基础的排序算法,它也是很多高级排序算法的基础。他们是选择排序,冒泡排序,插入排序。选择排序,冒泡排序,插入排序的时间复杂度都是O(n^2),空间复杂度都是O(1)2 选择排序选择排序就是每...

2018-04-01 11:14:11 2094

原创 跨平台移动开发平台Flutter环境搭建

1 前言话说,工作了几年之后发现移动开发的变化实在太快了,现在越来越多的跨平台移动开发框架出来,对原生的冲击也越来越大,RN,H5等移动开发框架非常火热,虽然有不少的问题,其中最让人不满意的就是性能问题了。但是假如有一天性能问题解决了呢?那么原生的开发势必要受到很大的冲击。google最近推出了Flutter开发框架,个人比较看到这个框架,搭建个环境来搞一搞。2 Flutter介绍Fl...

2018-03-11 11:37:09 3827

原创 栈和队列的java链表实现

1 前言栈和队列是我们在开发中常用的两种数据接口,java中也有相关的定义的实体类java.util.Stack,java.util.Queue。不过这里不想介绍java官方的定义。想自己用链表来实现这两个数据结构。2 栈的链表实现栈是一种先进后出的数据结构,这个一般对外的接口有:入栈,出栈,判断是否为null,栈大小等接口。实现的代码如下:/** * @author Cre...

2018-03-10 14:22:56 542

原创 javascript中的函数function

1 前言javascript中函数function可能是一个比较重要的概念了,由于本人是从java转过来的,初看js中的function感觉很迷惑,函数的签名和java相差较大,没有对参数类型进行校验,无法重载。连返回值也没有。因此这篇博文主要讲讲js中的函数2 javascript中函数定义js中函数一般定义如下:function functionName(arg0,ar...

2018-03-03 11:59:59 238

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