自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(237)
  • 资源 (10)
  • 收藏
  • 关注

原创 日志规范建设

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

2019-12-10 16:19:12 580

原创 Golang对自定义类型排序

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

2018-09-04 10:28:48 5203 1

原创 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 10828

原创 Python之项目路径的引入

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

2018-05-03 20:11:42 5500

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

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

2018-04-21 18:39:43 26213 3

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

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

2018-01-13 13:36:25 5234

原创 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 9051 5

原创 Redis事务

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

2017-11-29 18:41:19 867

原创 Redis发布与订阅功能

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

2017-11-29 18:11:10 2139

原创 Redis的集群结构

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

2017-11-29 16:49:59 689

原创 Redis的监控功能

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

2017-11-29 16:10:59 1030

原创 Redis的复制功能

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

2017-11-29 11:54:31 525

原创 Redis中的事件

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

2017-11-28 16:30:11 800

原创 Redis数据持久化

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

2017-11-28 15:20:02 960

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

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

2017-11-28 11:25:46 17535 2

原创 Redis数据库

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

2017-11-28 10:51:23 1078

原创 Redis对象系统

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

2017-11-27 18:28:36 784

原创 Redis的六种数据结构

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

2017-11-27 15:38:37 6447 1

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

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

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

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

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

2017-11-20 12:08:03 6802

原创 Kafka实战

        从搭建Windows下的Kafka运行环境和搭建Linux下的Kafka运行环境可以看出,环境一旦搭建完成,执行以下逻辑程序是固定的顺序,与环境无关:启动Zookeeper启动Kafka创建Topic启动生产者Producer发消息启动消费者Consumer消费消息        因此,这里以Windows下的运行环境为例(windows环境搭建可以参见笔者之前的...

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

原创 Linux下搭建Kafka运行环境

在前面的章节讲述了Windows下Kafka的运行,以及Kafka知识点总结一、知识点总结二。这里通过搭建服务器,实践编程的角度,进一步理解Kafka原理。一、安装配置JDK        参见http://www.cnblogs.com/a2211009/p/4265225.html,笔者以第一种方式安装,便于后面通过 apt-get upgrade 方式方便获得jdk的升级//添加

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

原创 Kafka知识点总结二

上一节从各概念入手总结了Kafka的知识,这里从系统结构展开,进一步总结Kafka的知识点。        Kafka以集群的方式部署,集群由多个服务器(Broker)组成,每个Broker的Kafka由哪些层组成呢?答案是:SocketServer(Socket服务层)、KafkaRequestHandlerPool(请求转发层)、Kafka api(业务逻辑层)、Control(集群状态控

2017-10-23 15:28:51 831

原创 Kafka知识点总结一

        之前学习过kafka,但在项目中用的时候,发现还有一些点特别需要注意,这里全部总结一下:1、Kafka是一个【消息订阅-发布系统】        由消息生产者(Producer)和消息消费者(Consumer)组成,Producer将消息推送(Push)到Kafka集群,Consumer从Kafka集群中将消息拉取(Pull)下来。客户端和服务端通过TCP协议进行通信。...

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

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

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

2017-09-21 13:36:31 2587

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

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

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

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

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

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

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

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

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

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

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

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

原创 Python3爬虫之一初试

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

2017-08-31 13:02:10 822

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

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

2017-08-29 11:35:28 8511 4

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

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

2017-08-29 11:01:43 4804

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

上一节以一个小Demo开始了Java的爬虫之旅,熟悉了HttpClient请求资源得到返回结果,得到初步处理的结果。但对于得到的网页是怎么解析的呢?这里讨论一下Jsoup的使用。        Jsoup是一款Java的HTML解析器,提供了一套非常省力的API,可以方便的从一个URL、文件、或字符串中解析出HTML,然后使用DOM或者Select选择出页面元素、取出数据。如下:Strin

2017-08-23 18:08:18 3249 2

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

SLF4J(Simple Logging Facade For Java),没有实现具体的日志解决方法,只是一个抽象块层,使代码可以独立于任意特定的日志API。        Log4j(Log For Java),是Apache一个开源项目,可以灵活记录日志信息,通过Log4j的配置文件更改日志记录格式、级别等信息。        不论是在写程序还是线上的系统,及时打印出代码运行阶段的日

2017-08-22 15:21:57 837

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

一、概念        HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。        HttpClient实现了所有HTTP的方法(GET/POST/PUT/HEAD等),支持自动转向、HTTPS以及代理服务器能。二、HttpCli

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

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

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

2017-08-21 15:51:31 7215

原创 Spring boot之单元测试

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

2017-08-18 19:56:51 2772

原创 Spring boot之代码规范书写

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

2017-08-18 17:17:00 6430

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

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

2017-08-18 16:25:34 20705 2

原创 Redis入门

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

2017-08-17 20:18:06 629

计算机网络第五版

计算机网络第五版

2016-08-20

Redis设计与实现

Redis设计与实现

2016-08-20

Java_TCPIP_Socket编程

Java_TCPIP_Socket编程

2016-07-06

中国计算机学会推荐国际刊物会议列表(数据库数据挖掘与内容检索)

2016-06-20

GroupLens_MovieLens数据集

数据集简介如下:(上传空间有限,这里我只传了一个最新的2016/1的数据集,如果有需要的话到官网下载吧http://grouplens.org/datasets/movielens/) MovieLens 100K Dataset Stable benchmark dataset. 100,000 ratings from 1000 users on 1700 movies. Released 4/1998. MovieLens 1M Dataset Stable benchmark dataset. 1 million ratings from 6000 users on 4000 movies. Released 2/2003. MovieLens 10M Dataset Stable benchmark dataset. 10 million ratings and 100,000 tag applications applied to 10,000 movies by 72,000 users. Released 1/2009. MovieLens 20M Dataset Stable benchmark dataset. 20 million ratings and 465,000 tag applications applied to 27,000 movies by 138,000 users. Released 4/2015. MovieLens Latest Datasets Small: 100,000 ratings and 6,100 tag applications applied to 10,000 movies by 700 users. Last updated 1/2016. Full: 22,000,000 ratings and 580,000 tag applications applied to 33,000 movies by 240,000 users. Last updated 1/2016. MovieLens Tag Genome Dataset 11 million computed tag-movie relevance scores from a pool of 1,100 tags applied to 10,000 movies.

2016-01-14

Spark学习资料

EECS-2014-12,Spark作者的论文

2015-08-14

Hadoop平台搭建步骤

Hadoop平台搭建步骤,这份文档里面详细的讲述了平台的搭建步骤

2014-03-29

spring in action 中文版 后五章

spring in action 中文版 后五章,里面详细描述了spring,提供编程者查阅API

2014-03-29

Visual C++

Visual C++ 面向对象编程教程王育坚

2013-11-06

MyEclipse+Tomcat+MySQL的环境搭建

MyEclipse+Tomcat+MySQL的环境搭建

2013-11-06

空空如也

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

TA关注的人

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