当前位置: 首页 > news >正文

Java开发框架和中间件面试题(10)

目录

104.怎么保证缓存和数据库数据的一致性?

105.什么是缓存穿透,什么是缓存雪崩?怎么解决?

106.如何对数据库进行优化?

107.使用索引时有哪些原则?

108.存储过程如何进行优化?

109.说说如何对Tomcat进行优化?

110.BIO、NIO和AIO的区别?

111.Netty的特点?

112.Netty的线程模型?

113.如何进行JVM性能调优?

115.GC调优策略有哪些?

116.介绍下单点登录?

117.RabbitMQ的使用场景有哪些?

118.RabbitMQ有哪些重要的角色?有哪些重要的组件?

119.RabbitMQ中vhost的作用是什么?

120.介绍下RabbitMQ的架构?

121.RabbitMQ中的交换机类型有哪些?

122.除了ReetrantLock,你还接触过JUC并发包中的哪些并发API?

123.你了解哪些负载均衡算法、策略?

124.如何设计符合幂等性的高质量Restful   API ?

125.如何理解Restful API 的幂等性?

126.jsp和servlet有什么区别?

127.forward和redirect的区别?

128.jsp有哪几个作用域?

129.session和cookie有什么区别?

130.如果客户端禁止cookie能实现session还能用吗?


104.怎么保证缓存和数据库数据的一致性?

1.淘汰缓存在;如果是较为复杂的数据时,进行缓存的更新操作就会变得异常复杂,因此一般推荐选择淘汰缓存,而不是更新缓存。

2.选择先淘汰缓存,再更新数据库,加入先更新数据库在淘汰缓存,如果淘汰缓存失败,那么后面的请求就会得到脏数据,直至缓存过期。加入先淘汰缓存再更新数据库,如果更新数据库失败,只会产生一次缓存穿透,相比较而言,后者对业务则没有本质上的影响。

3.延时双删除策略,如下场景:同时有一个请求A进行更新操作,另一个请求B进行查询操作。我们按照如下步骤执行:

  (1)请求A进行写操作,删除缓存

    (2)请求B查询发现缓存不存在

  (3)请求B去数据库查询得到旧值

  (4)请求B将旧值写入缓存

  (5)请求A将新值写入数据库,次数便出现了数据不一致问题,此时我们可以采用延时双删策略的已解决。

     

public  void  write(String key,Object data){redisUtils.del(key);db.update(data);Thread.Sleep(100);redisUtils.del(key);
}

这么做,可以将1秒内所造成的缓存脏数据,再次删除。这个时间设定可以根据业务场景进行一个调节。

4.数据库读写分离的场景

假如有如下场景:两个请求,一个请求A进行更新操作,另一个请求B进行查询操作。我们按照如下步骤执行:

1.请求A进行写操作,删除缓存

2.请求A将数据写入数据库了

3.请求B查询缓存发现,缓存没有值

4.请求B去从库查询,这时,还没有完成主从同步,因此查询到的是旧值。

5.请求B将旧值写入缓存

6.数据库完成主从同步,从库变为新值,依旧采用延时双删策略解决此问题。

105.什么是缓存穿透,什么是缓存雪崩?怎么解决?

1.缓存穿透:一般的缓存系统,都是按照key去缓存查询,如果不存在对用的value,就应该去后端系统去查找(比如DB数据库)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

2.怎么解决?

对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert之后清理缓存。对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的bitmap中,查询时通过该bitmap过滤。

3.缓存雪崩:当缓存服务器重启或者大量缓存集中在某一时间段失效,这样在失效的时候,会给后端系统带来大量的压力,导致系统崩溃。

4.如何解决?在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待;做二级缓存;不同的key,设置不同的过期时间,让缓存失效的时间尽量均匀。

106.如何对数据库进行优化?

1.选取适合的字段属性

  为了获取更好的性能,可以将表中字段的宽度设的尽可能小。

  尽量把字段设置成not null

  执行查询的时候,数据库不用去比较null值

  对某些省份或者性别字段,将他们定义为enum类型

  enum类型被当做数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快很多。

