pigLoveRabbit的博客

pigLoveRabbit的博客

Zookeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。 由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。

阅读全文 »

synchronized

在Java多线程编程中,我们最先碰到的也是最简单的方法就利用synchronized关键字。用它的方式有三种: * 修饰实例方法,锁是当前实例对象 * 修饰静态方法,锁是当前类的class对象(每个类都有一个Class对象) * 修饰代码块,锁定括号里的对象

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

阅读全文 »

其实,无论是Mybatis、Hibernate都是ORM的一种实现框架,都是对JDBC的一种封装。

之前我写过一篇Spring Boot集成MyBatis操作MySQL,不过在这里让我们脱离Spring(不过很多代码是一样的,Dao类,Model类,数据库配置),就单独回顾下MyBatis的使用,来了解下MyBatis的使用流程。

Mybatis工作流程

  • 通过Reader对象读取Mybatis配置文件
  • 通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
  • 获取当前线程的SQLSession
  • 事务默认开启
  • 通过SQLSession读取映射文件中的操作编号,从而读取SQL语句
  • 提交事务
  • 关闭资源
阅读全文 »

本文环境: * OS:Ubuntu 18.04.3 LTS * Qt版本:5.14.1 * Qt Creator版本:4.10.1

布局器概览

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

upload successful
阅读全文 »

本文环境: * 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

阅读全文 »

Veth

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

阅读全文 »

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

本文环境: * OS:Ubuntu 18.04.3 LTS

阅读全文 »

k8s logo

Kubernetes,简称 k8s(k,8 个字符,s——明白了?)或者 “kube”,是一个开源的 Linux 容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行 Linux 容器,而 Kubernetes 可以帮助你简单高效地管理那些集群。构成这些集群的主机还可以跨越公有云、私有云以及混合云。

本文环境: * OS:Ubuntu 18.04.3 LTS * Vagrant版本:2.2.6 * VirtualBox版本:6.0.14 r133895 (Qt5.9.5) * Kubernetes版本:1.16.3

阅读全文 »

docker logo

解决最小生成树(Minimum spanning tree)问题的算法,书上介绍了两个:Prime算法和Kruskal算法。

阅读全文 »

docker logo

本文环境: * OS:Ubuntu 18.04.3 LTS * 内核版本: 5.0.0-36-generic

Linux Namespaces

Docker的所用的两个关键技术,一个是Namespaces,一个是Cgroups。它俩都不是新技术,Linux内核很早就支持,但是Docker把它们有机地结合起来,加上自己创新,使得现在容器技术非常流行。
Linux Namespaces其实是做到了进程之间全局资源的隔离,譬如,UTS Namespace隔离了Hostname空间。这意味着在新的UTS Namespace中的进程,可以拥有不同于宿主机的主机名。

阅读全文 »
0%