自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小北的博客

工作两年多的小菜鸟

  • 博客(35)
  • 资源 (28)
  • 收藏
  • 关注

原创 从应用角度看Android源码 - Thread 深入剖析

最近面试被问了Thread与runable的原理有什么不同,本人当时回答的是没什么不同,都是开一个新线程而已,面试官也没有给我个正面反馈告诉我到底有什么不同,索性趁着这个热乎劲我就去深入剖析一下这个Thread。首先写一个例子看看Thread和runable分别是怎么用的。(查看源码)先添加一个Thread的子类,并重新run方法即可package com.example.threadd...

2018-09-01 14:25:58 790

原创 从应用角度看Android源码 - ThreadLocal 的原理

最近被问了ThreadLocal的原理,之前只知道他是用来做数据的线程私有化,具体怎么用以及他的原理并没有研究过,所以这次去研究一下他的原理。首先还是创建一个新的AS项目,看看这个ThreadLocal是怎么用的,然后再一层一层去剖析他(示例代码)先编写一个线程类,在线程内用ThreadLocal处理一个在主存中的变量,然后循环操作的local变量;错误示例代码片段 一刚开始我写成了这个...

2018-08-22 15:07:56 481

原创 JNI心得 - (五)多线程回调Java的处理方式

在日常jni开发中或多或少会用到多线程,前面提到过jnienv只对当前线程有效,在其他线程中是没有用的。这就成为了多线程编程的阻碍,接下来就去研究一下多线程环境下如何使用jnienv的。首先还是先创建一个支持C++的androidstudio 项目,由于新创建的线程没有JNIEnv 环境,所以在创建线程之前要准备好创建JNIEnv的环境。虽然JNIEnv 是线程私有的,但是JavaVm 确实全...

2018-08-18 18:27:57 2922

原创 JNI心得 - (四)C++ 调用 java函数

获取代码接着上一节,这一节来写一下如何用本地代码调用java函数。首先在MainActivity.java声明一个本地方法 public static native void callBack(MainActivity activity);然后将生成的代码移到cpp文件中JNIEXPORT void JNICALL Java_com_example_test_jnite...

2018-07-22 09:44:29 736

原创 JNI心得 - (三)向本地代码传递数组

接着上一个例子java 调用本地代码 继续补充代码,这次看看本地代码如何接收java层数组。首先在MainActivity.java 添加如下代码声明 public native void stringArray(String []strArr); public native void floatArray(float []fArray); public nativ...

2018-07-18 23:39:34 3984

原创 JNI心得 - (二)java 调用本地代码

前面说JNI是供给java 调用本地方法的接口,这次就来实践一下。本次是用Android Studio 3.1.3进行的编码,首先创建项目主界面勾选include C++ support 之后操作都选择默认选项即可,最后点击finish。初始化项目所需要的库创建成功 androidstudio 默认创建了一个c++文件,build->make modu...

2018-07-17 23:27:27 473

原创 Android 源码下载 到 编译全过程

近日网速还算可以,于是乎决定下载一下Android源代码以供在家研究学习。下载之前先认识一下repo,整个Android源码是由很多个git项目构成,Google对Android代码的更新也是更新到相应模块的git项目上。那对于需要编译Android的开发者来说,要分别clone 每个git项目而且还要放到固定的位置确实是件惨绝人寰的w事,所以Google就开发了一个基于Python编写的帮助开发...

2018-07-13 08:43:26 12757 7

原创 JNI心得 - (一) 什么是JNI

    近些日子想整理一下知识脉络,索性就从JNI开始,开发android开发程序员或多或少会接触jni这一概念,刚刚接触这个东西只知道通过他可以让android程序调用c代码,其他的就不知道了,后来经过长时间的摸爬滚打,终于大概知道JNI到底是个什么东西了。 学习JNI时需要了解的一些基本知识JNIJNI全称Java Native Interface,他是接口也是协议,他的出现时为了...

2018-07-08 18:05:52 504

原创 从应用角度看Android源码 - 神奇的Adapter

最近用到了Adapter,以前只是知道怎么用,从能去研究他的原理,这次就想以baseadapter为例研究一下其原理,从设计模式角度看Android在adapter这块用到了典型的观察者模式,那就从这个点开始,看看他是怎样的一个观察者。一般我们会这样设置一个ListView的适配器 list.setAdapter(adapter);从这里开始,就开始adapter的神奇探索之旅

2017-08-22 22:34:50 487

原创 从应用角度看Android源码 - 是谁调用的ActivityThread的main方法

