关闭

建索引的原则-以innodb为例

一、写在前面       随着开发、测试任务进入尾声,大家都在整理一些项目发布前的一些准备工作,其中一个重要的工作就是为之前写的一些sql语句建立索引,这高并发、高访问量的环境下是非常有必要的,建立一个好的索引能够极大地提高sql语句的查询效率,那么问题来了,到底什么是索引,怎样才能建立一个好的索引呢?本文以mysql Innodb存储引擎为例,结合实际的项目来看一下,如何建立一个好的而索引。 二...
阅读(1203) 评论(0)

提高数据库查询速度的几个思路

提高数据库查询速度的几个思路 :1、缓存,在持久层或持久层之上做缓存;2、数据库表的大字段剥离,保证单条记录的数据量很小; 3、恰当地使用索引;4、必要时建立多级索引; 5、分析Oracle的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描; 6、表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表、分库)还是无业务含义的分区(如根据ID取模分...
阅读(983) 评论(0)

Direct Buffer vs. Heap Buffer

1、 劣势:创建和释放Direct Buffer的代价比Heap Buffer得要高; 2、 区别:Direct Buffer不是分配在堆上的,它不被GC直接管理(但Direct Buffer的JAVA对象是归GC管理的,只要GC回收了它的JAVA对象,操作系统才会释放Direct Buffer所申请的空间),它似乎给人感觉是“内核缓冲区(buffer in kernel)”。Heap Buffe...
阅读(914) 评论(0)

PreparedStatement与Statement

PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还...
阅读(843) 评论(0)

乐观锁与悲观锁及应用举例

最近因为在工作中需要,学习了乐观锁与悲观锁的相关知识,这里我通过这篇文章,把我自己对这两个“锁家”兄弟理解记录下来;       - 悲观锁:正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)的修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即...
阅读(1905) 评论(0)

MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

1.MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”用来标记是否为空,加载索引信息时用varchar(255)类型会占用更多的内存; (备注:当字段定义为非空的时候,是否为空的标记将...
阅读(2900) 评论(0)

介绍Amazon分布式存储引擎Dynamo

Dynamo 是 Amazon 公司的一个分布式存储引擎。 那么这个什么引擎又是什么?首先,假设一个场景,你的网站要存储用户登陆的IP。这个问题怎么解决呢?传统的方法是用数据库。数据库提供了方便的操作接口,复杂的查询能力以及事物的保证。好,现在假设大家都很喜欢你的网站,访问的人越来越多。一个数据库已经处理不过来了。于是你安装了3台数据库主机,把用户分成了三类(男人,女人,IT人;总是有某种方法把用...
阅读(1678) 评论(0)

mysql子查询慢的问题

当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现“DEPENDENT SUBQUERY”时,你要注意了,你已经掉入了mysql子查询慢的“坑"。。。下面我们来看一个具体的例子 有这样一条查询语句:        SELECT gid,COUNT(id) as count FROM shop_goods g1 WHERE status =0 and gid...
阅读(1837) 评论(0)

跨库事务一致性问题的解决方案(例)

我们看一个跨库事务一致性的问题,这是一个简单的场景:有新老两个系统,对应新老两套数据库,新数据库采用分库分表的设计,考虑到项目发布之后可能存在风险,采取了新老系统的并行方案。这个系统的业务比较简单:接收来自外部的数据,然后对数据进行核对处理。为了保证新老系统能够并行,在接收数据的时候必须实现双写方案,从而导致了跨库事务的一致性问题。    下面一幅图展示这一简单的场景    这里面会存在一个小问题...
阅读(3321) 评论(1)

JAVA动态代理

JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。  按照代理的创建时期,代理类可以分为两种...
阅读(1363) 评论(0)

常见面试之机器学习算法思想简单梳理

前言:   找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。   纵观IT行业的招聘岗位,机器学习之类的岗位还是挺...
阅读(4085) 评论(0)

vmstat命令

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmst...
阅读(1333) 评论(0)

C语言中的内存泄露,如何避免,如何检测

有些程序并不需要管理它们的动态内存的使用。当需要内存时,它们简单地通过分配来获得,从来不用担心如何释放它。这类程序包括编译器和其他一些运行一段固定的(或有限的)时间然后终止的程序。当这种类型的程序终止时,所有内存会被自动回收。细心查验每块内存是否需要回收纯属浪费时间,因为它们不会再被使用。 其他程序的生存时间要长一点。有些工具如日历管理器、邮件工具以及操作系统本事经常需要数日及至数周连续运行,并...
阅读(5992) 评论(2)

集成学习---bagging and boosting

作为集成学习的二个方法,其实bagging和boosting的实现比较容易理解,但是理论证明比较费力。下面首先介绍这两种方法。 所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升分类方法效果。严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。 1.bagging bagging算是很基础的集成学习的方法,他的提出是为了增强分类器效果,但是在处理不平衡问题上...
阅读(1602) 评论(0)

Boosting算法简介

一、Boosting算法的发展历史   Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合为一个分类器的方法,即boostrapping方法和bagging方法。我们先简要介绍一下bootstrapping方法和bagging方法。   1)bootstrapping方法的主要过程   主要步骤:...
阅读(2264) 评论(0)
85条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:326025次
    • 积分:4168
    • 等级:
    • 排名:第7661名
    • 原创:71篇
    • 转载:14篇
    • 译文:0篇
    • 评论:14条
    博客专栏