自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字节跳动平台的智能体搭建

智能体=AI代调教:用来补齐用户不会表达的部分;:用来让智能体有更多能力;:用来让智能体的工作流程更严谨;:用来让我们的智能体知道更多知识(比如公司内部的信息)。

2025-01-04 15:28:53 402

原创 MQ消息队列

微服务中基于Feign的调用就属于同步方式。

2025-01-04 12:00:35 1006

原创 springcloud篇3-docker需熟练掌握的知识点

以MySQL镜像为例。

2025-01-03 17:00:35 994 1

原创 springcloud篇2-feign、gateway

说明:(1)日志级别NONE-没有日志BASIC-记录请求的开始和结束时间HEADERS-记录请求的开始和结束时、请求头和响应头FULL-记录请求的开始和结束时、请求头和响应头、请求体和响应体但该方式不推荐,会导致紧耦合。之前的微服务允许任何的访问,不安全,需要添加一个网关(功能包括身份认证和权限校验、服务路由、负载均衡、请求限流)。

2024-12-27 11:38:01 1228

原创 springcloud篇1(微服务技术栈、服务拆分与远程调用、Eureka、Nacos)

另外,为了监控,还有“分布式日志服务”和“系统监控链路追踪”:最后,利用Jenkins技术对微服务进行自动化编译,再利用docker进行打包形成镜像,再基于k8s或者rancher去实现自动化的部署,这一套机制称为持续集成。微服务技术栈包括微服务技术和持续集成。

2024-12-26 10:01:14 1974

原创 Redis分布式锁

Redisson是封装好的实现Redis分布式锁的依赖,可以直接使用(意思是前面实现锁的代码其实都不用自己写)。使用方法如下。

2024-12-02 22:36:38 661

原创 redis缓存

缓存存在数据一致性问题,如数据库里的数据改变,缓存中的数据未及时更新。这需要在代码中解决该问题。对于低一致性需求的数据可以选择“内存淘汰”和“超时剔除”策略,对于高一致性需求的数据可以选择“主动更新”策略,并以“超时剔除”为兜底方案。主动更新策略又可以有以下三种实现方式:企业中使用的最多的是01Cache Aside Pattern。

2024-11-30 13:26:54 670

原创 Java的LinkedList、HashSet与TreeSet

LinkedList是Java集合框架中的一个重要类,它实现了List接口。与ArrayList不同,(1)LinkedList是基于双向链表的数据结构,因此它在进行插入、删除操作时通常比ArrayList更快,但在随机访问元素时可能会比较慢。(2)LinkedList 不是线程安全的。如果需要在多线程环境中使用,可以使用 Collections.synchronizedList 方法来创建一个同步的列表。add(E e): 在链表末尾添加元素。

2024-11-29 19:04:09 1243

原创 redis实战:集群的session问题

以用户登录为例。用户登录时的信息保存在tomcat内存的session中(session都有一个sessionId,用户发送请求时的cookie携带sessionId帮助找到对应的session)。但是,这不适用于集群模式,会存在session共享问题。:多台tomcat并不共享session存储空间,当请求切换到不同tomcat服务器时会导致数据丢失的问题。需要找到一个替代session的东西,session的替代方案应该满足:(1)数据共享;(2)内存存储;(3)key、value结构。

2024-11-29 10:55:24 512

原创 Redis(配置文件属性解析)

tcp-backlog是一个TCP连接的队列,主要用于解决高并发场景下客户端慢连接问题。配置文件中的“511”就是队列的长度,对联与TCP的三次握手有关,不同的linux内核,backlog队列中存放的元素(客户端连接)类型是不同的。linux内核2.2版本之前:队列中存放的是已完成第一次握手的所有客户端连接。linux内核2.2版本之后:TCP系统中维护了两个队列。一个存放未完成三次握手的队列,一个存放已完成三次握手的队列。

2024-11-28 18:08:39 1112

原创 Redis(概念、IO模型、多路选择算法、安装和启停)

