八皇后问题
问题引入
百度百科:八皇后问题
简述:
在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
这是一个典型的DFS回溯算法应用题,通过解这个题可以明确DFS算法的思路和步骤。
思路
由问题知道每行每列每条对角线都只能有一个皇后,所以需要用数组来记录每种条件的使用情况。其中每行的使用情况可以作为参数放在方法中,并为结束条件提供便利。
DFS算法基本步骤
要注意递归结束条件和回溯
123456789101112131415static void dfs(){ //1.结束条件 if (...) {return;} //2.遍历所有可能 fori(){ if(递归条件){ //2.1递归前的操作(改变条件信息) ... dfs(); //2.2回溯(也叫恢复现场) ... } } / ...
浅谈Git
Git与SVN的区别
12345678910svn是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,工作完成后,需要把自己做完的或推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都是在自己电脑上,协同的方法:比如自己再电脑上改变了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
tips: 资源下载速度较慢解决方案:找国内镜像
如:https://npm.taobao.org/mirrors/git-for-windows/
Git基本理论:
工作原理:
git本地有三个工作区域:工作目录(working directory),暂存区(stage、index),资源库(respository)。如果在加上远程的仓库(remote directory)就可以分为四个工作区域。文件在四个区域之间的关系如下:
工作目录(工作区) ...
反射与注解
Annotation
作用:可以被其他程序(如编译器)读取
@SuppressWarnings(),镇压警告,含参(看源码)
自定义注解:
@Target(value={…}):表示注解用在哪些地方
@Retention(value={…}):表示注解在哪些地方有效(runtime>class>sources)
@Documented:表示是否将注解生成在javadoc中
@Inherited:表示子类可以继承注解
Reflection
优点:动态创建对象和编译,灵活
缺点:影响性能
主要API:java.lang.class
一个数据类型只有一个Class,任何类型都有class
例:JavaSE2021_study\注解与反射\src\com\qihang\Reflection\反射获得Class类.java
Java内存分析
类加载过程
123456789Load:如图Link:1-验证:确保加载的类符合JVM规范,没有安全方面的问题 2-准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配 ...
Java刷题知识点随笔
Java刷题知识点随笔
interface
1.接口方法默认是public abstract的,且实现该接口的类中对应的方法的可见性不能小于接口方法的可见性,因此也只能是public的。
垃圾回收机制
java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。
封装的基本类型
12Integer.valueOf(10) == Integer.valueOf(10); // trueInteger.valueOf(1000) == Integer.valueOf(1000); // false 为什么呢?
调用Integer的valueOf()方法,如果int在-128和127之间的时候,会直接使用jvm中缓存的数组 Integer(也就是常量池)中的对象引用,否则使用new一个 Integer 对象。所以导致两个Intege ...








