源码

有了这个开源 Java 项目,开发出炫酷的小游戏好像不难?

半腔热情 提交于 2020-03-03 09:29:01
本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 的游戏。 本文作者:HelloGitHub- 秦人 HelloGitHub 推出的 《讲解开源项目》 系列,今天给大家带来一款开源 Java 游戏框架项目—— FXGLGames 项目源码地址:https://github.com/AlmasB/FXGLGames 一、项目介绍 都说 Java 语言无处不能,可以做桌面程序,可以做后台开发,可以做手机应用,也可以做游戏开发。本篇我们就重点讲一下一款 Java 游戏框架 FXGL ,它无需安装或设置,开箱即用,只需本地安装 jdk8+ 即可。游戏可轻松打包为可执行的 *.jar 文件,一行命令即可运行。 二、运行项目 2.1 前提 安装 Jdk8 或者更高版本,全称 Java Development Kit,它是 Java 的库函数,是编译、运行 Java 程序的工具包。 安装 Maven3 环境,进行项目构建和项目依赖包管理。 安装开发工具,例如:Idea,Eclipse,Spring Tool Suite 等。 安装 Git 工具,使用 GitBash 工具进行下载,提交代码等操作。 2.2 下载项目 执行如下代码,将项目下载到本地。 cd D:\devEnv git clone https://github.com/AlmasB/FXGLGames.git 2

Eclipse中给Jar包加源码链接

混江龙づ霸主 提交于 2020-03-03 09:13:04
今天想把百度地图jar包的源码稍微浏览一下,于是需要给Eclipse中的jar加上源码,以前一直用第一种方法,但今天不知道为什么class文件中没出现 Attach Source...按钮,于是另寻方法,如下: 首先jar文件通过jd-gui进行反编译得到java文件,过程就不说了 第一种方法: 直接打开了class文件后,在文件中点 attach source 按钮,然后添加,如下图: 第二种方法: 右点击项目-Properties-Java Build Path-Libraries-展开要添加源码的Jar包-Source Attachment 然后Edit...添加即可 这边注意,如果是External File...,那么这个文件的文件名应该和Jar包名是一致的(我自己导入时,没有一致,然后点击class文件后没显示源码) 来源: https://www.cnblogs.com/creasylai19/p/3808413.html

从源码分析Spring是如何解决循环依赖的

試著忘記壹切 提交于 2020-03-03 08:06:05
循环依赖问题 什么是循环依赖 首先看一下下面的Spring配置文件 <!-- beanA依赖于beanB --> <bean id="beanA" class="top.okay3r.ClassA"> <property name="beanB" ref="beanB"/> </bean> <!-- beanB依赖于beanA --> <bean id="beanB" class="top.okay3r.ClassB"> <property name="beanA" ref="beanA"/> </bean> 当IOC容器读取上面的配置时,就会先对beanA进行加载;在对beanA进行属性填充时,会发现beanA依赖于beanB,然后就会对beanB进行加载;当对beanB进行属性填充时,又会发现beanB依赖于beanA,于是就加载beanA… 可以想到,如果Spring的容器对于这种循环依赖问题不作出响应的处理,那么就会无限执行上面的过程。最终的结果就可能造成OOM从而导致程序崩溃 Spring中bean注入的方式 我们知道在Spring中,注入bean的方式有【构造器注入】和【setter注入】两种方式。但在我们使用Spring管理bean时,可能会遇到一种特殊的情况,那么就是上面所说的循环依赖问题 我们再看一下Spring创建bean的过程 Spring创建bean的过程

[Java 源码] LinkedList

ⅰ亾dé卋堺 提交于 2020-03-03 07:01:50
还是和前面的 ArrayList 一样, 选出重要的源码进行分析 : 基础属性 // 结点数量 transient int size = 0; // 第一个结点(头结点) transient Node<E> first; // 最后一个结点(尾结点) transient Node<E> last; // 不带参数的构造器 public LinkedList() { } // 参数为 collection 集合的构造器 public LinkedList(Collection<? extends E> c) { this(); addAll(c); } // 存放结点数据的内部类, 从这里可以看到是双向链表 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } } linkLast 方法 : 将元素放到链表的结尾处 : void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null)

CodeIgniter 源码解读之模型

