Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Google Guava 中的Monitor

Google Guava 中的Monitor

synchronized自从Java提供了多线程编程,我们经常需要处理这样的情况:在特定的时间,我们需要限制访问,确保只有一个线程访问我们的代码。Java提供了同步关键字synchronized来实现这种访问控制,但是使用synchronized会存在一些问题。第一个问题是,当我们需要调用线程的wait()方法时,我们必须记得去使用while循环。看下面例子,来自guava monitor api上的说明: public class SafeBox<...
Java中事务的属性ACID

Java中事务的属性ACID

原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态。举个例子,在关系数据库的情况下,一个一致的事务将保护定义在数据上的所有完整性约束...
Linux网络编程——原始套接字能干什么?

Linux网络编程——原始套接字能干什么?

通常情况下程序员接所接触到的套接字(Socket)为两类: (1)流式套接字(SOCK_STREAM):一种面向连接的 Socket,针对于面向连接的TCP 服务应用; (2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。 从用户的角度来看,SOCK_STREAM、SOCK_DGRAM 这两类套接字似乎的确涵盖了 TCP/IP 应用的全部,因为基于 TCP/IP 的应用,从协议栈的层次上讲,在传...
Linux网络编程——原始套接字编程

Linux网络编程——原始套接字编程

原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据。区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。原始套接字的创建:int socket ( int family, int type, int protocol );参数: family:协议族 这里写PF_PACKET type: 套接字...
Linux网络编程——原始套接字实例:MAC 头部报文分析

Linux网络编程——原始套接字实例:MAC 头部报文分析

通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?链路层封包格式MAC 头部(有线局域网)注意:CRC、PAD 在组包时可以忽略链路层数据包的其中一种情况:unsigned char msg[1024] = { //--------------组MAC--------14------ 0xb8, 0x88, 0x...
C语言数据类型是如何被大多数计算机系统所支持?

C语言数据类型是如何被大多数计算机系统所支持?

问题:在读K&R版的The C Programming Language一书时,我在[介绍,第3页]看到这样一条说明:因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。这段黑体说明了什么?能否找到一个例子来说明C语言中的某种数据类型或控制结构不被某种计算机系统直接支持呢?回答:事实上,C语言中确实有不被直接支持的数据类型。在许多嵌入式系统中,硬件上并没有浮点运算单元。因此,如果你写...
程序是怎么执行的

程序是怎么执行的

Docker 是一个建立在操作系统+编译器基础之上的系统,所以了解操作系统,编译器以及程序运行机制对我们理解 Docker 来说非常重要。本文是一个自己的体会,有很多不精确的地方,目的是希望大家多关注低层,多修炼内功,多读好书。 一直想写篇文章来说明在程序运行过程中操作系统都干了些什么事。下面我试着说明: 首先,任何程序都是有格式的,所谓无规矩不成方圆,任何美的,精巧的事物都是精密组织的,程序也一样。我之前用的最多的是c#与 java,有趣的是,当时很...
C++学习笔记:引用

C++学习笔记:引用

1. 引用的定义及意义a. 引用的定义引用必须初始化。因为引用一经定义,它就不能再指向其他对象了,所以需要进行初始化。type & quote_name=var_name;但引用不能用引用对象的地址进行初始化。如果想对对象的地址进行引用,可以定义一个指针引用。b. 引用的意义int a=10;int &b=a;这里,b就是一个引用,b实际上指向的是a的地址,但它不是指针,是引用,是a的别名,a能做的b都能做。2. 引用的应用实际应用中,引用...
C++中的重载、覆盖、隐藏

C++中的重载、覆盖、隐藏

前几天面试时被问及C++中的覆盖、隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏。最终不欢而散。回来后在网上查找学习了一番,做了这个总结。概念一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。(1)相同的范围(在同一个作用域中) ;(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。(5)返回值可以不同;二、重写(也称为覆盖 override)是指派生类重新定义基类...
fcntl函数加文件锁

fcntl函数加文件锁

对文件加锁是原子性的,可以用于进程间文件操作的同步。在Linux下,有三个函数可以对文件进程加锁,分别是fcntl、flock、lockf。这里只说fcntl,它的用法也是最复杂的。 fcntl是file control的缩写。在linux下大部分设备都是文件,所以fcntl的功能也比较多,包括:Duplicating a file descriptor(复制文件描述符)File descriptor flags(操作close-on-exec标志)Fi...
Linux使用共享内存通信的进程同步退出问题

Linux使用共享内存通信的进程同步退出问题

两个甚至多个进程使用共享内存(shm)通信,总遇到同步问题。这里的“同步问题”不是说进程读写同步问题,这个用信号量就好了。这里的同步问题说的是同步退出问题,到底谁先退出,怎么知道对方退出了。举个例子:进程负责读写数据库A,进程B负责处理数据。那么进程A得比进程B晚退出才行,因为要保存进程B处理完的数据。可是A不知道B什么时候退出啊。A、B是无关联的进程,也不知道对方的pid。它们唯一的关联就是读写同一块共享内存。正常情况下,进程B在...
Qt Creator自定义编译运行步骤

Qt Creator自定义编译运行步骤

一直用Qt Creator开发。无它,只是因为linux下C++ IDE选择不多。同时因为我抛弃了MFC,平时写个小工具还得靠Qt,正好一举两用。用Qt Creator开发一般的工程,是不用修改编译、运行步骤的。编译、运行都是一键完成。不过,像我这个多进程的工程,由一个总工程管理,下面分为多个子工程。运行时需要由一个进程启动其他进程,但是Qt编译的文件却是分开的这么多的文件夹管理很不方便,而且不同进程需要读相同的配置文件,路径也不好配。于是我只好在编译时都...
<< 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 >>