自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mundo.wang的个人博客

Java小白记录基础知识

  • 博客(26)
  • 收藏
  • 关注

原创 Go语言结构转换

不过,这并不是最佳解决方案,因为这需要我们手动去写反射的代码,并且在每个项目模块中都需要对其进行引入。的值是任意类型,因此需要确保转换时类型匹配,否则会导致运行时错误,我们要对每个字段进行类型断言。非常难写且不通用,如果字段一多,代码量会是难以控制的,如果有嵌套字段,又会增加代码的复杂度。互相转换,二者定义的字段名必须一致,否则该字段也会被忽略。的反射机制,动态地获取了结构体对象的字段和值,并转换为。这里入参可以是对象本身,也可以是对象的引用。,放置结构体对象本身,或者它的引用都可以。

2024-04-09 17:32:47 441

原创 JetBrains IDE字体设置详解与最佳实践

在Goland或者其他JetBrains编译器里,设置中Editor下有三个修改字体的地方,经常容易把它们混淆,这里我将对他们进行统一的讲解与规范。在Mac中,不用调节设置也很美观了,下面说一下在windows中应该怎么调好一些。

2024-03-15 20:37:25 1253

原创 【Go语言RPC实战】深入理解Go语言中的RPC规则与实现流程

RPC(远程过程调用)是一种在分布式系统中进行通信的方式,它允许一个计算机程序调用另一个计算机上的子程序,而无需了解底层网络细节。在涉及RPC的应用中,通常有三个角色:服务端开发人员、客户端调用人员和设计RPC接口规范的人员。以上代码演示了一个简单的RPC示例,服务端实现了一个Multiply方法用于乘法运算,客户端通过RPC调用该方法并获取结果。下面是一个简单的示例代码,演示了如何使用Go语言的net/rpc包实现基本的RPC通信。

2023-07-25 17:19:11 1297

原创 RabbitMQ相关知识展览

Kafka:分布式消息系统,高吞吐量。RabbitMQ:基于AMQP协议,erlang语言开发,稳定性好。RocketMQ:基于JMS,阿里巴巴产品,目前交由Apache基金会。ActiveMQ:基于JMS。

2023-02-02 10:46:08 493

原创 Redis内存管理与数据一致性

除了string数据类型有setex可以在设置数据同时设置过期时间外,其余的数据类型都需要依靠expire命令设置过期时间,这个命令是针对key的。redis通过一个过期字典(可以看做hash表)保存数据过期的时间。过期字典的键指向redis中某个key,过期字典的值是保存了键所指向的redis的key的过期时间(毫秒精度)其在C语言中的代码是这样的1.3 过期数据如何删除?当redis中的数据过期了,redis的过期策略是什么?过期策略通常有以下三种:定时过期每个设置过期时间的key都要创建一个定

2022-12-06 17:23:16 3616

原创 记录五道笔试题遇到的SQL题

四张SQL表如下,下面是问题与答案。题1:查询所有商品名称为“Java编程思想”且店铺名称为“天天出版社”的订单IDSQL语句题2:查询购买商品类型最多的三位用户的昵称,类型数量相同则按照昵称升序排序SQL语句题3:为所有价格超过100元的商品打五折,如果打折后小于100则置为100SQL语句题4:查询所有订单中商品总额(商品数量*商品价格)都大于500的用户昵称第一种SQL语句第二种SQL语句题5:哪些店铺的类型为“书籍”的商品平均价格高于系统中所有书籍商品的平均价格,查询这些店铺的

2022-12-04 13:53:09 414

原创 黑马课件:docker实用篇

*数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。

2022-12-01 17:23:47 2671

原创 Java程序员操作Redis的常用方式

上面使用jedis能完美还原redis的所有基础操作命令,但我总感觉不太优雅,一是因为Jedis的方法实在是太多了,完全背下这么多操作命令也不太现实,费时费力;二是因为我们开发Java的web项目,都是使用Spring框架完成的,而Jedis是Redis官方推出的,并没有与Spring这个大家族融合在一起。为了解决这个问题,Spring官方推出了一个SpringDataRedis。提供了一个高度封装的RedisTemplate类,自动管理连接池。

2022-12-01 15:44:16 3910

原创 Redis数据类型与操作命令

