自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 教你写一个入门级别的五子棋AI

本文只是介绍五子棋AI的实现,最终的成品只是一个AI接口,并不包括GUI,且不依赖GUI。五子棋AI怎么确定AI的最佳落子位置?一般情况下,五子棋棋盘是由15条横线和15条纵线组合而成的,15x15的棋盘共有225个交叉点,也就是说共有225个落子点。假如说,AI是黑棋,先行落子,所以AI总共有225个落子点可以选择,我们可以对每个落子点进行评估打分,哪个分高下哪里,这样我们就能确定最佳落子点了。怎么对落子点进行评估打分呢?这就是本文的重点了,请看后文!

2022-09-16 15:50:29 2846

原创 Java高级学习篇之网络编程

(一)基本介绍JAVA是Internet上的语言,它从语言级上提供了对于网络应用程序的支持,使得可以很容易开发常见的应用程序,同时,Java中也提供了网络类库,可以很方便的进行网络连接。(二)计算机网络计算机网络是分布在不同地点的具有自治功能(具有完整的自处理设备)的计算机集合(>=2)。网络编程(目的):直接或间接的通过网络协议与其他计算机实现数据的交换,进行通讯。核心问题(1)如何准确地定位网络上的一台主机或多台主机及主机上的具体应用??(2)如何进行高效的数据传输??网络要素。

2022-09-16 15:07:58 405

原创 当老板让我从 Java8 升到 Java11

比如你做的某款工具,甚至你定制的某款 JDK,需要检查业务代码中是否有兼容性问题,或者你就单纯想扫描下业务代码中是否有什么什么你关心的东西,那么你可以仅仅修改这个项目中的各种规则表达式,并且定制化自己的 HTML 报告格式即可出色完成这个功能。具体调用链我不一一展开,只看很关键的环节。最后输出为 HTML 时,为了查询对应兼容性问题对应的官方说明,使用了 ResourceBundle 查找官方文档说明,由此我们可以继续深入,了解下官方文档的查询规范,而且是从代码层面的,十分严谨。

2022-09-16 14:45:47 493

原创 Java后端每日学点系列?线程知否,List懂否,垃圾回收器晓得否

线程安全:当多个线程访问同一资源的的时候,不需要考虑多个线程对同一资源的并发访问造成不正确的结果,不需要进行同步控制来达到线程安全。加Synchronized锁,通过加锁来形成不会对同一资源并发操作的时候造成不正确的结果。使用互斥变量,用户此变量达到一个同步的结果。使用Lock锁机制,对线程不安全的代码块加lock锁。以上就是关于三者的总结:线程知否,List懂否,垃圾回收器晓得否。

2022-09-16 14:41:33 390

原创 最新面试题:用友OC,美团三面已挂

如果主线程存了个ThreadLocal,然后主线程提交个任务给线程池,线程池里面的线程能读取到值吗?Java中的字符集采用的是哪种(不知道,我说可以自己选,UTF-8,GBK啥的,面试官说不对,让我下去了解下)StringBuilder和StringBuffer,为什么StringBuffer怎么保证的线程的安全?乐观锁是怎么设计的?在Innodb引擎下,写个sql,根据手机号更新用户名,手机号没有加索引,是行锁还是表锁?工作以后有一些工作是不感兴趣的,是枯燥重复的,如果分配给你了你怎么办?

2022-09-16 14:37:44 153

原创 Java代码审计之不安全的Java代码

​ 在打靶场的同时,需要想一下如果你是开发人员你会怎样去防御这种漏洞,而作为攻击方你又怎么去绕过开发人员的防御。

2022-09-16 14:34:54 3146

原创 validate方法中校验工具类

例如:导入Excel校验,传入的是MultipartFile文件类型,我们不能使用注解进行校验实体信息,只能通过先解析成实体类然后进行校验,此时已经到了方法里面,不能使用校验注解来处理了,我们应该如何处理这类情况呢?但是,如果在方法Service中如何使用validate方法校验呢,加注解是不能生效的,因为源码没有直接这样处理。日常Java开发中,我们使用validate的校验是很方便的,但是也有一些特殊情况需要单独处理,仅供参考,实际开发请仔细测试找出合适的解决办法。

