Entry

数据结构43:移动迷宫小游戏(初级版)

寵の児 提交于 2020-11-27 04:25:19
《移动迷宫》游戏简介:迷宫只有两个门,一个入口,一个出口。一个骑士骑马从入口走进迷宫,迷宫中设置有很多墙壁,对前进方向造成障碍。骑士需要在迷宫中寻找通路以到达出口。 本游戏的迷宫是“移动”的,每次骑士进入迷宫时,迷宫的入口、出口,甚至是迷宫中设置的障碍都是不同的。 设计思路 解决类似的问题,使用回溯法是最行之有效的解题方法。骑士从入口开始,不断地对周围的道路进行试探:若能走通,则进入该位置,继续对周围进行试探;反之,则后退一步,继续寻求其他的可行路径。 通过不停地对可行道路进行试探,结果有两种: 骑士最终找到了一条通往出口的道路; 试探结束,没有通往出口的道路,骑士最终只能被迫返回入口,继续等到迷宫的下一次变化(程序结束)。 实例分析 假设迷宫为一块长为 10 ,宽为 8 的矩形区域,其中随机设置了入口、出口和该区域内可供通行的道路,如下图所示: 提示:迷宫中,‘0’ 表示道路,‘#’ 表示障碍。 当骑士处于入口的位置时,他会前后左右的进行探索式前进,当他发现前方道路可行时,即坐标为(2,1)的通路,此时骑士会快速移动至该位置,进行以该位置为中心的再次探索式前进。 通过骑士不断地探索,对于该实例中列举的迷宫,骑士最终可以找到一条通往出口的道路,如下图所示: 提示:迷宫中,新增的‘X’表示骑士走过的道路(找出一条通路即可)。 完整实现代码 #include <stdio.h>

Java开发岗面试知识点解析

梦想的初衷 提交于 2020-11-26 08:30:11
本文作者参加过多场面试,应聘岗位均为 Java 开发方向。在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点。 主要包括以下几个部分: Java 基础知识点 Java 常见集合 高并发编程(JUC 包) JVM 内存管理 Java 8 知识点 网络协议相关 数据库相关 MVC 框架相关 大数据相关 Linux 命令相关   面试,是大家从学校走向社会的第一步。 互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试 + 1 轮 HR 面试 。 但是一些公司确实是没有 HR 面试的,直接就是三轮技术面。 技术面试中,面试官一般会先就你所应聘的岗位进行相关知识的考察,也叫 基础知识 和 业务逻辑面试 。 只要你回答的不是特别差,面试官通常会说:“咱们写个代码吧”,这个时候就开始了算法面试。 也就是说,一轮技术面试 = 基础知识和业务逻辑面试 + 算法面试。   本文我们主要从技术面试聊起。 技术面试 包括:业务逻辑和基础知识面试。   首先是业务逻辑面试,也就是讲项目。 面试官会对你简历上写的若干个项目其中之一拿出来和你聊聊。在期间,会针对你所做的东西进行深度挖掘。 包括:为什么要这么做?优缺点分析,假如重新让你做一次,你打算怎么做? 等等。这个环节主要考察我们对自己做过的项目(实习项目或者校内项目)是否有一个清晰的认识。 关于业务逻辑面试的准备

Java 开发岗面试知识点

