Jay's Blog

知而不行为不知


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 留言

  • 搜索

接口与抽象类

发表于 2018-11-29 | 分类于 Java | 阅读次数:
字数统计: 780 字 | 阅读时长 ≈ 2 分钟

抽象类和接口的区别

  1. 语法层面上的区别

  1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2. 设计层面上的区别

  1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 “是不是”的关系,而 接口 实现则是 “有没有”的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。

  2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。什么是模板式设计?最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt B和ppt C进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。

与前端开发并行工作的两个工具

发表于 2018-11-15 | 分类于 Java | 阅读次数:
字数统计: 25 字 | 阅读时长 ≈ 1 分钟

使用Swagger自动生成html文档


使用WireMock快速伪造RESTful服务


Swagger

  1. maven:springfox-swagger2和springfox-swagger-ui

shell基础

发表于 2018-11-15 | 分类于 Linux | 阅读次数:
字数统计: 202 字 | 阅读时长 ≈ 1 分钟
  1. 命令行解释器(将用户的指令翻译成机器语言传给计算机内核[硬件] 以及反向);
    还是一个强大的编程语言。shell是解释执行的脚本语言,在shell中可以直接待用Linux系统指令。
  2. sh。Linux支持csh,bash等shell
  3. 脚本执行方式:
    3.1 echo输出命令;
    echo -e “” //-e是指一些命令
    3.2 第一个脚本

#!/bin/bash
#The first

echo -e “哈哈”

3.3 脚本执行
方法一:赋予执行权限,直接运行;
方法二:通过bash调用

  1. bat与bash
    bat是windows平台下的批处理
    shell,一般是指linux下的shell
  2. bash的基本功能
    5.1 命令别名与快捷键
    5.2 历史命令
    5.3 输出重定向
    5.4 多命令顺序执行
    5.5 shell中特殊符号

Docker

发表于 2018-11-15 | 阅读次数:
字数统计: 1 字 | 阅读时长 ≈ 1 分钟
  1. �ֲڵ�����Ϊ��������������������������������

Linux与Windows不同

发表于 2018-11-15 | 分类于 Linux | 阅读次数:
字数统计: 74 字 | 阅读时长 ≈ 1 分钟
  1. Linux严格区分大小写;

  2. 一切内容皆文件,所有内容以文件形式保存,包括硬件;

  3. Linux没有扩展名,但会有一些约定俗成的写法
    用来给人看的

  4. windows中的程序不能直接在linux中安装和运行;

  5. Linux文件管理
    Linux文件管理

文件存放

  1. Linux学习路径
    Linux学习路径

分布式事务

发表于 2018-10-25 | 分类于 Java , 分布式 | 阅读次数:
字数统计: 14 字 | 阅读时长 ≈ 1 分钟

引用自https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html


分布式锁

发表于 2018-10-25 | 分类于 Java , 分布式 | 阅读次数:
字数统计: 579 字 | 阅读时长 ≈ 2 分钟

引用自https://www.cnblogs.com/austinspark-jessylu/p/8043726.html


** 分布式的CAP理论 **
任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。

  1. 需要的分布式锁应该是怎么样的?

    可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。
    这把锁要是一把可重入锁(避免死锁)
    这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条)
    有高可用的获取锁和释放锁功能
    获取锁和释放锁的性能要好

  2. 常用设计方案
    2.1 基于数据库实现分布式锁
    要实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现了。
    当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。
    2.2 基于缓存(redis,memcached,tair)实现分布式锁
    基于Tair的实现分布式锁其实和Redis类似,其中主要的实现方式是使用TairManager.put方法来实现。
    2.3 基于Zookeeper实现分布式锁
    基于zookeeper临时有序节点可以实现的分布式锁。
    大致思想即为:每个客户端对某个方法加锁时,在zookeeper上的与该方法对应的指定节点的目录下,生成一个唯一的瞬时有序节点。 判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。 当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。

