自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 lambda表达式

【代码】lambda表达式。

2024-05-09 09:30:02 391

原创 jconsole的使用

已安装jdk。

2024-03-21 14:36:01 220

原创 CAP、BASE理论

一个分布式架构最多只能同时满足一致性、可用性和分区容错性这三项中的两项。好的可用性主要是指系统能够很好地为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。例如:有两个节点N1和N2,节点N1和N2部署在不同的服务器上,N1和N2之间网络可以连通。在满足一致性的情况下,N1和N2的数据是一样的。在满足可用性的情况下,用户不管是请求N1还是请求N2,都能立即得到相应。在满足分区容错性的情况下,N1和N2有任何一方宕机或者网络不通,都不会影响N1和N2彼此之间的正常运作。

2024-01-26 20:28:01 899

原创 redis

2.修改/usr/redis/redis.conf。

2024-01-20 01:52:25 329

原创 进入docker容器,vi: command not found

进入docker容器,查看文件执行vim 命令,报错 vim: command not found。搜索解决方案,说执行一下 apt-get install vim命令,然后又报错 Unable to locate package vim。

2024-01-20 01:21:05 462

原创 redis

redis可以将查询结果缓存,减少与数据库的交互。很多操作都是读操作,很多时候都是反复查询一个东西,就可以将查询结果缓存到内存中,需要的时候从缓存里取,不需要查询数据库。从内存中读取比从数据库查询也要快得多。redis支持的数据类型:string、list、hash、sort、zsort。

2024-01-10 18:57:24 1013

原创 mysql

InnoDB引擎支持事务,通过MVCC和锁实现的。MyISAM引擎不支持事务。行式数据库,每一行的数据是在一起的;列式数据库,每一列的数据是在一起的。行格式:compact等。compact行格式有两个部分:每行数据是一个record,record通过页的方式管理起来,一个页是16k,一个页中存放多条数据。页与页之间通过双向链表连接在一起,每一页的数据通过单向指针连接在一起。

2024-01-09 23:18:16 971

原创 HashMap

否:说明是链表结构,循环链表,当前键值对的key是否和链表中某个Node的key相同,如果相同,覆盖旧的value;如果不算当前节点,链表长度已经是8,算上当前节点,链表长度是9,就大于链表树化成红黑树的阈值8,那么就要把这个9个节点的链表改成红黑树了。再将双向链表改成红黑树,首先将第一个节点作为红黑树的根节点,然后依次判断下一个节点应该处于红黑树的哪个位置(根据红黑树的特点)。3、重新计算节点新的数组下标,链表中的节点新的下标值有两种情况(上面已经说明),因此就将这个一个链表拆分成了两个链表。

2023-12-20 22:58:51 382

转载 Java的clone()方法

如果两个Person对象的name的地址值相同, 说明两个对象的name都指向同一个String对象, 也就是浅拷贝, 而如果两个对象的name的地址值不同, 那么就说明指向不同的String对象, 也就是在拷贝Person对象的时候, 同时拷贝了name引用的String对象, 也就是深拷贝。如果只是用Object中默认的clone方法,是浅拷贝的。深拷贝:根据Person源对象中的name指向的字符串对象创建一个新的相同的字符串对象,将这个新字符串对象的引用赋给新拷贝的Person对象的name字段。

2023-12-15 20:51:44 217

原创 Java泛型

泛型有子类型化的规则,List是原生态类型List的一个子类型,而不是参数化类型List的子类型。例如,如果一个方法的参数是List类型,则调用该方法时传递List是可以的,而传递List就会报错。有了泛型之后,就可以告诉编译器每个集合中接受哪些数据类型,编译器自动为插入进行转换,并在编译时告知是否插入了类型错误的对象。原生态类型逃避了类型检查,可以将任意类型的对象放入原生态类型的集合中。参数化类型则明确告知编译器集合可以接受的对象类型。

2023-12-14 15:26:54 338

原创 记录一下遇到的问题

1、启动Springboot项目,看控制台输出,没有启动tomcat,没找到原因是什么。没解决这个问题,最后重新创建了一个项目就是可以的。

2023-12-12 17:31:46 342

原创 Java常量池

Java代码在进行Javac编译的时候,并不像C和C++那样有“连接”这一步骤,而是在虚拟机加载Class文件的时候进行动态连接。也就是说,在Class文件中并不会保存各个方法、字段最终在内存中的内存入口地址,也就无法直接被虚拟机使用。当虚拟机做类加载时,将会从常量池获得对应的符号引用,再在类创建时或运行时解析、翻译到具体的内存地址之中。常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近Java语言层面的常量概念,如文本字符串、被声明为final的常量值等。4)方法的名称和描述符。

2023-12-12 09:07:17 316

