自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

流楚丶格念的博客

谦谦君子,卑以自牧

  • 博客(1508)
  • 资源 (144)
  • 收藏
  • 关注

原创 Redis事务失效的三种场景

如果发生这种类型的错误,Redis将向客户端返回包含错误提示信息的响应,同时Redis会清空队列中的命令并取消事务。watch 监控 key 所起的作用实际上是一个乐观锁,它所监控的是在事务期间有没有其他客户端对所监控的值进行修改。在事务提交之前,客户端执行的命令缓存(队列)失败,比如命令的语法错误(命令参数个数错误,不支持的命令等等)。事务提交后开始顺序执行命令,之前缓存在队列中的命令有可能执行失败。由于乐观锁失败,事务提交时将丢弃之前缓存的所有命令序列。最后发现事务里语句失效。最后发现事务里语句失效。

2022-11-16 11:01:48 312 1

原创 Redis能保证ACID的哪些特性?

命令入队时就报错,会放弃事务执行,保证原子性;命令入队时没报错,实际执行时报错,不保证原子性;EXEC 命令执行时实例故障,如果开启了 AOF 日志,可以保证原子性。一致性:能保证一致性隔离性:能保证隔离性持久性:不能保证持久性所以关于 Redis 中事务原子性的总结,就是下面几点命令入队时就报错,会放弃事务执行,保证原子性;命令入队时没报错,实际执行时报错,不保证原子性;EXEC 命令执行时实例故障,如果开启了 AOF 日志,可以保证原子性。

2022-11-16 10:44:53 62

原创 Redis事务相关源码探究

也就所有修改 key 的值的函数,都会去调用 signalModifiedKey 来检查是否修改了被 watch 的 key,只要是修改了被 watch 的 key,就会对 redisClient 的 flags 设置 REDIS_DIRTY_CAS 位。2、每个客户端中也有一个被监听的键值对的列表,当客户端被释放或者 un-watch 被调用,可以取消监听这些 key;通过源码可以看到语法错误的时候事务才会结束执行,如果命令操作的类型不对,事务是不会停止的,还是会把正确的命令执行。

2022-11-16 10:41:25 212 2

原创 Redis事务入门及命令

事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。执行成功,返回事务块内所有命令的返回值,按命令执行的先后顺序排列。

2022-11-16 08:44:54 58

原创 你能分清Java的关键字和标识符吗?

标识符可以有一个或多个字符。

2022-11-14 20:55:58 249 1

转载 算法复杂度描述中为什么用“logn”,而不用“log2n”、“lnn”或“lgn”(转载)

可知算法的时间复杂度与不同底数只有常数的关系,均可以省略自然可以用logN代替。由O的运算规则"O( C × f(N) )=O( f(N ) ),得O(logaB)=O(logcB)logcA(c为底数)为常数,其中C是一个正的常数。

2022-11-13 21:49:01 76

原创 场景应用:short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。可以正确编译,因为 s1+= 1;相当于 s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

2022-11-13 21:47:02 71

原创 场景应用:键盘敲入字母a时,期间发生了什么?

键盘的中断处理程序是在键盘驱动程序初始化时注册的,那键盘中断处理函数的功能就是从键盘控制器的寄存器的缓冲区读取扫描码,再根据扫描码找到用户在键盘输入的字符,如果输入的字符是显示字符,那就会把扫描码翻译成对应显示字符的 ASCII 码,比如用户在键盘输入的是字母 a,是显示字符,于是就会把扫描码翻译成 a 字符的 ASCII 码。首先 CPU 里面的内存接口,直接和系统总线通信,然后系统总线再接入一个 I/O 桥接器,这个 I/O 桥接器,另一边接入了内存总线,使得 CPU 和内存通信。(懒得画图了,见谅)

2022-11-13 20:21:58 341

原创 操作系统:进程与线程大解析

有名管道不同于匿名管道之处在于它提供了一个路径名与之关联,以有名管道的文件形式存在于文件系统中,这样,即使与有名管道的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过有名管道相互通信,因此,通过有名管道不相关的进程也能交换数据。锁也是用的这种原理实现的。现在我们考虑一个场景:有一个会读取硬盘文件数据的程序被执行了,那么当运行到读取文件的指令时,就会去从硬盘读取数据,但是硬盘的读写速度是非常慢的,那么在这个时候,如果 CPU 傻傻的等硬盘返回数据的话,那 CPU 的利用率是非常低的。

