自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

花开无言

不积跬步,无以至千里;不积小流,无以成江海

  • 博客(186)
  • 收藏
  • 关注

转载 Google Java 编码规范

前言这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。1.1 术语说明在本文档中,

2016-03-12 15:01:31 578

转载 大型网站系统架构的演化

前言    一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解

2016-01-21 10:13:31 457

转载 mysql乐观锁的使用

乐观锁介绍:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下2种方式:1.使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即

2015-12-18 20:36:25 739

原创 实习(-):服务器环境配置

1、创建LV :lvcreate -L 70G -n uatweb centos2、创建虚拟机:virt-install -n uatweb -r 2048 --vcpus=2 --os-type=linux --accelerate -c /home/ISO/CentOS-7-x86_64-DVD-1503-01.iso --disk=/dev/centos/uatweb,bus

2015-12-01 10:09:12 435

转载 设计模式的六大原则

单一职责原则(Single Responsibility Principle)定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责

2015-11-24 21:06:11 363

转载 几个设计模式的例子

观察者模式 Observer  观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。  这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 观察者模式的组成  抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接

2015-11-24 21:01:10 669

原创 基于Qt Graphics View Framework的画图软件的实现思路

最近使用Qt开发了一个绘图软件,实现了拖动和放缩的功能。这里大体描述一下思路:1、自定义类继承图形项: class MyItem : public QGraphicsItem重写以下方法 QRectF boundingRect()const; void paint(QPainter *painter, const QStyleOptionGraphi

2015-11-24 15:56:00 4624 6

原创 大整数加减

#include#include/* 一个数组元素表示4 个十进制位,即数组是万进制的*/#define BIGINT_RADIX 10000#define RADIX_LEN 4#define MAX_LEN (200/RADIX_LEN+1) /* 整数的最大位数*/char a[MAX_LEN * RADIX_LEN], b[MAX_LEN * RADIX_LEN];int x

2015-11-01 20:02:34 532

原创 大整数取模

#include#include/* 一个数组元素表示4 个十进制位,即数组是万进制的*/#define BIGINT_MOD 10000#define MOD_LEN 4#define MAX_LEN (1000/MOD_LEN+1) /* 整数的最大位数*/char a[MAX_LEN * MOD_LEN];int x[MAX_LEN], y;/*** @brief 将输入的

2015-11-01 19:55:35 1384

原创 大数的阶乘

#include#include/* 一个数组元素表示4 个十进制位,即数组是万进制的*/#define BIGINT_RADIX 10000#define RADIX_LEN 4/* 10000! 有35660 位*/#define MAX_LEN (35660/RADIX_LEN+1) /* 整数的最大位数*/int x[MAX_LEN + 1];/*** @brief 打印

2015-11-01 19:45:43 376

原创 大整数的乘法

#include#include/* 一个数组元素表示4 个十进制位,即数组是万进制的*/#define BIGINT_RADIX 10000 //超过1万进1,类比10进制,一位就是一个数字,超过10进1#define RADIX_LEN 4 //每个元素表示4位#define MAX_LEN (200/RADIX_LEN+1) /* 整数的最大位数,之所以要加1,是因为当遇到不能整

2015-11-01 19:38:14 633

转载 高性能分布式计算与存储系统设计概要

原文地址:http://www.cnblogs.com/ccdev/archive/2012/12/28/2836599.html这个系统看名字十分牛比,所涉足的目前互联网最领先的技术领域。具体有什么用途? 在我之前供职的公司,它主要是作为中间层,给网站页面提供缓存服务的,并且,它对付的难题,是大数据、海量数据,相信,每一个日PV超过千万级的网站,都必须会有类似的系统存在,如果,你曾经

2015-10-29 17:32:59 460

转载 高并发服务端分布式系统设计概要

======张峻崇 原创。转载请注明出处。======        又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然而本人水平非常有限,回头看之前写的文章也有许多不足,甚至是错误,希望同学们看到了错误多多见谅,更欢迎与我讨论并指正。   

2015-10-29 15:36:12 490

原创 好想哭

如题

2015-10-17 21:11:14 588

原创 windows下搭建python cgi编程环境

顺便把实习做的项目从unix系统转到windows下面来了。安装python,搭建机器学习开发环境前面的博客提过了,不写了。1、下载并安装apache:httpd-2.2.31-x64.zip,可以参见http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html2、配置apache参数:修改配置文件 conf/httpd.

2015-09-21 18:40:25 7859

原创 在web page中嵌入ace editor

1、在github上获取资源: git clone https://github.com/ajaxorg/ace-builds.git2、导入js插件:   3、定义div,关联editor: 4、定义editor,自动补全:

2015-09-17 11:35:02 1157

原创 有一种感觉叫绝望

感觉心好累,人生就是这样奇妙,每当你感觉有希望的时候,他总是能让你失望。当你跌入谷底,只想沉沦,突然有那么一天,又给你希望了,然而希望仅仅是希望,不是现实。生活总能叫你明白,不属于你的,别强求,即使再努力,没用,真的是没用,让人绝望,让人窒息。我想逃跑,逃离生活,然而又有牵挂,有无奈。好烦!我就是这么一个纠结的人,纠结于过去,纠结于求不得。累,累,累!有时候还不如做一个孤儿呢,

2015-09-13 21:34:10 1251

原创 又绕了一个弯

之前用的ace editor居然是YUI里面的模块,不是原生的ace editor,尼玛,发现那么难用,代码自动补全,只有api,没有demo,而且api解释太少,找了半天,无从下手。真是坑,我还想怎么支持TCL脚本语言呢,ace是自动支持的,也是醉了,YUI下面的ace有一个mode属性支持语言的,我进去看了一下,居然没有解释支持哪些,哎,真是绕了一圈,发现google的时候也要

2015-09-11 17:33:08 454

原创 实习都变成做前端的了

后端就是python的机器学习开发,用的scikit-learn,现在大部分时间都放在前端页面了,又没有设计师,完全是自己瞎琢磨,品味也不行啊,审美也有问题,体验也还是不太好,一个月来,几乎把前端都在线学了一遍,js,jQuery,BootStrap,AngularJS,还有使用各种插件,DataTable,HighCharts,Ace Editor,Spin,GoJS,遇到各种傻逼问

2015-09-10 10:51:01 699

转载 用GDB调试程序(一)

用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:    1、

2015-09-02 10:13:45 276

转载 线段覆盖长度

给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次。方法一:首先说排序对于处理很多问题都是非常有效的,例如寻找兄弟单词等问题中,经过排序处理后,问题就明朗了很多;线段覆盖长度也是这样,将线段排序后,然后扫描一遍就可以得到覆盖的长度。具体做法:排序时,先按线段的起始端点排序,如果始点相同则按照末端点排,然后从头扫描,寻找连续段;所谓连续段即下一条线

2015-09-01 15:03:46 2584

转载 逆序数

设A[1…n]是一个包含n个不同数的数组。如果在iA[j],则(i,j)就称为A中的一个逆序对(inversion)【《算法导论》2-4】现给出一个数列,求该数列中的逆序对数(逆序数)。本节给出三种方法:方法一是最直接的暴力方法;方法二是基于归并分治的思想;方法三是基于线段树的。【解法一】暴力方法最直接,也最容易想到,两层for循环就可以算出来逆序数:每遇到一个元素回头遍历寻找

2015-09-01 14:56:06 943

转载 字符串相似度(编辑距离)

定义字符串的相似度有很多种度量,像前面说的最长公共子序列就是其中的一种,本节所说的“编辑距离”也算是一种,简单来说,编辑距离就是将两个字符串变成相同字符串所需要的最小操作次数。所需的操作可能有:修改一个字符(如把“a”替换为“b”) 增加一个字符(如把“abdd”变为“aebdd”) 删除一个字符(如把“travelling”变为“traveling”) 例如,对于“abcde

2015-09-01 14:44:00 632

转载 捞鱼问题

题目:20个桶,每个桶中有10条鱼,用网从每个桶中抓鱼,每次可以抓住的条数随机,每个桶只能抓一次,问一共抓到180条的排列有多少种 (也可求概率)。分析:我们要在20个桶中一共抓取180条鱼,每个桶能抓到鱼的条数为0-10,仔细想下,这个问题是可以分解成子问题的:假设我们在前i个桶中抓取了k(0例如,在第一个桶中抓取了2条鱼,那么总的排列数等于在剩下19个桶中抓取178条鱼的排列种

2015-09-01 14:30:18 617

转载 多重背包

前面已经回顾了01背包和完全背包,本节回顾多重背包的几种实现形式,主要有以下几方面内容:==多重背包问题定义 & 基本实现==多重背包二进制拆分实现========================================多重背包问题定义 & 基本实现问题:有个容量为V大小的背包,有很多不同重量weight[i](i=1..n)不同价值value[i](i=1..

2015-09-01 14:15:05 237

转载 完全背包

前面回顾了01背包,在此基础上本节回顾完全背包的几种实现形式,主要有以下几方面内容:==完全背包问题定义 & 基本实现==完全背包二进制拆分思想==完全背包使用滚动数组(略)==完全背包中的逆向思维==完全背包使用一维数组========================================完全背包问题定义 & 基本实现问题:有个容量为V大小的背包

2015-09-01 14:09:58 339

转载 POJ 2192

题意:就是给定三个字符串A,B,C;判断C能否由AB中的字符组成,同时这个组合后的字符顺序必须是A,B中原来的顺序,不能逆序;例如:A:mnl,B:xyz;如果C为mnxylz,就符合题意;如果C为mxnzly,就不符合题意,原因是z与y顺序不是B中顺序。DP求解:定义dp[i][j]表示A中前i个字符与B中前j个字符是否能组成C中的前 (i+j) 个字符,如果能标记true,如果不能

2015-09-01 13:55:32 362

转载 二分查找

内容如下:1)二分查找元素key的下标,如无 return -12)二分查找返回key(可能有重复)第一次出现的下标,如无return -13)二分查找返回key(可能有重复)最后一次出现的下标,如无return -14)二分查找返回刚好小于key的元素下标,如无return -15)二分查找返回刚好大于key的元素下标,如无return -1注:以上所有问题可能出