redis的数据是 key-value 形式的键值对,其中 key 其实都是字符串的形式,而 value 的数据类型,也就是数据的保存形式,底层实现的方式就用到了数据结构。所以我们一直说的“redis五种数据结构”,严格上来说是“redis五种数据类型”。redis数据类型和底层数据结构的对应关系图如下可以看出,redis3.0与之后的版本,对象底层数据结构是有所不同的。

2022-11-22 14:37:17 5131

原创 JDK8特性:Stream流

这个stream流和io流是完全不同的概念。io流的工作是硬盘到内存以及内存到硬盘的操作,而stream流是针对集合的一种管道操作。类似于mybatis-plus可以简化sql操作,stream流也可以简化对集合的操作。

2022-11-17 20:30:05 10743

原创 JDK8特性:lambda表达式

如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口一个接口里只有一个抽象方法,且接口被@Functionalinterface注解修饰时,这个接口就是函数式接口。}然后我们在主方法里通过lambda表达式实现了这个接口。Animals animals =(speed) -> System . out . println("小猫跑步速度为" + speed + "米每秒");}和下面这种用匿名内部类实现接口的逻辑是一样的。

2022-11-16 21:59:34 10021

原创 线程池ThreadPoolExecutor

这是Executors为我们封装好的4种常见功能线程池。阿里巴巴开发手册告诉我们:不建议使用这四个功能线程池,而是采用直接使用ThreadPoolExecutor的方式,这样我们可以更加明确线程池的执行规则,规避资源耗尽的风险。所以对于这四种线程池,了解即可。

2022-11-14 14:06:30 10053

原创 Java分布式、微服务概念

微服务不是一个框架,而是一种架构思想。微服务架构的系统是个分布式系统,按业务领域划分为独立的服务单元。将一个大的应用,拆分成多个小模块,每个模块有自己功能和职责,模块间可以进行交互。服务间通过http协议进行通信。微服务模块可以用不同的编程语言。微服务必须使用集中化管理,后面所说的Eureka等组件就是管理微服务的工具。

2022-11-13 02:33:40 12887 1

原创 MySQL进阶部分:MVCC

MVCC:Multi-Version Concurrency Control,多版本并发控制处理什么事情:提高数据库的并发性能,处理读写冲突(实现无锁并发)当前读:共享锁、排它锁(读锁、写锁),会对读取的记录加锁,其他事务无法修改它。快照读:不加锁的select,基于MVCC实现,读到的可能不是数据的最新版本。MVCC是一个理想模型,快照读是MySQL实现MVCC非阻塞读功能的实现。MVCC为每个修改保存一个版本,读操作只读该事务开始前的数据库的快照。

2022-11-11 11:13:36 6762

原创 MySQL进阶部分:SQL优化

explain分析sql的执行计划在大批量插入数据时,对于InnoDB的表,有以下几种提高导入效率方式。

2022-11-11 11:12:08 6955

原创 MySQL基础知识:存储引擎、锁

MySQL支持多种存储引擎,不同的存储引擎有着各自的特点和适用场景,选择合适的存储引擎可以提升数据库性能和可靠性。常见的三种存储引擎是InnoDB、MyISAM和Memory。

2022-11-11 11:10:34 6784

原创 MySQL基础知识:索引、事务

not null、unique、主键、外键:每张表必须有一个主键,非空唯一。:解决了什么问题?表冗余的问题。(数据库三大范式)引入外键时,会有一个父表和子表的概念有外键字段的表为子表(或者可以叫主表和从表)

2022-11-11 11:05:01 10140

原创 MySQL的主键 自增 or UUID or 雪花

在分布式系统中,需要对大量的数据进行唯一标识,有时会对数据采用分库分表,所以我们需要一个全局id主键id的需要保证的一些要求。主键id需要保证全局唯一、趋势递增、单调递增、信息安全、含时间戳的要求。

2022-11-11 10:56:52 8654

原创 关于HTTP网络协议

为什么要有包的概念?在网络中传递信息都是以二进制形式存在的,接收方(服务器或浏览器)接收到请求或响应数据时,第一时间就是解析二进制数据。有时传输信息的数据量比较巨大,导致接收方很难获取相应数据。网络协议包是一组有规律的二进制数据,在这组数据存在固定空间,每一个空间专门存放特定信息,这样接收方在接收网络协议包之后就可以到固定空间得到对应信息。例如网络协议包出现极大降低了接收方对接收二进制数据编译难度请求行请求地址、请求方式请求头get请求参数信息、cookie信息空白行没有内容,起到隔离作用请求体

