自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

勤能补拙

谨记,苛求完美是种拖延症,更多文章见https://github.com/shimachao/blog

  • 博客(138)
  • 资源 (1)
  • 收藏
  • 关注

原创 在 Ubuntu 18.04 上使用静态可执行文件安装 Docker CE 及后续设置

在 Ubuntu 18.04 上使用静态可执行文件安装 Docker CE 及后续设置前几天安装了最新的 Ubuntu 18.04 LTS,想在上面安装一个 docker,结果发现 docker 官方的软件源里没有Ubuntu 18.04 的安装包版本,可能是系统太新了,官方还没来得及制作。之前用 Ubuntu 17.04 也是这样,上次我在 17.04 上是在官方的软件源里下载了 16.04...

2018-05-05 13:51:16 5500

原创 Ubuntu 17.10 将“关闭、最小化、最大化”按钮移动到标题栏左侧

习惯了 Ubuntu 将应用窗口的关闭、最小化、最大化按钮放在标题栏左边。17.10 居然改到右侧了,有点不习惯。还是改为左侧吧。 在系统设置里面找了好久都没有发现相关设置。最后 Google 到可以用命令行设置。通过命令行改到左边:$ gsettings set org.gnome.desktop.wm.preferences button-layout 'close,maximize,mini

2017-10-26 18:28:18 6987

原创 QEMU 2.10.1 编译安装

QEMU 2.10.1 编译安装原本在 Ubuntu 上可以直接通过apt install qemu-km可以直接安装 QEMU,但是这样安装的版本太低。想用官方的最新版本还得自己编译源码安装。本文记录了我在新安装的 Ubuntu 17.10 desktop 安装 QEMU 的过程。源码包安装下载源码包$ wget https://download.qemu.org/qemu-2.10.1.tar.

2017-10-23 16:55:12 5456 1

翻译 Docker 镜像规范 v1.0.0

Docker 镜像规范 v1.0.0本文翻译自Docker Image Specification。本文翻译时,该规范为 v1.0.0 版本。镜像是关于 root 文件系统变更集的有序集合以及相应容器运行时的执行参数。该规范概括了这些文件系统变更集的格式以及相应参数,并描述了创建它们的方法以及在容器运行时和执行工具中如何使用它们。术语该规范使用了以下术语:Layer(层)镜像由层组成。镜像层是一个一

2017-09-14 22:44:02 5791

原创 条款09:不要在构造过程和析构过程中调用 virtual 方法

条款09:不要在构造过程和析构过程中调用 virtual 方法问题背景我们知道通过指针或引用调用对象的虚函数会触发动态绑定,根据对象的实际类型调用对应的版本。但是如果是在构造函数或析构函数中调用 virtual 函数呢?构造函数的特殊之处在于,当创建一个扩展类对象时,先调用基类的构造函数,此时扩展类的成员变量都未初始化(某种意义上扩展类部分还不存在),如果此时在基类的构造函数中调用一个 virtua

2017-08-11 10:45:08 586

原创 Windows 7下用 pip 安装 markupsafe 时遇到的错误

前几天写 Python 爬虫,在 Windows 7 上用 pip 安装了很多Python 库。但是安装 jinja2 时遇到了问题。第一次安装 jinja2 失败,第二次显示成功。但是我到Python IDLE 里 import jinja2 时却出现下面的错误:>>> import jinja2Traceback (most recent call last): File "<pyshel

2017-05-28 16:28:56 13834 14

原创 实现整数转成字符串

实现整数转成字符串题目用 C 语言实现,将一个整数转成字符串,比如 123 转成“123”。要求不能使用 itoa 等函数。代码#include <stdio.h>#include <stdlib.h>#include <string.h>char * itostr(int v){ int a; if(v < 0) { a = -v; }

2017-04-16 19:35:32 1465

原创 Java 中的 i = i++ 问题

Java 中的 i = i++ 问题今天实验室几个 Java 技术栈的小伙伴在讨论问题,感觉他们在讨论一个很简单但又很有意思的问题。想到我最近也要用 Java,于是过去看了一下。没想到他们居然像 C/C++ 程序员一样在讨论 i++ 的问题。看来 Java 程序员也不能免俗。而且《Java 程序员面试笔试宝典》也提到了这个问题。网上也可以搜到好多结果。看来这个问题很重要,虽然是个无聊的问题,但说不定

2017-01-15 11:39:56 3064 3

原创 Raspberry-jessie Docker 安装记

