- 博客(35)
- 收藏
- 关注
原创 Android内存泄漏分析经验记录
Android内存泄漏分析记录MAT中显示的是GC根路径上的对象如果一个对象置空了,但是对象的引用还是存在,说明这个对象中还有对象被持有,不能被释放时刻记得内存泄漏的原因都是因为对象的生命周期不一致导致Android中是否有内存泄漏,分析起来很简单,进入一个Activity,退出以后destroy,这个时候如果Activity还存在内存当中,很有可能就是内存泄露。
2017-03-15 22:25:11
517
原创 C语言关于内存的一些描述
内存的一些描述为了更加好的理解Java中的内存模型,学习C中的内存分配会很有帮助。#include <stdio.h>#include <stdlib.h>int main() { int a[1024 * 1024 * 10];//静态内存分配,直接在栈内存 /** * c语言内存分配 * 1,栈区(自动释放、自动分配、超出限制提示stack overflo
2017-03-14 00:13:30
476
原创 C语言基本数据类型
基本数据类型不需要刻意记,用到的时候sizeof就可以知道大小是多少。输出的方式还是需要记一下。#include <stdio.h>#include <stdlib.h>//引入头文件//编译的时候去找对应的函数,名字不能一样,c++可以,它有命名空间。/** * int %d * short %ld * float %f * double %lf * char %c *
2017-03-14 00:08:39
485
原创 C语言动态内存分配
C语言动态内存分配C语言分配内存大小的一些方法malloc(内存大小),用来分配一个固定的内存大小realloc(需要扩容的首地址,分配的内存大小),用来进行内存重新分配(内存不够用了,就在原来的内存地址上去扩容)calloc(长度,步长),内存大小=长度*步长,效果与malloc一样#include <stdio.h>#include <stdlib.h>//创建一个数组,动态指定数组大
2017-03-13 21:09:00
586
原创 Java 注解
Java注解个人定义——注解这个东西,像是给Java代码打标签是的,给类、属性、方法都标记上一些东西,然后通过反射的方式去获取到这个标签,又根据这个标签来改变类、属性、方法的行为。
2016-11-07 23:22:37
364
原创 Activity setContentView流程
分析setContentView流程frameworks/base/core/java/android/app/Activity.java路径下找到入口public void setContentView(int layoutResID) { getWindow().setContentView(layoutResID); initActionBar();
2016-10-18 19:50:58
705
原创 UML学习笔记
什么是UML 1,图形化语言 2,需求,构建,配置开发软件阶段进一步认识UML 1,用于面向对象 2,开发人员、用户、维护人员沟通用 3,UML表示一个骨架、框架,开发的过程也可以描述 4,UML是一种语言 5,不同的图形代表不同的意思,如椭圆就是用例 6,UML的核心就是抽象UML中常用的元素 1,方的,有属性方法的集合 2,接口,接口是一个圆? 3,用例,系统的一个功能
2016-10-15 19:41:29
393
原创 Java 多线程控制
/** * 1,线程的名称,可以通过构造函数来初始化,或者setName * 2,线程的优先级,可以直接setPro * 3,sleep 阻塞状态,让出cpu * 4,join 合并线程,这里的合并指的是接上,编码效果上是顺序执行 * 5,isAlive 判断线程是否还活着 */public class ThreadControlMethod { public static vo
2016-10-13 14:30:37
412
原创 面向对象六大原则
优化代码的第一步 单一职责 SRP (Single Responsibility principle)一个类做的工作要纯粹,具体点就是分类要明确。书中例子就是ImageLoader只做加载的工作,而缓存的工作应该交给ImageCache来做。职责明确确实是代码优化的第一步。更稳定、更加灵活 开闭原则 OCP (Open close principle)可以认为一个类中的需要变化的逻辑,可以通过对变
2016-10-13 00:51:23
357
原创 Java 多线程通信
/** * 这个案例说是生产者与消费者的故事,柜台卖蛋糕,消费者要等生产者做好蛋糕才 * 能获取到,也就是做一个卖一个。 * Created by lcj on 16/10/11. */public class ThreadInfoExchange { public static void main(String arg[]) { Counter c = new Co
2016-10-12 22:52:46
380
原创 Java 多线程Timer 与 TimerTask 小案例
/** * 需要timer来做计时,TimerTask是Runnable的实现类,对run方法实现了倒 * 计时开始功能。 * Created by lcj on 16/10/11. */public class TimerTest { public static void main(String arg []){ Timer timer = new Timer()
2016-10-12 18:45:42
581
原创 Java 死锁demo
package com.jikexueyuan.myviewpager;/** * Created by lcj on 16/10/11. */public class DeadLockDemo { public static void main(String arg []){ new DeadLock(); } static class Tom{
2016-10-11 23:01:57
477
原创 Java单例设计模式
简单饿汉式//简单饿汉式单例public class Singleton { //随着类的加载而分配内存创建对象 private static Singleton mInstance = new Singleton(); //私有花构造函数,其它类无法进行new private Singleton(){ } //提供对象获取入口 public
2016-10-11 22:49:03
408
原创 Okhttp3 中响应回来的数据response.body().string()
response.body().string() 如果打印两次,会有一次是空的,暂时还不知道是为什么,记一笔。@Override public void onResponse(Call arg0, Response response) throws IOException { // TODO Auto-generated method stub
2016-04-11 22:56:49
16445
4
原创 Effective Java读书笔记一
Effective Java 读书笔记package com.lcj;public class Main { /** * #考虑使用静态工厂方法来替换构造器 * 优点 * 1,每个对象都有名字。 * 2,不必每次都 new 出一个对象。 * 3,多态的方式存在,返回的都是对象的子类。 * 缺点 * 1,类如果存在公有或则保护
2016-03-18 14:10:22
467
原创 Effective Java读书笔记一
Effective Java 读书笔记~~~ package com.lcj;public class Main {/** * #考虑使用静态工厂方法来替换构造器 * 优点 * 1,每个对象都有名字。 * 2,不必每次都 new 出一个对象。 * 3,多态的方式存在,返回的都是对象的子类。 * 缺点 * 1,类如果存在公有或则保护的构造器,就不能被子类化了(对象注册器中的构造器私有需
2016-03-18 14:08:08
424
原创 MakeFile编写注意事项
hello.out:max.o min.0 hello.c gcc max.o min.o hello.c -o hello.out 注意vi下的tab键与其它操作的不同 max.o:max.c gcc -c max.c min.o:min.c gcc -c min.c hell
2016-03-02 12:27:47
481
原创 android MVP设计模式实践
android MVP设计模式实践用MVP模式实现一个买花的example,MVP对应(Model-View-Presenter),先写下一个接口用与Presenter->View沟通。package com.aniu.mvpexample.app.buy_flower;interface IBuyFlowerView { //负责ui 进度 、提示、跳转提供操作接口 public
2015-11-20 17:05:31
867
原创 (C/C++学习笔记)线性表的顺序存储
线性表接口声明#ifndef __MY_SEQLIST_H__ #define __MY_SEQLIST_H__typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);void SeqList_Destroy(SeqList* list);void SeqList_Clear(Se
2015-08-20 00:31:27
571
原创 Lua 语言基础
a = { 10, 20, "sdfsdf"}-- 数组定义a[1] = 1;a[2] = 3;a[3] = "hello world"-- 交换变量a,b = 1,2b,a = 2,111c = 1c = c + 1function add(a ,b) return a , bendprint(add(a,b))-- print("helle" +
2015-08-19 15:10:06
619
原创 (C/C++学习笔记)函数模板的深入理解
#include "iostream"#include "cstdlib"using namespace std;/*函数模板的深入理解 ― 编译器并不是把函数模板处理成能够处理任意类型的函数 ― 编译器从函数模板通过具体类型产生不同的函数 ― 编译器会对函数模板进行两次编译 ― 在声明的地方对模板代码本身进行编译 ― 在调用的地方对参数替换后的代码进行编
2015-08-19 10:09:53
578
原创 (C/C++学习笔记)函数模板遇上函数重载
/* 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 如果函数模板可以产生一个更好的匹配,那么选择模板 4 可以通过空模板实参列表的语法限定编译器只通过模板匹配*//*函数模板不允许自动类型转化普通函数能够进行自动类型转换*/#include <iostream>using namespace std;int Max(int a
2015-08-19 10:00:06
542
原创 动态代理应用场景 Java
package com.lcj.dongtaidaili;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class 动态代理 {/** * 动态代理: * 最明显的功能就是可以实现方法过滤,从而在需要的方法上添
2015-08-18 17:47:11
2141
原创 装饰设计模式 Java版
package com.lcj.zhuangshi;interface 动物{public void 吃();public void 叫();}public class zhuangshi { public static class 狗 implements 动物{ public void 吃(){ System.out.println("咳咳咳
2015-08-18 17:12:00
435
原创 (C/C++学习笔记)函数模板加强
#include "iostream"using namespace std;//定义模板函数,T 为传入的类型template<typename T>void sortArray(T *a, int num){ int i =0, j = 0; T tmp; for (i=0; i<num; i++) { for (j=i; j<num; j+
2015-08-18 09:57:04
485
原创 (C/C++学习笔记)泛型编程基础
#include "iostream"using namespace std;void swap(int &a, int &b){ int c ; c = a; a = b; b = c;}void swap(float &a, float &b){ float c ; c = a; a = b; b = c;}void
2015-08-18 09:52:41
612
原创 (C/C++学习笔记)指针做函数参数形成回调练习
指针做函数参数练习#include "stdio.h"#include "stdlib.h"#include "string.h"int add(int a, int b);//第二个函数 是函数指针 做函数参数 //在这个函数里面,就可以通过这个函数指针,去调用外部的函数,形成一个回调int libfun( int (*pDis)(int a, int b) );int main(v
2015-08-17 13:58:29
430
原创 (C/C++ 学习笔记)函数指针语法基础
#include "stdio.h"#include "stdlib.h"#include "string.h"int array2[10];//定义一个数组类型typedef int (ArrayType)[10];//定义一个指向数组的 数组指针类型 typedef int (*PArrayType)[10]; // int *void main_数组类型复习(){ //
2015-08-17 13:56:56
667
原创 (C/C++学习笔记)多继承的二义性
#include "iostream"using namespace std;class base{public: int k; void printI() { //cout<<i<<endl; }protected:private:};class base1 : virtual public base{public: int i;
2015-08-09 20:18:17
589
原创 (C/C++学习笔记)操作符重载的两种方法
#include "iostream"using namespace std;//a+biclass Complex{private: int a; int b; //通过友元函数实现+操作 friend Complex operator+(Complex &c1, Complex &c2);public: Complex(int a = 0, i
2015-08-08 14:39:06
747
原创 (C/C++学习笔记操作符重载入门)
#include "iostream"using namespace std;//a+biclass Complex{public: int a; int b;public: Complex(int a = 0, int b = 0) { this->a = a; this->b = b; } void pri
2015-08-08 14:12:31
554
原创 (C/C++学习笔记)Copy构造函数应用场景
Copy构造函数应用场景#include"iostream"using namespace std;class Location{private: int X,Y;public: Location(int xx = 0 , int yy = 0) { X = xx; Y = yy; cout << "Constructor
2015-08-07 09:55:44
781
原创 (C/C++学习笔记)指针做函数参数形成回调
#include "stdio.h"#include "stdlib.h"#include "string.h"int add(int a, int b);//第二个函数 是函数指针 做函数参数 //在这个函数里面,就可以通过这个函数指针,去调用外部的函数,形成一个回调int libfun( int (*pDis)(int a, int b) );int main(void){
2015-08-06 09:43:14
522
原创 (C/C++学习笔记)临时对象深入理解
临时对象深入理解/*1 C++中提供了初始化列表对成员变量进行初始化2 使用初始化列表出现原因:1.必须这样做:如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。2、类成员中若有const修饰,必须在对
2015-08-05 14:31:56
793
原创 android 自定义控件基础之三种约束类型
随手记ORM —– 不想用SQL来操作数据库。本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用
2015-05-26 16:11:35
954
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人