2015-09-01 13:47:23 316

转载 定长线段最多覆盖点的个数

给定一系列x轴的点坐标,例如 1,3,7,8,9,11这些坐标升序放在数组中,现在给一根绳子,长度为4,问绳子最多能覆盖的点数有多少,例如绳子放前面只能覆盖两个点,1,3,如果放后面能覆盖4个点。题目不难,但也不是太容易想出来,两个指针前后跑的思路:两个指针往前走,前面的负责加,后面的负责减,前面的每次都移动,如果点间隔长度大于绳子长度,后面指针移动。代码如下:#inclu

2015-09-01 13:44:01 880

转载 变位词 — 两种算法实现

方案一:使用数据结构 map。兄弟单词共用一个签名key,key为单词内部排序后的词条,list存储同一key的单词集合;相对于编程珠玑中的方法,该方法在空间上节省了每个单词一个key的空间;在时间上,不再需要二分查找,O(1)的查找;但是这种方法还可以优化,见方案二方案二:使用trie树。trie树又称字典树,在面试题中关于“字符串”与“数字串”类型的问题中高频出现,非常实用。对于兄

2015-09-01 13:39:36 912

转载 查找字典中某个公共前缀的所有单词

//Trie.h/* * trie树统计公共前缀的单词集合、个数 */#include #include using namespace std;#define BRANCH 26struct Node{Node * next[BRANCH];int prefix; // 此前缀的单词个数,为验证结果而加bool isStr;Node():prefix(0), isStr(false){m

