![个人头像照片](https://ucc.alicdn.com/avatar/avatar3.jpg)
一线互联网开发者
1.两个都是java中的关键字,两个关键字使用的地方不一样
throw 是代码主动抛出异常。
throws是表示方法遇到异常直接抛出给调用方
不会影响,启动的时候只需要使用对应的java版本即可。
如update xx set ,..where version这个sql就是一个乐观锁,在更新失败之后进行retry或者回滚。
select * from xx where ... for update 这就是悲观锁。强制锁定记录,如果被锁则等待获取锁。
悲观锁性能比较差,乐观锁性能较好。应该根据具体场景进行使用
1.redis支持多种数据类型,list,hash,set,sorted set,kv,
2.redis是单线程,memcache是多线程
3.redis的持久化支持2中方式。AOF,ROF
1.什么是锁?
锁的核心是对资源进行独占,如cpu,io,内存,数据库中某个记录等等。在单机里面,锁的概念非常好理解,学校只有一个电话,很多人需要打电话,那怎么办呢?得有个管理员来负责安排谁可以打电话,至于优先顺序可以由管理员来定,如先到先打,或者时间短的先打,也可以事情重要的先打。在编程里面就是单机程序来控制谁来使用某个或者某些资源。
2.什么是分布式锁
单机里面锁很好理解,但是放到了多台机器的话,那么谁来控制使用资源呢,当然是需要一个第三方的协调着来记录当前某个资源是不是被某台机器的某个进程在使用中。这里分布式锁可以是数据库,可以是缓存,甚至zookeeper
1.自我学习
自我学习在什么情况下都需要坚持执行的。你需要的是体系化的学习,学习之后,说服主管和领导,把知识点转化到生产环境中,从一个小的点开始做,然后慢慢替换原来的系统架构。
2.寻找痛点,当前环境下肯定有痛点问题,找到它们,然后用技术的方式去解决它们,既能提高自己技术能力和格局,又能让老板们刮目相看。
3.就算是公司当前用的技术落后和老套,但是这些技术里面很多东西值得学习,所谓框架和概念再变核心思想都是不变的。
国内的话,100%是maven,毕竟maven可读性和易用性比较大,文档一大堆。
java写的。
这里必须是Mybatis,以前企业级的应用有用Hibernate,不过现在应该基本没多少人用了吧。Mybatis比较简单,再配合自动生成DAO脚本结合起来不要太爽。
druid,具体内容可以去官网看下,使用比较简单
这里快需要指出什么维度的快。
如果说是执行速度。那肯定是C++快,毕竟一个是编译后执行,一个是编译后在虚拟机上解释执行。
如果说一个电商业务需求来了,我相信使用Java来开发还是比C++快的,这里有很多原因,比如Java生态系统比较好,很多东西拿来用即可,Java也不用关心内存管理的问题,而且Java代码可读性可维护性都比较好,新人也能比较快接手。
如果现在一个公司想招人做个O2O,招聘的时候,如果去组建Java团队也会比C++快,毕竟现在搞Java的很多。
推荐深入学习java虚拟机,貌似作者叫做周志明来着。这是一本很好的入门jvm书籍。
预编译,生成了sql语法树,这里外面传入的参数只会作为参数,不能作为sql指令的一部分来执行。
其实这里我觉得都可以,不过一个公司最好要统一起来要不大家都是用基础类型,要不使用封装类型。
这里使用基础类型和封装类型有几个注意点我提一下,大家都知道基础类型都有默认值,这里开发的时候要注意默认值的问题,如boolean类型默认false,int默认0,封装类型默认值都是null,这里可以利用null来做判断是否做了初始化,当然使用的时候要考虑null的问题。封装类型有一些坑,比如判断相等的时候不能使用==,要用equal,因为-128到127会有缓存对象,在这个范围外是两个不同的对象。
一定要先打好java语法和原理基础,这里推荐think in java。这里java基础包含了常用的集合类如hashMap,ArrayList,ConcurrentHashMap等等这样的源码。还要线程,并发相关的类,主要是concurrent包下面的类。
语法ok了就可以继续深入学习JVM的内容了,推荐升入理解JAVA虚拟机
然后就是各种中间件,要深入到原理级别,最好每个都买本书系统性的学习。如果redis要具体到有哪些数据类型,持久化方式,一致性hash怎么做、迁移怎么做、和其他同类型中间件的对比,各种场景适合什么。
现在互联网公司动不动就是什么分布式,毕竟中国人口红利多,那就肯定是各种分布式的内容要了解,怎么分库分表,怎么拆分业务,用什么分布式服务。
基本上部分已经切换到1.8版本了,可能存在一些边缘和收购过来的还没有来得及升级。
阿里的JDK是基于OPENJDK上改的。
不知道为什么那么多人喜欢讨论语言的优劣,在合适场景使用合适的语言即可,考虑的因素很多,除了性能、学习成本、可维护性等等。
java作为一个在TIOBE上常年排名第一,使用人数和场景也是非常多的。业务肯定是java目前使用场景最多的了。各种中间件很多也是用java来写的。在客户端角度的话android framework语法也是java。
这个要看你个人在什么场景使用高并发。
对于写代码来说:通信场景中mina、netty是比较好的选择。如果是平时在业务处理中的话current包下面拿过来能满足绝大部分功能。
当然如果你指的是整个项目架构怎么解决高并发问题的话,那么分布式调用可以dubbo、分库分表也有现成的mycat等等太多多了。