- 博客(186)
- 收藏
- 关注
转载 Google Java 编码规范
前言这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。1.1 术语说明在本文档中,
2016-03-12 15:01:31
671
转载 大型网站系统架构的演化
前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解
2016-01-21 10:13:31
528
转载 mysql乐观锁的使用
乐观锁介绍:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下2种方式:1.使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即
2015-12-18 20:36:25
823
原创 实习(-):服务器环境配置
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
501
转载 设计模式的六大原则
单一职责原则(Single Responsibility Principle)定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责
2015-11-24 21:06:11
427
转载 几个设计模式的例子
观察者模式 Observer 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 观察者模式的组成 抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接
2015-11-24 21:01:10
724
原创 基于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
4845
1
原创 大整数加减
#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
575
原创 大整数取模
#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
1451
原创 大数的阶乘
#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
421
原创 大整数的乘法
#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
693
转载 高性能分布式计算与存储系统设计概要
原文地址:http://www.cnblogs.com/ccdev/archive/2012/12/28/2836599.html这个系统看名字十分牛比,所涉足的目前互联网最领先的技术领域。具体有什么用途? 在我之前供职的公司,它主要是作为中间层,给网站页面提供缓存服务的,并且,它对付的难题,是大数据、海量数据,相信,每一个日PV超过千万级的网站,都必须会有类似的系统存在,如果,你曾经
2015-10-29 17:32:59
518
转载 高并发服务端分布式系统设计概要
======张峻崇 原创。转载请注明出处。====== 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然而本人水平非常有限,回头看之前写的文章也有许多不足,甚至是错误,希望同学们看到了错误多多见谅,更欢迎与我讨论并指正。
2015-10-29 15:36:12
545
原创 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
7974
原创 在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
1218
原创 有一种感觉叫绝望
感觉心好累,人生就是这样奇妙,每当你感觉有希望的时候,他总是能让你失望。当你跌入谷底,只想沉沦,突然有那么一天,又给你希望了,然而希望仅仅是希望,不是现实。生活总能叫你明白,不属于你的,别强求,即使再努力,没用,真的是没用,让人绝望,让人窒息。我想逃跑,逃离生活,然而又有牵挂,有无奈。好烦!我就是这么一个纠结的人,纠结于过去,纠结于求不得。累,累,累!有时候还不如做一个孤儿呢,
2015-09-13 21:34:10
1340
原创 又绕了一个弯
之前用的ace editor居然是YUI里面的模块,不是原生的ace editor,尼玛,发现那么难用,代码自动补全,只有api,没有demo,而且api解释太少,找了半天,无从下手。真是坑,我还想怎么支持TCL脚本语言呢,ace是自动支持的,也是醉了,YUI下面的ace有一个mode属性支持语言的,我进去看了一下,居然没有解释支持哪些,哎,真是绕了一圈,发现google的时候也要
2015-09-11 17:33:08
525
原创 实习都变成做前端的了
后端就是python的机器学习开发,用的scikit-learn,现在大部分时间都放在前端页面了,又没有设计师,完全是自己瞎琢磨,品味也不行啊,审美也有问题,体验也还是不太好,一个月来,几乎把前端都在线学了一遍,js,jQuery,BootStrap,AngularJS,还有使用各种插件,DataTable,HighCharts,Ace Editor,Spin,GoJS,遇到各种傻逼问
2015-09-10 10:51:01
764
转载 用GDB调试程序(一)
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、
2015-09-02 10:13:45
334
转载 线段覆盖长度
给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次。方法一:首先说排序对于处理很多问题都是非常有效的,例如寻找兄弟单词等问题中,经过排序处理后,问题就明朗了很多;线段覆盖长度也是这样,将线段排序后,然后扫描一遍就可以得到覆盖的长度。具体做法:排序时,先按线段的起始端点排序,如果始点相同则按照末端点排,然后从头扫描,寻找连续段;所谓连续段即下一条线
2015-09-01 15:03:46
2643
转载 逆序数
设A[1…n]是一个包含n个不同数的数组。如果在iA[j],则(i,j)就称为A中的一个逆序对(inversion)【《算法导论》2-4】现给出一个数列,求该数列中的逆序对数(逆序数)。本节给出三种方法:方法一是最直接的暴力方法;方法二是基于归并分治的思想;方法三是基于线段树的。【解法一】暴力方法最直接,也最容易想到,两层for循环就可以算出来逆序数:每遇到一个元素回头遍历寻找
2015-09-01 14:56:06
1034
转载 字符串相似度(编辑距离)
定义字符串的相似度有很多种度量,像前面说的最长公共子序列就是其中的一种,本节所说的“编辑距离”也算是一种,简单来说,编辑距离就是将两个字符串变成相同字符串所需要的最小操作次数。所需的操作可能有:修改一个字符(如把“a”替换为“b”) 增加一个字符(如把“abdd”变为“aebdd”) 删除一个字符(如把“travelling”变为“traveling”) 例如,对于“abcde
2015-09-01 14:44:00
684
转载 捞鱼问题
题目:20个桶,每个桶中有10条鱼,用网从每个桶中抓鱼,每次可以抓住的条数随机,每个桶只能抓一次,问一共抓到180条的排列有多少种 (也可求概率)。分析:我们要在20个桶中一共抓取180条鱼,每个桶能抓到鱼的条数为0-10,仔细想下,这个问题是可以分解成子问题的:假设我们在前i个桶中抓取了k(0例如,在第一个桶中抓取了2条鱼,那么总的排列数等于在剩下19个桶中抓取178条鱼的排列种
2015-09-01 14:30:18
694
转载 多重背包
前面已经回顾了01背包和完全背包,本节回顾多重背包的几种实现形式,主要有以下几方面内容:==多重背包问题定义 & 基本实现==多重背包二进制拆分实现========================================多重背包问题定义 & 基本实现问题:有个容量为V大小的背包,有很多不同重量weight[i](i=1..n)不同价值value[i](i=1..
2015-09-01 14:15:05
270
转载 完全背包
前面回顾了01背包,在此基础上本节回顾完全背包的几种实现形式,主要有以下几方面内容:==完全背包问题定义 & 基本实现==完全背包二进制拆分思想==完全背包使用滚动数组(略)==完全背包中的逆向思维==完全背包使用一维数组========================================完全背包问题定义 & 基本实现问题:有个容量为V大小的背包
2015-09-01 14:09:58
367
转载 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
402
转载 二分查找
内容如下:1)二分查找元素key的下标,如无 return -12)二分查找返回key(可能有重复)第一次出现的下标,如无return -13)二分查找返回key(可能有重复)最后一次出现的下标,如无return -14)二分查找返回刚好小于key的元素下标,如无return -15)二分查找返回刚好大于key的元素下标,如无return -1注:以上所有问题可能出
2015-09-01 13:47:23
348
转载 定长线段最多覆盖点的个数
给定一系列x轴的点坐标,例如 1,3,7,8,9,11这些坐标升序放在数组中,现在给一根绳子,长度为4,问绳子最多能覆盖的点数有多少,例如绳子放前面只能覆盖两个点,1,3,如果放后面能覆盖4个点。题目不难,但也不是太容易想出来,两个指针前后跑的思路:两个指针往前走,前面的负责加,后面的负责减,前面的每次都移动,如果点间隔长度大于绳子长度,后面指针移动。代码如下:#inclu
2015-09-01 13:44:01
923
转载 变位词 — 两种算法实现
方案一:使用数据结构 map。兄弟单词共用一个签名key,key为单词内部排序后的词条,list存储同一key的单词集合;相对于编程珠玑中的方法,该方法在空间上节省了每个单词一个key的空间;在时间上,不再需要二分查找,O(1)的查找;但是这种方法还可以优化,见方案二方案二:使用trie树。trie树又称字典树,在面试题中关于“字符串”与“数字串”类型的问题中高频出现,非常实用。对于兄
2015-09-01 13:39:36
943
转载 查找字典中某个公共前缀的所有单词
//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
608
转载 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
267
转载 IP地址字符串转无符号整型uint
考虑到转换的过程是处理数字和点,可以使用自动机的思想;自动机的思想就是整一个状态-转移表,根据输入自动判断,说白了就是正则表达式,在同一个状态下,不同的输入会转到不同的状态上去。对于ip,就只有两个状态,要么是正在输入数字,要么是正在输入点,至于点和数字的个数以及数字大小等情况可以另外优化。如果当前状态是正在输入数字,那么接下来的输入应该是数字,如果是数字则转入正在输入点的
2015-09-01 11:26:57
1987
转载 矩阵转置 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
1090
转载 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
656
转载 Scheme 语言概要(下)
谈完了 scheme 的基本概念、数据类型和过程,我们接着介绍 scheme 的结构、递归调用、变量和过程的绑定、输入输出等功能。一.常用结构顺序结构也可以说成由多个form组成的form,用begin来将多个form放在一对小括号内,最终形成一个form。格式为:(begin form1 form2 …)如用Scheme语言写成的经典的helloworld程序是如下样
2015-08-27 18:08:05
1180
转载 Scheme 语言概要(上)
作为Lisp 变体,Scheme 是一门非常简洁的计算语言,使用它的编程人员可以摆脱语言本身的复杂性,把注意力集中到更重要的问题上,从而使语言真正成为解决问题的工具。本文分为上、下两部分来介绍 scheme 语言。 一.Scheme语言的特点Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C
2015-08-27 18:06:45
18972
转载 js闭包
一、什么是闭包? “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非 常困难的。看下面这段代码:
2015-08-27 16:12:18
286
原创 华为机试:添加符号使等式成立
题目描述:输入一个正整数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
2152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人