五迷三道 提交于 2020-11-26 08:07:53
本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向。在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点。 主要包括以下几个部分: Java 基础知识点 Java 常见集合 高并发编程(JUC 包) JVM 内存管理 Java 8 知识点 网络协议相关 数据库相关 MVC 框架相关 大数据相关 Linux 命令相关 面试,是大家从学校走向社会的第一步。 互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试 +1 轮 HR 面试。 但是一些公司确实是没有 HR 面试的,直接就是三轮技术面。 技术面试中,面试官一般会先就你所应聘的岗位进行相关知识的考察,也叫基础知识和业务逻辑面试。 只要你回答的不是特别差,面试官通常会说:“咱们写个代码吧”,这个时候就开始了算法面试。 也就是说,一轮技术面试 = 基础知识和业务逻辑面试 + 算法面试。 关于算法面试的总结,各位可以查阅我先前交流的 Chat:“知名互联网公司校招中常见的算法题”。 本文我们主要从技术面试聊起。技术面试包括:业务逻辑和基础知识面试。 首先是业务逻辑面试 ,也就是讲项目。 面试官会对你简历上写的若干个项目其中之一拿出来和你聊聊。在期间,会针对你所做的东西进行深度挖掘。 包括:为什么要这么做?优缺点分析,假如重新让你做一次,你打算怎么做? 等等。这个环节主要考察我们对自己做过的项目

常用第三方快递鸟单号查询Api接口免费对接调用攻略

元气小坏坏 提交于 2020-11-26 08:04:47
快递查询接口对接需求量比较大,此博客做免费快递接口做整理,并附上调用方式,如果有错误的地方,望沟通指教。 一.快递查询接口类型 目前有提供第三方快递查询接口的公司有很多,但是这些快递接口除了 快递鸟 以外,最多的可以免费查询2000次/每天,快递鸟接口每天请求次数都是没有限制的,超过3000次/每天可以免费接入快递鸟订阅推送接口。查询量较大的可以选择快递鸟接口。 二.对接流程 以快递鸟提供的即时查询Api接口进行对接说明: 1.申请一个快递鸟的账号,进入 http://www.kdniao.com/reg 界面点击免费申请 2.申请完成后即可获得自己的KEY和ID,技术对接完成则可以正常使用 3.注册信息必须填写正确,如果有误可能导致接口无法正常使用 三.对接案例 主要对即时查询API进行讲解测试: 使用的是Chrome的postman插件进行Api测试调用 在JAVA环境下调用 在.net环境下调用 1.接口描述/说明 1)打开 http://www.kdniao.com/api-track 查看Api接口定义文档,了解url、请求参数及响应数据。 2)API 所支持的快递公司及编码 3)请求地址:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx 2.请求系统级参数说明 备注:R-必填(Required),O-可选

MySQL之表的约束

a 夏天 提交于 2020-11-26 03:31:37
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充 说明: 1 . 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值 2 . 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum( ' male ' , ' female ' ) not null default ' male ' age int unsigned NOT NULL default 20 必须为正值(无符号) 不允许为空 默认是20 3 . 是否是key 主键 primary key 外键 foreign key 索引 (index,unique...) 二 not null与default 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 默认值

Java 集合类Hashmap

我是研究僧i 提交于 2020-11-24 19:53:11
一.HashMap 简介 HashMap在程序员的开发过程中是一个十分常用的集合类,它是一个以键值对形式存在的集合类, 在开发中我们可以利用的它的一个key存在即替换的特性,实现一个更新的去重的操作。 在另一个方便我们可以利用map跟fastJson快速组成我们所需的json数据格式。 在jdk1.8之前,HashMap是以数组+链表的形式存在,put进来的key的hashCode进过扰动函数计算后得到hash值,然后该值通过(n-1)&hash计算后的到相应的位置(n代表的是数组长度), 如果发生了hash冲突,则先判断该key是否存在,如果存在那么就覆盖,否则以“拉链法”解决冲突,便组成了链表。 但在jdk1.8之后,HashMap就发生了改变,如果当前链表的长度大于阈值(默认是8)那么该链表就转换成红黑树,加快了搜索速度。 二.HashMap属性 //HashMap的默认初始容量 2^4=16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //HashMap的最大容量 static final int MAXIMUM_CAPACITY = 1 << 30; //默认的装载因子当数组长度 static final float DEFAULT_LOAD_FACTOR = 0.75f; // 当桶

用户登录并返回token(springboot)