2.使用join链接代替子查询

3.使用联合union来代替手动创建的临时表union用法中,两个select语句的字段类型要匹配,而且字段个数要相同。

5.锁定表:尽管事务时维护数据库完整性的一个非常好的方法,但却因为他的独占性,有时候会影响数据库的性能,尤其是在大应用中。由于在事务执行的过程中,数据库会被锁定,因此其他用户只能暂时等待直到数据库结束。有的时候可以用锁定表的方法获得更好的性能。

共享锁:

    其他用户只能看,不能修改lock table person in share mode;对于通过lock table命令主动添加的锁来说,如果要释放他们,只需发出rollback命令即可。

6.使用外键:锁定表的方法可以维护数据的完整性,但是他却不能保证数据的关联性,这个时候可以使用外键。

7.使用索引:索引时提高数据库查询速度的常用方法,尤其是查询语句中包含max(),min(),order by这些命令的时候,性能提高更为显著。一般来说索引应该建在常用于join,where,order by的字段上。尽量不要对数据库中含有大量重复的值得字段建立索引。

8.优化的查询语句:在索引的字段上尽量不要使用函数进行操作。尽量不要使用like关键字和通配符,这样做法很简单,但却是以牺牲性能为代价的。避免在查询中进行自动类型转换,因为类型转换也会使索引失效。

107.使用索引时有哪些原则?

 常见的索引原则有:

   1.选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。

2.为经常需要排序,分组和联合操作的字段建立索引;

3.为常作为查询条件的字段建立索引。

4.限制索引的数据:越多的索引,会使更新表变得很浪费时间。

5.尽量使用数据量少的索引。

6.如果索引的值很长,那么查询的速度会受到影响。

7.尽量使用前缀来索引。

8.如果索引字段的值很长,最好使用值的前缀来索引。

9.删除不再使用或者很少使用的索引。

10.最左前缀匹配原则,非常重要的原则。

11.尽量选择区分度高的列作为索引。

12.索引列不能参与计算,保持列干净:但函数的查询不参与索引。

13.尽量的扩展索引,不要新建索引。

108.存储过程如何进行优化?

存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中,经过一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行他。存储过程是数据库中的一个重要对象。

存储过程优化思路:

1.尽量利用一些SQL语句来替代一些小循环,例如聚合函数,求平均函数等。

2.中间结果存放于临时表,加索引。

3.少使用游标。SQL是个集合语言,对于集合运算具有较高性能。而cursors是过程运算。比如一个100万行的数据进行查询。游标需要读取100万次,而不使用游标只需要少量几次读取。

4.事务越短越好。SqlServer支持并发操作。如果事务过多过长,或者隔离级别过高,都会造成并发操作的阻塞,死锁。导致查询极慢,CPU占用率极低。

5.使用try  catch处理错误异常

6.查找语句尽量不要放在循环内。

109.说说如何对Tomcat进行优化?

Tomcat作为Web服务器,他的处理性能直接关系到用户体验,下面是几种常见的优化措施。

1.去掉对web.xml的监视,把jsp提前编辑成Servlet。有抚育物理内存的情况,加大Tomcat使用的JVM的内存。

2.服务器资源

服务器所能提供CPU,内存,硬盘的性能对处理能力有决定性影响。

2.1对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。


2.3硬盘主要问题就是读写性能,当大量文件进行读写时,硬盘极容易称为性能瓶颈。最好的办法还是利用下面提到的缓存。

3.利用缓存和压缩

    对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片,css,js文件都进行了缓存,有效的减少了后端Tomcat的访问。

     另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑带Tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。

     除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进项压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾静我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。

4.采用集群

单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建Tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个Tomcat共享session来协同工作。

5.优化Tomcat参数

这里以Tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dnd查询。

110.BIO、NIO和AIO的区别?

1.基本概念

   BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。

   伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。

   NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程处理。

   AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。

