CentOS 7 Systemd取代init进程

由于这个学期学校有Linux课程,我也一直期待着这门课,为了练习在Linux上搭建一些应用,so 我把原来的Windows2012的云服务器换成了CentOS7(其实有很多其他原因,比如mstsc传输速度慢的可怕,而且服务器带宽本来就不行)。在学习过程中遇到了很多问题,主要在于很多Linux命令在CentOS7中有了替代品,也就是所谓的新特性,其中最“坑”的就是Systemd进程取代init进程(很多书籍资料讲的都是init作为启动进程)。这个主要体现在servicechkconfig命令上,在CentOS7中使用systemctl代替servicechkconfig两个命令。

service命令

Read More

在CentOS7上安装MySQL的心路历程

今天突然心血来潮,想把博客转移到到自己的云服务器上,嗯,想法不错,正好能练练手(后来找到了别的解决方案Hexo,才发现自己有多幼稚,果然是脑子一热,啥事想的出来,但是在这个过程中也学到了一些东西)。CentOS上安装MySQL数据库,linux配mysql,哎哟,不错哦。(→_→在找到别的解决方案后,马上就被我给卸了)。

二话不说上yum安装大法

Read More

Http协议报文格式

Http协议概述

HyperText Transfer Tansfer Protocol 超文本传输协议,是一种基于TCP的应用层协议,也是目前为止最为流行的应用层协议之一,可以说HTTP协议是万维网的基石。历经了0.9、HTTP/1.0、HTTP/1.1、HTTP/2几个版本(关于HTTP协议的历史,这里有一片文章介绍的比较详细),目前流行的还是HTTP1.1这个版本,HTTP2还在推广中,我这里复习的也仅仅是HTTP1.1(HTTP2还不是了解(>^ω^<),只知道增加了很多加密技术)。

Read More

SurfaceView、SurfaceHolder、Surface

按照官方文档的说法,SurfaceView继承自View,并提供了一个独立的绘图层,你可以完全控制这个绘图层,比如说设定它的大小,所以SurfaceView可以嵌入到View结构树中,但是需要注意的是,由于SurfaceView直接将绘图表层绘制到屏幕上,所以和普通的View不同的地方就在与它不能执行Transition,Rotation,Scale等转换,也不能进行Alpha透明度运算。SurfaceView的Surface排在Window的Surface(也就是View树所在的绘图层)的下面,SurfaceView嵌入到Window的View结构树中就好像在Window的Surface上强行打了个洞让自己显示到屏幕上,而且SurfaceView另起一个线程对自己的Surface进行刷新。特别需要注意的是SurfaceHolder.Callback的所有回调方法都是在主线程中回调的。

SurfaceView、SurfaceHolder、Surface的关系可以概括为以下几点:

Read More

TextureView、SurfaceTexture、Surface的关系

上篇文章我们说了SurfaceView,接下来我们对Texture进行一下分析。
SurfaceView由于使用的是独立的绘图层,并且使用独立的线程去进行绘制。前面的文章中也说到SurfaceView不能进行Transition,Rotation,Scale等变换,这就导致一个问题SurfaceView在滑动的时候,SurfaceView的刷新由于不受主线程控制导致SurfaceView在滑动的时候会出现黑边的情况,看下面的效果图。
SurfaceView滑动出现黑边
这个Demo里的SurfaceView是上篇文章中定义的DrawSurfaceView,不了解的同学可以看上一篇文章

如果这里的SurfaceView是VideoView,由于视频刷新的速度比这个DrawSurfaceView速度大好几倍,那么这个黑边的情况将更恶劣,同学可以将DrawSurfaceView的刷新延时DELAY设置的更小一点,看的效果更明显。这里要讲到的TextureView就是用来解决这种问题的。

Read More

Gradle的那些坑

Gradle是Android Studio使用的构建系统,类似于Eclipse上的Maven(貌似新版的Eclipse也有支持Gradle的插件了),有了Gradle就可以很好的帮我们解决库依赖的问题了,而且也不要我们自己手动从网上下载。Gradle支持JCenter,Maven等中央仓库,关于JCenter与Maven的区别这里有篇文章。Gradle对下载下来的jar包进行统一管理,避免了一个jar包到处拷贝,搞得每个项目里面都有。

修改Gradle的默认路径

Read More

Android Handler消息机制源码分析——第一部分:Looper与MessageQueue

由于在Android中,网络请求不能运行在主线程中,同时一些耗时的操作也不建议运行在主线程中。因此多线程以及线程间通信在Android中显得更为重要了,而安卓SDK中也提供给我们很多的多线程机制,譬如:Handler,AsyncTask,以及基于这些机制而来的IntentService,AsyncService,Loader等常用类,其中AsyncTask又是基于Java的Concurrent框架而来的,虽然有些人对AsyncTask抱有怨言,但后面的文章中我们也会以学习的态度对AsyncTask进行深入剖析。这里我们先来对常用的Handler做更深层次的了解。Handler机制可以说是Android开发过程中最常用到的线程通信机制,比如说Activity.runOnUiThread方法,View.post,View.postDelayed等方法底层使用的都是该机制。但是在分析源码之前我们先来对整个框架机制中的几个相关类简单的说明一下。

Handler机制相关类的概括

Read More

安卓常用第三方框架-FastJson

简介

上次我们讲到Google的Gson库,作为国际大公司的阿里巴巴也不敢示弱,出了一款号称速度最快的Fastjson,这里有第三方给出的测试结果https://github.com/eishay/jvm-serializers/wiki, 虽然FastJson在Github上戏称Gson的“G”是“龟速”的意思,但FastJson在文档方面确实做得不如Gson(没办法天朝软件行业的通病)。废话不多说下面先给地址。

Read More