JAVA
文章平均质量分 70
我的鱼要死了
Never Give Up
展开
-
线程池核心原理详解
为什么需要线程池我们知道相比较进程而言,线程是操作系统调度的更细粒度的资源,如果通过大量手动创建、调用线程,显然线程资源的复用,线程如何更好管理等问题就出现了。所以能不能有一种机制既能解决实现线程的复用,以及线程管理呢,这就提出线程池的概念,类比还有像其他基于池化思想的:数据库连接池,Http连接池等线程池创建多线程通常使用Executors工具类创建一个线程池,该类提供多种类型线程池的创建方法,主要分析一下3种 //创建一个包含指定线程数的线程池(单池多线程) public static原创 2021-10-24 19:49:52 · 229 阅读 · 0 评论 -
Spring核心技术IOC和AOP
前言Spring核心部分:IOC:控制反转,把创建对象的过程交给Spring容器进行管理,降低对象直接的耦合度AOP:面向切面,不修改源代码的基础上进行功能增强,比如权限检查,请求拦截,日志收集等IOCSpring底层其实是基于xml解析、反射机制、底层通过对象工厂实现IOC过程伪代码如下:/** * @Description * @Author Fangchenjiang * @Date 2021/10/13 11:56 */public class MyFactory {原创 2021-10-15 11:26:13 · 112 阅读 · 0 评论 -
Java基础核心知识汇总(个人笔记)
Java基础篇JDK与JRE的区别JDK:Java开发工具包,也叫JavaSDK,包含JRE拥有的一切,还有编译器(javac),能够创建和编译Java程序JRE:Java运行环境,主要包含一些Java类库以及JVM,能够运行Java程序Java语言特点“一次编译,到处运行”:并不是说Java语言跨平台,而是JVM可以安装在不同的操作系统上,本身JVM也存在JRE中,所以与其说Java语言跨平台,倒不如说是JVM跨平台Java语言有垃圾回收机制,不用开发人员手动回收,这是较其他语言一个明显的特原创 2021-09-15 20:40:57 · 131 阅读 · 0 评论 -
手撸一个SpringBoot场景启动器Starter实现组件复用
前言SpringBoot能够实现快速开发,其中一点是底层为我们自动化配置好了一个个Starter,我们只需根据自身需求,修改相应配置项即可。那如何来定制化一个Starter,实现功能的复用呢?定制化mytest-spring-boot-starter编码之前,我们可以回顾一下SpringBoot的自动装配流程,这里我简单以导入mybatis的starter为例。 <!--导入的mybatis-spring-boot-starter--> <dependency&原创 2021-10-11 11:55:15 · 184 阅读 · 0 评论 -
SpringBoot2核心技术-Web开发原理
前言SpringBoot自动配置了SpringMVC组件,而Web开发场景在SpringBoot应用十分常用。静态资源原理SpringBoot默认静态资源可以从以下路径中获取:/static (or /public or /resources or /META-INF/resources)。由于SpringBo启动默认加载SpringMVC功能的自动配置类 WebMvcAutoConfiguration@Configuration(proxyBeanMethods = false)@Conditi原创 2021-10-11 09:07:34 · 111 阅读 · 0 评论 -
SpringBoot2核心技术-基础入门
依赖管理SpringBoot有很多优点,其中依赖管理也是其特性之一。对于任何一个SpringBoot应用,都会初始化引入一个父项目做依赖管理。 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <a原创 2021-10-08 11:13:02 · 102 阅读 · 0 评论 -
Java递归获取省市区树形结构
递归简单地说,就是如果在函数中存在着调用函数本身的情况,这种现象就叫递归;而在实际开发中,常见的递归使用场景有省市区父子级数据获取,树形菜单等。现在,我以Java递归获取省市区来实战一遍递归的使用场景实现省市区树形数据展示具体最终数据展示:为了方便演示,不采用MySQL查询数据库,本地模拟省市区数据即可区域类import lombok.Data;/** * @Description * @Author Fangchenjiang * @Date 2021/8/19 16:24原创 2021-08-19 20:48:04 · 5846 阅读 · 2 评论 -
Java集合实现排序分页
序言对于某些排序并分页的场景,传统的SQL的limit关键字和order by此时无法满足这种特殊的场景。另外的通用解决方案就是将数据批量存储到Java集合中,再通过Java API显示排序。不过这种场景很明显的缺点就是性能底,若是数据量过大,可能会引起内存溢出等。自定义分页由于传统的分页是通过一些插件比如Mybatis-Helper,若是通过Java集合来处理,显然之前的插件已不再适用。通常我们会自定义一个关于List的分页类,其中核心点就是通过List的sublist方法实现分页/** * 自原创 2021-07-11 20:30:43 · 1962 阅读 · 0 评论 -
Java实现排行榜功能
前言最近项目需要开发一个排行榜功能,根据订单金额进行排名,同金额排名相同,不同则跳过,序列递增。技术实现MySQL通过SQL语句也能实现,不过SQL过于复杂,也不好维护。SELECTCASE WHEN @pre = final_score THEN @pic + 0 WHEN @pre := final_score原创 2021-06-05 12:21:52 · 13041 阅读 · 5 评论 -
MySQL limit分页运用
Limit关键字使用在Mysql中,如果是数据量小的场景,可以通过select * from t limti offset,rows进行分页查询。offset偏移量,默认从0开始;rows:返回的行数。比如select * from t limit 2,10,表示从全表的第三行开始,返回10条。Java分页的运用基于前面提到的limit,我们实际可以通过接收前端传来的分页参数即可实现分页逻辑。前提是我们需要自己分装一个分页工具类:@ApiModel(value = "分页对象")@NoArgsCo原创 2021-01-27 15:14:15 · 205 阅读 · 1 评论 -
Jdk1.8新特性看这篇就够了
前言Jdk1.8提出了很多新特性,比如增加新的语言(Lambda表达式)、Stream API,Optional类。jdk8增加的新特性,使得程序效率会更快,提升程序员的编程体验。Lambda表达式Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码。使得写出更简洁、灵活的代码。举例:(o1,o2)->Integer.compare(o1,o2),其中->:Lambda操作符或箭头操作符;->左边:Lambda形参列表(接口中抽象方法的形参列表);-&原创 2020-10-18 11:09:51 · 200 阅读 · 0 评论 -
聊聊Java中的反射机制
反射机制反射机制:程序运行期间,获取类内部的结构(属性,方法等信息)。反射机制和new的方式都可以创建类的对象,一般推荐使用new的方式。而反射创建对象通常用于框架层面,比如Spring,Mybatis等框架内部就用到了反射反射获取类内部结构首先定义一个Java类:public class Student { private int id; public String name; public Student(int id, String name) {原创 2020-10-18 10:48:49 · 80 阅读 · 0 评论 -
Java常用运算符(++,--)
前言Java提供的常用的运算符包括+,-,*,/,%,–,++,=;今天稍微总结下期中比较常用的几个。/和%/:等价于数学中的除法;%:取模运算,获取除法中的余数作为运算结果- -和++在Java中,- -和++主要分为以下几类:i++先运算,再自增1++i先自增1,再运算i- -先运算,在自减1– -i先自减1,再运算代码验证: int i=10; int result1=++i; //前++ int result2=i++;原创 2020-10-18 10:41:58 · 449 阅读 · 1 评论 -
Comparable与Comparator排序
前言对于Java对象,通常情况下只能存在==,!=的比较,而没有<或>的比较。但是实际开发中,我们却会遇到实现对象的排序,比如商品排序,按销量排序,价格排序,以及评论数排序等。可以通过java提供的两个比较器:Comparable和ComparatorComparable接口像String,包装类底层实现了Comparable接口,重写了compareTo(obj)方法并默认从小到大排序compareTo(obj)比较规则如果当前对象this大于形参对象obj,则返回正整数如果当前原创 2020-10-18 10:36:21 · 144 阅读 · 0 评论 -
枚举类与注解
枚举类枚举类:当类的对象是有限个,并且确定的常量,我们就称此类为枚举类,并且类似class也有属性,jdk1.5新增用enum关键字表示。由于枚举的实例为常量,习惯用大写字母对每个常量命名,并用",“隔开,最后一个以”;"结尾。比如我们开发中表示一周的7天,或者四季,性别等,都是能确定的常量,这就可以用枚举类。枚举演示定义一个季节的枚举,具体有春夏秋冬四个季节,代码如下:/** * 季节枚举类 * */public enum Seaon{ SPRING("春天","春暖花开"),原创 2020-10-18 10:24:51 · 114 阅读 · 0 评论 -
Java常见日期时间类
前言发中,我们经常与日期时间类打交道,比如数据库中常用的datetime与Java中的时间类型作转换,还有前端传过来的时间字符串处理等等。接下来,我们来熟悉一些常用的日期时间API。具体分为jdk1.8之前和jdk1.8后(含1.8)两类JDK1.8之前日期时间类jdk1.8前,常用时间日期类主要有System.currentTimeMillis(),java.util.Date类,java.sql.Date类,SimpleDateFormat,下面简单说说各个类的主要用法和运用场景System.原创 2020-10-18 10:15:30 · 306 阅读 · 0 评论 -
原来String、StringBuffer、StringBuilder底层是这么回事
前言字符串的使用在不仅在Java代码中随处可见,而且在面试也常被问起。所以,对于咱们朝夕相处的老友,我觉得有必要好好来重新认识它们,了解其底层实现原理。String类String表示字符串,用一对""表示String声明为final,表示不可以被继承String实现了Serializable接口,表示String可以被实例化实现了Comparable接口,表示可以比较大小定义了final char value[],存储字符串数据源码如下:大家都知道,String代表不可变的字符序列。原创 2020-10-17 21:04:56 · 969 阅读 · 0 评论 -
Java IO常见用法
初始IO流I/O流(Input/Output)流,通常用于处理设备间的数据传输,如读写文件,网路通讯等,如下图演示文件读写:简单来说就是Java程序将磁盘上的文件通过流读到内存层面称为Input流(输入流);Java程序将内存层面的数据通过流持久化到磁盘文件称为Output流(输出流)流的分类按操作数据单位:字节流、字符流按数据的流向:输入流、输出流按流的角色:节点流、处理流流的体系结构节点流以及处理流都继承抽象基类,只需实例化节点流或处理流即可对文件进行操作,除开抽象基类,节点流和处理原创 2020-10-17 20:42:55 · 199 阅读 · 1 评论 -
JAVA技术汇总
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-11-06 22:36:46 · 261 阅读 · 0 评论