自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Golang百万级高并发实践

写在前面Go语言作为新兴的语言,最近发展势头很是迅猛,其最大的特点就是原生支持并发。它使用的是“协程(goroutine)模型”,和传统基于 OS 线程和进程实现不同,Go 语言的并发是基于用户态的并发,这种并发方式就变得非常轻量,能够轻松运行几万并发逻辑。Go 的并发属于 CSP 并发模型的一...

2018-01-09 22:17:48 24311 16

原创 Golang设计模式之观察者模式

1. 概述观察者模式简单一句话说就是当特定事件出现时,一个对象实例把事件发布到对应的观察者实例上执行相应的更新操作。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机。其类图如下:具体的代码可示例从githu...

2017-12-12 17:34:56 2964 0

原创 golang log模块之log4go使用介绍

1. 描述在go语言中,自身已经集成了一定log模块,开发者可以使用go语言自身的log包(import “log”)。也有不少对自身log的开源封装。对于一些简单的开发,自身的log模块就已经足够应付。但是对一些大型,复杂的开发,log需要分门别类的输出,或者通过网络进行输出,自身log模块将难...

2017-11-19 20:29:46 10030 0

原创 Golang设计模式之代理模式

1. 概述代理模式,简单来说就是提供一个对象来控制其他对象的功能。在一些情况下,一个Object不适合直接引用目标对象,但可以通过代理对象调用目标对象,起到中介代理的作用。相关源代码demo在Github上,可供参考!2. 实现示例那个简单的例子,中介代理各业主的房子。每个业主都有个卖房的函数。中...

2017-10-22 16:38:25 1955 0

原创 Golang设计模式之装饰模式

