写到哪里算哪里

结尾有彩蛋

抽象类,接口。

经常被别人问到这个问题,一般都是一本正经的胡说八道。自己在写代码的过程中基本都是定义接口,抽象类用的很少。主要原因是真的懒。抽象类的使用是继承,一个类只能继承一个父类。接口就是usb插口,随便用。

痛下决心决定把这个问题解决了,都是3年的老司机了不能在丢人了,理论还是要跟上。举个例子,用通俗的语言解释这2个东西是什么。比如汽车和自行车。2者的共同点都是交通工具可以跑。那么我们将跑这个特性提出来,单独定义一个run()方法,那么不只是汽车,自行车可以用,火车,兔子啥的只有有这个特性都可以调用这个run()方法。接口真特么好用。抽象类的定义可以这样看,万物皆对象,那么汽车就是一个对象,汽车的特性:4个轮子,可以跑。那么自行车就没办法继承了。但是宝马,法拉利啥的就可以直接继承汽车这个类。

从语言上来说的话,1.抽象类是一种设计模式,当你需求改变的时候,只需要改父类(如同ppt模板,修改模板,使用这个模板的自动获取),接口就必须要更改实现的子类。2抽象类中的成员变量有多种类型,接口必须用final修饰。3.抽象类比接口快。4.抽象中中只要方法没有全部被实现那么改类仍然是抽象类,接口只允许方法的声明。从应用场景来说的话,描述一类事物的时候,发现改事物缺失存在着某种行为,但是不具体。这个时候使用抽象类。比如业务需求一个门,门的作用open(),close().抽象类和接口都可以使用,但是突然增加一个警报门,一个声控门。如果开始直接定义接口,后期改动直接GG。

inner join , left join ,right join , full join 

有一天公司的后台让我帮忙改一下xml的sql,正好我在看exists和in的区别。顺便记录下这几个的区别

假设有2张表,我们可以类比为数学上的2个集合。

a inner join b 等同写法a=b  a与b集合取交集。count数量为a与B交集

a left join b  等同写法a=b(+),a集合为主表去匹配b表,count数量a集合

a right join b 等同写法a(+)=b,b集合为主表匹配a表,count数量集合

a full join b  a于b表取并集。等同于union all,count数量a+b 

下面在说一下exists和in的区别

原理我也不知道说的什么玩意,大概是in把外表和内表做hash连接,exists外表做loop循环然后在匹配。根据这个来理解的话。内外表数据量相当时查询效率没啥差别。内表数据量大的用exists,因为外层循环少,速度快。内表数据量小的用in,hash连接匹配查找快。然后还有一个not exists和not in ,查询效率not exists比not in 要快。原理我也不知道说的什么玩意,一本正经的胡说八道就是not exists的子查询用到了索引。

在sql优化中,所有的exists都可以转化为join。给出2个sql 仅供参考

select  count(1) from tableA a where exists (select 1 from tableB b where a.cloum =b.cloum)

select count(1) from tableA a join (select distinct cloum from tableB b) on a.cloum = b.cloum


段子属于转载,原文链接找不到了。

1、程序员找不女朋友的原因
程序员问禅师:“大师,我身体健康,思想端正,各方面都不错,为何就是找不到女朋友呢?”
禅师浅笑,答:“原因很简单,不过若想我告诉你,你需先写一段java代码。”
青年略一沉吟,写完了。
“再写一段C#” 写完了,
“再写一段php” 写完了,
“再写一段js”,写完了,
“这就是原因” 。

2、世界上最没用的几句话
警察:不要跑!
国足:必胜! 
老师:同学们不要睡了!
程序员:这个不能实现!

3、世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她.

4、假如生活欺骗了你,找50个程序员问问为什么编程;假如生活让你想死,找50个程序员问问BUG改完了没有;假如你觉得生活拮据,找50个程序员问问工资涨了没有;假如你觉得活着无聊,找50个程序员问问他们一天都干了什么!

5、c程序员看不起c++程序员, c++程序员看不起java程序员, java程序员看不起c#程序员,c#程序员看不起美工, 周末了,美工带着妹子出去约会了…一群SX程序员还在加班!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值