/images/avatar.jpg

Java之synchronized的实现原理

synchronized

在Java多线程编程中,我们最先碰到的也是最简单的方法就利用synchronized关键字。用它的方式有三种:

  • 修饰实例方法,锁是当前实例对象
  • 修饰静态方法,锁是当前类的class对象(每个类都有一个Class对象)
  • 修饰代码块,锁定括号里的对象

加上synchronized之后,我们的代码就变成了同步代码,神奇又强大,但有的时候也不禁会思考下:Java底层是怎么实现synchronized关键字的?
在阅读了一些文章之后,我在这里做了一些归纳和总结。

Qt之布局管理

本文环境:

  • OS:Ubuntu 18.04.3 LTS
  • Qt版本:5.14.1
  • Qt Creator版本:4.10.1

布局器概览

我们以下图的 Qt 设计师界面来说明布局功能,QtCreator 设计模式的布局功能与 Qt 设计师是一样的。

Qt之初步尝试

本文环境:

  • OS:Ubuntu 18.04.3 LTS
  • Qt版本:5.14.1
  • Qt Creator版本:4.10.1

Qt安装

首先,我们得明白一些概念。
Qt是一个C++库,或者说是开发框架,里面集成了一些库函数,提高开发效率。
Qt Creator是Qt集成开发环境,你可以在这里编写,编译,运行你的程序。所以最开始写Qt只安装Qt Creator这个是不行的,因为还没有相关的Qt库呢,但是新版的Qt Creator(5.9开始)已经集成了Qt了,所以入门就方便很多了。
关于Qt下载,大家可以打开这里的链接,里面有各版本Qt(QtQt Creator的集成包),操作简单,最新版本是5.14

Linux网络虚拟化技术之Veth和Bridge

Veth

Veth缩写是Virtual ETHernet。veth设备是在linux内核中是成对出现(所以也叫veth-pair),两个设备彼此相连,一个设备从协议栈读取数据后,会将数据发送到另一个设备上去。这个设备其实是专门为container所建的,作用就是把一个network namespace发出的数据包转发到另一个namespace(通常就是宿主机)。
https://s2.ax1x.com/2020/01/14/lbBga9.png

Linux网络虚拟化技术之tun/tap

我们都知道,Linux实际是通过网络设备去操作和使用网卡的,系统安装了一个网卡之后会为其生成一个网络设备实例,比如eth0(或者叫enp7s0,不同发行版默认网卡命名规则不同)。随着网络虚拟化技术的发展,Linux支持创建出虚拟化的设备,可以通过虚拟化设备的组合实现多种多样的功能和网络拓扑。
常见的虚拟化设备有tun/tapVethBridge802.1q VLAN device