自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 Spring整合Mybatis原理

Spring整合Mybatis原理

2023-07-22 17:14:58 561

原创 Redis主从架构

打包的命令越多,缓存消耗内存也越多。其中 “return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}” 是被求值的Lua脚本,数字2指定了键名参数的数量, key1和key2是键名参数,分别使用 KEYS[1] 和 KEYS[2] 访问,而最后的 first 和 second 则是附加参数,可以通过 ARGV[1] 和 ARGV[2] 访问它们。] ,可以在Lua中通过全局变量ARGV数组访问,访问的形式和KEYS变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

2023-07-18 22:26:21 533 2

原创 ELK搭建

ELK是一组开源工具的缩写,它由Elasticsearch、Logstash和Kibana三个组件组成,用于处理、分析和可视化大量日志数据。1.需要准备一台linux服务器(最好是CentOS7),内存至少4g以上(三个组件都比较占用内存)2.需要有docker使用经验。

2023-07-14 11:50:13 2957

原创 maven-mvnd(新版maven)

maven-mvnd是Apache Maven团队开发的maven的强化版。maven-mvnd 基于 maven 的但比它更快的构建工具。一、mvnd 打包的总时间比 mvn 快了不少,这个结论可自行测试二、本人还是更倾向于 mvn ,因为 IDEA 无法集成 mvnd。

2023-06-27 19:24:38 1216

原创 线程池ThreadPoolExecutor底层原理源码分析

Tomcat中用的线程池为org.apache.tomcat.util.threads.ThreadPoolExecutor,注意类名和JUC下的⼀样,但是包名不⼀样。Tomcat会创建这个线程池:注入传入的队列为TaskQueue,它的入队逻辑为:入队时,如果线程池的线程个数等于最大线程池数才入队入队时,如果线程池的线程个数小于最大线程池数,会返回false,表示入队失败仍然会先判断线程个数是否小于核心线程数,如果小于则创建线程。

2023-05-22 22:21:10 540

原创 详解GitHub

GitHub 是一个用于版本控制和协作的代码托管平台。它允许您和其他人从任何地方共同处理项目。在本快速入门指南中,你将:创建和使用存储库启动和管理新分支对文件进行更改并将其作为提交推送到 GitHub打开并合并拉取请求GitHub是一个代码托管云服务网站,帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改。甚至你可以简单粗暴的把它当作一个网盘,用来存储任何东西。

2023-05-20 15:36:54 8835

原创 Maven安装教程以及修改下载镜像源等配置

Binary是可执行版本,已经编译好可以直接使用。Source是源代码版本,需要自己编译成可执行软件才可使用。我们选择已经编译好的windows版本进行安装:选择zip版本(linux选择tar.gz)

2023-04-22 10:16:44 5375

原创 JDK环境变量自动配置工具

继后,有人说配置Java环境变量太繁琐了,因此出现这篇文章。其中有两个是自行研发。多的废话不说了,直接上工具链接。

2023-01-11 20:35:22 265

原创 Java 实现的限流算法

获取连接许可的接口1.滑动日志用一个有序集合来存储所有请求的时间戳,以空间换时间的方式来简化计算2.令牌桶利用延迟计算来维护令牌数量3.漏桶漏桶算法原理类似于线程池,请求到来先放入等待队列,然后消费端从请求队列中拉取请求,当请求队列超过最大容量后,执行拒绝策略

2022-12-04 11:24:28 1386

原创 Java 实现异步编程的方式

首先我们先看一个常见的用户下单的场景:在同步操作中,我们执行到发送短信的时候,我们必须等待这个方法彻底执行完才能执行赠送积分这个操作,如果赠送积分这个动作执行时间较长,发送短信需要等待,这就是典型的同步场景。实际上,发送短信和赠送积分没有任何的依赖关系,通过异步,我们可以实现赠送积分和发送短信这两个操作能够同时进行,比如:这就是所谓的异步,是不是非常简单,下面就说说异步的几种实现方式吧。异步(async)是相对于同步(sync)而言的,很好理解。同步就是一件事一件事的执行。