2022-09-16 14:18:08 522

原创 你知道为啥给JVM分配的内存越大,结果性能越差吗?

这篇文章,给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗?先说明白一个前提,本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应用系统。

2022-09-16 14:03:47 273

原创 浅谈微服务-SpringCloud以及框架发展史

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

2022-09-16 13:54:10 282

原创 RocketMQ部署

在 GitHub 中搜索 rocketmq-externals,其中 rocketmq-console 就是 RocketMQ 可视化控制台,我们可以将源码克隆下来,然后自己 mvn package,然后运行 jar 包。在进行工具测试消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ有多种方式在客户端中设置NameServer地址,这里我们利用环境变量。RocketMQ 的安装包分为两种,二进制包和源码包,二进制包是已经编译完成后可以直接运行的,源码包是需要编译后运行的。

2022-09-16 13:51:48 1056

原创 @Autowired 和 @Resource 有什么区别?

来源不同:@Autowired 来自 Spring 框架,而 @Resource 来自于(Java)JSR-250;依赖查找的顺序不同:@Autowired 先根据类型再根据名称查询,而 @Resource 先根据名称再根据类型查询;支持的参数不同:@Autowired 只支持设置 1 个参数,而 @Resource 支持设置 7 个参数;

2022-09-15 11:45:37 201

原创 巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)

个人简介是对求职者经历的一个简单描述,内容不必过多,但通过简单地描摹,可以让简历筛查人员在短时间内判断求职者与对应岗位是否匹配:Web开发领域深耕三年,热爱编程,熟练掌握Golang开发语言,掌握关系型数据库和非关系型数据库,掌握Golang高性能框架Iris,能够在很短时间内独立开发项目。非常注重自我学习和提升,能够胜任高强度高压力的繁杂工作。希望能和贵公司一起成长。

2022-09-15 11:43:26 1456

原创 好家伙, 灰度发布 还这么多细节

其实就是优雅关机 流量切换不能有临时的接口不可用(ribbon 要有重试机制,服务通知要即时,可以看阿里云有一个 讲流量切换的 视频),然后就是 升级v2之后需要先验证一下,然后流量再切到v2,防止业务不可用的情况(具体原因没了解,应该是被用户说了。。。。)

2022-09-15 11:21:26 439

原创 HashMap集合源码详解

HashMap是Map接口的实现类,基于哈希表结构实现的。其主要特点是以key-value存储形式存储数 据,即用与存放键值对。HashMap 的操作不是同步的,这意味着它线程不安全。特点:无序性 : 存入和取出元素顺序不一致唯一性 : 键key是唯一的可存null : 键和值位置都可以是null,但是键位置只能是一个null数据结构 : 数据结构控制的是键key而非值value!jdk1.8之前数据结构是:链表 + 数组jdk1.8之后数据结构是:链表 + 数组 + 红黑树。

2022-09-15 11:13:42 150

原创 作为大厂面试官,原来这种学生最吃香!

面试其实是一个双方博弈的过程,前提是自己肚子足够有货,我记得我当年校招,虽然谈不上 Offer 收割机,但也是非常不错的。然后今年的就业形势更严峻,大家一定要提前做好充分的准备,如果有任何问题,也可以加我微信进行沟通。最后祝愿大家都能拿到心仪的 Offer,加油!

2022-09-15 11:02:05 277

原创 MySQL的常用优化方案

我们知道, MySQL DB 的数据是存放在磁盘上的,其读写速度无法和存放在内存中的 redis 相比,当 MySQL 记录数过大时,增删改查时系统的吞吐量会非常的大,数据增删改查的性能会急剧下降。为了改善以上情况,我们需要对 MySQL 进行相关优化,可以参考以下步骤来优化:

2022-09-15 10:57:57 1483

原创 「高并发」面试官:讲讲高并发场景下如何优化加锁方式?

