7 行者小朱

尚未进行身份认证

stay hungry,stay foolish

等级
TA的排名 5k+

日志规范建设

一、日志1、日志的作用日志记录用户操作、系统运行状态,好的日志系统可以帮助研发和运维:掌握线上服务运行状态; 快速定位线上问题; 发现系统瓶颈; 服务报警; 挖掘数据价值; ……2、日志级别基本级别(由低到高):DEBUG:The DEBUG Level designates fine-grained informational events that are mo...

2019-12-10 16:19:12

Golang对自定义类型排序

在实际项目中用到对结构按结构体中的某个字段进行排序,在网上查到一个比较好的办法,mark一下。首先golang的sort包提供了基本的排序,包括插入排序(insertionSort)、归并排序(symMerge)、堆排序(heapSort)和快速排序(quickSort)。其实现如下func Sort(data Interface) { // Switch to heapsort...

2018-09-04 10:28:48

Python服务端开发

之前的爬虫https://blog.csdn.net/column/details/17218.html几篇文章为Python实现客户端以Get/Post等方法请求服务。最近用Python写了一个服务,在此总结一下知识点:1、Python代码中执行shell命令;2、白名单设置---通过查看客户端ip是否在服务端的list中存在;3、日志分割---引入loggin类实现日志记录,引入TimedRo...

2018-05-03 20:25:57

Python之项目路径的引入

        在Python中,通过安装anaconda就可以直接引用大部分工具包了,通过IDE也不用担心引用路径的问题。但如果是引入自定义的包、项目等,路径问题稍须转弯。        下图是我Demo的项目层次结构:Demo名称为---ImportPath;一级目录下有Main.py、OuterFunc.py和InFile文件夹;InFile文件夹下有InnerFunc.py;       ...

2018-05-03 20:11:42

获取Python多线程的返回值

用python多线程时,遇到需要获取每个线程返回值的问题,经查资料学习总结如下:Python中使用线程有两种方式:用方法包装线程和用类包装线程方法一、用方法包装线程thread.start_new_thread(function,args[,kwargs])-function表示线程需要执行的函数-args表示传入的参数#coding:utf-8importthread,t...

2018-04-21 18:39:43

Go环境变量配置及系统配置文件的区别

趁周末总结一下对学习和使用go的环境变量的理解。一、Go环境变量        在学习和使用go的第一步便是下载安装并配置好环境,下载安装过程直接参见go官网指导,这里主要说一下对要配置的环境变量的理解。(1)GOROOT:表示go在电脑上的安装位置,如我go的安装位置在/usr/local/go,我在配置文件中对应配置GOROOT=/usr/local/go。(2)GOBIN

2018-01-13 13:36:25

Go---channel实现生产者消费者

一、无缓冲区 package main// 无缓冲的channelimport ( "fmt" "time")func produce(ch chan<- int) { for i := 0; i < 10; i++ { ch <- i fmt.Println("Send:", i) }}func consumer(ch <-c...

2017-12-28 21:26:11

Redis中的事务

事务同命令一样,都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。一、Redis事务的实现        Redis通过multi、exec、watch等命令来实现事务功能,Redis中一个事务从开始到结束包含三个阶段:事务开始、命令入队、事务执行。其中multi命令标志着事务开始,exec命令标志着事务执行,期间所有命令都会存放到事务队列中。在redis.h/r

2017-11-29 18:41:19

Redis发布与订阅功能

发布/订阅”功能包含两种角色:发布者和订阅者。Redis的发布与订阅功能由publish、subscribe、psubscribe等命令组成。通过执行publish命令可以发布消息;通过执行subscribe命令,客户端可以订阅一个或多个频道;通过执行psubscribe命令,客户端可以订阅一个或多个模式。一、发布与订阅频道        如图所示,频道的发布与订阅功能。客户端A、B、C都

2017-11-29 18:11:10

Redis的集群结构

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)进行数据共享,并提供复制和故障转移功能。一、节点        同其他分布式的集群一样,Redis集群也是由多个相互独立的节点组成的,通过将各个相互独立的节点连接起来,构成一个包含多个节点的集群。通过CLUSTER MEET 命令,将指定节点添加当前节点所在的集群:

2017-11-29 16:49:59

Redis的监控功能