2022-11-13 17:18:54 568 1

原创 操作系统:Linux vs Windows内核与应用对比

内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。因为计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。

2022-11-13 09:42:41 64

原创 场景代码题:有200个骑手都想要抢这⼀个外卖单子,如何保证只有一个骑手接到单子?

可以采⽤volatile关键字修饰该订单,然后使用CAS操作对其进行乐观锁操作。

2022-11-12 15:58:13 130 1

原创 JVM参数调优详解

但是,当堆空间较小时,运行一段时间以后,就会出现“碎片”,如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5。比如设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5。例如:-Xmn2g:设置年轻代大小为2G。

2022-11-11 16:07:31 113

原创 TCP为什么是可靠的(怎么保证有效传输的)?

可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的。TCP是通过序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制一起保证TCP传输的可靠性的。检验和:在数据传输过程中,吧传输的数据当作一个16位整数。吧所有的数据加起来,最前面的进位补到最后一位,然后取反得到校验和。发送方和接收方验证校验和是否相同。不相同则数据传输有误,相同也可能有问题。

2022-11-10 20:23:30 323 1

原创 场景代码题:用Java写三个线程轮流打印1-100的程序

最近身体不太舒服,只贴代码了,打了注释,不再解读了,不忙了再来多写几种方法。

2022-11-10 19:42:28 95

原创 场景应用:线程池的队列大小你通常怎么设置?

综合来看,我们可以根据自己的业务场景,从“N+1”和“2N”两个公式中选出一个适合的,计算出一个大概的线程数量,之后通过实际压测,逐渐往“增大线程数量”和“减小线程数量”这两个方向调整,然后观察整体的处理时间变化,最终确定一个具体的线程数量。

2022-11-08 17:02:48 191

原创 Java多线程:LongAdder 原子操作增强类

LongAdder是jdk8新增的用于并发环境的计数器,目的是为了在高并发情况下,代替AtomicLong/AtomicInt,成为一个用于高并发情况下的高效的通用计数器。说LongAdder比在高并发时比AtomicLong更高效阿里开发手册推荐jdk8使用LongAdder替代AtomicLong现在,在处理高并发计数时,应该优先使用LongAdder,而不是继续使用AtomicLong。当然,线程竞争很低的情况下进行计数,使用Atomic还是更简单更直接,并且效率稍微高一些。

2022-11-08 16:18:07 175

原创 Java多线程:线程间通信方式

这三个方法都是Condition接口中的方法,该接口是在Java 1.5中出现的,它用来替代传统的wait+notify实现线程间的协作,它的使用依赖于 Lock。反之,当一个线程被wait后,就会进入阻塞队列,等待被唤醒。案例步骤:通信是在不同线程间的通信,一个线程处于wait状态阻塞等待被唤醒,另一个线程通过notify或者notifyAll唤醒,当前的唤醒操作必须是作用与同一个对象,注意在进行唤醒和阻塞时必须要加锁的,加锁需要使用synchronized关键字。程序没有结束,他会一直读取阻塞队列。

2022-11-08 10:04:10 61

原创 Java多线程:BlockingQueue实现原理(Condition原理)

当调用 Condition对象的 await方法后,当前线程会释放锁并等待,而其他线程调用 Condition 对象的 signal 或者 signalall 方法通知并被阻塞的线程,然后自己执行unlock释放锁,被唤醒的线程获得之前的锁继续执行,最后释放锁。要注意的是,如果等地队列中的节点被唤醒,唤醒节点的线程开始尝试获取同步状态。当调用 Condition 的 await() 方法(或者以 await开头的方法),会使得当前线程进入等待队列,并且释放锁,同时线程的状态变为等待状态。

2022-11-07 23:34:43 90

原创 Java多线程:CopyOnWriteArrayList 实现原理

通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。正如其名字一样,在写操作时会复制一份新的List,在新的List上完成写操作,然后再将原引用指向新的List。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,当然,这里读到的数据可能不是最新的。而写操作的时候,则首先将容器复制一份,然后在新的副本上执行写操作,这个时候。结束之后再将原容器的引用指向新容器。

