Welcome 微信登录

首页 / 操作系统 / Linux

Android事件总线

Android事件总线

Android中Activity、Service、Fragment之间的相互通信比较麻烦,主要有以下一些方法:(1)使用广播,发送者发出广播,接收者接收广播后进行处理;(2)使用Handler和Message,如下载线程完成下载任务后,给UI发送Message,UI收到Message后更新界面。但是这些方法都比较繁琐,一种比较简单有效的方法就是使用事件总线。事件总线的基本原理是发送者把消息发送到事件总线,然后事件总线在接收者中查找哪些方法注册了这个事件,如...
Java synchronized关键字用法

Java synchronized关键字用法

本篇随笔主要介绍 java 中 synchronized 关键字常用法,主要有以下四个方面:1、实例方法同步2、静态方法同步3、实例方法中同步块4、静态方法中同步块我觉得在学习synchronized关键字之前,我们首先需要知道以下一点:Java 中每个实例对象对应一把锁且每个实例对象只有一把锁,synchronized 关键字是通过对相应的实例对象加锁来实现同步功能的。一、实例方法中使用 synchronized 加锁实例方法中默认被加锁的对象是调用此方...
Python的包导入机制

Python的包导入机制

Background在Python的大型项目中,一般都会用到模块包来组织文件层次,其中当一个目录内含有__init__ . py文件时,就可以視该目录为一个模块包。 当在模块包中使用import语句的时候,不同的语法会导致不同的模块搜索导入方式,常见的导入方式如下:绝对导入(absolute import)显式相对导入(explicit relative import)隐式相对导入(implicit relative import)需要注意的是,这些导入方...
Linux进程间通信之消息队列

Linux进程间通信之消息队列

本文依据以下思路展开,首先从宏观上阐述消息队列的机制,然后以具体代码为例进一步阐述该机制,最后试着畅想一下该通信机制潜在的应用。消息队列是在两个不相关进程间传递数据的一种简单、高效方式,她独立于发送进程、接受进程而存在。图1 消息队列通信机制示意图首先从宏观的角度了解一下消息队列的工作机制。因为消息队列独立于进程而存在,为了区别不同的消息队列,需要以key值标记消息队列,这样两个不相关进程可以通过事先约定的key值通过消息队列进行消息收发。例如进程A向ke...
从宏观到微观理解coding

从宏观到微观理解coding

宏观思维就是对所做事情的整体有一个清晰认识,并知晓我们追求的目标是什么。在理解了整体之后,我们需要针对自己感兴趣部分做深入的了解,这就是所谓的微观思维。古语“不谋全局者,不足谋一域”说的是同样的道理。个人认为接口是理解从宏观到微观的核心所在,那么究竟什么是程序的接口呢?为什么说她是核心呢?程序接口图1 函数实体及其输入、输出函数是完成特定功能的实体,而接口就是函数的输入、输出,及其所完成的功能。这样的好处是只要函数输入、输出、及其所...
C++类中虚表的详细讲解

C++类中虚表的详细讲解

C++类中的虚表结构是C++对象模型中一个重要的知识点,这里咱们就来深入分析下虚表的在内存中的结构。 C++一个类中有虚函数的话就会有一个虚表指针,其指向对应的虚表,一般一个类只会有一个虚表,每个虚表有多个”插槽”,每个插槽存放一个虚函数的地址。插槽中的内容可以被覆盖,子类如果重写了父类中的虚函数,则插槽中对应位置的数据被覆盖。虚表存放的是虚函数地址,不管该虚函数是public还是private的。光文字说明不太形象,下面上一张虚...
深入理解C++对象模型

深入理解C++对象模型

C++对象模型是比较重要的一个知识点,学习C++对象的内存模型,就可以明白C++中的多态原理、类的初始化顺序问题、类的大小问题等。1 C++对象模型基础1.1 C++对象中都有哪些东东C++对象中包括以下内容:静态常量成员变量成员函数虚函数纯续函数...以下是一个对象的定义:class Base{static int b_s;public:void function() { }virtual void v_function() {cout <<...
C++空类实例大小不是0原因

C++空类实例大小不是0原因

初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能。首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地址.那我们先看看一个例子:#include<io...
C语言调试过程中Duplicate Symbol错误分析

C语言调试过程中Duplicate Symbol错误分析

说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境)。如下图: 一.简单分析一下C语言程序的开发步骤。由上图我们可以看出C语言由编写源程序->编译->链接->运行几个步骤进行。编写源程序:C语言的源文件的扩展名为.c,源文件以ASCII的形式存储,不能直接被计算机执行。编译:1.把C语言源程序翻译成计算机可以识别的二进制代码,由编译器完成。2.编译的同时进行语法...
JavaScript事件流原理解析

JavaScript事件流原理解析

一、为什么会有这一篇的文章国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国庆的这段时间来补一补这个不足,也为了国庆后能够更好的完成公司的业务打下基础二、大致了解什么是JavaScript事件流首先这里先来举一个例子<!DOCTYPE html><html lang="en"><head><me...
深入分析 Java 中的中文编码问题

深入分析 Java 中的中文编码问题

编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一个 HTTP 请求怎么控制编码格式?如何避免出现中文问题?几种常见的编码格式为什么要编码不知道大家有没有想过一个问...
<< 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 >>