自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 Nodejs学习之Path模块

一、介绍Node.js path模块提供了一些用于处理文件路径的方法引入Path模块:var path = require("path");二、函数介绍2.1 path.normalize格式化路径console.log('normalization : ' + path.normalize('./test/test1//lynnlee\\teemo/picaq/'));//...

2020-04-18 20:35:39 412

原创 Nodejs学习之事件循环

//引入events模块var events = require('events');var eventEmitter = new events.EventEmitter();var handler01 = function connectHandler(){ console.log('connectHandler'); //执行disconnectHa...

2020-04-18 15:10:11 133

原创 C++学习笔记之浅拷贝&深拷贝的理解

浅拷贝#include "test.h"#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Teacher{public: char* p; //有参构造 Teacher(const char* a) { int len = strlen(a); p =...

2020-04-05 18:48:11 156

原创 C++学习笔记之pragma once的理解

#pragma once是一个比较常用的C/C++预处理指令,只要在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次,防止头文件被重复引用。**“被重复引用”**指头文件在cpp文件中多次被include,include嵌套造可能现象造成头文件多次引用。举例:a.h文件#include “c.h”,b.cpp文件#include “a.h” 和#include “c.h”。此时...

2020-04-05 10:42:11 11087

原创 C++学习笔记之对象构造&析构的理解

