- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot+MyBatis实现数据源的动态切换
在分布式系统中,为满足高并发等需求,我们有时候可能会设置多个数据源,同一个系统需要在多个数据源间进行切换,来实现不同的业务逻辑。基于SpringMVC结构的项目,只要在Dao层数据访问之前完成数据源的切换即可。Spring内置了一个AbstractRoutingDataSource,它可以把多个数据源配置成一个Map,然后,根据不同的key返回不同的数据源。因为AbstractRoutingDataSource也是一个DataSource接口,因此,应用程序可以先设置好key, 访问数据库的代码就可以从A
2025-01-21 22:25:28
696
原创 Java并发编程原理一
java是一个支持多线程的开发语言。多线程可以在包含多个CPU核心的机器上同时处理多个不同的任务,优化资源的使用率,提升程序的效率。在一些对性能要求比较高场合,多线程是java程序调优的重要方面。并发编程三要素原子性:即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。有序性:程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)可见性:当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获取到最新的值。
2023-11-06 23:07:31
134
原创 JVM常用命令及常用调试工具
另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。
2023-09-07 18:16:33
197
原创 JVM类加载器
为什么要自定义?隔离加载类模块隔离,把类加载到不同的应用选中。比如tomcat这类web应用服务器,内部自定义了好几中类加载器,用于隔离web应用服务器上的不同应用程序。修改类加载方式除了Bootstrap加载器外,其他的加载并非一定要引入。根据实际情况在某个时间点按需进行动态加载。扩展加载源比如还可以从数据库、网络、或其他终端上加载防止源码泄漏java代码容易被编译和篡改,可以进行编译加密,类加载需要自定义还原加密字节码。如何实现。
2023-08-31 17:36:51
87
原创 JVM 垃圾回收
这样做的原因是, 如果某个对象的finalize()方法执行缓慢, 或者更极端地发生了死循环, 将很可能导 致F-Queue队列中的其他对象永久处于等待, 甚至导致整个内存回收子系统的崩溃。如果内存空间不足了,就会回收这些对象的内存。为目标的收集器,CMS收集器的关注点尽可能缩短垃圾收集时用户线程的停顿时间,停顿时间越短就越适合与用户交互的程序,目前很大一部分的java应用几种在互联网的B/S系统服务器上,这类应用尤其注重服务器的响应速度,系统停顿时间最短,给用户带来良好的体验,CMS收集器使用的算法是。
2023-08-31 17:35:25
71
原创 JVM内存架构
包括8种基本数据类型、对象引用(reference类型)和returnAddress类型(指向一条字节码指令的地址)。其中64位长度的long和double类型的数据会占用2个局部变量空间(Slot),其余的数据类型只占用1个。
2023-08-24 14:20:30
65
原创 Kubernetes基础组件
Kubernetes基础组件与安装配置Kubernetes基础组件控制平面组件(Control Plane Components)kube-api-serveretcdKubernetes基础组件一个 Kubernetes 集群包含 集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点和至少一个主节点。工作节点托管作为应用程序组件的 Pod 。主节点管理集群中的工作节点和 Pod 。多个主节点用于为集群提供故障转移和高可用性。本章概述交付
2022-02-09 17:51:06
2391
原创 wait() 和 notify() 该怎么使用?
一文秒懂 Java wait() 和 notify() 方法https://www.twle.cn/c/yufei/javatm/javatm-basic-notify-wait.html
2022-01-28 15:40:21
439
原创 MyBatis框架简介
MyBatis框架简介什么是ORM?什么是MyBatis?MyBatis的历史Mybatis的优势什么是ORM?ORM 是 Object-Relation-Mapping(对象关系映射)的缩写1、ORM完成了面向对象的编程语言到关系型数据的映射。2、当ORM框架完成映射后,程序员既可以利⽤⾯向对象程序设计语⾔的简单易⽤性,⼜可以利⽤关系型数据库的技术优势。3、ORM把关系数据库包装成⾯向对象的模型。ORM框架是⾯向对象设计语⾔与关系数据库发展不同步时的中间解决⽅案。采⽤ORM框架后,应⽤程序不再直
2021-12-23 10:43:17
375
原创 harbor企业级部署
harbor企业级部署harbor企业级部署官网文档操作步骤:1、解压barbor2、获取证书颁发机构3、获取服务器证书4、生成注册表主机的证书5、为 Docker 配置服务器证书、密钥和 CA6、配置端口,修改barbor.yml文件7、安装harbor8、访问UI进行验证往新搭建的harbor上上传镜像harbor企业级部署默认情况下,harbor不提供证书。可以在没有安全性的情况下部署harbor,就可以通过HTTP方式连接到harbor。但是,只有在没有连接到外部internet的测试环境或开发
2021-12-10 16:52:38
1951
原创 IDEA安装docker插件
IDEA安装docker插件IDEA安装docker插件配置IDEAIDEA安装docker插件修改docker-100服务器docker.service服务信息,允许其他主机远程访问100服务器的docker。vi /usr/lib/systemd/system/docker.service# 在ExecStart行最后增加,开放远程主机访问权限。-H tcp://0.0.0.0:2375最后增加修改内容如下:ExecStart=/usr/bin/dockerd -H fd:// --co
2021-11-29 17:42:05
10739
原创 Docker学习轨迹五(安装docker私服)
安装docker私服安装docker私服主机配置docker官方私服搭建官网地址配置操作企业私服搭建安装harbor安装docker私服在使用maven管理jar包依赖的时候,为了避免每次都从中央仓库拉取依赖包,使用了nexus做了代理仓库。docker镜像仓库与nexus私服仓库作用类似,用于将打包好的镜像保存在仓库中方便开发、测试、生产环境镜像拉取存储,减轻环境部署需要的相应操作。主机配置配置两台主机,一台docker主机,一台harbor私服主机主机名IP地址说明doc
2021-11-29 17:23:06
255
原创 Docker学习轨迹六(docker镜像构建以及dockerfile的使用)
DockerFileDockerFile如何创建镜像?基于已有的镜像创建使用dockerfile构建镜像官网地址dockerfile基本结构dockerfile文件说明dockerfile常见指令build命令例:修改mysql官网镜像时区DockerFile如何创建镜像?docker创建镜像主要有三种:基于已有的镜像创建基于dockerfile创建基于本地模板导入基于已有的镜像创建docker commit:从容器创建一个新的镜像语法:docker commit [OPTIONS
2021-11-29 17:22:30
332
原创 Docker学习轨迹四(docker-compose)
docker-compose官网地址https://docs.docker.com/compose/compose-file/概述docker-compose(docker容器编排技术)在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具。
2021-11-22 10:51:03
3157
原创 Docker学习轨迹三(docker数据卷)
docker数据卷什么是数据卷?当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布,我们希望在运行过程钟产生的部分数据是可以持久化的的,而且容器之间我们希望能够实现数据共享。通俗地来说,docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删
2021-11-15 23:08:16
755
原创 Docker学习轨迹二(docker常用命令)
Docker常用命令Docker镜像(image)Docker Hub地址Docker镜像常用命令pull命令images命令save命令load命令search命令(了解)inspect命令history命令tag命令rmi 命令清理镜像Docker容器(container)docker容器常用命令新建并启动容器容器日志删除容器列出容器创建容器启动、重启、终止容器进入容器查看容器更新容器杀掉容器docker常用命令汇总(图)Docker镜像(image)Docker Hub地址Docker Hub
2021-11-10 23:24:15
1024
原创 cookie、session、token的区别
cookie、session、token的区别跨域认证的问题cookiecookie的缺点ssessionsession缺点cookie与session区别tokensession与tokentoken与cookie跨域认证的问题互联网服务离不开用户认证。一般流程是下面这样1、用户向服务器发送用户名和密码。2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。3、服务器向用户返回一个 session_id,写入用户的 Cookie。4、用户随后的每一次请
2021-03-23 10:57:31
86
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人