自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ybw

  • 博客(70)
  • 收藏
  • 关注

原创 微信开发获取access_token

【代码】微信开发获取access_token。

2023-04-02 16:52:07 1659

原创 node.js学习

Node入门

2023-03-22 23:18:01 114

原创 算法LeetCode

leetcode算法笔记

2023-01-11 23:31:15 336

原创 计算机网络

文章目录OSI七层协议HTTP 和 HTTPS 什么区别?对称加密算法和非对称加密算法HTTP1.0、HTTP1.1、HTTP2.0HTTP长连接和短连接区别及应用场景TCP三次握手TCP四次挥手TCP和UDP有什么区别?及其适用的场景。TCP 协议如何保证可靠传输TCP重传滑动窗口和流量控制拥塞控制TCP 粘包ARQ协议在浏览器中输入url地址 OSI七层协议 1、应用层 网络的具体应用 应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进

2021-08-26 23:53:13 515

原创 mysql、jvm、基础

文章目录基础线程和进程 基础 线程和进程 进程: 系统中运行的一个程序,每个进程都拥有独立的地址空间,一个进程无法访问另一个进程资源,如果想让一个进程访问另一个进程的资源,需要使用进程间通信。 匿名管道:半双工,只能在父子进程间通信 有名管道: 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道可以在不同进程间通信 共享内存 :使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依靠某种同步操作,如互斥锁和信号量

2021-08-21 18:31:29 432

原创 HashMap、synchronized

文章目录synchronized锁升级 synchronized 锁升级 锁主要存在四种状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态。但是不能锁降级 首先处于无锁状态的时候,来了一个线程,这个线程就持有锁了,将线程id插入到Markword中,同时修改偏向锁的标志位,就会把对象的对象头中偏向锁的状态设置成1,表示加上偏向锁,同时也可以看到哪个线程获得了该对象的锁。 如果有其它线程进来的时候,首先会自旋 ...

2021-08-07 23:52:51 1557

原创 操作系统基础

文章目录 操作系统基础

2021-07-10 13:51:34 92

原创 redis面试

文章目录 面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)

2021-06-24 21:29:06 625

原创 设计模式总结

文章目录单例模式 单例模式 单例模式 1、什么是单例模式 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。 在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。 2、单例模式类型 单例模式有两种类型: 懒汉式:在真正需要使用对象时才去创建该单例类对象 饿汉式:在类加载时已经创建好该单例对象,等待被程序使用 饿汉式创建单例对象 饿汉式在类加载时已经创建好该对象,在程序调用时直接返回该单例对

2021-06-03 15:05:51 360

原创 数据结构与算法

目录155.最小栈 155.最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() ——检索栈中的最小元素。 每个元素 a 与其相应的最小值 m 时刻保持一一对应。因此我们可以使用一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最小值。 当一个元素要入栈时,我们取当前辅助栈的栈顶存储的最小值,与当前元素比较得出最小值

2021-05-30 22:10:32 492

原创 动态规划解法

目录爬楼梯 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 本问题其实常规解法可以分成多个子问题,爬第n阶楼梯的方法数量,等于 2 部分之和 爬上 n-1阶楼梯的方法数量。因为再爬1阶就能到第n阶 爬上 n-2 阶楼梯的方法数量,因为再爬2阶就能到第n阶 所以我们得到公式 dp[n] = dp[n-1] + dp[n-2] 同时需要初始化 dp[1]=1 和 dp[2]=2 当n小于等于2时

2021-05-29 15:38:04 548

原创 链表算法例题

删除链表的倒数第N个节点 //我们弹出栈的第 n 个节点就是需要删除的节点,并且目前栈顶的节点就是待删除节点的前驱节点。 class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(0, head); Deque<ListNode> stack = new LinkedList<ListNode>(

2021-05-26 16:09:54 294

原创 计算机网络面试

目录域名解析的工作流程 域名解析的工作流程

2021-05-25 11:37:55 1063

原创 排序算法总结