HEXO高级功能

发表于 2018-09-26 | 分类于 基本设置 | 阅读次数:
字数统计: 532 字 | 阅读时长 ≈ 2 分钟

如何改变皮肤?

步骤如下:

  1. 前往 hexo网站 选择皮肤,并点击进入github页面;
  2. 将git库clone到themes文件夹下;
  3. 修改conf配置文件,改为对应的名字;
  4. 有的图片需要配置按照github的readme来写。

如何自定义博客结构?

  1. 进入使用的themes下,修改layout中的相关文件(比如js这些)

文章的分类与标签

  1. 前往 hexo网站 查看相应的语法

如何让代码更美观

  1. 前往 hexo网站 查看相应的语法
    1
    [rectangle setX: 10 y: 10 width: 20 height: 20];
_.compactUnderscore.js
1
2
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]
  1. 并在对应的themes中修改相应的高亮代码块方案。

本地写作时图床的写作方案

  1. 图床七牛 ;
  2. 配置方法:快捷键+建个脚本(注意图床的链接的修改)
  3. 上传使用官方的上传组件即可,命令行辅助工具(qrsctl)

插件的安装

  1. 前往 hexo网站
  2. 字数统计插件 : 不算字
    next的字数统计见https://blog.csdn.net/wangxw725/article/details/71602256?utm_source=itdadao&utm_medium=referral, https://blog.csdn.net/u012195214/article/details/79204088
    2.1 安装word_count插件,在博客根目录下打开终端:npm install hexo-wordcount –save
    2.2 在主题配置文件(Blog\themes\next\config.yml)中打开wordcount 统计功能

博客 接入评论系统

  1. disquz
  2. 来必力
  3. 畅言
  4. gitment; https://sjq597.github.io/2018/05/18/Hexo-%E4%BD%BF%E7%94%A8Gitment%E8%AF%84%E8%AE%BA%E5%8A%9F%E8%83%BD/

博客增加搜索功能

  1. SwiftType
  2. 自定义site语法进行跳转
  3. next方案在https://blog.csdn.net/u012195214/article/details/79204088

接入统计系统

  1. cnzz
  2. 百度统计:https://blog.csdn.net/u013066244/article/details/71056745

阅读量统计

  1. 注册LeanCloud .
  2. 新建应用,并添加Counter数据(无限访问改写),然后再获得appid,appkey,并在next配置文件中leancloud_visitors进行改写
    参考自https://notes.doublemine.me/2015-10-21-%E4%B8%BANexT%E4%B8%BB%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%96%87%E7%AB%A0%E9%98%85%E8%AF%BB%E9%87%8F%E7%BB%9F%E8%AE%A1%E5%8A%9F%E8%83%BD.html#%E9%85%8D%E7%BD%AELeanCloud

百度收录

  1. 参见https://albenw.github.io/posts/be8242cc/(未成功)

智能代理机器人

发表于 2018-09-26 | 分类于 课题 | 阅读次数:
字数统计: 50 字 | 阅读时长 ≈ 1 分钟

孤军奋战,加油~~


  1. 方案可行性及实现:论证
  2. 确定开发流程
  3. 工作计划
  4. 第一步的任务
  5. 写论文的创新点在哪???

画方案
设计数据模型

offer情况

发表于 2018-09-23 | 分类于 简历 | 阅读次数:
字数统计: 47 字 | 阅读时长 ≈ 1 分钟

截止2018.09.23
按时间先后顺序

  • 国家农业信息化工程技术研究中心
  • 携程,上海
  • 科华恒盛,厦门
  • 华为,西安
  • 顺丰科技,深圳
<i class="fa fa-angle-left"></i>1…212223…27<i class="fa fa-angle-right"></i>

264 日志
34 分类
38 标签
GitHub Zhihu Wechat
© 2024 史海杰 | Site words total count: 722k
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4