2015-10-25
LeetCode第1题:Two Sum总结

万事开头难,算是开始刷leetcode了吧,不知道能不能坚持下去!在这放下一句,不坚持是小狗!——jc,15.10.25

第一题能就是一个纯属熟悉环境,从网上找了python版答案走了一遍流程:

题目

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2

python[1]

class Solution:
    # @return a tuple, (index1, index2)
    def twoSum(self, num, target):
        dictMap = {}
        for index, value in enumerate(num):
            if target - value in dictMap:
                return dictMap[target - value] + 1, index + 1
            dictMap[value] = index

Read More
 2015-10-24
运用jekyll+Nginx+docker搭建博客的总结

博客由来

今年暑假的时候就听说github上可以免费搭建静态博客。当时虽然看了看,但还是因为服务器、网页等知识欠缺太多,几次想动手都没有坚持下去。

最近看了看Nginx的有关知识,算是对http服务器的搭建有了个大概了解。后来看到了docker,就买了《第一本docker书》这本书看了看,发现上边有些例子写的挺不错,其中就有jekyll+Apache搭建静态博客的例子,照着做一遍后,我决定用Nginx作服务器,用docker做载体,用jekyll作为网站生成工具,将这个静态博客搭建在阿里云服务器上。

于是这个博客最终在10月18日时算是初步搭建成功了,现在写这篇总结应该是算有点晚,但是由于很多细节我还欠缺很多,而且搭建博客所涉及的方面太多,很多部分我只是照搬他人成果,所以关于一些细节问题以后还要深入学习,然后再总结出来,请大家和自己期待~

资源和费用

服务器:

  • 我用了最便宜的那种阿里云服务器,但是搭这个博客绰绰有余。
  • 价格:学生优惠的9.9元/月。

域名:

  • 万网申请的域名(貌似和阿里云并在一起了,所以做域名映射非常友好简单)
  • 价格:买了一年,5元/年(但是再续费就贵多了)

代码托管(不是必要的):

  • 用于存我的博客目录,包括这个小的静态网页的所有的一切。
  • 价格:免费(github student pack)

Read More
 2015-10-08
折腾Docker的一些吐槽点

第一次构建Docker镜像,想照着书弄个jekyll的镜像玩玩,结果两天了,到现在还没成功。记录下国内环境实践和书本上的不同。。。

首先官方的apt-get源太慢了

要换成国内的速度还可以接受一点:(原文链接)

做法:

Dockerfile 中 RUN apt-get update 前添加一句:

RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubuntu\//http:\/\/mirrors\.163\.com\/ubuntu\//g' /etc/apt/sources.list

gem国内源貌似也不行

(原文链接)

做法:

Dockerfile中添加:

RUN gem sources --remove http://rubygems.org/
RUN gem sources -a https://ruby.taobao.org/

Read More
 2015-09-27
python自动化运维笔记(1)----psutil

环境:ubuntu 14.04 32bit

工具:psutil

对应的shell工具:ps  top  lsof  netstat  ifconfig  who 
df kill  nice  free  ionice  iostat  iotop  uptime  pidof  
tty  taskset  pmap

安装:

采用pip可以安装pip install psutil。(注意需要安装python-dev: sudo apt-get install python-dev)

用法举例:

获取信息

cpu信息:
psutil.cpu_times() #cpu完整信息
psutil.cpu_count(logical=False) #cpu物理个数

logical默认为True即cpu逻辑个数

内存信息:
mem = psutil.virtual_memory()

Read More
 2015-09-27
python自动化运维笔记(2)----dnspython

准备工作

  • 环境:Ubuntu 14.04 32bit
  • 工具:dnspython 对应的shell工具:nslookup dig等

  • dns预备知识: 常用资源记录RR(Resource Records)类型 A记录: 主机名--> IP地址 MX记录: 定义邮件服务器域名 CNAME: 域名间映射 PTR: IP地址 -->主机名(反向解析)

    更详细介绍参考博文《 [DNS]常见资源记录定义(Resource Record)

用法举例

  • 查询A记录
import dns.resolver

domain = raw_input('input an domain:')
A = dns.resolver.query(domain, 'A')

Read More
 2014-04-09
只用OS X系统实现A8嵌入式试验箱(linux)的交叉编译

连接

  • 以电脑为终端,采用基于PL2302芯片的串口转USB线链接电脑和试验箱,MAC OS X系统需要安装芯片的驱动(文件名md_PL2303_MacOSX10_6_dmg_v1_4_0.zip)通过文件内说明文档进行相关设置,然后可以连接成功。
  • Mac终端下用screen命令实现试验箱终端功能. screen /dev/tty.usbserial 115200 >注意拔下USB时要用A(ctrl+A)+k命令退出screen,否则会导致OS X 死机(不明原因)。如果没有退出screen直接将终端窗口关闭了,用命令ps|grep tty查找相应进程进程ID然后结束掉它(kill PID),这样再拔出USB就不会死机了。