转载 HashMap 原理及线程不安全详解

反观长度 16 或者其他 2 的幂,Length-1 的值是所有二进制位全为 1,这种情况下,index 的结果等同于 HashCode 后几位的值。原因在于 HashMap 的数组下标算法,当 put 一个值时,会首先计算出 hash code,根据 hash code 决定放在数组的位置,考虑效率问题并没有采用取模的方式,而是采用按位与的方式。但是,因为 HashMap 的长度是有限的,当插入的 Entry 越来越多时,再完美的 Hash 函数也难免会出现 index 冲突的情况。

2023-12-06 17:36:15 39

原创 Java按位运算符

【代码】Java按位运算符。

2023-12-06 17:17:53 359

原创 java的synchronized关键字

锁一共有4种状态,级别从低到高一次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态。synchronize用的锁是存储在Java对象头里的。Mark Word的状态变化。

2023-12-02 01:21:11 329

原创 java的volatile关键字

修饰变量initFlag,上述代码指令重排序优化后,可能行3在行2之前执行,此时并未执行初始化,但initFlag是true,就会执行行5,此时就会有问题。查看程序的字节码,给volatile修饰的变量赋值,赋值后,字节码会多了一个“lock xxxxx”操作,这个操作的作用相当于一个内存屏障,重排序时。普通变量仅能保证在方法的执行过程中所有依赖赋值结果的地方能获取到正确的结果,但不能保证变量赋值操作的顺序与程序代码中的执行顺序一致。前面的已经执行完成,后面的不允许重排序到前面,达到禁止指令重排序的结果。

2023-12-01 14:11:11 339

原创 JVM内存模型

程序计数器、本地方法栈、虚拟机栈、堆、方法区。

2023-11-30 21:35:47 353

原创 java类的加载过程

类加载的过程,有加载、验证、准备、解析和初始化五个阶段。

2023-11-30 16:05:20 367

原创 lombok包的@Data注解

Data注解使用的很多,之前就知道在类上面使用了这个注解之后,就不用写属性的get、set方法了,编译后的class文件已有属性的get、set方法了。其实不止如此,使用了@Data注解,还自动重写了equals、canEqual、hashCode、toString四个方法,加上@Data注解编译一下看一下class文件即可知道。

2023-11-30 02:00:13 352

原创 JVM内存模型

func1方法执行完,该方法在栈中存储的信息会删除,但是p指向了堆中的一块内存,因此需要GC垃圾回收。java的基础数据类型都是值类型,指针也是值类型,因而是直接存在内存,而不是存地址去寻址。方法区:存储静态的方法、变量、类加载器等等全局的数据信息。栈、本地方法栈、程序计数器三部分是线程私有的。本地方法栈:存储C++的native方法。程序计数器:存储程序当前运行的位置。堆、方法区两部分是全局共享的。

2023-09-03 17:06:46 28

原创 docker搭建kafka集群

放弃了,刚查了一下kafka需要4G的内存,我的阿里云试用服务器一共才2G的内存。5.查看启动结果,发现启动失败,查看日志,报空间不足。1.拉取zookeeper镜像。2.运行zookeeper镜像。4.启动三个broker。3.拉取kafka镜像。

2023-08-06 12:19:10 85 1

原创 docker安装redis

最后:遇到 NOAUTH Authentication required.错误的时候我上网查了一下,查到的结果说是要看一下redis.conf配置文件里的密码,我查了一下,我的配置密码行本身已经是注释掉的,也就是不需要提供密码的,就是这一行 # requirepass foobared。(我是在网上下载了一份redis.conf,没有使用参考博文里的)注释掉redis.conf文件中的#bind 127.0.0.1 -::1行,如果不注释掉的话,redis启动日志会报warning下方有截图。

2023-08-05 18:21:29 51 1

原创 docker安装mysql

我这里查看到的root账号已经是有localhost和%两条记录。按照参照的博文,如果只有localhost一条记录的话还需要再有一步操作,修改密码认证方式。3.运行mysql镜像,这一步和参照博文有不同,是这一行-v /docker/mysql/conf:/etc/mysql/conf.d \。我使用的是阿里云服务器,需要在控制台安全组对3306端口开放。参照以上博文,但是有一些不一样,记录一下我自己的安装过程。使用navicat测试连接一下,连接成功,至此完成。4.查看mysql镜像是否运行成功。

2023-08-05 13:04:43 54 1

原创 mysql事务隔离

举个例子,一个班级有100名学生,录入的信息是50名男生 50名女生,其中一位同学的信息录错了,他是男生但是录入的信息却是女生,一个事务执行了update操作,将这位同学的性别将女生修改为了男生。在这个过程中另一个事务曾先后读取这个班级的男生人数和女生人数,并且刚好在修改前读的女生人数是50,修改后读的男生人数是51,这位修改信息的同学统计男生和统计女生都被统计到了。这会产生脏读,如果t2在处理过程中,出现了问题,最终没有提交而是回滚了,但是t1却在时间单位3读取到了t2回滚掉的值。有两个事务t1和t2。