但是,如果ResourcesRequester类的applyResources()方法执行的时间比较长,或者说,程序并发带来的冲突比较大,此时,可能需要循环成千上万次才能同时获取到转出账户和转入账户。**因为当wait()方法返回时,有可能线程执行的条件已经改变,也就是说,之前条件是满足的,但是现在已经不满足了,所以要重新检验条件是否满足。当线程执行的条件满足时,可以使用Java提供的notify()和notifyAll()方法来通知互斥锁等待队列中的线程,我们可以使用下图来简单的表示这个过程。

2022-09-15 10:27:03 353

原创 105道Java面试题,认真思考对你面试很有价值

1、什么是面向对象?3、==和equals比较4、hashCode与equals5、final7、重载和重写的区别8、接口和抽象类的区别9、List和Set的区别10、ArrayList和LinkedList区别11、HashMap和HashTable有什么区别?其底层实现是什么?12、ConcurrentHashMap原理,jdk7和jdk8版本的区别?13、什么是字节码?采用字节码的好处是什么?14、Java中的异常体系15、Java类加载器16、双亲委托模型。

2022-09-13 16:27:35 175

原创 2022Java最新真实面试题汇总

一、面经适当夸夸面试官(或所在公司)不会有坏处如果某个问题完全不会(或稍微懂点),直接承认(或略作回答)并把话题引导向类似话题(redis集群的槽机制 -> 一致性哈希)第二条如果完全不会,可以在表达自己不会之后给与面试官一点反问,表现出自己的求知欲与关注度所有话题都可以适当性的发散,不要太发散以免显得有备而来所有问题(熟悉或不熟悉)的回答不要太快,给面试官反应与打断的时间,同时方便自己梳理逻辑,显得沉稳;回答太快容易显得有备而来一定要乐观向上(至少摄像头下的你看起来得是这样)

2022-09-13 16:13:15 879 1

原创 Java注解系统学习与实战

利用注解+springAOP实现系统日志记录,主要用于记录相关的日志到数据库,当然,老猫这里的demo只会到日志打印层面,至于数据库落库存储有兴趣的小伙伴可以进行扩展。}这个地方只是定义了一个字段,当然大家也可以进行拓展。接下来,咱们以这个注解作为切点编写相关的切面程序。@Aspect@Component@Order(0)}System.out.println("进来了");//创建解析器//获取表达式//设置解析上下文(有哪些占位符,以及每种占位符的值)

2022-09-13 16:08:46 340

原创 跟我一起学mybatis之注解开发

修改MyBatis的核心配置文件,我们使用了注解替代的映射文件,所以我们只需要加载使用了注解的Mapper接口即可。@Results:可以与@Result 一起使用,封装多个结果集。@Select(“查询的 SQL 语句”):执行查询操作注解。@Insert(“查询的 SQL 语句”):执行新增操作注解。@Update(“查询的 SQL 语句”):执行修改操作注解。@Delete(“查询的 SQL 语句”):执行删除操作注解。我们完成简单的student表的增删改查的操作。@Result:实现结果集封装。

2022-09-13 16:02:13 124

原创 Java 函数式编程

由 JS 转 Java,写惯了 React,习惯了函数式,因此转 Java 时也是先学函数式。

2022-09-13 15:52:37 273

原创 采访236位第一批秋招上岸的同学后,我整理了这份Java面试手册

不知不觉又是一年秋招了,现在已入八月,快的人甚至已经成功上岸了,当然时间还有的是,大部分同学也都还在准备中。入行这么些年,每年都会有很多读者或者朋友跟我诉苦,无非都是觉得自己技术还不错,就是面试发挥总是不理想云云,其实仔细想想也不奇怪,就跟上学时每个班想必都有一两个同学平时学习扎实,考试时成绩却总是不上不下。

2022-09-13 15:35:52 213

原创 详解Java中的异常和处理

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。

2022-09-13 15:05:38 194

原创 阿里资深架构师整理分享60道全套Java核心技术面试题及答案

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法接口(interface)是抽象类的变体。

2022-09-13 14:54:20 265

原创 Java程序员不得不会的124道面试题(含答案)

专注于编程、互联网动态。最终将总结的技术、心得、经验(数据结构与算法、源码分析等)享给大家,这里不只限于技术!还有职场心得、生活感悟、以及面经。

