Java
文章平均质量分 92
One-Direction
这个作者很懒,什么都没留下…
展开
-
XStream浅析
XStream简单介绍转载 2022-04-24 23:43:24 · 1673 阅读 · 2 评论 -
java -cp和java - jar的区别
java -cpjava -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,多个依赖在Window 上用分号";"隔开格式:java -cp .;myClass.jar packname.mainclassname表达式支持通配符,例如:java -cp .;c:\classes01\myClass.jar;c:\classes02\*.jar packname.mainclassnamejava -jarjava -jar转载 2020-12-02 19:07:08 · 258 阅读 · 0 评论 -
玩转Spring全家桶(一)
SpringBoot做了哪些配置DataSourceAutoConfiguration 配置DataSourceDataSourceTransactionManagerAutoConfiguration 配置DataSourceTransactionManagerJdbcTemplateAutoConfiguration 配置JdbcTemplate数据源相关配置属性通⽤• spring.datasource.url=jdbc:mysql://localhost/test• spring原创 2020-10-29 17:09:17 · 361 阅读 · 0 评论 -
注解@Slf4j的使用
声明:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;1.使用idea首先需要安装Lombok插件;2.在pom文件加入lombok的依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>转载 2020-10-13 11:14:22 · 230 阅读 · 0 评论 -
InnoDB解决幻读方法和原理
首先说结论,在RR的隔离级别下,Innodb使用MVCC和next-key locks解决幻读,MVCC解决的是普通读(快照读)的幻读,next-key locks解决的是当前读情况下的幻读。读取历史数据的方式,我们叫它快照读 (snapshot read),而读取数据库当前版本数据的方式,叫当前读 (current read)。当前读所谓当前读,指的是加锁的select(S或者X), update, delete等语句。在RR的事务隔离级别下,数据库会使用next-key locks来锁住本条记.原创 2020-09-28 16:52:06 · 326 阅读 · 0 评论 -
Spring学习(三)
SpringJDBC框架在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等。但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常,处理事务,到最后关闭连接。所以当从数据库中获取数据时,你所做的是定义连接参数,指定要执行的 SQL 语句,每次迭代完成所需的工作。JdbcTemplate 类JdbcTemplate 类执行 SQL 查询、更新语句和存储过程调用,执行迭代结果集和提取返回参数值。它也捕获 JDBC原创 2020-09-28 16:14:38 · 176 阅读 · 0 评论 -
联机交易与批量交易、批处理和流处理
联机交易与批量交易联机交易就意味着系统对外直接提供的交易,该类交易具有事务性——可回滚;实时性——交易有生命周期,并有超时机制等,调用方需实时等待被调方的反馈,成功或失败皆有反馈;并发性——同一类甚至同一个交易可同时被多个线程调用,相互间有锁处理机制。批量处理则意味着该交易相关的参数、系统状态已经锁定,系统需要进行的是某一类操作,该类操作具有统一性——使用相同的规则处理大量数据;串行性——并不是说批量交易中不能有并发,而是有固定的步骤,先做哪一步,再做哪一步,每一步都有对某些条件的依赖;可重复性——这个转载 2020-09-28 16:04:22 · 8732 阅读 · 1 评论 -
Maven之modules详解
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这会带来复杂度,给开发带来不便。为了解释原因,假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层:Dao层负责数据库交互,封装了Hibernate交互的类。Service层处理业务逻辑,放一些Service接口和实现相关.转载 2020-09-28 15:55:52 · 14571 阅读 · 2 评论 -
eclipse配置Tomcat时找不到server选项
用eclipese写网页很多时候需要配置tomcat,但有些朋友跟着网上的教程配置发现eclipse->【Window】->【Preferences】里没有【server】从而配置不了Runtime Environment。所以需要通过eclipse进行安装。下面给出解决办法首先,获取你的eclipse的版本类型,点击【help】->【about eclipse IDE】记下你的eclipse的版本号关闭页面,点击【help】->【Install New Software转载 2020-09-08 20:55:38 · 550 阅读 · 0 评论 -
spring学习(二)
当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱。可以使用 @PostConstruct 注释作为初始化回调函数的一个替代,@PreDestroy 注释作为销毁回调函数的一个替代,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后..原创 2020-08-19 18:11:52 · 312 阅读 · 0 评论 -
Spring中的IOC和AOP概念
IOC和AOP是Spring中的两个核心的概念,下面谈谈对这两个概念的理解。IOC(Inverse of Control):控制反转,也可以称为依赖倒置。所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B。所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如果不倒置,意思就是A主动获取B的实例:B b = new B(),这就是最简单的获取B实例的方法(当然还有各种设计模式可以帮助你去获得B的实例,比如工厂、Locator等等)转载 2020-08-18 11:50:46 · 363 阅读 · 0 评论 -
Spring学习(一)
在Spring中BeanFactory是IOC容器的实际代表者ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于 BeanFactory,ApplicationContext 会更加优秀。当然,BeanFactory 仍可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。配置元数据转换成一组构成每个 bean 定义的下列属性:class 这个属性是强制性的,并且指定用来创建 bean 的 bean 类。name 这个属性..原创 2020-08-17 18:15:23 · 231 阅读 · 0 评论 -
简单理解Java多线程Callable接口
Callable和Future出现的原因创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Callable和Future介绍Callable接口代表一段可以调用并返回结果的代码;Futur转载 2020-08-06 17:38:47 · 304 阅读 · 0 评论 -
一分钟理解@Scope注解
今天主要从以下几方面来介绍一下@Scope注解@Scope注解是什么@Scope注解怎么使用@Scope注解的使用场景1. @Scope注解是什么@Scope注解是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)、prototype(多例),Web 作用域(reqeust、session、globalsession),自定义作用域a.singleton单例模式 – 全局有且仅有一个实例b.proto转载 2020-08-06 17:30:51 · 633 阅读 · 0 评论 -
?和T的区别
泛型中占位符T和?有什么区别?这是一个好问题,有的人可能弄不清楚,所以我们这里简单的演示一下,相信大家一定能弄清楚的!先上两段代码:public static <T> void show1(List<T> list){ for (Object object : list) { System.out.println(object.toString()); }}public static void show2(List<?> list) {转载 2020-08-06 16:59:37 · 2010 阅读 · 2 评论 -
EJB到底是什么,真的那么神秘吗??
1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"?既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡"提高系统的运行效率。然而,估计很多人都搞错了,这个"服务群集"和"分布式运算"并没有根本解决运行负载的问题,尤其是针对数据库的应用系统。为转载 2020-07-31 14:24:11 · 218 阅读 · 0 评论 -
Spring——SpringMVC——SpringBoot
SpringSpring 是一个开源框架,为简化企业级应用开发而生。Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。Spring 是一个 IOC 和 AOP 容器框架。Spring 容器的主要核心是:控制反转(IOC),传统的 java 开发模式中,当需要一个对象时,我们会自己使用 new 或者 getInstance 等直接或者间接调用构造方法创建一个对象。而在 spring 开发模式中,spring 容器使用了工厂模式为我们创建了所需要的对象,不需要我们转载 2020-07-22 23:29:58 · 164 阅读 · 0 评论 -
Java常见的容器类及其区别
一、分类:大类型主要分为以下两种类型1)Collection一个独立元素的序列,这些元素都服从一条或者多条规则。 List必须按照插入的顺序保存元素,而set不能有重复的元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。2)Map:一组成对的“键值对”对象,允许你使用键来查找值。细分如下:|Collection| ├List| │–├LinkedList| │–├ArrayList| │–└Vector| │ └Stack| ├Set转载 2020-07-22 22:14:11 · 343 阅读 · 0 评论 -
javabean简单总结
一、 javabean 是什么?Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类,就是有默然构造方法,只有get,set的方法的java类的对象.专业点解释是:JavaBean定义了一组规则JavaBean就是遵循此规则的平常的Java对象满足这三个条件:执行java.io.Serializable 接口提供无参数的构造器提供getter 和 setter方法访问它的属性.简单地说,JavaBean是用Java语言描述的软件组件模型,转载 2020-07-16 19:59:47 · 389 阅读 · 0 评论 -
Java Serializable的理解和总结(二)
理解Java对象序列化1. 什么是Java对象序列化Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的状态,即转载 2020-07-14 22:21:12 · 259 阅读 · 0 评论 -
java单例模式之readResolve()
readResolve方法是干啥的? .这个方法跟对象的序列化相关(这样倒是解释了为什么 readResolve方法是private修饰的). ??? 怎么跟对象的序列化相关了?下面我们先简要地回顾下对象的序列化. 一般来说, 一个类实现了 Serializable接口, 我们就可以把它往内存地写再从内存里读出而"组装"成一个跟原来一模一样的对象. 不过当序列化遇到单例时,这里边就有了个问题: 从内存读出而组装的对象破坏了单例的规则. 单例是要求一个JVM中只有一个类对象的, 而现在通过反序列化,一个新转载 2020-07-16 14:53:07 · 396 阅读 · 0 评论 -
什么叫持久化? 为什么持久化?
1.什么是持久化?孙卫琴的《精通Hibernate:Java对象持久化技术详解》中有如下的解释,感觉还是比较完整的。摘抄如下:狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中广义的理解,“持久化”包括和数据库相关的各种操作。保存:把域对象永久保存到数据库。更新:更新数据库中域对象的状态。删除:从数据库中删除一个域对象。加载:根据特定的OID,把一个域对象从数据库加载到内存。查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载内在存中。转载 2020-07-15 00:05:46 · 615 阅读 · 0 评论 -
OID是什么意思
OID是什么在数据库设计中,需要为每一条记录设定key值。key值加上表名,形成了唯一的标志。在面向对象中,唯一标志的方式是使用OID(Object ID),OID用于标识每一个对象。正如ORMapping中的描述的那样,OID的唯一性有三种,具体类中对象标识唯一,类层次中对象标识唯一,所有类的对象标识均唯一。所以OID的唯一性策略可以和映射机制结合起来。在实际中,一般我们都把OID作为数据库中的主键。简单一点说,OID就是对象的唯一标识。如何存储OIDOID有几种存储机制:一种是使用自增转载 2020-07-14 23:38:56 · 16146 阅读 · 0 评论 -
Java Serializable的理解和总结(一)
1、序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;当你想用套接字在网络上传送对象的时候;当你想通过RMI传输对象的时候;3、当对一个对象实现序列化时,究竟发生了什么?在没有序列化前,每个转载 2020-07-14 22:20:13 · 184 阅读 · 0 评论 -
IOC和AOP
一、IOC首先:IOC(Inverse of Contro)控制反转,有时候也被称为DI依赖注入,它是一种降低对象耦合关系的一种设计思想。1.概念引入:一般而言,在开发中使用分层体系结构,都是上层调用下层的接口,上层依赖下层的执行,这就使得调用者依赖被调用者。所以现在调用者和被调用者之间就错在紧密得联系,假如现在一方要进行变动,那么就会导致程序出现较大得变动,显然这不合适,这样降低了程序得可扩展性。举个例子:现在要给一家卖茶叶的商家做一个管理系统:该商家一开始只卖绿茶,但是现在业务扩展了要开转载 2020-07-09 19:39:36 · 242 阅读 · 0 评论 -
通俗的语言解释什么是 RPC 框架
先说说原理。本地过程调用RPC就是要像调用本地的函数一样去调远程函数。在研究RPC前,我们先看看本地调用是怎么调的。假设我们要调用函数Multiply来计算lvalue * rvalue的结果:int Multiply(int l, int r) { int y = l * r; return y; }int lvalue = 10;int rvalue = 20;int l_...转载 2020-05-02 00:17:19 · 169 阅读 · 0 评论 -
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
类与类图类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。类的属性即类的数据职责,类的操作即类的行为职责一、依赖关系(...转载 2020-04-29 18:25:18 · 1744 阅读 · 1 评论 -
简单工厂、工厂方法、抽象工厂之小结与区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。工厂方法工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加...转载 2020-04-24 21:14:53 · 173 阅读 · 0 评论 -
简单工厂模式和策略模式的区别
简单工厂模式://抽象类abstract class AbsClass{ //抽象方法:提供一系列的算法操作 public abstract void acceptCash(string org);}//继承自抽象类class A:AbsClass{ //具体方法:提供一些列的算法操作 public override double acceptCas...转载 2020-04-24 20:15:55 · 225 阅读 · 0 评论 -
J2EE中的容器都包括哪些
J2EE中容器充当中间件的角色。主要的容器包括:WEB容器给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接跟容器中的环境变量接口交互,不必关注其它系统问题。主要由WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器...转载 2020-04-18 18:03:31 · 643 阅读 · 0 评论 -
存储过程的参数
存储过程的传入参数IN需求:编写存储过程,传入uid,返回该用户的unameDelimiter $$create procedure testa(my_uid int)Begin Declare my_uname varchar(32) default ‘’; select uname into my_uname from users where uid=my_uid; se...转载 2020-04-17 12:08:06 · 1921 阅读 · 0 评论 -
JAVA常见笔试题目
如果你被要求写一段代码读取一个序列化的对象,那么一般使用哪种Stream(D)A . FileInputStreamB . FileReaderC . DataInputStreamD . ObjectInputStream在JDBC程序中,Statement对象表示什么(B)A . 到数据库的连接B . 向数据库发送SQL语句的对象C . 数据源执行如下两个查询,结...原创 2020-04-16 00:13:43 · 435 阅读 · 0 评论 -
线程和线程池
线程在java中实现线程的方式:继承Thread类实现Runable接口。main方法其实也是一个线程。在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。对比实现Runnable接口比继承Thread类所具有的优势:1):适合多个相同的程序代码的线程去处理同一个资源2):可以避免java中的单继承的限制3):增加程序的健壮性,代码可以被...转载 2020-04-01 11:40:30 · 130 阅读 · 0 评论 -
Java线程池解析
经典面试题面试问题1:Java的线程池说一下,各个参数的作用,如何进行的?面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。面试问题3:线程池都有哪几种工作队列?面试问题4:使用无界队列的线程池会导致内存飙升吗?面试问题5:说说几种常见的线程池及使用场景?线程池概念简单理解,它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为...转载 2020-04-01 11:29:35 · 156 阅读 · 0 评论 -
进程和线程的深入理解
抽象类比:单CPU:一台单核处理器计算机 = 一个车间;多CPU:一台多核处理器计算机 = 一座工厂;进程:一个车间 = 一个进程; (即一个运行的程序)多进程:一座工厂可以同时运行多个车间;CPU和进程:单CPU只能同时运行单个进程,多CPU可以同时运行多个进程。线程:车间内一个工人 = 一个线程;进程与线程:一个进程可以包括多个线程。线程间内存共享:车间的空间是工人们共享的,比...转载 2020-03-31 23:37:58 · 153 阅读 · 0 评论 -
String、StringBuilder、StringBuffer的解析和比较
一、String的解析1.String的含义①String是不可以被继承的,String类是final类,String类是由char[]数组来存储字符串。②String是不可变的字符序列,如果存储abc则在字符串常量池中开辟长度固定为3的字符数组,无论怎么改变均会产生新的实例。2.String的方法由上图可知String的方法,不是在原有字符串的基础上进行修改的,都是new出了新的实例...转载 2020-03-30 22:45:49 · 190 阅读 · 0 评论 -
int和Integer的区别——Java
在说int和Integer的区别之前,先要弄清楚两个问题:一、java基本数据类型及其封装类二、java自动拆箱和自动装箱一、java基本数据类型及其封装类数据类型字节大小封装类byte8位Byteshort16位Shortint32位Intergerlong64位Longfloat32位Floatdouble64位...转载 2020-03-29 22:02:12 · 137 阅读 · 0 评论 -
栈帧
什么是栈?在数据结构中, 栈是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。在计算机系统中,栈也可以称之为栈内存是一个具有动态内存区域,存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,是由系统自动分配的,一般速度较快;存储地址是连续且存在有限栈容量,会...转载 2020-03-27 15:25:16 · 213 阅读 · 0 评论 -
Java之final关键字
前言针对Java语言中的final关键字,想必都不陌生了。本来主要是来对final做关键字做一个总结。final关键字用法1. 修饰类修饰类当用final去修饰一个类的时候,表示这个类不能被继承。注意:a. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。b. final类中的成员方法都会被隐式的指定为final方法。说明:在自己...转载 2020-03-27 15:20:12 · 306 阅读 · 0 评论 -
F11进行debug的时候eclipse报错但是运行正常
错误如下:ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): […/…/…/src/share/back/util.c:820]查阅资料经过我仔细的查阅Java Doc,发现其中有这么一段话:...转载 2019-04-06 21:15:22 · 609 阅读 · 0 评论