这次研究一下ActivityThread这个类的main方法是谁调用的,先看一下main方法里都实现了那些东西。顺便提一句ActivityThread的存在是为了管理应用所在进程的主线程的,也就是UI线程的管理者。他的main方法是应用程序的入口,没有这个方法,应用是无法创建的。 public static void main(String[] args) {

2017-08-08 15:20:49 3265 2

原创 从应用角度看Android源码 - 研究一下Handler机制

上一篇扒开AsyncTask的祖坟的时候提到了Handler,说白了AsyncTask只是对Handler进行了封装,这次就进一步研究一下Handler机制,我写了个模拟handler机制的Demo (https://github.com/wk415190639/Looper),提及handler必然涉及到Looper、Message、MessageQueue,这几个类Handler机制主要组成部...

2017-08-06 00:38:26 664 1

原创 从应用角度看Android源码 - 扒开AsyncTask的祖坟

本想写一下源码的获取和编译的过程,无奈出租房的网络实在太差,没能把源码下完整,暂且跳过这一过错,假设我已经写好了,这一篇就说一个简单的知识点,作为源码开发的

2017-08-01 13:50:19 640

原创 从应用角度看Android源码 - 安装Ubuntu系统

要想搞Android源码必须要有一个支持make的系统,大多数源码开发者都会选择Ubuntu,所以我们要先把电脑安装一个Ubuntu系统(也可以装在虚拟机里),我一般会选择把镜像烧到U盘里,再通过U盘启动安装程序。具体步骤入下:      1、下载烧写工具            假设你现在有一个windows的系统,现在电脑上安装一个ultraiso(软碟通)的工具。     2、用u

2017-07-29 14:39:24 602 1

原创 Git 常用命令集合

1、 git config --global user.name  配置用户名2、 git config --global user.email  配置邮箱3、 git init 初始化本地仓库  4、 git add filename  添加文件5、  git remote add orinin url  添加远程仓库6 、 git push -u  origin  mast

2017-07-19 08:29:06 595 1

原创 AndroidStudio Gradle开发

gradle对于刚接触Androidstudio的人来说一直是一个陌生的概念,gradle到底是什么呢,gradle是一种构建脚本,Androidstudio的构建完全是依赖他的,他是基于Groovyd的DSL,DSL全称为领域专用语言,所以刚开始不懂也是很正常的,对于Android开发者,前期只需要理解gradle的project与task的概念即可,没必要全都掌握,在以后的工作中会慢慢熟悉的。

2017-07-12 07:44:35 506

原创 Android学习-新闻客户端养成记(三)

主界面的实现前面已做好了核心布局文件,接下来要做的就是让客户端活起来,现在的任务就是实现一个侧滑菜单的功能,      实现这个功能也并不难,使用V4包下的DrawerLayout 控件可以轻松解决这一问题 ,代码如下,package eNews.activity;import java.lang.ref.WeakReference;import android.a

2016-09-14 20:38:22 1129 1

原创 Android学习-新闻客户端养成记(二)

新闻客户端需要的Activity                                    新闻主界面侧滑菜单界面图片新闻界面视频列表界面                     天气预报界面   新闻详情界面图片详情以上几个界面是项目所需要的核心界面,布局摆放并不怎么难,为了比例协调,我用了很多的

2016-09-13 22:36:09 1107

原创 Android学习-新闻客户端养成记(一)

经过数日的努力,新闻客户端终于完成了,想用博客记录一下开发过程中遇到的问题和解决方法,以免以后遇到同样的问题骂自己记性差.项目的前期准备做项目前应该仔细的规划一下功能需求,大体的预估一需要用到什么知识.新闻客户端需要用到的第三方jar包包括 volley  Jar包:据我所知,在Android中主要提供了两种方式来进行HTTP通信,分别是httpUR

2016-09-13 19:43:58 2121 5

原创 Android学习-Handler内存泄漏

android handler的内存泄漏问题

2016-08-20 16:46:16 555

原创 Android学习-Sax解析XML

android Sax 事件驱动型解析XML

2016-08-07 12:37:28 498

原创 Android学习-dp,sp,px的区别

Android sp dp px 之间的区别

2016-08-07 09:57:57 538

原创 Android学习-Swing简单的员工管理系统

用java swing 做的简单员工管理系统包括对mysql 数据库的增删改查 把数据导出到本地

2016-08-06 18:33:47 2106 3

原创 Android学习-mysql 数据库基础语句

java mysql 数据库 增删改查 创建表

2016-08-06 17:34:20 889

原创 Android学习-简单的猜拳游戏

java 基础 猜拳游戏 简单

2016-08-06 17:29:02 7206 1

原创 linux系统下实现聊天室

目标: linux系统下实现聊天室(1)在Linux系统下,使用TCP协议套接字编程;(2)服务器应具有处理多个客户端连接能力(设定最大连接数,如5个);(3)具有群发和私聊的能力;(4)过程描述客户端:连接服务器后,应能接收服务器发来信息并处理的能力,当收到聊天信息时,显示群发或私聊、信息发送客户及发送的信息,当收到客户加入或退出时,显示客户登录或退出,并更新客户列表;每

2016-01-18 11:24:45 5161 1

原创 Linux 下C语言 指针学习 二 (数组与指针)

很多人常常会认为指针与数组有着相当暧昧的关系,其实数组并不代表指针,数组的出现是为了把具有相同类型的若干变量按有序的形式组织起来。而指针的出生是为了通过指针去访问内存单元,这是文档上介绍的,读起来毫无瑕疵,因为太过官方,我所认知的数组其实就是在内存上申请一块固定大小的连续空间,注意是连续的空间哦,并且这块空间只能存放同一类型的数据,何为同一类型呢,比如说 int a[10];  假设这句代码是在函

2015-12-13 14:15:55 951

原创 在VMware虚拟机下访问外网的方法

在虚拟机上访问外网有多种方式,我将声情并茂的介绍给大家 一:桥接桥接相当于是采用虚拟技术把主机和虚拟机放到一个交换机的局域网下把虚拟机的网络适配器设置成桥接要想以桥接方式连接外网,必须了解真实主机的上网方式,然后去配置虚拟主机(虚拟机里的Linux 系统)的配置文件,一般情况下配置文件会藏在/etc/sysconfig/network-scripts/文

2015-12-12 23:04:56 28481 1

原创 Linux 下 C 语言 栈 堆的学习

C程序有两个存储区,一个是静态存储区,一个是动态存储区静态存储区用来存放代码段,全局变量动态存储区又分为栈和堆栈是用来存放局部变量的,而堆是用来动态申请内存的,我们经常用的malloc 就是在堆里申请内存,返回申请的这块区域的首地址,我们对动态存储区的操作会多于静态存储区,因为动态存储区是我们运行程序是才有的区域,在程序结束的时候,这块区域会被收回。对于栈这个概念我觉得应该知道

2015-12-12 20:52:02 538

原创 Linux 下C语言 指针学习 一

最近学习了一下指针,很多初学指针的人,都会抱怨指针这个东西很难懂,因为之前学过c++,所以对指针多少有些了解,指针这东西并不可怕,我理解的指针,其实和其他类型一下(int ,char......),只不过指针存储的数据是一个32位的整型的内存地址(32地址线),以动态存储区的栈为例画一个便于理解的图

2015-12-12 19:27:17 593

原创 Linux 用makefile编译程序

makefile可以方便快捷的编译我们编写的程序,也可以处理一些文件,例如删除文件,查看文件。。。。。初学者对makefile的掌握如下:      makefile的结构 第一行: 编译完成的文件名称 :  编译文件所需的源文件 第二行:(光标在行首的时候按一下tab键,一般情况下,在vim下按完tab后,之后的字母会变成红色), 输入你要执行的命令 如下

2015-11-05 10:21:28 671

原创 Linux下Socket 多客户端通信

要实现多客户端通信,必须要理清代码的框架图可能有些潦草,但仔细研究两天就会懂了,除了这以外,还有定义一下客户端与客户端,客户端与服务器之间的通信协议,说白了就是定义一些结构体内容若如下 clientmsg.h //CLIENTMSGbetween server and client#ifndef_clientmsg#define_

2015-11-04 21:38:06 641

原创 Linux 创建消息队列时出现 No space left on device的处理方法

Linux 创建消息队列有时会出现No space left on device的描述,会有以下一些解决方案:出现这样的原因基本上就是现有的消息队列数等于预设的最大队列数可以用         1. sysctl   -w  kernel.msgmni=你想设置的最大队列数 2. 可以清空现有的消息队列 ,在终端输入 : ipcs -q | awk  '{printf $2 "  "

2015-11-04 20:39:41 1367

原创 Linux下UDP通讯开发

服务器部分#include"protocol.h"#include"sys/types.h"#include"sys/socket.h"#include"string.h"#include"stdio.h"#include"stdlib.h"#include"netinet/in.h"#include"fcntl.h"int main(){

2015-10-26 12:50:04 586

原创 linux 下的socket 客户端开发

/*#define EXIT -1#define USER  1  #define MSG   2#define OK    3#define CMSGLEN 100struct CLIENTMSG{int OP;char username[20];char buf[CMSGLEN];};*/#include"stdio.h"#inclu

2015-10-26 12:42:54 470

原创 用cocos2d-x 自制flappy bird

最近学习了一些cocos2d-x 的知识,虽说只是的初学者,但还是忍不住开始实践一下,在网上找了点制作flappy bird 的资料,就照猫画虎的做了起来,不幸的是我找的资料已经太旧了,都是3.0以前的版本,虽说都是一个cocos2d-x的引擎,但对于像我这样又蠢又呆的人来说,就跟没找到资料一样,我现在用的是3.8的版本,因为我并没有找到早先的版本,所以索性就下一个当前最新的版本,cocos2d-

2015-10-09 15:34:24 727

模拟Android Handler机制Demo

一个Android handler机制的Demo

2017-08-06

仿写handler机制

模仿Handler机制写的例子

2017-08-04

新闻客户端

模仿网易新闻编写的新闻客户端,对接网易新闻接口,内容包括图文新闻,视频新闻,天气预报,腾讯第三方登录,本地收藏.......

2016-09-12

Java Swing 简单的员工管理系统

用java swing 做的简单员工管理系统包括对mysql 数据库的增删改查

2016-08-06

android 天气预报

android 天气预报,通过json解析获取天气数据,不过气象局的api已经不更新了,可以当学习用

2016-04-05

android 静音模式震动模式选择

android 静音模式震动模式选择 情景模式的选择

2016-03-22

向服务器发送字符串,拆分数字并累加

(1)在Linux系统下,使用TCP协议套接字编程; (2)服务器应具有处理多个客户端连接并计算的能力; (3)过程描述 客户端:连接服务器后,从键盘输入一连串的整数及字符串,并将这些整数及字符串发送到服务器,并发送结束指令(自定义结束指令),等待服务器返回计算结果,显示结果后退出; 服务器:为每个客户连接创建一个进程,处理客户数据,显示每次收到一个整数或字符串,收到结束指令后将整数累加,并将累加结果返回客户端,并关闭连接,结束进程。

2016-01-18

linux系统下实现聊天室

linux系统下实现聊天室 (1)在Linux系统下,使用TCP协议套接字编程; (2)服务器应具有处理多个客户端连接能力(设定最大连接数,如5个); (3)具有群发和私聊的能力; (4)过程描述

2016-01-18

linux 下实现组播通讯简单实例

linux 下实现组播通讯简单实例,在局域网内测试通过

2015-12-12

Linux获取指定端口服务信息,获取指定服务器端口号

Linux获取指定端口服务信息,获取指定服务器端口号

2015-12-04

winform程序设计合集,文件流操作,菜单栏,登录界面,数据库连接

winform程序设计合集,文件流操作,菜单栏,登录界面,数据库连接

2015-11-21

Winform d对数据库的基本操作

Winform d对数据库的基本操作,连接sql数据库

2015-11-10

winform日程表实例

Winform 日程表实例,采用access数据库,可以实现基本的增删改

2015-11-05

Linux下Socket 多进程多客户端通信

Linux下Socket 多进程多客户端通信,如果系统消息队列过多可以执行x.sh清空消息队列

2015-11-05

linux socket 多客户端通信开发文档

linux socket 多客户端通信开发文档 ,采用消息队列,管道进行进程通信

2015-11-04

linux 下socket客户端开发

linux 下socket客户端开发 ,采用fork进程技术

2015-10-26

基于cocos2d-x 3.8 开发的 愤怒的小鸟demo

基于cocos2d-x 3.8 开发的愤怒的小鸟实例 ,希望能帮助到需要的人

2015-10-23

Linux下UDP通信

在linux下的udp通信,采用c语言编写,可实现简单的文件下载与上传,适用于初学者

2015-10-15

基于Winform 编写的记事本

基于winform 开发的记事本窗体,可实现基本的剪切,复制与粘贴功能

2015-10-10

基于winform 编写的记事本窗体

基于Winform 编写的记事本窗体,有一些简单的剪切,复制,粘贴功能

2015-10-10

基于winfrom 开发的仓库管理系统

基于winform 开发的仓库管理系统,连接远程数据库 ,采用C/S 架构附有客户端,服务器端,开启前需先启动sql数据库

2015-10-10

自制flappy bird 详解

基于cocos2d-x 3.8 引擎 制作的flappy bird

2015-10-09

简单的winfrom应用程序

简单的winfrom窗体应用程序,适合初学者阅读

2015-10-07

基于Qt 的智能门锁系统

基于Qt的智能门锁系统,在Linux系统上运行成功

2015-10-07

Linux 下的socket编程简单实例

在linux下编写的socket 服务器和客户端,可以进行简单的通讯

2015-10-07

flappy bird 基于cocos2d-x 3.8

基于cocos2d-x 3.8 版本编写的flappy bird ,对于初学者很有帮助。分享给大家,希望能帮助到你

2015-10-06

cocos2d-x 3.8 坦克大战

这是我自己写的坦克大战 ,基于cocos2d-x 3.8 ,还没有写完,先把写的传上去和大家分享一下

2015-10-02

c#GDI实例代码

c#GDI+图形操作代码,包括线,矩形,圆,实体圆,阴影圆,刷。

2015-01-27

空空如也

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

TA关注的人

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