2022-09-13 14:36:17 801

原创 京东购物车如何提升30%性能

购物车面临的挑战:1)新业务:随着业务形态的丰富,购物车在不断支持各种新业务,依赖的外部接口也随之增加;2)下沉:一些前端调用的接口下沉到购物车中台;3)前置:结算流程很多业务前置到购物车中,如优惠券、京豆;4)扩容:为改善用户体验购物车可容纳的商品数量在不断增长;这些导致购物车依赖的RPC接口数量及分页调用次数都在不断增加。购物车作为交易流程开端,本身流量较大,在业务复杂化的背景下,如何提高性能保证用户体验,成为购物车面临的较大挑战。

2022-09-13 14:07:18 556

原创 汇总了30余场面试,4-6月Java面经笔记及详解,通用性极强

JVM 39 道、Java I/O 15 道、Kafka 16 道、MySQL 32 道、Netty 15 道 、Dubbo 15 道、ZooKeeper 28 道、MyBatis 27 道、Redis 40 道、Spring 129 道、消息队列 16 道、分布式 15 道、微服务 15 道、Java 并发编程 72 道、Java 集合 30 道。而且题目贴合实际,就算你没有面试的打算,也能帮你夯实基础、完善技术体系。,自身有技术追求,但欠点儿火候,多练习多吸收知识,锤炼一下问题不大。

2022-09-12 14:00:55 274

原创 Java正在卷土重来?别开玩笑了,它明明一直很火

Java 不行了?”“Java 统治地位已不复存在?”——作为一门历史悠久的经典语言,在新语言层出不穷的时代,Java 似乎隔三差五就要面对类似的消极评价。随意听听近来开发人员们的流言蜚语,你可能会认为 Java 正处于一个大的衰退期,甚至到了垂死挣扎的边缘。再仔细看那些人气数据,你也会认为 Java 已经慢慢地将市场份额拱手让给了它的竞争对手。但一些反对“Java 消亡论”的支持者可能会反驳说,是因为有越来越多的语言出现,所以大家能分到的蛋糕也越来越小。

2022-09-12 13:57:27 168

原创 构建 Java 镜像的 10 个最佳实践

带有凭据的设置将不会出现在你的最终镜像中。因此,将它们作为 Java 容器镜像的一部分存在一些缺点:1) 镜像体积变大,导致更长的下载和构建时间。从安全性的角度来看,我的观点是,以完全控制和正确的方式创建 Dockerfile,是创建镜像更好,更安全的方式。这意味着每次构建的结果可能会完全不同,今天的最新镜像可能不同于明天或下周的最新镜像,导致你的应用程序的字节码也是不同的,并且可能发生意外。因此,从本质上讲,如果它是可运行的 JAR,那么只需要使用 JRE 和已编译的 Java 构件来构建镜像。

2022-09-12 13:34:04 215

原创 Java 下数据业务逻辑开发技术 JOOQ 和 SPL

很多开源技术都可以在Java下实现以数据库为核心的业务逻辑,其中JOOQ的计算能力比Hibernate强,可移植性比MyBatis强,受到越来越多的关注。esProc SPL是新晋的数据计算语言,同样在计算能力和可移植性方面优势突出。下面对二者进行多方面的比较,从中找出开发效率更高的数据业务逻辑开发技术。JOOQ商业版主要支持了商业数据库和存储过程,不在此次讨论范围。

2022-09-12 13:26:03 268

原创 深入淺出 Apache Maven 的 Plugins 外掛機制

Apache Maven 之所以強大,是因為他有一個強大的 Plugin 執行框架,你任何想讓 Maven 幫你完成的工作,無論是建置(Build)、封裝(Packaging)、產生報表(Reporting)、執行測試(Tests),全部都是透過 Plugins 完成的。它除了內建的核心 Plugins 之外,還有數以百計的第三方 Plugins 可以安裝使用。今天這篇文章我就來介紹一下他的基本架構與使用方式。

2022-09-12 13:19:07 362

原创 Java微服务六边形结构简介

