众所周知,Costco在上海第一天开业,由于人流量过大,一度暂停营业.我觉得Costco的成功在于不走寻常路,换位思考(站在用户.厂商角度看问题),下面几点是我觉得它做得比较独特的地方: 1. Costco表面上是个是个超市,其实他是中介,它赚钱主要靠会员的费用,并不是靠商品的差价,而一般的超市和便利店,都是靠追求毛利润不断增长来赚钱的. 2. 只有会员才能消费,服务对象主要是中产阶级家庭.如果会员卡按300块一年的费用的话,Costco全球会员大概在1亿人左右,一年净利润大概在300亿左右.…
1.mybatis中两种取值方式? 回答:Mybatis中取值方式有几种?各自区别是什么? Mybatis取值方式就是说在Mapper文件中获取service传过来的值的方法,总共有两种方式,通过 $ 和 # , # 是 我们最常用的方式. 我们都说Mybatis是封装了JDBC,所以两种方式的区别还要从JDBC上来说, # 实际上是封装了问号占位符赋值的 方式,会使用JDBC中的PreparedStatement,变量处用?号代替,防止SQL注入. $ 直接拼接到sql语句中,值没有任何修饰,…
一.公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解 公平锁:多个线程按照申请的顺序来获取锁. 非公平锁:多个线程获取锁的先后顺序与申请锁的顺序无关.[ReentrantLock 默认非公平.synchronized] 总结:非公平锁的吞吐量比公平锁大. 可重入锁(又名递归锁):线程可以进入任何一个它已经获取锁的同步代码块中. 可重入锁的最大作用:避免死锁 自旋转:是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁. 好处:减少线程上下文切换的消耗, 缺点:循环会消耗CPU…
首先要说的是我对面向对象的理解,以及设计类的依据: http://www.cnblogs.com/xinchrome/p/4904931.html 理解了这篇文章,也就理解了现在要说的. 在面向对象编程的设计阶段,我们可以把设计出类作为一个目标,但是如果我们对进程执行什么样的过程没有清晰的掌握,那么也就无法确定进程需要用到哪些代码!就不可能谈如果对这些代码进行分类,直接画出准确的类图是困难的.数据库和类如何设计关键还是取决于进程的需求,没有通用的法则.我们采用不同设计方式的原因往往也是因为系统实…
闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数. 闭包: 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用.这样就构成了一个闭包. 一般情况下,在我们认知当中,如果一个函数结束,函数的内部所有东西都会释放掉,还给内存,局部变量都会消失.但是闭包是一种特殊情况,如果外函数在结束的时…
HashMap和HashTable之间的联系和区别如下: 1.HashMap几乎可以等价于Hashtable,但是它们之间继承不同:HashMap extends AbstractMap implements Map,而HashTable extends Dictionary implements Map: 2.HashMap可以接受为null的key和value,但HashTable不行: 3.HashMap是非synchronized(线程同步),而Hashtable是synchronize…
一.垃圾回收算法: 引用计数 复制算法 标记-清除 标记-整理 二.垃圾回收的方式: 串行(Serial).并行(Parallel).并发(CMS).G1 1.串行垃圾回收器(Serial) 它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,所以不适合服务器环境. 2.并行垃圾回收器(Parallel) 多个垃圾收集线程并行工作,此时用户线程是暂停的,用于科学计算.大数据处理等弱交互场景. 3.并发垃圾回收器(CMS) 用户线程和垃圾收集线程同时执行(不一定是并行,可能是交替…
一.CountDownLatch 主要用来解决一个线程等待多个线程的场景,计数器不能循环利用 public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(6); for (int i = 1; i <= 6; i++) { new Thread(()…
实现Socket心跳包主要分为两大类,第一采用tcp自带的KeepAlive,第二是自定义心跳包,恰巧我在产品VICA中都使用过,下面就这两种心跳包机制谈谈个人的理解与感受. 首先第一种KeepAlive机制,这种机制的原理是在客户机与服务器之间维持一个低级别的探查,当检查到一定时间双方没有发生通信时,则会启动通信心跳,连续通信三次,每次间隔一个时间,根据这次探查结果来确认当前socket是否可用. 这种机制的好处就在于具体的通信内容不需要程序员操心发送与接受,它自动实现了这套功能.如果客户机想…
先谈谈我的理解:异常处理机制可以说是让我们编写的程序运行起来更加的健壮,无论是在程序调试.运行期间发生的异常情况的捕获,都提供的有效的补救动作,任何业务逻辑都会存在异常情况,这时只需要记录这些异常情况,抛出异常,绝不能生吞异常,不要再finally中处理返回值. 先丢个问题:请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别? 经典回答 Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以…