关系型数据库是典型的行存储数据库,存在的问题是,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。Redis在生产中使用的最多的是用作数据缓存。服务器先在缓存中查询数据,查到则返回,查不到则到DB中查找。

2024-11-27 21:36:21 1103

原创 VMWare克隆虚拟机

克隆时虚拟机处于关闭状态。

2024-11-27 19:45:14 340

原创 Docker与Kubernetes

Docker是一个用于构建运行传送应用程序的平台,即把一个个运用程序打包成集装箱并传输到任何需要的地方。有了Docker,就可以把运用程序与它运行时需要的各种依赖包和第三方软件库、应用程序与环境变量、配置文件和启动命令打包在一起,以便在任何环境种都可以正确的运行。

2024-11-05 18:29:20 1784 1

原创 Go语言基础语法

因此,这里的索引是指字节在字符串中的位置,而不是字符在字符串中的位置(对于多字节字符,后者可能更有用,但 Go 的 range 在字符串上不提供这种索引)。在 Go 语言中,chan 关键字用于创建通道(channel),通道是一种用于在 goroutine 之间进行通信的类型化管道。关闭通道后,无法再向通道发送数据,但可以继续从通道接收数据,直到通道为空。在上面的例子中,index 是元素的索引,而 value 是对应索引的元素值。在这个例子中,key 是映射的键,而 value 是与键关联的值。

2024-11-03 14:30:09 1159

原创 微服务架构(Dubbo+Zookeeper)

而且,对于服务提供方和服务消费者来说,还有可能兼具这两种角色,即需要提供服务,又需要消费服务,通过统一管理起来,可以有效地优化内部应用对服务发布/使用的流程的管理,服务注册中心可以通过特定协议来完成服务对外的统一。RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。对于服务消费方,最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。

2024-04-17 17:07:26 1427

原创 java的volatile

