自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 日志规范建设

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

2019-12-10 16:19:12 39 0

原创 Golang对自定义类型排序

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

2018-09-04 10:28:48 2345 0

原创 Python服务端开发

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

2018-05-03 20:25:57 5806 0

原创 Python之项目路径的引入

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

2018-05-03 20:11:42 3370 0

原创 获取Python多线程的返回值

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

2018-04-21 18:39:43 15508 2

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

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

2018-01-13 13:36:25 2166 0

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

一、无缓冲区   package main // 无缓冲的channel import ( "fmt" "time" ) func produce(ch chan<- int) { for i := 0; i <...

2017-12-28 21:26:11 3372 1

原创 Redis中的事务

事务同命令一样,都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。 一、Redis事务的实现         Redis通过multi、exec、watch等命令来实现事务功能,Redis中一个事务从开始到结束包含三个阶段:事务开始、命令入队、事务执行。其中multi命令标志...

2017-11-29 18:41:19 634 0

原创 Redis发布与订阅功能

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

2017-11-29 18:11:10 1219 0

原创 Redis的集群结构

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

2017-11-29 16:49:59 477 0

原创 Redis的监控功能

Redis通过引入一个或多个Sentinel实例组成的Sentinel系统以监视任意多个服务器,当主服务器进入下线状态时自动将从服务器升级为新的主服务器,然后由新服务器代替已下线的主服务器处理命令请求,达到提供高可用性的解决方案。 一、监控功能         Sentinel本质上是一个运行在特...

2017-11-29 16:10:59 527 0

原创 Redis的复制功能

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

2017-11-29 11:54:31 385 0

原创 Redis中的事件

Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件和时间事件。 一、文件事件         Redis服务器通过套接字与客户端进行连接,文件事件就是服务器对套接字操作的抽象。         文件事件是由文件事件处理器处理的。文件事件处理器以单线程方式运行,使用I/O多路...

2017-11-28 16:30:11 550 0

原创 Redis数据持久化

由于Redis是内存数据库,一旦服务器进程退出,服务器中的数据库状态也会消失。为解决这个问题,Redis提供了RDB快照形式、AOF日志形式两种持久化方式,将内存中的数据保存到磁盘中,以免数据意外丢失。 一、RDB持久化         RDB持久化就是将服务器某个时间点上的数据库状态以快照形式保...

2017-11-28 15:20:02 744 0

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

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

2017-11-28 11:25:46 11545 1

原创 Redis数据库

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

2017-11-28 10:51:23 771 0

原创 Redis对象系统

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

2017-11-27 18:28:36 568 0

原创 Redis的六种数据结构

本节将对Redis底层的六种数据结构展开详述:简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表。 一、简单动态字符串(SDS)         Redis基于C语言开发但并没有直接使用C语言传统的字符串,而是构建一种叫简单动态字符串(simple dynamic string,SDS)的抽象...

2017-11-27 15:38:37 4925 0

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

在之前的基础上,基本搞清楚了Kafka的机制及如何运用。这里思考一下:Kafka中的消息会不会丢失或重复消费呢?为什么呢?         要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费         1、消息发送          Kafka消息发送有两种方式:同...

2017-11-21 16:10:26 23161 3

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