2022-12-02 16:37:52 249

原创 Java 8消灭空指针

对于空指针问题,看起来问题不大,但是影响到了线上的业务正常运转,那肯定是不行的。

2022-11-23 13:26:07 548

原创 实现订单到期关闭

在电商、支付等系统中,一般都是先创建订单(支付单),再给用户一定的时间进行支付,如果没有按时支付的话,就需要把之前的订单(支付单)取消掉。这种类似的场景有很多,还有比如到期自动收货、超时自动退款、下单后自动发送短信等等都是类似的业务问题。本文就从这样的业务问题出发,探讨一下都有哪些技术方案,这些方案的实现细节,以及相关的优缺点都有什么?因为本文要讲的内容比较多,涉及到11种具体方案,受篇幅限制,因为只要方案搞清楚了,代码实现不是难事儿。

2022-11-13 15:47:24 1734

原创 Dubbo 本地调试的几种方式

在正常的dubbo开发迭代过程,本地调试是比较常见的情况,一般来说,主要以下两种情况我们需要本地调试dubbo服务开发调试阶段:这个阶段我们一般不希望服务被别人访问dubbo服务已经发布测试环境,但是某个服务出了问题希望本地断点定位:本地启动的应用不希望对外暴露,但是又需要对特定的服务路由到本地。

2022-11-10 03:30:00 708

原创 Java中的线程中断

Java多线程编程中的方法、方法和方法都是跟线程中断相关的方法,都非常重要。这三个方法名称非常相似,不理解原理时容易混淆,这里分别介绍下,以加以区分。由于方法和方法都是实例方法(非类上的静态方法),因此我在前面加了个thread1线程内调用wait,join,sleep时都会进入阻塞状态。当线程处于阻塞状态时被中断,这时线程就会抛出异常,其实大家可以通俗的理解为一种通知即可。以sleep{{{}}}有了异常通知,线程就可以在阻塞时立即知道被中断了,进而采取一定的措施响应中断。

2022-11-09 14:57:36 1366

原创 开发工具:2022个人开发工具清单

给大家分享一下作为一名程序员,日常常用的一些开发工具,相信有一些大家都经常用,有一些可能还没有用过,以下的10多个开发工具都是日常工作常用的,现在分享给大家,希望能给大家日常的办公、生活带来一些帮助,现在给大家逐一介绍。谷歌浏览器,大部分开发者首选的浏览器就是谷歌浏览器,它没有广告、界面简洁、启动速度快、前端调试也非常方便,应该是作为程序员必备软件。

2022-11-05 18:42:01 635

原创 C/C++内存管理

