自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (3)
  • 收藏
  • 关注

原创 [面试题]分库分表

数据分片,指按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中以达到提升性能瓶颈以及可用性的效果。数据分片的有效手段是对关系型数据库进行分库和分表。分库和分表均可以有效的避免由数据量超过可承受阈值而产生的查询瓶颈。除此之外,分库还能够用于有效的分散对数据库单点的访问量。分表虽然无法缓解数据库压力,但却能够提供尽量将分布式事务转化为本地事务的可能,一旦涉及到跨库的更新操作,分布式事务往往会使问题变得复杂。使用多主多从的分片方式,可以有效的避免数据单点,从而提升数据架构的可用性。

2024-06-28 22:38:30 1172

原创 [面试题]计算机网络

这个我们就不在本文中多写,感兴趣的胖友,可以看看《维基百科 —— 网关》文章。这个问题,一般面试应该不问,主要是为了大家扩充下知识面吧。单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。组播(multicast): 也叫多播, 多点广播或群播。指把信息同时传递给一组目的地址。

2024-06-27 19:32:21 775

原创 [面试题]Zookeeper

这样的设计有效的减轻了服务端的压力,不然对于更新非常频繁的节点,服务端会不断的向客户端发送事件通知,无论对于网络还是服务端的压力都非常大。接收到客户端请求,处理请求判断是否需要注册 Watcher ,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 process 接口,此时可以看成一个 Watcher 对象)存储在 WatcherManager 的 WatchTable 和 Watch2Paths 中去。

2024-06-25 21:36:24 958

原创 [面试题]Netty

Netty 是一款提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于 NIO 的客户、服务器端编程框架。使用 Netty 可以确保你快速和简单地开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty 相当简化和流线化了网络应用的编程开发过程,例如,TCP 和 UDP 的 socket 服务开发。Netty 具有如下特性( 摘自《Netty in Action》 )Channel。

2024-06-24 20:21:59 1052

原创 [面试题]Linux

Linux 体系结构用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library)。内核空间(Kernel Space) :内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code)。🦅 为什么 Linux 体系结构要分为用户空间和内核空间的原因?

2024-06-24 10:54:14 1219

原创 [面试题]Jenkins

持续集成是一种实践,而 Jenkins 可以帮助团队去尽量好的去完成这种实践。即,Jenkins 是一个持续集成的工具。Jenkins 是基于 Java 语言的开源持续集成工具,提供了一套非常易用的用户界面,用以自动化构建、测试、部署等功能。Jenkins 类似于 Eclipse ,基于插件化的架构,方便功能的扩展,目前有几百个现成插件可以使用,这些插件涵盖从版本控制、构建工具、代码质量、构建通知、集成外部系统、UI定制、游戏等等各个方面。只要是个工具,基本是插件化的架构。

2024-06-23 16:40:28 1046

原创 [面试题]Git

fork ,是对一个仓库的克隆。克隆一个仓库允许你自由试验各种改变,而不影响原始的项目。一般来说,fork 被用于去更改别人的项目(贡献代码给已经开源的项目)或者使用别人的项目作为你自己想法的初始开发点。使用 fork 提出改变的一个很好的例子是漏洞修复。与其记录一个你发现的问题,不如:fork 这个仓库进行修复向这个项目的拥有者提交一个pull requset如果这个项目的拥有者认同你的成果,他们可能会将你的修复更新到原始的仓库中!

2024-06-23 16:17:37 955

原创 [面试题]Dubbo

远程暴露,比较好理解。每次 Consumer 调用 Provider 都是跨进程,需要进行网络通信。本地暴露,在《Dubbo 用户指南 —— 本地调用》一文中,定义如下:本地调用使用了 injvm:// 协议,是一个伪协议,它不开启端口,不发起远程调用,只在 JVM 内直接关联,但执行 Dubbo 的 Filter 链。怎么理解呢?本地的 Dubbo Service Proxy 对象,每次调用时,会走 Dubbo Filter 链。

2024-06-23 11:10:42 800

原创 [面试题]MongoDB

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 jSON 的 BSON 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。综合来说,MongoDB 可以说是最棒的文档数据库。聚合操作,能够处理数据记录并返回计算结果。

2024-06-23 10:16:03 631

原创 [面试题]RabbitMQ

