<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ch98000的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ch98000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ch98000]]></copyright><item><title><![CDATA[教你写一个入门级别的五子棋AI]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126892117</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126892117</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 15:50:29 +0800</pubDate><description><![CDATA[本文只是介绍五子棋AI的实现，最终的成品只是一个AI接口，并不包括GUI，且不依赖GUI。五子棋AI怎么确定AI的最佳落子位置？一般情况下，五子棋棋盘是由15条横线和15条纵线组合而成的，15x15的棋盘共有225个交叉点，也就是说共有225个落子点。假如说，AI是黑棋，先行落子，所以AI总共有225个落子点可以选择，我们可以对每个落子点进行评估打分，哪个分高下哪里，这样我们就能确定最佳落子点了。怎么对落子点进行评估打分呢？这就是本文的重点了，请看后文！]]></description><category></category></item><item><title><![CDATA[Java高级学习篇之网络编程]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126890927</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126890927</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 15:07:58 +0800</pubDate><description><![CDATA[（一）基本介绍JAVA是Internet上的语言，它从语言级上提供了对于网络应用程序的支持，使得可以很容易开发常见的应用程序，同时，Java中也提供了网络类库，可以很方便的进行网络连接。（二）计算机网络计算机网络是分布在不同地点的具有自治功能（具有完整的自处理设备）的计算机集合（>=2）。网络编程（目的）：直接或间接的通过网络协议与其他计算机实现数据的交换，进行通讯。核心问题（1）如何准确地定位网络上的一台主机或多台主机及主机上的具体应用？？（2）如何进行高效的数据传输？？网络要素。]]></description><category></category></item><item><title><![CDATA[当老板让我从 Java8 升到 Java11]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126890292</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126890292</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 14:45:47 +0800</pubDate><description><![CDATA[比如你做的某款工具，甚至你定制的某款 JDK，需要检查业务代码中是否有兼容性问题，或者你就单纯想扫描下业务代码中是否有什么什么你关心的东西，那么你可以仅仅修改这个项目中的各种规则表达式，并且定制化自己的 HTML 报告格式即可出色完成这个功能。具体调用链我不一一展开，只看很关键的环节。最后输出为 HTML 时，为了查询对应兼容性问题对应的官方说明，使用了 ResourceBundle 查找官方文档说明，由此我们可以继续深入，了解下官方文档的查询规范，而且是从代码层面的，十分严谨。]]></description><category></category></item><item><title><![CDATA[Java后端每日学点系列？线程知否，List懂否，垃圾回收器晓得否]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126890229</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126890229</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 14:41:33 +0800</pubDate><description><![CDATA[线程安全：当多个线程访问同一资源的的时候，不需要考虑多个线程对同一资源的并发访问造成不正确的结果，不需要进行同步控制来达到线程安全。加Synchronized锁，通过加锁来形成不会对同一资源并发操作的时候造成不正确的结果。使用互斥变量，用户此变量达到一个同步的结果。使用Lock锁机制，对线程不安全的代码块加lock锁。以上就是关于三者的总结：线程知否，List懂否，垃圾回收器晓得否。]]></description><category></category></item><item><title><![CDATA[最新面试题：用友OC，美团三面已挂]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126890114</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126890114</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 14:37:44 +0800</pubDate><description><![CDATA[如果主线程存了个ThreadLocal，然后主线程提交个任务给线程池，线程池里面的线程能读取到值吗？Java中的字符集采用的是哪种（不知道，我说可以自己选，UTF-8，GBK啥的，面试官说不对，让我下去了解下）StringBuilder和StringBuffer，为什么StringBuffer怎么保证的线程的安全？乐观锁是怎么设计的？在Innodb引擎下，写个sql，根据手机号更新用户名，手机号没有加索引，是行锁还是表锁？工作以后有一些工作是不感兴趣的，是枯燥重复的，如果分配给你了你怎么办？]]></description><category></category></item><item><title><![CDATA[Java代码审计之不安全的Java代码]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126889893</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126889893</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 14:34:54 +0800</pubDate><description><![CDATA[​ 在打靶场的同时，需要想一下如果你是开发人员你会怎样去防御这种漏洞，而作为攻击方你又怎么去绕过开发人员的防御。]]></description><category></category></item><item><title><![CDATA[validate方法中校验工具类]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126889630</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126889630</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 14:18:08 +0800</pubDate><description><![CDATA[例如：导入Excel校验，传入的是MultipartFile文件类型，我们不能使用注解进行校验实体信息，只能通过先解析成实体类然后进行校验，此时已经到了方法里面，不能使用校验注解来处理了，我们应该如何处理这类情况呢？但是，如果在方法Service中如何使用validate方法校验呢，加注解是不能生效的，因为源码没有直接这样处理。日常Java开发中，我们使用validate的校验是很方便的，但是也有一些特殊情况需要单独处理，仅供参考，实际开发请仔细测试找出合适的解决办法。]]></description><category></category></item><item><title><![CDATA[你知道为啥给JVM分配的内存越大，结果性能越差吗？]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126889316</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126889316</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 14:03:47 +0800</pubDate><description><![CDATA[这篇文章，给大家聊一个生产环境的实践经验：线上系统部署的时候，JVM堆内存大小是越大越好吗？先说明白一个前提，本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况，不是普通的Java应用系统。]]></description><category></category></item><item><title><![CDATA[浅谈微服务-SpringCloud以及框架发展史]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126889129</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126889129</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 13:54:10 +0800</pubDate><description><![CDATA[Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件，方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba，您只需要添加一些注解和少量配置，就可以将 Spring Cloud 应用接入阿里微服务解决方案，通过阿里中间件来迅速搭建分布式应用系统。]]></description><category></category></item><item><title><![CDATA[RocketMQ部署]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126888989</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126888989</guid><author>ch98000</author><pubDate>Fri, 16 Sep 2022 13:51:48 +0800</pubDate><description><![CDATA[在 GitHub 中搜索 rocketmq-externals，其中 rocketmq-console 就是 RocketMQ 可视化控制台，我们可以将源码克隆下来，然后自己 mvn package，然后运行 jar 包。在进行工具测试消息收发之前，我们需要告诉客户端NameServer的地址，RocketMQ有多种方式在客户端中设置NameServer地址，这里我们利用环境变量。RocketMQ 的安装包分为两种，二进制包和源码包，二进制包是已经编译完成后可以直接运行的，源码包是需要编译后运行的。]]></description><category></category></item><item><title><![CDATA[@Autowired 和 @Resource 有什么区别？]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126868412</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126868412</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 11:45:37 +0800</pubDate><description><![CDATA[来源不同：@Autowired 来自 Spring 框架，而 @Resource 来自于（Java）JSR-250；依赖查找的顺序不同：@Autowired 先根据类型再根据名称查询，而 @Resource 先根据名称再根据类型查询；支持的参数不同：@Autowired 只支持设置 1 个参数，而 @Resource 支持设置 7 个参数；]]></description><category></category></item><item><title><![CDATA[巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126868363</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126868363</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 11:43:26 +0800</pubDate><description><![CDATA[个人简介是对求职者经历的一个简单描述，内容不必过多，但通过简单地描摹，可以让简历筛查人员在短时间内判断求职者与对应岗位是否匹配：Web开发领域深耕三年，热爱编程，熟练掌握Golang开发语言，掌握关系型数据库和非关系型数据库，掌握Golang高性能框架Iris，能够在很短时间内独立开发项目。非常注重自我学习和提升，能够胜任高强度高压力的繁杂工作。希望能和贵公司一起成长。]]></description><category></category></item><item><title><![CDATA[好家伙, 灰度发布 还这么多细节]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126867840</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126867840</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 11:21:26 +0800</pubDate><description><![CDATA[其实就是优雅关机 流量切换不能有临时的接口不可用（ribbon 要有重试机制，服务通知要即时，可以看阿里云有一个 讲流量切换的 视频），然后就是 升级v2之后需要先验证一下，然后流量再切到v2，防止业务不可用的情况（具体原因没了解，应该是被用户说了。。。。）]]></description><category></category></item><item><title><![CDATA[HashMap集合源码详解]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126867433</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126867433</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 11:13:42 +0800</pubDate><description><![CDATA[HashMap是Map接口的实现类，基于哈希表结构实现的。其主要特点是以key-value存储形式存储数 据，即用与存放键值对。HashMap 的操作不是同步的，这意味着它线程不安全。特点：无序性 : 存入和取出元素顺序不一致唯一性 : 键key是唯一的可存null : 键和值位置都可以是null，但是键位置只能是一个null数据结构 : 数据结构控制的是键key而非值value！jdk1.8之前数据结构是：链表 + 数组jdk1.8之后数据结构是：链表 + 数组 + 红黑树。]]></description><category></category></item><item><title><![CDATA[作为大厂面试官，原来这种学生最吃香！]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126867271</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126867271</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 11:02:05 +0800</pubDate><description><![CDATA[面试其实是一个双方博弈的过程，前提是自己肚子足够有货，我记得我当年校招，虽然谈不上 Offer 收割机，但也是非常不错的。然后今年的就业形势更严峻，大家一定要提前做好充分的准备，如果有任何问题，也可以加我微信进行沟通。最后祝愿大家都能拿到心仪的 Offer，加油！]]></description><category></category></item><item><title><![CDATA[MySQL的常用优化方案]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126867155</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126867155</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 10:57:57 +0800</pubDate><description><![CDATA[我们知道， MySQL DB 的数据是存放在磁盘上的，其读写速度无法和存放在内存中的 redis 相比，当 MySQL 记录数过大时，增删改查时系统的吞吐量会非常的大，数据增删改查的性能会急剧下降。为了改善以上情况，我们需要对 MySQL 进行相关优化，可以参考以下步骤来优化：]]></description><category></category></item><item><title><![CDATA[「高并发」面试官：讲讲高并发场景下如何优化加锁方式？]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126866298</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126866298</guid><author>ch98000</author><pubDate>Thu, 15 Sep 2022 10:27:03 +0800</pubDate><description><![CDATA[但是，如果ResourcesRequester类的applyResources()方法执行的时间比较长，或者说，程序并发带来的冲突比较大，此时，可能需要循环成千上万次才能同时获取到转出账户和转入账户。**因为当wait()方法返回时，有可能线程执行的条件已经改变，也就是说，之前条件是满足的，但是现在已经不满足了，所以要重新检验条件是否满足。当线程执行的条件满足时，可以使用Java提供的notify()和notifyAll()方法来通知互斥锁等待队列中的线程，我们可以使用下图来简单的表示这个过程。]]></description><category></category></item><item><title><![CDATA[105道Java面试题，认真思考对你面试很有价值]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126836088</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126836088</guid><author>ch98000</author><pubDate>Tue, 13 Sep 2022 16:27:35 +0800</pubDate><description><![CDATA[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、双亲委托模型。]]></description><category></category></item><item><title><![CDATA[2022Java最新真实面试题汇总]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126835718</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126835718</guid><author>ch98000</author><pubDate>Tue, 13 Sep 2022 16:13:15 +0800</pubDate><description><![CDATA[一、面经适当夸夸面试官（或所在公司）不会有坏处如果某个问题完全不会（或稍微懂点），直接承认（或略作回答）并把话题引导向类似话题（redis集群的槽机制 -> 一致性哈希）第二条如果完全不会，可以在表达自己不会之后给与面试官一点反问，表现出自己的求知欲与关注度所有话题都可以适当性的发散，不要太发散以免显得有备而来所有问题（熟悉或不熟悉）的回答不要太快，给面试官反应与打断的时间，同时方便自己梳理逻辑，显得沉稳；回答太快容易显得有备而来一定要乐观向上（至少摄像头下的你看起来得是这样）]]></description><category></category></item><item><title><![CDATA[Java注解系统学习与实战]]></title><link>https://blog.youkuaiyun.com/ch98000/article/details/126835612</link><guid>https://blog.youkuaiyun.com/ch98000/article/details/126835612</guid><author>ch98000</author><pubDate>Tue, 13 Sep 2022 16:08:46 +0800</pubDate><description><![CDATA[利用注解+springAOP实现系统日志记录,主要用于记录相关的日志到数据库，当然，老猫这里的demo只会到日志打印层面，至于数据库落库存储有兴趣的小伙伴可以进行扩展。}这个地方只是定义了一个字段，当然大家也可以进行拓展。接下来，咱们以这个注解作为切点编写相关的切面程序。@Aspect@Component@Order(0)}System.out.println("进来了");//创建解析器//获取表达式//设置解析上下文(有哪些占位符，以及每种占位符的值)]]></description><category></category></item></channel></rss>