自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田埂、の技术博客

仍在奔赴远方路上的少年

  • 博客(90)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 CSDN编程竞赛第三期 参赛经历分享

奖品还是挺不错的:比赛嘛,最终重要的还是锻炼自己。不管怎么样,通过参加比赛发现自己的不足,有进步了总归是好的,也别太在乎这成绩,就当练手了。

2022-08-27 21:56:48 1094 1

原创 推荐17个提升Java开发效率的“轮子”

在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子。如果在我们的日常工作当中,能够将这些轮子用户,再配合一下idea的快捷键,可以极大得提升我们的开发效率。

2022-08-21 18:57:37 1083

原创 教你轻松使用Fastjson

Fastjson 是阿里巴巴公司开源的一个 Java 语言编写的高性能功能完善的 JSON 库。它采用一种“假定有序快速匹配”的算法,把 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库,并且它不依赖于其它任何库。......

2022-08-14 23:38:31 2038

原创 超详细总结,带你实现 Linux 命令自由

Linux的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发,接触 `Linux` 机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。

2022-08-07 18:42:16 618

原创 彻底理解 进程、线程、多进程、多线程

教科书上解释:进程是资源分配的最小单位。线程是CPU调度的最小单位。

2022-03-26 17:20:45 1055 15

原创 终于弄明白了ThreadLocal

一个ThreadLocal在一个线程中是共享的,在不同线程之间又是隔离的(每个线程都只能看到自己线程的值)。写SpringBoot项目的时候,经常用到的一个保存用户信息的类就是Threadlocal。

2022-03-23 11:49:59 6922 33

原创 常见的限流算法分析以及手写实现(计数器、漏斗、令牌桶)

吊打面试官系列:常见的限流算法分析以及手写实现(计数器、漏斗、令牌桶)

2022-03-17 22:00:34 1533 39

原创 手写分布式雪花(SnowFlake)算法生成ID

SnowFlake是twitter公司内部分布式项目采用的ID生成算法,开源后广受国内大厂的好评。由这种算法生成的ID,我们就叫做SnowFlakeID。

2022-03-15 19:04:02 2670 38

原创 JVM垃圾收集-ZGC的染色指针

ZGC收集器有一个标志性的设计,就是采用了染色指针技术。染色指针技术 是如何实现的呢?虚拟内存映射了解么?

2022-03-13 13:03:48 1469 27

原创 MySQL中:一条update语句是怎样执行的

