南国倾城

左手代码,右手年华


  • 首页

  • 标签

  • 归档

  • 搜索

从面向对象看JavaScript(五)—— 继承

发表于 2016-09-14 | 阅读次数:

继承的本质

  继承的初衷是复用。即已经有一个原始的类,希望在保留原始类的所有属性和方法的前提下,进行扩展或修改,以最大限度地降低开发成本。JavaScript实现继承,也是源自这个思想,即想办法让新的引用类型能够访问别的引用类型的所有属性和函数。

阅读全文 »

从面向对象看JavaScript(四)—— 内存管理

发表于 2016-09-14 | 阅读次数:

前言

  与java类似,JavaScript也有两种垃圾回收方式,分别是标记清除和引用计数。目前基本上都是使用标记清除的方式,引用计数存在循环引用的问题,实际中很少使用,但IE中的BOM和DOM对象却是用引用计数方式来做垃圾回收,非常容易造成内存泄漏。

阅读全文 »

从面向对象看JavaScript(三)—— 属性权限管理

发表于 2016-09-14 | 阅读次数:

对象的私有成员

  原文再续,书接上一回。第一讲里我们提到怎么定义类,怎么创建对象。但在这些对象上创建的属性与方法,都是能被直接访问的,JavaScript并没有提供private,public,protected等属性的权限管理机制。但是,利用闭包我们完全可以实现对象属性和方法的私有化管理。

阅读全文 »

从面向对象看JavaScript(二)

发表于 2016-09-13 | 阅读次数:

函数也是对象

  原文再续,书接上一回。话说讲到JavaScript对象里拥有属性与函数,上一讲介绍了属性,这一讲重点讲一讲函数。JavaScript的函数与Java的方法还是有很多不一样的地方,最主要的一点是,JavaScript的函数也是对象。它也可以拥有自己的属性与方法,它可以作为值像一般属性一样传递,成为其他函数的参数或者返回值。

阅读全文 »

从面向对象看JavaScript(一)

发表于 2016-09-13 | 阅读次数:

前言

  JavaScript作为一种脚本语言,语法简单(求其),易上手,适合开发;同时,作为当今前端编程方面占据垄断地位,甚至逐步向后端发展的强势语言,它的前景十分美好,功能足够强大。既然是脚本语言,自然没有c,c++,Java等传统语言的严谨,但是利用它仍然可以基本覆盖其他语言能做到的高级功能。

  下面我就从面向对象的角度,整合JavaScript里函数,对象,引用类型,原型,闭包,作用域链等知识点,去探讨JavaScript是如何定义对象,构造类,设置属性和函数的私有公有权限,实现继承,利用作用域以及管理内存的。下面的代码例子基本都出自《JavaScript高级程序设计》。

阅读全文 »

PostgreSQL MVCC机制浅析

发表于 2016-09-05 | 阅读次数:

从丢失更新说起

  上一讲提到了数据并发在数据库中的四大问题,其中一个便是丢失更新。丢失更新的产生是当两个事务同时读某一记录时,A事务先修改该记录,B事务再修改的时候把A的修改覆盖掉,导致A事务的更新丢失了。更具体的例子可以参考上一讲。数据库处理丢失更新有两种方法,分别是悲观锁方法与乐观锁方法。

悲观锁与乐观锁

  对于某一特定的业务需求,如果实现该需求需要并发地更新数据库的同一记录,就有可能发生冲突。解决这种冲突可以选择两种办法,分别是悲观锁与乐观锁。

阅读全文 »

数据库事务隔离级别与锁机制实现(转载)

发表于 2016-09-04 | 阅读次数:

写在前面

  数据库并发处理是一个非常重要的问题,其实现本质上同应用程序一级的并发控制原理是一致的,也是通过加锁解决。而事务隔离级别相当于一段独立的代码块,具有原子性、一致性、隔离性、持久性4个特征。本来想自己写一篇总结,但看到有一篇文章总结得非常好,就直接转载过来。

  以下内容转载自:宋杰的站点 » 【转载】数据库事务隔离级别和锁实现机制

  原文的版式我修改了一下,有些跟核心内容无关的我删去了,某一两处内容我觉得不对的在后面加了备注。

阅读全文 »

从压力测试看数据库连接池配置

发表于 2016-08-31 | 阅读次数:

