自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (2)
  • 收藏
  • 关注

原创 网络

文章目录网络OSI七层网络模型物理层数据链路层网络层传输层会话层表示层应用层TCP/IP四层网络模型网络接口层网络层传输层应用层网络在计算机领域中,网络是信息传输、接收、共享的虚拟平台,将各个点、面、体的信息联系到一起,从而实现这些资源的共享。在大型分布式系统中,网络起着至关重要的作用。相关知识点(a)网络7层架构(b)TCP/IP、HTTP和CDN的原理OSI七层网络模型网络的七层架构从下到上主要包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。物理层主要定义物理

2020-11-04 09:39:32 90

原创 Java学习路线及文章汇总

持续更新中文章目录JavaSE环境搭配基础语法面向对象数组集合常用APIIO流反射机制多线程与并发异常网络编程数据库关系型数据库非关系型数据库前端技术(Javaweb)HTML5CSSJavaScriptJQueryAjaxwebpackelementUIVue微信小程序ServletJSPELJSTLCookieSessionFilterListenter编程强化设计模式JVM优化数据结构与算法多线程高级MINANettyNIO软件项目管理MavenSVNGit码云JenkinsSonar热门框架S.

2020-10-29 21:20:21 30

原创 Java并发编程(Java中的锁)

文章目录Java锁乐观锁悲观锁自旋锁自旋锁的优缺点自旋锁的时间阈值synchronizedsynchronized的作用范围Synchronized 核心组件synchronized的用法简介Java锁Java锁的作用?Java中的锁主要用于保障多并发线程情况下数据的一致性。怎样保障数据的一致性?在多线程编程中为了保障数据的一致性,我们通常需要在使用对象或者方法之前加锁,这时如果有其他线程线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会进入阻塞队列等待

2020-10-24 00:04:15 94 1

原创 Spring全家桶文章整合

MybatisMybatis文章第一个Mybatis程序https://blog.csdn.net/qq_43466788/article/details/108457369Mybatis数据库模糊查询https://blog.csdn.net/qq_43466788/article/details/108503888Mybatis的XML配置文件https://blog.csdn.net/qq_43466788/article/details/108517819

2020-09-28 20:19:57 120

原创 【算法】动态规划(Dynamic Programming)

文章目录什么是动态规划算法数字三角形经典递归解法什么是动态规划算法总体思想(1)动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题(2)经分解得到的子问题往往不是互相独立的,有些子问题被重复计算多次(3)如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法(备忘录法)(4)图解:使用动态规划来求解的问题需要具备的基本要素包括:(1)重复子问题递归算法求解问题时,每次产生的子问题并不总是新问题,有些子

2020-11-23 23:30:55 9

原创 【Redis】基本事务操作和实现乐观锁

文章目录基本事务操作正常执行事务放弃事务事务执行出现问题实现乐观锁监视测试基本事务操作事务的本质就是一组命令的集合。一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行。Redis事务三个重要的保证批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入

2020-11-23 16:25:00 6

原创 【Redis】三种特殊数据类型——HyperLogLog、Bitmaps

文章目录HyperLogLog相关操作BitmapHyperLogLogRedis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2642^64264 个不同元素的基 数。这和计算基数时,元素越多耗费

2020-11-22 20:44:30 17

原创 【Redis】三种特殊数据类型——地理空间

文章目录地理空间(geospatial)相关操作原理地理空间(geospatial)将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。具体的限制,由EPSG:900913 / EPSG:3785 / OSGE

2020-11-21 21:13:47

原创 【Java面试题6】接口与抽象类的区别

抽象类定义:Java允许在类中只声明方法而不提供方法的实现。这种只声明而没有方法体的方法称为抽象方法,而包含一个或多个抽象方法的类被称为抽象类。抽象类在使用上有特殊的限制,即不能创建抽象类的实例。Java中要将抽象类和抽象方法带上abstract标记。如果一个非抽象类是一个抽象类的子类,它必须重写父类所有的抽象方法,且子类对抽象方法的重写不能降低访问权限。接口接口中声明了方法,但不定义方法体,因此接口只是定义了一组对外的公共接口。与类相比,接口只规定了一个类的基本形式,不

2020-11-21 00:06:07 14

原创 【Redis】Redis的五大数据类型

文章目录字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets)字符串(strings)开启redis服务并连接[root@localhost bin]# redis-server config/redis.conf [root@localhost bin]# redis-cli -p 6379127.0.0.1:6379> pingPONG127.0.0.1:6379> flushall # 情空数据库中的所有数据

2020-11-20 22:30:36 6

原创 【Redis】性能测试+基础知识了解