2022-11-07 21:07:07 247

原创 接口和抽象类有什么区别?你平时怎么用?

对于接口的调用者而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务。当在一个程序中使用接口时,接口是多个模块间的耦合标准;抽象类作为多个子类的抽象父类,可以被当成系统实现过程中的中间产品,这个中间产品已经实现了系统的部分功能,但这个产品依然不能当成最终产品,必须有更进一步的完善,这种完善可能有几种不同方式。抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承的不足。

2022-11-07 14:24:17 128

原创 Java为什么吧String设计为不可变类?

由于字符串无论在任何 Java 系统中都广泛使用,会用来存储敏感信息,如账号,密码,网络路径,文件处理等场景里,保证字符串 String 类的安全性就尤为重要了,如果字符串是可变的,容易被篡改,那我们就无法保证使用字符串进行操作时,它是安全的,很有可能出现 SQL 注入,访问危险文件等操作。由于 String 天然的不可变,当一个线程”修改“了字符串的值,只会产生一个新的字符串对象,不会对其他线程的访问产生副作用,访问的都是同样的字符串数据,不需要任何同步操作。当字符串不可变时,字符串常量池才有意义。

2022-11-07 13:48:52 137

原创 Java 面向对象程序设计思想

调用时,我们可以传入Vehicle类型的实例,也可以传入任意的Vehicle子类型的实例,对于调用者来说一样的方便,但对于开发者来说,代码却变得十分的简洁了。,当运行时调用该引用变量的方法时,其方法行为总是表现出子类方法的行为特征,而不是父类方法的行为特征,这就可能出现:相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,这就是多态。父类引用指向子类对象称为 向上转型。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

2022-11-07 13:26:02 88

原创 场景应用:如何设计一个分布式系统?

建议阅读《大型网站技术架构 – 核心原理与案例分析》一书,李智慧著,优点是条理清晰,不像另一些东拼西凑的文章。② 缓存服务不是数据存储服务,缓存宕机应当通过其他手段解决,如扩大缓存规模,一个缓存服务器的宕机只会影响局部。② 执行本地事务,如果成功,则半消息转换为正式消息,允许被消费;③ 合理设置超时时间,在超时后应当有相应的处理策略,如:重试、转移、降级等。① 缓存服务不可用会让数据库失去保护,因此需要保证缓存服务高可用。① 核心服务和非核心服务隔离部署,分级管理,方便非核心服务降级。

2022-11-06 15:10:19 210

原创 分布式共识算法——Gossip协议(图解)

过程是种子节点会把所有的数据都跟其他节点共享,以便消除节点之间数据的任何不一致,它可以保证最终、完全的一致。如果把两个节点数据同步一次定义为一个周期,则在一个周期内,Push 需通信 1 次,Pull 需 2 次,Push/Pull 则需 3 次。整个传播过程可能需要一定的时间,由于不能保证某个时刻所有节点都收到消息,但是理论上最终所有节点都会收到消息,因此它是一个最终一致性协议。Gossip 协议的消息传播方式有两种:Anti-Entropy(反熵传播)和Rumor-Mongering(谣言传播)。

2022-11-06 14:35:04 48

原创 分布式共识算法——Raft算法(图解)

Paxos 和 Raft 都是分布式一致性算法,这个过程如同投票选举领袖(Leader),参选者(Candidate)需要说服大多数投票者(Follower)投票给他,一旦选举出领袖,就由领袖发号施令。Paxos 和 Raft 都是分布式一致性算法,这个过程如同投票选举领袖(Leader),参选者(Candidate)需要说服大多数投票者(Follower)投票给他,一旦选举出领袖,就由领袖发号施令。在 Raft 算法中充当逻辑时钟的作用,使得服务器节点可以查明一些过期的信息(比如过期的 Leader)。

2022-11-06 14:04:11 122

原创 分布式共识算法——Paxos算法(图解)

准备阶段:Proposer负责接收 client 请求并产生提案,必须由多数派 Acceptor 批准通过提案接受阶段:提案通过后,再将要执行的修改操作广播给 Acceptor,这次仍然多数派通过,此修改才能生效,可以返回响应给客户端。

2022-11-06 10:18:50 429 1

