Java
文章平均质量分 88
java有关的技术
Kim_smile
Be brave to try
展开
-
Aviator 表达式求值引擎——使用自定义函数应对复杂的业务场景
自定义函数只需要实现接口,并注册到 AviatorEvaluator 即可使用。AviatorFunction 接口十分庞大,通常来说你并不需要实现所有的方法,只要根据你的方法的参数个数,继承AbstractFunction类并重写相应方法即可。原创 2023-02-27 11:52:53 · 3988 阅读 · 1 评论 -
NIO 网络编程——群聊系统实现
在使用 NIO 之前,我们先来看一下传统 BIO 阻塞 IO 的实现。Java BIO 工作机制Java BIO 就是传统的 Java I/O 编程,其相关的类和接口在 java.io。BIO(BlockingI/O):同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)。Java BIO 工作流程:服务器端启动一个 ServerSocket。客户端启动原创 2022-04-30 20:42:56 · 360 阅读 · 0 评论 -
Java NIO 基本原理以及三大核心组件
NIO 非阻塞I/OJava NIO 基本介绍Java NIO 全称 Java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 NewIO),是同步非阻塞的。NIO 有三大核心部分:Channel(通道)、Buffer(缓冲区)、Selector(选择器) 。NIO 是面向缓冲区/块编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可原创 2022-04-30 20:34:33 · 3340 阅读 · 0 评论 -
SpringBoot实现MySQL读写分离
在高并发下,需要对应用进行读写分离,配置多数据源,即写操作走主库,读操作则走从库,主从数据库负责各自的读和写,缓解了锁的争用,提高了读取性能。实现读写分离有多种方式,如使用中间件MyCat、Sharding-JDBC等,这里我们使用Aop的方式在代码层面实现读写分离。实现原理实现读写分离,首先要对Mysql做主从复制,即搭建一个主数据库,以及一个或多个从数据库。具体实现主从复制,可参照前一篇博客《基于docker配置MySQL主从复制》使用Aop的方式,当调用业务层方法前,判断请求是否是只读操作原创 2021-11-26 22:48:41 · 6312 阅读 · 24 评论 -
源码分析Arrays-sort中使用的排序算法
Arrays.sort底层Java 主要排序方法为 java.util.Arrays.sort(),粗略的来讲,对于原始数据类型使用双轴快速,对于引用类型使用归并排序。一开始会判断数组是否是小数组(元素小于286),是则使用快速排序。static void sort(int[] a, int left, int right, int[] work, int workBase, int workLen) { // Use Quicksort on small a原创 2021-11-10 23:41:28 · 740 阅读 · 0 评论 -
字符串常量池与包装类详解
字符串常量池设计思想JVM为了提升性能和减少内存开销,避免重复创建字符串,其维护了一块特殊的内存空间,即字符串常量池。当需要使用字符串时,先去检查字符串常量池是否存在该字符串,若存在,则直接返回该字符串的引用地址;若不存在,则在字符串常量池中创建字符串对象,并返回对象的引用地址。String a = "abc"; // 放至常量池String b = "abc"; // 从常量池中取出System.out.println(a == b); // trzue注意:在 JDK7 之前,字符串常量池原创 2021-10-23 20:03:23 · 275 阅读 · 0 评论 -
Java 8新特性:Lambda表达式, Stream API, Optional类,函数式接口
文章目录接口默认方法函数式接口实战运用方法引用Lambda表达式实战运用Stream API什么是StreamStream聚合操作流的创建collect收集filter过滤map映射distinct去重limitskip分页操作countsorted排序Optional类源码分析of与ofNullable测试其他实用方法map与flatMap小试身手在 Java 8 中,增加了Lambda表达式、函数式接口、接口的默认方法和静态方法等语言新特性;在类库方面又新增了Stream API、Optional原创 2021-10-23 14:51:31 · 532 阅读 · 0 评论 -
java基础——容器/集合类的概念及其使用
集合类又被称为容器,是java数据结构的实现。说起集合,数组可是它的好兄弟,但是二者又有区别:数组的长度是固定的,集合的长度是可变的。数组用来存放基本类型的数据,集合用来存放对象的引用(即对象的地址)。数组中只能是相同的数据类型,而集合则可以存放不同的数据类型。...原创 2020-08-06 16:01:50 · 620 阅读 · 0 评论