文章目录性能测试基础知识性能测试进入redis的安装路径:/usr/local/bin/,该目录下的redis-benchmark为官方自带的性能测试工具。[root@localhost bin]# cd /usr/local/bin/[root@localhost bin]# lsconfig redis-benchmark redis-check-rdb redis-sentineldump.rdb redis-check-aof redis-cli red

2020-11-17 09:52:18 8

原创 【Redis】NoSQL+Redis(简介和安装)

文章目录什么是NoSQL什么是NoSQLNot Only SQLNoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。...

2020-11-16 00:13:41 10

原创 Linux安装JDK

文章目录下载安装包开始安装下载安装包官方下载网址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html百度网盘:https://pan.baidu.com/s/1xS0Kt1Dc_n-b2uo_yBvasQ 提取码:nm4a开始安装检查Linux中是否有安装java:输入命令java -version[root@localhost ~]# java -versionopenjdk

2020-11-15 13:51:24 37

原创 【Java面试题5】数据库事务隔离级别

文章目录Read Uncommitted(读取未提取)Read Committed(读取提交内容)Repeatable Read(可重读)Serializable(可串行化)Read Uncommitted(读取未提取)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。Read Committed(读取提交内容)Repeatable Read(可重读)Seria

2020-11-14 22:07:54 8

原创

文章目录栈队列链表散列表栈队列链表散列表

2020-11-14 15:03:08 18

原创 【算法】备忘录法(记忆化搜索)

文章目录什么是备忘录法备忘录法的实现什么是备忘录法备忘录法是为了解决避免分治算法中相同子问题的重复求解。备忘录法为每个解过的子问题建立备忘录以备需要时查看,所以也称搜表法。备忘录法的控制与直接使用递归方法的控制结构相同。备忘录法又称记忆化搜索,自顶向下的方式解决问题。备忘录法的实现避免子问题重复被求解,我们可以定义一个数组,每次要计算一个子问题时,首先从数组中查询这个子问题的解,子问题解没有在数组中,说明没有计算过该子问题,我们可以计算该子问题,并将解放到数组中去,以便下次计算该子问

2020-11-11 22:18:52 68

原创 【Java面试题4】equals和==的区别

