
java开发
文章平均质量分 50
java开发
BookerABC
我的键盘是我的魔杖,每一次敲击都是对逻辑的施咒。
展开
-
ubuntu 如何放开端口
请注意,放开端口也意味着允许外部访问该端口,因此在放开端口之前,请确保你了解安全风险,并只放开需要的端口。另外,如果你的系统上运行了其他防火墙工具(如iptables),你需要根据具体工具的使用方式进行相应配置。使用防火墙工具(如ufw)放开特定的端口。ufw 是 Ubuntu 上的一个简化的防火墙配置工具,可以轻松管理端口和防火墙规则。使用 root 用户或具有管理员权限的用户登录到 Ubuntu 系统。这将显示当前的防火墙规则和已启用的端口。,如果显示版本信息,则已安装。如果要放开其他端口,请将。原创 2023-07-29 13:30:51 · 10936 阅读 · 0 评论 -
paas平台是什么
这些PaaS平台提供了各种功能和特性,如自动扩展、容器化支持、数据库服务、身份认证、日志管理等,以便开发人员更轻松地构建和运行应用程序。Google App Engine:谷歌提供的PaaS平台,支持Java、Python、Go和Node.js等多种编程语言,具有扩展性和易用性。IBM Cloud Foundry:IBM提供的开放式PaaS平台,支持多种编程语言和框架,并提供了丰富的开发工具和服务。Heroku:一种流行的PaaS平台,支持多种编程语言和框架,提供了简单的部署和扩展机制。原创 2023-07-24 00:59:14 · 3388 阅读 · 0 评论 -
cenos 虚拟机 如何开放指定端口
现在,您已经成功开放了指定的端口。请注意,这些步骤是在使用 FirewallD 作为防火墙管理器的情况下。如果您使用的是其他防火墙管理器(如 iptables),则需要使用相应的命令来开放端口。另外,如果您的虚拟机运行在云服务提供商的环境中,还需要确保在云平台的防火墙设置中允许通过指定的端口。您将看到防火墙状态,如果状态为 "running",则表示防火墙当前正在运行。此命令将显示已开放的端口列表。确保您可以在列表中看到您刚才开放的端口。这将向公共区域添加一个永久性规则,允许通过指定的端口进行传入流量。原创 2023-07-11 13:14:04 · 3776 阅读 · 0 评论 -
java判断json格式的方法
在上述示例中,我们使用 Jackson 库的 ObjectMapper 类来解析 JSON 字符串并生成 JsonNode 对象。然后,我们可以使用 JsonNode 对象进行各种检查和操作,如检查字段是否存在、字段值的类型等。然后,我们可以使用 JsonElement 对象进行各种检查和操作,如检查字段是否存在、字段值的类型等。在Java中,您可以使用不同的库来检查和验证JSON。根据具体的需求和场景,您可能需要根据JSON的结构和内容进行不同的检查和验证。原创 2023-07-10 17:48:11 · 1360 阅读 · 0 评论 -
feign 微服务调用,post请求如何在URL 后面带参数
使用Feign进行微服务调用时,可以根据实际需求选择适合的方式来传递参数。无论是路径参数还是查询参数,都可以在URL后面添加参数来进行POST请求。在Feign微服务调用中,可以通过在URL后面添加参数来进行POST请求。参数可以以两种方式传递:作为路径参数或查询参数。查询参数: 可以将参数添加到URL的查询字符串中,并使用。路径参数: 可以将参数添加到URL的路径中,并使用。注解用于将请求体作为参数传递给POST请求。注解用于将请求体作为参数传递给POST请求。注解来获取参数的值。注解来获取参数的值。原创 2023-07-09 19:37:19 · 1743 阅读 · 0 评论 -
Git Merge FailedMerging is not possible because you have unmerged files.hint: Fix them up in the w
操作时,存在未解决的冲突(unmerged files)。Git无法自动合并这些冲突,因此您需要手动解决冲突并进行提交。)来标识冲突的部分。您需要手动编辑文件,解决冲突并将其修改为您期望的结果。确保删除特殊标记并保留正确的代码。命令将解决冲突的文件标记为已解决。例如,如果冲突的文件是。命令来查看未解决的冲突文件。在文件中,Git会使用特殊标记(当所有冲突文件都被标记为已解决后,运行。这将创建一个新的提交,解决了合并冲突。这个错误提示意味着在进行。原创 2023-07-06 15:19:38 · 371 阅读 · 0 评论 -
Apache Commons IO
Commons IO是Apache Commons的子项目,提供了对IO操作的封装和扩展,包括文件操作、流操作、文件拷贝等,简化了Java IO的使用。它提供了一些常见且有用的实用方法,简化了文件操作、流操作和其它与输入输出相关的任务。现在你可以调用 Commons IO 提供的各种方法来处理输入输出任务。添加 Commons IO 作为你的项目的依赖项。在你的 Java 类中导入所需的 Commons IO 类。这只是一个简单的示例,Commons IO 还提供了很多其它有用的。原创 2023-07-05 12:47:05 · 470 阅读 · 0 评论 -
Apache HttpClient库来发送HTTP请求和接收响应
【代码】Apache HttpClient库来发送HTTP请求和接收响应。原创 2023-07-05 12:33:07 · 276 阅读 · 0 评论 -
java 工具类大全 ,软件开发必备
Apache HttpClient:Apache HttpClient是一个用于处理HTTP请求和响应的Java库,提供了简单易用的API,可以进行HTTP的GET、POST等操作,并支持代理、Cookie、认证等功能。Commons IO:Commons IO是Apache Commons的子项目,提供了对IO操作的封装和扩展,包括文件操作、流操作、文件拷贝等,简化了Java IO的使用。Java是一种广泛使用的编程语言,拥有丰富的工具类库,可以帮助开发者提高开发效率。原创 2023-07-05 01:50:05 · 281 阅读 · 0 评论 -
获取系统时间在java中怎么操作,还可以指定格式
可以根据自己的需要调整日期时间的格式。如果要计算其他时间间隔,例如小时、分钟或秒,可以使用类似的方式调用。要在Java中获取当前时间并将其格式化为指定形式,可以使用。方法将两天前的时间格式化为指定格式,并将结果打印输出。方法从当前时间中减去两天的时间间隔,得到两天前的时间。方法将当前时间格式化为指定格式,并将结果打印出来。表示年-月-日 时:分:秒。在上面的示例中,我们首先获取当前时间。对象来指定日期时间的格式,例如。在上面的示例中,我们首先使用。方法来减去两天的时间间隔。接下来,我们使用同样的。原创 2023-07-03 09:34:43 · 254 阅读 · 0 评论 -
如何JSONArray转换为Java对象
完成上述步骤后,JSONArray中的每个JSON对象都会转换为对应的Java对象,并存储在一个Java集合中(例如List)中,可以根据需要对其进行进一步处理或使用。创建JSONArray对象:根据具体情况,可以通过不同的方式创建JSONArray对象,比如通过解析JSON字符串、从文件中读取等。根据实际情况,可以选择适配不同的JSON库进行转换。导入所需的依赖:将JSONArray转换为Java对象需要使用到JSON库,例如。根据所选的JSON库,添加相应的依赖到项目中。在上述示例中,我们使用。原创 2023-06-27 23:54:22 · 1136 阅读 · 0 评论 -
Maven的classifier作用
实际上对应的jar包是json-lib-2.2.2-jdk15.jar和json-lib-2.2.2-jdk13.jar。对应的是json-lib-jdk15-javadoc-2.2.2.jar。可能会出现找不到jar包的情况。classifier可以是任意的字符串,用于拼接在GAV之后来确定指定的文件。对应的是json-lib-2.2.2-jdk15-javadoc.jar。区分项目的不同组成部分,例如:源代码、javadoc、类文件等。可用于区分不同jdk版本所生成的jar包。原创 2023-05-11 13:35:44 · 354 阅读 · 0 评论 -
DDL和DML的补充
(4)DELETE操作执行成功后会返回已删除的行数(如删除4行记录,则会显示“Affected rows:4”);截断操作不会返回已删除的行量,结果通常是“Affected rows:0”。DELETE操作删除表中记录后,再次向表中添加新记录时,对于设置有自增约束字段的值会从删除前表中该字段的最大值加1开始自增;TRUNCATE操作则是保留了表的结构,重新创建了这个表,所有的状态都相当于新表。TRUNCATE操作会导致隐式提交,因此不能回滚(在第十章中会讲解事务的提交和回滚)。原创 2023-03-21 21:44:27 · 50 阅读 · 0 评论 -
MySQL介绍
MySQL采用了General Public License,这意味着授予用户阅读、修改和优化源代码的权利,这样即使是免费版的MySQL的功能也足够强大,这也是为什么MySQL越来越受欢迎的主要原因。MySQL的核心程序完全采用多线程编程,这些线程都是轻量级的进程,它在灵活地为用户提供服务的同时,又不会占用过多的系统资源。总体来说,MySQL是一款开源的、免费的、轻量级的关系型数据库,其具有体积小、速度快、成本低、开放源码等优点,其发展前景是无可限量的。换句话说,社区版可以理解为是企业版的测试版。原创 2023-03-21 21:42:31 · 440 阅读 · 0 评论 -
判断一个数是不是质数(素数),3种方式介绍
那么,就只有 6x+1 和 6x+5 (即等同于6x-1) 可能是质数了。假如n是合数,必然存在非1的两个约数p1和p2,其中p1=sqrt(n)。我们继续分析,其实质数还有一个特点,就是它总是等于 6x-1 或者 6x+1,其中 x 是大于等于1的自然数。对于输入的自然数 n 较小时,也许效果不怎么明显,但是当 n 越来越大后,该方法的执行效率就会越来越明显了。然后,我们只需要从2开始,一直到小于其自身,依次判断能否被n整除即可,能够整除则不是质数,否则是质数。原创 2023-03-21 00:02:33 · 789 阅读 · 0 评论 -
16_SpringBoot_开发者工具_了解
Ctrl+Shift+Alt+/ 点击弹出框中Registry...使用开发者工具包不需要重启。1修改idea自动编译。2修改Reigstry。原创 2023-03-20 22:32:29 · 49 阅读 · 0 评论 -
15_SpringBoot_模板引擎总结_了解
Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。优点:静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。4、官方标准,用户群广,丰富的第三方jsp标签库。3、对jsp标签支持良好。原创 2023-03-20 22:30:17 · 59 阅读 · 0 评论 -
12_SpringBoot_整合Thymeleaf_掌握
长期以来,jsp在视图领域有非常重要的地位,随着时间的变迁,出现了一位新的挑战者:Thymeleaf,Thymeleaf是原生的,不依赖于标签库.它能够在接受原始HTML的地方进行编辑和渲染.因为它没有与Servelet规范耦合,因此Thymeleaf模板能进入jsp所无法涉足的领域。Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。在resources下新建templates文件夹。新建index.html。原创 2023-03-20 22:25:25 · 49 阅读 · 0 评论 -
Error:java:无效的源发行版:12
【File】—>【Project Structure】—>【Modules】—>【选择对应的项目】—>【点击source】—>【更改Language Level为对应的jdk版本】使用idea运行项目的时候,报出错误:无效的源发行版:XXX,这是因为idea设置的jdk版本和运行的项目版本的jdk版本号不匹配。解决:按照下面的方法一个个检查,都换成与自己jdk对应的版本,如下图所示,本人是jdk8,那么就统统换成8.如果项目jdk版本是12,idea环境设置的jdk版本为1.8,就会报错。原创 2023-03-19 11:19:28 · 2562 阅读 · 0 评论 -
Dubbo的整体架构设计及分层
服务代理层(Proxy):对生产者和消费者,dubbo都会产生一个代理类封装调用细节,业务层对远程调用无感。服务注册层(Registry):封装服务地址的注册和发现,以服务URL为中心。路由层(Cluster):封装多个提供者的路由和复杂均衡,并桥接注册中心。接口服务层(Service):面向开发者,业务代码,接口,实现等。运行provider。监控层(Monitor):RPC调用次数和调用时间监控。监控中心monitor:统计服务的调用次数和调用时间。远程调用层(Protocal):封装RPC调用。原创 2023-03-19 11:11:27 · 70 阅读 · 0 评论 -
负载均衡算法、类型
给配置高,负载低的机器配置更高的权重,让其处理更多的请求;而配置低,负载高的机器,给其分配比较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配给后端。最小连接数算法灵活只能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用率,将负责合理地分流到每一台服务器。与加权轮询法一样,加权随机发也根据后端机器的配置,系统的负载分配不同的权重。原创 2023-03-19 09:01:14 · 67 阅读 · 0 评论 -
Spring MVC常用注解汇总
Controller注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,Dispatch Servlet会自动扫描注解了此注解的类,并将Web请求映射到注解了@RequestMapping的方法上,需要注意的是,在Spring MVC声明控制器Bean的时候,只能使用@Controller。@RequestMapping注解是用来映射Web请求(访问路径和参数)、处理类和方法的。它可以注解在类和方法上。原创 2023-03-19 08:59:24 · 77 阅读 · 0 评论 -
kafka是pull还是push及优劣分析?
消息系统都致力于让consumer以最大的速率最快速的消费消息,但不幸的是,push模式下,当broker推送的速率远大于consumer消费的速率时,consumer恐怕就要崩溃了。Kafka遵循了一种大部分消息系统共同的传统的设计:producer将消息推送到broker,consumer从broker拉取消息。Pull有个缺点是,如果broker没有可供消费的消息,将导致consumer不断在循环中轮询,直到新消息到达。Pull模式下,consumer就可以根据自己的消费能力去决定这些策略。原创 2023-03-19 08:36:16 · 233 阅读 · 0 评论 -
简述RabbitMQ的架构设计
当应用程序与Rabbit Broker建立TCP连接的时候,客户端紧接着可以创建一个AMQP 信道(Channel) ,每个信道都会被指派一个唯一的D。生产者将消息发送给交换器的时候,一般会指定一个RoutingKey,用来指定这个消息的路由规则。Binding:通过绑定将交换器和队列关联起来,在绑定的时候一般会指定一个绑定键,这样RabbitMQ就可以指定如何正确的路由到队列了。交换器和队列实际上是多对多关系。消息会被平均分摊(轮询)给多个消费者进行消费,而不是每个消费者都收到所有的消息进行消费。原创 2023-03-19 08:07:53 · 87 阅读 · 0 评论 -
springCloud常用组件以及其作用
springCloud是一套微服务组件, 常用的Eureka,Ribbon,Hystrix,Feign,Gateway,Config,Bus(消息总线)等等。一、Eureka1、Eureka:提供服务注册和发现功能1、服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务注册中心按照服务名分类组织服务清单,同时还需要以心跳检测的方式去监测清单中的服务是否可用,若不可用需要从服务清单中剔除,以达到排除故障服务的效果。2、失效剔除。原创 2023-03-19 08:05:10 · 204 阅读 · 0 评论 -
Spring框架中使用了哪些设计模式及应用场景
Spring框架中使用了哪些设计模式及应用场景原创 2023-03-18 19:39:20 · 254 阅读 · 0 评论 -
Spring Bean的五个作用域
和请求作用域 request-scoped Bean 类似, 因为每个会话域 session-scoped Bean的范围限于特定的 HTTP Session 内部,所以一个 Session 内的 UserController Bean也是可以被随意修改, 而不会影响到其他 Session 中的 UserController Bean。你可以在请求内随意修改这个Bean实例的状态,因为其他 LoginController Bean实例看不到这些变化,Bean实例是与特定的请求相关的。原创 2023-03-18 19:26:18 · 139 阅读 · 0 评论 -
线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?
就好⽐⼀个企业⾥⾯有10个(core)正式⼯的名额,最多招10个正式⼯,要是任务超过正式⼯⼈数(task > core)的情况下,⼯⼚领导(线程池)不是⾸先扩招⼯⼈,还是这10⼈,但是任务可以稍微积压⼀下,即先放到队列去(代价低)。10个正式⼯慢慢⼲,迟早会⼲完的,要是任务还在继续增加,超过正式⼯的加班忍耐极限了(队列满了),就的招外包帮忙了(注意是临时⼯)要是正式⼯加上外包还是不能完成任务,那新来的任务就会被领导拒绝了(线程池的拒绝策略)。为什么是先添加列队而不是先创建最大线程?原创 2023-03-18 14:55:31 · 158 阅读 · 0 评论 -
为什么用线程池?解释一下线程池参数?
3)keepAliveTime、until表示超出核心线程数之外的线程的空闲存活时间,也就是核心线程不会消除,但是超出核心线程数的部分线程如果空闲一定的时间则会被消除,我们可以通过setKeepAliveTime来设置空闲时间。2)maxinumPoolSize代表的是最大线程数,它与核心线程数相对应,表示最大允许被创建的线程数,比如当前任务较多,将核心线程数都用完了,还无法满足需求时,此时就会创建新的线程,但是线程池内线程总数不会超过最大线程数。任务来了,直接有线程可用可执行,而不是先创建线程,再执行。原创 2023-03-18 11:57:58 · 70 阅读 · 0 评论 -
并发基础(一)并发的三大特性
并发:指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并行:即同时进行,指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。2.并发的三大特性(可见性、有序性、原子性)原创 2023-03-18 11:50:10 · 83 阅读 · 0 评论 -
串行、并行、并发
因为只有一个核,所以真正意义上两件事还是同一时间职能执行一个,但是并不要求其中一个必须执行完才能执行下一个,可以先执行一个的一部分,再执行另外一个的一部分。这里就跟CPU的时间片有关系了,CPU并不会一直执行一个任务,如果同时还有其他任务的话,他会雨露均沾,由于切换的特别块,所以看上去是同时执行的,。并行是利用多核CPU的优势,真正意义上的同时执行两件不相干的事。并发其实还是出现在单核CPU,或者职能利用到CPU的一个核。一个任务执行完在执行下一个任务。两个任务同一时间执行。原创 2023-03-18 11:43:06 · 69 阅读 · 0 评论 -
java类加载器有哪些
用户自定义类加载器(User-Defined ClassLoader),ClassLoader子类。用户自定义类加载器实现:开发人员通过继承抽象类java.lang.ClassLoader类的方式,实现自己的类加载器,以满足一些特殊需求。不建议覆盖loadClass()方法,而是建议把自定义的类加载逻辑写在findCalss()方法中。原创 2023-03-17 23:44:33 · 585 阅读 · 0 评论 -
如何实现一个IOC容器
4、进行对象的初始化操作,也就是给类中的对应属性值就行设置,也就是进行依赖注入,完成整个对象的创建,变成一个完整的bean对象,存储在容器的某个map结构中。2、进行配置文件的读取工作或者注解的解析工作,将需要创建的bean对象都封装成BeanDefinition对象存储在容器中。3、容器将封装好的BeanDefinition对象通过反射的方式进行实例化,完成对象的实例化工作。1、先准备一个基本的容器对象,包含一些map结构的集合,用来方便后续过程中存储具体的对象。原创 2023-03-17 23:06:53 · 120 阅读 · 0 评论 -
HashMap和Hashtable的区别
1 HashMap和Hashtable都是java.util包下的类2 HashMap和Hashtable都实现了Map接口,存储方式都是key-value形式3 HashMap和Hashtable同时也都实现了Serializable和Cloneable接口4 HashMap和Hashtable的负载因子都是0.75 负载因子(loadFactor):当我们第一次创建 HashMap 的时候,就会指定其容量(如果未明确指定,默认是 16),随着我们不断的向 HashMap 中 put 元素的时原创 2023-03-17 22:56:39 · 45 阅读 · 0 评论 -
String、StringBuffer、StringBuilder区别与联系
不同是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高。通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder。2.StringBuffer类则代表一个字符序列可变的字符串,可以通过append、insert、reverse、setChartAt、setLength等方法改变其内容。1. String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。原创 2023-03-17 17:20:01 · 65 阅读 · 0 评论 -
ArrayList和Vector的区别
2.区别:ArrayList底层扩容长度为原数组的1.5;Vector底层扩容长度为原数组的2倍。4.都是数组,数组优点:查询效率高;数组缺点:删除,增加元素效率低;3.ArrayList倍线程不安全,效率高;Vector线程安全,效率低(淘汰)1.联系:底层都是数组的扩容。原创 2023-03-17 17:15:49 · 52 阅读 · 0 评论 -
Get和Post的区别
4.GET方式提交的数据取决于URL长度的限制,理论上POST没有限制,可传较大量的数据。GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求在URL中传送的参数是有长度限制的,而POST则没有。GET在浏览器回退时是无害的,而POST会再次提交请求。原创 2023-03-17 17:15:25 · 88 阅读 · 0 评论 -
十六、退出登录
用户只需要向Spring Security项目中发送/logout退出请求即可。原创 2023-03-17 00:17:44 · 224 阅读 · 0 评论 -
十七、Spring Security中CSRF
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack” 或者Session Riding。通过伪造用户请求访问受信任站点的非法请求访问。跨域:只要网络协议,ip地址,端口中任何一个不相同就是跨域请求。客户端与服务进行交互时,由于http协议本身是无状态协议,所以引入了cookie进行记录客户端身份。在cookie中会存放session id用来识别客户端身份的。原创 2023-03-17 00:14:44 · 235 阅读 · 0 评论 -
三、UserDetailsService详解
当什么也没有配置的时候,账号和密码是由Spring Security定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。如果需要自定义逻辑时,只需要实现UserDetailsService接口即可。接口定义如下:1.返回值返回值UserDetails是一个接口,定义如下要想返回UserDetails的实例就只能返回接口的实现类。Spring Security中提供了如下的实例。对于我们只需要使用里面的User类即可。原创 2023-03-16 17:00:38 · 1066 阅读 · 0 评论