Cherry

菜鸡的Java笔记 第二十四 - java 接口的基本定义

风流意气都作罢 提交于 2020-01-20 03:15:26
1.接口的基本定义以及使用形式 2.与接口有关的设计模式的初步认识 3.接口与抽象类的区别 接口与抽象类相比,接口的使用几率是最高的,所有的设计几乎都是围绕着接口进行的 但是要想把接口彻底弄明白,需要很长一段时间 接口是一种特殊的类,但是在接口里面的组成与类不同,比类的组成部分简单,主要由抽象方法和全局常量所组成 而接口使用 interface 关键字来定义 范例:定义一个接口 interface A{ // 定义了一个接口 public static final String MSG = "Hi"; public abstract void ptint(); } public class Interface{ public static void main(String args[]){ // 无法实例化,但是可以调用 System.out.println(A.MSG); } } 在以后不管学习到系统类库的使用还是自己写代码的时候,接口里面的主要组成(98%)都是抽象方法 当一个接口定义完成之后,需要遵循如下的步骤进行接口的使用 接口一定要定义子类,子类利用 implements 关键字来实现(实现这个词可以理解为继承)接口,一个子类可以同时实现多个接口 秒杀抽象类的单继承局限,一个抽象类只能够被一个子类所继承 接口的子类(如果不是抽象类)那么必须覆写接口中的全部抽象方法

在数据库中存储层级结构

假装没事ソ 提交于 2020-01-06 23:37:05
(摘自: http://qinxuye.me/article/storing-hierachical-data-in-database/) 本文参考自 这篇文章 。文章是2003年的,但是现在来看仍然有着实际意义。 层级结构,也叫树形结构。在实际应用中,你经常需要保存层级结构到数据库中。比如说:你的网站上的目录。不过,除非使用类XML的数据库,通用的关系数据库很难做到这点。 对于树形数据的存储有很多种方案。主要的方法有两种:邻接表模型,以及修改过的前序遍历算法。本文将会讨论这两种方法的实现。这里的例子沿用参考文章中的例子,原文使用的PHP,这里将会用Java替代(本例使用Mysql数据库,Java连接Mysql的方法见本文末“备注一”)。 文中使用虚拟的在线食品商店作例子。这个食品商店通过类别、颜色以及种类来来组织它的食品。如图所示: 1)首先是邻接表模型 邻接表相当简单。只需要写一个递归函数来遍历这个树。我们的食品商店的例子用邻接表模型存储时看起来就像是这样: 通过邻接表模型存储法中,我们可以看到Pear,它的父节点是Green,而Green的父节点又是Fruit,以此类推。而根节点是没有父节点的。这里为了方便观看,parent字段使用的字符串,实际应用中只要使用每个节点的ID即可。 现在已经在数据库中插入完毕数据,接下来开始先显示这棵树。 打印这棵树:

如何挑选一系列提交并合并到另一个分支?

给你一囗甜甜゛ 提交于 2020-01-06 16:08:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我有以下存储库布局: 主分支(生产) 积分 工作中 我想要实现的是从工作分支中挑选一系列提交并将其合并到集成分支中。 我对git相当陌生,我不知道如何准确地做到这一点(在一个操作中选择合并范围而不是合并中的提交范围)而不弄乱存储库。 关于此有任何指示或想法吗? 谢谢! #1楼 当涉及到一系列提交时,挑选樱桃 是 是 不实际的。 就像 Keith Kim 在 下面提到的那样 ,Git 1.7.2+引入了对一系列提交进行樱桃选择的能力(但是您仍然需要意识到 为未来的合并选择樱桃 的 结果 ) git cherry-pick”学会了选择一系列提交 (例如“ cherry-pick A..B ”和“ cherry-pick --stdin ”),“ git revert ”也是如此; 但是,它们不支持更好的排序控件“ rebase [-i] ”。 达米安 评论 并警告我们: 在“ cherry-pick A..B ”格式中, A 应该早于 B 如果它们的顺序错误,则命令将静默失败 。 如果要选择 范围 B 到 D (含) ,则为 B^..D 请参阅“ Git从先前提交的范围创建分支? ”作为插图。 正如 Jubobs 在评论中 提到 的 : 假设 B 不是根提交; 否则,您将收到“ unknown revision

关于JS堆栈与拷贝

一笑奈何 提交于 2020-01-06 03:55:45
1、 栈(stack) 和 堆(heap)    stack 为自动分配的内存空间,它由系统自动释放;而 heap 则是动态分配的内存,大小不定也不会自动释放。        2、基本类型和引用类型    基本类型: 存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。   5种基本数据类型有 Undefined、Null、Boolean、Number 和 String ,它们是直接按值存放的,所以可以直接访问。    引用类型: 存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。   当我们需要访问引用类型(如 对象,数组,函数 等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。 3、传值与传址   前面之所以要说明什么是内存中的堆、栈以及变量类型,实际上是为下文服务的,就是为了更好的理解什么是“浅拷贝”和“深拷贝”。   基本类型与引用类型最大的区别实际就是 传值与传址的区别 。测试用例: 1 var a = [1,2,3,4,5]; 2 var b = a; 3 var c = a[0]; 4 alert(b);//1,2,3,4,5 5 alert(c);//1 6 //改变数值 7 b[4] = 6; 8 c = 7; 9 alert(a[4]);//6 10

10 万开发者都知道的部署方式,你居然不知道!?(内含悬赏活动)

我的梦境 提交于 2019-12-27 17:19:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者 | 铃铛、滚动的轮子 Cloud Toolkit 的一键部署方式 今天为大家介绍的这一款免费 IDE 插件——Cloud Toolkit,已经有超 12 万开发者下载,是一种公认的极速部署方式,如果你还不了解,点击下方视频,立即查看详情。 视频链接: https://www.aliyun.com/daily-act/video?src=https://cloud.video.taobao.com/play/u/2311856963/p/1/e/6/t/1/247487624012.mp4 当您每次修改完代码后,是否正在经历反复地打包?采用 SCP 工具上传?使用 XShell 或 SecureCRT 登陆服务器?替换部署包?重启? 从现在开始,请把这些重复繁琐的工作交给 Cloud Toolkit 吧,它能够帮助开发者更高效地开发、测试、诊断并部署应用。Cloud Toolkit 与主流 IDE 及阿里云其他产品无缝集成,帮助您大大简化应用部署到服务器,尤其是阿里云服务器中的操作。通过插件,可以将本地应用一键部署到任意服务器,甚至云端—— ECS、ECS、EDAS、ACK、ACR 和 小程序云 等,而且还可以通过其内嵌的 Arthas 程序诊断、 Terminal Shell 终端和 MySQL

树状分类结构,数据库构建(预排序历遍算法)

旧城冷巷雨未停 提交于 2019-12-23 13:46:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 树状结构的数据保存在数据库中的常用方法有一下两种: 1、邻接表(adjacency list model) 2、预排序遍历树算法(modified preorder tree traversal algorithm) 用一下的例子讨论这两种方法的差异: 现有一棵树如下: 邻接表模式: 这种模式我们经常用到,很多的教程和书中也介绍过。我们通过给每个节点增加一个属性 parent 来表示这个节点的父节点从而将整个树状结构通过平面的表描述出来。根据这个原则,例子中的数据可以转化成如下的表: 我们看到 Pear 是Green的一个子节点,Green是Fruit的一个子节点。而根节点'Food'没有父节点。 为了简单地描述这个问题, 这个例子中只用了name来表示一个记录。 在实际的数据库中,你需要用数字的id来标示每个节点,数据库的表结构大概应该像这样:id, parent_id, name, description。 以下是代码: <?php // $parent is the parent of the children we want to see // $level is increased when we go deeper into the tree, // used to display a nice

Git合并指定文件到另一个分支

跟風遠走 提交于 2019-12-17 12:32:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 经常被问到如何从一个分支合并特定的文件到另一个分支。 其实,只合并你需要的那些commits,不需要的commits就不合并进去了。 合并某个分支上的单个commit 首先,用git log或sourcetree工具查看一下你想选择哪些commits进行合并,例如: 比如feature 分支上的commit 82ecb31 非常重要,它含有一个bug的修改,或其他人想访问的内容。 无论什么原因,你现在只需要将82ecb31 合并到master,而不合并feature上的其他commits, 所以我们用git cherry-pick命令来做: git checkout master git cherry-pick 82ecb31 这样就好啦。现在82ecb31就被合并到master分支,并在master中添加了commit(作为一个新的commit)。 cherry-pick 和merge比较类似, 如果git不能合并代码改动(比如遇到合并冲突),git需要你自己来解决冲突并手动添加commit。 这里git cherry-pick每次合并过来会显示文件冲突(其实并没有冲突代码部分,只需手动解决既可) 合并某个分支上的一系列commits 在一些特性情况下,合并单个commit并不够,

git合并分支上指定的commit

不想你离开。 提交于 2019-12-12 12:04:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> merge 能够胜任平常大部分的合并需求。但也会遇到某些特殊的情况,例如正在开发一个新的功能,线上说有一个紧急的bug要修复。bug修好了但并不像把仍在开发的新功能代码也提交到线上去。这时候也许想要一个只合并指定某些 commit 的功能。 假设分支结构如下: dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master] \ 76cada-62ecb3-b886a0 [feature] 再假设 62ecb3 的提交修复了bug,这时候可以用 cherry pick 合并单个 commit 具体操作: git checkout master git cherry-pick 62ecb3 就这么简单。62ecb3 已经应用在 master 上了(作为一个新的commit)。 cherry pick 连续多个commit cherry pick 虽好,但一次只能合并一个commit。合并多个就要用到 rebase 了。再次假设想要把 76cada 和 62ecb3 合并到 master 上。 操作: git checkout -b newbranch 62ecb3 git rebase —onto master 76cada^ 76cada^ 表示从 76cada 的

Git

橙三吉。 提交于 2019-12-12 11:50:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们只需要把 4c805e2 fix bug 101 这个提交所做的修改“复制”到dev分支。注意:我们只想复制 4c805e2 fix bug 101 这个提交所做的修改,并不是把整个master分支merge过来。 为了方便操作,Git专门提供了一个 cherry-pick 命令,让我们能复制一个特定的提交到当前分支: $ git branch * dev master $ git cherry-pick 4c805e2 [master 1d4b803] fix bug 101 1 file changed, 1 insertion(+), 1 deletion(-) Git自动给dev分支做了一次提交,注意这次提交的commit是 1d4b803 ,它并不同于master的 4c805e2 ,因为这两个commit只是改动相同,但确实是两个不同的commit。用 git cherry-pick ,我们就不需要在dev分支上手动再把修bug的过程重复一遍。 有些聪明的童鞋会想了,既然可以在master分支上修复bug后,在dev分支上可以“重放”这个修复过程,那么直接在dev分支上修复bug,然后在master分支上“重放”行不行?当然可以,不过你仍然需要 git stash 命令保存现场

【转】左右值无限分类实现算法

一笑奈何 提交于 2019-12-07 10:21:28
一、引言 产品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常是关系型数据库,它能够保存大量的数据,提供高效的数据检索和更新服务。然而关系型数据的基本形式是纵横交错的表,是一个平面的结构,如果要将多级树状结构存储在关系型数据库里就需要进行合理的翻译工作。接下来我会将自己的所见所闻和一些实用的经验和大家探讨一下: 层级结构的数据保存在平面的数据库中基本上有两种常用 设计 方法: * 毗邻目录模式(adjacency list model) * 预排序遍历树算法(modified preorder tree traversal algorithm) 我不是计算机专业的,也没有学过什么数据结构的东西,所以这两个名字都是我自己按照字面的意思翻的,如果说错了还请多多指教。这两个东西听着好像很吓人,其实非常容易理解。 二、模型 这里我用一个简单食品目录作为我们的示例数据。 我们的数据结构是这样的,以下是代码: Food | |---Fruit | | | |---Red | | | | | |--Cherry | | | +---Yellow | | | +--Banana | +---Meat |--Beef +--Pork 复制代码 为了照顾那些英文一塌糊涂的PHP爱好者 Food : 食物 Fruit