暂无个人介绍
安装epel 源 yum -y install epel-release 加快yun速度 yum -y install yum-plugin-fastestmirror 安装bash-completion yum -y install bash-completion 立即生效 source /etc/profile.
一、check_apt 作用:debain相关系统的更新机制检查 update更新软件列表信息,包括版本,依赖关系等 upgrade在不改变现有软件设置的基础上更新软件 dist-upgrade会改变配置文件,改变旧的依赖关系 语法:check_apt [[-d|-u|-U]opts] [-n] [-t timeout] >#check_apt --help //查看具体使用说明 -d opts:--dist-upgrade=OPTS:执行dist-upgrade升级。
unsafe,顾名思义,是不安全的,Go定义这个包名也是这个意思,让我们尽可能的不要使用它,如果你使用它,看到了这个名字,也会想到尽可能的不要使用它,或者更小心的使用它。 虽然这个包不安全,但是它也有它的优势,那就是可以绕过Go的内存安全机制,直接对内存进行读写,所以有时候因为性能的需要,会冒一些风险使用该包,对内存进行操作。
在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struct类型相互转换的例子。 JSON字符串对象转换 func main() { var u User h:=`{"name":"张三","age":15}` err:=json.
和Java语言一样,Go也实现运行时反射,这为我们提供一种可以在运行时操作任意类型对象的能力。比如我们可以查看一个接口变量的具体类型,看看一个结构体有多少字段,如何修改某个字段的值等。 TypeOf和ValueOf 在Go的反射定义中,任何接口都会由两部分组成的,一个是接口的具体类型,一个是具体类型对应的值。
调试是一种技能,不限于我们说的debug,这只是其中的一种,这是可以打断点的调试,除此之外,还有打印输出、日志记录、单元测试,这都可以称之为调试程序的手段。 打印输出 打印输出是一种比较传统的调试手段,我们可以把我们需要了解的变量值,执行的步骤等打印出来,来证明我们的猜测,以便解决问题。
什么是基准测试 基准测试,是一种测试代码性能的方法,比如你有多种不同的方案,都可以解决问题,那么到底是那种方案性能更好呢?这时候基准测试就派上用场了。 基准测试主要是通过测试CPU和内存的效率问题,来评估被测试代码的性能,进而找到更好的解决方案。
什么是单元测试 相信我们做程序员的,对单元测试都不陌生。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量。 大多数的单元测试,都是对某一个函数方法进行测试,以尽可能的保证没有问题或者问题可被我们预知。
方法一:禁用该可预测命名规则 1、对于这一点,你可以在启动时传递“net.ifnames=0 biosdevname=0 ”的内核参数。这是通过编辑/etc/default/grub并加入“net.ifnames=0 biosdevname=0 ”到GRUBCMDLINELINUX变量来实现的。
baby神网易博客 baby神新浪博客 baby神新浪微博 baby神_github
简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器。但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题。
豆瓣pip源地址 https://pypi.doubanio.com 之前的pypi.douban.com 现已修改为 pypi.doubanio.com 阿里云pip源地址 https://mirrors.
原理:将自己备份的wim镜像文件替换原版iso的wim镜像文件。 1、正常安装系统,安装所需软件(过程略) 2、下载dism++工具,链接地址:http://www.chuyu.me/zh-Hans/index.
FTP服务的主动模式和被动模式 在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些: 主动模式: 主动模式工作过程: 1. 客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接 2. 客户端开始监听 N+1端口; 3. 服务端会主动以20端口连接到客户端的N+1端口。
FTP服务器 主程序:/usr/sbin/vsftpd 用户控制列表文件 /etc/vsftpd/ftpusers /etc/vsftpd/user_list 主配置文件 /etc/vsftpd/vsftpd.
准备工作: 1、确认本机sshd的配置文件(需要root权限),默认都是允许的,如果不是请修改 # cat /etc/ssh/sshd_config 找到以下内容,并去掉注释符”#“ RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .
CentOS 6 1、编辑/boot/grub/grub.conf在以下行结尾加上ipv6.disable=1 kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=5bd71e9a-7b05-45f8-8928-ce88a2921fa0 rd_NO_LUKS rd_NO_LVM LANG=en_US.
1、安装需要的包 yum -y install gcc* make perl pam pam-devel zlib-devel tcp_wrappers-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel read...
iptables的日志(log)由syslogd纪录和管理。初始存放在 /var/log/messages里面。自动采取循环纪录(rotation)的方式记录。但是由于混在 messages中,对于管理和监视产生了不便。
1、导入密钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 2、添加库 # Centos 7 rpm -Uvh http://www.
通过第三方库qqbot来实现,pip install qqbot 直接安装就行 脚本直接运行会弹出二维码,手机qq扫码登录即可 通过#weather# city 来查询天气预报 通过#study# key value 来进行学习,以json格式存储在指定文件 第一次运行没有这个js...
控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。 什么是WaitGroup WaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。
输入和输出 Go Writer 和 Reader接口的设计遵循了Unix的输入和输出,一个程序的输出可以是另外一个程序的输入。他们的功能单一并且纯粹,这样就可以非常容易的编写程序代码,又可以通过组合的概念,让我们的程序做更多的事情。
在我们开发程序后,如果有一些问题需要对程序进行调试的时候,日志是必不可少的,这是我们分析程序问题常用的手段。 日志使用 日志分析,就是根据输出的日志信息,分析挖掘可能的问题,我们使用fmt.Println系列函数也可以达到目的,因为它们也可以把我们需要的信息输出到终端或者其他文件中。
前面的有篇文章在讲资源竞争的时候,提到了互斥锁。互斥锁的根本就是当一个goroutine访问的时候,其他goroutine都不能访问,这样肯定保证了资源的同步,避免了竞争,不过也降低了性能。
针对这个资源池管理的一步步都实现了,而且做了详细的讲解,下面就看下整个示例代码,方便理解。 package commonimport ( "errors" "io" "sync" "log")//一个安全的资源池,被管理的资源必须都实现io.
这篇文章演示使用有缓冲的通道实现一个资源池,这个资源池可以管理在任意多个goroutine之间共享的资源,比如网络连接、数据库连接等,我们在数据库操作的时候,比较常见的就是数据连接池,也可以基于我们实现的资源池来实现。
这篇通过一个例子,演示使用通道来监控程序的执行时间,生命周期,甚至终止程序等。我们这个程序叫runner,我们可以称之为执行者,它可以在后台执行任何任务,而且我们还可以控制这个执行者,比如强制终止它等。
上一篇我们讲的原子函数和互斥锁,都可以保证共享数据的读写。但是呢,它们还是有点复杂,而且影响性能。对此,Go又为我们提供了一种工具,这就是通道。 所以在多个goroutine并发中,我们不仅可以通过原子函数和互斥锁保证对共享资源的安全访问,消除竞争的状态,还可以通过使用通道,在多个goroutine发送和接受共享的数据,达到数据同步的目的。
并发本身并不复杂,但是因为有了资源竞争的问题,就使得我们开发出好的并发程序变得复杂起来,因为会引起很多莫名其妙的问题。 package main import ( "fmt" "runtime" "sync" ) var ( count int32 wg sync.
在Go语言中,我们很多操作都是通过go命令进行的,比如我们要执行go文件的编译,就需要使用go build命令,除了build命令之外,还有很多常用的命令,这一次我们就统一进行介绍,对常用命令有一个了解,这样我们就可以更容易地开发我们的Go程序了。
对于协作开发或者代码共享来说,文档是一个可以帮助开发者快速了解以及使用这些代码的一个教程,文档越全面、越详细,入门越快,效率也会更高。 在Go语言中,Go为我们提供了快速生成文档以及查看文档的工具,让我们可以很容易地编写查看文档。
在谈goroutine之前,我们先谈谈并发和并行。 一般的程序,如果没有特别要求的话,是顺序执行的,这样的程序也容易编写维护。但是随着科技的发展、业务的演进,我们不得不变写可以并行的程序,因为这样有很多好处。
Go的标志符,这个翻译觉得怪怪的,不过还是按这个起了标题,可以理解为Go的变量、类型、字段等。这里的可见性,也就是说那些方法、函数、类型或者变量字段的可见性。比如哪些方法不想让另外一个包访问,我们就可以把它们声明为非公开的;如果需要被另外一个包访问,就可以声明为公开的,和Java语言里的作用域类似。
嵌入类型,或者嵌套类型,这是一种可以把已有的类型声明在新的类型里的一种方式,这种功能对代码复用非常重要。 在其他语言中,有继承可以做同样的事情,但是在Go语言中,没有继承的概念。Go提倡的代码复用的方式是组合,所以这也是嵌入类型的意义所在。
接口是一种约定,它是一个抽象的类型,和我们见到的具体的类型如int、map、slice等不一样。具体的类型,我们可以知道它是什么,并且可以知道可以用它做什么;但是接口不一样,接口是抽象的,它只有一组接口方法,我们并不知道它的内部实现,所以我们不知道接口是什么,但是我们知道可以利用它提供的方法做什么。
迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代器特别适合于遍历大文件或无限集合等,因为我们不用一次性将它们存储在内存中。
Go语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。 提前知道值的类型的好处有很多,比如编译器可以合理地使用这些值,可以进一步优化代码,提高执行的效率,减少bug等。
正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器、匿名函数(lambda)、函数式编程等高阶技术。 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了。
所有的这些技巧都能帮助你压缩代码并且优化运行。此外,你可以在日常工作中很容易地在真实项目中使用他们。 贴士#1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x, y = 10, 20 print(x, y) x, y = y, x print(x, y) #1 (10, 20) #2 (20, 10) 赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 和 。
Map是一种无序的键值对的集合,它主要通过Key来快速检索数据,Go语言中用它来提供哈希表的功能。 Map是一种数据结构,它是一个集合,用于存储一系列无序的键值对。它是基于键存储的,键就像一个索引一样,这也是Map强大的地方。
什么是 Go 语言中的包 我们在使用其他语言,比如 Java ,是有包的概念的。它是 Java 语言中组织我们的 Java 文件的一个概念,比如java.lang这个包,它里面有很多我们常用的类,比如 String。
切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便地管理和使用数据集合。 内部实现 切片是基于数组实现的,它的底层是数组,它自己本身非常小,可以理解为对底层数组的抽象。
数组,是用来存储集合数据的。这种场景非常多,我们编码的过程中,都少不了要读取或者存储数据。当然除了数组之外,我们还有切片、Map映射等数据结构可以帮我们存储数据,但是数组是它们的基础。 内部实现 要想更清晰地了解数组,我们先得了解它的内部实现。
itertools库 迭代器(生成器)在Python中是一种很常用也很好用的数据结构,比起列表(list)来说,迭代器最大的优势就是延迟计算,按需使用,从而提高开发体验和运行效率,以至于在Python 3中map,filter等操作返回的不再是列表而是迭代器。
str='python String function' 生成字符串变量str='python String function'字符串长度获取:len(str)例:print '%s length=%d' % (str,len(str))字母处理全部大写:str.
多台设备批量执行ssh命令,目前是串行,后期会加入多线程实现并行,直接上源码 注意不能执行top等动态命令 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'babyshen' __version__ = '1.
本文简单介绍如何使用 Python 的 pyautogui 模块实现鼠标的自动移动以及键盘的自行输入. 该模块不是 Python 自带的, 因此执行以下命令进行安装 # pyautogui模块依赖image模块,没有image会报ImportError: No module name...
Threading模块 python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补,为了不浪费你和时间,现在介绍更高级的threading模块。
简介 正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式 'hello' 可以匹配字符串 'hello'。