2022-11-09 18:15:05 11169

原创 面试常问:redis缓存击穿/穿透/雪崩

缓存穿透:指缓存服务器中没有要查的数据,数据库中也没有,导致业务系统每次都绕过缓存服务器去查询下游数据库,缓存服务器失去了应有的作用。缓存击穿:指的是某一个经常被访问的key缓存过期的时候,大量请求访问这个key,会瞬间穿透缓存服务器同时访问数据库,导致数据库过载的情况。缓存雪崩:指缓存服务器大量缓存同时过期,或者缓存服务器宕机了,所有的请求直接访问到数据库,造成数据库过载很高,影响性能甚至宕机的情况。

2022-11-08 21:59:37 10291

原创 Spring全家桶的常用注解详解

例如这里,前端给我们传的是id,我们通过@RequestParam接收了id,但是方法形参可以任意,比如我们这里写的是userId。如果注解只有一个String类型属性,它的名字必须为value,我们在使用注解,给这个属性赋值时可以不用写字段名。定义一个切入点表达式。注解可以用在类,方法,字段,参数,变量,构造方法或包上;注解也可以用在注解上。:使用此注解标注的类,可以作为配置文件使用,可以使用@Bean对象注入到容器。表明使用了@Inherited注解的注解,所标记的类的子类也会拥有这个注解。

2022-11-01 14:53:49 10133

原创 后端开发面试中常问的JVM知识点

双亲委派机制:加载一个类时,首先通过启动类加载器加载,如果加载不到,再通过扩展类加载器加载,如果还没有加载到,再通过应用类加载器加载。它的工作原理:每次在修改并取得共享变量结果后都会进入CAS判断,如果返回false,重新读取,直到返回true,表示本线程改取变量数值的时候,其他线程没有改变这个值,退出循环。对象首先分配在伊甸园,伊甸园空间不足时,触发minor gc,伊甸园和from存活的对象使用copy复制到to中,存活的对象年龄+1,交换from和to。

2022-10-27 10:21:51 6726

原创 互联网通信流程(含servlet)

如今的Java开发人员实际上可以称为“Spring开发人员”,所有的开发流程的内部细节都由Spring框架封装好的,所以我们在实际开发中就很少考虑其中的细节。然而若想成为一名高级开发工程师,而不是码农,必须对其底层的实现逻辑了如指掌。依鄙人所见,servlet就是Java做web开发的精髓所在,完全掌握servlet非常重要。先放一张大图这就是总览了,当然有些地方的技术是比较老旧的。

2022-10-19 11:19:11 7115

原创 Cookie、session、token、JWT

cookie存储在客户端,请求后,服务器发送回浏览器,浏览器在下次向同一服务器发送请求时,作为参数携带,并发送到服务器上。cookie是一个具体的东西,指的是浏览器实现的一种数据存储功能。cookie是不可跨域的,每个cookie绑定单一的域名。cookie是name=value键值对。session是基于cookie实现的,session存储在服务器端,sessionID 会被存储到客户端的cookie中。

2022-10-14 17:06:31 10462

原创 MySQL基础知识:SQL语法

varchar和char的区别:二者最大长度都是255,varchar可变长度,可以节省空间,但是动态分配空间速度可能很慢,创建时必须手动定义长度。MySQL对B+树进行了优化,在其基础上增加了一个指向相邻叶子节点的链表指针,提高区间访问的性能。行锁:对一张表执行update、delete、insert语句,会自动给涉及的数据集加排它锁(写锁)。如果对某一张表加了读锁,不会阻塞其它线程的读操作,但是会阻塞其它线程的写操作。如果对某一张表加了写锁,不仅会阻塞其它线程的读操作,也会阻塞其它线程的写操作。

2022-09-26 10:59:37 12221

原创 Linux(centos7)安装软件

更改nacos配置文件/usr/local/nacos/conf/application.properties。切到tomcat的bin目录 cd /usr/local/apache-tomcat-8.5.35/bin。输入http://ip:8848/nacos  账号密码均为nacos,登录nacos控制台。运行/usr/local/nacos/conf/nacos-mysql.sql。更改/usr/local/nacos/bin/startup.sh。

2022-09-25 22:05:44 14217 1

空空如也

空空如也

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

TA关注的人

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