什么是数据库连接池

  写过后台的都知道,在操作数据库之前,先要获得数据库连接,然后用数据库连接去进行数据库的增删改查等操作。建立连接和销毁连接都是一笔很大的性能开销,因此产生了连接池的技术。连接池与线程池一样,都是一种资源池,专门用于处理共享资源的。它可以维护一定数量的连接不销毁,当有连接申请时,从池中取出供客户使用;使用完毕则释放归还池中;当池中连接的数量不足时,还可以创建一部分连接。

使用连接池的优点

  1. 减少建立连接与销毁连接的性能开销,避免频繁进行连接的建立与销毁,提升系统性能。
  2. 限制客户端向数据库发起的数据库访问,避免系统宕机,也避免过多的连接被直接拒绝。

数据库连接池的配置

  目前有很多连接池框架,使用这些框架非常简单,最主要就是对一些参数进行配置。这些参数包括最大连接数,最小连接数等,参数取值不同,对应用的性能与稳定性会造成不同的影响。下面我就以Tomcat自带的DHCP数据库连接池为例,通过对一个微博Web系统的同一条微博进行并发的疯狂评论操作作压力测试,去看看数据库连接池的参数配置对系统会产生什么样的影响。相信通过下面的压力测试分析,读者们可以体会到上述使用连接池的优点,同时也可以结合上一讲对压力测试的介绍,加深对压力测试的理解,了解到压力测试在系统优化中起到什么样的作用。

阅读全文 »

JMeter压力测试基础

发表于 2016-08-29 | 阅读次数:

什么是压力测试

  当我们开发完一个Web系统,实现了需求中的所有功能,此时还不能马上将其上线。我们必须对这个系统进行充分的,全面的测试,最大程度地确保它不会出错。压力测试就是这些测试的一种。压力测试的目的是为系统模拟一个现实的访问场景,建立一堆线程去并发地访问系统,了解这个Web系统能支持多大的并发量,或者说支持多少用户同时在线而不会崩溃。我们通过调整并发的线程数,访问时间等参数,去了解在一定的硬件配置下,我们的系统能支持多少线程在多少时间内同时访问。在确定了这些测试数据以后,我们便对这个Web系统的性能有一个比较客观全面的了解,从而可以更好地寻求优化的方案。

关于JMeter

  JMeter是用java实现的开源的压力测试工具,功能强大,使用简单,在压力测试中占据极其重要的地位。这一讲就以JMeter对一个简单的微博系统进行压力测试的实例入手,介绍一下JMeter最基本的一些知识,看看JMeter是怎么对HTTP request进行测试的。虽然是以实例的形式去介绍,但涉及的都是JMeter最基本的内容,更深入的学习还需不断参考JMeter官方文档。

阅读全文 »

ORM in JaveEE——JPA

发表于 2016-08-26 | 阅读次数:

什么是ORM

  ORM,即Object Relation Mapping,对象关系映射。我们一般用数据库作数据的持久化存储,通过针对表,属性等进行各种sql的操作,来进行增删改查。但作为程序员,在面向对象思想大行其道的今天,我们更倾向于处理对象,而不是直接处理数据库里面的关系表。我们希望在程序的业务逻辑中,一切皆是对象,而不是表与表的关系,表之间的属性。于是一套从表到对象的映射技术,便应运而生。目前,很多框架都可以实现从关系型数据库到对象的映射,例如Hibernate,EclipseLink等。只需要编写一些配置文件,便可以轻松实现。

什么是JPA

  由于市面上有很多框架都可以实现ORM,我们使用不同的框架,就需要一套不一样的配置文件,一套不一样的代码。换言之,我们的工程与这些框架是紧耦合的。如果我们想更换这些框架,那么改动就非常大了。JPA就实现了一套统一的接口标准,让我们可以自由选择不同供应商的不同ORM框架,实现与这些第三方框架的解耦合。并且,JPA广泛使用注解,代码简单,开发十分方便。

JPA与RESTful API

  前面我们提到RESTful API使用JAX-RS实现的。RESTful API与JPA没有直接的关系,但我们知道通过RESTful API我们实际上是把对对象的增删改查映射到HTTP方法上。而JPA相当于是处理下一层的工作,把对数据库表的增删改查映射到对象上。这样,经过JAX-RS到JPA再到数据库这么三层的处理,我们便可以利用RESTful API来实现我们的业务逻辑。

阅读全文 »
1…345
Gavin Wong

Gavin Wong

蟾宫桂花千里香,暖风拂面惹人狂。我欲因之凌霄起,嫦娥丹桂尽入囊。

43 日志
39 标签
© 2019 Gavin Wong
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4