2023-08-04 10:37:11 27 1

转载 win10安装redis及redis客户端使用方法

转载:win10安装redis及redis客户端使用方法_win10 redis客户端_蒙娜丽莎的Java的博客-CSDN博客

2023-07-26 22:46:28 68 1

转载 Redis的分布式锁详解

转载:Redis的分布式锁详解_redis分布式锁_张维鹏的博客-CSDN博客

2023-07-26 22:42:57 23 1

原创 ThreadPoolTaskExecutor

待完善。

2023-07-26 22:40:47 23 1

转载 @PostConstruct注解详解

类初始化调用顺序:(1)构造方法Constructor。

2023-07-26 21:48:58 104 1

原创 注解待完善

假设类UserController有个成员变量userService被@Autowired修饰,那么userService的注入是在UserController的构造方法之后执行的。如果想在UserController对象生成时候完成某些初始化操作,而这些操作又依赖注入的对象,就可以用@PostConstruct来实现。

2023-07-25 14:31:25 19

原创 子类构造方法为什么必须调用父类的构造方法。

子类继承父类,如果子类的构造方法第一行没有显示的调用父类的构造方法,也会默认调用父类无参的构造方法。如果父类没有无参的构造方法,必须显示调用父类有参的构造方法,否则编译不通过。super()只能放在构造方法的第一行,否则编译不通过。子类继承父类,会继承到父类中的数据,所以必须要看父类是怎么对自己的数据进行初始化的。子类在进行对象初始化时,先调用父类的构造方法,这就是子类实例化的过程。为什么子类构造方法必须调用父类的构造方法?

2023-07-25 11:34:19 931

原创 Collections类

singletonList()方法,仅包含指定对象的不可变列表。swap(list, int i, int j)方法,i和j的元素交换位置。fill(list, obj)方法,list中的元素都是obj了。replace(list, oldval, newval)方法。reverse(list)方法,list中的元素顺序反转。sort(list, comparator)方法,排序。copy(List desc, List src)方法。min(collection)方法。sort(list)方法,排序。

2023-07-25 10:55:08 21

原创 docker部署一个web项目

最开始,通过浏览器8090不能访问项目,网上一顿查,试了好几种办法都不行,忽然想到自己用的是阿里云服务器,需要在阿里云控制台安全组里对8090端口放行,然后就可以访问了。4.和war包同一目录下,创建dockerfile文件,写dockerfile文件。1.本地开发环境,idea打war包。2.将war包使用scp上传到服务器。此时docker ps。

2023-07-23 10:29:42 106

原创 docker一些命令

参考:停止容器删除容器。

2023-07-22 16:19:50 30

原创 阿里云linux服务器部署一个web项目

一、准备服务器首先从阿里云官网购买使适用的服务器并启动,修改实例密码,后重启1.1 连接服务器可以使用SecureCRTPortable或xshell等工具连接以SecureCRTPortable为例输入公网ip输入之前更改后的实例密码连接成功二、配置JDK使用mkdir命令自己建立一个文件夹,用来放置jdk例如:/usr/java/jdk使用rz命令上传本地文件当服务器若没有则需要安装yum -y install lrzsz 注意:一定要在~下安装,不然会提示yu_阿里云搭建web服务器。

2023-07-16 14:46:50 86 1

原创 Linux命令

1.删除文件命令2.vim命令使用命令 vim test.txt。如果当前路径下已有test.txt就会打开,如果没有就会创建。按INSERT键进入输入模式,此时看左下方会有-- INSERT --输入完成后,按ESC键退出输入模式英文模式下,按SHIFT+:组合,保存并退出。就可以看到当前目录下已经有了test.txt文件。3.mkdir创建目录4.上传本地文件到linux服务器通过cmd打开命令行,scp E:\tmp\1.txt [email protected]:/root。

2023-07-16 14:31:49 38 1

转载 windows下启动kafka

版权声明:本文为CSDN博主「happy是一头小猪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/zhangzhangjava/article/details/129339568。将conf目录下的zoo_sample.cfg复制一份重命名为zoo.cfg。修改server.properties配置文件。2.下载zookeepe并启动;待解决:第四条消息,中文乱码了。3.下载kafka并启动;4.创建一个topic;

2023-07-08 10:27:50 34

原创 maven assembly插件打tar包并启动

首先打一个tar包启动这个tar包。

2023-04-12 20:28:56 396

空空如也

空空如也

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

TA关注的人

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