Java
程序员自我修养
一个程序员的自我修养,自我成长之路
展开
-
AI智能人机对战五子棋(Java实现图形界面)
简述这是本学期上完Java课后老师给出的课程设计题目,目的是:熟悉与掌握GUI编程;实现五子棋棋盘和棋子的绘制;实现游戏AI以及对二维数组的使用。界面效果图电脑先行,玩家输赢图:玩家先行,玩家输赢图:整体设计界面设计部分这里实现的是框架的主要界面设计(由4366中的在线五子棋修改而来),除棋盘之外的所有部分都在这里完成,即标签,图片,按钮的添加,框架边框的去除,实现框...原创 2017-07-25 18:05:44 · 7200 阅读 · 1 评论 -
Netty
一 Netty 是什么?Netty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能、可扩展协议的服务器和客户端。Netty 是一个 NIO 客户端服务器框架,使用它可以快速简单的开发网络应用程序,比如服务器和客户端的协议,Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。...原创 2018-10-12 00:29:45 · 349 阅读 · 0 评论 -
HashMap
HashMap 的内存结构和原理,以及线程安全都是面试的热点问题,HashMap 大家并不陌生,它是用于映射(键值对)处理的数据类型。随着 JDK 版本的不断升级更新,JDK 1.8 引入了红黑树的数据结构对 HashMap 底层实现进行了优化。我们先看一下 JDK 1.7 版本的 HashMap ,然后在看一下 JDK 1.8 版本的 HashMap 有何变化。一 Java 7 HashMa...原创 2018-10-07 15:23:50 · 275 阅读 · 0 评论 -
CAS
一 前言在 JDK 5 之前 Java 语言是靠 synchronized 关键字来保证同步的,这会导致有锁,锁的机制会存在以下问题。1. 在多线程竞争下,加锁、释放锁会导致较多的上下文切换和调度延时,引起性能问题。2. 一个线程持有锁会导致其它所有需要锁的线程挂起。3. 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile 是一个...原创 2018-10-08 23:07:18 · 224 阅读 · 0 评论 -
代理模式之动态代理
在上一篇博客https://blog.csdn.net/weixin_39453325/article/details/84201400中我们详细讲解了静态代理模式,很显然静态代理有如下的缺点。静态代理的缺点:因为代理对象需要与目标对象实现一样的接口,一般一个目标对象类需要对应一个代理类,所以会有很多代理类,类太多,不易管理。同时,一旦接口增加方法,目标对象与代理对象都要维护。解决方法:使...原创 2018-11-21 16:47:06 · 203 阅读 · 0 评论 -
代理模式之静态代理
模式动机在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接的引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户端不能看到的内容和服务或者添加客户需要的额外服务。通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作或者将新的对象作为真实对象的一个替身,这种实现机制即为代理模式,通过引入...原创 2018-11-21 16:50:24 · 563 阅读 · 0 评论 -
TCP 的粘包与拆包问题
之前在做项目时,使用 Java NIO 来搭建服务器端及客户端程序,发现待发送的数据大于发送缓冲区 ByteBuffer 大小时,将发生拆包情况,会把待发送的数据包分多次发送到客户端。当时是分配了更大的字节缓冲区来解决这个问题,后来了解到这是 TCP 协议中的粘包与拆包问题。首先我们了解一下 TCP 的特性。TCP 特性TCP (Transmission Control Protocol)...原创 2018-11-17 17:57:05 · 496 阅读 · 0 评论