并且当一个线程读取一个volatile变量时,它会从主内存中读取,而不是从自己的工作内存中读取(当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中。在Java中,线程之间对内存写入操作的可见性是一个重要的问题,因为每个线程都有自己的工作内存,并且线程之间共享主内存。此外,synchronized还确保了内存可见性,即当一个线程释放锁时,它会将修改后的共享变量的值刷新到主内存中,使得其他线程在获取锁并读取共享变量时,能够看到最新的值。但是,volatile并。

2024-04-16 16:50:54 541

原创 vue一些知识补充(标签的ref属性、computed和watch的区别、vuex、css中的transform属性、Javascript的setInterval())

vuex是一个专门为vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态。scale(x,y):定义2D缩放,x表示水平缩放的倍数,y表示垂直缩放的倍数 ,y是一个可选参数,如果没有设置y值,则表示x,y两个方向上的缩放倍数是一样的,并以x为准。

2023-09-26 17:24:57 416

转载 流程图(FlowChart)

页面=操作+内容,操作是需要用户触发的,包括链接、按钮、表单等等。用户通过这些操作,看到同一个页面上不同的内容,或者跳转到其他的页面。页面也有分类:注意有些操作可能不会跳转到一个实际的页面,而是有可能发个短信、发个邮件等,这些也需要被表现出来。(3)同一流程图中,符号大小需要保持一致,同时连接线不能交叉,连接线不能无辜弯曲;俗称为泳道图,在样子上像个泳道,可以有横向的泳道,也可以有纵向的泳道。页面流程图的目标:表现用户的不同的操作指令下不同页面流转关系。常见的流程图有业务流程图和页面流程图。

2023-07-23 14:49:46 2591

原创 java的线程池

例如,自定义一个线程池,核心线程有3个,临时线程有3个,阻塞队列长度为3。当有8个任务提交时,线程池现创建3个线程执行前3个任务,第4,5,6个任务阻塞队列中排队等待,线程池再创建2个临时线程取处理任务7和任务8。当有10个任务提交时,线程池现创建3个线程执行前3个任务,第4,5,6个任务阻塞队列中排队等待,线程池再创建3个临时线程取处理任务7、8、9,任务10会触发任务拒绝策略。核心线程数量,线程池中最大线程数量、空闲时间(值)、空闲时间(单位)、阻塞队列、创建线程的方式、要执行的任务过多时的解决方案。

2023-06-16 14:35:44 652

原创 java中的时间

JDK8解决了这一问题,JDK8的时间日期对象都是不可变的,如果想修改时间,原来对象的时间不会改变,而是返回一个新的对象。计算机中的时间原点为1970年1月1日00:00:00.中国(东八区)的时间原点为1970年1月1日08:00:00.currentTimeMillis()方法的返回值是指从时间原点开始到现在经过的毫秒的值。注意上图中的横线上的类是JDK7的类,上图展示了JDK7的时间相关类与JDK8的时间相关类之间的关系。(1)数组中的月份范围为0~11,如果取出来的是0,那么实际上是1月。

2023-06-16 13:50:38 4844

原创 java的网络编程

原因:“你好”.getBytes()使用的是默认的GBK编码方法,二在Server的socket.getInputStream中使用的是字节流的读取方式,一次读一个字节,再转成char就会乱码。特殊IP地址127.0.0.1,也可以是localhost,是回送地址也称回环地址,也称本机IP,永远只会寻找当前所在本机。TCP协议通信之前要保证连接已经建立,在通信的两端各建立一个Socket对象,通过Socket产生IO流来进行网络通信。注意把接收端的端口号去掉,令其随机获得一个端口号,否则端口冲突会报错。

2023-06-15 19:35:15 641

原创 java的生产者消费者代码实现(使用wait()、notify()、notifyAll())、阻塞队列实现

可以看到,运行结果显示阻塞队列大小为1,生产者却可以连续生产,其实并不是这样。出现这种状况的原因如下图,生产者放产品和打印输出语句并不一定一次性执行完,由于多个线程并发执行导致这种错觉。阻塞队列相当于连接生产者和消费者之间的通道,相当于缓冲池,可以理解为缓冲区大小大于1,且是一个队列。例如,设生产者消费者问题中的缓冲池大小为1。接口不能直接定义对象,需要用上图中两个蓝色框中的两个实现类定义阻塞队列的对象。生产者消费者问题也是等待唤醒机制,是一个十分经典的多线程协作的模式。二、阻塞队列实现等待唤醒机制。

2023-06-15 17:24:22 1173

原创 java中的多线程、同步代码块、同步方法、锁

说明:上述代码中实现了Runnable接口的类是放在了新建的Thread类中的,可以理解为实现了Runnable接口的类里面是线程要执行的任务,将任务交给执行线程。还需要注意,为了区分线程,需要给线程取名setName(),但是在实现了Runnable接口的类的run()方法不能直接使用getName()来获取线程名字,它是Thread类中的方法,解决方式是使用Thread的静态方法currentThread()来获取执行run()的当前线程,然后再使用getName()方法。创建子类的对象,并启动线程。

2023-06-14 20:11:03 1773

原创 java的转换流、压缩流、序列化流、打印流

而序列化流存储java对象打开文件是看不懂的,而无法直接修改,这样可以防止暂时存储在文件中的数据被用户修改。序列化流(ObjectOutputStream,也称对象操作输出流)与反序列化流(ObjectInputStream,也称对象操作输入流)属于字节流,也是高级流,是对基本流的包装。注意:可以看出实现了Serializable接口不用重写方法,因为Serializable接口中没有抽象方法,是标记型接口,一旦实现了这个接口,就表示当前的类可以被序列化。再例如,运用序列化流和反序列化流读写多个对象。

2023-06-14 11:40:14 972

原创 java的缓冲流

注意:缓冲流并不能直接关联文件操作文件中的数据,它还是要关联基本流的(InputStream,OutputStream)。注意:readline()方法在读取时一次读一整行,遇到回车换行结束。但是它不会把回车换行读到内存中。字节缓冲流底层自带了长度为8192的缓冲区提高性能。

2023-06-13 19:47:05 194

原创 java的字符流

FileReader对象的空参的read()方法默认是“一次读一个字节,遇到中文一次读三个字节”,在读取之后还会进行解码转为十进制,十进制的数字也表示字符集上的数字。例如:英文二进制文件里的数据为“01100001”,read()方法进行读取解码后结果为97;说明:上述代码,害后面隐藏两个字符"\r\n",所以“害\r”为一组输出,‘\r’没有显示出来;注意上述代码中的细节,new String()指定后面两个参数,读到几个字节就使用几个字节,因为最后可能字节不够填充byte数组。字符流的底层也是字节流。

2023-06-13 19:18:58 1478

原创 字符集和java的编码与解码

不同国家长度不同,只需记住ASCII码用一个字节(第一位为0),简体中文用3个字节(第一个字节前4为固定为1110,第二个字节前两位固定为10,第三个字节前两位固定为10)。例如,存储字符’a’,查询ASCII得到为97,二进制为1100001B,计算机进行编码,ASCII编码规则为“前面补0,补齐8位”,所以’a’存储位01100001B。GBK读取字节流时,遇到以0开头的字节则表示英文的一个字符,遇到以1开头的字节,则表示这个字节与后面的一个字节组合起来表示一个汉字。(2)汉字用两个字节存储。

2023-06-13 18:31:42 1294

原创 java的IO

(1)write()方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符。字节流可以操作所有类型的文件,字符流只能操作纯文本文件。mac的换行为\r。java在windows中写\r,\n或\r\n都行,最后都会自动补全即为\r\n。(2)如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来。FileOutputStream:操作本地文件的字节输入流。操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。

2023-06-13 15:59:08 984

原创 java的File

实参为FilenameFilter的匿名内部类,方法accept()的第一个参数dir表示调用list()方法的File对象,第二个表示dir指定目录下的每一个文件或文件夹的路径,方法返回值为true表示获取该文件到数组中,为false则不获取该文件到数组中。注意:length()方法只能获取文件的大小,若参数是文件夹则无法获取文件夹的大小,返回值为0或4096(不同操作系统下不一样)无意义。注意,上图中的accept()参数是File对象中每一个文件的路径。这个路径可以是存在的,也可以是不存在的。

2023-06-13 11:54:20 857

原创 java的StringBuilder、Stringjoiner

上述代码中,s1的内容为"aaabbbcccddd",在这个过程中,是先创建了"aaa"字符串,再创建"aaabbb"字符串,再创建"aaabbbccc"字符串,再创建"aaabbbcccddd"字符串,虽然最终s1的内容为"aaabbbcccddd",但却产生了很多用不到的字符串,占用内存空间。StringJoiner和StringBuilder一样,也是一个容器,创建之后里面的内容是可变的。作用是提高字符串的操作效率,而且代码编写特别简洁,是在JDK8之后出现的,市场上很少有人用。(2)字符串的反转。

2023-06-12 09:46:33 983

原创 java的内部类

补充:private修饰的成员只能在该类中使用(该类的方法使用),无修饰符(default)的成员可以被该类所在包中的类使用,protected修饰的成员可以被该类所在包中的类及其子类使用,public修饰的成员可以被任意类使用。当方法的参数是接口或类时,以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码。分为成员内部类、静态内部类、局部内部类和匿名内部类,前三个能看懂即可(方便看源码),匿名内部类必须掌握。(2)外部类要访问内部类的成员,必须创建对象。

2023-06-09 20:33:26 698

原创 java的逻辑运算符与短路逻辑运算符

&与&的区别是,再短路逻辑运算符&&所连接的表达式中,如果左边为假,则右边不进行运算,直接得出结果。在逻辑运算符&所连接的表达式中,左右两边的条件都会执行。实际应用中常用的逻辑运算符为&&、||、!

2023-06-09 17:02:22 275

原创 ajax--XML、AJAX简介、express框架使用、AJAX操作的基本步骤

AJAX不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。最开始AJAX进行数据交换的格式是XML,服务器端给客户端返回的结果就是XML格式的字符串,前端的JS在接到这个结果后对其内容进行解析,把数据提取出来并对数据进行处理。现在AJAX不用XML,而是JSON,JSON更加简洁,在数据转换方面更加容易。,比如服务器端将数据使用XML的形式传给客户端(前端),而HTML的作用是在。{“name”:“孙悟空”,“age”:18,“gender”:“男”}XML与HTML类似,不同的是HTML中。

2023-06-08 19:50:00 1168

原创 Java匿名内部类、invoke方法、动态代理

Proxy.newProxyInstance()方法的第一个参数了解书写形式即可,第二个参数为执行被代理的接口的字节码,第三个参数的作用是对被代理的接口的方法增加功能,注意代理类是可以对接口中所有的方法增加功能,当通过代理类对象调用被代理类的方法时,该方法就传给invoke()方法里的method,代理类对象调用被代理类的方法时的参数传给args。一般是通过“自定义的代理类”来管理“指定类”(被代理类)的方法的执行,这里的“管理方法的执行”实质是在方法执行前添加一些代码,表现为方法执行的功能增加了。

2023-06-07 17:21:34 1505 2

原创 MySQL-3-创建表、删除表、增删改、约束、索引

注意:索引虽然可以提高检索效率,但是不能随意地添加索引,因为索引也是数据库中地对象,也需要数据库不断地维护。比如,表中地数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。注意:(1)insert语句可以颠倒表中字段地顺序,也可以不包含全部的字段(此时未插入的字段若有默认值则为默认值,否则为null)。(2)也可以只写表名,省略括号与其中的字段序列,此时values后的括号的值的顺序与个数必须与表一致。注意:模糊查询时,第一个通配符为“%”时,这个时候索引是失效的。

2023-05-23 17:42:54 1969

原创 MySQL2-多表查询、子查询、union、limit机制

/emp表的别名为e,dept表的别名为d,使用表的别名是为了在select时区分不同表的同名字段。避免笛卡尔积现象的方法是加条件进行过滤,但是要注意,加条件进行过滤不会减少记录的匹配次数,只不过显示的是有效记录(即最开始的连接还是笛卡尔积连接,再在笛卡尔积连接的基础上进行过滤)。内连接:表A和表B进行连接,使用内连接,凡是A表与B表能够匹配上的记录查询出来,A、B两张表没有主副之分,两张表是平等的。可以看出,如果使用内连接的自连接,上图中的empno为7839的记录会被去除,因为mgr无法匹配。

2023-05-23 15:13:18 1724

原创 MySQL-1-SQL语句的分类、MySQL命令、SQL查询语句

having子句是作用在group by子句的执行结果的多个记录上,没有group by子句就不能有having子句。解释:分组函数不能直接在where子句中是因为group by在where子句之后执行,而分组函数在group by子句之后执行。执行顺序为:先from,再where,再group by,再having,再select,最后order by输出。注意:多个字段同时排序时,从左到右考虑(越靠前的字段越起主导作用),只有前面的字段相同时才接着考虑后面的字段。

2023-05-22 10:53:52 1173

原创 redis介绍4--配置文件、持久化、事务、消息的发布与订阅、集群、哨兵模式、Jedis

redis客户端订阅频道(频道可以理解为对于某些数据的关注,比如对于某个数据的修改的情况为一个频道,所有想要关注该数据修改情况的客户端订阅该频道,当该数据被修改时将消息发送到订阅了该频道的客户),消息的发布者往频道上发布消息,所有订阅此频道的客户端都能够接受到该消息。重启6379服务,可以发现6379还是主机,有两个从机。redis中默认有16个数据库(database),编号为0~15,redis也是一个应用对应一个数据库,与mysql数据库不同的是,redis的数据库由它自身创建,程序员不能手动创建。

2023-03-28 20:14:37 371

原创 常见的UNIX/LINUX命令

linux常用指令

2023-03-21 11:44:23 1911

原创 pytorch入门10--循环神经网络(RNN)

RNN

2023-03-15 21:50:06 2847 1

后端工程师面试资料笔记保存

后端工程师面试资料笔记保存

2024-11-03

java面试知识点积累

java面试知识点积累

2024-11-03

空空如也

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

TA关注的人

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