原创 Spring 七大模块介绍

Spring 由七大模块组成,分别是Spring 核心容器(Spring Core)、应用上下文(Spring Context)、Spring面向切面编程(Spring AOP)、JDBC和DAO模块(Spring DAO)、对象实体映射(Spring ORM)、Web模块(Spring Web)以及MVC模块(SpringWebMVC)。拓展了Spring上下文,提供Web应用上下文,对Web开发提供功能上的支持,如请求、表单、异常等。提供对JDBC的支持,还提供了DAO的支持,提供事务支持。

2022-11-04 17:28:08 123

原创 Java 常见的 IO流

其中,节点流可以直接从/向一个特定的IO设备读/写数据,也称为低级流。流是Java对不同输入源输出源的抽象,代表了从起源到接收的有序数据,有了它程序就可以采用统一的方式来访问不同的输入源和输出源了。java.io.OutputStreamWriter (字符字节输出流,将字节输出流转换为字符输出流)java.io.InputStreamReader (字符字节输入流,将字节输入流转换为字符输入流)其中,字节流操作的数据单元是byte(字节),而字符流操作的数据单元是char(16位的字符)。

2022-11-04 15:57:04 51

转载 英雄何为:《新神榜:杨戬》的颠倒与失控

继2021年追光动画推出动画电影《新神榜:哪吒重生》以来,其“封神系列”的第二部作品《新神榜:杨戬》(后文简称《哪吒重生》与《杨戬》)也终在今年暑期档与观众相见。与上一部发生于现代都市的背景不同,影片将时间线拉回至魏晋时期,围绕“杨戬”与“沉香”二人,本片讲述了这样一个故事:商周之战,玄鸟出而纷争起,封神榜立遂三界安。时光流转,天界力量日益衰微,封神榜势力不断洗牌,三界乱象再起。十二年前,杨戬受师父玉鼎真人之命封住莲花峰,镇压玄鸟以保“世间太平”,他的妹妹杨婵也因玄鸟之力过盛不得不与玄鸟一同祭身山底。

2022-11-04 15:13:04 98

原创 HTTP协议的缓存策略有哪些?

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。使用缓存是前端性能优化的重要方式,既可以提高响应的速度又可以减少不必要的重复请求,从而提高服务器的吞吐量。但是有时候缓存并不适用于所有情况,有时候反而会使用户体验变差,因此需要根据不同的请求制定不同的缓存策略。浏览器缓存就是浏览器把一个已经请求过的Web资源拷贝一份副本储存在本地磁盘中。当再次访问相同的URL时,浏览器会根据缓存机制决定是直接使用副本响应访问请求,还是向服务器再次发送请求。

2022-11-04 13:55:30 97

原创 场景应用:你知道 i = i++;的含义么?

i++是先被操作数栈拿去用了(先执行的load指令),然后再在局部变量表中完成了自增,但是操作数栈中还是自增前的值而++1是先在局部变量表中完成了自增(先执行innc指令),然后再被load进了操作数栈,所以操作数栈中保存的是自增后的值注意:innc指令是局部变量指令。

2022-11-02 20:23:54 377 2

原创 Java线程调度及相关函数

join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程。让当前线程让位,让给其它线程使用。yield()方法的执行会让当前线程从“运行状态”回到“就绪状态”。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。注意:在回到就绪之后,有可能还会再次抢到,然后过了很短时间就又运行了,所以可能会出现看起来像没调用yield()一样。那个线程的优先级比较高,抢到的CPU时间片的概率就高一些/多一些。

2022-11-01 16:54:46 65

原创 基于C++实现的文件系统(简易版——内存空间操作)

目录的创建和删除与文件的操作大致相同,创建目录时,目录表项的startBlock不是FCB而是指目录的存放位置,而且还要自动为其添加多一个父目录项“…系统用char[]数组作为位示图保存了每一个盘块的使用状态,而且采取了连续分配的方式,对于目录表和FCB都规定直接使用一个盘块,文件又是规定好大小不能扩展的,所以实现起来减少了很多FAT,索引表,那些离散分配所需的连接方式,单纯练手的话,还是十分简易的。文件管理:是系统对于文件和目录层次的管理的,规定了FCB结构,目录结构等,包含了对接口的实现。

