自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(432)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java性能调优学习

一、编程性能调优一.字符串性能优化不容小觑,百M内存轻松存储几十G数据二.慎重使用正则表达式三.ArrayList还是LinkedList?使用不当性能差千倍四.Stream如何提高遍历集合效率?五.深入浅出HashMap的设计与优化六.网络通信优化之I/O模型:如何解决高并发下I/O瓶颈?七.网络通信优化之序列化:避免使用Java序列化八.网络通信优化之通信协议:如何优化RPC网络通信?九.深入了解NIO的优化实现原理二、多线程性能调优一.二.三.四.五.三、JVM性能调优

2021-11-01 16:13:48 89

原创 Spring&&SpringBoot&&SpringCloud&&SpringCloudAlibaba&&Spring Security汇总

一、Spring1、Spring编程常见错误–Spring Core篇-01 |Spring Bean 定义常见错误2、Spring编程常见错误–Spring Core篇-02 |Spring Bean 依赖注入常见错误(上)3、Spring编程常见错误–Spring Core篇-03 |Spring Bean 依赖注入常见错误(下)4、Spring编程常见错误–Spring Core篇-04 |Spring Bean 生命周期常见错误5、Spring编程常见错误–Spring Core篇-05

2021-07-29 21:36:31 225

原创 透视HTTP协议-01|HTTP协议简介

一、HTTP协议基础一.HTTP是什么HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。HTTP 专门用来在两点之间传输数据,不能用于广播、寻址或路由。HTTP 传输的是文字、图片、音频、视频等超文本数据。HTTP 是构建互联网的重要基础技术,它没有实体,依赖许多其他的技术来实现,但同时许多技术也都依赖于它。二.与HTTP相关的各种协议1、TCP/IPTCP/IP 协议实际上是一系列网络通信协议的统称,

2021-05-18 14:34:09 84

原创 Java多线程基础学习

# 一、基础知识因为运行在虚拟机上JAVA不能直接操作硬件,因此并不能真正的开启线程,而是去调用本地方法C++的方法进行开启的。## 一.线程和进程进程:进程可以理解为一个程序,一个正在进行的过程或者说任务,由CPU执行线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2021-05-13 00:25:46 143 3

原创 Netty学习(一):初识Netty

一、什么是经典的三种I/O模式现实模型IO模式JDK版本排队打饭模式BIO (同步阻塞)JDK1.4之前点单被叫模式NIO (同步非阻塞)JDK1.4包厢模式AIO(异步非阻塞)JDK1.7一.阻塞与非阻塞二.同步与异步同步和异步关注的是消息通信机制二、Netty对三种I/O模式的支持三、为什么Netty目前只支持NIO四、为什么Netty有多种NIO实现五、NIO和BIO性能比较六、Netty是怎么切换I/O模式的...

2021-05-10 00:30:11 819 10

原创 Nginx学习(一)——Nginx基础知识

一、初试Nginx一.下载安装1、安装必要的一些类库和软件支持(centos)centos平台编译环境使用如下指令yum -y install gcc automake autoconf libtool makeyum install gcc gcc-c++正则表达相关PCREcentos:yum install -y pcre pcre-develyum -y install openssl openssl-devel安装zlib库 wget https://nchc.dl.so

2021-04-23 17:33:09 98 1

原创 数据结构与算法汇总

数据结构与算法之美目录

2021-01-27 10:55:08 150

原创 Java基础学习-常用注解

一、Spring常用注解一.@Component(@Service/@Repository/@Controller)这四个注解是等价的,主要用于将标记的类注册到Spring容器中@Component:通用注解,不知道写什么就写这个@Controller:Controller层注解@Service:Service层注解,添加在实现类上。@Repository应用中持久层Mapper上的二.@Configuration和@Bean三.@Value和@ConfigurationProperti

2021-11-23 10:50:03 234

原创 Java基础-多态、重载和重写的区别及用法

一、重写(方法的入参和返回不变,但是修改了流程)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!二、重载(定义不同参数的同名方法)java允许一个程序中定义多个名称相同的方法,但是参数类型或个数必须不同方法的重载和返回值类型无关,他只需要满足两个条件:1)方法名相同2)参数个数或参数类型不同三、多态()1、意义理解2、常用案例3、实现条件...

2021-11-22 14:03:12 158

原创 Java基础-抽象类与接口