2.常规区别

   BIO是面向流的,NIO是面向缓冲区的;

BIO的各种流是阻塞的。

而NIO是非阻塞的。

BIO的Stream是单向的,而NIO的channel是双向的。NIO特点:事件驱动模型,单线程处理多任务,非阻塞I/O,I/O读写不再阻塞,而是返回0,基于block的传输比基于流的传输更高效,更高级的IO函数zero  copy,IO多路复用大大提高了Java网络应用的可伸缩性和实用性。

基于Reactor线程模型。在Reactor模式中,事件分发器等待某个事件或者可应用或者某个操作的状态发生,时间分发器就把这个事件事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。

如在Reactor中实现读:注册读就绪事件和相应的事件处理器,事件分发器等待事件,事件到来,激活分发器,分发器调用事件对应的处理器,事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。

111.Netty的特点?

  一个高性能,异步事件驱动的NIO框架,他提供了对TCP,UDP和文件传输的支持使用更高效的socket底层,对epoll空轮询引起的CPU占用飙升在内部进行了处理,避免了直接使用NIO的陷阱,简化了NIO的处理方式。

采用多种decoder/encoder支持,对TCP粘包/分包进行自动化处理,可使用接受/处理线程池,提高连接效率,对重连,心跳检测的简单支持。

可以配置IO线程数,TCP参数,TCP接收和发送缓冲区使用直接内存代替堆内存,通过内存池的方式循环利用ByteBuf通过引用计数器及时申请释放不再引用对象,降低了GC频率使用单线程串行化的方式,高效的Reactor线程模型大量使用了volitale,使用了CAS和原子类,线程安全类的使用,读写锁的使用。

112.Netty的线程模型?

    Netty通过Reacor模型基于多路复用器接收并处理用户请求,内部实现了了两个线程池,boss线程池和work线程池。其中boss线程池的线程负责处理请求的accept,当接收到accept事件的请求时,把对应的socket封装到一个NIOSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件,由对应的Handler处理。

  单线程模型:所有I/O操作都有一个线程完成,即多路复用,事件分发和处理都是在一个Reactor线程上完成的。既要接受客户端的连接请求,向服务器端发起连接,又要发送/读取请求或者应答/响应消息。

一个NIO线程同时处理成百上千的链路,性能上无法支撑,速度慢,若线程进入死循环,整个程序不可用,对于高负载,大并发的应用场景不合适。

