
Java
文章平均质量分 87
那怪大尾巴狼咯
这个作者很懒,什么都没留下…
展开
-
Java多线程并发——CAS和AQS
同步实现方式CASCompare And Swap,CAS原子操作,更新之前,比较期望值,如果是期望值的话,写数据,否则不写数据。Java的CAS操作调用的是unsafe本地Native方法,通过使用CPU相关指令来达到原子性操作,包括多核CPU。通常为保证更新成功,操作需要自旋ABA问题,CompareAndSwap的值从A变为B,再由B变为A,这种情况下,CAS认为值没有变,但其实是变了的,需要使用版本号来解决,Atomic使用AtomicStampedReference来解决CAS原创 2021-06-30 21:21:43 · 399 阅读 · 2 评论 -
Java垃圾回收
标记引用计数引用计数无法解决重复引用问题,导致垃圾被回收根引用root引用法,栈中局部变量,方法区全局变量出发,没有被引用到的对象垃圾回收算法标记清除标记需要回收的对象,然后回收对象,产生内存碎片,浪费资源复制标记需要回收的对象,复制到一块空区域,回收原来的整块区域特点:解决了内存碎片缺点:需要额外内存空间标记整理没有内存碎片,也不浪费内存,但是比较耗时内存分代堆内存分为年轻代,老年代minorGC,回收年轻代FullGC,回收老年代M..原创 2021-06-29 20:04:56 · 267 阅读 · 2 评论 -
Java类加载机制
类加载,类加载器将编译好的class文件以字节码的形式加载到运行内存的元数据区(java7及以前是方法区),并且在堆内创建Class类型的对象,来描述class文件的内容。程序可以通过class对象来调用类的属性,方法等功能。类加载来源:文件、远程服务、Jar包等字节流。每个Class都有一个ClassLoader,来标识class是由哪个ClassLoader加载的类加载过程延迟加载,不是一次性加载全部需要的类,而是按需加载,程序在运行过程中会逐步遇到需要的类,需要时使用ClassLoader.原创 2021-06-25 17:21:37 · 279 阅读 · 1 评论 -
Java内存
Java内存区域在1.7以及之前,Java的内存区域如下图:Java1.8后,Java的内存区域发生了变化,如下图:其中,程序计数器 ,线程私有编译后,程序变为字节码,程序计数器指向某一行字节码,通过改变计数器值,可以指向下一行字节码。线程切换时,保存执行现场,重新获得cpu时间片时,继续根据保存的现场执行程序。栈,线程私有支持程序执行的数据结构,每个方法一个栈帧,栈帧中包括:局部变量表方法出口操作数栈,也是一个栈,运行时,一行一行的代码入栈出栈动态链接,方法调用时,目标.原创 2021-06-25 15:09:24 · 186 阅读 · 1 评论 -
Netty原理
Netty原理1 概述1.1 netty是什么?1.2 特点2 原理2.1 IO模型2.1.1 阻塞IO2.1.2 IO多路复用2.1.3 异步IO2.2 netty模型3 架构4 实现reactor线程模型Reactor 多线程单线程 reactorFuture 和 Promise事件模型Pipleline零拷贝其他设计FastThreadLocalThread1 概述netty的基本了解1.1 netty是什么?快速简单的网络编程框架,极大的简化了基于TCP UDP协议的网络编程,简单,灵活,高原创 2021-05-17 22:37:07 · 1467 阅读 · 7 评论 -
Idea添加自定义模板
Java代码规范中对注释有各种要求,添加注释对于代码的可读性,可持续性,质量都至关重要,下面看怎么通过模板在idea中添加自定义的注释模板,并且能够被JavaDoc识别并生成在API文档中。类,接口,注解,枚举在idea中打开File—>Settings—>Editors—>File and Code Templates在Files中找到Class可以看到右边的模板,只需要将以下注释添加到响应的位置即可添加内容/** * * @author ${USER} * @dat原创 2021-01-22 15:59:32 · 4281 阅读 · 4 评论 -
Java8新特性
目录1,Lambda表达式2,方法引用3,stream4,Optional5,Nashorn JavaScript6,日期时间7,Base64编码Java8即JDK1.8新增了很多新的特性,一起来探索一下吧。1,Lambda表达式Java8支持Lambda表达式,来支持函数式编程,将函数作为方法的参数。经常用于代替匿名内部类的使用。函数接口可以使用lambd...原创 2019-08-13 18:15:12 · 451 阅读 · 0 评论 -
Java设计模式之代理(动态代理,静态代理)
代理设计模式,是一种常用的设计模式。顾名思义,在面向对象的世界中,就是一个对象对另一个对象的代理。如现实生活中,处处都是代理,中介是对业主的代理,王婆是对金莲的代理,经纪人至于艺人的代理,销售代理等,当然这是通俗代理。代理对外是代理对象去交互,但是真正完成工作的,往往又是被代理的对象。例如租房,找中介,但是真正租到的是业主的房子。xxx找王婆,但是最终干活的是金莲。找艺人拍戏,找的是经纪人...原创 2019-08-06 18:33:28 · 209 阅读 · 0 评论 -
Spring(一)概述
对于Java应用开发来说,Spring再熟悉不过了。起初Spring是一个降低程序复杂度的Java框架,解决代码层级之间的松耦合问题,在SpringBoot阶段,SpingCloud提供了更多松耦合集成的模块,在解决微服务,数据处理等各个方面表现突出。Spring是模块化的,松耦合的,可以在你需要的时候,使用你需要的任何模块。截止Sping5,Spring模块。 模块名称 ...原创 2019-08-02 14:07:03 · 150 阅读 · 0 评论 -
Java集合List,Set,Map,Queue,Deque
集合是Java基础中非常重要的一部分,Java提供了非常丰富的集合API,了解各个集合的特点,怎么样在各种各样的场景中使用正确的集合,非常重要,也是一个Java程序员最基本的素养。整体了解Java最基本,最常用的的集合主要有,Set,List,Map,Queue,Deque。 Collection是集合List,Set,Queue的最顶层接口。Collection继承自Iterable接...原创 2019-07-07 23:17:34 · 584 阅读 · 0 评论 -
SpringCloud微服务权限控制(一)概述
从单体应用到SOA应用再到Spring Cloud微服务构架,应用的安全访问都是非常重要的问题,怎么样设计微服务的权限控制?首先,权限控制可以分为三个部分:用户认证,服务权限,用户权限。用户认证用户认证,简单的讲,可以简化为应用对用户登录状态的认证。传统的单体应用,使用session来进行用户认证,但是这种方式已经不适合微服务的场景了;微服务的结构下,可以通过分布式session来解决,也...原创 2018-09-27 18:11:01 · 66890 阅读 · 39 评论 -
Java-Concurrent 线程池ThreadPoolExecutor使用
在高并发场景下,如果每一个请求或人物都开启一个线程,系统要不断的进行线程的创建、销毁,会消耗大量的系统性能,而线程的数量到达一个临界值时,系统会受到进一步更大的影响,这时候就需要用到线程池。 ThreadPoolExecutor线程池的类关系 Executor的定义是An Object that executes submitted tasks,即接口的实现是...原创 2018-08-23 16:19:29 · 249 阅读 · 0 评论 -
Java自定义注解
Java注解Java注解是JDK5.0以后版本引入的新特性,其中有JDK提供的基本注解,也可以自定义注解。其中:JDK提供的基本注解有1,@SuppressWarnings,阻止编译器发出某些警告信息,其参数可以有:deprecation:过时的类或方法警告unchecked:执行了未检查的转换时(强转类型时)fallthrough:switch程序原创 2017-05-27 16:01:00 · 325 阅读 · 0 评论 -
CXF发布RestFul WebService和SOAP WebService
CXF发布RestFul Service和Wsdl WebService下面是一个Spring整合RestFul Service和WSDL WebService服务开发的简单例子。1,添加CXF依赖 org.apache.cxf cxf-rt-frontend-jaxws 3.1.11 org.apache.cxf cxf-r原创 2017-06-05 10:53:38 · 695 阅读 · 0 评论 -
log4j打印日志
log4j打印日志简单配置日志在应用中发挥着作用,是应用的重要组成部分。日志用于记录应用的行为,记录应用的输入输出等,根据日志文件可以定位问题,挖掘数据,优化性能,统计应用各类指标,还原应用输入输出等重要功能,下面是一个Java应用使用log4j打印日志的简单例子。 一、通常,日志根据内容的不同区分出不同的日志,需要根据应用需求而定。以下为根据需求,定义几个不同日志。如:1. 记录原创 2017-06-20 16:32:35 · 2524 阅读 · 0 评论 -
安装activemq
安装ActiveMQApache ActiveMQ是最流行、最强大的开源消息和集成模式服务,ActiveMQ简单快速,支持多种语言和通信协议,具有易于使用的企业集成模式和许多高级功能,同时完全支持JMS1.1和J2EE1.4,那如何在Windows和unix平台安装和配置ActiveMQ4.x/5.x?安装ActiveMQ准备安装硬件要求二进制安装至少需要60MB的磁盘空间原创 2017-06-26 10:30:45 · 466 阅读 · 0 评论 -
Spring整合ActiveMQ实现简单的消息队列
Spring整合ActiveMQ实现简单的消息队列JMS简介JMS(Java Message Service),Java消息服务。主要用于在生产者和消费者之间进行消息传送,生产者负责生产消息,消费者负责接收处理消息。在实际的业务中,生产者生成消息,发送消息,消息会保存到ActiveMQ队列中,对应的消费者会接收消息,完成特定的业务逻辑。消息的传递模型有两种,一种是点对点,一个生产者对应一个原创 2017-07-05 16:37:33 · 5008 阅读 · 0 评论 -
Spring在tomcat下使用JTA事务
Spring在tomcat下使用JTA事务涉及到多个库的事务问题时,常常要使用到JTA事务,tomcat本身不支持JTA事务,需要借助于Atomikos来使用JTA事务。以下内容结合mybatis,在项目中配置JTA事务。1,引入依赖dependency>groupId>javax.transactiongroupId>artifactId>jtaartifac原创 2017-05-27 16:27:43 · 1789 阅读 · 0 评论 -
简单封装POI导出excel
简单封装POI导出excelApache POI是一套根据Office Open XML标准(OOXML)和Microsoft OLE 2复合文档格式(OLE2)来处理各种文件格式的Java API,在应用中经常用来和Microsoft Office系列产品对接,在和excel对接是,需要处理excel繁琐的单元格,下面提供一个在Spring环境下导出excel的简单框架,减少对单元格原创 2017-07-31 22:07:23 · 974 阅读 · 0 评论 -
在线预览文档简单例子
org.apache.poi ooxml-schemas 1.1 org.apache.poi poi 3.15 org.apache.poi poi-ooxml 3.15 org.apache.poi poi-scratchpad 3.15 fr.opensagres.xdocreport org.apache.poi.xwpf原创 2017-12-12 17:35:52 · 1394 阅读 · 0 评论 -
使用lucene实现简单的全文检索
本文是一个使用lucene为文本创建并管理索引,根据索引检索文本的简单全文搜索例子。Manven依赖 org.apache.lucene lucene-core 6.0.0 org.apache.lucene lucene-queryparser 6.0.0 org.apache.lucene lucene-analyzers-common 6.原创 2017-12-12 17:42:16 · 1897 阅读 · 0 评论 -
从1到m随机n个数
以下代码实现从1到m,随机n个数public static int[] random(int m, int n) { Random r = new Random(); if (n <= 0 || m <= 0 || m < n) { return null; } int[] ary = new int[m]; for (int i = 0; i &...原创 2017-05-27 15:25:48 · 522 阅读 · 0 评论