缓存 算法java lru
day09-MyBatis缓存
MyBatis缓存 mybatis – MyBatis 3 | cache MyBatis 一级缓存全详解(一) MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进。 1.一级缓存 1 ......
基于内容的推荐系统算法
基于内容的推荐算法是一种常用的推荐算法,它主要通过分析物品的特征(如文本、图片、视频等)来实现推荐。其核心思想是利用物品属性的相似性,将已经喜欢的物品的特征作为输入,推荐与该物品相似度高的其他物品。 基于内容的推荐算法仅考虑了单个用户对物品的偏好,而未考虑多个用户之间的交互和影响。此外,该算法在特征 ......
JAVA重试机制多种方式深入浅出
重试机制在分布式系统中,或者调用外部接口中,都是十分重要的。 重试机制可以保护系统减少因网络波动、依赖服务短暂性不可用带来的影响,让系统能更稳定的运行的一种保护机制。 为了方便说明,先假设我们想要进行重试的方法如下: @Slf4j @Component public class HelloServi ......
【基数排序算法详解】Java/Go/Python/JS/C不同语言实现
说明 基数排序(RadixSort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在列表机(Tabulation ......
【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现 说明 选择排序(Selection Sort)是一种简单直观的排序算法。跟冒泡、插入排序一样,它将数列分为已排序和待排序两个区间。首先在待排序序列中找到最小(或最大)的元素,追加到已排序序列中,然后继续从待排序序列中寻找最小( ......
Java多种方法实现等待所有子线程完成再继续执行
简介 在现实世界中,我们常常需要等待其它任务完成,才能继续执行下一步。Java实现等待子线程完成再继续执行的方式很多。我们来一一查看一下。 Thread的join方法 该方法是Thread提供的方法,调用join()时,会阻塞主线程,等该Thread完成才会继续执行,代码如下: private st ......
【桥接设计模式详解】Java/JS/Go/Python/TS不同语言实现
【桥接设计模式详解】Java/JS/Go/Python/TS不同语言实现 简介 桥接模式(Bridge Pattern)是一种结构型设计模式,它将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,来实现二者的解耦。参与桥接的接口是稳定的,用户可以扩展和修改桥接中的类,但是不能改变接口。 ......
【建造者设计模式详解】Java/JS/Go/Python/TS不同语言实现
简介 建造者模式(Builder Pattern),也叫生成器模式,属于创建型模式。它使用多个简单的对象一步一步构建成一个复杂的对象。它允许你使用相同的创建代码生成不同类型和形式的对象。 当你希望使用代码创建不同形式的产品 (例如各种商品和订单) 时, 一些基本部件不会变,而其组合经常变化的时候,就 ......
Redis缓存数据库-快速入门
Redis数据库快速入门 一、Redis数据库 介绍: Redis:非关系型缓存数据库 nosql:非关系型数据库 没有表,没有表与表之间的关系,更不存在外键 存储数据的形式为key:values的形式 c语言写的服务(监听端口),用来存储数据的,数据是存储在内存中,取值,放值速度非常快, 10w ......
算法学习笔记(18): 平衡树(一)
平衡树 建议在清楚二叉搜索树的所有操作之后食用本文。本文将略过部分基础知识 本文主要会讲到4中较常用的平衡树: Treap FHQ-Treap(无旋Treap) Splay WBLT 其实WBLT不怎么常用,但是我个人最喜欢用 我将会在另一篇文章中讲述其他的平衡树,如AVL,红黑树,替罪羊树等。 可 ......
Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战
需要完成功能 借助redis Stream 数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本 IDE:IDEA 2022 1、读取库存数据 【Lua】 2、判断库存 【Lua】 3、扣减库存 【Lua】 4、创建队列 ......
Java Agent场景性能测试分析优化经验分享
摘要:本文将以Sermant的SpringBoot 注册插件的性能测试及优化过程为例,分享在Java Agent场景如何进行更好的性能测试优化及在Java Agent下需要着重注意的性能陷阱。 作者:栾文飞 高级软件工程师 一、背景介绍 Sermant是一个主打服务治理领域的Java Agent框架 ......
java 中文繁简体转换工具 opencc4j 使用介绍 1.8.0
Opencc4j Opencc4j 支持中文繁简体转换,考虑到词组级别。 在线体验 Features 特点 严格区分「一简对多繁」和「一简对多异」。 完全兼容异体字,可以实现动态替换。 严格审校一简对多繁词条,原则为「能分则不合」。 词库和函数库完全分离,可以自由修改、导入、扩展。 兼容 Windo ......
还不知道如何在java中终止一个线程?快来,一文给你揭秘
简介 工作中我们经常会用到线程,一般情况下我们让线程执行就完事了,那么你们有没有想过如何去终止一个正在运行的线程呢? 今天带大家一起来看看。 Thread.stop被禁用之谜 问道怎么终止一个线程,可能大多数人都知道可以调用Thread.stop方法。 但是这个方法从jdk1.2之后就不推荐使用了, ......
Java stream sorted使用 Comparator 进行多字段排序
介绍使用Java Stream流排序器Comparator对List集合进行多字段排序的方法,包括复杂实体对象多字段升降序排序方法。 ......
AI来实现代码转换!Python转Java,Java转Go不在话下?
今天看到个有趣的网站,给大家分享一下。 该网站的功能很神奇,可以实现编程语言的转化。感觉在一些场景之下还是有点作用的,比如你原来跟我一样是做Java的,因为工作需要突然转Go。这个时候用你Java的经验 + 这个工具,或许可以起到一定的帮助作用。 工具的使用也很简单,只需要在左侧黏贴你想转换的原始代 ......
Java - JDBC批量插入原理
一、说明 在JDBC中,executeBatch这个方法可以将多条dml语句批量执行,效率比单条执行executeUpdate高很多,这是什么原理呢?在mysql和oracle中又是如何实现批量执行的呢?本文将给大家介绍这背后的原理。 二、实验介绍 本实验将通过以下三步进行 a. 记录jdbc在my ......
OpenAI Java SDK——chatgpt-java-v1.0.4更新支持GPT-3.5-Turbo,支持语音转文字,语音翻译。
简介 chatgpt-java是一个OpenAI的Java版SDK,支持开箱即用。目前以支持官网全部Api。支持最新版本GPT-3.5-Turbo模型以及whisper-1模型。增加chat聊天对话以及语音文件转文字,语音翻译。 开源地址:https://github.com/Grt1228/cha ......
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
上次给大家推荐过一个缓存中间件《一个C#开发的非常实用的缓存中间件》,今天再给大家推荐一个缓存中间件,两者功能差不多,都是提供统一接口、多级缓存、分布式缓存、支持多种Provider等。 项目简介 这是一个基于.Net Core开发的缓存中间件,它支持各种缓存并提供了很多高级功能。它的主要目标是让开 ......
Spring:现代Java开发的必备框架
Spring:现代Java开发的必备框架 Spring是一个轻量级的Java框架,它提供了各种企业级应用程序开发的工具和技术。Spring框架的核心是IoC容器和AOP框架。IoC容器使得Java应用程序的组件化变得更加容易,AOP框架使得Java应用程序的切面编程变得更加容易。Spring框架还提 ......
生产环境Java应用服务内存泄漏分析与解决
有个生产环境CRM业务应用服务,情况有些奇怪,监控数据显示内存异常。内存使用率99.%多。通过生产监控看板发现,CRM内存超配或内存泄漏的现象,下面分析一下这个问题过程记录。 1、服务器硬件配置部署情况 生产服务器采用阿里云ECS机器,配置是2HZ、8GB,单个应用服务独占,CRM应用独立部署,即单 ......
轮播图接口加缓存和定时更新(双写一致性问题以及其解决方案)
一、轮播图加缓存 有些知名网站首页被访问的频率很高,假设瞬间 1w个人在访问,首页的轮播图接口会执行1w次,1w次查询轮播图标的sql在执行,轮播图基本不变,首先我们给自己写的轮播图接口加缓存,我们可以用缓存数据库Redis来实现加缓存的需求 首先罗列一下文字版的逻辑,之后在代码上实现 当轮播图接口 ......
IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤
IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤 、 @ IDEA 导入项目模块 Module 一. 创建一个空项目 想要导入模块 Module ,我们需要先创建一个项目,因为 Module模块在 IDEA 中是存在于项目下的。 这里我们先创建一个空项目,当然已经有项目了, ......
java代码审计-文件操作
0x01 任意文件读取 @GetMapping("/path_traversal/vul") public String getImage(String filepath) throws IOException { return getImgBase64(filepath); } 这里的路由对应的方 ......
java代码审计-SSRF
0x00 前言 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等。这里主要介绍java中URLConnection()和openStream()两个方法产生SSRF的原理和修复 ......
java代码审计-SpEL表达式注入
0x01 前言 Spring Expression Language(简称 SpEL)是一种功能强大的表达式语言、用于在运行时查询和操作对象图;语法上类似于Unified EL,但提供了更多的特性,特别是方法调用和基本字符串模板函数。SpEL 的诞生是为了给 Spring 社区提供一种能够与Spri ......
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。 ......
全局视角看技术-Java多线程演进史
本篇语言通俗易懂,是一篇具有大纲性质的关于多线程的梳理,作者从历史演进的角度讲了多线程相关知识体系,让你知其然知其所以然。 ......
【LeetCode回溯算法#08】递增子序列,巩固回溯算法中的去重问题
递增子序列 力扣题目链接(opens new window) 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例 1: 输入:nums = [4,6,7,7] 输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6 ......