摘要:
Android 应用程序架构设计 一个应用程序通常至少有一个 Activity,当我们开发一个 Android 应用时,通常会将大部分的代码都写在 Activity/Fragment 中。这些代码包括UI控件、业务逻辑、数据库操作、网络请求操作、处理请求结果的操作等,随着时间推移和业务的增加,Act 阅读全文
摘要:
概述 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 ——《深入理解Java虚拟机》(从这里可以看到,字节码是一种文件格式) 我们都知道计算机只认识 0 和 1,所以我们所写的程序也需要经过编译器翻译成由 0 和 1 构成的二进制格式才能由计算机执行。 如 阅读全文
摘要:
线程安全性 什么是线程安全性 《Java Concurrency In Practice》一书的作者 Brian Goetz 是这样描述“线程安全”的:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个 阅读全文
摘要:
suspend 和 resume 的使用 在 Thread 类中有这样两个方法:suspend 和 resume,这两个方法是成对出现的。 suspend() 方法的作用是将一个线程挂起(暂停), resume() 方法的作用则是将一个挂起的线程重新开始并继续向下运行。 通过一个例子来看一下这两个方 阅读全文
摘要:
在上一篇博客 "理解Cookie和Session" 中,我们了解了 Cookie 和 Session 的一些基础知识,也知道了 Session 的基本原理是由服务端保存一份状态信息(以及它的唯一标识符),客户端会通过这个唯一标识符来访问这份状态信息数据。 整个客户端和服务端的交互过程可以概括为以下三 阅读全文
摘要:
HTTP 无状态协议 HTTP 本身是一个无状态的连接协议,无状态的意思是:每条请求/响应都是独立进行的,服务端每处理完一个客户端的请求之后就会断开连接,并且每条请求/响应与其之前(或之后)的请求/响应是没有任何关系的。即HTTP自身不具备保存之前发送过的请求或者响应的功能。 比如当我们打开微博的登 阅读全文
摘要:
Iris 中间件 当我们在 iris 中讨论中间件时,我们讨论的是在HTTP请求生命周期中在主处理程序代码之前和/或之后的运行代码。 实现中间件功能,有下面这样两种方式: 方式一: 我们可以通过按顺序注册多个 handler 的方式来实现中间件的效果: 访问 localhost:9090/输出结果: 阅读全文
摘要:
协程间通信 协程中可以使用共享变量来通信,但是很不提倡这样做,因为这种方式给所有的共享内存的多线程都带来了困难。 在 Go 中有一种特殊的类型,通道(channel),就像一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种通过通道进行通信的方式保证了同步 阅读全文
摘要:
停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作。 在 Java 中有以下 3 种方法可以终止正在运行的线程: 1. 使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程中止。 2. 使用 stop() 方法强行终止线程,但是不推荐使用这个方法,该方法 阅读全文
摘要:
Go 语言实现的 Web 服务工作方式与其他形式下的 Web 工作方式并没有什么不同,具体流程如下: —— http包执行流程 Request:来自用户的请求信息,包括 post、get、Cookie、url 等。 Response:服务器返回给客户端的信息。 Connect:用户的每次的请求连接 阅读全文