上一篇文章说完MySQL的事务和锁了,这次来详细介绍一下在MySQL中一条更新语句的详细执行流程 (本文无特殊说明均是采用Innodb存储引擎)。前期准备首先创建一张表,然后插入三条数据:CREATE TABLE T( ID int(11) NOT NULL AUTO_INCREMENT, c int(11) NOT NULL, PRIMARY KEY (ID)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';INSERT INTO T(

2022-03-11 13:28:15 4559 40

原创 MySQL常见的锁分析

本文会给大家介绍共享锁(S锁)、排它锁(X锁)、意向共享锁(IS锁)、意向排他锁(IX锁)。以及加锁的算法行锁、表锁、间隙锁和各种索引都会介绍到。学到就是赚到~

2022-03-10 21:10:48 1032 18

原创 蓝桥杯历年真题及解析(Java B组)

蓝桥杯历年的真题及解析汇总,后续会继续更新,欢迎各位小伙伴关注我吖,你们的关注就是给我最好的动力!!!

2022-03-10 16:48:34 3875

原创 JVM垃圾回收-三色标记

🎈现代大多数跟踪垃圾收集器(如CMS、G1、Shenandoah)都实现三色标记☘抽象的一些变体来对“垃圾”进行标记的。之所以都选择三色标记✨✨✨是因为它能够解决或者降低用户线程的停顿时间🍋。

2022-02-25 19:45:21 736 17

原创 JVM垃圾回收-记忆集和卡表

记忆集是一种用于记录从非收集区域指向收集区域的指针集合的抽象数据结构。卡表是记忆集的一种具体实现。

2022-02-23 21:19:14 897 7

原创 字典树(前缀树)

为什么需要用字典树解决这类问题呢?假如我们有一个储存了近万个单词的字典,即使我们使用哈希,在其中搜索一个单词的实际开销也是非常大的,且无法轻易支持搜索单词前缀。然而由于一个英文单词的长度 n 通常在 10 以内,如果我们使用字典树,则可以在 O(n)——近似 O(1)的时间内完成搜索,且额外开销非常小。

2021-08-04 16:37:19 219 2

原创 链表(单链表)

(单)链表是由节点和指针构成的数据结构,每个节点存有一个值,和一个指向下一个节点的指针,因此很多链表问题可以用递归来处理。不同于数组,链表并不能直接获取任意节点的值,必须要通过指针找到该节点后才能获取其值。同理,在未遍历到链表结尾时,我们也无法知道链表的长度,除非依赖其他数据结构储存长度。

2021-08-02 00:34:32 173 1

原创 搜索(DFS+BFS+回溯法)

一切皆可搜索概述深度优先搜索回溯法广度优先搜索练习:概述深度优先搜索和广度优先搜索是两种最常见的优先搜索方法,它们被广泛地运用在图和树等结构中进行搜索。深度优先搜索深度优先搜索(depth-first seach,DFS)在搜索到一个新的节点时,立即对该新节点进行遍历;因此遍历需要用先入后出的栈来实现,也可以通过与栈等价的递归来实现。对于树结构而言,由于总是对新节点调用遍历,因此看起来是向着“深”的方向前进。深度优先搜索也可以用来检测环路:记录每个遍历过的节点的父节点,若一个节点被再次

2021-07-31 20:13:30 464 1

原创 二分查找(折半查找)

二分查找算法二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复杂度为 O(log n)。

2021-07-25 00:57:18 486 1

原创 玩转双指针

双指针概念:双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。Two Sum167.两数之和 II - 输入有序数组题解:因为数组已经排好序,我们可以采用方向相反的双指针来寻找这两个数字,一个初始指向最小的元素,即数组最左边,

2021-07-23 00:58:01 144

原创 最易懂的贪心算法

顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。

2021-07-22 01:32:41 300 2

原创 八种排序算法与代码实现(java代码实现)

八种排序算法与代码实现堆排序思路:1.将序列构建成大顶堆。2.将根节点与最后一个节点交换,然后断开最后一个节点。3.重复第一、二步,直到所有节点断开。/** * 堆排序 * * @param arr 待排序的数组 */ public void headSort(int[] arr) { int len = arr.length - 1; //利用循环 排成大顶堆 (叶子结点 小于父节点 满足a[i]>a[i

2021-07-15 12:04:54 113

原创 (Rabin-Karp算法)匹配字符串(滚动哈希)

(Rabin-Karp算法)匹配字符串(滚动哈希)Rabin-Karp算法的思路是将字符串的比较转换成数字的比较。比较两个长度为m的字符串是否相等需要O(m)的时间,而比较两个数字是否相等通常可以是O(1)。为了将字符串映射到对应的数字,故此需要用到哈希函数。接下来的问题是,如何快速将字符串映射到对应的数字呢?如果需要在 O(L)的时间内算出编码,这种方法就没有意义了,因为这个直接进行字符串比较需要的时间相同。为了能够快速计算出字符串编码,我们可以将字符串看成一个 26 进制的数(因为字符串中仅

2021-07-14 23:56:42 622 1

原创 Docker常用命令大全

Docker常用命令一、Docker基本操作Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的(如果非要使用CentOS的话建议最好7.x或以上版本)。使用yum命令在线安装: yum -y install docker查看Docker的版本:docker -vDocker的启用和停止:启动docker:systemctl

2021-06-26 13:46:29 511

原创 SSM(spring+springMVC+mybatis)整合 所有配置文件

SSM(spring+springMVC+mybatis)整合 所有配置文件dao层service层web层日志等 所有的配置文件

2021-06-18 11:41:14 85

原创 第十一届蓝桥杯 2020年国赛真题及解析 (Java 大学B组)

第十一届蓝桥杯 2020年国赛真题 Java 大学B组A 美丽的 2B 扩散C 阶乘约数D 本质上升序列E 玩具蛇F 蓝肽子序列​G 皮亚诺曲线距离H 画廊I 补给J 质数行者

2021-06-02 14:53:34 2389 1

原创 工厂设计模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式 属于创建型模式 ,它提供了一种创建对象的最佳方式。之前我们创建类对象时, 都是使用new 对象的形式创建, 除new对象方式以外, 工厂模式也可以创建对象.

2021-05-20 00:07:44 119

原创 多例设计模式

多例模式,是一种常用的软件设计模式。通过多例模式可以保证系统中,应用该模式的类有 固定数量的实例 。多例类要自我创建并管理自己的实例,还要向外界提供获取本类实例的方法。

2021-05-20 00:01:34 319

原创 单例设计模式

单例设计模式正常情况下一个类可以创建多个对象,但是有些时候的某些类, 我们希望只能创建单一的一个对象, 这时候我们需要使用到单例设计模式, 下面我们来介绍一下单例设计模式。单例设计模式的作用单例模式,是一种常用的软件设计模式。 通过单例模式可以保证系统中,应用该模式的这个类只有一个实例。 即一个类只有一个对象实例。单例设计模式实现步骤将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。在该类内部产生一个唯一的实例化对象定义一个静态方法返回这个唯一对象。例设计模

2021-05-19 23:56:03 53

原创 装饰者模式

装饰模式指的是在不改变原类, 不使用继承的基础上,动态地扩展一个对象的功能。

2021-05-16 19:06:02 72

转载 模板消息设计模式

设计模式就是解决一些问题时的固定思路,也就是代码设计思路经验的总结。

2021-05-12 19:31:56 333

原创 epoll底层原理

epoll作为linux下高性能网络服务器的必备技术至关重要,java NIO、nginx、redis、skynet和大部分游戏服务器都使用了这一多路复用技术。epoll是select和poll的增强版本。

2021-05-03 19:16:20 3630 1

原创 java线程池介绍

java高并发应用频繁创建和销毁线程的操作将是非常低效的,而且不被编程规范所允许的。如何降低java线程的创建成本,就必须用到线程池。

2021-05-02 12:28:10 135

原创 java中线程的使用

java中线程的使用java中创建线程的几种方法:创建线程(Thread实例)的方式一:继承Thread类创建线程类,让后创建线程实例创建线程(Thread实例)的方式二:实现Runnable接口创建线程目标类,让后创建线程实例Future接口和FutureTask异步任务类使用Callable和FutureTask创建异步任务,让后创建线程实例通过线程池创建线程

2021-04-30 12:21:28 127 1

原创 start方法和run方法的区别

start方法和run方法的区别start()用start()启动线程,实现了真正意义上的启动线程,此时会出现异步执行的效果start()启动了Thread实例的生命周期run()直接调用Thread实例的run(),相当于当前线程执行一次其业务逻辑,是同步执行的就不是异步执行了,不会达到使用线程的意义run()没有启动线程的生命周期启动生命周期的意思是: 线程的执行状态发生改变(即state的值变了)...

2021-04-30 12:13:12 101

原创 进程和线程的区别

详细分析进程和线程什么是进程什么是线程进程与线程的区别

2021-04-29 17:34:58 88

原创 Guava 的异步回调介绍

Guava 的异步回调介绍Guava 对 Java 的异步回调机制,做了以下的增强:(1)引入了一个新的接口 ListenableFuture,继承了 Java 的 Future 接口,使得 Java 的 Future异步任务,在 Guava 中能被监控和获得非阻塞异步执行的结果。(2)引入了一个新的接口 FutureCallback,这是一个独立的新接口。该接口的目的,是在异步任务执行完成后,根据异步结果,完成不同的回调处理,并且可以处理异步结果。

2021-04-23 12:36:21 1012 1

原创 join 异步阻塞介绍

join 异步阻塞介绍join 操作的原理是:阻塞当前的线程,直到准备合并的目标线程的执行完成。线程的 join 合并流程:在 Java 中,线程(Thread)的合并流程是:假设线程 A 调用了线程 B 的 B.join 方法,合并 B线程。那么,线程 A 进入阻塞状态,直到 B 线程执行完成。使用 join 实现异步泡茶喝的实践案例流程图:代码实现:public class JoinDemo { public static final int SLEEP_GAP = 5

2021-04-23 11:14:32 463

原创 FutureTask 异步回调介绍

FutureTask 异步回调介绍FutureTask 方式包含了一系列的 Java 相关的类,在 java.util.concurrent 包中。其中最为重要的是 FutureTask 类和 Callable 接口。

2021-04-23 11:12:23 511

原创 Java NIO 通信基础介绍

高性能的 Java 通信,绝对离不开 Java NIO 技术,现在主流的技术框架或中间件服务器,都使 用了 Java NIO 技术,譬如:Tomcat、Jetty、Netty。

2021-04-22 00:31:13 394 4

原创 2016年第七届Java B组蓝桥杯省赛真题解及析

第一题:煤球数目题目描述有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),…如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。个人答案:171700思路:把每一层的煤球数量都计算出来,让后相加。规律是:第二层煤球的数量比第一层的多2个第三层煤球的数量比第二层的多3个。。。。。。。第 i 层煤球的数量比第i-1层多i个个人代码:public class Main {

2021-04-17 00:29:24 907

外卖红包CPS小程序源码

外卖红包CPS小程序源码,安装教程我的主页里面有详细讲解

2021-03-25

130套学术答辩PPT模板.txt

130套学术答辩PPT,需要的可以看一下~~~免费!!!

2021-03-23

最新毕业论文写作攻略.txt

快毕业的小伙伴们福利来了,免费的毕业论文写作攻略~~~

2021-03-23

2021毕业答辩攻略百度网盘下载链接.txt

快毕业的小伙伴们注意了,免费的毕业答辩攻略技巧,需要的可以看一下.

2021-03-23

新版PDF编辑器百度网盘下载链接.txt

新版本的PDF编辑器win和IOS都有,需要的自取,免费.

2021-03-23

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

TA关注的人

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