2022-11-01 13:38:10 220

原创 SpringBean生命周期——refresh源码解读

ApplicationContext没有Bean初始化,依赖注入等功能他都没有,他得简介的调用BeanFactory 来对Bean进行管理,ApplicationContext委托给BeanFactory 来干这些活,ApplicationContext做的是扩展的活,Bean的核心功能是在BeanFactory 中。下面我们深入探究下里面的ResourceEditorRegistrar资源类型转化器,我们可以看到不同的资源类型用不同转化器转化。我们在prepareRefresh();

2022-11-01 10:43:11 58

原创 SpringBean的生命周期——doGetBean函数探究

要点总结dependsOn 时的 bean 初始化顺序dependsOn 用在非显式依赖的 bean 的创建顺序控制@Conditional 的解析时机@Conditional 由 ConditionEvaluator 解析看是否满足装配条件beanName 的解析时机。

2022-11-01 10:30:48 73

原创 TCP与UDP的区别与适用场景

在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。比TCP稍安全UDP没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击。提供的是非面向连接的、不可靠的数据流传输。

2022-11-01 10:28:44 52

原创 TCP 三次握手与四次挥手深入探究(大图解)

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。

2022-10-31 20:29:08 106

原创 MySQL命中索引代码实验案例

根据查询条件查询 1,2 都会先走二级索引,但是二级索引仅包含了 (province, city, county) 和 id 信息。我们现在用的是 5.6 以上版本,所以没有体会,可以用下面的语句关闭索引下推优化,再测试一下性能。修改 MySQL 配置文件,在 [mysqld] 下添加。准备大量数据:数据行数 100 万条,列个数 15 列。重启 MySQL 服务器,让选项生效。若建立组合索引 (a,b,c),则可以。若建立组合索引 (a,b,c),则可以。执行 db.sql 内的脚本,建表。

2022-10-31 19:05:45 32

原创 TCP粘包、拆包原因与解决方案

这样小的数据包如果很多,会造成网络资源很大的浪费,negal算法做了这样一件事,当来了一个很小的数据包,我不急于发送这个包,而是等来了更多的包,将这些小包组合成大包之后一并发送,不就提高了网络传输的效率的嘛。这是我自己想的一个场景,正式一点讲的话,这个现象叫。TCP作为传输层协议并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分,所以在业务上认为是一个完整的包,可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。

2022-10-31 18:31:06 58

原创 一文就懂ConcurrentHashMap实现原理

哈希表就是一种以键-值(key -indexed) 存储数据的结构,我们只要输入待查 找的值即 key,即可查找到其对应的值。哈希表是一种非常高效的数据结构 ,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别。Java为我们提供了一个现成的哈希结构 ,那就是HashMap类 ,在前面的文章中我曾经介绍过HashMap类 ,知道它的所有方法都未进行同步 ,因此在多线程环境中是不安全的。

2022-10-31 18:13:03 64

场景应用:利用Redis实现分布式Session案例

场景应用:利用Redis实现分布式Session案例

2022-08-28

数据行数 100 万条,列个数 15 列。用于测试

数据行数 100 万条,列个数 15 列。用于测试

2022-08-24

mybatis一级二级缓存流程图.drawio

mybatis一级二级缓存流程图.drawio mybatis一级二级缓存流程图.drawio mybatis一级二级缓存流程图.drawio mybatis一级二级缓存流程图.drawio

2022-07-31

mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

2022-07-20

Windows10鼠标指针主题资源

Windows10鼠标指针主题资源 Windows10鼠标指针主题资源 Windows10鼠标指针主题资源 Windows10鼠标指针主题资源 Windows10鼠标指针主题资源 Windows10鼠标指针主题资源 Windows10鼠标指针主题资源

2022-07-20

cloud-demo第一次 SpringCloud服务拆分初探与案例解析

cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析

2022-07-18

Docker讲义(没亲测).pdf

Docker讲义(没亲测).pdf

2022-07-13

mybatis练习3mybatis练习3mybatis练习3mybatis练习3

mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3mybatis练习3

2022-07-04

mybatis训练3mybatis训练3mybatis训练3mybatis训练3

mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3mybatis训练3

2022-07-03

mybatis联系项目2

mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联系项目2mybatis联

