如何设计一个本地缓存

前言

    Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距。我们将整理一下实现一个本地缓存都应该需要考虑哪些问题。

more >>

如何设计一个高并发系统

面试官心理分析

    说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶的劲了。为啥?因为你没看到现在很多公司招聘的JD里面都是说啥,有高并发经验者优先。
    如果你确实有真学实才,在互联网公司里干过高并发系统,那你确实拿offer基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。
    假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十几万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器?缓存咋用的?MQ咋用的?数据库咋用的?就是深挖你到底是如何抗住高并发的。
    因为真正干过高并发的人一定知道,脱离了业务的系统架构都是纸上谈兵,真正在复杂业务场景而且还高并发的时候,那么系统架构一定不是那么简单的,用个redis,用MQ就能搞定?当然不是,真实的系统架构搭配上业务之后,会比这种简单的所谓“高并发架构”要复杂很多倍。
    如果有面试官问你个问题说,如何设计一个高并发系统?那么不好意思,一定是因为你实际上没干过高并发系统。面试官看你简历就没啥出彩的,感觉就不咋地,所以就会问问你,如何设计一个高并发系统?说白了本质就是看看你有没有自己研究过,有没有一定的知识积累。
    最好的当然是招聘个真正干过高并发的哥们,但是这种哥们人数稀缺,不好招。所以可能次一点的就是招一个自己研究过的哥们,总比招一个啥也不会的哥们好吧。
    所以这个时候你必须的做一把个人秀,秀出你所有关于高并发的知识。

more >>

Mybatis经典面试题

1.什么是mybatis?
    Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态SQL,可以严格控制SQL执行效能,灵活度高。
    Mybatis可以使用XML或注解来配置映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
    通过XML文件或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由Mybatis框架执行SQL并将结果映射为java对象并返回。(从执行SQL到返回result的过程)

more >>

mybatis中oracle的批量新增与批量更新

    mybatis中mysql的批量插入比较常规,但oracle的批量有所不同,若按照mysql的方式书写,则会报“命令为执行结束”的错误。所以一下列出oracle的批量新增与修改的几种方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 批量新增第一种方式 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO STUDENT(ID,NAME)
<foreach collection="list" item="student" separator="UNION ALL">
(
SELECT
#{student.id},
#{student.name}
FROM
dual
)
</foreach>
</insert>

    

more >>

Mysql数据库优化

前言
    数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还尽可能的节约系统资源,以便让系统提供更大的负荷。
优化
    优化分为两大类:软优化和硬优化,软优化一般是操作数据库即可,而硬优化是操作服务器硬件及参数配置。

more >>

设计模式-工厂模式

什么是工厂模式
    工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式在java程序系统可以说是随处可见,因为工厂模式就是相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a = new A()工厂模式也是用来创建实例对象的,所以以后new对象就要多个心眼,是否可以考虑使用工厂模式。虽然这样做可能多做一些工作,但会给系统带来更大的可拓展性和尽可能少的修改量。

more >>