使用Gradle和Nexus 搭建私有maven仓库

前言:随着业务的增长,需求量增多,我们的App 组件也越来越多,几乎大部分组件都有用到同样的第三方库和公司内部封装的库,而团队中的所有人都重复的从maven 远程的中央仓库下载构建,这样就会加大了仓库的负载和浪费了外网的带宽,网速慢的话,就要等很久很久,半个小时,几个小时,都有可能!这样明显影响项目的开发进度,有的公司还是在内网的情况下开发,连接不到中央仓库怎么办?公司内部开发的公共组件怎么让其他项目共用呢?这个时候,我们不得不为自己的团队搭建一个私服maven仓库,来提高我们的开发效率。 起初,对gradle和maven不是很熟,看了网上的教程一脸懵逼,后来,花了点时间,发现整个过程也还是很简单的。↓↓ 首先我们来了解一下, 一、什么是Maven,Gradle?Maven 是一个项目管理和自动构建工具。Maven 包集中存放的地方,就是 Maven 仓库。这些仓库,可以是放在本地,也可以放在某个远程服务器上。 可以是私有仓库,也可以是公开的。下开发用的库列表: mavenCentral(); jcenter() maven { url 'file:///Users/my-user-name/Documents/Android/repo/' } maven { url 'http://localhost:8081/nexus/content/repositories/releases/' }     Continue Reading
Xiho's avatar
Xiho Aug 30, 2016
 | 

C语言(七)文件的相关操作

C语言文件的打开与关闭 在C语言中,文件操作都是由库函数来完成的,我们就来总结文件的相关的操作。 文件的打开(fopen函数)fopen() 函数用来打开一个文件,它的格式为: FILE *fopen(char *filename, char *type); filename为文件名(包括文件路径),type为打开方式,它们都是字符串。fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并将这些信息保存到一个FILE类型的结构体变量中,然后将该变量的地址返回。 如果接收 fopen() 的返回值,就需要定义一个 FILE 类型的指针。例如: FILE *fp = ("demo.txt", "r");     Continue Reading
Xiho's avatar
Xiho Aug 29, 2016
 | 

C语言(六)结构体和联合体

结构体在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个栗子: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 };     Continue Reading
Xiho's avatar
Xiho Aug 25, 2016
 | 

C语言(五)内存分配与释放

首先我们来科普一下: 什么是堆?说到堆,又忍不住说到了栈!什么是 栈?1、什么是堆:堆是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程 初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。2、什么是栈:栈是线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立。每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。 C语言程序编译的内存分配,堆与栈的区别: 栈是由编译器自动分配释放,存放函数的参数值、局部变量的值等。操作方式类似于数据结构中的栈。堆一般由程序员分配释放,若不释放,程序结束时可能由OS回收。注意这里说是可能,并非一定。再强调一次,记得要释放! 栈区(stack) : //windows下,栈内存分配2M(确定的常数),超出了限制,提示stack overflow错误 //编译器自动分配释放,主要存放函数的参数值,局部变量值等; 堆区(heap):程序员手动分配释放,操作系统80%内存 全局区或静态区:存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区; 字符常量区:常量字符串放与此,程序结束时由系统释放; 程序代码区:存放函数体的二进制代码。     Continue Reading
Xiho's avatar
Xiho Aug 23, 2016
 | 

C语言(四)指针概念的理解

前言最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我抽空把目前的进度给追上来,不然会越落越多。加油吧~(感觉身体都要被掏空了) 指针 我们通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,学习指针是很有必要的。正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:     Continue Reading
Xiho's avatar
Xiho Aug 22, 2016
 | 

C语言(三)字符串处理函数

C语言提供了丰富的字符串处理函数,例如字符串的输入、输出、合并、修改、比较、转换、复制、搜索等,使用这些现成的函数可大大减轻编程的负担。 用于输入输出的字符串函数,例如printf、puts、scanf、gets等,使用时应包含头文件stdio.h,使用其它字符串函数则应包含头文件string.h。     Continue Reading
Xiho's avatar
Xiho Aug 13, 2016
 | 

C语言(二)有符号和无符号的理解

1.你自已决定是否需要有正负:就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。 在计算机中,可以区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型。 (unsigned)数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则只有符类型。 字符类型也分为有符和无符类型。 比如有两个量,年龄和库存,我们可以定前者为无符的字符类型,后者定为有符的整数类型。 2.使用二制数中的最高位表示正负: 首先得知道最高位是哪一位?1个字节的类型,如字符类型,最高位是第7位,2个字节的数,最高位是第15位,4个字节的数,最高位是第31位。不同长度的数值类型,其最高位也就不同,但总是最左边的那位(如下示意)。字符类型固定是1个字节,所以最高位总是第7位。     Continue Reading
Xiho's avatar
Xiho Aug 07, 2016
 | 

C语言(一)的基本数据类型

C语言helloworld 1.声明头文件,相当于java的导包。 //只有函数的声明,编译时会去找到函数的实现 #include <stdio.h>     Continue Reading
Xiho's avatar
Xiho Aug 07, 2016
 | 

Android 性能检测工具

Android常见问题 内存泄漏:不使用的内存空间(对象)一直被引用着没有得到释放。 内存抖动:短时间内大量创建对象又在短时间内频繁触发GC导致内存波动很大,android虚拟机执行GC操作时需要耗费CPU性能频繁GC会到来严重的性能问题。内存抖动是因为大量的对象被创建又在短时间内马上被释放。瞬间产生大量的对象会严重占用Young Generation的内存区域,当达到阀值,剩余空间不够的时候,也会触发GC。即使每次分配的对象占用了很少的内存,但是他们叠加在一起会增加Heap的压力,从而触发更多其他类型的GC。这个操作有可能会影响到帧率,并使得用户感知到性能问题。 内存溢出:内存泄漏到一定程度超出系统给进程分配的内存大小就会造成内存溢出程序奔溃,或者加载一个或多个大型文件(图片)到内存中也会导致内存溢出。 ANR:应用无响应,代码效率过低或者在主线程执行耗时操作。     Continue Reading
Xiho's avatar
Xiho Jun 27, 2016
 | 

Android 自定义一款炫酷的加载控件

概述:在设计应用的时候,我们应该热爱极简主义,简单就是好的,对于很多用户来说,复杂的东西并不受欢迎。我要实现的是根据不同的情况去显示不同的加载效果,随用随调,效果是借鉴于某一项目的效果,我认为有必要提取出来改善封装一下,供以后使用。情况大致分为:加载中、无网络、无数据、加载失败等;     Continue Reading
Xiho's avatar
Xiho May 13, 2016
 |