- 博客(46)
- 资源 (24)
- 收藏
- 关注
转载 HTTP原理
1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 在了解HTTP如何工作之前,我们先了解计算机
2016-04-19 13:20:21 631
转载 淘宝秒杀系统
一些数据:大家还记得2013年的小米秒杀吗?三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计,前端系统双11峰值有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,但到真正的写时流量要小很多了,当时最高下单减库存tps是红米创造,达到1500/s。热点隔离:秒杀系统设计的第一个原则就是将
2016-04-18 22:36:00 1318
转载 top k问题
问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数。(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据;(2)只要前K个,对整个输入数据的保存和排序是相当的不可取的。 可以利用数据结构的最小堆来处理该问题。 最小堆如图所示,对于每个非叶子节点的数值,一定不大于孩子节点的数值。这样可用含有K个节点的最小堆来
2016-04-18 21:07:29 294
原创 大数据面试题
1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,
2016-04-18 20:58:37 889
转载 Trie树
一:概念 下面我们有and,as,at,cn,com这些关键词,那么如何构建trie树呢?从上面的图中,我们或多或少的可以发现一些好玩的特性。 第一:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 第二:从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串。 第三:每个单词的公共前缀作
2016-04-18 16:15:13 280
转载 Linux命令分类
1.系统的关机、重启以及注销 shutdown -h now 关闭系统(1) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启(1) init 0 关闭系统(2) telinit 0 关闭系统(3) reboot 重启(2)
2016-04-18 14:59:18 350
转载 数据库SQL优化总结
网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.
2016-04-18 13:25:11 328
转载 数据库表的垂直拆分和水平拆分
垂直拆分垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分:把不常用的字段单独放在一张表;把text,blob等大字段拆分出来放在附表中;经常组合查询的列放在一张表中;垂直拆分更多时候就应该在数据表设计之初就执行的步骤,然后查询的时候用jion关键起来即可;水平拆分水平拆分是指数据表行的拆分,
2016-04-18 10:16:51 6357
原创 数据库优化的思路
1.SQL语句优化1)应尽量避免在 where 子句中使用!=或2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03
2016-04-17 16:45:49 543
转载 mySQL数据库Sql语句执行效率检查--Explain命令
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。Explain语法:explain select … from … [where ...]例如:explain select * from news;输出:+----+
2016-04-17 15:30:04 422
原创 背包问题
背包问题 背包问题是计算机科学里的经典问题。在最简单的形式中,包括试图将不同重量的数据项放到 背包中.以使背包最后达到指定的总重量。不需要把所有的选项都放入背包中。 举例来说,假设想要背包精确地承重20磅,并且有5个可以选择 放入的数据项,它们的重量 依次为11磅、8磅、7磅、6磅和5磅。对于选择放入的数据项数量不大时,人类很善于通过观察 就可以解决这个问题。于是
2016-04-15 23:38:58 498
转载 mybatis缓存
MyBatis缓存分为一级缓存和二级缓存一级缓存MyBatis的一级缓存指的是在一个Session域内,session为关闭的时候执行的查询会根据SQL为key被缓存(跟mysql缓存一样,修改任何参数的值都会导致缓存失效)1)单独使用MyBatis而不继承Spring,使用原生的MyBatis的SqlSessionFactory来构造sqlSession查询,是可以使用以
2016-04-15 10:41:15 1488
转载 优先级队列与堆排序
在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue) 。本文首先介绍优先级队
2016-04-14 15:19:03 404
原创 快排简单版本
快排的思想很简单,但是要手写,有些细节可能要想一阵子。看到一种相对于传统快排更简单的方式public class Quick { public static void quicksort(int arr[], int l, int r) { if (l < r) { int pivot = partition(arr, l, r); quicksort(arr, l, piv
2016-04-13 21:08:51 814
转载 MySQL行级锁、表级锁、页级锁详细介绍
页级:引擎 BDB。表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , 单独的一行记录加锁表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了
2016-04-13 13:55:26 281
原创 京东2016实习生招聘-选举游戏
京东2016实习生招聘 C++开发工程师在线考试编程题30分2/2选举游戏Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem Description:小东和其他小朋友正在玩一个关于选举的游戏。选举是通过投票的方式进行的,
2016-04-12 19:57:06 651
转载 进程的生命周期
进程是一个动态的实体,从创建到消亡,是一个进程的整个生命周期。进程可能会经历各种不同的状态,一般来说有三种状态。+ 就绪态: 进程已经获得了除cpu以外的所有其它资源,在就绪队列中等待cpu调度+ 执行状态: 已经获得cpu以及所有需要的资源正在运行+ 阻塞状态(等待状态): 进程因等待所需要的资源而放弃处理器,或者进程本来就不拥有处理器,且其它资源也没有满足状态转换:
2016-04-12 10:59:58 1659
转载 通道技术
1.通道及其作用:通道是一个独立于CPU的专管输入/输出控制的处理机,它控制设备与内存直接进行数据交换。引入通道的目的是:使数据的传输独立于CPU,使CPU从繁重的I/O工作中解脱出来. 它有自己的通道指令,这些通道指令受CPU启动,并在操作结束时向CPU发中断信号。通道方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。 2.双通道技术:
2016-04-12 10:31:26 9041
原创 nosql数据库不提供事务
NoSQL数据库不提供事务机制原因在于其分布式特点,一系列写操作中访问的数据可能位于不同的分区服务器,这样的事务就变成分布式事务,在分布式事务中实现原子性需要彼此协调,而协调是耗费时间的,每台机器在一个大事务过程中必须依次确认,这就需要一种协议确保一个事务中没有任何一台机器写操作失败。这种协调是昂贵的。像MongoDB, Cassandra, HBase, DynamoDB, 和 Ri
2016-04-11 19:14:53 1360
转载 操作系统进程调度算法
一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队
2016-04-11 15:31:42 534
原创 OOD六大原则
OOD基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。6大原则如下:1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。2) Liskov Subs
2016-04-11 15:17:16 3542
原创 jvm工作模式
目前的Java虚拟机支持Client和Server两种运行模式。使用参数-client可以指定使用Client模式,使用参数-server可以指定使用Server模式。默认情况下,虚拟机会根据当前计算机系统环境自动选择运行模式。使用-version参数可以查看当前的模式,如下所示:./java -version java version "1.7.0_40" Java(TM) SE R
2016-04-11 11:02:46 685
转载 java反射原理
要想理解反射,首先得了解类的加载过程,看下图: 我们的源代码经过编译之后变成字节码,然后在JVM中运行时通过类加载器加载字节码在内存中生成Class类对象,这个Class类对象内包含有field对象(类的成员变量生成)、constructor对象(类的构造方法生成)和method对象(类的方法生成)。当我们拿到一个类或者对象的时候就可以通过反射对它们进行
2016-04-11 10:26:20 885
转载 游标
一,游标是什么? 游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时放到了一个内存区域的虚表中,而这个虚表就是游标。 二,作用是什么? 1,大家都知道数据库中的事物可以回滚,而游标在其中起着非常重要的作用,由于对数据
2016-04-11 10:19:30 287
原创 寻找直方图中最大矩形
题目描述有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。测试样例:[2,7,9,4,1],5返回:14import j
2016-04-10 13:36:54 1105
原创 八皇后问题
题目描述请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。给定一个int n,请返回方法数,保证n小于等于10测试样例:1输出:1import java.util.*; public class Queens { public int sum=0;
2016-04-08 15:26:07 365
转载 Spring MVC工作流程图
图一图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象
2016-04-08 12:59:13 296
转载 java面试重点
1.Java基础 ArrayList,HashMap等集合框架类,重要基础类String等的处理。HashMap的底层存储结构等。 (也可以顺带考察下对接口,继承,重载重写的基本理解;以及异常处理的注意事项)。 2. 数据结构与算法 常见的查找算法及时间复杂度。 常见的排序算法及时间复杂度。 比较重要的数据结构,如链表,队列,栈的基本理解及大致实
2016-04-07 14:13:14 401
原创 100的阶乘有多少个零
100! = 100*99*98*97*...*2*1 先看看结尾零是如何形成的:结尾零当一个5的倍数与2的倍数相乘时就会形成。所以我们只要计算有几对(2,5),就能知道有几个结尾零。 先来数5因子有几个:在100内,5作为因子的数有5, 10, 15, 20, 25... 总共有20个。但是注意到25, 50, 75, 100都包含了2个5作为因子(25=5*5,
2016-04-06 17:04:14 6996
原创 java类实例化顺序
public class Initializing { public static void main(String[] args) { new TestSub(); }}class Sample { Sample(String s) { System.out.println(s); } Sample() { Syste
2016-04-06 10:17:10 429
转载 无状态类与静态类
黑格尔有句名言:存在即合理。以此为论据的话,静态类的使用必然有其合理性。不过物极必反,一旦代码过于依赖静态类,其劣化的解决则不可避免。这就好比罂粟作为一种草本植物,有其在药理上的价值,但如果肆无忌惮的大量使用,它就变成了毒品。什么是静态类所谓静态类指的是无需实例化成对象,直接通过静态方式调用的类。代码如下:12345
2016-04-05 09:18:42 1054
转载 Spring事务传播属性和级别
一、Propagation (事务的传播属性)Propagation : key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。P
2016-04-04 22:51:37 694
原创 用递归逆序一个单链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。public class HeapPrint { public static ListNode ReverseList(ListNode head) { if (head == null||head.next == null) { return head; } ListNode q = head.next;
2016-04-04 18:02:57 1070
转载 分布式系统数据一致性
在前面三篇文章中,介绍了关于分布式系统中数据一致性的问题,这一篇主要介绍CAP定理以及自己对CAP定理的了解。CAP定理是2000年,由 Eric Brewer 提出来的Brewer认为在分布式的环境下设计和部署系统时,有3个核心的需求,以一种特殊的关系存在。这里的分布式系统说的是在物理上分布的系统,比如我们常见的web系统。这3个核心的需求是:Consistency,Av
2016-04-03 23:16:32 506
原创 java volatile内存操作细节
在 java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配。其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量
2016-04-03 16:48:46 507 1
原创 java项目日志
工程目录结构 1. 导入如上 log下的对应jar包 2. 在src下新建log4j.properties文件,类容如(详细配置:http://www.cnblogs.com/suman/archive/2010/10/23/1858864.html ) [plain] view plain# 定义 DEBUG 优先级, R 为日
2016-04-03 14:19:47 866
转载 java atomic
http://ifeve.com/java-atomic/引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。Atomic包介绍
2016-04-02 16:07:46 469
转载 java Semaphore
Semaphore为并发包中提供用于控制某资源同时可以被几个线程访问的类实例代码:[java] view plain?// 允许2个线程同时访问 final Semaphore semaphore = new Semaphore(2); ExecutorService executorService =
2016-04-02 15:53:20 726
原创 自己写一个java.lang.String
可以,但是即使你写了这个类,也没有用。这个问题涉及到加载器的委托机制,在类加载器的结构图(在下面)中,BootStrap是顶层父类,ExtClassLoader是BootStrap类的子类,ExtClassLoader又是AppClassLoader的父类这里以java.lang.String为例,当我是使用到这个类时,Java虚拟机会将java.lang.String类的字节码加
2016-04-02 11:07:59 1475
转载 Java字节码浅析
http://ifeve.com/javacode2bytecode/明白Java代码是如何编译成字节码并在JVM上运行的非常重要,这有助于理解程序运行的时候究竟发生了些什么。理解这点不仅能搞清语言特性是如何实现的,并且在做方案讨论的时候能清楚相应的副作用及权衡利弊。本文介绍了Java代码是如何编译成字节码并在JVM上执行的。想了解JVM的内部结构以及字节码运行时用到的各个内存区域
2016-04-02 10:30:49 335
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人