equals和==的区别equals:是判断两个变量或实例所指向的内存空间的值是不是相同,是一个方法。==:判断两个变量或实例是不是指向同一个内存空间。,是一个运算符合。运用场景8大基本数据类型,比较他们的值,用双等于==,byte、short、char、int、long、float、double、boolean。复合数据类型(a)==:比较内存中的存放地址,两个new出来的对象比较肯定是false(b)equals: public boolean equals(Object

2020-11-10 00:17:05 43

原创 【MybatisPlus】条件构造器

文章目录性能分析插件条件构造器代码自动生成器性能分析插件条件构造器代码自动生成器

2020-11-09 18:09:30 44

原创 【Java面试题3】int和Integer有什么区别

int和Integer有什么区别

2020-11-09 00:27:14 39

原创 【MybatisPlus】简介+入门+CRUD+乐观锁插件+分页插件+逻辑删除

文章目录简介入门案例数据库简介官方网站:https://mybatis.plus/根据名字我们就可以看出来MybatisPlus是Mybatis的增强版,事实上也是如此,MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。有哪些特性?特性解释无侵入只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小启动即会自动注入基本 CURD,性能基本无损.

2020-11-08 15:34:00 43

原创 【Java面试题2】final、finally、finalize的区别

final、finally、finalize的区别finalfinal修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重写,但是能够重载。那么被final修饰的变量是常量吗?其实不全是,final修饰的成员变量(实例变量)和静态变量(静态变量也只能是用static修

2020-11-08 00:36:37 56 1

原创 【Java面试题1】面向对象(OOP)的特征

面向对象的特征四大特征:抽象、封装、继承、多态抽象定义:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象。注意点:抽象只关注对象有哪些属性和行为,并不关注行为细节,一般我们将事务的静态特征对应类中属性,动态特征对应类中的方法/函数。代码理解:数据抽象:表示世界中一类事物的特征,就是对象的属性。比如人有姓名、性别、身份证号等过程抽象:表示世界中一类事物的行为,就是对象的行为。比如人会吃饭、睡觉等(类的方法)public class Person { //姓名

2020-11-07 00:47:21 56

原创 负载均衡

文章目录负载均衡四层负载均衡与七层负载均衡对比四层负载均衡七层负载均衡负载均衡算法轮询均衡权重轮询均衡随机均衡权重随机均衡响应速度均衡最少连接数均衡处理能力均衡DNS响应均衡散列算法均衡IP地址散列URL散列LVS的原理及应用LVS的原理LVS数据转发LVS NAT模式LVS DR模式LVS TUN模式LVS FULLNAT模式Nginx反向代理与负载均衡upstream_moduleproxy_pass负载均衡什么是负载均衡?负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展

2020-11-06 18:46:28 40 1

原创 【算法】分治法之棋盘覆盖

文章目录前言算法实现思想代码实现时间复杂度前言有关分治算法思想文章指路:【算法】分治算法什么是棋盘覆盖问题?(1)在一个2k×2k2^k×2^k2k×2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。(2)在棋盘覆盖问题中,要用以下4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。(3)例如:我们需要用上面4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨

2020-11-05 12:43:38 52

原创 【ZooKeeper】ZooKeeper的安装和使用

文章目录ZooKeeper的安装ZooKeeper常用shell命令新增节点更新节点删除节点查看结点列表JavaAPI操作ZooKeeper环境搭配连接到zookeeperZooKeeper的安装在文章【Spring Boot】Dubbo和Zookeeper中已经说明了zookeeper的安装,这里直接copy过来。下载地址:http://mirror.bit.edu.cn/apache/zookeeper下载好后解压,找到bin目录下的zkServer.cmd双击运行。报错:

2020-11-02 15:32:37 36

原创 【算法】线性时间选择——第k大(小)元素问题

文章目录前言分治算法之第k小元素分治算法之第k大元素前言问题:给定线性序列中 n 个元素和一个整数 k ,1 ≤ k ≤ n,要求找出元素中的第 k 小的元素 或者 第 k 大元素,要求是线性时间算法,即时间复杂度为O( n )。需要用到快速排序的分区思想,有关分治法思想和快速排序文章:【算法】分治算法分治算法之第k小元素问题:给定线性序列中 n 个元素和一个整数 k ,1 ≤ k ≤ n,要求找出元素中的第 k 小的元素 ,要求是线性时间算法,即时间复杂度为O( n )。设计思想:

2020-11-01 20:11:16 279

原创 什么是AQS

文章目录AQSAQS的原理state:状态AQS共享资源的方式AQSAQS(Abstract Queued Synchronizer)是一个抽象的队列同步器,通过维护一个共享资源状态(Volatile Int State)和一个先进先出(FIFO)的线程等待队列来实现一个多线程访问共享资源的同步框架。AQS的原理AQS为每个共享资源都设置一个共享资源锁,线程在需要访问共享资源时首先需要获取共享资源锁,如果获取到了共享资源锁,便可以在当前线程中使用该共享资源,如果获取不到,则将该线程放入线程等待队列

2020-11-01 10:40:13 29

原创 【ZooKeeper】什么是ZooKeeper

文章目录ZooKeeper简介ZooKeeper的应用场景集群ZooKeeper简介官网:https://zookeeper.apache.org/什么是 ZooKeeper?官网解释:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

2020-10-31 10:06:52 33

原创 ABA问题

文章目录什么是CAS什么是ABA问题什么是CASCAS(Compare And Swap)指比较并交换。CAS算法CAS(V, E, N)包含3个参数,V表示要更新的变量,E表示预期的值,N表示新值。在且仅在V值等于 E值时,才会将V值设为 N,如果 V值和 E值不同,则说明已经有其他线程做了更新,当前线程什么都不做。最后,CAS返回当前V的真实值。CAS的特性:乐观锁CAS操作采用了乐观锁的思想,总是认为自己可以成功完成操作。在有多个线程同时使用CAS操作一个变量时,只有一个会胜出并

2020-10-29 12:22:00 29

原创 Java中的线程调度

文章目录抢占式调度协同式调度Java线程调度的实现线程让出 CPU 的情况抢占式调度抢占式调度指每个线程都以抢占的方式获取CPU资源并快速执行,在执行完毕后立刻释放CPU资源,具体哪些线程能抢占到CPU资源由操作系统控制,在抢占式调度模式下,每个线程对CPU资源的申请地位是相等,从概率上讲每个线程都有机会获得同样的CPU执行时间片并发执行。抢占式调度适用于多线程并发执行的情况,在这种机制下一个线程的堵塞不会导致整个进程性能下降。协同式调度协同式调度指某一个线程在执行完后主动通知操作系统将CP

2020-10-28 12:12:00 28

原创 Java并发关键字

文章目录CountDownLatch(线程计数器)CyclicBarrier(循环屏障)CountDownLatch(线程计数器)CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch来实现这种功能了。CountDownLatch基于线程计数器来实现并发访问控制,主要用于主线程等待其他子线程都执行完毕后执行相关操作。其使

2020-10-27 18:35:31 28

原创 如何在两个线程之间共享数据

文章目录前言方法一方法二前言Java 里面进行多线程通信的主要方式就是共享内存的方式。共享内存主要有三个关注点:可见性、有序性、原子性。Java内存模型(JVM)解决了可见性和有序性的问题,而锁解决了原子性的问题。在理想情况下,我们希望做到同步和互斥来实现数据在多线程环境下的一致性和安全性。常用的实现多线程数据共享的方式有将数据抽象成一个类,并将对这个数据的操作封装在类的方法中;将Runnable对象作为一个类的内部类,将共享数据作为这个类的成员变量。方法一将数据抽象成一个类,并将对这个

2020-10-26 21:52:39 32

原创 Java并发编程(Java阻塞队列)

文章目录Java阻塞队列Java阻塞队列队列是一种只允许在表的前端进行删除操作,而在表的后端进行插入操作的线性表。阻塞队列和一般队列的不同之处在于阻塞队列是“阻塞”的,这里的阻塞指的是操作队列的线程的一种状态。在阻塞队列中,线程阻塞有如下两种情况。...

2020-10-25 17:03:26 32

原创 Java并发编程(线程上下文切换)

文章目录线程上下文切换进程上下文寄存器程序计数器PCB:切换桢上下文切换引起线程上下文切换的原因线程上下文切换巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式使多个任务在同一颗 CPU 上执行变成了可能。进程(有时候也称做任务)是指一个程序运行的实例。在一个进程内部可以有多个线程在同时运行,并与创建它的进程共享同一地址空间(一段内存区域)

2020-10-24 23:15:10 19

原创 【算法】分治算法

文章目录基本思想复杂度分析二分搜索:有序数列快速排序随机快速排序归并排序基本思想定义:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。总体思想:将待求解的较大规模的问题分割成k个更小规模的子问题对这k个子问题分别求解如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归进行下去直到问题规模足够小、可以直接求出其解为止将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解适用条件:分治法所能解决的问题一般具有

2020-10-22 22:49:06 65

原创 Java并发编程(线程 的生命周期和基本方法)

文章目录线程的生命周期(状态)新建状态(NEW)就绪状态(RUNNABLE)运行状态(RUNNING)阻塞状态(BLOCKED)线程死亡(DEAD)终止线程的4种方式线程的生命周期(状态)当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead) 5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自运行,所以 CPU 需要在多条

2020-10-21 16:00:53 40 1

原创 Java并发编程(线程池原理)

文章目录线程池的工作原理线程复用线程池的核心组件和核心类线程池工作流程线程池拒绝策略1.AbortPolicy2.CallerRunsPolicy3.DiscardOldestPolicy4.DiscardPolicy5.自定义拒绝策略5种常用的线程池线程池的工作原理为什么要有线程池?Java线程池主要用于管理线程组及其运行状态,以便Java虚拟机更好地利用CPU资源。什么是线程池?线程池其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作, 无需反复创建

2020-10-19 21:27:04 17

原创 Java并发编程(线程)

文章目录并发与并行进程与线程线程的创建方式继承Thread类实现Runnable接口通过ExecutorService和Callable并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。而在多个 CPU 系统中,

2020-10-18 22:11:25 31 2

原创 【算法】递归算法

文章目录一、递归算法阶乘函数Fibonacci(斐波拉契)数列全排列整数划分汉诺塔问题一、递归算法递归的概念:直接或间接地调用自身的算法称为递归算法。递归的要素包括:递归表达式和递归结束条件。阶乘函数求某个数的阶乘:递归表达式:n!= n * (n-1)!递归结束条件:n=0时 0!=1实现代码public class Blog { public static void main(String[] args) { //测试: Sy

2020-10-17 09:52:45 23

原创 Java集合

文章目录前言一、List集合:可重复1.ArrayList集合2.LinkedList集合3.Vector集合二、Queue三、Set集合:不可重复1.HashSet 集合:HashTable实现,无序2.TreeSet集合:二叉树实现3.LinkedHashSet集合:HashTable实现数据存储,双向链表记录顺序四、Map集合1.HashMap:数组+链表存储数据,线程不安全2.ConcurrentHashMap:分段锁实现,线程实现3.HashTable:线程安全4.TreeMap:基于二叉树数据结

2020-10-16 09:15:01 48 1

dubbo-admin-0.0.1-SNAPSHOT.jar|dubbo-admin-0.0.1-SNAPSHOT.jar

Dubbo:搭建管理控制台(dubbo-admin),可以直接在CMD下运行,用户密码(注意:root用户的密码是root,guest用户的密码是guest)

2020-10-15

NavicatforMySQL.rar

Navicat 是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。

2020-04-30

空空如也

空空如也

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

TA关注的人 TA的粉丝

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