- 博客(64)
- 收藏
- 关注
原创 Redis常用的五种数据结构详解
Redis 是一种键值(Key-Value)数据库。相对于关系型数据库(比如 MySQL),Redis 也被叫作非关系型数据库。像 MySQL 这样的关系型数据库,表的结构比较复杂,会包含很多字段,可以通过 SQL 语句,来实现非常复杂的查询需求。而 Redis 中只包含“键”和“值”两部分,只能通过“键”来查询“值”。正是因为这样简单的存储结构,也让 Redis 的读写效率非常高。除此之外,Redis 主要是作为内存数据库来使用,也就是说,数据是存储在内存中的。
2025-02-14 11:30:34
745
原创 分表分库之ShardingSphereJDBC
ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。
2024-07-20 13:39:55
1722
原创 浅谈Canal原理
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据和。应该是阿里云DTS(Data Transfer Service)的开源版本。基于Mysql的Slave协议实时dump binlog流,解析为事件发送给订阅方。单Canal instance,单DTS数据订阅通道均只支持订阅一个RDS,提供给一个消费者。可以使用canal-client客户端进行消息消费。
2024-07-20 11:21:03
1286
原创 设计模式【点滴积累】
写在前面,设计模式的核心要义,,要搞清楚我们学习设计模式并不是为了设计模式而学习设计模式,发心是为了让代码更加优雅、美观、健壮。让后来接手的人看到我们构建的“宏伟大厦”,忍不住的说一句:我草,牛B!这里借鉴很久之前看见的一句话,我等采石之人当怀大教堂之理想!(虽然我们是最底层采集石头的人,但是我们还是要有修建教堂的信念;众所周知,中世纪的大教堂,走进去让人深受震撼、宏伟壮观)。学习设计模式之前要先学习六大设计原则,搞懂了这些设计原则,设计模式自然水到渠成。
2024-07-20 10:52:57
1156
1
原创 阿里云操作日记
昨天买了一个超级便宜的阿里云服务器,2核2G,3M固定带宽,40G ESSD Entry云盘,搭载一个简单的系统,就想到了docker轻量级,易于管理其实docker很好用,第一步就是安装docker。
2024-04-25 19:03:33
1054
4
原创 canal实操应用
语句级,记录一条一条的SQL,一条SQL可能更改多行,且SQL语句中如果用到now()函数或者random()函数,会存在数据不一致的问题。行级,记录一行行的数据,记录特别细致,但是日志文件会比较大。mixed:混合模式,默认还是statement,某些情况下,如UUID()函数就会用row的方式进行处理。
2023-11-10 22:41:22
423
原创 数据结构之链表
我们常用的数据结构就这几种数组、链表、树、map(映射),而这些结构又紧密相连,互相表达;在我看来HashMap是基于数组的映射,TreeMap是基于树的映射,Java中的数组实际是JVM给你在内存(堆)中创建的连续空间,内存划分是连续的;链表的实质是一个个对象,但是对象会携带前或后(数学表示前,后,前后)元素的指针(引用,内存地址),树和链表有些相似,树是从根节点出发的,每个节点都有自己的左右孩子,还有一个父亲节点。
2023-11-07 17:13:49
326
1
原创 超详细Linux搭建Hadoop集群
总纲:1、准备3台客户机(关闭防火墙、静态IP、主机名称都设置好)2、3、配置环境变量4、安装Hadoop5、配置hadoop的环境变量6、配置集群7、群起测试。
2023-11-03 10:58:05
1791
原创 Java知识点二
由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期任然可以扩展。,因为Comparator一般用于两个元素没有实现Comparable内部比较器的情况下,使用Comparator进行这两个元素的比较。,因为需要在定义类的时候就实现这个Comparable、并重写其唯一的方法compareTo(T o),在里边填充上元素比较的逻辑。通过反射去使用一个类,首先得获取该类的字节码文件对象,也就是类型为Class类型的对象。最后小点:反射可以越过泛型检查,获取到原始方法所需要的类型。
2023-09-11 16:34:58
150
原创 多线程之基础篇(一)
管程提供了一种机制,管程可以看作一个软件模块,它是将共享的变量和对于这些共享变量的操作封装起来,形成一个具有一定接口的功能模块,进程可以调用管程来实现进程级别的并发控制。的本地方法,而该方法的最终实现在C++和C层面,要阅读JVM源码才能更深一步,暂时咱们知道最后是由操作系统给我们另起了一个线程取执行 “执行体”里面的业务。注:synchronized和 static synchronized前者是对象锁,后者是类锁,属于不同的锁,a线程加对象锁,b线程加类锁,加锁不同,a、b线程不会产生竟态条件。
2023-09-11 16:12:11
335
原创 Docker安装+利用docker安装MySQL(保姆级教程)
其实我一直都有一个疑问,与其说疑问倒不如说没有干过这事,那就是企业直接安装在Linux上的MySQL迁移到docker管理是怎样操作的?保证数据安全且用户无感?又是怎样将docker迁移到K8s管理的???
2023-04-14 21:10:15
1599
原创 docker安装MongoBD(超详细)
下载安装参考链接http://hz.itheima.com/news/20201210/175625.html。万里归来颜愈少,微笑,笑时犹带岭梅香。却道:此心安处是吾乡。data目录存放mongodb数据库文件,删除重启容器不会丢失。直接用 start.sh 文件管理mongo的启动与关闭。至此就可以开心的玩耍mongo了~看到如下图片信息,说明拉去成功了。show dbs # 查看库。然后文件写入如下的文本。,,然后执行如下命令。
2023-04-01 12:10:28
1070
原创 虚拟机设置桥接模式:静态IP
首先安装virtual box,官网下载地址:https://www.virtualbox.org/ ,其次安装并配置CentOS7,step1:关闭虚拟机,设置桥接模式,如下图;启动虚拟机,输入ifconfig......输入命令 systemctl restart network.service 重启网络服务,然后测试:可以看到无论是ping主机还是外网,均能ping通。
2023-03-22 07:09:09
1929
原创 浅谈 Java Stack 类
Deque 是双端队列的意思。所谓的双端队列,就是能在线性数据结构的两段,进行插入和删除操作。大家可以想象,由于 Stack 的定义是在同一端进,同一端出。所以,如果 Deque 可以满足在两段进行插入和删除,自然也能在同一端进行插入和删除,也就是可以以此为基础,做成一个 stack。等等!这里有问题!很多同学应该能马上反应过来了。这里有问题!因为我们根据 Java 官方推荐的方法声明的这个 stack,虽然变量名称是 stack,但它实际上是一个 deque。
2023-02-05 23:08:42
1536
原创 JVM之类加载子系统
在Java的日常应用程序开发中,类的加载几乎是由上述3种类加载器互相配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。用户自定义类加载器实现步骤:1、开发人员可以通过继承抽象类java.lang.ClassLoader类的方式,实现自己的类加载器,以满足一些特殊的需求;
2023-01-31 19:37:10
439
原创 什么是对象?
对象就是一种Java世界中传递数据的”载体“,它按照8字节对齐的方式,依托JVM的编译器转化为机器码与硬件交互,完成自己的计算需求,它在内存中的存在方式为对象头(Header),实例数据(Instance Data),对齐填充(Padding),对象头又分为MarkWord8个字节,Class Pointer4个字节,jvm采用8字节对齐技术,所以还行对齐填充4个字节,最后一个空对象Object o = new Object()的大小就是16字节.
2022-12-13 18:46:26
216
原创 小白Vue3+Nginx实现部署
记录一下自己想搭建一个自己的个人网站的心路历程,其实我刚开始的落脚点是找一个别人的半成品或者成品,再慢慢的改,想把主要的精力放在后台上面,找了很多网站之后,例如,,不是项目很久没有维护了,就是好看的没有适合我的🙃(怪我,太菜了~傻狗哽咽🐮🐴),最后还是决定用vue3自己从0开始学,开始搭建。
2022-12-09 20:40:05
12419
3
原创 最新版SwitchHosts下载安装教程
SwitchHosts开源免费,社区稳定维护,特别香~提示:以下是本篇文章正文内容,下面案例可供参考。
2022-12-08 20:30:14
33535
5
原创 JVM之垃圾收集器
垃圾收集流程图: JVM在进行GC时,并非每次都是对三个内存(新生代、老年代;方法区)区域一起回收的,大部分时候回收的都是新生代;针对HotSpot VM的实现,它里面的GC按照回收区域又分两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)部分收集(Partial GC):不是完整收集整个Java堆的垃圾新生代收集(Minor GC / Young GC):只是新生代的垃圾收集老年代收集(Major GC / Old GC):只是老年代的垃圾收集目前只有CMS GC会有单独
2022-12-04 20:47:46
151
原创 JVisualVM安装Visual GC
下载地址 VisualVM: Plugins Centers我现在常用JDK8,我的版本号是91 所以打开网址,选择如下👇选择对应的版本号之后,点击下面那个链接,之后会跳转到一个网页,找到Visual GC,点击即可下载 下载完毕之后我创建了一个文件夹来存放插件plugin,然后导入步骤:回到JVisualVM—》工具(T)—》插件—》已下载—》添加插件(A),之后知道到你刚刚下载的插件存放地址,然后倒入进来; 接下来就是安装了,安装完毕你就可以看到如下页面,棒😘
2022-12-03 18:59:31
1241
原创 JVM基础(一)
一个运行中的Java虚拟机有着一个清晰的任务,执行Java程序,程序开始执行时它才运行,程序结束时他就停止。执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。5、在大部分情况下,基于寄存器架构的指令集往往都以一地址指令,二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主。
2022-12-01 07:12:58
282
原创 高并发之深度解析对象与Sync
现在大多数虚拟机都是64位的,本文介绍的也是以64位虚拟机为基础。在主流Java虚拟机HotSpot里面,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding);为什么任何一个对象都可以成为一把锁?因为Java中所有的对象都默认继承了超类Object,而Object在JVM源码(C/C++)层面关联了一个对象ObjectMonitor,所以每个对象“天生”都带着一个对象监视器,也就是每一个被锁住的对象都会和自己的Monitor关
2022-11-28 21:04:32
526
原创 高并发之深度解析CAS [理论+案例+源码]
CAS是JDK提供的非阻塞原子性操作,它通过硬件保证了比较-更新的原子性。它是非阻塞的且自身具有原子性,也就是说这玩意儿效率更高且通过硬件保证,说明这玩意更可靠[不是synchronized,不牵扯用户态和内核态的切换,底层是CPU原语]。CAS是一条CPU的原子指令(cmpxchg指令),不会造成所谓的数据不一致问题,Java的Unsafe类提供的CAS方法(如compareAndSwapXXX)底层实现即为CPU指令cmpxchg。执行cmpxchg指令的时候,会判断当前系统是否为多核系统,如果...
2022-11-25 22:38:52
2175
原创 高并发之Java内存模型JMM
JMM本身是一种抽象的概念并不真实存在它仅仅描述的是一组约定或规范,通过这组规范定义了程序中(尤其是多线程)各个变量的读写访问方式并决定一个线程对共享变量的写入何时以及如何变成对另一个线程可见;CPU的运行并不是直接操作内存而是先把内存里边的数据读到缓存,而内存的读和写操作的时候就会造成不一致的问题。JVM规范中试图定义一种Java内存模型(Java Memory Model,简称JVM)来屏蔽掉各种硬件和操作系统的对内存访问差异,以实现让Java程序在各种平台下都能到达一致的内存访问效果。
2022-11-23 07:08:02
217
原创 实现自定义线程池
尝试着自己写一个线程池加深对JDK线程池的理解,从阻塞队列出发,协调任务的产生与线程池消费任务,用ReentrantLock锁技术,对阻塞队列是否已满,为空等情况进行阻塞挂起线程;再设计线程池,围绕任务的执行execute,与队列实现一些拒绝策略等等
2022-11-13 15:52:59
1071
原创 ThreadPool线程池
本文讲解了一下ThreadPoolExecutor,还有基于它的一些封装方法,以及线程池的一些状态,常见线程池的执行流程
2022-11-12 22:50:57
478
原创 Linux常用命令及运维记错
启动(上次踩了一个坑,关掉jenkins一直输入启动命令报Jenkins bash: serveice: command not found,其实直接重启就好了)#重启。
2022-10-24 21:49:42
473
原创 merge into 单表用法
WHEN NOT MATCHED THEN INSERT (id, column_name1, column_name2, column_name3, column_name4) VALUES(TABLE_ANME_PK.NEXTVAL, '王祖贤', '刘亦菲', '张曼玉','邱淑贞');如果表A中存在这条记录就更新这条记录 ,如果不存在这条记录 就插入新的记录 网上找了很多基本都有问题,最后找到一个论坛才测试通过,记录一下。自古逢秋悲寂寥,我言秋日胜春朝,晴空一鹤排云上,便引诗情到碧霄。
2022-10-10 21:30:00
1036
转载 一文看懂Tomcat、Nginx和Apache的区别
一文看懂Tomcat、Nginx和Apache的区别这三者都是web server,各自有什么特点?他们之间的区别是什么?nginx 和 tomcat性能上有何异同?tomcat用在Java后台程序,难道不能用apache和nginx?
2022-09-16 14:15:00
480
1
原创 git相关
把公式改成固定数字操作方法如下,复制单元格,然后右键点击选择“选择性粘贴”,把粘贴选项中的“全部”改成“数值”,就可以把公式变成固定的数值,之后与原公式无关。(8)继续输入git push origin master(将本地仓库推送到远程仓库),然后就可以在远程仓库中看到上传的项目了。(7)继续输入git commit -m ‘版本标识名称’(要简洁扼要)—将暂存区的修改提交至本地的版本库。两种情况:第一,可能显示的格式不一样,右键点击单元格,选择“单元格格式”,在分类里面调成一样的试试。
2022-09-06 06:59:40
66
原创 读藏书阁随手记
可以使用 MongoDB 等数据库来实现地理位置定位以及搜索附近的人。用户使用手机的时候会上传个人的经纬度位置,然后计算出两个人的距离。其中,基于GEO 地理位置的社交是比较有吸引力的。移动互联网时代下,出现了许多基于地理位置 LBS 的 App。比如高德地图App可以定位当前位置,也可以搜索附近的加油站;美团、饿了么 APP 可以搜索外卖店铺,并且可以按照距离排序;许多交友类 App 也具备“附近的人”搜索功能;以及出行类的滴滴打车、货拉拉、哈罗单车等。此类平台的后台都有着存储目标任务或店铺坐标数据的功能
2022-09-02 06:46:06
139
转载 云智慧压测实战分享之JMeter工具使用初探
前置处理器、后置处理器和断言等元件只能对 取样器作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。一个断言在测试树中是分等级的。如果它的父元件是请求,它就被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。以上是JMeter使用之前必须了解的一些基本信息,接下来我们将为您带来JMeter脚本录制实例
2022-08-22 19:00:00
251
空空如也
ShardingSphere分表分库数据分布不均问题
2024-04-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人