Redis通过引入一个或多个Sentinel实例组成的Sentinel系统以监视任意多个服务器,当主服务器进入下线状态时自动将从服务器升级为新的主服务器,然后由新服务器代替已下线的主服务器处理命令请求,达到提供高可用性的解决方案。一、监控功能        Sentinel本质上是一个运行在特殊模式下的Redis服务器,所以初始化时不会载入RDB文件或者AOF文件,而是创建连向被监视主服务

2017-11-29 16:10:59

Redis的复制功能

Redis中,通过slaveof命令或者设置slaveof选项,让一个服务器去复制另一个服务器,从而形成主从服务器关系,具有主从关系的服务器数据库状态一致。Redis的复制功能分两个步骤实现:同步(sync)和命令传播(command propagate)。同步操作是将从服务器数据库状态更新至主服务器数据库当前所处状态;命令传播则用于主服务器的数据库状态被修改导致主从服务器的数据库状态

2017-11-29 11:54:31

Redis中的事件

Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件和时间事件。一、文件事件        Redis服务器通过套接字与客户端进行连接,文件事件就是服务器对套接字操作的抽象。        文件事件是由文件事件处理器处理的。文件事件处理器以单线程方式运行,使用I/O多路复用程序监听多个套接字(既实现了高性能的网络通信模型又可以很好地与Redis服务器中其他单线程方式运行

2017-11-28 16:30:11

Redis数据持久化

由于Redis是内存数据库,一旦服务器进程退出,服务器中的数据库状态也会消失。为解决这个问题,Redis提供了RDB快照形式、AOF日志形式两种持久化方式,将内存中的数据保存到磁盘中,以免数据意外丢失。一、RDB持久化        RDB持久化就是将服务器某个时间点上的数据库状态以快照形式保存到一个二进制文件中,在Redis服务器重新启动时可以自动载入RDB文件,还原数据库状态。有两个R

2017-11-28 15:20:02

Redis键的生存时间和过期时间

Redis作为内存数据库,和memcached一样提供了设置键的生存时间和过期时间的功能。通过expire命令或者pexpire命令实现秒级或者毫秒级的生存时间的设置功能:EXPIRE : 将键的生存时间设为 ttl 秒PEXPIRE :将键的生存时间设为 ttl 毫秒EXPIREAT :将键的过期时间设为 timestamp 所指定的秒数时间戳PEXPIREAT : 将

2017-11-28 11:25:46

Redis数据库

在上一节介绍了Redis的对象系统:String、List、Hash、Set、ZSet,这些对象是如何组成Redis数据库与用户所见的数据库映射的呢?一、 Redis服务器        在redis.h/redisServer结构中有关系数据库的两个属性:redisDb和dbnum,每个redisDb结构就代表着一个数据库,dbnum则表示Redis服务器创建的数据库个数(默认为16个)

2017-11-28 10:51:23

Redis对象系统

在上一节学习Redis中的六种基础数据结构,但在Redis中并没有直接使用以上的数据结构实现键值对数据库,而是基于这些数据结构构建了一个对象系统:字符串对象(String)、列表对象(List)、哈希对象(Hash)、集合对象(Set)和有序集合对象(ZSet)。在Redis中每个对象都由一个redisObject结构表示:/* * Redis 对象 */typedef struct r

2017-11-27 18:28:36

Redis的六种数据结构

本节将对Redis底层的六种数据结构展开详述:简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表。一、简单动态字符串(SDS)        Redis基于C语言开发但并没有直接使用C语言传统的字符串,而是构建一种叫简单动态字符串(simple dynamic string,SDS)的抽象类型作为Redis默认的字符串表示。SDS不仅用来保存数据库中的字符串值,同时还用于实现缓冲区(b

2017-11-27 15:38:37

Kafka中的消息是否会丢失和重复消费

在之前的基础上,基本搞清楚了Kafka的机制及如何运用。这里思考一下:Kafka中的消息会不会丢失或重复消费呢?为什么呢?        要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费        1、消息发送         Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置

2017-11-21 16:10:26

Kafka的高级消费者与低级消费者

在Kafka实战章节,我们写的例子都是Kafka的高级消费实例,可以看到在消息消费者的程序中,我们只需要指定zookeeper、及消费群组的groupId即可实现从消息队列中消费消息,屏蔽了大量的底层细节:如消息的偏移量等信息都不在程序中维护。Kafka的高级消费实例,满足以下几点规则:(1)同一个消费群组中,如果线程数大于Topic分区数,那么一些线程永远接收不到消息;(2)同一个消

2017-11-20 12:08:03

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。