目录冒泡排序快速排序 冒泡排序 /** * 冒泡排序: * 1、一共进行数组的大小减一次大的循环, * 2、每一趟排序的次数在逐渐的减少, * 3、如果我们发现在某趟排序中,没有发生一次交换,可以提前结束冒泡排序。 * <p> * 时间复杂度:O(n^2) */ public static void bubbleSort(int[] arr) { int temp = 0; boolea

2021-05-24 14:26:22 188

原创 question

文章目录java并发一、JAVA如何开启线程,怎么保证线程安全 java并发 一、JAVA如何开启线程,怎么保证线程安全 线程和进程的区别: 进程是操作系统进行资源分配的最小单元,线程是操作系统有进行任务分配的最小单元,线程隶属于进程。 如何开启线程: 继承Thread类,重写run方法(由于Java只支持单继承,所以用继承的方式创建线程,不够灵活,所以不推荐使用继承Thread) 实现Runnable接口,实现run方法,run()不可以抛出异常 实现Callable接口,实现call方法,通过Futu

2021-04-22 20:47:36 328

原创 Java util cocurrent

文章目录AtomicInteger AtomicInteger AtomicInteger atomicInteger = new AtomicInteger; public final int getAndIncrement() { return unsafe.getAndAddInt(this, valueOffset, 1); } public final int getAndAddInt(Object var1, long var2, int var4) {

2021-04-20 11:24:58 168 1

原创 高并发

文章目录高并发 高并发 TPS (transaction per second) 每秒执行的事务数量 用户每分钟执行6个事务,TPS为6 / 60s = 0.10 TPS。 QPS(Queries-per-second) 每秒查询率 =请求数/秒=总请求数 / ( 进程总数 * 请求时间 ) 单个进程每秒请求服务器的成功次数 TPS与QPS有何区别 事务:客户端发起请求到收到服务端最终响应的整个过程,这是一个TPS 而在这个TPS中,为了处理第一次请求可能会引发后续多次对服务端的访问才能完成这

2021-04-18 22:53:28 109

原创 HashMap

目录HashMap数据结构![在这里插入图片描述](https://img-blog.csdnimg.cn/20210408221732261.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjg4Nzk2,size_16,color_FFFFFF,t_70)HashMap实现原理HashMap原理解析 HashMap数据结构 数组 申

2021-04-08 22:20:09 341

原创 spring、springBoot、mybatis

目录springspringBoot spring IOC AOP springBoot @Configuration @Bean BeanFactory FactoryBean

2021-04-03 17:08:19 1794

原创 汉明距离

汉明距离 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 示例: 输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。 class Solution { public int hammingDistance(int x, int y) { int xor=x^y;

2021-04-01 22:19:21 85

原创 多线程总结

多线程Object o=new Obiect 在内存中占多少个字节?锁CASsynchronized实现过程AQS锁消除 eliminate锁粗化 lock coarsening锁优化锁升级过程volatilesynchronized同步方法与非同步方法synchronized锁重入Atomicwait notify系统底层如何实现数据一致性系统底层如何保证有序性CPU,内存,缓存,缓存行缓存一致性协议cpu乱序执行的概念DCL为什么不能乱序volatile如何阻止乱序内存屏障 Object o=new

2021-03-29 22:49:05 193

原创 JVM面试

JVM1、什么是垃圾2、jvm怎样定位垃圾2、GC回收算法 Java虚拟机(JVM)你只要看这一篇就够了! 1、什么是垃圾 没有引用指向它 2、jvm怎样定位垃圾 一、引用计数法 在 Java 中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个 对象如果没有任何与之关联的引用,即他们的引用计数都不为 0,则说明对象不太可能再被用到,那么这个对象就是可回收 对象 。 二、可达性分析 为了解决引用计数法的循环引用问题,

2021-01-07 22:28:55 715

原创 MySQL面试

MySQLMySQL索引1.什么是索引?2.为什么要有索引呢?3.如何设计索引,用什么数据结构4、回表,索引覆盖,最左匹配,组合索引,索引下推 MySQL索引 1.什么是索引? MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 我们可以简单理解为:快速查找排好序的一种数据结构。 索引存储在文件系统中,索引的文件存储形式与存储引擎有关 Mysql索引主要有两种结构:B+Tree索引和Hash索引。 我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(

2020-12-26 22:23:08 595

原创 二叉树例题

二叉树的前中后层序遍历

2020-12-18 16:24:07 954 1

原创 斐波那契

2020-12-13 20:41:59 51

原创 Java总结

Java基础类加载器 类加载器 类加载的结构如下: BootstrapClassLoader:启动类类加载器,是由c++实现的 ExtClassLoader:拓展类类加载器 AppClassLoader:应用程序类类加载器,它主要加载应用程序ClassPath下的类(包含jar包中的类)。它是java应用程序默认的类加载器。 用户自定义类加载器:用户根据自定义需求,自由的定制加载的逻辑,继承AppClassLoader,仅仅覆盖findClass()即将继续遵守双亲委派模型。 *ThreadContex

2020-11-25 18:48:27 885

原创 swagger

1.导入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnr

2020-11-21 18:56:49 237 1

原创 Shiro

1.引包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.4.1</version> </dependency> 2.配置 @.

2020-11-20 09:51:34 62

原创 git

$ git clone https://gitee.com/用户个性地址/HelloGitee.git #将远程仓库克隆到本地 修改代码后,在仓库目录下执行下面命令 $ git add . #将当前目录所有文件添加到git暂存区 $ git commit -m "my first commit" #提交并备注提交信息 $ git push origin master #将本地提交推送到远程仓库 ...

2020-11-11 15:27:12 85

原创 thymeleaf

添加Thymeleaf依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 自动给我们默认分配了模版的前缀和后缀,我们只需要按部就班的将模版丢进去即可 public class ThymeleafProperties

2020-11-08 16:37:26 119

原创 WebMvcAutoConfiguration

WebMvcAutoConfiguration 静态资源配置类 public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); } else { Duration cachePerio

2020-11-07 22:29:12 413

原创 JSR303数据效验

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation。 基本应用 一、引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> 二、给参数对象添加校验注解 @Data public

2020-11-07 20:40:45 108

原创 Mybatis总结

MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行: <cache/> 基本上就是这样。这个简单语句的效果如下: 映射语句文件中的所有 select 语句的结果将会被缓存。 映射语句文件中的所有 insert、update 和 delete语句会刷新缓存。 缓存会使用最近最少使用算法(LRU, Least Recently Us

2020-11-06 11:08:40 132

原创 String

** String ** String newStr = new String(s, 0, size); public String(char value[], int offset, int count) { if (offset < 0) { throw new StringIndexOutOfBoundsException(offset); } if (count < 0) { thro

2020-10-28 21:04:40 260

原创 charAt方法

charAt方法: java.lang.String.charAt()方法 返回 指定索引 处的 char值。索引范围 是从0 到length() - 1。 public char charAt(int index) { if ((index < 0) || (index >= value.length)) { throw new StringIndexOutOfBoundsException(index); } retu

2020-10-28 21:03:50 4338

原创 StringBuilder和StringBuffer

一、简介 StringBuffer,由名字可以看出,是一个String的缓冲区,也就是说一个类似于String的字符串缓冲区,和String不同的是,它可以被修改,而且是线程安全的。StringBuffer在任意时刻都有一个特定的字符串序列,不过这个序列和它的长度可以通过一些函数调用进行修改。 StringBuilder和StringBuffer一样,都是继承自抽象类AbstractStringBuilder类,也是一个可变的字符序列。StringBuilder和StringBuffer非常相似,甚至有互相

2020-10-28 21:03:36 131

原创 数据结构

常见的数据结构可分为「线性数据结构」与「非线性数据结构」 具体为:「数组」、「链表」、「栈」、「队列」、「树」、「图」、「散列表」、「堆」。 一、数组 数组是将相同类型的元素存储于连续内存空间的数据结构,其长度不可变。 // 初始化一个长度为 5 的数组 array int[] array = new int[5]; // 元素赋值 array[0] = 2; array[1] = 3; array[2] = 1; array[3] = 0; array[4] = 2; //或者可以使用直接赋值的初始化方

2020-10-28 21:03:22 578

转载 抽象方法、抽象类及接口

抽象方法以及抽象类 在Java中用abstract修饰的类是抽象类,用abstract修饰的类的方法是抽象方法,抽象类和抽象方法用法总结如下。 abstract可以修饰class表示抽象类,可以修饰方法表示抽象方法,但是不能修饰成员变量,也就是没有抽象的成员变量。 用abstract修饰的类中可以有abstract方法,也可以没有abstract方法;可以有非abstract方法,也可以没有非abstract方法。 只有abstract类中才能声明abstract方法,abstract方法不能声明在非ab

2020-10-28 21:03:04 130

原创 Jprofile工具分析OOM原因

/** * OutOfMemoryError * -Xms 设置初始化内存分配大小 默认1/64 * -Xmx 设置最大分配内存,默认1/4 * -XX:+PrintGCDetail // 打印GC垃圾回收信息 * -XX:+HeapDumpOnOutOfMemoryError //oom DUMP * -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError */ public class Heap2 { byte[] array = new byt

2020-09-17 21:34:35 227

原创 堆Heap

/** * 堆 * 一个JVM只有一个堆内存,堆内存的大小是可以调节的。 * 类加载器读取了类文件后,一般会把类,方法,常量,变量,保存我们所有引用类型的真实对象; * <p> * 堆内存中还要分为三个区域: * 1、新生区(伊甸园区) * 2、养老区 * 3、永久区(元空间):这个区域常驻内存的。用来存放JDK自身携带的Class对象。 * Interface元数据,存储的是java运行时的一些环境或类信息,这个区域不存在垃圾回收! * 关闭VM虚拟就会释放这个区域的内存。

2020-09-17 20:48:33 96

空空如也

空空如也

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

TA关注的人

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