多线程模型:有一个NIO线程(Acceptor只负责监听服务器,接受客户端的TCP连接请求,NIO线程池负责网络IO的操作,即消息的读取,解码,编码和发送。

1个NIO线程可以同时处理N条链路,但是一个链路只对应1个NIO线程,这是为了防止发生并发操作问题。但在并发百万客户端连接或者需要安全认证时,一个Acceptor线程可能会存在性能不足问题。

主从多线程模型:Acceptor线程用于绑定监听端口,接收客户端连接,将SocketChannel从主线程池的Reactor线程的多路复用器上移除,用于处理I/O的读写等操作,从而保证mainReactor只负责接入认证,握手等操作。

113.如何进行JVM性能调优?

1.监控GC的状态,使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分GC执行时间,觉得是否进行优化。

举一个例子:系统崩溃前的一些现象:

  每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的时间也有之前的0.5s延长到4,5s

  FullGC的次数越来越多,最频繁时隔不到1分钟就进行一次FullGC

  年老代的内存越来越大并且每次FullGC后年老代没有内存被释放之后系统就会无法响应新的请求,逐渐到达OutOfMemoryError的临界值,这个时候就需要分析JVM内存快照dump。

2.生成堆的dump文件。

通过JMX的MBean生成当前的Heap信息,大小为一个3G(整个堆的大小)的hprof文件,如果没有启动JMX可以通过Java的jmap命令来生成该文件。

3.分析dump文件打开这个3g的堆信息文件,显然一般的Window系统没有那么大内存,必须借助高配置的Linux,几种工具打开该文件:

  Visual VM   

   IBM  HeapAnalyzer

   JDK自带的Hprof工具

   Mat(Eclipse专门的静态内存分析工具)推荐使用

备注:文件太大,建议使用Eclipse专门的静态内存分析工具Mat打开分析。

4.分析结果,判断是需要优化,如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化,如果GC事件超过1到3秒,或者频繁GC,则必须优化。

注:如果满足下面的指标,则一般不需要进行GC:

  Minor  GC执行时间不到50毫秒;

  Minor  GC执行不频繁,约10秒一次;

  FullGC执行时间不到1秒;

  FullGC执行频率不算频繁,不低于10分钟一次;

5.调整GC类型和内存分配,如果内存分配过大或者过下,或者采用的GC收集器比较慢,则应该优先调整这些参数,并且先找一台或者几台机器进行beat,然后比较优化过的机器和没有优化的机器性能对比,并有针对性的做出最后选择。

6.不读拿的分析和调整,通过不断地试验和试错,分析并找到最合适的参数,如果找到了最合适的参数,则将这些参数应用到所有的服务器。

114.JVM调优参数有哪些?

115.GC调优策略有哪些?

116.介绍下单点登录?

117.RabbitMQ的使用场景有哪些?

1.解决一步问题,例如用户注册,发送邮件和短信反馈注册成功,可以使用RabbitMQ消息队列,用户无需等待反馈。

2.服务间解耦,订单系统和库存系统,中间加入RabbitMQ消息队列,当库存系统出现问题时,订单系统依旧能正常使用,降低服务间耦合度。

3.秒杀系统,利用RabbitMQ的最大值,实现秒杀系统。

118.RabbitMQ有哪些重要的角色?有哪些重要的组件?

1.RabbitMQ有哪些重要角色?客户端,RabbitMQ服务端。

2.有哪些重要组件?

 2.1connectionFactory(连接管理器)应用程序与RabbitMQ之间建立连接的管理器。

 2.2Channel(信道)消息推送使用的信道。

 2.3RoutingKey(路由键)用于把生产者的数据分配到交换机上。

 2.4Exchange(绑定键)用于把交换机的消息绑定到队列上

 2.6Queue(队列)用于存储生产者消息。

119.RabbitMQ中vhost的作用是什么?

   vhost可以理解为mini版的RabbitMQ,其内容均含有独立的交换机,绑定,队列,最重要的是拥有独立的权限系统,可以做到vhost范围内的用户控制。

用RabbitMQ全局考虑,不同的应用可以跑在不同的vhost上,作为不同权限隔离的手段。

120.介绍下RabbitMQ的架构?

121.RabbitMQ中的交换机类型有哪些?

122.除了ReetrantLock,你还接触过JUC并发包中的哪些并发API?

123.你了解哪些负载均衡算法、策略?

124.如何设计符合幂等性的高质量Restful   API ?

125.如何理解Restful API 的幂等性?

126.jsp和servlet有什么区别?

127.forward和redirect的区别?

128.jsp有哪几个作用域?

129.session和cookie有什么区别?

130.如果客户端禁止cookie能实现session还能用吗?

相关文章:

Java开发框架和中间件面试题(10)

目录 104.怎么保证缓存和数据库数据的一致性? 105.什么是缓存穿透,什么是缓存雪崩?怎么解决? 106.如何对数据库进行优化? 107.使用索引时有哪些原则? 108.存储过程如何进行优化? 109.说说…...

C++ 具名要求-基本概念-指定该类型对象可以从右值构造

指定该类型对象可以从右值构造 指定该类型的实例可以从一个右值实参构造。 要求 以下情况下,类型 T 满足可移动构造 (MoveConstructible) : 给定 T 类型的右值表达式 rv任意标识符 u 下列表达式必须合法且拥有其指定的效果 表达式后条件T u rv;u…...

Python如何把类当做字典来访问及浅谈Python类命名空间

Python如何把类当做字典来访问 Python把类当做字典来访问 定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下: class A:def __init__(self)…...

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库,数据的安全性至关重要。一旦数据丢失,可能会对业务造成重大影响。因此,备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …...

【5G PHY】5G 物理层加速卡介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...

lftp学习笔记

目录 0. ftp vs. lftp1. 安装2. 常用命令2.1 登录2.2 文件管理2.3 文件传输 3. 脚本编程4. 实践中的问题排查参考 0. ftp vs. lftp lftp是一款文件传输工具,支持FTP、HTTP、SFTP、FISH等多种协议。 功能ftplftp数据传输文件文件、文件夹多线程传输支持断点续传支持…...

idea 插件开发之 HelloWorld

前言 本文使用的 idea 2023.3 版本进行插件入门开发,首先要说明的是 idea 2023 版本及以后的 idea,对插件开发进行了一定程度的变动: 1、创建项目时不再支持 maven 选项 2、必须是 jdk17 及以后版本(点击查看官网版本对应关系&…...

极速文件搜索工具Everything结合内网穿透实现远程搜索本地文件

文章目录 前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库,我们需要两个软件的支持,分别是cpolar(用于搭建内网穿透数据隧道…...

【PowerMockito:编写单元测试过程中采用when打桩失效的问题】

问题描述 正如上图所示,采用when打桩了,但是,实际执行的时候还是返回null。 解决方案 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常,所以在测试类中需要加入以下代码片段: Beforepublic void setUp() …...

[蓝桥杯 2018省赛]回家路费

回家路费 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小明被不明势力劫持。后莫名其妙被扔到 X 星站再无问津。小明得知每天都有飞船飞往地球,但需要 108108 元的船票,而他却身无分文。…...

学生管理系统(vue + springboot)

学生管理系统(vuespringboot)资源-CSDN文库 项目介绍 这是一个采用前后端分离开发的项目,前端采用 Vue 开发、后端采用 Spring boot Mybatis 开发。 项目部署 ⭐️如果你有 docker 的话,直接 docker compose up 即可启动&#…...

算法(3)——二分查找

一、什么是二分查找 二分查找也称折半查找,是在一组有序(升序/降序)的数据中查找一个元素,它是一种效率较高的查找方法。 二、二分查找的原理 1、查找的目标数据元素必须是有序的。没有顺序的数据,二分法就失去意义。 2、数据元素通常是数值…...

golang实现可中断的流式下载

golang实现可中断的流式下载 最近有一个需要实现下载功能: 从服务器上读取文件,返回一个ReadCloser在用户磁盘上创建文件,通过io.Copy实现文件下载(io.Copy是流式的操作,不会出现因文件过大而内存暴涨的问题&#xff0…...

SpringBoot 医药咨询系统

概述 智慧医药系统(smart-medicine)是一个基于 SpringBoot 开发的Web 项目。整体页面简约大气,增加了AI医生问诊功能,功能设计的较为简单。 开源地址 https://gitcode.net/NVG_Haru/Java_04 界面预览 功能介绍 游客功能介绍 …...

C语言转WebAssembly的全流程,及Web端调用测试

第一步:安装环境 参考网址:https://emscripten.org/docs/getting_started/downloads.html 具体过程: 克隆代码:git clone https://github.com/emscripten-core/emsdk.git进入代码目录:cd emsdk获取最新远端代码&…...

前端--基础 目录文件夹和根目录 VScode打开目录文件夹

目录 目录文件夹和根目录 : 目录文件夹 : 根目录 : VScode 打开目录文件夹 : VScode 打开文件夹 : 拖拽目录文件夹 : 目录文件夹和根目录 : 我们都清楚,在实际的工作中会…...

传感器原理与应用复习--超声波、微波、红外及热电偶传感器

文章目录 上一篇超声波传感器微波传感器红外传感器热电偶传感器下一篇 上一篇 传感器原理与应用复习–光电式与半导体式传感器 超声波传感器 超过2万赫兹以上的波称为超声波 压电式超声波探头常用材料是压电晶体和压电陶瓷。它是利用压电材料的压电效应来工作的。 逆压电效…...

matlab概率论例子

高斯概率模型: [f,xi] ksdensity(x): returns a probability density estimate, f, for the sample in the vector x. The estimate is based on a normal kernel function, and is evaluated at 100 equally spaced points, xi, that cover the range of the da…...

Appium+python自动化(一)- 环境搭建—上(超详解)

简介 今天是高考各地由于降水,特别糟糕,各位考生高考加油,全国人民端午节快乐。最近整理了一下自动化的东西,先前整理的python接口自动化已经接近尾声。即将要开启新的征程和篇章(Appium&python)。那么…...

基于SpringBoot的精简博客系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的精简博客系统,java项目…...

STM32的在线升级(IAP)实现方法:BOOT+APP原理详解

0 工具准备 Keil uVision5 Cortex M3权威指南(中文) STM32参考手册 1 在线升级(IAP)设计思路 为了实现STM32的在线升级(IAP)功能,通常会将STM32的FLASH划分为BOOT和APP两个部分,BOO…...

【芯片DFX】Arm调试架构篇

【芯片DFX】万字长文带你搞懂JTAG的门门道道【芯片DFX】ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析...

ES应用_ES实战

依靠知识库使用es总结一些使用技巧。 1 快速入门 ES是将查询语句写成类似json的形式,通过关键字进行查询和调用。 1.1 创建 下面创建了一个主分片为5,副本分片为1的ES结构。ES本身是一种noschema的结构,但是可以通过指定mapping编程schema的…...

Ubuntu上如何找到设备,打印串口日志

dmesg 找设备 sudo mincom -s 配置minicom mincom 打印串口日志 PS: Windows上使用MobaXterm / putty / Xshell / SecureCRT等 ubuntu串口的安装和使用(usb转串口)_ubuntu上如何把usb设备映射到tty-CSDN博客...

本地映射测试环境域名,解决登录测试环境后,也可以使用本地域名访问,可以正常跑本地项目

问题:单点登录进入系统不使用token,是将token携带在cookie中,登录成功后每次调用接口,都会在cookie中自动携带,这样导致即使在本地使用proxy代理解决了跨域,但由于本地域名不一致,也无法进行本地…...

VSCode使用Remote SSH远程连接Windows 7

结论 VSCode Server不能启动,无法建立连接。 原因 .vscode-server 目录中的 node.exe 无法运行。 原因是Node.js仅在Windows 8.1、Windows Server 2012 R2或更高版本上受支持。 由于vscode基于node.js v14,不支持Windows 7操作系统。 另&#xff…...

uniapp中uview组件库丰富的Calendar 日历用法

目录 基本使用 #日历模式 #单个日期模式 #多个日期模式 #日期范围模式 #自定义主题颜色 #自定义文案 #日期最大范围 #是否显示农历 #默认日期 基本使用 通过show绑定一个布尔变量用于打开或收起日历弹窗。通过mode参数指定选择日期模式,包含单选/多选/范围…...

云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd) 5.master2节点迁移容器运行时(docker → containerd) 6.node1节点容器运行时迁移(docker → containerd) 7.升级集群计划(v1.23.14 → v1.24.1&#…...

Redis 数据结构和常用命令

* 代表多个,?代表一个 (不用全部敲出来,按住tab可以自动补全) -2是无效,-1是永久有效 ;贴心小提示:内存非常宝贵,对于一些数据,我们应当给他一些过期时间&a…...

Docker 容器命令总汇

目录 1、创建Docker容器(不启动) 2、创建Docker容器(启动) 3、列出正在运行的容器 4、停止和启动容器 5、重启容器 6、进入容器 7、查看容器信息 8、查看容器日志 9、删除容器和镜像 10、重命名容器 11、从旧容器复制数…...

react + redux 之 美团案例

1.案例展示 2.环境搭建 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务(内置了json-server) npm run serve 启动前端服务 npm…...

【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(2)

本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…...

14.用户管理

目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…...

【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录,例如/usr/local/arm,然后…...

感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?

导言: 近期,[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法,将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…...

[Linux开发工具]——vim使用

Linux编辑器——vim的使用 一、什么是集成开发环境?二、什么是vim?三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift;进入末行模式。…...

【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)

背景需求: 1、以前做单元格填充,都是制作N个分开的单元格 (表格8) 2、这次做五宫格数独的Word模板,我图方便,就只用了一个大表格,第六行第六列隐藏框线,看上去就是分开的&#xff…...

Spring Boot日志:从Logger到@Slf4j的探秘

写在前面 Hello大家好,今日是2024年的第一天,祝大家元旦快乐🎉 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用?三、日志怎么用?四、自定义日志打印💬 常见日志框架说明4.1 在程序…...

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置 1 GTM与ADC的接口2 GTM与VADC的连接2.1 VADC 到 GTM 的连接2.1.1 简要介绍2.1.2 应用举例2.2 EVADC到 GTM的连接2.2.1 应用举例3 总结本文介绍实现GTM与VADC的连接性的相关寄存器配置。 1 GTM与ADC的接口 由英…...

【基础】【Python网络爬虫】【6.数据持久化】Excel、Json、Csv 数据保存(附大量案例代码)(建议收藏)

Python网络爬虫基础 数据持久化(数据保存)1. Excel创建数据表批量数据写入读取表格数据案例 - 豆瓣保存 Excel案例 - 网易新闻Excel保存 2. Json数据序列化和反序列化中文指定案例 - 豆瓣保存Json案例 - Json保存 3. Csv写入csv列表数据案例 - 豆瓣列表保…...

王道考研计算机网络——应用层

如何为用户提供服务? CS/P2P 提高域名解析的速度:local name server高速缓存:直接地址映射/低级的域名服务器的地址 本机也有告诉缓存:本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库,放到本地的高…...

Android MVVM 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 ViewModel:负责业务逻辑 持有关系: 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具:DataBinding 执行流程:View &g…...

LeetCode 热题 100——283. 移动零

283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…...

neovim调试xv6-riscv过程中索引不到对应头文件问题

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 和这篇文章neovim调试linux内核过程中索…...

轻量应用服务器与云服务器CVM对比——腾讯云

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…...

骑砍战团MOD开发(31)-游戏AI控制

一.骑砍单机模式下AI控制 骑砍战团中野外战斗,训练场中小兵和地方小兵的行为统称为场景AI. 骑砍大地图中敌军追踪和遭遇追击统称为大地图AI. 二.骑砍场景AI 骑砍引擎通过header_mission_templates,py定制AI常量控制小兵位置,动作和朝向.可实现自定义阵型和攻击动作。 # Agen…...

flutter学习-day21-使用permission_handler进行系统权限的申请和操作

文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上,权限不是在安装时才授予应用程序的。相反,开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中,则需要一个跨平台(iOS, Android)的 API 来…...

虹科方案丨L2进阶L3,数据采集如何助力自动驾驶

来源:康谋自动驾驶 虹科方案丨L2进阶L3,数据采集如何助力自动驾驶 原文链接:https://mp.weixin.qq.com/s/qhWy11x_-b5VmBt86r4OdQ 欢迎关注虹科,为您提供最新资讯! 12月14日,宝马集团宣布,搭载…...

Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解

Kubernetes 入门 回想 2017 年刚开始接触 Kubernetes 时,碰到 Pod一直起不来的情况,就开始抓瞎。后来渐渐地掌握了一些排查方法之后,这种情况才得以缓解。随着时间推移,又碰到了问题。有一天在部署某个 springboot 微服务时&…...

【后端】Docker学习笔记

文章目录 Docker一、Docker安装(Linux)二、Docker概念三、Docker常用命令四、数据卷五、自定义镜像六、网络七、DockerCompose Docker Docker是一个开源平台,主要基于Go语言构建,它使开发者能够将应用程序及其依赖项打包到一个轻…...