请允许在我们的网站上展示广告
您似乎使用了广告拦截器,请关闭广告拦截器。我们的网站依靠广告获取资金。
我已知悉
首页
🌟2024年度总结
动态
橙Bot
导航
翻译橙
标签分类
文章归档
专栏
图库
友链
留言板
1
搞定系统设计:如何设计一个限流器?
2
探究分布式哈希算法:哈希取模与一致性哈希
3
程序员小张的职场逆袭:向上反馈的力量
4
《提示词从入门到精通》读后感
5
程序员的成长建议
橙序员
累计撰写
194
篇文章
累计创建
66
个标签
累计收到
4
条评论
栏目
首页
🌟2024年度总结
动态
橙Bot
导航
翻译橙
标签分类
文章归档
专栏
图库
友链
留言板
搜索
标签搜索
成长
公众号
事务
流处理
大数据
旅行
mongo db
SUNO
github
IDEA
安全
注解
总结
求职
分布式事务
CAP
分布式系统
loadbalancer
装修
买房
前端
方案设计
AIGC
JVM
资讯
Netty
NIO
BIO
zookeeper
RocketMQ
MySQL
stable diffusion
spring MVC
spring AOP
JDBC
mybatis
logback
docker
consul
spring event
新冠
连接池
redis
运维
nginx
hiper-v
DDD
搞笑
数据库
团建
游戏
Gradle
心情
好物
eureka
spring framework
spring boot
设计模式
apache common
ShardingSphere
KAFKA
leetcode
spring cloud
feign
ES
起点
目 录
CONTENT
以下是
开发技巧
相关的文章
2023-03-03
chatGPT来面试-数据库篇
数据库的三级缓存指的是Hibernate框架中的缓存机制,包括Session缓存、SessionFactory缓存和Query缓存。Hibernate通过这三个层级的缓存提高了应用程序的性能和响应速度。相比之下,MyBatis也提供了缓存机制,包括一级缓存和二级缓存,通过本地缓存和应用程序内存缓存来提高查询性能。缓存机制是基于Java的HashMap实现的,能够有效提高查询性能和应用程序的响应速度。此外,数据库使用MVCC保证事务的一致性,通过给数据行分配版本号,实现多个事务同时对数据库进行读写操作,保证事务之间的隔离性和一致性。MVCC的实现方法包括生成新版本号、读取相应版本的数据行和标记已提交/已删除的数据行,确保事务提交后其他事务只能读取已提交的数据版本。
2023-03-03
534
0
0
开发技巧
2022-11-26
DBCP连接池原理与配置分析【三】
本文介绍了数据库连接池的创建过程和配置属性讲解。文章主要以GenericObjectPool.create()方法为切入点,详细讲解了数据库连接池的初始化过程。在连接池的创建过程中,使用了PoolableConnectionFactory.makeObject方法来创建具体的数据库连接。这里提到了池化连接PoolableConnection继承了DelegatingConnection,实现了Connection接口,Connection接口可以执行SQL语句并返回结果。文章还介绍了Connection接口的一些主要方法,包括createStatement方法用于创建Statement对象发送SQL语句到数据库。总体来说,本文详细介绍了数据库连接池的创建和配置过程。
2022-11-26
743
0
0
开发技巧
2022-11-20
DBCP连接池原理与配置分析【二】
对象连接池属性主要封装在BaseGenericObjectPool中,包括最大连接数量、连接耗尽时是否等待、最大等待时间、连接获取顺序等属性。在连接池创建过程中,maxTotal用于初始化连接池数量,blockWhenExhausted用于指定连接耗尽时是否等待获取连接,maxWaitDuration表示最大等待时间。在连接使用过程中,testOnBorrow和testOnCreate属性用于检测连接可用性。管理空闲连接的定时任务通过durationBetweenEvictionRuns属性设置,使用ScheduledThreadPoolExecutor实现定时监控和回收空闲连接。通过设置durationBetweenEvictionRuns来指定监控空闲连接的时间间隔。这些属性和方法的使用可以有效管理和优化对象连接池的性能。
2022-11-20
914
0
0
开发技巧
2022-11-13
DBCP连接池原理与配置分析【一】
该文章介绍了在日常工作中使用spring或手动创建连接时,dbcp的操作流程。通过手动创建数据连接并进行查询的示例,展示了如何设置数据源、创建连接、创建语句、执行语句等操作。通过代码走读,详细介绍了dbcp是如何创建数据库连接池并帮助在查询时获取可用的数据库连接。在这个过程中,首先需要创建一个驱动连接工厂,然后调用DriverManagerConnectionFactory创建数据库连接实例。最终通过DriverManager完成数据库连接的创建。文章通过代码实例和时序图的方式,介绍了dbcp在数据源创建和数据库连接管理中的作用。
2022-11-13
722
0
0
开发技巧
2022-11-05
REDIS面试问题
总结:本文分析了Redis的阻塞队列、常用数据结构以及守护线程实现方式。在阻塞队列中,Redis通过ready_keys和blocking_keys两个链表和事件循环来处理阻塞事件;常用数据结构有string、hash、list和set,分别用于缓存、存储对象、分布式栈和分布式集合;守护线程通过redission实现了分布式锁的自动续约。此外,文章还探讨了Redis的连锁设置、存储大量数据和持久化方式,以及与Elasticsearch的对比。Redis适用于简单高性能的key-value存储,而Elasticsearch适用于全文检索场景。需要根据实际需求选择合适的存储方案。
2022-11-05
614
0
0
开发技巧
2022-10-30
小站点如何做到服务冷备?
本文介绍了如何通过宝塔面板和rclone工具实现网站冷备。首先通过宝塔将整站备份,并通过FTP将备份文件同步到异地机器。具体设置包括修改FTP配置文件、配置PassivePortRange和ForcePassiveIP,并添加shell指令将备份文件拷贝到FTP目录。接着介绍了使用rclone工具同步已备份的FTP文件到本地,rclone可以实现从远程服务端复制、同步、剪切到本地客户端。最后给出了在Windows系统上编写本地同步脚本的示例。整个过程实现了0成本或者低成本网站冷备的操作,对于想要实现网站备份的用户提供了一种简便有效的方法。
2022-10-30
640
0
0
开发技巧
2022-10-27
同一机器,不同端口的泛域名解析如何做到?
nginx反向代理是机器间通信的一种方式,通过代理服务进行间接通信。代理分为正向代理和反向代理,前者常用于个人电脑上,后者常用于服务器端进行负载均衡。NGINX作为常见的反向代理工具,通过修改nginx.conf配置文件来实现对服务端的代理。配置文件结构包括全局块、events块、http块、server块和location块,其中设置了监听的主机端口、服务名称、反向代理逻辑等。实现对泛域名的反向代理可以通过前缀解析方式,将不同前缀对应的请求反向代理到同一机器的不同端口上。如果涉及不同主机的反向代理,需要在不同server块中写入相应的反向代理逻辑。要实现这些功能,需要了解nginx的配置文件结构和块指令作用域。
2022-10-27
789
0
0
开发技巧
2022-10-22
大话DDD-领域实体与实现
这段内容主要介绍了在日常开发过程中,如何利用领域驱动设计(DDD)的思想,将业务逻辑聚合并与外部服务隔离的方法。通过引入实体、Repository和Domain Service等概念,将编程转变为面向抽象接口的编程,避免了面向具体实现的编程。在实现业务逻辑时,应该将用户抽象为领域实体,并在service层对用户的状态进行改变。此外,还介绍了DTO、VO和DO的概念及应用场景,以及Repository和Domain Service的作用。最后指出,在处理需求时,应该先总览业务问题,划分领域对象并明确信息和职责边界,然后在应用层根据业务描述编排实体和domain service,最后实现与下层数据访问、RPC调用等的交互。通过这样的设计思路,可以有效降低代码之间的耦合度,提高代码的可维护性和扩展性。
2022-10-22
677
0
3
开发技巧
2022-10-16
大话DDD:从POJO到DP的转变
该内容总结了在业务场景中用户登录注册功能的实现方法以及问题的解决方案。在传统POJO和领域对象之间的区别和优缺点进行了对比,并介绍了领域原型的实现原则。针对实现领域原型的三个主要原则,包括让隐性的概念显像化、让隐性的上下文显像化、封装多对象行为。最后讨论了Entity和Value Object的区别,以及Domain Primitive和Entity之间的区别,主要在于对象的逻辑是否有状态。整体内容重点强调了面向对象设计方法对系统建模的重要性,以及从业务需求中找到关键的业务对象(Entity和Value Object)的重要性。
2022-10-16
699
0
0
开发技巧
2022-10-09
MVCC相关问答
该文总结了关于间隙锁和readView的问题。首先介绍了间隙锁中索引为string时如何确定范围,字符串排序规则等。其次讨论了readView的开启时间和创建时机,解释了不同事务中readView的生成方式。最后通过一个示例说明了在事务中对teacherId进行更新时,事务A会读取到的值。通过MVCC的版本特性,解释了事务A对自身的readView不可见,因此在无锁select查询时仍会读取到更新前的数值。
2022-10-09
603
0
0
开发技巧
2022-09-21
SQL索引的优先级
MySQL在索引使用时,通常会将数据最小的字段放在前面,以最能确定结果的字段为主,以减小检索范围。在查询过程中,MySQL会自动调整字段顺序以优化索引顺序。举例说明了在查询指令表中某一指令在最近3个月未完成结果时,如何通过优化索引和缩小查询范围来提高查询效率。在多条件查询中,MySQL会选择扫描行数最少的索引,以减少查询时间。通过调整索引顺序、添加联合索引或缩小查询范围等方式,可以有效提高查询效率。
2022-09-21
1057
0
0
开发技巧
2022-09-18
【leetcode】刷题笔记-回溯法与贪心算法
总结:回溯法是一种搜索尝试过程,主要用于在搜索过程中寻找问题的解,当条件不满足时会返回尝试别的路径,常用于解决复杂问题。回溯法的基本步骤包括确定问题的解空间、确定扩展搜索规则以及深度优先搜索解空间等。递归和非递归是两种实现回溯法的方法,通过探索每一步可选择使用左括号或右括号的方式,及时过滤无效解并确保生成一组有效结果。通过分析回溯法的框架和实现,可以更好地理解其工作原理和应用场景。回溯法可以灵活地解决括号生成等问题,为解决其他问题提供了一种通用解题方法。
2022-09-18
693
0
0
开发技巧
2022-09-18
【leetcode】刷题笔记-分治法与动态规划
分治法是一种算法设计策略,将一个大问题分解为多个相同的子问题,递归地解决这些子问题,然后将结果合并得到原问题的解。分治法适用于问题具有规模缩小容易解决、可以分解为小问题且具有最优子结构性质、子问题解可合并为原问题解、子问题相互独立的情况。算法步骤包括分解、解决和合并。常见应用有二分搜索、归并排序、快速排序、大整数乘法等。以二分搜索为例,通过每次取中点比较大小,逐渐缩小查找范围,时间复杂度为O(logn)。另外,以寻找两个正序数组中的中位数为例,通过比较两个数组中的中位数来确定中位数所在位置,时间复杂度要求为O(log(m+n))。
2022-09-18
596
0
1
开发技巧
2022-09-18
【leetcode】刷题笔记-双指针法
本文主要介绍了三个算法问题的解决方法。首先是针对给定 n 个非负整数,找出可以容纳最多水的容器的问题,采用双指针法进行解决。其次是针对一个包含 n 个整数的数组,判断是否存在三个元素使得它们的和为0的问题,同样采用双指针法解决。最后是合并两个有序数组的问题,将一个排列好的数组合并到另一个排列好的数组中并保持顺序有序,也是采用双指针法进行解决。在解决过程中,采用了双指针移动、排序、判断和去重等操作,较为高效地解决了这三个问题。
2022-09-18
609
0
0
开发技巧
2022-09-09
kafka分区策略
Kafka在消息发送和消费过程中通过实现不同的分区策略来确保消息均匀地分发到不同的topic和partition上,以及消费者均匀地消费不同的partition。生产者的分区策略包括默认分区策略、轮询式分区策略和粘性分区策略,消费者的分区策略包括范围分配策略、轮询分配策略和粘性分配策略。当topic/partition数量或消费者数量变化时,会触发重平衡(rebalance)操作,通过加入组和组信息同步来重新分配消费者要消费的分区,确保各分区能够重新分配到消费者进行消费。整体而言,Kafka通过不同的分区策略和重平衡操作来保证消息生产和消费的高并发性和均衡性。
2022-09-09
663
0
0
开发技巧
2022-09-04
行为型设计模式实战【四】-模板、访问者
模板方法模式是一种定义一个算法的骨架,让子类可以重新定义算法的某些步骤的设计模式。优点包括封装不变部分、扩展可变部分、提取公共代码、行为由父类控制等,适用于多个子类有公共方法且逻辑相近、重要复杂的算法等场景。但是模板方法模式也存在缺点,如子类影响父类结果、代码阅读难度等。角色包括抽象类和具体类,父类调用子类方法的方法有限制,推荐曲线救国的方式实现父类依赖于子类的场景。以一个简单的展示程序为例,展示了模板方法模式的实现过程。
2022-09-04
585
0
0
开发技巧
2022-09-03
行为型设计模式实战【三】-观察者、策略、状态
观察者模式是定义对象间一种一对多的依赖关系,当一个对象状态改变时,所有依赖它的对象都得到通知并更新。优点是抽象耦合易于扩展,缺点是开发效率、运行效率可能受影响。常见场景包括文件系统、猫鼠游戏、ATM取钱、广播收音机等。角色包括观察对象、具体观察对象、观察者、具体观察者。Spring实现中可以通过抽象类和接口实现观察者模式,示例程序展示了观察者会生成数值对象,并以不同方式显示数值。如DigitObserver以数字形式显示,GraphObserver以图示形式显示。观察者模式在实际项目中应用广泛。
2022-09-03
631
0
0
开发技巧
2022-08-28
行为型设计模式实战【二】-迭代器、中介者、备忘录
迭代器模式是一种可以顺序访问集合元素的设计模式,在该模式中包含了迭代器、具体迭代器、集合和具体集合等角色。迭代器模式已经融入到Java的基本API中,使得程序设计更加轻松便捷。使用迭代器模式可以避免自己编写迭代器,而直接使用Java提供的Iterator接口来满足需求。在一个示例程序中,通过实现迭代器模式,将书放入书架并按顺序显示书的名字。通过Iterator接口、BookShelf、BookShelfIterator、Book等组件的实现,实现了迭代器模式的具体功能。迭代器模式在各个聚集类中得到了广泛的应用,包括List、Queue、Set等。通过迭代器模式的应用,实现了集合元素的顺序访问和展示。
2022-08-28
600
0
0
开发技巧
2022-08-27
行为型设计模式实战【一】-责任链、命令、解释器
本文介绍了行为型设计模式中的责任链模式,该模式定义了多个对象有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系。文章详细介绍了责任链模式的优缺点和注意事项,并给出了在Spring框架中的实现示例。通过具体的代码示例,展示了如何使用责任链模式来处理不同类型的问题,通过规定不同的处理者针对不同类型的问题进行处理。在实现过程中,定义了处理者、具体处理者和请求者三种角色,并给出了相应的代码实现。通过责任链模式,实现了对问题的解决过程进行屏蔽,请求者只需要将请求发送给责任链的第一个处理者,最终会得到处理结果。责任链模式的核心是解耦请求发送者和接收者,同时也可以作为一种补救模式来使用。
2022-08-27
550
0
0
开发技巧
2022-08-21
结构型设计模式实战【二】-外观、享元、代理、装饰器
外观/门面模式提供了一个统一的高层次接口,使得子系统更易于使用,减少了系统的相互依赖,提高了灵活性和安全性。然而,其缺点是不符合开闭原则,对系统修改比较困难。使用场景包括复杂模块或子系统的外界访问、预防低水平人员带来的风险等。最佳实践是将复杂系统封装为一个门面,提高项目结构简单性和扩展性。在示例中,通过多个角色完成从邮件中获取用户名字的数据库类、编写html文件的类以及提供高层接口的窗口类,展示了门面模式在实际应用中的作用。通过门面模式的使用,可以约束项目成员的代码质量,提升整体项目质量。
2022-08-21
583
0
0
开发技巧
2022-08-21
spring cloud组件介绍
spring-cloud是一个用于构建和管理分布式系统的常用实用程序项目,其中包括了各种组件和工具。其中涵盖了插件和依赖管理的spring-cloud-build、节点与消息代理连接的spring-cloud-bus、断路器防止服务雪崩的spring-cloud-circuitbreaker等等。这些组件提供了一致的开发人员体验,可以轻松构建连接外部系统的应用程序。同时,还提供了任务调度功能、外部化配置支持等,可以帮助开发人员更好地管理和运行分布式系统。总体而言,spring-cloud为开发人员提供了丰富的功能和工具,使他们能够更加高效地构建和管理分布式系统。
2022-08-21
627
0
0
开发技巧
2022-08-20
结构型设计模式实战【一】-适配器, 桥接与组合
结构型设计模式包括适配器模式、桥接模式、组合模式、外观模式、享元模式、代理模式、装饰器模式。适配器模式用于转换类的接口,使得原本不兼容的接口可以协同工作。适配器模式的优点在于增加类的透明性、提高复用度和灵活性。适配器模式适用于修改已投产接口、系统扩展使用新类等情况。桥接模式将类的抽象部分和实现分离,实现了抽象和实现的解耦及扩展能力。桥接模式适用于不适用继承、接口或抽象类不稳定的场景。总体而言,结构型设计模式可以有效提高系统的灵活性和扩展性,在实际应用中能解决接口不兼容、需求变更等问题。
2022-08-20
600
0
0
开发技巧
2022-08-14
创建型设计模式实战-工厂、单例、建造者
创建型设计模式包括工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式,其中使用Spring实现创建型模式时需要了解bean的作用域。在Spring中,singleton指的是每次从同一个IOC容器中返回同一个bean对象,而prototype每次返回一个新的实例。另外,session作用范围更长,application作用范围更广,websocket在整个WebSocket中有效。单例模式的优点是减少内存开支和系统性能开销,但扩展困难、对测试不利,与单一职责原则冲突。适用场景包括需要唯一对象的环境、共享访问点或数据、资源消耗过多等。在Spring中,默认情况下bean是单例的,也可以通过@Configuration注解指定单例生成器。通过单例控制器示例,验证两个bean是否为同一实例。最佳实践是在需要唯一实例的情况下采用单例模式,如在Spring中每个Bean默认都是单例。
2022-08-14
654
0
0
开发技巧
2022-08-06
Apache Common 的简单介绍
Apache Commons组件是一个提供可重用Java组件列表的开源项目,旨在为Java开发者提供丰富实用的组件库。其中包括众多常用组件,如BCEL、BeanUtils、BSF、CLI、Collections、Compress等,涵盖了字节码处理、反射、命令行解析、集合框架、文件处理、加密库、数据库连接池等功能。这些组件不仅提供了易于使用的API和丰富的功能实现,还大大简化了Java开发过程中的常见任务。通过Apache Commons组件,开发者可以更高效地实现各种功能,提高代码重用性和开发效率。Apache Commons组件的涵盖面广泛,涉及到了各个方面的Java开发需求,为Java开发者提供了丰富的选择和强大的支持。
2022-08-06
870
0
0
开发技巧
2022-08-02
ShardingSphere简单介绍
Apache ShardingSphere是一个由JDBC、Proxy和Sidecar组成的产品,支持独立部署和混合部署。ShardingSphere-JDBC是一个轻量级Java框架,提供额外服务,适用于任何基于JDBC的ORM框架。ShardingSphere-Proxy是一个数据库代理端,透明化提供服务,支持MySQL/PostgreSQL协议的客户端。ShardingSphere-Scaling是一个通用数据接入迁移和弹性伸缩解决方案。ShardingSphere-Sidecar是一个云原生数据库代理。ShardingSphere提供多种功能点,兼容多种数据库,支持熔断和限流等。数据分片提供标准分片算法、复合分片算法和Hint分片算法等。支持本地事务、XA事务和柔性事务,以及读写分离和高可用等特性。ShardingSphere-Scaling支持数据迁移和扩缩容,但不支持无主键表扩缩容。数据加密、影子库、可观察性等功能也得到支持。Sharding Proxy提供数据分片策略和分片操作支持。
2022-08-02
691
0
0
开发技巧
1
2
3
4
5