struct在C++中进行了加强,可以和class具有一样的功能。默认struct访问权限是public,默认class访问权限是privatestruct MyStruct{ int age;};class MyClass{ int age;};int main() { MyStruct mystr; MyClass cls; mystr.age = 20;//编译...

2020-04-05 09:56:48 190

原创 C++学习笔记之函数理解

在C++学习笔记之二级指针用作函数入参数篇幅中介绍了二级指针的使用,但是还可以用指针引用实现二级指针的功能。指针引用声明方式:StructType* &p,是指针的别名//指针引用void fun03(MyStruct* &p) { cout << "申请空间前,p : " << p << endl;//申请空间前,p : 0000000...

2020-04-04 18:11:35 109

原创 C++学习笔记之二级指针&指针引用

函数参数传递就是将指赋值给入参,当入参是指针时,传递的是指针的地址,在函数内新申请一个新指针,与入参指针指向相同地址。在函数内操作的是指针指向的值。一级指针用作函数入参数下方代码是一级指针作为参数的案例,因为声明的MyStruct* pMyStruct01指针为null,所以指针pMyStruct01 = 0,fun01入参将0传递给MyStruct* p,所以在p没有申请空间之前p = 0,...

2020-04-04 17:55:13 354

原创 C++学习笔记之引用理解

一、基础引用就是变量的别名int main() { int a = 10; int& b = a;//引用的声明 int& c;//编译失败,引用必须依赖某个变量 system("pause"); return 0;}二、用处//值传递void my_swap(int a, int b) { int temp; temp = a; a = b; b ...

2020-04-04 11:04:03 114

原创 C++学习笔记之const&#define

C++学习

2020-04-04 10:23:08 110

原创 十一、Kotlin学习之构造方法

一、初始化类:主构造方法和初始化语句块通常来讲,类的所有声明应该在花括号里面。这里面被括号括起来的叫主构造方法class Animal(val name: String)主构造方法主要目的:1.表明构造函数参数;2.定义使用这些参数初始化属性让我们来揭示他的工作原理:class Animal constructor(_name: String) {//带一个参数的主构造函数 ...

2020-03-22 21:34:51 184

原创 十、Kotlin学习之定义类的继承结构

与JAVA不同,Kotlin的声明默认是final和public的。此外,嵌套的类默认并不是内部类:他们并没有包含对其外部的隐式引用一、Kotlin中的接口interface Animal { fun eat() {}}class Dog : Animal { override fun eat() {}//重写eat函数}kotlin中,使用冒号代替java中的ex...

2020-03-22 15:14:22 147

原创 九、Kotlin学习之字符串&正则表达式

一、分割字符串二、正则表达式

2020-03-22 10:16:19 1832

原创 八、Kotlin学习之可变参数&键值对

一、可变参数关键字vararg来表示可变参数fun test(vararg args: String) { args.forEach { println(it) }}fun main() { test("a", "b", "c", "d")}二、键值对可以使用mapOf函数来创建map:val map = mapOf(1 to "one"...

2020-03-22 10:12:40 1606

原创 七、Kotlin学习之扩展函数&属性

七、Kotlin学习之扩展函数&属性

2020-03-22 08:58:32 161

原创 六、Kotlin学习之消除静态工具类

一、顶层函数二、顶层属性

2020-03-21 22:43:10 197

原创 五 、Kotlin学习之命名参数&默认参数

一、命名参数fun isSquare(width: Int, height: Int): Boolean { return width == height}isSquare(20, 30)isSquare(20, 30)这样写可读性比较差,如果不去看函数声明,根本不知道每个参数含义。在Kotlin中可以做的更优雅isSquare(width = 20, height = 30...

2020-03-21 22:31:02 427

原创 四、Kotlin学习之while&for&区间&try

一、while循环二、for循环

2020-03-21 21:15:04 137

原创 三、Kotlin学习之枚举和When

二、Kotlin学习之枚举和When

2020-03-21 10:24:19 574

原创 二、Kotlin学习之类和属性

二、Kotlin学习之类和属性

2020-03-21 09:50:54 133

原创 一、Kotlin学习之函数和变量

Kotlin学习 函数和变量(一)

2020-03-21 08:49:23 140

原创 Kotlin学习目录

Kotlin实战学习笔记

2020-03-21 08:46:26 149

原创 Android API 28 View绘制流程

Android API 28 View绘制流程

2020-03-08 18:06:36 90

原创 Java算法

ArrayList:底层实现就是数组,超过当前容量就重新new 数据扩容,并且增、删要执行System.arrayCopy函数进行数据位移拷贝,因此增、删较慢。

2020-03-08 09:55:02 90

原创 Android API 28 异步任务AsyncTask原理

Android API 28 异步任务AsyncTask原理

2020-03-07 22:08:55 128

原创 GLSurFaceView介绍

GLSurFaceView

2020-03-07 20:35:56 197

原创 Activity生命周期

一、生命周期1.onCreateActivity创建,onStartActivity正在启动,Activity已经可见,只是在后台,还无法交互。onResumeActivity开始,已经显示,在前台,可以交互onPauseActivity暂停,太耗时的操作,否则会影响启动Activity的速度onStopActivity停止,在onPaus...

2020-03-07 20:20:18 213

原创 Android API 28 ActivityThread&ApplicationThread解析

一、类图二、 ActivityThreadActivityThread代表进程的主线程,创建完新进程后ActivityThread.main函数被加载,执行loop的循环使当前线程进入消息循环,且作为主线程。public static void main(String[] args) { ...... Looper.prepareMainLooper(); ...... Acti...

2020-03-07 10:24:30 839

原创 Android API 28 StartActivity源码分析

基于Android API 28的源码分析startActivity流程一、时序图startActivity启动时序图如下二、流程分析2.1

2020-03-04 20:27:39 227

原创 软引用和虚引用

软引用指向的对象只在内存不足时被回收,而只被弱引用指向的对象在下一次GC时被回收public class Test { public static void main(String[] agrs) { Object obj = new Object(); SoftReference<Object> softReference = new Sof...

2020-03-02 21:43:45 116

原创 Android API 28 进程的创建

在上一篇《Zygote启动流程》中已经了解到,ZygoteInit.java的main函数中会去创建ServerSocket,创建应用进程时,AMS会连接ServerSocket发起创建进程的请求。因此AMS是Socket Client端,Zygote是Socket Server端,创建进程时,Client连接Server端发起创建进程的请求。一、Client端(AMS)首先来了解下AMS发起...

2020-02-29 16:29:26 233

原创 Android API 28 Zygote解析

Zygote启动流程frameworks/base/core/java/com/android/internal/os/ZygoteInit.javapublic static void main(String argv[]) { //......省略 try { //......省略 //创建server socket zygoteServer.registerServe...

2020-02-28 16:44:17 187

原创 Android API 28 Binder机制

一、AIDL使用Demo地址:客户端:https://github.com/lynnleescz/LeeAIDLClientDemo服务端:https://github.com/lynnleescz/LeeAIDLServerDemo类图函数调用时序图Binder只拷贝一次bindService流程...

2020-02-26 16:44:57 128

原创 Android NDK开发-动态注册JNI Demo(三)

预留

2018-08-09 21:34:06 280

原创 Android NDK开发-简单Demo(二)

上文我们已经介绍了如何配置android studio环境来开发NDK,本篇实战开发,写一个简单的Demo。MainActivity.javapublic class MainActivity extends AppCompatActivity { // 用于在应用程序启动时加载“native-lib”库。 static { System.loadLibr...

2018-08-05 17:18:57 7510 1

原创 Android NDK开发-环境搭建(一)

一、概念Android NDKAndroid Native Development Kit,简称NDK。Android NDK 是一组允许您将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具。 能够在 Android 应用中使用原生代码对于想执行以下一项或多项操作的开发者特别有用:在平台之间移植其应用。 重复使用现有库,或者提供其自己的库供重复使用。 在某些...

2018-07-27 21:44:55 883

原创 二维数组指针

//定义二维数组int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};假设a的地址为1000(即第一个元素地址),则整个a在内存中的地址如下图:二维数组内存数据图.png测试代码#include&lt;stdio.h&gt;main() { int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; ...

2018-07-25 22:15:37 168

原创 RecyclerView基本用法一

为什么要使用RecyclerView控件替换ListView和GridView呢?整体来看,RecyclerView提供了插拔式的体验,它具有高度的解耦,异常的灵活性和更高的效率,通过设置它不同的ItemAnimator、LayoutManager、ItemDecoration可以实现更丰富多样的效果。但是RecyclerView的使用缺点也是有的,它的分割线需要自己定义,另外他的点击事件也需要自...

2018-07-25 20:41:49 147

原创 冒泡排序

用冒泡算法对数组进行从小到大排序思路将相邻两个数进行比较,较大的放在角标较大的位置。     黄色为本次比较的两个数,红色代表本次比较最大的书,下次循环不需要比较上一次最大的值。#include&lt;stdio.h&gt;#include&lt;math.h&gt;main() { int a[10]; prin...

2018-07-25 20:39:30 114

原创 Android笔记三:Android 接口定义语言 (AIDL)--Binder工作原理分析

Android 接口定义语言 (AIDL)–Binder工作原理分析源码如下/* * This file is auto-generated. DO NOT MODIFY. * Original file: ......\\AidlDemo\\aidlclient\\src\\main\\aidl\\com\\example\\admin\\aidlservice\\IRemoteServic

2017-06-17 11:48:34 271

原创 Android笔记三:Android 接口定义语言 (AIDL)--传递对象

Android 接口定义语言 (AIDL)–传递对象通过 IPC 传递对象通过 IPC 接口把某个类从一个进程发送到另一个进程是可以实现的。 不过,您必须确保该类的代码对 IPC 通道的另一端可用,并且该类必须支持 Parcelable 接口(也可支持java的Serializable序列化接口)。支持 Parcelable 接口很重要,因为 Android 系统可通过它将对象分解成可编组到各进程的

2017-06-17 11:40:49 286

AidlDemo

aidl传递对象

2017-06-17

空空如也

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

TA关注的人

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