;{// 申请单个Test类型的空间free(p1);// 申请10个Test类型的空间free(p2);}{// 申请单个Test类型的对象delete p1;

2022-11-04 04:15:00 357

原创 Java 版本任你发,我用Java8.(Java 15 新功能介绍 )

Java 15 在 2020 年 9 月发布,虽然不是长久支持版本,但是也带来了 14 个新功能,这些新功能中有不少是十分实用的。

2022-11-02 14:17:06 483

原创 Java版本任你发,我用Java 8.(Java 14新特性)

Java 14 早在 2020 年 3 月就已经发布,虽然不是长久支持版本,但是也带来了不少新功能。如果一个功能为预览版,那么在编译和运行时需要打开预览功能。

2022-10-26 14:31:25 347

原创 SQL性能优化

三种连接如果结果相同,优先使用inner join,如果使用left join左边表尽量小。如果你删除数据量很大时,不加 limit限制一下记录数,容易把。4、数据量大的话,容易把CPU打满。模糊查询,程序员最喜欢的就是使用。(1)使用union all。1、降低写错SQL的代价。2、SQL效率很可能更高。(2)分开两条sql写。很可能让你的索引失效。打满,导致越删越慢。

2022-10-24 13:01:11 3029

原创 SQL跨表查询

我们知道mysql是不支持跨库连接的,但是老话说得好,只要思想不滑坡,思想总比困难多!进行sql的跨库关联查询?问题摆在这里了,还能不解决是怎么的?本人连接方案,以postgreSql库为例。

2022-10-21 14:30:07 2463

原创 冒泡排序升级,再升级

俗话说,面试造火箭🚀,工作拧螺丝🔩。在面试中,算法一定会考,在拧螺丝时却不一定会用,但是排序我相信大家或多或少都会用到。

2022-10-18 22:44:36 130

原创 C语言实现简洁版的图书管理系统

用于图书信息的管理。包括图书信息的创建、图书信息的打印、图书信息的查询、图书信息的修改、图书信息的删除。方便用户整理图书,查询图书。板块包括图书信息的创建、打印、查询、修改、删除、以及图书价格的排序等组成。代码后面也有注释的,基本很好理解的。这个图书管理系统是由单链表这一数据结构实现的。

2022-10-17 13:27:55 1831 1

原创 多线程永动任务

Java 的多线程永动任务,我把里面涉及到多线程的代码抽离出来,然后进行一定的改造。

2022-10-02 13:29:51 261

原创 synchronized与Lock底层原理

System.out.println("我是果橙呀");}}}阻塞模式抢占锁的方法。如果当前线程抢占锁成功,则继续向下执行程序的业务逻辑,否则,当前线程会阻塞,直到其它抢占到锁的线程释放锁后再继续抢占锁。可中断模式抢占锁的方法。当前线程在调用lockInterruptibly()方法抢占锁的过程中,能够响应中断信号,从而能够中断当前线程。非阻塞模式下抢占锁的方法。当前线程调用tryLock()方法抢占锁时,线程不会阻塞,而会立即返回抢占锁的结果。

2022-09-25 11:41:58 1163 1

原创 Zookeeper安装

zookeeper 服务在同步日志过程中耗时太长,会导致ZK无法响应外部请求,进而引发session过期,进而引发zk 服务端shut down。为避免此类问题,dataLogDir存放目录应该与dataDir分开,可单独采用一套存储设备来存放ZK日志。

2022-09-16 16:17:00 461

原创 C语言指针

当我们看到数组指针时,数组指针是数组还是指针?他应该是指针,也就是一个数组的地址,在这里p1和p2分别是指的什么?p1指的是一个整型指针数组,p1是一个数组,里面存放了10个int*类型的元素;p2是一个指针,在这里表示p2是一个指针变量,P2指向的是一个大小为10的一个整型数组,p2因为指向一个数组,也是一个数组指针。

2022-09-15 19:28:52 156

原创 缓存穿透、缓存雪崩、缓存击穿

分析业务请求,如果是正常业务请求时发生缓存穿透现象,可针对相应的业务数据,在数据库查询不存在时,将其缓存为空值(null)或默认值。缓存雪崩是指只大量热点key同时失效的情况,如果是单个热点key,在不停的扛着大并发,在这个key失效的瞬间,持续的大并发请求就会击破缓存,直接请求到数据库,好像蛮力击穿一样。在写入数据时,使用布隆过滤器进行标记(相当于设置白名单),业务请求发现缓存中无对应数据时,可先通过查询布隆过滤器判断数据是否在白名单内,如果不在白名单内,则直接返回空或失败。优点:实现简单,维护方便。

2022-09-15 12:20:38 176

原创 Java获取IP归属地

前几个月微信公众号上线了IP归属地的功能,后续知乎、抖音等平台纷纷添加了该功能。如果是国内的用户精确到省份,国外用户精确到国家。本文就使用Java实现获取IP归属地。Java获取请求IP解决Nginx转发问题通过IP地址获取归属地。

2022-09-12 11:46:27 324

原创 C程序的内存开辟

本篇博客旨在加深动态内存开辟的理解,以 C/C++ 程序的内存开辟为主题进行简要的分析。四随后会带着讲解 scanf、fscanf、sscanf / printf、fprintf、sprintf 这些函数长得都挺像的,它们分别都是干什么的呢?本篇博客将对这些格式化输入输出函数进行一个讲解。本篇为文件操作章节延伸,新手建议学过文件操作后观看。scanf 针对标准输入的格式化的输入语句 -stdinfscanf 针对所有输出流的格式化的输出语句 -stdin/文件。

