pigLoveRabbit的博客

pigLoveRabbit的博客

0%

docker logo

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Golang版本:1.12.13

什么是Linux Cgroups

Linux Cgroups(Control Groups)提供了对一组进程及将来的子进程的资源限制、控制和统计的能力,这些资源包括CPU、内存、存储、网络等。本质上来说,Cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。

阅读全文 »

upload successful

GC

GC就是垃圾回收(Garbage Collection),如果你写过C++或者C程序的,你就会知道new一个数据后,就需要delete它的内存,这就是手动管理内存,但这样如果你粗心点的话,就容易造成内存泄露,所以就有了自动垃圾回收,也就我们这里所讨论的GC。Java的GC会对JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop)的保证JVM中的内存空间,防止出现内存泄露和溢出问题。
其实GC很早就有了,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。

阅读全文 »

docker logo

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Golang版本:1.12.13

Golang

Go语言是Google开发的一种静态类型、编译型的高级语言,它设计的蛮简单的,学过C的话,其实上手Go很快的,当然相比于C的话,Go有垃圾回收和并发支持,所以写起来心智负担更低一点。
对于Go的安装和配置,我以前写过一篇文章——go语言基本配置,我这里就不在赘述了。Go1.11增加了go modules,使用它的话,就没必要一定要把代码放到GOPATH下面啦(≧▽≦)/go modules详细
使用请参考go mod 使用

阅读全文 »

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(通常就是宿主机)。

阅读全文 »