Queue 元数据(queue 名字和属性等)Exchange 元数据(exchange 名字、类型和属性等)Binding 元数据(存放路由关系的查找表)Vhost 元数据(vhost 范围内针对前三者的名字空间约束和安全属性设置)。利用 DLX ,当消息在一个队列中变成死信(dead message)之后,它能被重新 publish 到另一个 Exchange ,这个 Exchange 就是DLX。

2024-06-20 19:02:31 598

原创 [面试题]Kafka

如果我们要读取第 911 条数据。首先第一步,找到它是属于哪一段的,根据二分法查找到他属于的文件,找到 0000900.index 和 00000900.log 之后。然后,去.index 中去查找 (911-900) =11 这个索引或者小于 11 最近的索引,在这里通过二分法我们找到了索引是 [10,1367]。10 表示,第 10 条消息开始。1367 表示,在 .log 的第 1367 字节开始。所以,本图的第 911 条的“1360”是错的,相比“1367” 反倒小了。

2024-06-20 11:19:45 506

原创 [面试题]消息队列

所以中小型公司,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择大型公司,基础架构研发实力较强,用 RocketMQ 是很好的选择。当然,中小型公司使用 RocketMQ 也是没什么问题的选择,特别是以 Java 为主语言的公司。如果是大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范。另外,目前国内也是有非常多的公司,将 Kafka 应用在业务系统中,例如唯品会、陆金所、美团等等。

2024-06-19 20:27:02 1395

原创 [面试题]Redis

一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。注意,Redis Pipelining 是 Redis Client 实现的功能,而不是 Redis Server 提供的特性。假设我们有 3 个请求进行下举例子。未使用 Pipeline 时,那么整个执行的顺序是,req1->resp1->req2->resp2->req3->resp3。

2024-06-18 19:34:55 898

原创 [面试题]缓存

在刚启动的缓存系统中,如果缓存中没有任何数据,如果依靠用户请求的方式重建缓存数据,那么对数据库的压力非常大,而且系统的性能开销也是巨大的。此时,最好的策略是启动时就把热点数据加载好。这样,用户请求时,直接读取的就是缓存的数据,而无需去读取 DB 重建缓存数据。举个例子,热门的或者推荐的商品,需要提前预热到缓存中。

2024-06-18 18:41:43 725

原创 [面试题]Nginx

一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。正向代理总结就一句话:代理端代理的是客户端。例如说: 我们使用的翻墙软件,OpenVPN 等等。

2024-06-18 10:07:03 786

原创 [面试题]MyBatis

方法,发现 a.getB() 需要延迟加载时,那么就会单独发送事先保存好的查询关联 B 对象的 SQL ,把 B 查询上来,然后调用a.setB(b) 方法,于是 a 对象 b 属性就有值了,接着完成a.getB().getName() 方法的调用。Mybatis 使用 JDK 的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4 种接口对象的方法时,就会进入拦截方法,具体就是 InvocationHandler 的 #invoke(…当然,只会拦截那些你指定需要拦截的方法。

2024-06-17 22:21:33 659

原创 [面试题]Spring

以 PROPAGATION_NESTED 启动的事务内嵌于外部事务中(如果存在外部事务的话),此时,内嵌事务并不是一个独立的事务,它依赖于外部事务的存在,只有通过外部的事务提交,才能引起内部事务的提交,嵌套的子事务不能单独提交。即,事务不可分割、不可约简。CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意,CGLIB 是通过继承的方式做的动态代理,因此如果某个类被标记为 final ,那么它是无法使用 CGLIB 做动态代理的。

2024-06-17 21:53:49 816

原创 [面试题]Spring MVC

RestController 注解,在 @Controller 基础上,增加了 @ResponseBody 注解,更加适合目前前后端分离的架构下,提供 Restful API ,返回例如 JSON 数据格式。当俩个拦截器都实现放行操作时,执行顺序为 preHandle[1] => preHandle[2] => postHandle[2] => postHandle[1] => afterCompletion[2] => afterCompletion[1]。) 方法,按拦截器定义。

2024-06-16 10:50:22 1067

原创 [面试题]Spring Cloud

由于网络原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累积,导致服务瘫痪,甚至导致服务“雪崩”。Spring Cloud 是关注全局的微服务协调整理治理框架以及一整套的落地解决方案,它将 Spring Boot 开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线等的集成服务。或者说,换成大家更为熟知的,用于构建微服务的技术栈。

2024-06-16 10:10:51 1271

原创 [面试题]Spring Boot

