- 博客(23)
- 收藏
- 关注
原创 MyBatis最佳实践
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。
2023-01-25 09:15:00
553
原创 ORM框架的发展历史与MyBatis的高级应用
ORM( Object Relational Mapping) ,也就是对象与关系的映射,对象是程序里面的对象,关系是它与数据库里面的数据的关系,也就是说,ORM框架帮助我们解决的问题是程序对象和关系型数据库的相互映射的问题O:对象M:映射R:关系型数据库Hibernate的出现大大简化了我们的数据库操作,同时也能够更好的应对更加复杂的业务场景,Hibernate具有如下的特点根据数据库方言自定生成SQL,移植性好自动管理连接资源。
2023-01-19 13:43:58
296
原创 线程与协程
线程与协程概念进程【进程间通信(IPC)】线程协程区别场景计算密集型IO密集型两种操作如何优化哪些语言对多协程的支持概念进程二进制可执行文件在计算机内存里的一个运行实例。比如.exe文件是个类,进程就是new出来的那个实例,计算机资源分配的基本单位。进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。【进程间通信
2021-12-28 10:05:35
5652
原创 istio服务网格
istio服务网格服务网格介绍什么是istio名词解析Sidecar 是什么Sidecar 如何工作istio特点使用场景工作说明为什么要使用istioistio 使用教程安装istio部署示例应用通过检查返回的页面标题对外开放应用程序确定入站 IP 和端口设置入站 IP 地址和端口其他平台的环境配置验证外部访问查看Kiali仪表板服务构成实现效果智能路由监控分布式追踪访问日志熔断使用JWT进行访问控制我们应该始终使用服务网格吗?服务网格介绍现代应用程序通常被设计成微服务的分布式集合,每个服务执行一些
2021-12-24 10:47:25
597
原创 Kubernetes核心概念介绍
Kubernetes核心概念介绍什么是Kubernetes?Kubernetes发展历程Kubernetes核心功能点核心概念
2021-12-21 16:04:19
199
原创 log4j漏洞 紧急缓解措施与检测方案
#log4j漏洞# 影响范围紧急缓解措施检测方案影响范围Log4j2.x <= 2.14.1 版本区间紧急缓解措施修改jvm参数 -Dlog4j2.formatMsgNoLookups=true修改配置log4j2.formatMsgNoLookups=True将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true检测方案由于攻击者在攻击过程中可能使用 DNSLog 进行漏洞探测,建议企业可以通过流量监测设备
2021-12-10 17:55:28
2853
原创 Mysql索引问题
Mysql索引问题1.页分裂问题,数据不连续导致也分裂有什么弊端?怎么避免或者有什么机制维护这个连续?2.索引用到文件排序 Using filesort,该怎么优化?3.一个3层的树,为什么要做三次io?为什么一次不能查出所有数据的节点以及相对应数据3-1.为什么要固定Page大小,而不是需要多少数据,读取多少数据(按需读取)?3-2.为什么不把Page设置得更大?这样一次读取到的数据不就更多了吗?4.如果一条数据1k,一个页可以放16条数据,如果删除其中两条,这两条硬盘空间会不会被回收?如果回收,会造成页
2021-12-10 14:39:14
772
原创 Java中HashMap的get和put算法时间复杂度空间复杂度是多少?
Java中HashMap的get和put算法时间复杂度空间复杂度是多少?在JDK8之前在JDK8之后解释在JDK8之前用单链表HashMap作为一个桶来储存存在哈希碰撞的元素。无论是get还是put方法,步骤都可以分为第一步找桶(找桶时间都为O(1),可以忽略),第二步在桶内进行操作(查找或者插入),首先最好的情况为没有任何哈希碰撞的情况,即所有元素分配在不同的桶,最坏的情况为所有元素碰撞在一起,即全部被分配在同一个桶。所以情况复杂度如下:GET最好情况:O(1)GET最坏情况:O(N) (即
2021-12-10 14:20:45
5728
5
原创 rabbitmq队列最大长度问题
rabbitmq队列最大长度问题rabbitmq最大长度问题:通过死信队列实现订单延时取消,当请求量大的时候,比如618的时候,队列里的消息不会满吗?不会把服务器撑爆吗?会,rabbitMQ如果达到配置内存的阀值,发布者会被阻塞,但是消费者不会被阻塞,消费者继续消费消息,当内存降低到阀值以下后,发布者继续开始发布消息...
2021-12-10 14:12:19
1725
原创 MySQL 事务提交是否存在数据丢失的可能?
MySQl 事务提交时,会先存放与 log buffer 中,如果此时系统正好宕机了,会不会造成已提交的事务丢失呢?当事务提交时,根据配置的参数 innodb_flush_log_at_trx_commit 来决定是否刷盘。如果innodb_flush_log_at_trx_commit 参数配置为 0,表示事务提交时,不进行 redo log buffer 的刷盘操作;如果配置为 1,表示事务提交时,会将此时事务所对应的 redo log 所在的 redo log block 从内存写入到磁盘,同
2021-12-10 14:10:22
863
原创 Elasticsearch为什么查询速度快
Elasticsearch为什么查询速度快ElasticsearchElasticsearch为什么查询速度快正排索引倒排索引为什么Elasticsearch不适合做数据存储ElasticsearchElasticsearch为什么查询速度快正排索引倒排索引Term Dictionary如何高效的在这个索引结构中查询到 li 呢,结合我们之前的经验,只要我们将 Term 有序排列,便可以使用二叉树搜索树的数据结构在 o(logn) 下查询到数据。将一个文本拆分成一个一个独立Term 的过
2021-12-10 13:57:00
236
原创 Elasticsearch基本概念和基本用法
Elasticsearch基本概念和使用方式Elasticsearch基本概念与关系型数据库的对应名称Synchronized三种用法Elasticsearch使用方式插入查询更新删除各个语言中的ES框架javaphppythonElasticsearch基本概念cluster代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻
2021-12-10 13:50:16
1451
原创 java中的锁:synchronized
java中的锁机制synchronizedJava对象头在Hotspot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充;Java对象头是实现synchronized的锁对象的基础,一般而言,synchronized使用的锁对象是存储在Java对象头里。class oopDesc { friend class VMStructs; private: volatile markOop _mark;//理解为对象头 union _metadata {
2021-12-10 13:38:38
287
原创 MySql数据库MVCC和锁机制
数据库行锁表锁和锁竞争##查看自动提交模式show session variables like ‘autocommit’;show global variables like ‘autocommit’;– 修改自动提交 为手动提交set global autocommit=0;SET SESSION autocommit=0;– 索引项– 开启事务BEGIN TRANSACTION;SELECT * FROM member WHERE id = 1 for UPDATE;COMMIT
2021-12-08 11:35:06
777
原创 CompletableFuture 使用实例
List<String> list=new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); List<Object> result = new ArrayList();CompletableFuture<List<Object>>[] futures = new CompletableFut...
2021-11-25 15:43:38
1020
原创 事务与分布式事务
事务与分布式事务事务的基本概念本地事务Undo Log 如何保障事务的原子性?Redo Log如何保障事务的持久性?事务的四个隔离级别事务在项目中的应用(@transactional注解)@Transactional注解可以作用于哪些地方?几种常见的失效场景事务传播机制注解实现原理分布式事务什么是分布式事务典型场景理论基础BASE定理分布式事务分类刚性事务柔性事务一图搞懂 分布式事务事务的基本概念事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。本地
2021-11-25 12:23:18
3199
原创 DDD(domain driven design)-领域驱动设计
@[TOC](DDD(domain driven design)-领域驱动设计)领域驱动设计概述DDD(Domain Driven Design)即领域驱动设计,核心是不断提炼通用语言并用于与领域专家等团队所有成员交流,并用代码来表达出一个与通用语言一致的领域模型。背景这些年随着设备以及技术的发展,软件架构发生了很多变化,从最初的单机(BS/CS)架构到后面的集中式架构,再到如今的微服务架构, 现在基本可以说是微服务架构盛行的时代,DDD早在2004年就由埃里克·埃文斯提出,但一直处于一个不愠不火
2021-11-25 11:24:26
1075
原创 MyBatis Plus MetaObjectHandler多租户增改自动填充租户ID
MyBatis Plus MetaObjectHandler多租户增改自动填充租户ID多租户系统增改自动填充租户ID此实例基于springboot + mybatis plus实现MyMetaObjectHander 自动填充设置类应用实体类@TableFieldfill = FieldFill.INSERTfill = FieldFill.UPDATEfill = FieldFill.INSERT_UPDATE保存上下文租户实体信息及工具类多租户系统增改自动填充租户ID多租户系统根据租户ID来进行数据
2021-08-04 11:45:58
2601
1
转载 27道大厂高频Spring面试题,95%的人答不上
27道大厂高频Spring面试题1. 什么是Spring框架?Spring框架有哪些主要模块?2. 使用Spring框架能带来哪些好处?3.什么是控制反转(IOC)?什么是依赖注入?4.在Java中依赖注入有哪些方式?5.BeanFactory和ApplicationContext有什么区别?6. Spring提供几种配置方式来设置元数据?7.如何使用XML配置的方式配置Spring?8.Spring提供哪些配置形式?9.怎样用注解的方式配置Spring?10.请解释Spring Bean的生命周期?11.
2021-07-30 18:16:43
365
原创 MyBatis Plus实现根据租户进行动态数据源切换实例以及遇到的坑
MyBaitis欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markd
2021-07-30 16:01:39
987
原创 spark初学使用日记
任务是读取一张 会员ID+167个字段、124万数据的表,去连接查询一张 手机号码+会员ID、350多万数据的表,把会员ID替换成手机号后导出成csv文件,在此之前这两份数据是已经转换成了spark的标准数据格式。废话不多上代码Spark 类import java.util.Propertiesimport com.typesafe.config.ConfigFactoryimport org.apache.spark.SparkConfimport org.apache.spark.
2020-06-30 16:45:06
239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人