我怕爱的太早我们不能终老 提交于 2020-11-24 19:31:32
何为token? 【如果想直接看代码可以往下翻】 使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的: 1. 客户端使用用户名跟密码请求登录 2. 服务端收到请求,去验证用户名与密码 3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里 5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据 token优点 支持跨域访问 : Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通 过HTTP头传输. 无状态(也称:服务端可扩展行): Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登 录用户的信息,只需要在客户端的cookie或本地介质存储状态信息. 更适用CDN: 可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTML,图片等),而你的服 务端只要提供API即可. 去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你 可以进行Token生成调用即可.

java常用容器简要性能分析(List。Map。Set)

折月煮酒 提交于 2020-11-24 18:31:57
嗯,实习的时候看到这个,感觉蛮好,这里摘录学习,生活加油: 我曾经害怕别人嘲笑的目光,后来,发现他们的目光不会在我身上停留太久,人们更愿意把目光放在自己身上。 知乎上看到,讲给自己。 List List和Set都属于Collection的子接口,List集合中的元素是按照插入顺序进行排列的,允许出现重复元素, List接口下的常用实现类有 ArrayList和LinkedList ,对于List来讲, 元素只能是通过set更新,不能通过add更新,通过add只能在指定索引位置添加元素,不会实现元素的覆盖,通过remove移除 接口继承关系: ArrayList : // 查找指定位置元素的下标 public int indexOf(Object o); // 查找指定元素最后一次出现的位置 public int lastIndexOf(Object o) ; // 清空集合元素 public void clear(); // 等等...... ArrayList的特点: ** ArrayList内部是使用 数组来存储数据 ,并且是一个 "动态"的数组 ,在添加元素时,如果发现 容量不够时,会进 行扩容 。 ArrayList支持 随机访问元素 , 随机访问元素的效率是O(1) ArrayList在 尾部添加元素的效率为O(1) , add方法默认在尾部进行添加

汇编Shellcode的技巧

断了今生、忘了曾经 提交于 2020-11-24 06:13:34
汇编Shellcode的技巧 来源 https://www.4hou.com/technology/3893.html 本文参考来源于pentest 我们在上一篇提到要要自定义shellcode,不过由于这是个复杂的过程,我们只能专门写一篇了,本文,我们将会给大家介绍shellcode的基本概念,shellcode在编码器及解码器中的汇编以及几种绕过安全检测的解决方案,例如如何绕过微软的 EMET(一款用以减少软件漏洞被利用的安全软件)。为了理解本文的内容,大家需要具了解x86汇编知识和基本文件格式(如COFF和PE)。 专业术语 进程环境块(PEB) :PEB(Process Environment Block)是Windows NT操作系统中的一种数据结构。由于PEB仅在Windows NT操作系统内部使用,其大多数字段不面向其他操作系统,所以PEB就不是一个透明的数据结构。微软已在其MSDN Library技术开发文档中开始修改PEB的结构属性。它包含了映像加载器、堆管理器和其他的windows系统DLL所需要的信息,因为需要在用户模式下修改PEB中的信息,所以必须位于用户空间。PEB存放进程信息,每个进程都有自己的 PEB 信息。准确的 PEB 地址应从系统的 EPROCESS 结构的 1b0H 偏移处获得,但由于 EPROCESS在进程的核心内存区,所以程序不能直接访问。

elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、S...

折月煮酒 提交于 2020-11-24 04:40:31
一、ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200    这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接 3.2 Transport 连接 端口 9300 这种连接方式对应于架构图中的Transport这一层,这种客户端连接方式是直接连接ES的节点,使用TCP的方式进行连接 4. ES提供了多种编程语言客户端 官网可以了解详情: https://www.elastic.co/guide/en/elasticsearch/client/index.html 二、Java REST Client介绍 1. ES提供了两个JAVA REST client 版本 Java Low Level REST Client: 低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。 兼容所有ES版本 。 Java High Level REST Client: 高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。 使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。 2. Java