在学习Java的过程中,面对感兴趣的知识时我们的学习方式无非是上网查资料,看专业书,听老师讲课,看大牛的帖子,在这种情况下我们总会听到一些新鲜且不懂得名词(尤其是在看大牛帖子的时候),我就整理一些经常遇到的那种名词,方便群众(个人力量是小的,如果大家有相关的名词解释打到评论里,我会及时加进去。如果大家看到了错误或者有更好的解释就在评论里直接指出,我不要面子的)。
1.POJO:(Plain Ordinary Java Object)简单的Java对象,就是普通的JavaBean,为了防止和EJB混淆提出的。–来自百度百科词条解释
2.EJB:(Enterprise JavaBean)我们将业务逻辑从客户端抽出来,做成组件打包放在服务器上,当用户需要时发送请求到服务器,通过网络调用组件。这个运行在一个独立的服务器上的,并封装了业务逻辑的组件就是EJB了。EJB是通过RMI技术实现远程对象调用的。–来自自己查阅整理
3.RMI:(Remote Method Invocation)远程方法调用。通过序列化实现分布式计算,远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。–来自自己查阅整理
4.Spring:一个轻量级的Java开发开源框架,其两大核心是IOC(控制反转 或叫做DI 依赖注入)和AOP(面向切面编程)(Spring实在是很庞大的一个概念,这两天会写一篇文章专门写Spring的,会把链接附上)。–来自自己查阅整理
5.数据库事物:是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。–来自百度百科
6.数据库事物的四大特性:(一)原子性:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。(二)一致性:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。(三)隔离性:多个用户同时操作一张表时,数据库为每个用户开启的事务,不能被其他事务干扰。对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行,数据库提供了多种隔离级别。(四)持久性:持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。–整理自数据库事务的四大特征以及事务的隔离级别 7.数据库事务隔离级别:① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
③ Read committed (读已提交):可避免脏读的发生。
8.线程安全:jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个variable,就可能会出现不可预知的结果,这就是为什么要实现线程安全。–自己整理
9.同步:当一个同步调用发出后,调用者要一直等待返回消息(或者调用结果)通知后,才能进行后续的执行。
10.异步:当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果)。在调用结束之后,通过消息回调来通知调用者是否调用成功。
11.阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。
12.非阻塞:在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
关于上面的概念举例说明:小明买奶茶,奶茶妹给小票。
①、同步阻塞:小明啥都不干等奶茶。
②、同步非阻塞:小明一边玩手机一边等奶茶。
③、异步阻塞:小明拿着小票啥都不干等着奶茶妹告诉他奶茶好了。
④、异步非阻塞:小明拿着小票玩着手机等着奶茶妹告诉他奶茶好了。
13.RPC:(Remote Procedure Call Protocol)远程过程调用协议。一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。rpc框架主要有两个发展方向:一个是跨语言:不同语言实现的客户端和服务端互相调用。另一个是支持服务治理:主要在服务发现,路由,容错处理等方面,比较早的开源框架是阿里巴巴的dubbo。
14.原子操作:就是不可分割的操作,在计算机中,就是指不会因为线程调度被打断的操作。例如 int a=3;不是一个原子操作,对于这个语句,至少有两个操作:1.声明一个变量a,2.给变量a赋值为3.(原子操作是不需要synchronized)
15.指令重排:计算机为了提高执行效率,会做的一些优化,在不影响最终结果的情况下,可能会对一些语句的执行顺序进行调整。volatile关键字的一个作用是禁止指令重排。
16.CAS(compare and swap(compareandset(A,B))):CAS是一种乐观锁,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当A和V相同时,将V修改成B,否则什么都不做。原理参考。
17.AtomicInteger:是一个提供原子操作的Integer类,通过线程安全的方式操作加减。十分适合多线程高并发的场景使用。AtomicInteger的源码中是使用volatile关键字修饰value的,这使VM的优化失去作用,导致效率降低。因此不要随意使用AtomicInteger。
18.native关键字:native关键字用来修饰java中的Native方法,即由非java语言在程序外部实现的方法。native关键字可以与其他java关键字连用,abstract除外,因为native修饰的方法表示这些方法是有实现体的,但是实现体是由非java语言在外部实现的,而abstract修饰的方法表明该方法是没有方法体的,需要由子类来实现。