交叉编译

  • 需要安装arm-none-linux-gnueabi-gcc,相当于linux的arm-linux-gcc。使用方法类似gcc. arm-none-linux-gnueabi-gcc test.c -o test

ftp通信传输文件

  • 通过以太网口连接试验箱和mac,终端修改试验箱ipconfig eth0 -i 192.168.1.101 -m 255.255.255.0 -g 192.168.1.1然后执service network restart、Mac自身网络偏好设置修改两者IP使其在同一区段(192.168.1.102
  • 在Mac终端下用ftp命令ftp 192.168.1.101登陆试验箱linux,用户名anonymous(匿名),密码任意。

    put命令具体使用方法可以参考博文《Linux 终端访问 FTP 及 上传下载 文件

  • 上传文件put test test

在终端上执行程序

  • 增加可权限chmod +x test
  • 执行:./test

Read More
 2015-12-10
Galileo开发板+opencv+微信公众平台实现简单的物联网家庭监控(2)

紧接上篇文章(《Galileo开发板+微信公众平台实现简单的物联网家庭监控》( http://blog.jcix.top/2015-11-27/galileo_wechat/ ) ),以下功能做了改进:实现了Galileo开发板上用USB摄像头+python版opencv监控并通过微信公众平台进行异常报警的功能。通过connman实现了wifi网络的自动连接和随时修改功能。通过post到服务...

Read More
 2015-12-10
Intel Galileo开发版PCI-e无线网卡wifi配置

由于网上很多配置wifi的方式在我的伽利略开发板上都行不通,最后终于找到这个可以用的“冷门”办法:系统配置开发板: Intel Galileo gen2无线网卡:PCI-e intel wifi link 5100开发板系统: EGLIBC based Linux(download)所用工具硬件:usb无线网卡或者pci-e接口的无线网卡。(注意如果你用的是和我一样的pci-e网卡,注意顺便...

Read More
 2015-11-27
Galileo开发板+微信公众平台实现简单的物联网家庭监控

上次写的博客,介绍了下刚拿到galileo开发板的时候如何进行折腾。上次折腾完后,因为我发现galileo本身和一个装着linux的arduino/pc一样,那么用它来实现一些物联网应用会比较简单,又赶上本学期的工程设计课作业,所以初步实现了一个能用微信监测室内温度和拍摄室内照片的小型物联网系统。参考:《鼓捣Galileo开发板的一些吐槽》( http://blog.jcix.top/201...

Read More
 2015-11-04
鼓捣Galileo开发板的一些吐槽

这几天折腾伽利略开发板,写下一些吐槽,以便以后再看到这篇博客,仍然能记起这些值得吐槽的地方。。。也希望看到这篇博客的人能够因此少些吐槽( ╯□╰ )。。网上其实是有不少资源的,但是相对其他更热门的板子,显然找资料并不是和喝白开水一样简单,由于我表达能力较差,所以准备采用简述+大量站外链接的形式,给出一个希望不会让人误入歧途的引导。。。介绍Intel Galileo(点击查看中文官网),是一个...

Read More
 2014-04-09
只用OS X系统实现A8嵌入式试验箱(linux)的交叉编译

连接以电脑为终端,采用基于PL2302芯片的串口转USB线链接电脑和试验箱,MAC OS X系统需要安装芯片的驱动(文件名md_PL2303_MacOSX10_6_dmg_v1_4_0.zip)通过文件内说明文档进行相关设置,然后可以连接成功。Mac终端下用screen命令实现试验箱终端功能.screen /dev/tty.usbserial 115200>注意拔下USB时要用A(ct...

Read More
 2016-11-12
两台服务器间SSH或SCP实现无密码登录或文件传输

最近由于需要实现从一个客户端电脑定时远程上传图片到阿里云服务器的功能,需要实现SCP的免密码传输。所以查资料并做了一个记录,希望对大家有帮助。步骤1.Client上某用户执行ssh-keygen命令,生成建立安全信任关系的证书ssh-keygen -b 1024 -t rsa这里如果~/.ssh/id_rsa.pub 已经存在,说明以前已经生成过,可以直接跳过这步。2.将公钥证书id_rsa...

Read More
 2017-07-25
Steam是如何吸走我们的钱的(三)----从红警2说起

第一篇和第二篇文章中,我们分别从差异化定价和虚拟交易两个方面揭露了一下Steam的坑钱大法。今天要讲一下游戏内容了,毕竟人们来Steam主要是想玩游戏的。任何一款游戏发售之前,开发商都应该是设定好了游戏道具、游戏方式、各种参数等一切正常游戏进行需要的游戏内容。但是随着游戏时间加长,总有一天,游戏内容被玩家慢慢“消费”完,如果能减慢游戏内容的消耗时间,就能延长一款游戏的寿命,使游戏获得更多人认...

Read More
 2017-06-29
Steam是如何吸走我们的钱的(二)

上次提到了Steam通过差异化的游戏定价和频繁的打折活动,力图让最多的人以自己能接受的最高价格买走一个游戏,以此来走了最多的钱。本节我们将继续说一下集换式卡牌和社区市场这两种吸钱大法。集换式卡牌摘自百度百科集换式卡牌游戏,简称CCG(Collectible card game)或TCG(Trading card game)。顾名思义,此类游戏是以收集卡牌为基础的,游戏者需要通过购买随机包装的...

Read More
 2017-06-28
Steam是如何吸走我们的钱的(一)

首先,我认为这个问题应该从商业运营或经济学的角度来更加专业地解释,但作为一个资深的、从小就被各种电脑游戏坑钱的低端手残玩家,我还是要揭漏出steam的部分坑钱之道,以方便我们更好地被坑。非常希望各位有兴趣和相关专业的同学来和我讨论啊~什么是Steam摘自百度百科:Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一...

Read More
 2016-12-14
推荐一些简洁好用的Chrome插件

最近在实验室学习,chrome竟然称为了我使用的主要工具,不论是看博客或是看一些文档、论坛都离不开浏览器。chrome浏览器非常好用,通过登录google账号,可以同步设置、书签甚至插件。这里推荐几个我用的Chrome插件,能提高工作效率,大家根据名字都能搜到。Octotree可以在显示github网页左侧显示类似工程目录的侧边栏。OneTab可以一键将暂时没看完的标签收集起来,有时间(内存...

Read More
 2015-10-24
运用jekyll+Nginx+docker搭建博客的总结

博客由来今年暑假的时候就听说github上可以免费搭建静态博客。当时虽然看了看,但还是因为服务器、网页等知识欠缺太多,几次想动手都没有坚持下去。最近看了看Nginx的有关知识,算是对http服务器的搭建有了个大概了解。后来看到了docker,就买了《第一本docker书》这本书看了看,发现上边有些例子写的挺不错,其中就有jekyll+Apache搭建静态博客的例子,照着做一遍后,我决定用Ng...

Read More
 2015-10-08
折腾Docker的一些吐槽点

第一次构建Docker镜像,想照着书弄个jekyll的镜像玩玩,结果两天了,到现在还没成功。记录下国内环境实践和书本上的不同。。。首先官方的apt-get源太慢了要换成国内的速度还可以接受一点:(原文链接)做法:Dockerfile 中 RUN apt-get update 前添加一句:RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubun...

Read More
 2015-11-09
LeetCode第14题:Longest Common Prefix总结

题目Write a function to find the longest common prefix string amongst an array of strings.大意: 写一个函数,找到一组字符串的公共最长前缀。思路我的:定义一个不断更新的变量,存储当前的最长前缀,循环时加以一定的优化,比如如果下一个字符串比当前的前缀还长,那么可以截断前缀后在进行比较。参考的:这道题在disc...

Read More
 2015-11-01
LeetCode第8题:String to Integer (atoi)总结

题目:Implement atoi to convert a string to an integer.大意:就是手动实现C语言里常用的atoi函数。。。思路和吐槽:我最讨厌这种了,完全的信息不对称。。要讨论的情况只有不断提交才知道出题人什么意思,我怎么知道你要求的是什么,况且这是算法题又不是工程题。。。。幸亏这道题比较简单,多试几次也不太费时。代码Pythonclass Solution(...

Read More
 2017-03-30
在awk中如何使用或赋值shell的变量

写shell脚本处理文本的时候,经常用到awk来配合shell命令。但是awk的大括号中和shell貌似是两个世界。本文只介绍最容易理解的方法(作者水平有限,复杂的以后可能补充),来实现awk对shell变量的使用和更改。如果我们将awk看成变成语言中的函数,或者一个封装,那么要使用或者修改外部的变量,其实就是输入参数和输出返回值的问题。对于使用shell变量,其实就是shell变量怎么作为...

Read More
 2016-11-16
Shell脚本中进行多行注释的方法

我发现。。shell脚本貌似不像C或者Python一样自带注释语法,不过拐弯抹角还是有一些方法的。。囧方法1:利用逻辑语句利用了逻辑语句的执行顺序,缺点是注释中不能出现括号,否则会报错!###逻辑或前如果为真,后边的语句块自动不执行#1:||{ 注释内容...}#2((1))||{ 注释内容...}#3true||{ 注释内容...}###逻辑与前如果为假,后边的语句块自动不执行#4((0)...

Read More
 2016-04-02
Jc的sed简单入门/sed命令总结

这是我学习sed的一个总结,只限于自己和比我水平低(就是没接触过)的同学看。。。除了参考资料,讲解也包括很大成分的个人理解,如果发现错误,希望大家可以提醒我及时更正,谢谢~!sed概述sed是一个流编辑器,更准确的说是一个行编辑器,就是sed处理文本处理命令用于逐行处理文本中的文字。这是sed命令的格式: sed [options] [commands] [input-file]就是说sed...

Read More
 2016-03-29
Jc的常用Git命令记录

常用git,做个记录,方便查询,利人利己,如有错误,欢迎指正~创建仓库git init 创建仓库git clone xxx.git(远程库的地址) 克隆一个远程仓库git remote add origin xxx.git(远程库的地址) 指定一个远程仓库地址,命名为origin提交更改git rm file_name 删除文件git add file_name 添加文件到仓库暂存区(in...

Read More
 2017-04-06
OVERCOMMITTING WITH KVM 翻译:KVM虚拟机对硬件资源的超量分配

译者的废话这是Red Hat RHEL 7文档中关于KVM虚拟机超量分配的说明文档,这里说的KVM,应该就是适用QEMU管理的KVM虚拟机的,因为在启动QEMU虚拟机的时候,只要-smp N和-m N参数分别就可以指定虚拟机的vCPU数和内存数,我实际实验发现,它们是都可以超过实际的物理CPU核数和内存大小的。硬件资源超量分配,说的好听是节约资源,但是资源的分配超的不切实际,也就是VPS超售...

Read More
 2016-12-30
Qemu KVM 虚拟机通过虚拟网桥实现桥接和NAT的实验

系统概况:host 和 guest 都是用的 Ubuntu Server 16.04系统。我的 host 机上有三块网卡2块有线网卡(接口 enp1s0 和 enp3s0)和1个无线网卡(接口 wls2s0)。我的 host 机通过无线网卡连在一个路由器上,并因此能够连接到互联网,所在的网段是192.168.3.0\24,ip 固定为192.168.3.5。其他两块有线网卡没有连接。实验0:...

Read More
 2016-11-02
qemu/qemu-kvm/qemu-system-x86_64/qemu-x86_64命令的区别?

刚想玩玩kvm,结果分不清这几个命令。。搜了一下,记录下来,希望对大家有帮助。摘抄1在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64 启动命令中增加参数 --enable-kvm参数使能即可。(http://blog.csdn.n...

Read More
 2017-04-16
MySQL InnoDB透明页压缩的简单分析

从MySQL 5.7版本开始,MySQL不仅支持原有的压缩表格式(Table Compression),还支持一种称为透明页压缩的特性(Transparent Page Compression)。通过阅资料和源码,我对这个特性有了一定的了解。以下我将从它的使用方法、实现原理等方面对它进行简单分析,并同压缩表格式进行一些对比。1. 开启方法官方文档对于透明页压缩的特性的说明仅仅一页,主要说明了...

Read More
 2017-03-16
Optimizing InnoDB Disk I/O MySQL文档翻译:优化InnoDB磁盘I/O

原文:8.5.8 Optimizing InnoDB Disk I/O这页感觉比较重要,翻译一下。。如果你遵循了数据库设计和SQL操作调优的最佳实践,但是数据库仍然由于磁盘I/O负载过重而运行慢,请考虑这些磁盘I/O优化方法。如果Unix top工具或Windows任务管理器显示你的工作负载的CPU使用率百分比小于70%,那么你的数据库系统瓶颈在于磁盘。增加缓冲池(buffer pool)的...

Read More
 2017-03-16
Optimizing Disk I/O MySQL文档翻译:优化磁盘I/O

原文: MySQL 5.7 Reference Manual — 9.12.2 Optimizing Disk I/O本节将介绍当你决定更多更快的存储硬件设备投入到数据库服务器时,应该如何配置它们。 软件配置上优化InnoDB以提高I / O性能的信息,请参见第9.5.8节“优化InnoDB磁盘I/O”。磁盘寻道是一个巨大的性能瓶颈,当数据量剧增到使得缓存命中率减小时,这个问题会更为明显。对...

Read More
 2017-05-07
FAST 16论文sRoute:treating the Storage Stack Like a Network学习记录

论文原文PDF: sRoute: treating the Storage Stack Like a Network出处:USENIX FAST 161. 概述数据中心中,数据从一个应用最终到达存储服务器不仅要经过网络,还要经过很多的存储层次,这些层次可以称为存储栈(Storage stack)。对于数据中心中一个较为复杂的应用,一个IO请求甚至要经过应用缓存层、虚拟机操作系统(Guest ...

Read More