- 博客(91)
- 收藏
- 关注
原创 Maven的安装配置与使用
04 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之高并发优化:https://www.cnblogs.com/nnngu/p/8390387.htmlMaven安装与配置:https://blog.csdn.net/github_37759996/article/details/90748461Maven的安装和使用:https://oh-mybug.github.io/2020/04/27/Maven%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%
2022-04-08 22:28:30 418 1
原创 正则表达式匹配英文单词
import java.util.regex.Matcher;import java.util.regex.Pattern;public class pattern { public static void main(String[] args) { String query = "some examples of regex test,,cnd."; String[] parts = query.split("\\b[\\.\\,\\s\\n\\r\\n]
2021-10-12 22:46:39 6182
原创 多线程i++
public class ijiajia { static int j=0; public static void main(String[] args) throws InterruptedException { Thread[] threads = new Thread[10]; for(int i=0;i<10;i++){ threads[i] = new Thread(()->{ sy
2021-09-06 00:34:22 227
原创 RabbitMQ集群
(1)RabbitMQ集群元数据的同步RabbitMQ集群会始终同步四种类型的内部元数据(类似索引):队列元数据:队列名称和它的属性交换器元数据:交换器名称、类型和属性绑定元数据:一张简单的表格展示了如何将消息路由到队列vhost元数据:为vhost内的队列、交换器和绑定binding提供命名空间和安全属性。因此,当用户访问其中任何一个RabbitMQ节点时,通过rabbitmqctl查询到的queue/user/exchange/vhost等信息都是相同的。(2)为何RabbitMQ...
2021-08-31 13:30:40 142
原创 Java并发编程-wait()/notify()/notifyAll()
1.为什么wait notify notifyAll这三个方法不再Thread类里面,而是属于Object类?Java提供的监视器锁是对象级别的,而不是线程级别的,每个对象都有锁,通过线程获得.由于wait是锁级别的操作,所以把它定义到Object类里面.因为锁属于对象.2.yield方法有什么作用?使当前线程从运行状态变为可运行状态.接着是哪个线程执行,就看系统分配了....
2021-08-29 22:43:12 99
原创 Mybatis-面试题
https://www.exception.site/java-interview/talk-about-cache-mechanism-of-mybatis
2021-08-26 17:42:17 106
原创 Redis常见异常及解决方案-缓存穿透、缓存雪崩、缓存预测、缓存降级
文章目录1.缓存穿透2.缓存雪崩3.缓存预热4.缓存降级1.缓存穿透由于不恰当的业务功能实现,或者外部恶意攻击不算请求不存在的数据,由于缓存中没有保存该数据,就会直接访问数据库,对数据库带来压力甚至崩溃。解决:将不存在的数据访问结果,也存到缓存中,避免缓存访问的穿透。2.缓存雪崩当缓存重启或大量缓存数据同时失效,这样大批请求就会直接访问数据库,对 DB 造成压力, 从而引起 DB 故障,系统崩溃。解决:(1)将数据按照热度分类,热度较高的缓存周期长一些,热度较低的缓存周期短一些。(2)设置
2021-08-26 16:29:59 493
原创 Redis持久化机制
文章目录1.快照持久化(RDB)AOF方式appendonly fileRedis对两种方式的回合支持AOF重写AOF后台重写使用子进程进行AOF重写的问题如何修正redis持久化方式有两种:RDB快照和AOF追加文件这也是Redis不同于Memcached和重要的一点。1.快照持久化(RDB)Redis通过创建快照的方式获取存储在内存里面的数据在某个时间点上的副本。Redis创建快照之后,(1)可以对快照进行备份,(2)还有将快照复制到其他服务器上从二创建具有相同数据的服务器副本。(3)留在原地以
2021-08-26 16:21:50 249
转载 Spring框架-SpringIOC、AOP基础
1.SpringIOC控制反转是将创建对象的权力交给外部环境,比如Spring框架、IOC容器,将对象之间的相互依赖关系交给IOC容器来管理,由IOC容器完成对象的注入,降低了耦合度,当需要创建一个对象的时候,只需要配置好文件/注解就可以了。IOC容器就是Spring用来实现IOC的载体,本质是一个Map,Map中存放了各种对象,可以使用XML文件、注解方式配置Bean。...
2021-08-26 11:03:33 204
原创 Java并发编程-Runnable 接口和 Callable 接口的区别
Runnable 接口 不会返回结果或抛出检查异常,但是 Callable 接口 可以。所以,如果任务不需要返回结果或抛出异常推荐使用 Runnable 接口 ,这样代码看起来会更加简洁。Runnable接口和Callable接口的区别:https://www.cnblogs.com/baichunyu/p/11150762.htmlRunnable接口的run方法的返回值是void,它做的事情只是纯粹的去执行run()方法种的代码而已;Callable接口的call()方法是有返回值的,是一个泛型,和
2021-08-25 16:41:32 300
转载 -Java并发编程-由浅入深全面解析ThreadLocal
由浅入深,全面解析ThreadLocal:https://blog.csdn.net/weixin_44050144/article/details/113061884黑马程序员Java基础教程由浅入深全面解析threadlocal:https://www.bilibili.com/video/BV1N741127FH?p=10https://blog.csdn.net/weixin_44050144/article/details/113061884ReentrantLock(重入锁)功能详解和应用
2021-08-25 15:48:36 297
原创 力扣-数据结构-单调栈-左神
文章目录1.什么是单调栈2.一般用于什么场景?1.什么是单调栈单调栈用于找一个数组中,每个元素左边最近的比它大的,右边最近的比它大的,O(N)2.一般用于什么场景?柱状图中最大的矩形的官方题解在这个题目中,我们只需要计算最大的那一个矩形面积就可以了。(1)当arr[i]>栈顶元素时,arr[i]压栈(2)当arr[i]<=栈顶元素时,得到栈顶元素的最右边界i,这个最右边界对于多个相同连续数字如下,这个右边界不是很准确,但是最后一个3肯定时正确的右边界,这连续的3个3的右边界
2021-08-22 17:44:23 206
原创 力扣-动态规划+贪心-801. 使序列递增的最小交换次数
801 https://leetcode-cn.com/problems/minimum-swaps-to-make-sequences-increasing/这是一个dp+贪心的题,求最小交换次数,从“最小”两个字就能看出有点贪心的意思。(1)两个数组的状态分两种情况:令 a1 = A[i - 1], b1 = B[i - 1] 以及 a2 = A[i], b2 = B[i]。如果 a1 < a2 并且 b1 < b2,A[i - 1] < A[i] 且 B[i - 1]
2021-08-22 16:36:36 233
原创 京东笔试2021/8/21
public class jingdongdp { public void dp(String str,int n){ // //String[] nums = str;//前i个字符的0:1比例 Map<String,Integer> map = new HashMap<>();//key:gcd之后的比例,比例值为key的前缀数目 int[] res = new int[n];//最后的结果,前i个字符...
2021-08-21 21:22:12 238
转载 力扣-动态规划-最小代价问题-打家劫舍
首先考虑最简单的情况。如果只有一间房屋,则偷窃该房屋,可以偷窃到最高总金额。如果只有两间房屋,则由于两间房屋相邻,不能同时偷窃,只能偷窃其中的一间房屋,因此选择其中金额较高的房屋进行偷窃,可以偷窃到最高总金额。如果房屋数量大于两间,应该如何计算能够偷窃到的最高总金额呢?对于第 k~(k>2)k (k>2) 间房屋,有两个选项:偷窃第 kk 间房屋,那么就不能偷窃第 k-1k−1 间房屋,偷窃总金额为前 k-2k−2 间房屋的最高总金额与第 kk 间房屋的金额之和。不偷窃第 kk 间房屋,偷
2021-08-21 18:15:08 155
原创 网易笔试2021/8/21
1.给你一个数组nums,任意选取两个数字,两个数字之和>=m.两层for循环就可以了2.字符串处理:pre保存上一个字符串直接利用pre更新当前字符串cur就可以了。3.小朋友分纸张小朋友围成一个圈,年龄大的小朋友要比相邻的年龄下的小朋友的纸张上多(年龄大于,而不包含等于),最多一百个小朋友,最少需要多少张纸张。正着一轮,反着一轮4.航海问题有水路、陆地、障碍物,三种,水路用0表示,陆地用1表示,障碍物用2表示,水路花销2,陆地花销1,障碍物不可行。问从起点(0,0)到终点(m-
2021-08-21 17:20:26 254
转载 力扣之01背包,完全背包
https://mp.weixin.qq.com/s/ZOehl3U1mDiyOQjFG1wNJA问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]); ,对应题目如下:动态规划:416.分割等和子集动态规划:1049.最后一块石头的重量 II问装满背包有几种方法:dp[j] += dp[j - nums[i]] ,对应题目如下:动态规划:494.目标和动态规划:518. 零钱兑换 II动态规划:377.组合总和Ⅳ动态
2021-08-19 23:02:28 466
转载 LeetCode - 1059(多重背包二进制优化,弹珠) - Dividing
LeetCode - 1059(多重背包二进制优化) - Dividing:https://blog.csdn.net/destiny_balabala/article/details/104167087多重背包问题采用二进制分解,转换成01背包问题
2021-08-19 17:06:21 214
原创 力扣-回溯法
文章目录类型一: 只能用一次只能使用一次就是要不要的问题40 组合总数II(只能用一次+含多个重复元素,dfs+map+set)(要几个0-n)78 子集(只使用一次+不含重复元素,dfs)(要不要)90 子集II (只使用一次+含重复元素,dfs+排序)(要不要)类型二:所有组合问题77. 组合(所有组合(包含只使用一次的意思),dfs循环添加后面的元素)216 组合总和II(只使用一次+所有组合+无重复元素,dfs循环添加后面的元素+剪枝)类型一: 只能用一次只能使用一次就是要不要的问题1.如果数
2021-08-18 22:39:28 282
原创 Redis实现消息队列
1.初级采用list结构,采用lpush、rpush实现入队,lpop、rpop实现出队在客户端(例如Java段),维护一个死循环不停的从队列中读取消息并处理,如果队列中有消息则直接获取到,如果没有消息,就会陷入死循环,直到下一次有消息进入。这种死循环会造成大量的资源浪费。2.延迟消息队列zset有序集合zset和set都是用来存储不重复元素。ZSet根据提供地score参数自动排序,当需要一个不重复且有序地集合列表时,可以选择ZSet,比如说游戏地排行榜。zset有一个score,用时间作为sc
2021-08-18 15:32:59 126
原创 Redis分布式锁
Redis 分布式锁|从青铜到钻石的五种演进方案:https://mp.weixin.qq.com/s?__biz=MzAwMjI0ODk0NA==&mid=2451954663&idx=1&sn=4bd071b6aaede114263f88c790b61371&chksm=8d1c2278ba6bab6eca2ef44f21b2178cc719fffe124289b68128c0dad72429fe5f286854157a&scene=21#wechat_redir
2021-08-18 14:21:36 73
原创 Java并发编程-创建线程的四种方式(直接创建、Runnable、Callable、线程池、Future、Runnbable、RunnableFuture、FutureTask的继承关系)
1.继承Thread类2.实现Runnable接口:run方法3.实现Callable接口返回线程结果CallableCallable与Runnable的区别(1)是否具有返回值(2)是否抛出异常(3)4.线程池方式v
2021-08-17 21:04:18 487
原创 Java中一个接口可以继承多个接口吗?接口继承接口使用extends关键字
一个接口可以继承多个接口.interface C extends A, B {}是可以的.一个类可以实现多个接口:class D implements A,B,C{}但是一个类只能继承一个类,不能继承多个类class B extends A{}在继承类的同时,也可以继承接口:class E extends D implements A,B,C{}这也正是选择用接口而不是抽象类的原因https://zhidao.baidu.com/question/627716354058021124.ht
2021-08-17 18:03:53 4030
原创 JVM-字符串常量池与String.intern()方法
文章目录1、字符串常量池在堆区还是在运行时常量池呢?2.String.intern()方法创建了几个对象?JDK6和JDK7下intern的区别3.使用intern1、字符串常量池在堆区还是在运行时常量池呢?(1)首先介绍 运行时常量池在永久代(Permanent Generation)还是在元空间(meta-space)?参考《深入理解Java虚拟机》在JDK1.6(包含)之前,方法区(包含类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据,运行时常量池是方法区的一部分,包含了编译器生成的
2021-08-17 15:20:46 196
原创 Java并发编程-并发工具类CountDownLatch、CyclicBarrier、Semaphore、i++
文章目录CountDownLatch作用与使用场景小例子CountDownLatch概念CountDownLatch的用法代码怎么写呢?countDown()应该放在那里呢?JavaGuide关于CountDownLatch的介绍CountDownLatch(倒计时计算器)的两个方法countDown(),await()裁判发令与运动员赛跑(这个例子也太好了)CountDownLatch作用与使用场景小例子CountDownLatch概念https://www.cnblogs.com/Lee_xy_z
2021-08-16 22:49:42 330
原创 Java并发编程-AQS(2)
Java并发包基石-AQS详解:https://www.cnblogs.com/chengxiao/archive/2017/07/24/7141160.html
2021-08-16 21:55:53 112
原创 Java并发编程-AQS(1)
AQS11分钟视频:(讲的很好)https://www.bilibili.com/video/BV1V7411H7kC?from=search&seid=6448922972558180474554ms
2021-08-16 21:54:45 68
原创 Java并发编程-线程池原理,三种线程池、i++、线程池的execute()和submit方法的区别
文章目录三种线程池自定义一个线程池:提交优先级和执行优先级提交优先级拒绝策略:线程池:https://www.bilibili.com/video/BV1YN411o7Lz?from=search&seid=7073118730878150075三种线程池阿里巴巴为什么不推荐Cached:最高 CPU 100%,如果有N个任务,并且任务执行时间比较长,他的队列又只能存放一个任务,那么就会对应着创建N个线程,并且CachedThreadPool允许创建2的32次方-1个线程,就会创建非常多
2021-08-16 17:21:26 209
原创 Java并发编程-volatile关键字
1.volatile关键字主要作用就是防止指令重排,以及保证变量的可见性.在Java内存模型JMM中,Java虚拟机规范试图定义一种Java内存模型(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,让Java程序在各种平台上都能达到一致的内存访问效果。在Java内存模型中,所有变量都存在主内存中,而每个线程又有自己的工作内存(CPU上的寄存器或高速缓存),所有的线程操作都以工作内存为主,并且只可以访问自己的工作内存,工作前后需要把值同步回主内存.这就造成了一个线程在自己的工作内存中修改变量的值,如
2021-08-16 15:11:11 103
原创 字节面试-318
为什么要使用红黑树,B树和B+树:https://blog.csdn.net/zgz15515397650/article/details/85165454MySQL面试部分1.什么是索引索引(Index)是排好序的,能够快速查找数据的数据结构,能够帮助 MySQL 高效获取数据。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。索引如果没有特别指明,都是指B-Tree(多路搜索树,并不一定是二叉树)结构组织的索引。其中聚集索引,次要索引,覆盖索引,复合索
2021-08-16 14:15:59 61
转载 JVM学习之强引用、弱引用、软引用、虚引用
JVM学习之强引用、弱引用、软引用、虚引用:https://www.cnblogs.com/sunfie/p/5156370.html1、强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方式来弱化引用,o=null; // 帮助垃圾收集器回收此对象显式地设
2021-08-16 12:05:25 116
原创 多线程并发基础
1. 什么是上下文切换?线程在执行过程中会有自己的运行条件和状态(也称上下文),比如上文所说到过的程序计数器,栈信息等。当出现如下情况的时候,线程会从占用 CPU 状态中退出。主动让出 CPU,比如调用了 sleep(), wait() 等。时间片用完,因为操作系统要防止一个线程或者进程长时间占用CPU导致其他线程或者进程饿死。调用了阻塞类型的系统中断,比如请求 IO,线程被阻塞。被终止或结束运行这其中前三种都会发生线程切换,线程切换意味着需要保存当前线程的上下文,留待线程下次占用 CPU 的时
2021-08-15 11:46:45 75
原创 Mysql索引
文章目录1.B和B+树有何异同?2.Mysql的MyISAM和InnoDB3.索引类型4.聚集索引和非聚集索引5.覆盖索引6.创建索引的注意事项⭐1.B和B+树有何异同?(1)B树的所有节点存放key和data域,而B+树只有叶子节点存放key和data域,非叶子节点只存放key。(2)B树的叶子节点都是独立的,而B+树的叶子节点有一条引用链,指向相邻的yezijiedian(3)B树的见过过程相当于对范围内的值二分查找,可能没走到叶子节点就找到了值,而B+树比较稳定,每次都要查找到叶子节点,叶子节点
2021-08-15 11:32:01 67
原创 Mysql事务
1.何为事务?一言蔽之,事务是逻辑上的一组操作,要么都执行,要么都不执行。2.另外,关系型数据库(例如:MySQL、SQL Server、Oracle 等)事务都有 ACID 特性:原子性(Atomicity) : 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency): 执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;隔离性(Isolation): 并发访问数据库时,一个用户的事务不被
2021-08-14 22:43:46 179
原创 Mysql锁机制
文章目录锁机制与 InnoDB 锁算法锁机制与 InnoDB 锁算法MyISAM 和 InnoDB 存储引擎使用的锁:MyISAM 采用表级锁(table-level locking)。InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁表级锁和行级锁对比:表级锁: MySQL 中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM 和 InnoDB 引擎
2021-08-14 21:58:30 202
原创 Mysql高级
更新丢失脏读mysql锁详解:https://blog.csdn.net/u013967628/article/details/85293041
2021-08-14 21:56:28 1611 7
原创 JVM垃圾回收
文章目录1.堆空间的基本结构:2.空间分配担保机制3.如何判断一个对象已经无效4 不可达的对象并非“非死不可”5 如何判断一个常量是废弃常量?6 如何判断一个类是无用的类7.垃圾回收算法如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot 为什么要分为新生代和老年代?常见的垃圾回收器有哪些?介绍一下 CMS,G1
2021-08-14 21:17:30 422 7
原创 JVM类加载、双亲委派模型
JVM类加载加载(1)通过一个类的全限定名来获取此类的二进制字节流;(2)将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构;(3)在内存中生成一个该类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。验证目的是确保Class文件的字节流中国包含的信息符合《Java虚拟机规范》的全部约束要求,被当作当妈运行后不会危害虚拟机自身安全。准备正式的为类中定义的变量(静态变量,被static修饰的变量)分配内存并设置类变量初始值。解析Java虚拟机将常量池内的
2021-08-14 20:59:56 70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人