常见树形结构
常见树形结构
树形结构 相关术语 结点(Node):表示树中的数据元素,由数据项和数据元素之间的关系组成 在图中,共有10个结点 结点的度(Degree of Node):结点所拥有的子树的个数,在图中,结点A的度为3 树的度(Degree of Tree):树中各结点度的最大值 在图中,树的度为3 叶子结点(Leaf Node):度为0的结点,也叫终端结点 在图中,结点E、F、G、H、I、J都是叶子结点 分支结点(Branch Node):度不为0的结点,也叫非终端结点或内部结点 在图中,结点A、B、C、D是分支结点 孩子(Child):结点子树的根 在图中,结点B、C、D是结点A的孩子
2019-03-15鱼鱼
CAT的使用和原理简介
CAT的使用和原理简介
开发中刚好碰到了CAT的应用,利用这篇文章总结一下
2019-08-07鱼鱼
ooo
ooo
拆箱:包装类-》基本数据类型 Integer Byte -127- 127是以缓存数组指向相同对象,之外的默认new 模块化 完全解耦 #预编译 $直接用 $内容手动干涉 Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象 ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map
内,供下一次使用
2019-04-02鱼鱼
Mybatis的缓存机制、redis数据库缓存实现和相关问题
Mybatis的缓存机制、redis数据库缓存实现和相关问题
高并发环境下,数据库要承受非常大的压力,我们不能奢求每一次都只依赖分布式结构的读写分离数据库来解决问题,所以引入了数据库缓存的概念,这里的缓存不是具体的memcache或是redis,可能只是一块内存区域 此文介绍Mybatis的缓存机制 SqlSession是Mybatis创建数据库链接的会话,当度使用Mybatis需要对SqlSesssion的生命周期有一个把控,但是在Spring的集成中这个会话会被自动创建,周期只是对应一个方法(例如Service层的一个方法),所以每个请求就会对应一个或是多个SqlSession,SQLSession的主要实现是其中的Exector,对应了三种策略:
2020-03-03鱼鱼
并发之AQS全解析
并发之AQS全解析
我们知道juc(java.util.concurrent)包下有很多实用的类,提供了很多并发工具,例如线程池、原子类、并发工具、信号量工具、锁等,可以说基本实现都为悲观锁,底层原理基本都使用了AQS(AbstractQueuedSynchronizer),AQS不是一种概念,是并发中实打实的工具类 本篇文章针对AQS做解析 AQS是多线程访问共享资源的同步器框架 AQS的资源可以是独占的也可以是共享的 我们先来简单看一下它的使用方式和ApI(因为是抽象类,是不能直接使用的),下图是AQS的整体脉络 AQS核心就是一个状态值state,同时维护了一个线程的阻塞队列,队列的节点为有两种状态:SHARED(共享)和EXCLUSIVE(独占),节点状态有五种:
2021-03-12鱼鱼
Spring MVC源码和设计思想序 综述
Spring MVC源码和设计思想序 综述
Spring框架整体的流程:(图片引用请注明出处)
2019-06-05鱼鱼
扫盲——加密那些事
扫盲——加密那些事
扫盲加密解密算法 日常开发中我们经常接触MD5算法,以此进行简单的文件完整性校验或者是后台密码验证,MD5是最常见也是最简单快捷的散列算法,常用于参数或文件完整性校验,譬如网络请求发起方与接收方分别对参数做MD5编码,一旦不一致便判断请求被篡改从而拒绝该请求,从而保证信息安全,编码后的字符串是编码前文本的一个简要梗概,因此它也被称作是信息摘要算法 这个算法的特点就是不可逆,只用于信息准确性和防篡改的校验,当然,MD5作为老牌的散列算法,很多经典的编码已经可以被反向解码出来(依靠正向的暴力穷举)以及被碰撞模仿(王小云院士团队的"破解"能够根据MD5编码后串码模拟原始消息,即使它可能与原信息不同),类似的还有SHA1,因此衍生了SHA224、SHA256、SHA512等更多安全的散列算法
2021-05-14鱼鱼
用Quartz 写定时任务
用Quartz 写定时任务
Quartz是OpenSymphony开源组织在Job scheduling领域的一个开源项目,是一款清新友好的任务调度框架 Quartz两大基本功能是job和SimpleTrigger(作业和触发器) 核心的是Scheduler类 有以下几个相关类: Scheduler:定时任务调度; Job:任务类需要实现的接口; JobDetail:Job的实例,被Scheduler执行的是JobDetail,而不是Job; Trigger:触发Job的执行; JobBuilder:定义和创建JobDetail实例的接口; TriggerBuilder:定义和创建Trigger实例的接口;
2019-06-18鱼鱼
Java中的数据结构
Java中的数据结构
若不提到Jdk版本,本文中的源码都是基于jdk8版本分析的 注:有关同步集合(如Vector、ConcurrentHashMap、CopyOnWriteArrayList等)请移步博客 数组集合类,是Collection接口的子类,有序的Collection实现,包含ArrayList、LinkedList、Vector,其中Vector是线程安全的ArrayList,LinkedList是底层基于双向链表实现的List ArrayList的默认大小为10,扩容操作: 也就是1.5倍 不重复集合类,不能包含重复的元素,是Collection接口的子类,包含HashSet、LinkedHashSet、TreeSet,其实都是基于Map类的实现,所以详细了解请参阅Map类
2019-07-12鱼鱼
AI大模型定价对比
AI大模型定价对比
https://open.bigmodel.cn/pricing 火山方舟也提供端点(GLM3 0.001) https://openai.com/ja-JP/api/pricing/ 出入价格不一样 官网和火山都有 另外有免费版本的
2024-12-18鱼鱼
JVM与GC
JVM与GC
JMM,长下面这个样子: 其中,堆和栈区自然不做介绍了,主要介绍: 程序计数器:线程私有的,记录正在执行的字节码地址,换言之,它告诉我们某线程执行到了那里,分支、循环等也会依赖这个来执行,这一区域不会发生OOM问题 栈:就是正常所指的栈,每个方法被执行的时候都会同时创建一个栈帧(Stack Frame )用于存储局部变量表、操作栈、动态链接、方法出口等信息 每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程,这一区域会发生StackOverflow问题 堆:就是正常所指的堆,这里是GC的主要区域 方法区:线程私有的,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,运行时常量池也包含在里面
2019-03-28鱼鱼
MySQL的数据锁 加在哪?
MySQL的数据锁 加在哪?
此篇文章探讨MySQL数据库的锁,讨论MySQL各种语句将如何加锁,以及加锁的“效果”,主要针对默认的InnoDb引擎 基于MySQL5.6之后的版本 有心力的可以直接看MySQL官方文档,说的更为详细:14.7.3由InnoDB中的不同SQL语句设置的锁 按类型分,MySQL有锁: 行锁,最普通的锁,其实是加在索引上的锁 表锁,直接加在整张表的锁,一旦上锁整张表的操作都会比较锁 间隙锁,又称GAP锁,用于在涉及范围查询时给莫须有的位置加锁,防止并发插入等操作出现数据不一致(诸如幻读)的问题 间隙锁之间是不会冲突的 行锁与Gap锁合称Next-Key锁 间隙锁只能锁住间隙,即间隙锁不能指定具体的数据范围,将会锁上整个间隙
2021-02-05鱼鱼
网站地图
1
首页
博客
{{screen}}
第 {{page}} 页
博客索引
{{blog.title}}
{{blog.content}}
{{blog.createDate}} ◔ {{blog.timeline}}
{{blog.author}}
{{tag}}
{{blog.likeCount}}
{{blog.commentCount}}
分类下暂时没有文章哦!
主题分类
源码解析
造个轮子吧
多线程应用提高
问题探究
来做几道算法题
微服务架构实战
QuickStart
电子出版物
Java排坑指南
做点有趣的!
瞧瞧看看MySQL
{{taggroup.label}}
{{tag.value}}