自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 安装使用zookeeper

输入: ./zkServer.cmd 命令,启动zookeeper。直接进入bin目录,使用powerShell打开。

2024-02-27 22:19:17 303

原创 Dubbo的入门实战

在互联网发展的过程,我们不能将程序只部署在一个服务器上面,为的就是防止该服务器死机导致我们的服务不能正常使用,就不能使用常规的垂直应用架构。② 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。① 当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。③ 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?看完角色功能,发布-订阅的过程就非常的简单了。

2024-02-27 21:55:21 388

原创 Map集合常用的方法

【代码】Map集合常用的方法。

2024-02-17 19:32:31 143

原创 反射学习心得

返回的都是构造器对象数组 需要用Constructor【】数组来接 右边用 类名.getConstructor()获取全部构造器(只能获取public修饰符的)public Filed【】 getDeclaredFields()获取类的全部成员变量(只要存在就能拿到)public Filed【】 getFields() 获取类的全部成员变量(只能获取public修饰的)Object提供的方法:Class c3 = 对象.getClass():加载类、获取类的字节码:class对象。

2024-02-17 19:31:37 227

原创 线程学习小结

线程创建方式一:Thread类:启动线程需要调用strat方法不能调用run方法 不要把主线程任务放在启动子线程之前 run方法可以自己重写,在线程启动的时候会自动调用。1.创建任务对象,实现类实现callable接口,重写方法,封装需要做的事情,返回需要的数据 把callable类型的对象封装成FutureTask(线程任务对象)2.交给Thead的start()方法调用,最后线程执行完毕后,通过FutureTask的get方法去获取线程任务的执行结果。

2024-02-17 19:29:53 330

原创 sql常用语句小结

约束:作用于表中字段上的规则,用于限制存储在表中的数据,保证数据库中数据的正确性、有效性和完整性(非空约束 、唯一约束、主键约束、默认约束、外键约束)字段1 字段类型 【约束】【comment 字段1注释】, //【】里面的东西可以不用加上去。字段2 字段类型 【约束】【comment 字段2注释】create table 表名()【comment 表注释】

2024-02-17 19:26:07 1587

原创 整合ssm框架的步骤

整合SSM框架可以实现前端请求的路由、数据库操作的封装和事务管理等功能,提高开发效率和代码的可维护性。SSM整合框架是指Spring+SpringMVC+MyBatis的整合框架。

2024-02-17 19:23:52 200

原创 动态代理小例子

【代码】动态代理小例子。

2024-02-16 20:59:26 87

原创 cookie和session的区别

它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中。其实并不是Session消失了,而是Session ID变了,服务器端可能还是存着你上次的Session ID及其Session 信息,只是他们是无主状态,也许一段时间后会被删除。5、Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)。

2024-02-16 20:50:32 576

原创 Java的异常体系

运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。过程一:Java程序的执行过程中如出现异常, 会生成一个异常类对象,该异常对象将被提交 给Java运行时系统, 这个过程称为抛出(throw)异常。过程二:抓,可以理解为异常的护理方式。

2024-02-16 19:18:16 298

原创 StringBuffer线程安全而StringBuilder线程不安全

而StringBuilder的append方法没有加锁,所以线程不安全,会出现多个线程抢占覆盖的现象,因此线程不安全。可以看出StringBuffer在append方法前面加了synchronized,把他变成了一个同步方法。线程之间需抢占,因此。下面我们从append方法的源码进行分析。

2024-02-16 18:48:46 466

原创 浅谈StringBuffer和StringBuilder的联系和区别

StringBuffer和StringBuilder都是用来处理字符串的类,它们的主要区别在于StringBuffer是线程安全的,而StringBuilder不是线程安全的。因此,如果在多线程环境下需要对字符串进行操作,应该使用StringBuffer;StringBuffer和StringBuilder都可以进行字符串的增删改查操作,但是StringBuilder的性能更好,因为它不需要进行同步操作。总结来说,如果在单线程环境下需要频繁对字符串进行操作,应该使用StringBuilder;

2024-02-16 18:40:01 307

原创 Java选择排序

选择排序的思想是将数组分成已排序和未排序两部分,每次从未排序部分选出最小的元素,放到已排序部分的末尾,使得已排序部分始终有序。选择排序的时间复杂度为O(n^2),它是一种不稳定的排序算法。