1. 概述装饰模式就是在不改变对象内部结构的情况下,动态扩展它的功能。它提供了灵活的方法来扩展对象的功能。2. 实现下面是一个简单的实现逻辑,通过Decorate来进一步装饰Dressing函数:type Object func(string) stringfunc Decorate(fn Obj...

2017-10-14 21:20:47 2002 0

原创 Golang设计模式之外观模式

1. 概述它为一套复杂的调度子系统提供一个统一的接入接口。外部所有对子系统的调用都通过这个外观角色进行统一调用,降低子系统与调用者之间的耦合度。 Golang设计模式相关源码在github上有提供,可供参考!2. 举例说明那当前比较热门的微服务来说,一套服务(比如说短视频服务)包括若干子服务,如...

2017-09-24 16:46:25 1711 0

原创 Golang设计模式之单例模式

1. 概述单例模式,顾名思义就是在程序的运行中只产生一个实力。在Go实现上也有多种形式。相关源代码demo在Github上,可供参考!2. 实现一、懒汉模式.这种方式实现起来特别简单,直接判断一个实力是不是为nil, 如果是,则新生成;否则返回已有的。但它和多数语言一样,只适合用在单线程。type...

2017-09-16 11:52:15 3817 0

原创 golang设计模式之建造者模式

1. 概述建造者模式将一个复杂的对象与它的表示分离,同样的创造过程可以建造出不停的表示。比如汽车,它包括商标、车轮、颜色、发送机等各种部分。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部...

2017-09-03 17:00:40 2640 0

原创 golang设计模式之工厂方法模式

1. 概述简单工厂模式是通过传递不同的参数生成不同的实例,缺点就是扩展不同的类别时需要修改代码。工厂方法模式为每一个product提供一个工程类,通过不同工厂创建不同实例。类图:相关源代码demo在Github上,可供参考!2. 实现过程 工厂方法定义一个创建struct的接口,让子struct去...

2017-09-03 16:48:26 3718 0

原创 golang设计模式之简单工厂模式

1. 写在前面在面向对象的编程语言中(如java,C++)设计模式的概念广为人知, 应用的也非常广泛。设计模式让我们的代码变得灵活起来,具有很强的扩展性。但在与C语言比肩的Go语言中,设计模式的概念并没有十分突出,甚至很少听到。在Go的开发中,借鉴design pattern的理念同样回味无穷我们...

2017-08-31 23:15:55 3271 0

原创 Docker 初实践手札

1. Docker简介 Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松! 无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和...

2017-08-30 15:57:33 2114 0

原创 ELK 日志监控平台环境搭建及使用说明

1. ELK概述ELK,也就是Elasticsearch、Logstash、Kibana三者的结合,是一套开源的分布式日志管理方案.Elasticsearch:负责日志存储、检索和分析LogStash:负责日志的收集、处理Kibana:负责日志的可视化方案: 2. 环境搭建为整体环境创建一个合适...

2016-11-01 14:29:28 15308 0

原创 php 使用“/dev/urandom”获取随机数

描述  首先,说一下伪随机数,伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律。比如“世上没有两片形状完全相同的树叶”。  ...

2016-09-22 21:37:48 5380 0

原创 各种语言(php、python、shell、perl)中读一行或stdin

描述  支持标准输入输出的程序语言有很多,例如shell、php、python、perl、C等。在编写各种脚本完成目标任务时,数据的输入时比较常见的逻辑。下面逐个列举一下使用的例子。示例  在php中,我们可以用如下方式:<?php $file = fopen("php://std...

2016-09-12 13:14:17 3041 0

原创 Mysql 复制表结构

like 方法语法格式:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }示例: create table a like origin_tb;特点: like方法...

2016-09-06 14:13:59 2932 0

原创 makefile: *** missing separator. Stop

问题描述  在执行Makefile时,有时候会出现missing separator的错误,通常的原因是tab格式导致的。原因  makefile里只有命令所在的行才能且只能以TAB开头,make变量的定义、赋值,make内定函数如$(error “strings”)都不能以TAB开头,不然mak...

2016-09-01 15:35:37 13563 0

原创 PHP 正则表达式过滤特殊字符

问题描述    php使用正则表达式过滤特殊的字符示例<?php function replaceSpecialChar($strParam){ $regex = "/\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|...

2016-05-09 12:07:33 15911 0

原创 PHP 删除数组第一个元素和最后一个元素

1. array_shift()函数  删除数组中第一个元素,并返回该元素的值。如果数组为空则返回null。   示例:<?php$test_arr = array ( "name" => "jeanphorn", "...

2016-02-29 18:51:40 9053 0

原创 mongoDB 查询操作

1. mongoDB 文档查询查询语法格式:db.COLLECTION_NAME.find() find()方法查询指定集合中所有的文档,并已非结构化的方式显示。如果需要直观的显示结果,可以再find后面加上pretty()方法。例子:> > db.person.find() ...

2016-01-11 15:28:28 1850 0

原创 MongoDB 文档的更新操作

1. 更新文档  MongoDB更新文档的方法主要有两个,update()和save()。2. update()方法2.1 格式说明  update()方法适合更新MongoDB中已存在的集合,格式如下:db.collection.update( <query>, <...

2015-12-02 19:04:52 1813 0

原创 MongoDB 文档的更新操作

1. 更新文档  MongoDB更新文档的方法主要有两个,update()和save()。2. update()方法2.1 格式说明  update()方法适合更新MongoDB中已存在的集合,格式如下:db.collection.update( <query>, <...

2015-12-02 19:02:28 1355 0

原创 Linux 多线程编程 线程属性

1. 线程属性的结构  一般情况来说,当我们需要使用多线程时直接调用pthread_create()函数的默认参数即可满足我们的需求,但有些时候我们也需要调整线程的属性。线程的属性结构为pthread_attr_t,在< pthreadtypes.h>中定义,原型如下:typedef ...

2015-11-25 15:19:21 1426 0

原创 linux 多线程编程

1. Linux 多线程介绍  线程的概念早在上世纪60年代就被提出,知道上世纪80中期才被真正使用起来。Solaris是线程使用的先驱,在传统的UNIX系统中,一个线程就对应一个进程,多线程类似于多进程,线程的左右没有得到很好地发挥。现在多线程技术已经得到广泛的使用,与多进程相比,它具有的有点主...

2015-11-24 18:53:16 777 0

原创 MongoDBm基本概念的分析

1. mongodb 基本概念  mongo基本的概念包括数据库、文档、集合。以下分别予以介绍。1.1 数据库  一个mongodb可以建立多个数据库,每一个都有自己独立的目录和权限,不同的数据库放在不同的文件中。使用”show dbs”可以显示所有的数据库列表。 >mongo M...

2015-11-19 19:11:40 1174 0

原创 MongoDB介绍以及在linux平台的安装使用

1. MongoDB简介  MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB >将数据存储为一个文档,数据结构由键值(key...

2015-11-16 20:20:02 977 0

原创 Linux c++ 生成和使用链接库文件

1. 静态链接库  静态库是obj文件的集合,一般以“.a”为后缀。静态库的有点事可以不用重新编译源程序,直接进行程序的重新链接,节省编译时间。开发者可以提供库文件而不用开放源代码。   命令:   $ar -rcs obj文件1 obj文件2   例如我们编写一个string.cc的文件...

2015-11-02 14:23:08 2192 0

原创 Leetcode 297 Serialize and Deserialize Binary Tree(序列化与反序列化二叉树)

1. 描述  设计一个算法,实现二叉树的序列化与反序列化。如何实现没有限制,只要保证一颗二叉树可以序列化为一个string串,然后这个string串可以反序列化为原来的二叉树即可。详细描述如下:   2. 方法与思路  采用先序遍历的思路,为了保证重构二叉树时,节点能够插入到数中的正确位置,空节...

2015-10-30 11:07:08 3115 0

原创 360笔试题 找老乡

1. 问题描述  大学的同学来自全国各地,对于远离家乡步入陌生大学校园的大一新生来说,碰到老乡是一件多么激动的事。于是大家都热衷于问身边的同学是否与自己同乡,来自新疆的小妮尤其热衷。但是大家不告诉他来自哪里,只是说谁是同乡,从所给的信息中你能告诉有多少人是小妮的同乡吗?2. 输入  每个测试实例首...

2015-10-29 17:31:30 1937 0

原创 php call_user_func()函数

1. 函数说明  调用回调函数。原型: mixed call_user_func ( callable callback[,mixedcallback [, mixed parameter [, mixed $… ]] )。 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参...

2015-10-26 18:30:28 5683 0

原创 php_uname()函数

1. 说明  php_uname — 返回运行 PHP 的系统的有关信息。   原型:string php_uname ([ string $mode = “a” ] )。返回运行php的操作系统的相关描述,和 phpinfo() 最顶端上输出的是同一个字符串。 如果仅仅要获取操作系统的名称。可...

2015-10-26 09:54:42 6309 0

原创 Leetcode 283 Move Zeroes

1. 问题描述  给定一个数组nums[],把数组中的所有0元素移动到非零元素的后面。例如,给定数组nums= [0, 1, 0, 3, 12], 完成移动后的数组为nums = [1, 3, 12, 0, 0]。要求不使用辅助数组,尽量少的操作。2. 方法与思路  思路一,在不改变非零元素的相对...

2015-10-06 16:45:22 995 0

转载 Hadoop fs shell命令

FS Shell调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path 。对 HDFS文件系统,scheme是hdfs ,对本地文件系统,scheme是file...

2015-09-09 18:03:46 1053 0

原创 libevent 安装与使用说明

1. 简介  libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue、IOCP等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根...

2015-08-11 16:16:44 4580 0

转载 Linux中shell变量说明

原文地址:http://123304258.blog.163.com/blog/static/12354702012423113850772/  为使shell编程更有效,系统提供了一些shell变量。shell变量可以保存诸如路径名、文件名或者一个数字这样的变量名。shell将其中任何设置都看做...

2015-08-11 12:24:04 3174 0

原创 C++ std::tr1::bind使用

1. 简述  同function函数类似,bind函数同样也可以实现类似于函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。std::tr1::function 可以对静态成员函数进行绑定,但如果要对非静态成员函数的绑定,需用到下机将要介绍的bind()模板函数。 ...

2015-08-10 16:38:28 4356 0

原创 C++ std::tr1::function使用

1. 介绍  function 是一种通用、多态的函数封装。std::function 的实例可以对任何可以调用的 目标 进行存储、复制、和调用操作,这些目标包括函数、lambda 表达式、绑定表达式、以及其它函数对象等。(c++11起的版本可用)   function(和bind一样)可以实现...

2015-08-06 19:53:10 4669 0

原创 C++ std::tr1::shared_ptr使用说明

1. 介绍  shared_ptr 是通过指针保持某个对象的共享拥有权的智能指针。若干个 shared_ptr 对象可以拥有同一个对象;最后一个指向该对象的 shared_ptr 被销毁或重置时,该对象被销毁。销毁该对象时使用的是 delete 表达式或者是在构造 shared_ptr 时传入的自...

2015-08-06 18:58:26 4526 0

原创 protobuf 简单入门

1. 概述  protobuf(Protocol Buffers )是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、...

2015-08-05 10:02:22 3313 0

原创 查找两个链表的交叉节点

1. 问题描述  给定两个单链表,查找这两个单链表的交叉节点。例如:链表listA为:a1→a2→c1→c2→c3a_1 \to a_2 \to c_1 \to c_2 \to c_3,链表listB为:b1→b2→b3→c1→c2→c3b_1 \to b_2 \to b_3 \to c_1 \t...

2015-08-04 09:37:49 5114 2

原创 旋转数组

1. 问题描述  从右侧旋转一个n个元素的数组,旋转k位。例如:n=7,k=3n = 7, k=3, arr=[1,2,3,4,5,6,7]arr=[1,2,3,4,5,6,7]旋转成为arr=[5,6,7,1,2,3,4]arr=[5,6,7,1,2,3,4]。2. 方法与思路  其实这个问题类...

2015-07-25 11:01:04 3849 0

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