2022-09-10 13:05:41 525

原创 MySQL安装配置及安装失败解决

MySQL详细安装配置及安装失败解决

2022-09-08 18:10:20 48808 11

原创 Java 中的代码性能提升技巧

这篇文章介绍几个 Java 开发中可以进行性能优化的小技巧,虽然大多数情况下极致优化代码是没有必要的,但是作为一名技术开发者,我们还是想追求代码的更小、更快,更强。如果哪天你发现程序的运行速度不尽人意,可能会想到这篇文章。提示:我们不应该为了优化而优化,这有时会增加代码的复杂度。这篇文章中的代码都在以下环境中进行性能测试。JMH version: 1.33(Java 基准测试框架)

2022-09-06 21:23:17 234

原创 Java版本任你发,我用Java 8.(Java 13新特性)

自从 Oracle 调整了 Java 的版本发布节奏之后,Java 版本发布越来越快,虽然都说 Java 版本任他发,我用 Java 8,不过新版本的 Java 功能还是要学习一下的。Java 13 早在 2019 年 9 月就已经发布,虽然不是长久支持版本,但是也带来了不少新功能。

2022-09-04 11:01:11 251

原创 Altium Designer --> 电气电路

Altium Designer是原Protel软件开发商Altium公司开发的一体化的电子产品开发系统,AD19结合了原理图、ECAD库、规则和限制条件、BOM、供应链管理、ECO流程和世界一流的PCB设计工具,让您快速的完成对设计过程的把握,能让产品的设计成本减少,支持对原理图进行编辑,而且可以在同一应用程序里面完成对印刷电路板的布置。(仅供学习交流使用)系统架构:WIN7、WIN8.1、WIN10(64位)

2022-09-03 08:03:44 1319

原创 一次渗透经历

每一个参数都有可能是我们渗透成功的利刃,不要因为个别参数不行而放弃所有参数。

2022-08-31 17:35:02 557

原创 浏览器推荐及浏览器内核

浏览器内核简介:浏览器最重要或者说核心的部分是"Rendering Engine",可大概译为"渲染引擎",不过我们一般习惯将之称为"浏览器内核"。负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页。所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。..................

2022-08-28 20:58:28 13328

原创 推荐阿里巴巴 15 个前端开源项目

阿里巴巴 15 个前端开源项目:Ant DesignElement UIEgg.jsIcejsUmiJSG2ahooksFormilyRaxLowCodeEngineMidwayBizChartsHiloXRenderFusion Design

2022-08-26 22:27:15 1445

原创 Java 版本任你发,我用Java8.(Java 12 新特性介绍 )

Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本。

2022-08-22 21:32:29 218

转载 前端之缓存

web缓存主要指的是两部分:浏览器缓存和http缓存。其中http缓存是web缓存的核心,是最难懂的那一部分,也是最重要的那一部分。浏览器缓存:比如,localStorage,sessionStorage,cookie等等。这些功能主要用于缓存一些必要的数据,比如用户信息。比如需要携带到后端的参数。亦或者是一些列表数据等等。不过这里需要注意。像localStorage,sessionStorage这种用户缓存数据的功能,他只能保存5M左右的数据,多了不行。cookie则更少,大概只能有4kb的数据。

2022-08-21 21:17:10 5949 1

原创 VScode中配置 C/C++ 环境

创建一个first的子文件夹放项目,比如我的是helloWorld(文件夹名字随意),然后在文件夹下创建C/C++文件,比如我这里创建helloWorld.cpp。链接: https://pan.baidu.com/s/1GXPOD6cntlZOjDkEriyxDw?在c_cpp_properties.json,launch.json,tasks.json三个文件填入相应信息。分别是c_cpp_properties.json,launch.json,tasks.json。下载完成后重启vsCode。...

2022-08-14 11:15:43 113

原创 Java四大引用

java4种引用的级别由高到低依次为:强引用 > 软引用 > 弱引用 > 虚引用。

2022-08-13 12:51:24 1017

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除