2015-09-01 13:30:28 558

转载 0-1背包

0-1背包问题定义 & 基本实现问题:有个容量为V大小的背包,有很多不同重量weight[i](i=1..n)不同价值value[i](i=1..n)的物品,每种物品只有一个,想计算一下最多能放多少价值的货物。DP的关键也是难点是找到最优子结构和重叠子问题,进而找到状态转移方程,编码就相对容易些。最优子结构保证每个状态是最优的,重叠子问题也即n状态的求法和n-1状态的求法是一样的;

2015-09-01 13:26:02 244

转载 IP地址字符串转无符号整型uint

考虑到转换的过程是处理数字和点,可以使用自动机的思想;自动机的思想就是整一个状态-转移表,根据输入自动判断,说白了就是正则表达式,在同一个状态下,不同的输入会转到不同的状态上去。对于ip,就只有两个状态,要么是正在输入数字,要么是正在输入点,至于点和数字的个数以及数字大小等情况可以另外优化。如果当前状态是正在输入数字,那么接下来的输入应该是数字,如果是数字则转入正在输入点的

2015-09-01 11:26:57 1837

转载 矩阵转置 O(1)空间

为了方便,使用一维数组来分析。所谓矩阵转置,行变列,列变行。在转置的过程中,有的元素位置是不变的;对于变化位置的元素,要求O(1)空间完成,那么这些位置的变化一定是有着规律的。举例,2×5的矩阵,A={0,1,2,3,4,5,6,7,8,9};转置后为AT={0,5,1,6,2,7,3,8,4,9},探索下标变化:0->01->2->4->8->7->5->13->6->3

2015-09-01 11:01:21 1012

转载 Trie树统计词频和指定前缀的单词个数

//trie.h#ifndef __TRIE_H__#define __TRIE_H__#include #include #include #include #include namespace alg { const int NUMWORD = 26; class Trie { private: class node { public: in

2015-08-30 13:51:25 581

转载 Scheme 语言概要(下)

谈完了 scheme 的基本概念、数据类型和过程,我们接着介绍 scheme 的结构、递归调用、变量和过程的绑定、输入输出等功能。一.常用结构顺序结构也可以说成由多个form组成的form,用begin来将多个form放在一对小括号内,最终形成一个form。格式为:(begin form1 form2 …)如用Scheme语言写成的经典的helloworld程序是如下样

2015-08-27 18:08:05 1099

转载 Scheme 语言概要(上)

作为Lisp 变体,Scheme 是一门非常简洁的计算语言,使用它的编程人员可以摆脱语言本身的复杂性,把注意力集中到更重要的问题上,从而使语言真正成为解决问题的工具。本文分为上、下两部分来介绍 scheme 语言。 一.Scheme语言的特点Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C

2015-08-27 18:06:45 18477 1

转载 js闭包

一、什么是闭包?  “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。  相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非       常困难的。看下面这段代码:      

2015-08-27 16:12:18 241

原创 华为机试:添加符号使等式成立

题目描述:输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号或者不填,使得等式成立。1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 = 5请编写程序,统计满足输入整数的所有等式个数。输入:       正整数,等式右边的数字输出:       使

2015-08-18 17:46:14 2044

原创 数据可视化

准备先试一试Highcharts

2015-08-06 15:05:42 538

空空如也

空空如也

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

TA关注的人

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