抽象类与接口概念上的区别从概念上,抽象类描述的是这个类是什么,而接口指的是可以做什么。抽象类中可以定义普通方法和抽象方法,被子类继承之后,抽象方法必须被实现,而普通方法可以选择或者不选择重写。抽象类public abstract class Employee { private String name; private String address; private int number; public Employee(String name, String ad

2021-11-19 11:31:38 248

原创 Java基础-Java中的集合框架

一、Java集合框架基础接口一.CollectionCollection使集合框架的基础接口之一,一个集合代表一组对象,这些对象即为集合的元素。Java平台不提供这个接口的任何直接实现。二.Set一个不包含重复元素的集合三.List一个可以包含重复元组的集合四.MapMap是一个将key映射到value的对象,一个Map不能包含重复的Key,每个Key只能映射一个Value五.Queue队列结构的实现六.Iterable基础接口,可以通过for-each语法进行遍历。二、List的

2021-11-18 23:50:20 963

原创 Redis进阶学习--03| Redis是如何工作的?

三、Redis是如何工作的?Redis 提供了高性能的数据存取功能,所以广泛应用在缓存场景中,既能有效地提升业务应用的响应速度,还可以避免把高并发大压力的请求发送到数据库层。如果 Redis 做缓存时出现了问题,比如说缓存失效,那么,大量请求就会直接积压到数据库层,必然会给数据库带来巨大的压力,很可能会导致数据库宕机或是故障,那么,业务应用就没有办法存取数据、响应用户请求了。关于Redis包括工作原理、替换策略、异常处理和扩展机制,有四个问题需要解决。Redis 缓存具体是怎么工作的?Redis

2021-11-16 23:19:28 546

原创 Redis进阶学习--03| 内存快照:宕机后,Redis如何实现快速恢复?

三、内存快照:宕机后,Redis如何实现快速恢复?一.什么是内存快照Redis 数据丢失可以使用 AOF 方法进行恢复,但是如果数据量过大,恢复的效率就很慢,因此需要另一种持久化方法:内存快照。所谓内存快照,就是指内存中的数据在某一个时刻的状态记录。这就类似于照片,当你给朋友拍照时,一张照片就能把朋友一瞬间的形象完全记下来。内存快照可以理解为数据库中的库备份。...

2021-11-16 17:31:36 576

原创 Redis进阶学习--02| AOF日志:宕机了,Redis如何避免数据丢失?

一、AOF 日志是如何实现的(Redis是追求速率优先的设计,先执行命令,后写入日志(磁盘))AOF日志与Redis命令执行的顺序是先执行命令写入内存,之后再写入日志中。写后日志这种方式,就是先让系统执行命令,只有命令能执行成功,才会被记录到日志中,否则,系统就会直接向客户端报错。所以,Redis 使用写后日志这一方式的一大好处是,可以避免出现记录错误命令的情况。除此之外,AOF 还有一个好处:它是在命令执行后才记录日志,所以不会阻塞当前的写操作。不过,AOF 也有两个潜在的风险。首先,如果刚执行完

2021-11-16 17:25:08 599

原创 数据库性能调优-07|数据库参数设置优化,失之毫厘差之千里

七、数据库参数设置优化,失之毫厘差之千里一.MySQL 体系结构我们一般可以将 MySQL 的结构分为四层,最上层为客户端连接器,主要包括了数据库连接、授权认证、安全管理等,该层引用了线程池,为接入的连接请求提高线程处理效率。第二层是 Server 层,主要实现 SQL 的一些基础功能,包括 SQL 解析、优化、执行以及缓存等,其中与我们这一讲主要相关的就是缓存。第三层包括了各种存储引擎,主要负责数据的存取,这一层涉及到的 Buffer 缓存,也和这一讲密切相关。最下面一层是数据存储层,主要负责

2021-11-15 19:49:09 502

原创 leetcode-Algorithms-101|对称二叉树

原题思路我总共有两种思路1、递归2、中序遍历输出,根据长度判断深度,每一层都是一个回文数。代码class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) { return false; } return dfs(root.left, root.right); } private bool

2021-11-10 11:22:10 2078

原创 leetcode-Algorithms-495|提莫攻击

原题在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。给你一个 非递减 的整数数组 ti

2021-11-10 10:29:01 5

原创 数据库性能调优-03|MySQL调优之索引:索引的失效与优化

三、MySQL调优之索引:索引的失效与优化一.MySQL 索引存储结构索引是优化数据库查询最重要的方式之一,它是在 MySQL 的存储引擎层中实现的,所以每一种存储引擎对应的索引不一定相同。索引类型MyISAM引擎InnoDB引擎Memory引擎B+Tree索引yesyesyesHASH索引nonoyesR-Tree索引yesnonoFull-Text索引yesnonoB+Tree 索引和 Hash 索引是我们比较常用的两个索引数