2022-07-03

Mybatis 框架理解与快速入门详解代码与数据库

软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。总的来说:框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!如图下图所示:我们可以拿不同的框架来搭建我们自己的成品。 1. 为什么需要框架技术:软件系统随着业务的发展,变得越来越复杂,不同领域的业务所涉及到的知;软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。总的来说:框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!如图下图所示:我们可以拿不同的框架来搭建我们自己的成品。 1. 为什么需要框架技术:软件系统随着业务的发展,变得越来越复杂,

2022-06-21

Windows制作动态静态库实例代码

Windows制作动态静态库实例代码

2022-03-18

apache-jmeter-5.4.3.zip

apache-jmeter-5.4.3. 压力测试工具

2022-03-13

apache-jmeter-5.1.1.zip

apache-jmeter-5.1.1 压力测试工具

2022-03-13

Java中 PO VO BO DTO DAO 和 POJO 关系图

Java中 PO VO BO DTO DAO 和 POJO 关系图

2022-03-13

ISBN号识别系统的设计与开发源代码

ISBN号识别系统的设计与开发源代码

2022-03-09

es6新特性:一篇就够了

es6新特性:一篇就够了

2022-02-21

RESTful API设计规范.pdf

RESTful API设计规范.pdf

2022-02-13

uniapp free.css样式框架

uniapp free.css样式框架

2022-02-04

OpenCV和MFC的超混沌图像加密

OpenCV和MFC的超混沌图像加密

2022-01-30

我的老6※Linux配置.txt

我的老6※Linux配置.txt

2022-01-20

Qt+OpenCV小项目:灰度图转换

Qt+OpenCV小项目:灰度图转换

2022-01-09

FileViewSystem:Windows 文件可视化系统.zip

MFC 打造 Windows 文件可视化系统

2022-01-09

C#操作系统-页面置换.zip

C#操作系统-页面置换算法功能演示(没写时钟算法)

2021-12-27

多道程序缓冲区协同操作

燕山大学操作系统课设代码程序:多道程序缓冲区协同操作

2021-12-24

AutoWordSeparate.zip

C/C++汉语自动分词程序.zip

2021-12-17

C/C++宋词自动生成器.zip

C/C++宋词自动生成器.zip

2021-12-16

《计算机英语(第4版)》课后练习参考答案.doc

《计算机英语(第4版)》课后练习参考答案.doc

2021-12-14

《计算机英语(第4版》参考译文.docx

《计算机英语(第4版》参考译文.docx

2021-12-14

PHP 登陆注册案例(CRUD).zip

PHP 登陆注册案例(CRUD).zip

2021-11-27

jquery-3.4.1.zip

jquery-3.4.1.zip

2021-11-27

EasyX工具箱.zip

EasyX工具箱:内含EasyX安装工具和EasyX chm说明工具

2021-11-22

C#拼图——自制版(思想很简单).zip

C#拼图——自制版(思想很简单)

2021-11-21

C#窗体——拼图游戏.zip

C# 拼图: (1)进行游戏用户的注册以及登录; (2)先导入图片,并进行切割 (3)随机丢弃一张小切图,并打乱顺序 (3)窗体基本的功能选择栏需实现; (4)可以判定游戏确定输赢,当拼成时提示成功; (5)点击图片要能进行移动; (6)右侧要有重排后的显示框便于玩家游戏的完成。

2021-11-21

linux0.11内核源码 中文注释.zip

linux0.11内核源码 中文注释.zip

2021-11-21

MFC图书管理系统(文件流).zip

MFC图书管理系统(文件流存储用户信息)

2021-11-19

编程资源—322个精美鼠标指针cur.zip

编程资源—322个精美鼠标指针cur.zip

2021-11-15

C++ 基于ZLIB压缩库的数据或文件的压缩与解压缩小程序.zip

自写C++ 基于ZLIB压缩库的数据或文件的压缩与解压缩小程序.zip

2021-11-11

纯CSS3不规则瀑布流布局特效瀑布照片墙.zip

纯CSS3不规则瀑布流布局特效瀑布照片墙.zip

2021-11-01

jQuery图文手风琴.zip

jQuery案例:图文滑动手风琴特效

2021-11-01

空空如也

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

TA关注的人

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