如何不用修改原来的代码呢?
一.需求描述
最近遇到这样一个需求,有个数据计算的方法,我们需要优化一下,因为有些数据在一段时间内计算出的结果总是一样的,为了提高性能,我们把这些数据的计算结果缓存起来,这样下次计算的时候就先去缓存中查一下,要是缓存中存在,就直接把缓存中的数据返回,要是缓存中不存在就走原来的计算逻辑去计算,面对这个需求,我们需要做两件事情,在调用计算方法之前读取一下缓存,在调用方法之后把值写入缓存。这样的计算方法有10多个,相应的类也有10多个。
最近遇到这样一个需求,有个数据计算的方法,我们需要优化一下,因为有些数据在一段时间内计算出的结果总是一样的,为了提高性能,我们把这些数据的计算结果缓存起来,这样下次计算的时候就先去缓存中查一下,要是缓存中存在,就直接把缓存中的数据返回,要是缓存中不存在就走原来的计算逻辑去计算,面对这个需求,我们需要做两件事情,在调用计算方法之前读取一下缓存,在调用方法之后把值写入缓存。这样的计算方法有10多个,相应的类也有10多个。
在Linux系统中编写多线程程序,需要使用Linux系统本身的一个库函数来创建线程
我们经常使用sql语句来从数据库中查询一批数据出来,有时候我们需要把查询出来的数据分组,然后进行其他操作,比如统计,在实现这个需求的时候我们就会用到group by,从字面来解释按照XX来分组,到底按照什么来分组,需要我们在写sql语句的时候显式地指定,可以指定一个字段,也可以指定多个字段,通常group by和sql的函数结合起来使用。
我们在写HTML代码的时候后,经常遇到input元素,在使用input元素的时候,我们有时需要利用input的placeholder属性来告诉用户在这个输入框中应该输入什么内容,提升用户体验。不幸的是,IE系列的浏览器不支持placeholder属性,那么要想在IE系列的浏览器中提升用户体验,只能利用jquery来模拟了。
最近在开发一个大数据产品,这个数据产品主要是快速产出用户需要的数据,每次用户调我们数据产品提供的接口后,我们都会把接口的返回值存储到HBase和缓存,存储到HBase目的是后续做一些统计用,存储到缓存的目的加速数据产品的计算速度,因为某些数据在一段时间内计算的结果都是一样的。这个需求可以简单描述成这样,把数据产品的计算结果写缓存和HBase。
在互联网应用中,经常需要存储大量的用户数据,然后对这些数据进行加工,分析最终产出对用户有价值的数据,关于数据的存储,我们可以选择文件,缓存以及数据库等,在数据库我们经常使用关系型数据库(mysql,oracle等)来存储,当数据达到一定量就需要进行分表分库,以便提高数据库的查询效率,例如在mysql中当表记录行数超过400万的时候,通常就需要分表。但是如果我们存储数据的时候选择的是HBase,这时候就不用分表,HBase中的表可以支撑上亿行,上百万列,这些数据最终存储都是分布在多台机器上的,因此HBase可以存储大量的数据,但是HBase就不具备关系型数据库的关联查询,就是说在HBase中不存在表和表的JOIN查询,关系型的查询是关系型数据库天生的优势,这样在HBase中存储的数据一定是一些弱关系的数据,要是数据之间有很强的关系,那就不太适合存储在HBase中了。
Java是一门纯粹的面向对象语言,除了8种基本类型意外,其他都是对象。函数是编程语言中的一个非常重要的概念,Java中的函数都不是孤立存在的,不像C或者JS你可以定义一个孤立的函数,有函数就有函数调用,在Java中函数参数就两种类型,要么函数参数是基本类型,要么函数参数是引用类型。函数调用就会涉及到的参数的传递,在Java中,参数传递就一种方式,既所谓值传递,其实就是传递变量值的拷贝,如果参数类型是基本类型,那么传递的就是基本类型参数值的一份拷贝,如果参数类型是引用类型,那么传递的就是引用值的一份拷贝,而不是引用对象的一份拷贝,其实用C语言的指针来说,传递的就是指针所指内存空间地址的一份拷贝,正所谓Java中虽然没有指针,但全是指针。