在Kafka实战章节,我们写的例子都是Kafka的高级消费实例,可以看到在消息消费者的程序中,我们只需要指定zookeeper、及消费群组的groupId即可实现从消息队列中消费消息,屏蔽了大量的底层细节:如消息的偏移量等信息都不在程序中维护。Kafka的高级消费实例,满足以下几点规则: (...

2017-11-20 12:08:03 4926 0

原创 Kafka实战

        从搭建Windows下的Kafka运行环境和搭建Linux下的Kafka运行环境可以看出,环境一旦搭建完成,执行以下逻辑程序是固定的顺序,与环境无关: 启动Zookeeper 启动Kafka 创建Topic 启动生产者Producer发消息 启动消费者Consumer消费消息 ...

2017-11-03 11:51:27 1002 3

原创 Linux下搭建Kafka运行环境

在前面的章节讲述了Windows下Kafka的运行,以及Kafka知识点总结一、知识点总结二。这里通过搭建服务器,实践编程的角度,进一步理解Kafka原理。 一、安装配置JDK         参见http://www.cnblogs.com/a2211009/p/4265225.html,笔者以...

2017-11-02 17:57:32 1641 1

原创 Kafka知识点总结二

上一节从各概念入手总结了Kafka的知识,这里从系统结构展开,进一步总结Kafka的知识点。         Kafka以集群的方式部署,集群由多个服务器(Broker)组成,每个Broker的Kafka由哪些层组成呢?答案是:SocketServer(Socket服务层)、KafkaReque...

2017-10-23 15:28:51 647 0

原创 Kafka知识点总结一

        之前学习过kafka,但在项目中用的时候,发现还有一些点特别需要注意,这里全部总结一下: 1、Kafka是一个【消息订阅-发布系统】         由消息生产者(Producer)和消息消费者(Consumer)组成,Producer将消息推送(Push)到Kafka集群,C...

2017-10-18 10:15:34 1271 1

原创 Python3爬虫之六网页的初步分析【抓取豆瓣最新电影影评并用词云显示】

在做本章内容之前,先做两件事:1、安装结巴分词jieba;2、安装云词库wordcloud 一、安装结巴分词 1、上Git上下载Jieba源码:https://github.com/xingzhexiaozhu/jieba 2、进入对应的文件目录,执行 python setup.py instal...

2017-09-21 13:36:31 1409 0

原创 Python3爬虫之五网页下载器的几种方法【Python使用cookie模拟登录CSDN】

(1)直接请求 from urllib import request # 目标网址 url = "http://www.zhihu.com" # 直接请求 response = request.urlopen(url) # 获取请求的状态码,200表示成功 # 读取内...

2017-09-05 11:26:34 1755 1

原创 Python3爬虫之四简单爬虫架构【爬取百度百科python词条网页】

前面介绍了Python写简单的爬虫程序,这里参考慕课网Python开发简单爬虫总结一下爬虫的架构。让我们的爬虫程序模块划分更加明确,代码具有更佳的逻辑性、可读性。因此,我们可以将整个爬虫程序总结为以下5个模块:         1、爬虫调度端:负责启动、停止、监控爬虫程序的运行;       ...

2017-09-04 19:53:48 1883 1

原创 Python3爬虫之三网页解析【爬取豆瓣Top电影】

这里再练习一下对豆瓣Top250电影的爬取,其首页长这样         我们需要的信息是电影的序号、电影的名字,因此直接按上一节的方法查看网页代码,解析网页结构,提取我们所需要的信息,完成代码如下: # coding = utf-8 import re from urllib import...

2017-08-31 13:46:53 4364 1

原创 Python3爬虫之二网页解析【爬取自己CSDN博客信息】

与Java类比,Java的网页解析有Jsoup工具,Python的网页解析工具对应的是BeautifulSoup。详情可以阅读其官方文档。         这里以爬取我的CSDN博客信息,包括获取每篇博客的标题、链接、书写日期、访问量、评论数量等信息为例,结合BeautifulSoup,进行网页的...

2017-08-31 13:18:22 5898 1

原创 Python3爬虫之一初试

前面系列学习了Java的爬虫,相比而言,楼主更倾向于Python简洁易懂。与Java类似,都要封装请求,Python2系列使用的是urllib2,Python3后全部融合为urllib。         下面以请求知乎首页的例子,说明Python的简单使用。 # coding = utf-8 f...

2017-08-31 13:02:10 607 0

原创 Java爬虫系列之四模拟登录【模拟登录人人网】

通过前面的学习,我们已经可以对不需要登录的网页正常访问,但现在的网页大部分都需要用户注册,因此这里以学人人网为例,学习一下网站的模拟登录。         首先对http://www.renren.com/进行爬取,对得到的内容进行分析: package RenRen; import org...

2017-08-29 11:35:28 5910 3

原创 Java爬虫系列之三模拟浏览器【模块浏览OSChina网站】

第一节的学习使得我们学会使用HttpClient请求网页的基本方法;第二节进一步学习了Jsoup从网页中解析出所需要的内容。但在请求时,我们仍可能遇到目标网址没有错,但就是请求得不到响应的情况,比如OSChina、CSDN等网址,因此这里必须伪装成浏览器才可以进行正常的访问。         模拟...

2017-08-29 11:01:43 2961 0

原创 Java爬虫系列之二网页解析【爬取知乎首页信息】

上一节以一个小Demo开始了Java的爬虫之旅,熟悉了HttpClient请求资源得到返回结果,得到初步处理的结果。但对于得到的网页是怎么解析的呢?这里讨论一下Jsoup的使用。         Jsoup是一款Java的HTML解析器,提供了一套非常省力的API,可以方便的从一个URL、文件、或...

2017-08-23 18:08:18 2467 2

原创 日志记录方法---SLF4J和Log4j

SLF4J(Simple Logging Facade For Java),没有实现具体的日志解决方法,只是一个抽象块层,使代码可以独立于任意特定的日志API。         Log4j(Log For Java),是Apache一个开源项目,可以灵活记录日志信息,通过Log4j的配置文件更改日...

2017-08-22 15:21:57 543 0

原创 Java爬虫系列之一HttpClient【爬取京东Python书籍信息】

一、概念         HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。         HttpClient实现了所有HTTP的方法(GET...

2017-08-21 20:13:34 2587 1

原创 Java注解及通过自定义Java注解实现数据库的操作

在Java程序中通过注解,可以让编程更加简洁、代码更加清晰。因此在Java框架代码中,嵌入了大量的注解。         讲注解,首先得讲注解的概念:Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。 一、注解的分类 1、按照运行机制分为源码注解、编译注解和运行时注解 (1)源...

2017-08-21 15:51:31 4639 0

原创 Spring boot之单元测试

在写工程代码的时候,经常需要调试自己的方法、接口是否有问题,能否正常调用,尤其多人合作开发项目时,工同程的融合,每个接口的问题都将导致工程不能正常运行。        对于Spring boot程序,框架对测试提供了很好的支持,这里简单总结一下测试方法。这里的单元测试主要包括Service的测试和...

2017-08-18 19:56:51 1799 0

原创 Spring boot之代码规范书写

在实际工程中的代码应该尽量保证良好的代码风格,这里以前面的例子为例:向数据库中插入学生信息时,如果学号满足要求,插入成功,则返回该记录具体信息字段;如果插入失败,则返回错误及错误提示信息。 第一步:首先建立一个消息返回内容类Result.java 第二步:读题目意思,得知对消息的返回应该有一个...

2017-08-18 17:17:00 4638 0

原创 Spring boot之AOP面向切面编程

AOP(Aspect Oriented Programing):面向切面编程,将通用的逻辑从业务逻辑中分离出来。 这里以获取HTTP请求中的字段为例进行解读: 1、在pom.xml中引用spring-boot-starter-aop依赖 2、创建HttpAspect.java类,加上@Aspe...

2017-08-18 16:25:34 13219 0

原创 Redis入门

一、概念         Redis是一个开源的、支持网络的、可基于内存的、可持久化的日志型、Key-Value数据库,提供了多种语言的API。Redis支持的数据类型有五种:string(字符串)、list(列表)、set(集合)、sorted set(有序集合)、hash(散列)。 二、Red...

2017-08-17 20:18:06 362 0

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