![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 50
swordbob
博观而约取,厚积而薄发
展开
-
log4j里面的info,debug,error级别详解
log4j的日志信息一共分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,也就是说,声明指定的级别后,只会显示大于该级别的日志信息,明白这一点很重要,这里Log4j有一个规则:假设设置了级别为P,如果发生了一个级别Q比P高,则可以启动,否则屏蔽掉。DEBUG: 这个级别最低的东东,一般的来说,在系统实际运行过程中,一般都是不输出的。因此这个级别的信息,可以随意的使用,任原创 2022-04-26 15:33:03 · 3558 阅读 · 0 评论 -
java读取大文件的最优方法
/** * 读文件并且写入另一个文件 */public static void readAndWrite() throws Exception { //创建一个随机读写文件对象 RandomAccessFile raf=new RandomAccessFile("out.txt","rw"); long totalLen=raf.length(); FileInputStream inputStream = new FileInputStream("out.txt").原创 2022-01-02 20:42:52 · 1406 阅读 · 0 评论 -
Java中的IO流
流是Java对不同输入源输出源的抽象,代表了从起源到接收的有序数据,有了它程序就可以采用统一的方式来访问不同的输入源和输出源了。按照数据的流向,可以将流分为输入流和输出流。其中,输入流只能读取数据、不能写入数据,而输出流只能写入数据、不能读取数据。按照数据的类型,可以将流分为字节流和字符流。其中,字节流操作的数据单元是byte(8位的字节),而字符流操作的数据单元是char(16位的字符)。按照使用的场景,可以将流分为节点流和处理流。其中,节点流可以直接从/向一个特定的...原创 2021-12-26 22:05:05 · 418 阅读 · 0 评论 -
静态代理和动态代理的区别
使用场合举例:如果需要委托类处理某一业务,那么我们就可以先在代理类中统一处理然后在调用具体实现类按照代理的创建时期,代理类可以分为两种:1.静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。如常用的接口实现就是用的Impl.class2.动态:在程序运行时运用反射机制动态创建而成。分为jdk动态代理和cglib动态代理:jdk用的是invokehandler,但必须声明接口才能使用,而cglib通过封装接口工具类实现了.原创 2021-12-18 16:18:20 · 326 阅读 · 0 评论 -
java易混淆概念
1.接口可以继承接口..但是要使用extends~而不是用implements如:interface a{}interface b extends a{}2.抽象类可以实现接口..比如java.util中的AbstractCollection类就是实现的Collection接口3.抽象类可以继承实体类下面这段执行无误的代码说明的所有的问题:interface MyInterface {}interface AnotherInterface extends MyInterface {}c原创 2021-12-18 16:10:25 · 362 阅读 · 0 评论 -
dubbo架构
dubbo使用和原理原创 2021-12-05 20:16:44 · 1460 阅读 · 0 评论 -
堆内存和栈内存区别以及jvm存放数据剖析
1.栈(stack) 在Java中,栈(stack)是由编译器自动分配和释放的一块内存区域,主要用于存放一些基本类型(如int、float等)的变量、指令代码、常量及对象句柄(也就是对象的引用地址)。 栈内存实际上就是满足先进后出的性质的数学或数据结构,栈内存的操作方式类似于数据结构中的栈(仅在表尾进行插入或删除操作的线性表)。 栈的优势在于,它的存取速度比较快,仅次于寄存器,栈中的数据还可以共享,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间。 缺点表现在...原创 2021-11-30 23:56:10 · 931 阅读 · 0 评论 -
spring事务传播机制详解
事务传播机制 PROPAGATION类似状态模式或策略模式线程是操作系统概念的,并取决与进程。事务则是相对于数据库而言的,如一条sql多条sql或整个程序7种传播机制:一、required检查是否有其他事务每次新增(REQUIRED)二、强制当前事务依赖,有三种机制,如有事务则1.非事务(SUPPORTS)2.异常(MANDATORY)3.新建并阻塞当前(REQUIRES_NEW)三、强制作为非事务处理,有两种机制,如有事务则1.异常(NEVER)2.新建并阻塞当前(NOT_SU原创 2021-11-27 20:00:42 · 125 阅读 · 0 评论 -
java设置新生代大小,jvm java虚拟机 新生代的配置
1.1.1.1.-Xmn参数参数-Xmn1m可以用于设置新生代的大小。设置一个较大的新生代会影响老生代的大小,因为这两者的总和是一定的,这个系统参数对于系统性能以及GC行为有很大的影响,新生代一般设置为整个堆空间的1/3到1/4左右最合适。参数-XX:SurvivorRatio用来设置新生代中eden空间和from/to空间的比例,公式如下:-XX:SurvivorRatio=eden/from =eden/to解释:from和to之间的两块区间内存是相等的。可以参考from和to之间.原创 2021-11-25 19:52:34 · 3143 阅读 · 0 评论 -
JVM中新生代为什么要有两个Survivor(from,to)
JVM分代复制算法原创 2021-11-25 19:43:15 · 966 阅读 · 0 评论 -
AQS 原理以及 AQS 同步组件总结
多线程底层实现原理AQS转载 2021-11-21 23:01:19 · 282 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了vola..转载 2021-11-21 20:29:52 · 70 阅读 · 0 评论 -
线程安全的ConcurrentHashMap分析
更好的选择:ConcurrentHashMap效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况 下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞 或轮询状态。如线程1使用put进行添加元素,线程2不但不能使用put方法添加元素,并且也不能使用get方法来获取元素,所以竞争越激烈效率越低。锁分段技术HashTable容器在竞争激原创 2021-11-14 15:25:04 · 152 阅读 · 0 评论 -
java多线程编程步骤
原创 2021-11-01 23:10:47 · 95 阅读 · 0 评论 -
synchronized与Lock的区别
两者区别:1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.synchronized会自动释放锁(a线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁;4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程.原创 2021-11-01 22:34:44 · 53 阅读 · 0 评论 -
java可重入锁概念
可重入锁是说几个人依次上厕所,用厕所时把门锁了,用之后再把门打开,并且可重复使用厕所原创 2021-10-31 18:44:58 · 170 阅读 · 0 评论 -
java锁的概念详述
锁其实也叫管程,是monitor监视器,也是一种同步机制,保证同一时间,只有一个线程访问被保护数据或者代码,jvm的同步(synchronized)就是基于进入和退出,使用管程对象实现原创 2021-10-31 18:10:46 · 101 阅读 · 0 评论 -
java线程状态管理
计算机线程的状态转换有创建、运行、阻塞、等待——唤醒、中断,而java线程状态管理如下原创 2021-10-31 16:29:43 · 156 阅读 · 0 评论 -
五种常见架构风格
五种常见架构风格Garlan和Shaw将软件架构风格分为五大类,数据流风格、调用/返回风格、独立构件风格、虚拟机风格和仓库风格。其中:(1)数据流风格包括批处理序列架构风格和管道/过滤器架构风格;(2)调用/返回风格包括主程序/子程序架构风格、数据抽象和面向对象架构风格和层次结构架构风格;(3)独立构件风格包括进程通信架构风格和事件驱动的架构风格;(4)虚拟机风格包括解释器架构风格和基于规则的系统;(5)仓库风格包括数据库架构风格和黑板架构风格。其他的还有特定领域软件架构、状态转原创 2021-09-21 10:21:35 · 3203 阅读 · 0 评论 -
消息队列RabbitMQ中多路复用Channel的理解
RabbitMQ 基本概念上面只是最简单抽象的描述,具体到 RabbitMQ 则有更详细的概念需要解释。上面介绍过 RabbitMQ 是 AMQP 协议的一个开源实现,所以其内部实际上也是 AMQP 中的基本概念:RabbitMQ 内部结构Message 消息,消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久原创 2021-06-09 22:45:44 · 5676 阅读 · 3 评论 -
五种IO模型详解以及base to设计模式
在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。下面就分别来介绍一下这5种IO模型的异同。1、阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。 典型的阻塞IO模...原创 2021-02-14 15:28:04 · 180 阅读 · 0 评论 -
面向对象编程中对于多变环境的解决方案
1.制定一个interface,然后用多个类实现同一个interface,本质上用到的是策略模式在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。2.通过更改类的属性来达到对应变化,这种方法只能通过更改特定属性的特定值来应对变化,推荐结合实现interface去做,毕竟interface属原创 2021-02-15 20:00:27 · 94 阅读 · 0 评论 -
Atomikos 分布式事务实现方式
Java事务类型分为本地(jDBC)事务跟分布式(JTA、JTS)事务JDBC事务:即为上面说的数据库事务中的本地事务,通过connection对象控制管理JTA事务:JTA指Java事AP(Java Transaction APl),是 Java数据库事务规范,JTA只提供了事务管理接口,由应用程序服务器厂商(如WebSphere Application Server)提供 实现,JTA事务比JDBC更强大,支持分布式事务。JTS不常用,这里不做介绍Spring + Atomikos 分布式事务原创 2021-02-19 21:58:37 · 391 阅读 · 0 评论 -
java分布式事务 推荐Atomikos事务管理器
Java事务类型分为本地(jDBC)事务跟分布式(JTA、JTS)事务JDBC事务:即为上面说的数据库事务中的本地事务,通过connection对象控制管理JTA事务:JTA指Java事AP(Java Transaction APl),是 Java数据库事务规范,JTA只提供了事务管理接口,由应用程序服务器厂商(如WebSphere Application Server)提供 实现,JTA事务比JDBC更强大,支持分布式事务。JTS不常用,这里不做介绍Atomikos事务管理器第三...原创 2021-02-27 12:51:20 · 149 阅读 · 0 评论