
java
文章平均质量分 66
Forevermark993
code
展开
-
jdk8-Stream流
distinct 过滤去重, Object.equals(Object)(需要重写equals,hashcode)sorted 排序 (要不是已经实现了Comparable接口重写方法,或者传入Comparator比较器)anyMatch 传入Predicate 断言 任意一个匹配上返回true。noneMatch 传入Predicate 断言 没匹配上返回true。max 传入Comparator比较器,获取最大值。min 传入Comparator比较器,获取最小值。forEach 循环。原创 2023-02-22 17:48:12 · 408 阅读 · 0 评论 -
泛型通配符
打印出集合中所有元素的例程的问题。这是一个简单的尝试使用泛型(和新的for问题是这个新版本比旧版本的用处小得多。虽然可以使用任何类型的集合作为参数调用旧代码,但新代码仅可以采用,正如我们刚才演示的那样,它各种集合的超类型!那么什么各类集合的超类型?它写成(读作“collectionofunknown”),即元素类型与任何东西匹配的集合。出于显而易见的原因,它被称为。现在,我们可以用任何类型的集合来调用它。请注意,在中,我们仍然可以从c中读取元素,并为它们提供类型Object。由于我们不知道cE?...翻译 2022-07-19 17:06:07 · 225 阅读 · 0 评论 -
logback的xml取值符号的区别
最近做分布式链路的时候,发现一个问题,之前没有主要到,有的参数在日志里面为空原创 2022-07-04 10:23:53 · 710 阅读 · 0 评论 -
JDK8到JDK17新特性
预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。原创 2022-06-30 10:21:57 · 1849 阅读 · 0 评论 -
Lambda表达式、函数式接口、方法引用
什么是Lambda表达式lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda 表达式是实现函数式接口的一种方式,可以看做匿名内部类的简写形式:它没有名称,但它有参数列表,函数主体,返回类型,可能还有一个可以抛出的异常列表。Lambda 是一个匿名函数,可以把 L原创 2022-03-20 15:59:00 · 494 阅读 · 3 评论 -
计算机位运算
计算机与二进制计算机在处理数据时使用的是2进制计数法从10进制计数法类推,便可很快掌握它的规则。使用的数字只有0、1,共2种。从右往左分别表示1位、2位、4位、8位。用2进制计数法来数数,首先是0,然后是1,接下去···不是2,而是在1上面进位变成10,继而是11,100,101……10进制2进制10进制2进制10进制2进制10进制2进制0020101004010100060111100112110101411010016111.原创 2021-08-28 11:10:05 · 2300 阅读 · 0 评论 -
时间轮实现延迟队列
什么是时间轮时间轮出自Netty中的HashedWheelTimer,是一个环形结构,可以用时钟来类比,钟面上有很多bucket,每一个bucket上可以存放多个任务,使用一个List保存该时刻到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应bucket上所有到期的任务。任务通过取模决定应该放入哪个bucket。和HashMap的原理类似,newTask对应put,使用List来解决 Hash 冲突。时间轮怎么实现延迟队列//时间轮对象中申明一个存放时间轮对象private v.原创 2021-04-08 10:32:42 · 1833 阅读 · 0 评论 -
泛型参数T与泛型通配符的区别
T和?,首先要区分开两种不同的场景:声明一个泛型类或泛型方法。使用泛型类或泛型方法。类型参数 T 主要用于第一种,声明泛型类或泛型方法。无界通配符 ?主要用于第二种,使用泛型类或泛型方法如下图所示...原创 2021-04-01 18:24:06 · 312 阅读 · 0 评论 -
父类实现一个接口,子类又重复实现同一个接口的目地
ArrayList实现了List这个接口,但ArrayList的抽象父类AbstractList同样实现了List接口。这样做的目的是什么呢在不使用接口代理的情况下毫无差别,使用接口代理(动态代理)没有显示的实现会报错原创 2021-04-01 11:00:50 · 999 阅读 · 0 评论 -
处理 Exception 的几种实践
目录前言在 Finally 块中清理资源或者使用 try-with-resource 语句指定具体的异常对异常进行文档说明抛出异常的时候包含描述信息首先捕获最具体的异常不要捕获 Throwable不要忽略异常不要记录并抛出异常包装异常时不要抛弃原始的异常总结前言在 Java 中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些原创 2021-03-25 10:33:31 · 152 阅读 · 0 评论 -
专业技能
专业技能编程技能Java编程Shell脚本JavascriptSQL编程环境GitSVNgitLabbugfreeEclipsemarkdown远程调试网路抓包webstromsublimenavicat for mysql服务端系统中间件NGINXSpringDubboMybatisRedis360-AtlasShirorabbit MQGM基础设施ECS阿里云OSSRedisHbase分布式技术负载原创 2021-03-09 14:39:00 · 137 阅读 · 1 评论 -
软引用、弱引用、虚引用-他们的特点及应用场景
整体结构java 提供了 4 中引用类型,在垃圾回收的时候,都有自己的各自特点。为什么要区分这么多引用呢,其实这和 Java 的 GC 有密切关系。强引用(默认支持模式)把一个对象赋给一个引用变量,这个引用变量就是一个强引用。强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还活着当内存不足的时候,jvm 开始垃圾回收,对于强引用的对象,就算出现 OOM 也不会回收该对象的。因此,强引用是造成 java 内存泄露的主要原因之一。对于一个普通的对象,如果没有其他的引转载 2020-12-23 15:55:03 · 1050 阅读 · 0 评论 -
JAVA连接数据库的方式
根据所需要的不同数据库驱动分,分为四种:1类驱动。这就shu是JDBC-ODBC桥的方式。但这种方式不适合程序的重用与维护,不推荐使用。需要数据库的ODBC驱动。2类驱动。这就是JDBC+厂商API的形式。厂商API一般使用C编写,所以,这种方式也不长使用。3类驱动。这就是JDBC+厂商Database Connection Server+DataBase的形式。这种方法就是在JAVA 与 DATABASE之间价起了一台专门用与数据库连接的服务器(一般由数据库厂商提供)。他的好处在于能优化连接.原创 2020-12-21 11:53:34 · 325 阅读 · 0 评论 -
jvm数据区简介
jvm运行时数据区java栈java虚拟机栈是线程私有的,他与线程的声明周期同步。 虚拟机栈描述的是java方法执行的内存模型,每个方法执行都会创建一个栈帧,栈帧包含局部变量表、操作数栈、动态连接、方法出口等。堆堆是线程共用的。常说的线程安全问题,主要是因为数据存在了堆和方法区了,导致数据共享,然后操作有线程安全问题的变量,且没有加锁,就会导致线程安全问题,最简单的就是controller,使用成员+1,开启并发调用,就会发现,会出现重复的数字。1.JVM中堆空间可以分成三原创 2020-11-13 11:35:54 · 151 阅读 · 0 评论 -
Stream常用API
Java8 中有两大最为重要的改变,第一个是 Lambda 表达式,另外一个则是 Stream API。流是 Java8 引入的全新概念,它用来处理集合中的数据。众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要写大量的代码,而流是以声明的形式操作集合,它就像 SQL 语句,我们只需告诉流需要对集合进行什么操作,它就会自动进行操作,并将执行结果交给你,无需我们自己手写代码。在项目中使用 Stream API 可以大大提高效率以及代码的可读性,使我们对数据进行处理的时候事半功倍。原创 2020-08-24 15:29:23 · 412 阅读 · 0 评论 -
泛型
什么是泛型多态是一种面向对象思想的泛化机制。你可以将方法的参数类型设为基类,这样的方法就可以接受任何派生类作为参数,包括暂时还不存在的类。这样的方法更通用,应用范围更广。在类内部也是如此,在任何使用特定类型的地方,基类意味着更大的灵活性。除了 final 类(或只提供私有构造函数的类)任何类型都可被扩展,所以大部分时候这种灵活性是自带的。拘泥于单一的继承体系太过局限,因为只有继承体系中的对象才能适用基类作为参数的方法中。如果方法以接口而不是类作为参数,限制就宽松多了,只要实现了接口就可以。这给予调用方一原创 2020-12-24 14:46:04 · 99 阅读 · 0 评论 -
json格式构成
json构成json文件由对象(集合)、数组、key/value元素三部分组成,可以相互嵌套。各部分表示方法使用大括号包围的是对象使用中括号包围的是数组冒号分隔的是元素。元素组成元素的key只能是字符串。元素的value数据类型可以是:number:整数和浮点数都属于number类型,可以是正负数string:字符串bool:true/falsearray:使用中括号包围的部分是arrayobject:使用大括号包围的是对象null:空()一般是这个值本来应原创 2020-07-24 17:32:17 · 1381 阅读 · 0 评论 -
闭包与回调
闭包与回调闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。通过这个定义,可以看出内部类是面向对象的闭包,因为它不仅包含外部类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外部类对象的引用,在此作用域内,内部类有权操作所有的成员,包括 private 成员。在 Java 8 之前,内部类是实现闭包的唯一方式。在 Java 8 中,我们可以使用 lambda 表达式来实现闭包行为,并且语法更加优雅和简洁,你将会在 函数式编程 这一章节中学习相关细节。尽管相对转载 2020-07-02 14:19:44 · 851 阅读 · 0 评论 -
Git、GitLab、idea插件
由于公司饱受svn折磨,所以下决心把代码级别的版本控制由svn切换到git, 项目管理文档之类的沿用svn,因此需要写一篇入门级别的文章系列,至少涵盖 大部分开发所需要的命令与常用功能的介绍,这里我参考了廖大神的git入门 ,教程的重点不是成为一个git大神,也不需要成为git大神,git仅是工具,希望 ...原创 2018-06-08 10:36:35 · 2134 阅读 · 0 评论 -
java为什么有些异常throw出去需要在函数头用throws声明,一些就不用
java为什么有些异常throw出去需要在函数头用throws声明,一些就不用。 Excepiton分两类:checked exception、runtime exception;直接继承自Exception就是checked exception,继承自RuntimeException就是runtime的exception。你可以简单地理解checked exception就是要强制你去处理这个...转载 2019-04-28 21:13:44 · 4937 阅读 · 3 评论 -
try catch嵌套执行顺序
try { //A try { //B } catch () { //C } finally { //D } //E } catch () { //F} finally { ...原创 2019-05-13 11:38:19 · 1419 阅读 · 0 评论 -
同步和异步 阻塞和非阻塞
什么是同步和异步说到烧水,我们都是通过热水壶来烧水的。在很久之前,科技还没有这么发达的时候,如果我们要烧水,需要把水壶放到火炉上,我们通过观察水壶内的水的沸腾程度来判断水有没有烧开。随着科技的发展,现在市面上的水壶都有了提醒功能,当我们把水壶插电之后,水壶水烧开之后会通过声音提醒我们水开了。对于烧水这件事儿来说,传统水壶的烧水就是同步的,高科技水壶的烧水就是异步的。同步请求,A调用B,B的...原创 2019-07-02 09:50:16 · 234 阅读 · 0 评论 -
BIO、NIO和AIO
Java IOIO,常协作I/O,是Input/Output的简称,即输入/输出。通常指数据在内部存储器(内存)和外部存储器(硬盘、优盘等)或其他周边设备之间的输入和输出。输入/输出是信息处理系统(例如计算机)与外部世界(可能是人类或另一信息处理系统)之间的通信。输入是系统接收的信号或数据,输出则是从其发送的信号或数据。在Java中,提供了一些列API,可以供开发者来读写外部数据或文件。我...转载 2019-07-02 10:04:11 · 113 阅读 · 0 评论 -
maven的配置文件settings.xml 详解
setting.xml配置文件maven的配置文件settings.xml存在于两个地方:1.安装的地方:${M2_HOME}/conf/settings.xml2.用户的目录:${user.home}/.m2/settings.xml前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围的s...转载 2019-07-10 15:45:16 · 819 阅读 · 0 评论 -
Elasticsearch安装
环境cenos6.5elasticsearch-6.0.0.tar.gzjdk1.8开始安装配置jdk(不用多说都懂)先在root用户下解压cd /opt#解压tar -zxvf elasticsearch-6.0.0.tar.gz#重命名mv elasticsearch-6.0.0 elasticsearch配置sysctl.conf(这是为了配置虚拟内存...原创 2019-07-05 14:37:36 · 125 阅读 · 0 评论 -
kibana安装
环境cenos6.5kibana-6.0.0-linux-x86_64.tar.gz安装cd /opt#解压tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz#重命名mv kibana-6.0.0-linux-x86_64 kibana修改yml文件vim /opt/kibana/config/kibana.ymlserver...原创 2019-07-05 15:04:23 · 137 阅读 · 0 评论 -
故障管理规范
基本原则故障永远是表面现象,背后技术和管理上的问题才是根因组织责任+个人责任分别担责就事论事、承担责任、不断改进定义具体的标准和行动过程质量保障质量意识敬畏线上问题制定线上操作高压线,所有人要有高压线意识方案评审:每个项目启动前必须完成方案评审环节,通过才可以启动开发(架构、异常、安全)针对主业务流程重新评审流程方案(方案+SQL检查)定范围:收集需要评...原创 2019-07-01 09:47:48 · 1562 阅读 · 0 评论 -
业务日志记录规范
目的使用规范的日志格式,方便后续阿里云日志服务查询分析阿里云日志服务简介日志服务提供大规模日志实时查询与分析能力(LogSearch/Analytics),开启索引后,可以对日志数据进行统计与查询。查询分析语句格式对采集到的日志数据进行实时查询分析时,需要输入查询分析语句(Query)。由查询语句(Search)和分析语句(Analytics)两个部分组成,查询和分析语句之间通过 |进...原创 2019-07-01 09:50:15 · 4351 阅读 · 0 评论 -
java.lang.System 类
Properties props = System.getProperties();//java版本String javaVersion = props.getProperty(“java.version”);//操作系统名称String osName = props.getProperty(“os.name”) + props.getProperty(“os.version”);//用...原创 2019-07-01 13:43:20 · 374 阅读 · 0 评论 -
代码生成
引言绝大部分非互联网公司的系统基本属于业务堆砌,系统针对的客户就是员工本身,且系统一般不需要考虑高并发情况,tps与吞吐基本不用考虑。但是功能开发速度就是重中之重了。绝大部分业务都是增删改查,对这种业务绝大部分人都深恶痛绝。这是你可能需要开发一套代码生成器了。正文代码生成器要开发一套代码生成器,需要先根据公司业务,抽离出重复及通用模块(比如mybatis 的增删改查,也可以用myba...原创 2019-08-21 15:08:50 · 279 阅读 · 0 评论