通过 Spring Boot ,我们开发者可以快速配置 Spring 项目,引入各种 Spring MVC、Spring Transaction、Spring AOP、MyBatis 等等框架,而无需不断重复编写繁重的 Spring 配置,降低了 Spring 的使用成本。所以,上面的缺点,严格来说可能不太适合在面试中回答。当然,Spring Boot 只考虑大多数的开发场景,并不是所有的场景,若在实际开发中我们需要配置Bean ,而 Spring Boot 没有提供支持,则可以自定义自动配置进行解决。

2024-06-16 09:43:29 1101

原创 [面试题]Maven

由于myapp-1.2 有新的主要功能的添加和变化,在发布测试前,它会变得不稳定,而 myapp-1.1 是一个比较稳定的版本,现在的问题是,我们在myapp-1.1中 发现了一些 BUG(当然在 1.2 中也存在),为了能够在一段时间内修复 BUG 并仍然发布稳定的版本,我们就会用到分支(branch),我们基于 1.1 开启一个分支 1.1.1 ,在这个分支中修复 BUG ,并快速发布。而在使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,Maven 会自动从镜像服务器上下载最新的快照版本。

2024-06-15 19:20:16 724

原创 [面试题]MySQL

此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条 Update 语句,修改多条记录,则 binlog 中每一条修改都会有记录,这样造成 binlog 日志量会很大,特别是当执行 alter table 之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。

2024-06-15 11:00:00 993

原创 [面试题]Java【集合】

所以,这样就有问题了,可能线程 A 在执行 Hashtable 的 put 方法添加数据,线程 B 则可以正常调用 #size() 方法读取 Hashtable 中当前元素的个数,那读取到的值可能不是最新的,可能线程 A 添加了完了数据,但是没有对 count++ ,线程 B 就已经读取 count 了,那么对于线程 B 来说读取到的 count 一定是不准确的。优点:LinkedList 基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址。

2024-06-14 20:56:36 684

原创 [面试题]Java【并发】

这是个小众知识,了解即可。ThreadGroup 类,可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式。简单的说,ThreadGroup 为了方便线程的管理。为什么不推荐使用?ThreadGroup API 比较薄弱,它并没有比 Thread 提供了更多的功能。它有两个主要的功能:一是获取线程组中处于活跃状态线程的列表;二是设置为线程设置未捕获异常处理器(uncaught exception handler)。

2024-06-14 18:15:37 669

原创 [面试题]Java【虚拟机】

Java 虚拟机,是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。但是,跨平台的是 Java 程序(包括字节码文件),,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM。

2024-06-13 21:10:21 995

原创 [面试题]Java【基础】

面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP),Java 是一个支持并发、基于类和面向对象的计算机编程语言。代码开发模块化,更易维护和修改。代码复用性强。增强代码的可靠性和灵活性。增加代码的可读性。1)构造方法当新对象被创建的时候,构造方法会被调用。每一个类都有构造方法。在程序员没有给类提供构造方法的情况下,Java 编译器会为这个类创建一个默认的构造方法。2)构造方法重载Java 中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法。

2024-06-13 17:07:52 665

原创 云原生的前世今生

云(Cloud)原生(Native)云原生(CloudNative)云原生计算基金会(Cloud Native Computing Foundation,CNCF)成立于2015年12月11日,由谷歌与Linux基金会联合创办,成立这个非盈利组织的目的是为了推广、孵化和标准化云原生相关的技术。

2024-06-12 23:18:36 865

原创 [云原生]在docker desktop安装mysql

上一章我记录了,今天对在docker desktop安装mysql做笔记。

2024-06-12 19:40:34 828

原创 在windows下安装docker-desktop

Docker Desktop是一个在Windows和macOS上运行的应用程序,能够让开发者使用Docker容器技术。它包括了Docker Engine、Docker CLI客户端、Docker Compose、Docker Content Trust、Kubernetes和Credential Helper等。下面是一篇详细的指南,帮助你在Windows上安装Docker Desktop。

2024-06-12 17:06:50 740

原创 github two-factor authentication是个啥?

github从2023年底已经开始启动双素认证(2FA全称是two-factor authentication,字面意思就是双因素认证),2024年3月13日正式实施,逐步向一群开发者和管理员发出通知。

2024-04-28 14:01:47 657

原创 Flink生产数据到kafka

Flink程序生产数据至kafka。

2023-04-22 17:25:26 1450

