- 博客(43)
- 资源 (2)
- 收藏
- 关注
原创 mysql事物隔离级别
1、Read uncommited(读未提交) 导致脏读:事物A读取了事物B未提交的更改2、Read commited 解决脏读,导致不可重复读:事物A读取了记录record1,事物B更改了记录record1,事物再尝试去修改record1,record1已经发生改变,报错。 大部分数据库:SQL Server、Oracle都支持到这个级别3、Repeatable read 解决脏读,可以重
2017-08-29 13:52:15 310
原创 redis del大key可能带来的风险
1、redis命令 del 的时间复杂度是o(m), 其中m就是key中所包含的元素个数。比如当del list、set、hash等数据结构的时候,如果这样的key里面的数据达到千万级别,可能会阻塞redis进程超过10s,其他并发的命令都超时。
2017-07-31 17:20:08 3007
原创 php ob_flush无效
在接口中echo之后,执行ob_flush(); flush();之后,内容并没有输出到浏览器。 代码如下: echo "uid,phone"; ob_flush(); flush();google了一通,发现并不是flush没有生效,而是没有达到nginx的buffer,所以nginx没有把内容flush到浏览器。再google了一通,增加代码 he
2017-07-13 11:27:25 924
原创 grep常用用法
grep简介正如linux的man文件中所描述的那样: grep searches the named input FILEs (or standard input if no files are named, or if a single hyphen-minus (-) is given as file name) for lines containing a match to
2015-03-31 21:03:13 717
原创 Edit Distance
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)You have the following 3 operations permitted on a word:a) Insert a characterb) Delete a characterc) Replace a
2015-01-10 17:09:11 569
原创 Construct Binary Tree from Inorder and Postorder Traversal
原题如下;Given inorder and postorder traversal of a tree, construct the binary tree.Note:You may assume that duplicates do not exist in the tree.题意很简单:根据中序遍历和后序遍历的序列生成树思路很简单:根据后序遍历的序列确定根节点,在中序遍历中找到根节点,将原来的序列分为左右两个部分,递归解决左右两个部分就可以解决这个问题。Java代码如下:publ
2015-01-07 01:37:03 817
原创 mysql安装使用
在OJ中,mysql主要用来存储用户信息。它的安装和使用比较简单,下面简单介绍一下。首先说明一下我的Linux分支环境是Ubuntu 12.04,其他的分支大致步骤也是类似,可能命令有所不同。 一、安装
2015-01-06 16:23:43 581
原创 uwsgi安装使用
基于python的web应用的部署方法常见的有:fcgi、wsgi以及uwsgi。其中uwsgi的速度据说是fcgi的十倍那么快。它的特点是: 1、超快的性能 2、低内存占用 3、多App管理 4、详尽的日志记录 5、高度可定制安装uwsgiapt-get install uwsgi uwsgi-plugin-python如果权限不够就加上sudo。这样就成功安装了uwsgi。启动uwsgi:uwsgi -x ~/oj/oj/django_socket.xmluwsgi在django
2015-01-06 16:12:29 1143
原创 StringBuffer与StringBuilder区别
简单的一句话概括就是:StringBuffer是线程安全的、StringBuilder是线程不安全,因此StringBuffer中很多的函数都是sychronized的,导致在单线程之中它的效率会比StringBuilder的效率低。 这有点像hashtable与hashmap的区别:hashtable是线程安全的,hashtable是线程不安全的。
2014-12-20 01:59:14 913 1
原创 Unique Binary Search Trees II
这道题承接Unique Binary Search Trees,只需要返回搜索二叉树的个数,用DP求解。但是这道题需要得到所有树的集合,可以用DFS求解。原题是这个样子的:Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.For example,Given n = 3, your program should return all 5 unique BST's
2014-12-16 22:54:39 759
原创 Convert Sorted List to Binary Search Tree
public TreeNode sortedListToBST(ListNode head) { if (head == null) return null; int len = 0; ListNode nextNode = head; while (nextNode != null) { nextNode = nextNode.next; len++; } return buildTree(head, 0, len - 1); } public Tree
2014-12-16 19:40:48 730
原创 Subsets
一道非常有意思的题目。原题如下:Given a set of distinct integers, S, return all possible subsets.Note:Elements in a subset must be in non-descending order.The solution set must not contain duplicate subsets.For example,If S = [1,2,3], a solution is:[ [3], [
2014-12-15 17:24:44 614
原创 Sum Root to Leaf Numbers
终于完成了LeetCode 上AC率在30%以上的题目,这道题是最后一道,纪念一下。原题是这个样子的:Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf
2014-12-13 23:41:16 635
原创 Thinking in Java---初始化与清理
1、初始化顺序 1)当首次创建一个新的对象的时候,或者是静态方法或者是属性第一次被访问时候,Java解释器就会尝试去定位相应的.class 文件。 2)载入.class 文件,有关静态初始化的动作都会在这个阶段执行。但是静态初始化只是在对象第一次载入的时候做一次初始化。 3)当用new新建对象的时候,Java虚拟机就会在堆上为对象分配足够的空间,并且将分配的空间清0。并将所有的属性初始化为默认值(数字类型初始化为0,而对象类型初始化为null)。 4)执行所有出现在属性定义处的初始化数据。 5)执
2014-11-21 19:14:09 779
原创 Thinking in Java--对象存储位置
1、寄存器这是最快的存储区,因为它位于处理器的内部。但是由于寄存器的大小数量都是有限的,所以寄存器是由编译器根据需求进行分配。你不能直接控制,也不能感觉到寄存器的存在。2、堆栈位于通用RAM(随机访问存储器)中,但是通过“堆栈指针”可以从处理器那里获得直接的支持。通过堆栈指针的上下移动来为程序分配需要的空间,它的速度仅仅次于寄存器的速度。创建程序的时候,Java编译器必须知道存
2014-11-20 22:52:08 691
原创 LeetCode---Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:"((()))", "(()())", "(())()", "()(())", "()()
2014-11-13 16:22:58 683
原创 单例模式
1、懒汉式(线程不安全)public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Sing
2014-11-13 15:22:12 731
原创 Linux安装jdk 8以及环境变量配置
1、下载jdk地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2、将刚刚下载的文件解压到/usr/lib/jvm文件夹之下,如果没有该文件夹,可以新建文件夹cp -r /home/xx/下载/jdk1.8.0_25 /usr/lib/jvm3、配置环境变量
2014-11-13 14:20:13 993
原创 Django---管理界面简单设置
1、设置可选字段为了设置某一个字段是可选的,不如说email,只需要修改其相关的模型,也就是在model.py中修改模型,将email=models.EmailField(blank=True),也就是添加blank=True。这句代码告诉Django,允许email字段的输入为空,Django中字段的默认blank=false,即是不允许输入为空。note:django在生成
2014-11-10 20:42:12 2131
原创 Django---MVC设计模式
把数据存储逻辑、业务逻辑和表现逻辑组合在一起的概念被称为软件架构的 Model-View-Controller (MVC)模式。 在这个模式中, Model 代表数据存层,View 代表的是系统中选择显示什么和怎么显示的部分,Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。Django是根据MVC模式实现的一个快速的web开发框架,在Django
2014-11-10 00:36:46 3924
原创 Django----模板
为了将html页面和python代码分离开来,有必要介绍一下模板的作用,Django中自带许多模板。下面一个html模板文件:Ordering noticeOrdering noticeDear {{ person_name }},Thanks for placing an order from {{ company }}. It's scheduled toship
2014-11-09 16:23:41 1003
原创 Django 从零开始
1.下载安装django方法1: pip install Django==1.6.5测试是否安装成功 :~$pythonimport djangodjango.VERSION(1, 6, 5, 'final', 0) 2.方法二: 大多数人会考虑从 http://www.djangoproject.com/download/下载安装最新的官方发布版。Django 使
2014-11-08 22:51:05 1436
原创 Nginx配置
默认路径 /etc/nginx/nginx.conf#运行用户user www-data;#启动进程,通常设置成和cpu的数量相等worker_processes 1;#全局错误日志及PID文件error_log /var/log/nginx/error.log;pid /var/run/nginx.pid;#工作模式及连接数上限events {use
2014-11-08 14:19:03 894
原创 Nginx+uwsgi+django+RabbitMQ+celery安装配置
1、安装ubuntu 12.04用wubi.exe安装 note:将iso文件和wubi.exe文件放在同一级目录之下,否则会报错2、安装git sudo apt-get install git3、安装nginxnginx是一个高性能的 HTTP 和 反向代理 服务器, sudo apt-get install install nginx
2014-11-07 23:12:06 2605
原创 程序、进程、线程的联系与区别
程序:一组指令的有效集合进程:程序的执行就是进程。也可以把进程看成一个独立的程序,在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代码只属于自己。进程是资源分配的基本单位,也是调度运行的基本单位。线程:线程被人们认为是轻量级的进程,它是进程中单独运行的一路程序。换句话说,就是一个进程可以包含多个线程,并且至少有一个主线程,同时同一进程的线程共享该进程的代码和数据
2014-09-26 22:38:38 4474 1
原创 快速算法实现----挖坑填数
快速排序作为时间复杂度为o(nlogn)的算法,在实际中经常用到。下面简单的讲解一下快速排序算法的实现思路。看到网上http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html这位大牛的思路写的非常好。挖坑填数,非常形象。下面简单的介绍一下。快速排序用到时分治法的思想。主要可以分为以下的三步。1、选定一个数作为基数
2014-04-05 21:11:03 1652
原创 读程序员编程艺术第七章---求最大子数组和
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。看到这个问题首先容易想到是蛮力法和递归。蛮力法在这儿就不介绍了,时间复杂度为o(n*n*n)。递归的方法的时间为o(nlogn)。我们知道子数组和最大的序列不是出现在左边就是出现右边,或者是左右都有一部分。不外乎这三种情况,故我们可
2014-03-25 21:47:02 795
原创 读程序员编程艺术第二章---字符串包含问题(二)
上篇中谈到可以通过快速排序将字符串的包含问题的算法时间复杂度优化至O(nlogn)+O(mlogm)+O(m+n),那么还有没有更好的算法时间复杂度呢?可以采用计数排序的方法,排序的时间复杂度为O(m+n),线性扫描的时间复杂度为O(m+n)。故总的时间复杂度为:O(m+n)+O(m+n)=O(m+n)。但是此时的空间复杂度为:O(m+n)。对于上述思路,编写代码如下:#inclu
2014-03-20 13:27:38 736
原创 读程序员编程艺术第二章---字符串包含问题
字符串包含问题:即一个字符串是否包含另一个字符串。这个问题虽然比较简单,但是想要优化轮询的时间复杂度却不是那么的简单。最常见的方法就是针对一个字符串的字符,一一与另一个字符串中的字符相比较,看他们是否都在其中。即方法一:O(n*m)的轮询方法,由于这种方法比较简单,代码我就不贴了。 方法二:基于O(mlogm)+O(nlogn)+O(m+n)的排序方法 的轮询,下面重点介绍这
2014-03-19 22:01:52 811
原创 读程序员编程艺术第一章---左旋字符串(三)
STL中的循环移位法用到了gcd原理。gcd原理的实现是简单的欧几里得算法又称辗转相除法,这里就不在赘述了。对于数组的循环移位,可以采用的方法一共有四种。1、将数组拷贝复制到相同长度的数组之中,改变顺序,并拷贝回原来的数组。2、先交换前面的能够交换的部分,在处理尾巴。如上一遍中的指针翻转法就是这么做的。3、分组交换。4、所有序号为(j+i*m)%n(j表示循环的起始链位置,i为
2014-03-18 10:19:53 585
原创 读程序员编程艺术第一章---左旋字符串(二)
上一遍介绍了左旋字符串的第一种方法,暴力移位法。今天我们通过指针翻转法来实现左旋字符串。下面看一个例子。字符串“abcdefghijk”通过左移得到"defghijkabc"。我们可以通过两步来实现。首先定义两个指针p1,p2指向要交换的两个字符,如p1指向a,p2指向d,将p1与p2指向的字符进行交换,然后p1++,p2++。这样反复重复,知道p2指向末尾的字符。这样可以得到字符串defghij
2014-03-16 20:05:20 669
原创 读程序员编程艺术第一章---左旋字符串
问题描述:把字符串的前几个字符移到字符串后面叫做字符串的左旋操作。例如将“abcdef”做左旋转2位就可以得到“cdefab”。要求对长度为n的字符串操作的时间复杂度为o(n),空间复杂度为o(1);思路一:#include "stdafx.h"#include"stdio.h"//左移一个字符void leftshiftone(char *s,int n){ c
2014-03-15 23:53:46 673
原创 Java多线程
线程是进程中一段连续的控制流程或者一段执行路径。它不能够独立存在,必须存在于某个进程之中。线程是一个程序内部的顺序控制流,运行中的程序就是进程,进程是静态的。 多进程和多线程之间的区别:多线程指的是同一程序中的多个控制流同时执行。 多进程指的是操作系统在同一时间运行多个任务。
2014-03-15 21:15:51 694
原创 关于今天参加学校ACM比赛的感想
今天参加了学校举办的ACM比赛,有一些感触。总结如下:1、ACM这种东西必须要非常的沉的下来心的东西,三天打鱼两天筛网肯定是不行的。只看到别人的成绩,却看不到别人的努力,别人之所以是“大牛”是有理由的,看到外校的AK所有的题目,除了崇拜之外还是崇拜,但是我也不会停下,会努力让自己变得更强。6道题的差距也是能够缩短的。2、一定要努力提高自己的 代码能力,坚持学习算法,可能最后
2013-12-01 23:23:40 897
原创 二路归并排序c++实现
#include #include "stdio.h"using namespace std;//将前后有序的r归并到r1void Merge(int *r,int *r1,int s,int m,int t){ int i=s; int j=m+1; int k=s; while(i<=m&&j<=t) { //将前后两个有序的
2013-10-08 22:32:11 1044
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人