Raspberry-jessie Docker 安装记前几天实验室买了个几个树莓派 3b,老师想让我们在上面搭建微服务之类的。虽然需求不太明确,但是 Docker 指定要用,还得用 Docker 创建集群。所以我们得在树莓派上安装 Docker 的。我们之前没接触过 ARM 架构,再加上国内访问国外的网速,我们对于在树莓派上安装 Docker 是有点恐惧的。不过事实证明,确实比较麻烦,但是可以解决。

2016-12-31 23:06:28 10131 9

原创 FFmpeg 录制桌面、麦克风、摄像头

FFmpeg 录制桌面、麦克风、摄像头前言老师要我们试试能不能用手机拍摄视频然后发送到树莓派上。可能以后要然树莓派处理视频之类。老师描述的场景好像实时的。虽然需求不明确,我们就先试试吧。我的计划是在树莓派上搭建好流媒体服务器,然后手机拍摄视频并推送到服务器。但是找了好久也找不到靠谱的可以实时拍摄视频并推送到服务器的 Android 应用。我们也不会 Android 开发。好不容器把树莓派上的 rtm

2016-12-31 12:57:34 15463 1

原创 Docker swarm 模式初体验

Docker swarm 模式初体验本教程将介绍 Docker Engine Swarm 模式。先介绍 swarm 模式几个关键的概念,然后通过动手实践带你体验一下 swarm 模式。

2016-12-23 10:51:38 9499 1

原创 Docker 运行时资源限制

Docker 运行时资源限制Docker 基于 Linux 内核提供的 cgroups 功能,可以限制容器在运行时使用到的资源,比如内存、CPU、块 I/O、网络等。内存限制概述Docker 提供的内存限制功能有以下几点:容器能使用的内存和交换分区大小。容器的核心内存大小。容器虚拟内存的交换行为。容器内存的软性限制。是否杀死占用过多内存的容器。容器被杀死的优先级一般情况下,达到内存限制

2016-12-18 17:04:48 44472 6

翻译 Dockerfile 最佳实践