不打扰是莪最后的温柔 提交于 2020-03-03 05:11:38
模型 啥是模型?模型是干嘛的?CI中的模型(Model)又是如何工作的?这篇我们就来看看吧~~ 首先,我们习惯性的打开 core 目录,瞧瞧是否有个文件名有 model 的字段,哦豁~ 还真有(Model.php),赶紧双击打开看看吧。 class CI_Model { /** * Class constructor * * @link https://github.com/bcit-ci/CodeIgniter/issues/5332 * @return void */ public function __construct ( ) { } /** * __get magic * * Allows models to access CI's loaded classes using the same * syntax as controllers. * * @param string $key */ # 这是个php的魔术方法,当对象获取一个不存在的类对象时,会自动调用该方法. # 这里的作用是,让模型中可以按 控制器 中的 调用方法的方式,如:$this->load->model()此类 # 至于如何工作的,下面会说明 public function __get ( $key ) { // Debugging note: // If you're here because

OkHttp3源码详解(一) Request类

和自甴很熟 提交于 2020-03-03 00:37:05
每一次网络请求都是一个Request,Request是对url,method,header,body的封装,也是对Http协议中请求行,请求头,实体内容的封装 1 public final class Request { 2 private final HttpUrl url; 3 private final String method; 4 private final Headers headers; 5 private final RequestBody body; 6 private final Object tag; 7 8 private volatile CacheControl cacheControl; // Lazily initialized. 1.HttpUrl HttpUrl主要用来规范普通的url连接,并且解析url的组成部分 现通过下面的例子来示例httpUrl的使用 https://www.google.com/search?q=maplejaw ①使用parse解析url字符串: HttpUrl url = HttpUrl.parse("https://www.google.com/search?q=maplejaw"); ②通过构造者模式来常见: 1 HttpUrl url = new HttpUrl.Builder() 2 .scheme(

Spring 源码导入IDEA

倖福魔咒の 提交于 2020-03-03 00:13:03
1. 下载Spring源码 在github上下载Spring源码 下载地址 https://github.com/spring-projects/spring-framework 在branch处可选择各种不同版本的源码下载 2. 下载Gradle Spring的源码是由Gradle构建的,所以需要下载Gradle工具。 下载地址: https://gradle.org/install/ Windows系统下载binary-only版本,下载后解压到软件目录,配置系统变量。 在命令行输入 gradle -v 验证是否安装成功。如下显示说明安装成功。 3. 导入Idea Idea选择Import Project,选择目录后选择Gradle构建导入。 来源: oschina 链接: https://my.oschina.net/u/4438331/blog/3185483

将本地maven项目上传至github

笑着哭i 提交于 2020-03-02 22:03:04
1. gitlab上面建立空项目 demo1 2. idea clone下来项目 demo1 3. idea新建maven项目 demo2 4. 将maven项目demo2中的源码copy到 demo1文件夹中 5. idea git commit 将源码提交,然后push 此时gitlab上面则有maven项目源码 来源: CSDN 作者: 王克兵 链接: https://blog.csdn.net/whxwkb/article/details/104616328

【JDK源码分析】通过源码深入分析AbstractQueuedSynchronizer

别等时光非礼了梦想. 提交于 2020-03-02 18:08:44
前言 AQS是并发包的核心基础类,它是构建阻塞锁和相关同步器(信号量、事件,等等)的框架,可以毫不夸张的说整个java.util.concurrent包中除了原子类都与其相关(比如我们常见的显示锁ReentrantLock、闭锁CountDownLatch、信号量 Semaphore、线程池ThreadPoolExecutor等等就是基于AQS实现),我们甚至可以按照自己的需要使用AQS构建自定义锁。它内部数据结构为FIFO队列,并且是一种基于CLH锁队列修改的同步队列。CLH锁是一种基于链表的可扩展、高性能、公平的自旋锁,申请线程仅仅在本地变量上自旋,它不断轮询前驱的状态,假设发现前驱释放了锁就结束自旋。 基本原理 它通过内部一个int类型的state状态值表示同步状态,拿它的显示锁ReentrantLock实现来简单举个例子: - 当state状态值为0时,多个线程同时进入进行资源争抢,谁先将state状态值成功从0改变成1,谁就能先获得资源并执行,其它线程全部进入队列排队等待先执行的将state状态值恢复成0。这就好比一群人乘坐小船过河,但小船最多只能搭载一名乘客,其他人只能乖乖在岸边排队等待船夫将人送过去后再回来一个个往复载他们过河。 - 当state状态值大于0时,多个线程同时进入时,只有之前将该state状态值改变的线程能进入