原创 缓存中间件-redis模糊删除

redis没有模糊删除的命令,可用以下命令实现:进入当前redis bin目录,然后执行:./redis-cli -h 127.0.0.1 -p 6802 keys ‘replaceStr’|xargs ./redis-cli -h 127.0.0.1 -p 6802 delreplaceStr替换为要搜索的字符串

2020-06-17 20:11:37 333

原创 mq中间件-kafka常用命令

启动:sh /home/software/kafkaserver/kafka1/bin/kafka-server-start.sh -daemon /home/software/kafkaserver/kafka1/config/server.properties创建topicsh /home/software/kafkaserver/kafka1/bin/kafka-topics.sh --create --zookeeper 192.168.0.26:2181 --replication-fact

2020-06-17 20:05:23 170

原创 Guacamole系列三:用springboot写guacamole客户端

上一节《Guacamole系列二:客户端安装》末尾说到了可参照官网文档《Writing your own Guacamole application》用servlet写自己的guacamole客户端,本文在此基础上用springboot简化开发自定义guacamole客户端。在开工前从官网下载客户端包:http://apache.org/dyn/closer.cgi?action=downloa...

2020-04-10 17:01:22 4108 6

原创 Guacamole系列二:客户端安装

本文继续上节《Guacamole系列一:服务端安装》来说明guacamole客户端安装及配置。Guacamole客户端是java web应用,需要做以下准备安装:jdkservlet容器此处省略以上环境安装步骤,请自行百度。guacamole web部署从官网 https://guacamole.apache.org/releases/1.1.0/ 下载WEB应用(guacamol...

2020-04-10 16:13:10 1464

原创 Guacamole系列一:服务端安装

apache的Guacamole是无客户端远程桌面网关。它支持如VNC,RDP和SSH标准协议。之所以说是无客户端,因为是b/s模式,用户通过浏览器访问html5,html5通过后台程序以api请求guacamole服务,以达到在浏览器对指定的操作系统进行远程控制的目的。

2020-04-10 12:09:21 2095

转载 Qt QListWidget clear() 清空所有项出现的问题

有时候我们QListWidet的时候刚开始加载了很多个item,但是可能到后面要清空所有的item,重新加载。例如:我在项目中实现了多国语言,在切换了语言之后,需要将界面重新加载的,这就需要重新加载QListWidget的每一项了。但是在清楚QListWidget的时候,无论调用什么方式总是会出现段错误。//方法一:ui->listWidget->clear();// 结...

2019-04-18 20:17:16 11864 5

原创 linux常用命令锦集

1.删除文件夹下的文件rm -rf /目录/*若目录下文件太多,执行此命令会报/bin/rm Argument list too long.的错误提示,可进入要删除的目录然后执行以下命令:ls | xargs -n 10 rm -fr ls2.搜索文件内容2.1统计匹配次数grep -o "匹配字符串" 文件|wc -l2.2搜索并显示匹配内容grep "匹...

2019-04-17 16:51:38 198

原创 java区分字符串中的汉字

常常会遇到字符串中有汉字和其他字符,当要判断字符串是否为汉字时就会涉及到Unicode,String.getBytes().length取的是字节数,因为中文是全角字符,所以每个中文的字节数都为2String.length()取的是字符长度,按中文的个数来截取。具体java代码如下://判断字符是否为中文String str = "中国chin受到腐蚀的 sfssfssdf ese";

2008-04-09 14:29:00 883

转载 java字符串全排列问题(经典)

*原题如下:用1、2、2、3、4、6这六个数字,用java写一个main函数,打印出所有不同的排列,*如:612234、412346等,要求:"4"不能在第三位,"3"与"6"不能相连.**1把问题归结为图结构的遍历问题。实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,*所有结点的遍历路径就是最后对这6个数字的排列组合结果集。*2显然这个结果集还未达到题

2008-04-07 09:11:00 892

基于springboot的guacamole客户端示例

基于springboot的guacamole客户端示例工程,可在此基础上做扩展,通过guacamole api对guacd发送命令。

2020-04-10

BeyondCompare破解版

BeyondCompare破解版,比较老的版本,不追求新功能可以用。

2019-04-17

能生产PDF文件的组件

生成生成Pdf文件主要分三步 1.生成要产生pdf文件的对象 2.给文章对象添加内容(内容包括 文本 图象 表格) 3.保存文档

2009-04-06

空空如也

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

TA关注的人

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