2021-11-09 22:16:06 900

原创 数据库性能调优-02|MySQL调优之事务:高并发场景下的数据库事务调优

二、MySQL调优之事务:高并发场景下的数据库事务调优常用的数据库引擎为InnoDB和MyISAM,MyISAM不支持事务处理,所以Mysql事务基于InnoDB引擎。数据库事务具有以下四个基本属性:原子性(Atomicity)、一致性(Consistent)、隔离性(Isolation)以及持久性(Durable)。正是这些特性,才保证了数据库事务的安全性。一.并发事务带来的问题1、数据丢失2、脏读3、不可重复读4、幻读二.事务隔离解决并发问题1、未提交读(Read Uncommitte

2021-11-09 21:55:25 916

原创 数据库性能调优-01|MySQL调优之SQL语句:如何写出高性能SQL语句?

一、数据库性能调优-01|MySQL调优之SQL语句:如何写出高性能SQL语句?一.慢 SQL 语句的几种常见诱因1、无索引、索引失效导致慢查询如果在一张几千万数据的表中以一个没有索引的列作为查询条件,大部分情况下查询会非常耗时,这种查询毫无疑问是一个慢 SQL 查询。所以对于大数据量的查询,需要建立适合的索引来优化查询。2、锁等待常用的存储引擎有 InnoDB 和 MyISAM,前者支持行锁和表锁,后者只支持表锁,前者支持数据库事务,后者不支持。如果数据库操作是基于表锁实现的,试想下,如果一张

2021-11-09 21:50:08 619

原创 JVM性能调优-03|如何优化垃圾回收机制?

三、如何优化垃圾回收机制?一.垃圾回收机制在 Java 开发中,开发人员是无需过度关注对象的回收与释放的,JVM 的垃圾回收机制可以减轻不少工作量。但完全交由 JVM 回收对象,也会增加回收性能的不确定性。在一些特殊的业务场景下,不合适的垃圾回收算法以及策略,都有可能导致系统性能下降。面对不同的业务场景,垃圾回收的调优策略也不一样。例如,在对内存要求苛刻的情况下,需要提高对象的回收效率;在 CPU 使用率高的情况下,需要降低高并发时垃圾回收的频率。1、回收发生在哪里?2、对象在什么时候可以被回收?

2021-11-09 18:35:01 342

原创 JVM性能调优-02|深入JVM即时编译器JIT,优化Java编译

二、深入JVM即时编译器JIT,优化Java编译一.类编译加载执行过程1、类编译反编译来看看一个 class 文件结构中主要包含了的信息:2、类加载当一个类被创建实例或者被其它对象引用时,虚拟机在没有加载过该类的情况下,会通过类加载器将字节码文件加载到内存中。不同的实现类由不同的类加载器加载,JDK 中的本地方法类一般由根加载器(Bootstrp loader)加载进来,JDK 中内部实现的扩展类一般由扩展加载器(ExtClassLoader )实现加载,而程序中的类文件则由系统加载器(App

2021-11-09 14:58:29 768

原创 leetcode-Algorithms-226|翻转二叉树

原题思路DFS,递归代码public class Solution_226 { public static void main(String[] args) { TreeNode root = new TreeNode(4); root.left = new TreeNode(2); root.right = new TreeNode(7); root.left.left = new TreeNode(1);

2021-11-08 18:20:45 1491

原创 leetcode-Algorithms-299|猜数字游戏

原题你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls", 公牛),有多少位属于数字猜对了但是位置不对(称为 "Cows", 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字 secret 和朋友猜测的数字 guess ,请你返回对朋友这次猜测的提示。提示的格式

2021-11-08 10:52:42 5

原创 leetcode-Algorithms-1218|最长定差子序列

原题给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。 示例 1:输入:arr = [1,2,3,4], difference = 1输出:4解释:最长的等差子序列是 [1,2,3,4]。示例 2:输入:arr = [1,3,5,7], difference = 1

2021-11-05 17:32:14 14

原创 leetcode-Algorithms-113|路径总和 II

原题思路DFS代码public class Solution_113 { public static void main(String[] args) { TreeNode root = new TreeNode(5); root.left = new TreeNode(4); root.left.left = new TreeNode(11); root.left.left.left = new TreeNode(7);

2021-11-05 14:53:50 4

原创 leetcode-Algorithms-112|路径总和

原题思路树的DFS代码public class Solution_112 { public static void main(String[] args) { TreeNode root = new TreeNode(5); root.left = new TreeNode(4); root.left.left = new TreeNode(11); root.left.left.left = new TreeNode(7);

2021-11-05 11:02:29 673

原创 leetcode-Algorithms-238|除自身以外数组的乘积

原题给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例:输入: [1,2,3,4]输出: [24,12,8,6] 提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间

2021-11-04 15:08:08 5

原创 leetcode-Algorithms-1306|跳跃游戏 III

原题这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]。请你判断自己是否能够跳到对应元素值为 0 的 任一 下标处。注意,不管是什么情况下,你都无法跳到数组之外。 示例 1:输入:arr = [4,2,3,0,3,1,2], start = 5输出:true解释:到达值为 0 的下标 3 有以下可能方案: 下标 5 -> 下标 4 -> 下标 1 -&gt

2021-11-04 13:58:28 11

原创 leetcode-Algorithms-55|跳跃游戏

原题给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。 示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可

2021-11-04 11:16:32 4

原创 leetcode-Algorithms-781|森林中的兔子

原题森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1" 的兔子可能有相同的颜色,设为红色。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 "2" 的兔子为蓝色。此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。因此森林中兔子的最少数量是 5: 3

2021-11-03 22:56:44 3

原创 leetcode-Algorithms-45|跳跃游戏 II

原题给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。 示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出

2021-11-03 21:46:59 4

原创 JVM性能调优-01|磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型(JDK8+HotSpot)

一、概述JVM 整体组成可分为以下四个部分:运行时数据区为最主要部分类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)二、类加载器三、运行时数据区(Runtime Data Area)一.方法区(Method Area)二.堆空间(Java Heap)三.栈空间(Java Virtual Machine Stacks Area)四.PC寄存器(Progra

2021-11-03 11:31:34 46

原创 Java jar包中包含多个main方法,执行指定的main方法

比如这个# java -cp xxx.jar 路径.类名java -cp AlgorithmDemo-1.0-SNAPSHOT.jar GosuncnTestDemo.downLoadDemo

2021-11-02 15:22:09 9

原创 Java编程性能调优-01|字符串性能优化不容小觑,百M内存轻松存储几十G数据

一、字符串性能优化不容小觑,百M内存轻松存储几十G数据一.String 对象是如何实现的?String str1= "abc";String str2= new String("abc");String str3= str2.intern();assertSame(str1==str2);assertSame(str2==str3);assertSame(str1==str3)1、String str1 = "abc";通过字面量的方式创建,abc存储于字符串常量池中;2、String

2021-11-02 10:07:07 21

原创 在Idea中添加javap命令

参数-v $FileName$工作路径$FileDir$最好进去预览一下,是不是自己想要的路径。

2021-10-28 23:28:13 10

原创 WIN10下javac和javap提示不是内部命令

执行javac或者javap的时候提示报错,但是java -version可以正常执行网上的人一个抄一个,我试了好多人说的步骤,都没有争取的解决问题。一会说要加绝对路径什么的,这些都是错的。主要原因%JAVA_HOME%\bin%JAVA_HOME%\jre\bin分开写,前面不需要加任何东西,后面也不需要分号。亲测成功...

2021-10-28 22:31:16 13

原创 SpringBoot整合elasticsearch报错:Error creating bean with name ‘restHighLevelClient‘

报错java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.suppo

2021-10-27 01:25:36 659

原创 未配置SpringBoot配置注释处理器

<!--解决idea提示springboot配置注解处理器(@ConfigurationProperties)没有找到--> <!--导入配置文件处理器,配置文件进行绑定就会有提示,需要重启--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo..

2021-10-26 21:47:10 161

原创 深入拆解Java虚拟机-01 |Java虚拟机基本原理 (上)

一、Java代码是怎么运行的?一.Java 和 C++ 在运行方式上的区别C++会直接被编译为机器码,可以被CPU所理解。Java 代码有很多种不同的运行方式,比如说可以在开发工具中运行,可以双击执行 jar 文件运行,也可以在命令行中运行,甚至可以在网页中运行。当然,这些执行方式都离不开 JRE,也就是 Java 运行时环境。JRE 仅包含运行 Java 程序的必需组件,包括 Java 虚拟机以及 Java 核心类库等。我们 Java 程序员经常接触到的 JDK(Java 开发工具包)同样包含了

2021-10-26 16:06:00 30

RedisUtil.java

大佬发的常用工具类

2021-02-04

Navicat Premium 12 64位.zip

Navicat Premium 12

2020-04-21

AutomationProject.zip

Java使用RXTX实现串口通讯,目前只是简单功能的实现,之后会继续更新,大家先看看吧,有什么问题,可以在我博客留言,留言必回。

2020-04-03

空空如也

空空如也

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

TA关注的人 TA的粉丝

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