- 博客(86)
- 收藏
- 关注
原创 java并发编程
课程内容用到的pom.xml 依赖如下logback.xml 配置如下:2、进程与线程2.1 进程与线程进程线程二者对比进程基本上相互独立的,而线程存在于进程内,是进程的一个子集进程拥有共享的资源,如内存空间等,供其内部的线程共享进程间通信较为复杂线程通信相对简单,因为它们共享进程内的内存,一个例子是多个线程可以访问同一个共享变量线程更轻量,线程上下文切换成本一般上要比进程上下文切换低并发: concurrent,微观串行,宏观并行并行:parallel多线程可以让方法执行变为异步的使用 R
2025-10-12 22:42:50
914
原创 Redis
在上面的代码中,我们登录的时候给用户信息存入到session中,设置有效期是30分钟。如果是session登录方式,如果用户一直在访问我们的系统,就会一直续约session的时间,而我们没有实现这个功能。我们这里通过拦截器来实现用户信息续约。但是LoginInterceptor只是拦截一部分路径,对于那些不需要登录的地方是不拦截的,也就无法实现用户信息续约了。1、通过拦截器实现redis中用户信息的续约2、解决LoginInterceptor拦截器无法对用户信息续约的问题前言什么是缓存?缓存(
2025-06-05 20:25:49
467
原创 MySQL
客户端与数据库建立连接。然后SQL语句会经过词法解析、语法解析,如果通过,则会检查查询换成中有无对应结果,有的话直接返回;没有则需要去数据库中查询。此时会经过优化器生成执行计划,然后交给执行器。执行器去数据库的存储引擎中去查询数据。
2025-05-25 10:23:54
1341
原创 JVM(Java虚拟机)
1)定义Java Virtual Machine ,Java 程序的(Java 二进制字节码的运行环境)。2)好处3)功能4)比较JVM、JRE、JDK 的关系如下图所示。
2025-05-24 19:41:07
2271
原创 数据库truncate
执行truncate表操作之后,整个opengauss的data目录占用1017G。100万条数据下,整个opengauss的data目录占用1.1G。执行truncate表操作之后,表占用空间如下。提前在如下表中插入1000条数据。1000条数据下,表占用空间如下。提前在如下表中插入100万条数据。
2026-01-28 20:40:15
57
原创 Oracle数据库
Nested Loop Join:从一张表里面取出一条数据,去另一张表查询匹配的数据Hash Join:将大表打散为小表,小表之间join。
2026-01-24 20:47:47
928
原创 负载均衡算法
先使用currWeight加上weight,比如第一行结果是2、3、5,然后取得currWeight最大值是5,数字5正好位于2、3、5的第三位,属于C服务器,接着将max(currWeight)减去weight之和,变成2、3、-5。执行结果变成新的currWeight,开始第二行。第二行,currWeight加上weight变成4、6、0,重复上面的过程,直至最后的currWeight归零,10次会归零,因为2+3+5=10。
2026-01-23 20:42:02
228
原创 分布式锁教程
性能:一个sql > 悲观锁 > jvm锁 > 乐观锁如果追求极致性能、业务场景简单并且不需要记录数据前后变化的情况下,优先选择:一个sql如果写并发量较低(多读),争抢不是很激烈的情况下优先选择:乐观锁如果写并发量较高,一般会经常冲突,此时选择乐观锁的话,会导致业务代码不间断的重试:优先选择悲观锁不推荐使用jvm锁。
2026-01-15 20:49:04
626
原创 架构演进过程
SOA:(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。微服务架构是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用。形成多个独立的单体架构。
2026-01-08 19:32:56
363
原创 Zookeeper
官网:http://curator.apache.org/Curator 是 Apache ZooKeeper 的Java客户端库。最初是 Netfix 研发的,后来捐献了 Apache 基金会,目前是 Apache 的顶级项目。Curator 项目的目标是简化 ZooKeeper 客户端的使用。原生Java APIZkClientCurator使用Curator来操作Zookeeper,所以对于二者的版本是有要求的。如果使用Zookeeper3.5版本,对应的Curator是4.0版本;
2026-01-05 20:43:00
1019
原创 NewSQL数据库TiDB
TiDB可以理解为是MySQL的加强版/分布式MySQL/MySQLPlusTiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。
2026-01-02 15:29:57
655
原创 密码的加密加盐处理
说明:所谓的salt字段就是一个随机的字段,具体随机算法就不讨论了,每当用户注册账户时,后台就给它随机生成一个不同的字段,然后根据password和salt字段结合进行摘要处理,存在数据库表中的password字段,这样一来,原来明文都是123456生成的密文就不一样了。(1)通过以上步骤,我们只对数据库的password明文字段进行了简单的MD5加密,进入http://www.cmd5.com/ 输入加密后的密文进行解密后可以得到明文密码。(3)真实密码相同,加密过的密码也相同。
2025-12-30 19:27:58
303
原创 函数式编程
lambda和方法引用很类似,写法略有差异。JDK提供的常见函数接口Operator表示输入参数类型与返回值类型一致命名规则根据上面的定义规则,我们可以自己定制一个函数。有3个int类型的输入参数,1个int类型的输出结果针对这种情况,我们可以定义规则如下IntTernaryOperator:输入参数类型为int,三个参数表示为Ternary,输出结果类型与输入一致使用Operator1.3、方法引用方法引用:将现有方法的调用转化为函数对象。输入参数为函数的参数遍历功能输出结果:
2025-12-20 15:31:29
93
原创 无状态应用设计
应用实例不在本地持久保存请求相关的状态。所有需要的会话或上下文,转而存放到后端共享存储(如 Redis、数据库),或被安全地随请求携带。因此请求落到任何实例,处理路径与结果都一致,天然利于水平扩展与弹性伸缩。
2025-12-20 15:26:04
100
原创 布隆过滤器
布隆过滤器是一种数据结构,用于快速检索一个元素是否可能存在于一个集合(bit 数组)中。它的基本原理是利用多个哈希函数,将一个元素映射成多个位,然后将这些位设置为 1。当查询一个元素时,如果这些位都被设置为 1,则认为元素可能存在于集合中,否则肯定不存在。所以,布隆过滤器可以准确的判断一个元素是否一定不存在,但是因为哈希冲突的存在,所以他没办法判断一个元素一定存在。只能判断可能存在。
2025-12-17 23:37:43
94
原创 会话技术Cookie Session Token
HTTP协议是基于请求响应模型,它是无状态协议。所谓无状态,是指后一次请求是不会携带前一次请求数据的。像系统的登录功能,第一次用户登录,接着第二次访问系统,第二次的HTTP请求是不会携带第一次HTTP请求信息的,即后续是无法知道第一次是否登录成功了。解决思路是,在第一次登录之后,存储一个登录标记,后续请求的时候检查登录标记,如果有登录标记就可以访问页面,没有则返回登录页面。
2025-12-17 21:20:15
425
原创 LVS:Linux Virtual Server
LVS:Linux Virtual Server,是全球最流行的四层负载均衡开源软件,由章文嵩博士在1998年开发。目前,LVS已被整合到Linux内核当中,因此不需要安装LVS软件,默认内核就有负载均衡特性了。阿里的四层SLB是基于LVS+keepalived实现的。如何确认当前Linux内核有LVS功能#查看内核#查看内核中是否有ipvs字样,有的话即代表有LVS功能。
2025-12-16 19:51:28
1018
1
原创 Nginx+keepalived
daemon语法:daemon on | off默认值:on是否以守护进程方式运行nginx语法:master_process on | off默认值:on是否以master/worker方式进行工作,在实际环境中,nginx是以一个master进程管理多个worker进程的方式运行的,关闭后nginx就不会fork出work子进程来处理请求,而是用master进程自身来处理请求。
2025-12-16 19:40:46
1291
原创 分布式事务专题5
可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。此方案是利用消息中间件完成,如下图:事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。1.本地事务与消息发送的原子性问题。
2025-12-04 20:49:48
1026
原创 分布式事务专题4
TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认 Confirm、撤销Cancel。Try操作做业务检查及资源预留(例如,要转账1万元,try阶段会检查金额够不够1万元),Confirm做业务确认操作,Cancel实现一个与Try相反的 操作即回滚操作。
2025-12-04 20:28:30
793
原创 分布式事务专题3
分布式事务执行过程中,依次执行各参与者的正向操作,如果所有正向操作均执行成功,那么分布式事务提交。事务2也去扣款30元,于是冻结金额增加30,但是两个冻结金额是相互独立的,两个事务操作各自的冻结金额,不会出现线程安全的问题。对于已经空回滚的业务,之前被阻塞的try操作恢复,继续执行try,就永远不可能confirm或cancel ,事务一直处于中间状态,这就是。解决方案:执行try操作时,应当判断cancel是否已经执行过了,如果已经执行,应当阻止空回滚后的try操作,避免悬挂。
2025-12-04 20:06:01
1013
原创 分布式事务专题2
针对不同的分布式场景业界常见的解决方案有2PC、 TCC、可靠消息最终一致性、最大努力通知这几种。2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。举例:张三和李四好久不见,老友约起聚餐,饭店老板要求先买单,才能出票。这时张三和李四分别抱怨近况不如意,囊中羞涩,都不愿意请客,这时只能AA。只有张三和李四都付款,老板才能出票安排就餐。但由于张三和李四都是铁公鸡,形成了尴尬的一幕:准
2025-12-04 20:00:34
405
原创 分布式事务专题1
事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。对于多数大型互联网应用的场景,结点众多、部署分散,而且现在的集群规模越来越大(如果选择一致性,同步的过程就会耗时很久),所以节点故障、网络故障是常态,而且要保证服务可用性达到N个9(99.99…%),并要达到良好的响应性能来提高用户体验,因此一般都会做出如下选择:保证P和A,舍弃C强一致,保证最终一致性。
2025-12-04 19:50:28
1383
原创 高斯数据库
Tablespace,即表空间,表空间是一个目录,实例中可以存在多个表空间,其中存储的是它 所包含的数据库的各种物理文件。每个表空间可以对应多个Database。Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可 分布在多个Tablespace上。Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于 1GB,则会分为多个数据文件存储。Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。
2025-12-03 19:57:02
1322
原创 Sharding-JDBC
小明是一家初创电商平台的开发人员,他负责卖家模块的功能开发,其中涉及了店铺、商品的相关业务,设计如下数据库:通过以下SQL能够获取到商品相关的店铺信息、地理区域信息:形成类似以下列表展示:随着公司业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析一下问题出现在哪儿 呢? 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到 1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。方案1:通过提升服务器
2025-12-02 17:59:50
1047
原创 计算机网络
包括TCP(传输控制协议)、UDP协议(用户数据报协议)传输层协议应用场景:TCP:可靠传输,分段、编号、流量控制、拥塞控制、客户端和服务器需要建立TCP连接,通信结束后释放连接。例如:QQ传文件、访问网站、上传下载文件UDP:不可靠传输,尽最大努力交付。一个数据包就能完成数据通信,不建立会话(域名解析IP地址,一个数据包就能完成,就是UDP),例如:QQ聊天,QQ语言聊天和视频(TCP分段编号之后会出现传输顺序问题,给客户端返回时会语无伦次),多播(一个人投屏,其他人都能收到)
2025-12-02 17:07:57
1522
原创 arthas实现类的热部署
我们要实现一个功能,前台输入1返回hello,其他输入返回world。如下,这里字符串判断相等错误使用了等号。导致前台输入1也是返回world。
2025-10-30 20:36:39
349
原创 java并发编程2
基于上述原因,并不是每次创建新线程,而是应该充分利用已有的线程资源。和享元模式思想比较类似上图中的组件:代码第4行定义了队列;代码第7行定义了锁,之所以用到锁,是因为从阻塞队列中获取任务、往阻塞队列中加入任务,会涉及到多个线程并发操作,不加锁会出现线程安全问题;代码第10、13行创建了两个waitSet,如果阻塞队列满了,则生产者需要进入fullWaitSet中去等待,如果阻塞队列没有元素了,消费者需要进入emptyWaitSet中去等待。代码第16行定义了队列容量代码23行是从队列中取任务,可以看到它里
2025-10-13 20:42:29
456
原创 Shiro
什么是 Shiro官网:http://shiro.apache.org/是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。Shiro 就是用来解决安全管理的系统化框架。
2025-10-12 23:17:09
165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