2024-02-02 19:35:54 89 1

原创 Java插入排序

插入排序的思想是将数组分成已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分的合适位置,使得已排序部分始终有序。插入排序的时间复杂度为O(n^2),它是一种稳定的排序算法。

2024-02-02 19:34:57 195

原创 Java的冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数组,一次比较两个元素,如果它们的顺序错误就把它们交换过来。通过多次遍历,将最大(或最小)的元素逐渐“浮”到数组的顶端,从而实现排序。冒泡排序的时间复杂度为O(n^2),它是一种稳定的排序算法。也是比较简单的算法,但是时间复杂度太高不适合使用数量多的数据进行排序。

2024-01-31 18:54:59 192

原创 Java的归并排序

归并排序是一种分治算法,它将数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并成一个整体有序的数组。归并排序的时间复杂度为O(nlogn),它是一种稳定的排序算法。

2024-01-31 18:52:40 81

原创 Java的希尔排序

希尔排序是插入排序的一种改进版本,它通过将数组分成若干个子序列来进行排序,然后对这些子序列进行插入排序。希尔排序的主要思想是先将数组分成若干个子序列,对每个子序列进行插入排序,然后逐渐减小子序列的长度,最终完成整个数组的排序。希尔排序的时间复杂度取决于步长序列的选择,通常情况下时间复杂度为O(nlogn)。

2024-01-31 18:50:44 77

原创 链表的头插法

头插法是指将新元素插入到链表的头部,即将新元素作为链表的新头节点,原来的头节点成为新节点的后继节点。这样插入的顺序是逆序的,即最后插入的元素会成为链表的头节点。其中LNode是我构建的链表的结构。按照顺序遍历输出,结果就是后面进入的数据先输出。

2024-01-17 12:51:18 476

原创 链表和数组的区别

链表和数组都是数据结构,用来存储和组织数据。它们之间的主要区别在于数据的存储方式和访问方式。总的来说需要根据使用数据多少以及类型来确定使用哪个。

2024-01-17 12:48:00 359

原创 二叉树的层次遍历

【代码】二叉树的层次遍历。

2024-01-02 14:17:07 3107

原创 Java中深度搜索

【代码】Java中深度搜索。

2023-12-18 20:59:57 247

原创 Java中二分查找

【代码】Java中二分查找。

2023-12-14 22:22:45 2780

原创 java冒泡排序

【代码】java冒泡排序。

2023-12-11 22:05:22 2788

原创 值传递和引用传递的区别

值传递和引用传递的区别。

2023-12-08 22:31:10 2609

原创 Java中jdk8新特性Lambda表达式来排序

【代码】Java中jdk8新特性Lambda表达式来排序。

2023-12-06 22:01:25 2913 1

原创 Java中堆排序

【代码】Java中堆排序。

2023-12-05 22:36:57 2966 1

原创 Java快速排序

【代码】Java快速排序。

2023-12-04 21:25:26 2803

原创 window下安装mvn

首先卸载本机的node.js。下载官方的zip安装包 即可。

2023-12-03 22:58:58 2631 1

原创 如何安装docoker

下载安装即可。

2023-12-02 22:53:07 2623 1

原创 ThreadLocal为什么是线程安全的

ThreadLocal是线程安全的,因为它为每个线程都创建了一个独立的副本,保证了线程间的数据隔离。另外,ThreadLocal内部使用了ThreadLocalMap来存储每个线程的变量副本,这个ThreadLocalMap是线程安全的,它使用了synchronized来保证多线程访问时的安全性。总之,ThreadLocal是线程安全的主要原因是它通过为每个线程创建独立的副本来保证了数据隔离,同时内部使用了线程安全的数据结构来存储每个线程的变量副本。

2023-12-01 16:02:24 3504 1

原创 配合JWT令牌实现拦截器

声明一个 LoginInterceptor类实现 HandlerInterceptor接口,在类上面加上 @Component注解交给spring容器管理。注入StringRedisTemplate来操作Redis。这里我们配合使用了Redis作为存储token令牌的数据库,对比前端传来的token。只有jwt令牌是不行的,需要我们配合拦截器去实现请求拦截。