Dockerfile 最佳实践本文是 Docker 官方文档 docs/archive:v1.1 中 Best practices for writing Dockerfiles 的理解和翻译。包含了 Docker 官方对编写 Dockerfile 的最佳做法和建议。这些建议可以让你写出易用高效的 Dockerfile。Docker 官方强烈建议你遵从这些建议(实际上,如果你是在创建官方镜像,你必须

2016-11-27 19:06:34 10166 3

原创 Docker 1.12.3 在 Ubuntu 16.04 上的安装和配置

Docker 在 Ubuntu 上的安装和配置以下安装过程只在 Ubuntu 16.04 x64 上做过测试。我们建议安装的是 Docker 官方维护的版本,而不是 Ubuntu 官方软件仓库中的版本。一般 Ubuntu 官方维护的版本会比 Docker 官方维护的版本低两个版本号。如果你不想使用 Docker 的最新特性,只想快速的尝试一下 Docker,使用$ sudo apt install

2016-11-26 18:37:50 2955

原创 菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序

菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序四年前我发布了一篇菜鸟攻略–C语言多文件编程初探(一),没想到这篇文章成了我博客上阅读量最多,评论数也最多的文章。当时我读大二样子,对学习 C 语言有着强烈的兴趣。本来是想写一个系列的,所以文章标题中有个(一)。当初计划的是第二篇写通过命令行调用 gcc 工具手动编译程序,在写一篇使用 makefile 的。后来回头看...

2016-11-24 21:34:18 16621 15

原创 Ubuntu apt 本地源 离线安装

今天一台主机(Ubuntu 14.04)不知道为什么连不上外网了。只能和局域网内的其他主机相互ping通。但是上面一个正在跑的程序出了问题,需要安装两个额外的包,而且这两个包依赖还挺多的样子。这可急死我了。但是我另一台笔记本可以上外网。碰巧也安装的是Ubuntu14.04。我就想能不能把要安装的包先在笔记本上下载好,然后通过U盘转移到前面那台主机上,再在那台主机上通过本地包安装呢?通过网上一番搜索后

2016-08-08 22:02:41 48875 15

原创 socketserver.py代码阅读笔记

socketserver.py源码阅读笔记前言一直想弄清楚一个http server和Web框架的工作原理。但以我目前的实力,阅读一个http server或web框架代码还是太难了。后来又对异步IO、并发产生的兴趣。前几天做一个大作业需要写几个各种不同并发模型的TCP Server,写完才想起Python有现成的socketsever模块可以用,完全不需要自己写。于是对比了一下我写的代码和sock

2016-07-01 00:01:58 5347 1

原创 Python多线程初步

创建线程的两种方式其一是继承threading.Thread对象,并覆写其run()方法。run()是线程执行主体。执行该类的start方法可以开启线程。import threadingfrom time import sleep class MyThread(threading.Thread): def __init__(self): super().__

2015-11-29 18:19:39 1052

原创 冰与火之歌:Python的三元表达式

我不知道为什么,Python这么优雅的语言居然不支持三元运算符,也就意味着无法像C语言一样直接使用conditon?a:b来返回a或b。我感觉我对Python的喜爱受到了挑战。我不喜欢这种感觉。经过上网搜索和自行实验,我终于找到了三元表达式的替代方法。方法一:a if condition else b如果condition为True,返回a;否则,返回b。例如,下面的例子根据条件输

2015-11-20 22:07:10 2436

原创 用urllib、BeautifulSoup抓取糗事百科段子

python版本为:chao@chao-machine:~/python_study$ pythonPython 3.4.3 (default, May 31 2015, 17:07:22) [GCC 4.9.1] on linuxType "help", "copyright", "credits" or "license" for more information.>>> 代

2015-07-24 18:13:06 2537 4

原创 Python编辑器设置(包括Visual Studio Code和Sublime Text3)

源起Python强制缩进,使用Tab键和空格都可以,但不能混用。混用Tab和空格会导致报错:IndentationError: unindent does not match any outer indentation level。如果你的编辑器没有可视化空格和Tab,修改起来是抓狂的。PEP8推荐使用空格来缩进。因为不同的编辑器、IDE对Tab键的处理不一样,有的宽度为4,有的为8。

2015-07-21 14:54:35 6507

原创 win7、Python3.4安装cx_freeze

听说cx_freeze支持Python3.x,所以想试一下。于是...过程记录安装>pip install cx_freeze顺利完成。测试,发现错误测试一下,看安装好没,安装网上的教程,切换到Python安装目录的Scripts目录在cmd输入cxfreeze。>cxfreeze提示找不到文件。怎

2015-07-20 10:21:59 11145 8

原创 指针常量和常量指针

区别 读法 意义

2015-06-10 17:43:13 925

原创 C++const成员规则

越来越讨厌C++了,一个简单的const成员变量都搞得这么麻烦。概念:const成员变量、const成员函数、const类变量const成员变量是初始化后就不能再改变的。在整个过程中都始终如一。素以不允许有赋值操作。const成员函数是保证不会修改成员变量的成员函数。const类变量是指声明一个类变量时使用了const,比如const A a;意义:const成员变

2015-06-10 15:05:47 1007

原创 Matplotlib图表上输出中文(汉字)、减号问题

我安装的是Anaconda3-2.2.0-Windows-x86_64。今天想在图上输出一下中文,结果输出的都是框框。难道中文(汉字)不能正确显示吗?解决过程如下:找到配置文件matplotlibrc。可以用everything搜索这个文件。例如我的在C:\Anaconda3\Lib\site-packages\matplotlib\mpl-data路径下。用文本编辑器

2015-05-10 10:38:39 4966

原创 重刷数据结构,小题大做,——难道非要头结点吗?

按照书上的说法,引入头结点有一下两个优点:由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作和在表的其他位置上的操作一致,无须进行特殊处理。无论链表是否为空,其头指针是指向头结点的非空指针,因此空表和非空表的处理也就一致了。你可能会疑惑:难道非得要头指针吗?难道没有头结点,插入、删除、空表的处理就不一致了吗?(貌似有一些同学和我有同样的疑问)

2014-08-16 21:28:42 1476 1

原创 C语言不完全类型与延迟定义

一直以为我的C语言学的还可以,虽说不是出神入化,但是至少比较熟悉吧。但是前一段时间看了一篇微信推文,再百度了一下C语言不完全类型。发现我居然C语言不完全类型和用途甚广的延迟定义都没概念。这两天仔细查阅了相关概念并用代码实验了一下。本文结构如下: C语言不完全类型概念介绍一个故事延迟定义的优点思考…C语言不完全类型不完全类型也就是不知道变量的所有的类型信息。比如可

2014-08-11 21:06:56 3909

原创 “你的这个只要一行代码就能搞定”

“你的这个只要一行代码就能搞定”

2014-05-12 10:47:46 2389 2

原创 在程序中使用GDI+的步骤

(1)创建一个工程,#include

2014-04-06 16:00:48 2100

原创 安卓开发入门:工具栏(Action Bar)

本文针对Android3.0及以上。主要是官方文档的翻译加上我自己的理解。添加工具栏(Activity Bar)添加一个工具栏需要你的app所使用的activity theme(活动主题)本身支持工具栏。从Android 3.0(API level 11)开始,所有使用Theme.Holo主题(以及它的扩展主题)的activity默认包含了工具栏。而如果你app targetSdk

2014-03-23 15:37:57 4023

原创 Android开发入门:样式和主题(Styles and Themes)

这篇文章是官方文档的翻译和笔记。对应于官方文档的develop--API Guides--User Interface--Styles and Themes文章结构:0. 样式和主题1. 定义样式1.1 定义样式的步骤1.2 继承1.2 多层次继承 1.4 样式属性2. 为UI使用样式和主题2.1 为单个视图使用样式2.2 为Activity或应用程序使

2014-03-22 21:08:18 3364 2

原创 第一次使用Genymotion遇到的问题:for an unknown reson,VirtualBox DHCP has not assigned an IP address to virtual

今天想使用一些Genymotion虚拟机。一路安装下来,还算顺利。创建好虚拟设备后,开启时遇到了问题。for an unknown reson,VirtualBox DHCP has not assigned an IP address to virtual...看来是virtualbox网络设置问题。折腾了一番,终于解决了。记录一下解决方法。1.打开Vir

2014-03-14 11:10:30 13825 2

原创 中心极限定理

2013-12-29 12:29:01 2088

原创 C++函数重载实现原理浅析

---------------------------------------------------献给所有和我一样还没拿到office的同学-----------------------------------------------------------------------------------

2013-10-15 11:22:31 4691 4

原创 C语言全局未初始化数据段分析

前言:         在分析C语言全局未初始化变量时,发现在目标文件中全局未初始化变量并不是直接放在bss段中。        再后来发现在两个.c文件中定义同名的全局变量,链接时居然没有发生符号重定义错误。才知道C语言弱定义的概念。这在C++中是绝对不行的。       后来搜索到一篇博文说:       “全局未初始化变量没有被放到任何段,而是作为未定义的COMMON符号

2013-10-10 17:52:39 6093 1

原创 从一道面试题分析Linux进程+IO缓冲区机制

从一道面试题分析Linux进程+IO缓冲区机制

2013-10-01 21:10:34 3726 1

原创 使用waveOutPrepareHeader函数时特别注意,参数LPWAVEHDR pwh不能用保存在栈变量

今日个用waveOut系列函数播放wav文件时,发现老接收不到MM_WOM_DONE消息。调试了好久,发现是我在调用waveOutPrepareHeader函数时第二个参数LPWAVEHDR pwh用的是栈中的自动变量。函数运行完后pwh结构也没了,所以就再也收不到MM_WOM_DONE消息了。改为new一个WAVEHDR结构变量后,终于能收到MM_WOM_DONE消息了。原因是因为这个参数时一个

2013-09-30 23:35:07 2540

原创 C语言变量类型隐式转换小陷阱

int型变量可以直接和unsigned int 比较大小吗?不可以。 问题描叙:这个问题是我在写kmp算法时遇到的。int Index_KMP(char *S, char *T, int pos){ int next[strlen(T)]; get_next(T,next); int len = strlen(S);

2013-09-20 14:26:37 2213

原创 C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)

来源:据说是某一年某个公司的面试题题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很简单,但是不能用循环和条件判断语句。但是理论上所有的递归都可以转化为循环,那是否可以用递归代替循环呢?照着这个思路走下去,貌似可以。可是用递归的话,递归怎么终止呢?这就得在return语句

2013-09-20 10:06:41 5625 4

原创 《Head First Python》学习笔记 01

今天学到了Python知识。Python3提供了70多个内建函数,这是Python“功能齐全”的观点:Python已经包含足够多的内置功能,使你能完成大多数工作,而不必依赖第三方代码。打印函数:print(),和Python2不同Python3中的print函数必须加括号才能使用。求列表或字符从或者字典的长度:len()判断一个变量是否为某一类型:isins

2013-07-13 19:57:22 1512

Java 8函数式编程

高清原版。图灵社区的电子书没有采用专有客 户端,您可以在任意设备上,用自 己喜欢的浏览器和PDF阅读器进行 阅读。 但您购买的电子书仅供您个人使 用,未经授权,不得进行传播。 我们愿意相信读者具有这样的良知 和觉悟,与我们共同保护知识产 权。 如果购买者有侵权行为,我们可能 对该用户实施包括但不限于关闭该 帐号等维权措施,并可能追究法律 责任。

2019-05-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除