KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函...

阅读全文 »

include <stdio.h> include <assert.h> void BigNumMultiply(const char *str1, const char *str2, char *product) { assert(str1 != NULL && s...

阅读全文 »

include <iostream> using namespace std; // 如何为包含指向(抽象)基类的指针的类定义拷贝构造函数或复制操作符 class Shape { public: Shape() { cout << "Shape::Shap...

阅读全文 »

////////////////////memcpy///////////////////////// void * __cdecl memcpy ( void * dst, const void * src, size_t coun...

阅读全文 »

原文: he Road Not Taken by Robert Frost (弗罗斯特) writen by Robert Lee Frostsai. Two roads diverged in a yellow wood, And sorry I could not tra...

阅读全文 »

对于char和wchar_t我们知道前者用来存储一个字节后者可以用来存储两个字节,所以像字母数字之类的ascii编码的字符都可以用char来存储。然而,汉字是需要两个字节才能存储的,所以用wchar_t才能符合我们的需求。但是我们经常看到char用于一些汉字方面的处理,这样就产生了一些疑惑, 如: ...

阅读全文 »

[唐巧的博客](http://blog.devtang.com/) - IOS技术,人生感悟,创业分享 [奇舞团博客](https://75team.com/post/list) - 360奇舞团(奇虎75Team)是 奇虎360公司Web平台部前端 [酷壳](https://cools...

阅读全文 »

一直使用marked库解析Markdown,现在想给它增加TOC功能 使用marked解析markdown文本是很简单的,如:marked(markdownText)就可以得到解析后的html内容 初始化marked 引入库 var marked = require(...

阅读全文 »

这个需求很常见,我们浏览自己写的博客文章的时候发现有些错误,此时想修改一下,所以必须得先登录才行。点击登录按钮后跳转到登录页面,登录成功后自动跳转到之前文章所在页面。 实现方法就是在登录页面通过document.referrer获取进入到此页面前的地址,然后将地址写入到隐藏的表单元素中,提交表...

阅读全文 »

Markdown在线预览上线了,拖动文件或者点击上传markdown文件就可以预览了。 服务器不保存文件副本,只是将上传的文件内容转换为html格式显示在网页上。 点击地址访问:[3inns.cn/mdviewer](http://3inns.cn/mdviewer) ![Mark...

阅读全文 »

目标 在3台CentOS 6服务器上部署mongodb分片集群,其中副本集(replica set)部署在不同的服务器上,每个服务器有一个配置(config)副本集,两个分片(sharding)副本集,以及一个mongos服务。所以3台服务器总共需要部署12个服务。3台服务器IP分别是:172...

阅读全文 »

C++本身是不支持反射的,但protobuf可以,下面介绍反射的两种主要的用途。 通过proto对象的名字来创建一个对象 google::protobuf::Message* ProtoHelp::createMessage(const std::string &typeNam...

阅读全文 »

在过去的几年,我经手过很多大大小小的React项目,在这个过程中,我不断的重复重复,逐渐的形成了一些模式,在这里分享给大家。 如果你是刚开始接触React,能看到这篇文章,只能说你很幸运 :)。 如果你没有接触过React,你可以跳过(3,6,8,10)节。 1.数据向下和向上...

阅读全文 »

几乎每个大一点公司都有一个“运行时间长,维护的工程师换了一批又一批”的项目,如果参与到这样的项目中来,大部分人只有一个感觉——『climb the shit mountain』。 所以我们经常会说谁谁谁写的代码就像排泄物一样,为了避免成为别人嘴里的谁谁谁,所以我写的代码一般不注明作者日期信息(...

阅读全文 »

std::thread::hardware_concurrency() 返回硬件线程上下文的数量,通常是CPU内核数量 template <class T> numeric_limits 根据当前平台,获取指定类型的信息 > std::numeric_limits<int...

阅读全文 »

右值引用允许编程人员去避免不必要的内存拷贝,从而提高性能。 我们知道如果一个类A的成员变量中有指针,那么就要考虑深拷贝和浅拷贝了,深拷贝通常要实现下面几个函数: * 构造函数 * 拷贝构造 * 赋值操作符 这样做是没问题的,但是会带来一个问题,会造成一些没必要的拷贝,如: ...

阅读全文 »

要想实现这个需求,就涉及到进程间通信了,怎样让当前启动的程序知道在它之前有没有程序在运行。 其实实现方法还是蛮多的,简单介绍几种: * 两个进程读写同一个文件 * 创建一个有名字的事件CreateEvent * 共享内存 下面是第三种方案的实现代码: ifndef RUN...

阅读全文 »

Qt基本特性 Qt是一个跨平台的C++开发框架,它包含了功能丰富的C++类库以及集成开发工具。 事件循环,事件过滤 Qt是事件驱动的,程序每个动作都是由某个事件所触发。QApplication::exec()会调用QEventLoop进入事件循环,此时程序会进入等待状态,等待处理...

阅读全文 »

鼠标左键按下拉取截取范围,中间确认截图,右键取消截图。 ifndef GRABWIDGET_H define GRABWIDGET_H include <QWidget> include <QMouseEvent> class GrabWidget : pub...

阅读全文 »

连接mongodb mongo 默认连接到本地端口27017 mongo --host 123.57.244.111 --port 27017 连接远程数据库 插入数据 插入一条数据: db.test.insert({title: "111111...

阅读全文 »

聊天