2023-11-30 22:20:13 2881

原创 spring boot整合canal

启动springboot的时候就会监听MySQL的binlog日志了。前提是MySQL开启了binlog日志,并且创建了canal的用户赋权,可以读取binlog日志。其中binlog的日志名称不要有中文。可以在my.ini文件修改binlog的名称。在相应的变化写相应的语句的时候控制台会打印信息。首先,jdk版本最好是1.8的。在yml配置文件中,配置服务端口。

2023-11-29 22:26:20 2959 1

原创 Redis的数据类型以及常用的结构

有序集合(Sorted Set):存储一个有序的字符串集合,每个字符串都关联一个分数。3.set 跟list差不多,但是set集合中的键不能重复。哈希表(Hash):存储字段和与其相关联的值的映射表。列表(List):存储一个有序的字符串列表。字符串(String):存储一个字符串值。集合(Set):存储一个无序的字符串集合。下面是Redis的常用的数据类和命令。

2023-11-28 08:15:00 2962

原创 window下Redis的安装

双击这个就可以用本地的redis了。下一篇将Redis的常用的命令。安装window下的Redis。输入下面的命令,进入服务中。

2023-11-27 21:20:03 2675 1

原创 使用ThreadLocalUtil来获取不同线程的所需要的数据

ThreadLocalUtil可以保证线程安全,下面是实例zh'zzhz。

2023-11-25 23:33:42 2890

原创 安装canal-deployer的心得

如果只是用canal-deployer做同步ES与MySQL的增量同步。jdk只要是8.完全下载好安装包启动好。如何使用的是本地的数据库。直接运行starter.bat文件就可以了。

2023-11-23 22:58:45 2697

原创 JWT安全令牌在Web上的应用

最后一部分是签名,是为了防止篡改,保证JWT的安全性,会加入第一和第二部分以及密钥通过签名算法得到。如何检测到被篡改或者token不对以及token过期,JWT都会抛出异常。JWT可以被用于在网络上安全地传输和验证信息,提供了一种简单而有效的方式来管理用户身份和权限。有效载荷记录了携带的信息!这部分没有进行加密,是可以被破解的,不要把重要信息放在里面。在Web登录的时候,在Header上会携带自定义的字段。HandlerInterceptor接口。重写preHandle方法。下面是生成密钥的代码。

2023-11-21 22:39:24 3110

原创 windows中下载安装ES并使用SpringBoot整合ES检索功能(包含mybatis)

如果我们直接去访问数据库,会对数据库造成很大的负担。首先下载Elasticsearch,个人是不推荐去官网下载,首先就是太慢了。完成后,先进入下面config下面,然后。使用ES的前提是有jdk,如果用SpringBoot项目的话,推荐jdk11以上。我们打开kibana的浏览器窗口,找到下面的Dev Tools,点开。这时我们就可以正常使用ES的功能了,下面开始整合。以下是测试类中进行!一样的,解压后直接进入,双击kibana.bat。在创建SpringBoot项目的时候,勾选下面的依赖项。

2023-11-20 21:14:54 3205 1

原创 使用Restful的Api风格开发springBoot中一些常用的注解

Mapper // 这个是springBoot整合mybatis后的mapper接口的注解,里面写一些操作数据库的语句。@RequestMapping("/findById") 用来映射HTTP请求到特定处理方法的注解。@PostMapping("/hello/{name}") post请求。@GetMapping("/hello/{name}") get请求。@DeleteMapping("/{id}") 删除请求。查询指定用户 get查询。查询全部用户 get查询。修改用户 put修改。

2023-11-18 21:04:46 2628 1

原创 128陷阱问题

在计算机中可以表示的范围就是 -128到127,所以127==127是true,128==128是false。因为在Java中 ==比较的是地址是否相同。我们一起看一下源码,在使用Integer的静态方法valueOf的时候,我们可以把整形数据以及纯数字的String类型的数据转换成Integer的数据。因为Integer有一个缓存池,可以减少对象的创建,其中high和low都是常量。在Java中 == 是我们小白经常用来判断俩个变量的值是否相等。#下面是我在使用包装类Integer的时候突然想起来的#

2023-11-16 22:24:37 2716

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除