java相关
文章平均质量分 81
java相关技术
不懂事的小流氓
一次编码,到处运行,永不维护
展开
-
函数式编程(JAVA)——@FunctionalInterface
只有一个抽象方法的接口我们称之为函数接口。这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。下述所有测试代码源码地址:https://gitee.com/ArnoldSu/functionalProgramming.git自定义函数式接口测试JDK常见函数式接口Supplier代表结果的提供者(生产者)。不要求每次调用供应商时都返回新的或不同的结果。这是一个功能接口,其功能方法是get() 。Consumer表示接受单个输入参数且不返回结果的操原创 2022-06-15 16:37:09 · 387 阅读 · 0 评论 -
函数式编程(JAVA)——Optional类
我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。 尤其是对象中的属性还是一个对象的情况下。这种判断会更多。而过多的判断语句会让我们的代码显得臃肿不堪。所以在JDK8中引入了Optional,养成使用Optional的习惯后你可以写出更优雅的代码来避免空指针异常。该类的其实很简单,整体字段属性方法如下图:下述所有测试代码源码地址:https://gitee.com/ArnoldSu/functionalProgramming.git返回一个Optional对象并且参数原创 2022-06-09 23:16:00 · 240 阅读 · 0 评论 -
函数式编程(JAVA)——Stream流
Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。下述所有测试代码源码地址:https://gitee.com/ArnoldSu/functionalProgramming.git初始化之后所有演示代码需要用到的数据集合。常用操作filter可以对流中的元素进行条件过滤,符合过滤条件的才能继续留在流中。eg:过滤用户年龄大于80岁的人并且打印。map可以把对流中的元素进行计算或转换。eg: 通过map获原创 2022-06-08 21:57:16 · 600 阅读 · 0 评论 -
函数式编程(JAVA)——Lambda表达式
函数式编程思想就像调用数学中的函数一样,函数式编程只对函数中对于传入参数的处理逻辑的最终结果关注,而不对传入参数本身的性质(类型,大小等)做关注,换句话说:只管方法逻辑实现,不对具体参数做限制。Lambda表达式Lambda表达式,Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意原创 2022-06-08 13:48:43 · 260 阅读 · 0 评论 -
Java 多线程(Java线程间的通信)
Java线程间的通信锁与同步方式锁概念:在Java中,锁的概念都是基于对象的,所以我们⼜经常称它为对象锁。线程和锁的关系:⼀个锁同⼀时间只能被⼀个线程持有。也就是说,⼀个锁如果和⼀个线程持有,那其他线程如果需要得到这个锁,就得等这个线程和这个锁释放。Java的集中常见锁类型:锁名称说明内置锁每一个java对象都可以用作同步的锁(monitor锁)可重入锁当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁。这也证明在一个ReentrantLock/S原创 2022-05-04 02:02:01 · 233 阅读 · 0 评论 -
Java 多线程(Java常用线程类和接口)
Java常用线程类和接口名称类型特点Threadclass单继承 ,无返回值Runnalbleinterface多实现,,无返回值Callableinterface多实现,有返回值,带泛型,Callable ⼀般是配合线程池⼯ 具 ExecutorService 来使⽤的Futureinterface多实现,有返回值,带泛型,可取消(cancel方法)FutureTaskclass多实现,有返回值,实现的 RunnableFuture 接⼝原创 2022-05-02 23:32:01 · 1666 阅读 · 0 评论 -
Java多线程(线程的基本概念)
进程与线程概念说明进程对正在运⾏的程序的抽象,就是负责加载指令,管理内存,管理io等工作,应⽤程序(指令+数据)在内存中分配的空间,各个进程之间互不⼲扰。线程让⼀个线程执⾏⼀个⼦任务,这样⼀个进程就包含了多个线程,每个线程负责⼀个单独的⼦任务,多线程比多进程之间更容易共享数据,所以线程一般来说都比进程更高效。进程和线程的区别:进程是⼀个独⽴的运⾏环境,⽽线程是在进程中执⾏的⼀个任务。他们两个本质的区别是是否单独占有内存地址空间及其它系统资源。进程单独占有⼀定的内存原创 2022-05-02 02:45:44 · 496 阅读 · 0 评论 -
Java线程池(转载)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2022-03-21 23:25:51 · 302 阅读 · 0 评论 -
Java常用注解
Spingboot(Spring)常用注解@Conditional注解以及派生注解springboot @ConditionalOnMissingBean注解的作用详解SpringBoot @ConditionalOnBean、@ConditionalOnMissingBean注解源码分析与示例原创 2022-02-10 09:39:05 · 248 阅读 · 0 评论 -
IDEA Alibaba规范化模板(代码格式化,注释模板化,常用自定义快捷键)
背景本文意在将IDEA中的代码格式和注释格式进行统一化。研发团队的成员的代码格式和注释格式建议统一化。统一的代码格式和注释格式,能给代码阅读上带来极大的便利,给代码改动上提高极大的效率。代码格式话模板配置阿里模板下载地址https://github.com/alibaba/p3c/tree/master/p3c-formatter下载阿里配置文件(eclipse-codestyle.xml),因为此文件是针对ecplice的,在IDEA中使用配置文件,需要安装Eclipse Code For原创 2021-12-21 16:39:22 · 16661 阅读 · 2 评论 -
Spring AOP切面失效情况总结
Spring AOP切面失效情况引用 https://blog.csdn.net/u012760435/article/details/108494713转载 2021-05-11 21:16:10 · 3046 阅读 · 0 评论 -
记一次GC 排查及优化
Java HotSpot(TM) 64-Bit Server VM (25.25-b02) for linux-amd64 JRE (1.8.0_25-b17), built on Sep 17 2014 17:32:11 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)Memory: 4k page, physical 32779824k(6839108k free), swap 0k(0k free)CommandLine flags: -原创 2021-06-28 00:54:46 · 1452 阅读 · 1 评论 -
Java虚拟机(JVM)浅析总结
Java虚拟机Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一原创 2021-11-13 23:01:07 · 158 阅读 · 0 评论 -
JVM类加载器(类装载子系统)
类加载器类的加载过程(加载->链接(包含验证,准备,解析)->初始化)加载:通过类的全限定名获取此类的字节流,将流代表的静态存储结构转化为方法区(作为一个内存区域,jdk1.7以前永久代,1.8之后元空间)的运行时数据结构,在内存中生成一个代表该类的java.lang.class对象,作为方法区这个类的各种数据的访问入口链接(包含验证,准备,解析)验证:确保class文件的字节流符合虚拟机规范,确保安全以及正确,主要的验证方式:文件格式验证,元数据验证,字节码验证符号引用验证准备:为原创 2021-11-13 23:01:38 · 503 阅读 · 0 评论 -
JVM监控与调优
基于JDK命令行工具的监控指令option指令说明jps-q 显示LVMID(local virtual mache id)本地虚拟机唯一id,不显示主类名称;-l 输出应用程序主类的全类名或进程中执行的是jar包,则输出jar完整路径; -m 输出虚拟机进程启动时传递给主类main()的参数;-v 列出虚拟机进程启动时的JVM参数;java process status,显示指定系统内的HotSpot虚拟机进程(查看虚拟机进程信息),用于查询正在运行的虚拟机进程jsta原创 2021-11-28 21:06:17 · 138 阅读 · 0 评论 -
Class文件结构
Class文件结构java规范(语言规范和虚拟机规范)官方网站:https://docs.oracle.com/javase/specs/index.htmlclass类的本质任何一个Class 文件对应这唯一一个类或者接口的定义信息,class文件是一组以8位字节为基础单位的二进制流class文件格式采用一种类似于C语言结构体的方式进行数据存储,数据中有两种数据类型:无符号数和表类型具体含义无符号数属于基本数据类型,以u1,u2,u4,u8分别代表1个字节,2个字节,4个原创 2021-11-22 12:42:22 · 138 阅读 · 0 评论 -
垃圾回收(GC)
垃圾回收(GC)垃圾的定义:运行程序中没有任何指针指向的对象垃圾回收相关算法垃圾标记阶段算法(对象存活判断,对象死亡定义:不再被任何存活对象继续引用时,就宣布死亡)算法名称算法详情优点缺点引用计数算法(Reference Counting)java并没有采用该算法,对每一个对象保存一个整数的引用计数器属性,用于记录对象被引用的情况实现简单,垃圾对象便于标识,判断效率高,回收没有延迟性存储计数器,增加内次你开销,每次赋值都需增减,增加了时间开销,无法处理循环引用的情况原创 2021-11-21 19:56:12 · 258 阅读 · 0 评论 -
执行引擎(Execution Engine)
执行引擎(Execution Engine)的作用:将字节码指令解释/编译为对应平台的本地机器指令,简而言之,将高级语言转译成机器语言能被计算机识别执行引擎的简单工作工程通过pc寄存器确定一条执行指令执行完一条执行后,pc寄存器指向下一条指令地址执行构成中可以通过存储在局部变量表的对象引用定位到java堆中的对象实例信息.通过对象头中的元数据指针定位到目标对象的类型信息JAVA后端编译和执行的过程名词解释说明解释器(Interpreter)java虚拟机对字节码采用逐行原创 2021-11-21 19:41:25 · 489 阅读 · 0 评论 -
运行时数据区(Runtime Data Area)
运行时数据区图示及组成项目说明本地方法栈与 Java 虚拟机栈所发挥的作用是非常相似的,为虚拟机使用到的 Native 方法服务,Navtive 方法是 Java 通过 JNI 直接调用本地 C/C++ 库,可以认为是 Native 方法相当于 C/C++ 暴露给 Java 的一个接口,Java 通过调用这个接口从而调用到 C/C++ 方法。当线程调用 Java 方法时,虚拟机会创建一个栈帧并压入 Java 虚拟机栈。然而当它调用的是 native 方法时,虚拟机会保持 Java原创 2021-11-21 19:21:02 · 731 阅读 · 0 评论 -
JAVA String注意事项
String知识点String:字符串,为final类不可继承,在jdk1.8及之前为char[],1.9之后改成byte[],不可变的字符序列,通过字面量的方式(String str = “111”)给一个字符串赋值,此时的字符串值申明在字符串常量池中,字符串常量池中不存在相同的字符串String 的内存分配在java 中的八个基本数据类型,六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型类型默认值最小值最大值备注byte0-128(-2^7)1原创 2021-09-20 14:13:04 · 193 阅读 · 0 评论 -
Git常用命令记载(持续记录更新...)
git tag 命令相关git tag -a v1.0 创建带注解的V1.0的标签(需要再次填写信息)git tag -a <tagname> -m "标签信息"创建带注解的V1.0的标签(git tag -a 的简化版,直接提交标签信息)git tag查看所有标签git tag -d tagname删除本地taggit push origin :refs/tags/tagname删除远程taggit merge 命令相关git merge合并分支到主.原创 2020-12-24 12:51:34 · 216 阅读 · 0 评论 -
Hexo个人blog搭建(Centos7)
Hexo个人blog搭建(Centos7)安装git:sudo apt-get install git校验是否git是否安装成功:用git --version 来查看一下版本安装node.js安装教程:https://www.runoob.com/nodejs/nodejs-install-setup.htmlgcc版本问题:https://blog.csdn.net/u013934914/article/details/104926415安装Hexonpm install -g hexo原创 2020-11-16 22:32:05 · 142 阅读 · 0 评论 -
Nginx上手记录
Nginx是啥Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务Nginx一些特征概念反向代理:客户端发送请求到反向代理服务器,反向代理服务器转发请求到目标服务器负载均衡:单机无法满足需求就增加服务器,并且按照一定的规则将客户端请求分发到各个服务器完成客户端请求过程动静分离:动态资源和静态资源放在不同服务器,加快相应速度,减少单机服务器压力Nginx安装(Linux centos7)...原创 2020-11-03 23:39:31 · 174 阅读 · 0 评论 -
Netty知识点摘记
Netty定义Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程应用场景互联网(高性能rpc框架)游戏行业大数据java 三种网络模型(IO模式)BIO(blocking I/O):同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善原创 2020-10-11 16:06:26 · 228 阅读 · 1 评论 -
centos7虚拟机(VMware 12 Pro)静态IP配置
虚拟机配置原创 2020-09-22 20:30:28 · 222 阅读 · 0 评论 -
ELK日志管理解决方案浅探(Elasticsearch、Logstash、Kibana)
ELK(Elasticsearch、Logstash、Kibana)ElasticSearchElasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。特点分布式的实时文件存储,每个字段都能被索引分布式的实时分析搜索引擎,不规则查询高拓展性PB级数量级,可处理结构和非结构化数据应用场景全...原创 2020-04-02 17:17:52 · 421 阅读 · 0 评论 -
Kafka学习记录及简单上手代码
kafka为什么需要消息队列?解耦:允许独立的拓展或修该双方逻辑交互过程程序,只要保证保证双方的遵守同样的接口约束冗余:保证数据多个副本不至于数据丢失以及数据重复拓展性:可添加相应的额外处理过程灵活性&峰值处理能力:突发流量访问激增,仍然能够保证程序稳定运行可恢复性:消息队列降低了进程间的耦合性,一个消息队列处理进程挂掉,加入队列的消息任然可以在系统恢复后被处理顺序保证:到部...原创 2020-03-08 17:16:35 · 580 阅读 · 2 评论 -
Zookeeper学习记录及简单上手代码展示
zookeeperzookeeper:定义是一个开源的分布式,为分布式应用提供协调服务的Apache的项目zookeeper是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理大家的关心的数据,然后接受观察者注册,一旦数据的状态发生变化,zookeeper将负责通知已经在zookeeper上注册的那些观察者做出相应的反应 zookeep= 文件系统+通知机制特点1. 一个lead...原创 2020-03-01 01:04:42 · 191 阅读 · 0 评论 -
docker摘记-docker相关知识点总结摘要
Docker是啥?Docker 是基于 Go 语言实现的开源容器项目,Docker 的构想是要实现“ Build Ship and Run Any App, Anywhere ”,即通过对应用的封装( Packaging )、分发( Distribution )、部署( Deployment )、运行( Runtime )生命周期进行管理达到应用组件级别的“一次封装 ,到处运行”,Docker ...原创 2020-01-12 16:47:54 · 1168 阅读 · 0 评论 -
Java注解以及自定义注解总结
custom_annotations(自定义注解)知识点注解以及自定义注解的相关知识(代码层还带有一个自实现简单的orm demo)注解知识点Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法(Java反射)。2.java 1.5引入注解其中Java SE5内置了三种标准注解: @Override,表示当前的方法定义将覆盖超类中的方法。 @Deprecated,使...原创 2019-12-15 15:50:26 · 220 阅读 · 0 评论 -
Maven学习浅记-常用命令及相关概念
1:Maven官网(官方文档是学习工具的最好参考书) http://maven.apache.org2:maven官网定义官方解释:Apache Maven is a software project management and comprehension tool.Based on the concept of a project object model (POM),Maven ca...原创 2019-12-15 15:14:01 · 982 阅读 · 0 评论