因此,只要用户端和交互者之间的契约是固定的,用户端的任何参与者,无论是命令行还是 HTTP API 控制器,都可以调用相同的业务流程。在这里,我们可以看到,如果我们想要交换数据源,我们只需要实例化该数据源并将其插入 BookService,因为 BookService 将 BookRepository 的引用作为其构造函数参数。根据请求,它执行一些特定的逻辑,请求逻辑所需的资源,最后将预定义的响应发送回用户界面。在这里,我们有调用业务流程的参与者。所以,在这里,我们有由业务逻辑驱动的参与者。

2022-09-12 11:56:59 212

原创 聊聊Hystrix的源码

这篇文章主要介绍了Hystrix是怎么进行初始化的话,主要利用了SpringBoot的自动配置和Aspect面向切面编程和RxJava响应式编程,了解了Hystrix的源码内容对我们以后分析服务的熔断等功能是有帮助的。

2022-09-12 11:28:06 368

原创 Java必会基础题,量不多,但每天进步一点也是好的

了-个新对象(这也是string和stringbuffer的区别, stringbuffer的底层是char数组, 所以可以直。按道理修改str和ch时会影响原来的值,但是由于string是不可变的, 对string的修改实际 上是new。由于string和char数组都是引用类型,调用方法时传递的是引用,如下图所示。接修改), 而对char数组的修改则会影响原值。编译错误 ------------>正确答案。正确答案: tarena and gbc。以下程序的输出结果为。

2022-09-12 11:17:25 232

原创 微服务架构详解

拆分成多个服务之后,涉及到服务之间的调用吧,一个服务调用了三个服务的模块,那在这个服务里,配置三个调用地址,看起来是不是很麻烦呀,所以就出现了网关,所有的服务调用都调用到网关,然后在网关里配置路由,进行服务的转发,类似于代理的作用。通过上面的描述可以看出,微服务在解决了单体架构带来的问题的同时,也出现了部署复杂,需要增加中间件联络各服务的问题。复杂的业务拆分成多个业务,每个业务是一个独立的微服务,彻底的去耦合,利于分工,当需要增加业务的时候,可以方便创建新的微服务扩展业务,而不用担心有没有别的地方耦合。

2022-09-12 11:07:32 660

原创 跟我一起学mybatis

4.1 核心配置文件介绍核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等。

2022-09-12 11:04:25 87

原创 JAVA面试题——初级

JDK:是java开发的工具箱,包含jre,还包含将java文件编译为class文件的javac工具类(编译器),除此之外还包括java原生的API;char型变量是用来存储Unicode编码的字符的,unicode编码的字符集中包含汉字所以,char行变量中可以存储汉字。重写与重载都是java多态的体现。重写是父类与子类之间的多态性的一种表现形式,重载是一个类中多态性的表现形式。JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时。

2022-09-09 13:28:28 63

原创 一个注解解决ShardingJdbc不支持复杂SQL

公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是分片表。报错如下:这下糟了嘛。熟悉 Sharding JDBC 的同学应该知道,有很多 SQL 它是不支持的。官方截图如下:如果要去修改这些复杂 SQL 的话,可能要花费很多时间。那怎么办呢?只能从 Sharding JDBC 这里找突破口了,两天的研究,出来了下面这个只需要加一个注解轻松解决 Sharding Jdbc 不支持复杂 SQL 的方案。

2022-09-09 13:23:30 1786

原创 Java 性能优化的七个方向

同作为程序员,在平常工作中,我们面对的优化方式,主要是通过一系列的技术手段,来完成对既定的优化目标。这 7 大方向是代码优化的最主要方向,当然,性能优化还包含数据库优化、操作系统优化、架构优化等其他一些内容,这些不是我们的重点,在后面的文章中,我们也只做简要的介绍。像 Golang 这样的语言,有更加轻量级的协程(Coroutine),协程是一种比线程更加轻量级的存在,但目前在 Java 中还不太成熟,就不做过多介绍了,但本质上,它也是对于多核的应用,使得任务并行执行。异步请求,就像拳头打在海绵上。

2022-09-09 13:13:44 121

空空如也

空空如也

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

TA关注的人

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