
java
文章平均质量分 75
天才选手Yoke
此人很懒,不想写签名,写java
展开
-
基于Spring Boot的多级缓存架构实现
以下是一个基于Spring Boot的多级缓存架构实现示例。原创 2025-03-06 13:56:15 · 1034 阅读 · 0 评论 -
Spring Boot 缓存最佳实践:从基础到生产的完整指南
在现代分布式系统中,缓存是提升系统性能的银弹。Spring Boot 通过 模块提供了开箱即用的缓存抽象,但如何根据业务需求实现灵活、可靠的缓存方案?本文将带您从零开始,逐步构建符合生产要求的缓存系统。pom.xml 依赖Nacos 配置(application.yml)启动类注解业务层使用二、进阶篇:多缓存引擎支持2.1 缓存类型切换配置选项对比Nacos 配置示例三、生产级特性实现3.1 方法级 TTL 控制实现方式1:语法约定语法约定TTL 解析实现实现方式2:自定义注原创 2025-03-06 13:54:06 · 1265 阅读 · 0 评论 -
在Jdk1.8中Collectors和Comparator使用场景
Collectors 主要用于从流中收集数据,适合聚合和转换操作。Comparator 主要用于定义比较逻辑,适合排序和比较操作。原创 2024-09-27 10:46:59 · 793 阅读 · 1 评论 -
线程池ThreadPoolExecutor使用指南
线程池ThreadPoolExecutor使用,统一管理,减少资源获取创建的开销,提高利用率。原创 2024-06-15 22:09:30 · 1631 阅读 · 0 评论 -
CompletableFuture.runAsync的多线程下异步操作
方法是Java中用于创建异步任务的工具,它可以在后台线程中执行指定的任务,并且可以在任务完成后返回结果或执行后续操作。这种方式可以实现多线程下的异步操作。在多线程环境下,使用可以实现并发执行多个任务,提高程序的性能和效率。每个异步任务都会在独立的线程中执行,互不影响,从而可以充分利用多核处理器的性能。原创 2024-06-15 17:15:49 · 2853 阅读 · 0 评论 -
使用Arthas诊断线上问题的常见命令(热更新,监听耗时,方法出入参,jvm信息)
Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。完全退出 arthas,可以执行。jar包丢到项目任意目录,启动jar,选择java进程,项目上一般选择tomcat对应的pid。将编译好的class文件放到服务器任意目录下。使用jad命令查看热部署是否生效。退出当前的连接,可以用。原创 2023-09-11 17:31:13 · 533 阅读 · 0 评论 -
生产内存溢出定位分析
生产内存溢出定位分析具体生产环境大多为linux系统,此处以linux系统为示例。1.什么是oom?英文全称“Out Of Memory”,译为 “内存不足” ,错误来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made av原创 2022-05-05 17:08:52 · 1199 阅读 · 0 评论 -
List集合remove问题
List集合remove问题Java的List在删除元素时,一般会用list.remove(obj)/remove(index)方法。在使用时,容易触碰陷阱,得到意想不到的结果。总结以往经验,记录下来与大家分享。首先初始化List,代码如下:public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); lis转载 2020-09-16 19:51:49 · 734 阅读 · 0 评论 -
HashMap,HashSet和HashTable的区别?
HashMap,HashSet和HashTable的区别?HashMap,HashTable:两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用...原创 2019-11-25 18:49:22 · 1439 阅读 · 0 评论 -
面试题分享:了解乐观锁和悲观锁吗?说说他们的区别?
了解乐观锁和悲观锁吗?说说他们的区别?乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,像加synchronized,只允许单个线程占用资源,其他线程阻塞,在效率上来说可能较低;适用于写多读少;乐观锁总是假设最好的情况,每次去拿数据的时候...原创 2019-11-03 20:38:34 · 551 阅读 · 0 评论 -
session ,cookies,token三者的区别以及作用场景
session ,cookies,token三者的区别以及作用场景场景描述fjh到健身房去练胸肌,首先领了钥匙,然后进了更衣间,把衣服,裤子,手机,钱包都放在盒子里面。plw也到健身房,去练翘臀。首先领了钥匙,然后 进了更衣间,把衣服,裤子,手机,《Java 21天从入门到精通》也放在了一个盒子里,但是这个盒子是和fjh的是不同的。健身房,就相当于服务器,盒子,就是会话Session。切...原创 2019-10-21 09:21:44 · 363 阅读 · 0 评论 -
GET和POST两种基本请求方法的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标准答案...转载 2019-08-19 13:23:55 · 6101 阅读 · 1 评论 -
http协议
http协议文章目录http协议简介协议是什么?http的特点:WebSocket 和HTTP的有什么区别呢?http请求协议http响应协议http响应代码简介HTTP 超文本传输协议 Hyper Text Transfer ProtocolHTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等),当我们在浏览器的地址栏输入一个地址的时候,就能够访问...原创 2019-09-01 09:50:11 · 411 阅读 · 0 评论 -
JSP总结
JSP总结文章目录JSP总结一.jsp工作原理和生命周期二.jsp内置对象三.incude指令和include行为四.jsp作用域五.cookie和session一.jsp工作原理和生命周期工作原理:执行过程以hello.jsp为例:把 hello.jsp转译为hello_jsp.javahello_jsp.java 位于d:\tomcat\work\Catalina\local...原创 2019-09-01 09:57:41 · 314 阅读 · 0 评论 -
Freemarker模板自动生成代码,diy属于你自己的代码,不在重复搬砖!
auto-code基于FreeMarker模板引擎实现自动代码生成工具,可以根据数据库表自动生成entity,dao,servlet和简单的表单页面。项目地址:https://github.com/codeYoke/auto-code前言因感概业务代码存在大量的增删改查功能,只是针对不同的表数据而已。故想有没有办法,在重复的相同代码中替换某些内容,于是按此思路搜寻,了解到有freemarke...原创 2019-10-04 16:32:40 · 1053 阅读 · 0 评论 -
java基本数据类型与引用类型
变量的类型包括: 基本类型和引用类型。基本类型就8种:boolean – 布尔,就是真 true 或假 falsebyte short int long – 整型,默认的整型 intfloat double – 浮点,就是小数char – 字符,就是一个字符,用”括起来。String不是基本类型,是引用类型引用类型分为5大类: 类、接口、数组、枚举、标注...原创 2019-04-25 21:29:37 · 136 阅读 · 0 评论 -
java内存区域详解
一 .概述在java中,我们去new一个对象时,不需要太过关注内存泄漏和溢出方面的问题,正是因为有了java虚拟机的控制,了解虚拟机是是如何使用内存是很有必要的。二.运行时数据区域线程私有:程序计数器虚拟机栈本地方法栈线程共享:堆方法区直接内存(非运行时数据区的一部分)注:在jdk1.8方法区被作为元空间放在直接内存里1.程序计数器...原创 2019-07-21 19:26:58 · 366 阅读 · 3 评论 -
java排序算法 冒泡排序的优化
冒泡排序的优化1. 原理比较相邻的两个元素,如果第一个比第二个大就交换位置。对每一对相邻的元素进行比较,从开始第一队到结尾的最后一对,这样最后的元素就是最大的了。每一次这样循环一次之后都会有一个最大的数在后面,每确定一个最大的数,那个数在最后面不动它,这是内循环。每次循环确定最大得数沉到最底下,一共要循环数组的长度减一次,这是外循环。2. 示例假如有这样一组数据int a...原创 2019-06-27 21:11:25 · 163 阅读 · 0 评论 -
StringBuffer中的length与capacity方法区别
length 返回当前长度如果字符串长度没有初始化长度大,capacity返回初始化的长度如果append后的字符串长度超过初始化长度,capacity返回增长后的长度StringBuffer s = new StringBuffer(x); x为初始化容量长度s.append(“Y”); "Y"表示长度为y的字符串length始终返回当前长度即y;对于s.capacity():1...原创 2019-04-18 11:48:56 · 868 阅读 · 0 评论 -
java静态代码块,构造代码块,构造函数执行执行顺序
class A { public A() { System.out.println("class A"); } { System.out.println("I'm A class"); } static { System.out.println("class A static"); }}public class B extends A { ...原创 2019-04-18 11:25:46 · 676 阅读 · 0 评论 -
hashCode与equal,==与equal的区别
public class HashcodeTest { public static void main(String[] args) { Integer i1=new Integer(100); int j = 100; System.out.println(i1 == j); //true System.out.println(i1.hashCode());//100 ...原创 2019-04-25 21:39:56 · 1300 阅读 · 0 评论 -
java集合框架
原创 2019-04-25 20:14:40 · 112 阅读 · 0 评论 -
Socket通信原理,IO流
原创 2019-04-25 20:06:35 · 509 阅读 · 0 评论 -
Java运算符优先级
1、 该表中优先级按照从高到低的顺序书写2、 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3±4,则意义为3加-4,符号首先和运算符右侧的内容结合。3、 instanceof作用是判断对象是否为某个类或接口类型。4、 注意区分正负号和加减号,以及按位与和逻辑与的区别其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使...原创 2019-04-09 23:02:02 · 672 阅读 · 0 评论 -
java关键字super和this的区别
属性的区别:this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。方法的区别:this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父类中的方法。构造的区别:this调用本类构造,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。1)在对拥有父类的子类进行初始化时,父类的构造方法优于子类构...原创 2019-04-09 14:12:02 · 242 阅读 · 0 评论 -
Java内部类和匿名内部类的用法
一、内部类: **(1)内部类的同名方法** 内部类可以调用外部类的方法,如果内部类有同名方法必须使用"OuterClass.this.MethodName()"格式调用(其中OuterClass与MethodName换成实际外部类名及其方法;this为关键字,表示对外部类的引用);若内部类无同名方法可以直接调用外部类的方法。 但外围类无法直接调用内部类的private方法,外...转载 2019-04-24 12:50:15 · 653 阅读 · 0 评论 -
java构造方法
1 构造方法可以被重载,一个构造方法可以通过this关键字调用另一个构造方法,this语句必须位于构造方法的第一行;重载:方法的重载(overload):重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。2 当一个类中没有定义任何构造方法,Java将自动提供一个缺省构造方法;3 子类通过super关键字调用父类的一个构造方法;4 当子类的某个构造...原创 2019-05-01 14:56:49 · 4751 阅读 · 0 评论 -
final修饰符
final 变量:final 变量能被显式地初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象。但是 final 对象里的数据可以被改变。也就是说 final 对象的引用不能改变,但是里面的值可以改变。final 修饰符通常和 static 修饰符一起使用来创建类常量。final 方法类中的 final 方法可以被子类继承,但是不能被子...原创 2019-05-10 16:30:21 · 140 阅读 · 0 评论 -
java实现斗地主发牌简单逻辑(ArrayList)
斗地主【2】斗地主【1】:数组实现斗地主简单发牌逻辑1. 卡牌类package com.fjh.entity;/** * 卡牌類型 * @author 冯佳豪 * */public class Cards { /** * 牌值 */ private int value; /** * 牌面 */ private String text; /** * 花...原创 2019-06-24 20:07:23 · 789 阅读 · 0 评论 -
解决数三退一问题(数组,面向对象)
数三退一算法1.数组方法1. 算法描述500个小孩手拉手围成一个圈,第一个小孩从0开始数,数到3,就淘汰出局,退出这个圈,直至剩余最后一个,输出该小孩。2. 分析创建小孩数组,并将每个小孩赋布尔初值为 true 表示在圈内;默认从数组下标为0开始数,用count 计数(初值为1);当count == 3 淘汰这个小孩,即将其值设为false,并将计数器count置为初值1;循...原创 2019-06-24 19:53:18 · 797 阅读 · 0 评论 -
java反射机制
1. 什么是反射机制?首先大家应该先了解两个概念,编译期和运行期,编译期就是编译器帮你把源代码翻译成机器能识别的代码,比如编译器把java代码编译成jvm识别的字节码文件,而运行期指的是将可执行文件交给操作系统去执行,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为ja...原创 2019-07-02 21:26:19 · 16824 阅读 · 3 评论 -
java IO流相关
1.体系图解2.代码2.1 字符流读取文件package com.fjh;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;public class CharSt...原创 2019-07-02 21:03:52 · 144 阅读 · 0 评论 -
java读取json文件(Gson)
一、Gson的基本用法Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化;同时每个方法都提供了重载方法;Gson提供了良好的容错率,即使你的json文件没有写对,例如少写引号或者多写引号,都可以解析出来。二、举例读取下列文件中的内容package com.fjh.json;public class Person {...原创 2019-07-02 20:47:59 · 5600 阅读 · 0 评论 -
java读取xml文件(Dom,Dom4j)
1.Dom解析XMLpackage com.fjh.xml;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationExc...原创 2019-07-02 20:27:56 · 249 阅读 · 0 评论 -
java实现斗地主发牌简单逻辑(数组)
斗地主1. 分析生成一副牌并且分配给3个人,并且可以指定其中一个人为地主一副扑克 共有54张每一张扑克: 牌面值、花色(黑桃、红桃、梅花、方块)特殊情况: 大王、小王牌面值2、3、。。。10,j、Q、K 、A 、小王、大王牌面的计算属性值:j = 11Q = 12K = 13A = 142 = 15小王 = 16大王 = 17如何产生出一副牌?发牌...原创 2019-06-23 15:56:20 · 1674 阅读 · 0 评论 -
java字符校验小游戏
小游戏练习面向对象计算机输出字符串,玩家根据计算输出的内容重复输入,如果输入正确,进入一下关的练习,该过程记录玩家的积分,定义游戏的关卡,定义游戏的规则1. 定义游戏的规则 游戏的关卡 1关 每关字符串的长度 如果是2个长度 每关字符串出现的次数 5次 ab cd ef de er 每关时间限制 20s时间 每输入正确一次的...原创 2019-06-25 19:01:11 · 234 阅读 · 0 评论 -
int和Integer有什么区别?
int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型2、Integer变量必须实例化后才能使用,而int变量不需要3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值4、Integer的默认值是null,int的默认值是0延伸:关于Integer和int的比较1、由...原创 2019-04-11 17:04:44 · 414 阅读 · 0 评论