Waylan Punch

WP


  • Home

  • Categories

  • Tags

  • Archives

  • About

  • Commonweal 404

  • Search

计算机网络基础几道常见面试试题

Posted on 2018-12-11 | In Java | | Visitors:

计算机网络基础几道常见面试试题


Java后端技术

1、OSI,TCP/IP,五层协议的体系结构,以及各层协议

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。

五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。

每一层的协议如下:

物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关);

数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机);

网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器);

传输层:TCP、UDP、SPX;

会话层:NFS、SQL、NETBIOS、RPC;

表示层:JPEG、MPEG、ASII;

应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS;

每一层的作用如下:

物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

数据链路层:将比特组装成帧和点到点的传递(帧Frame)

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

会话层:建立、管理和终止会话(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

Read more »

2018年Java面试题汇总 - 1

Posted on 2018-12-11 | In Java | | Visitors:

2018年Java面试题汇总 - 1


Java后端技术

一、基础篇

1.1、Java基础

  • 面向对象的特征:继承、封装和多态

  • final, finally, finalize 的区别

  • Exception、Error、运行时异常与一般异常有何异同

  • 请写出5种常见到的runtime exception

  • int 和 Integer 有什么区别,Integer的值缓存范围

  • 包装类,装箱和拆箱

  • String、StringBuilder、StringBuffer

  • 重载和重写的区别

  • 抽象类和接口有什么区别

  • 说说反射的用途及实现

  • 说说自定义注解的场景及实现

  • HTTP请求的GET与POST方式的区别

  • Session与Cookie区别

  • 列出自己常用的JDK包

  • MVC设计思想

  • equals与==的区别

  • hashCode和equals方法的区别与联系

  • 什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用

  • Object类中常见的方法,为什么wait notify会放在Object里边?

  • Java的平台无关性如何体现出来的

  • JDK和JRE的区别

  • Java 8有哪些新特性

Read more »

利用Gogs搭建个人Git服务

Posted on 2018-10-11 | In Java | | Visitors:

服务器: CentOS 7
容器: Docker 18
环境: MySQL 5.7 + Gogs:0.11.66

1.Docker容器内安装MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker pull mysql

docker pull registry.docker-cn.com/library/mysql:8.0.12

docker pull registry.docker-cn.com/library/mysql:5.7

docker images |grep mysql

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

docker run --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 6a834f03bd02

/*数据卷的挂载*/
docker run -i -t --name mymysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 563a026a1511
error: database is uninitialized and password option is not specified 
    You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
Read more »

CentOS 7和Docker使用以及常用中间件安装指南

Posted on 2018-09-22 | In Java | | Visitors:

Oracle VM Virtual Box安装CentOS 7过程

Install

启动网络服务

1
2
3
4
5
6
7
8
9
ip addr

vi /etc/sysconfig/network-scripts/ifcfg-ens33

ONBOOT=yes

sudo service network restart

ip addr

关机/重启命令

Shuntdown Command

  • Linux centos重启命令:
    • 1、reboot 普通重启
    • 2、shutdown -r now 立刻重启(root用户使用)
    • 3、shutdown -r 10 过10分钟自动重启(root用户使用)
    • 4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
    • 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
  • Linux centos关机命令:
    • 1、halt 立刻关机
    • 2、poweroff 立刻关机
    • 3、shutdown -h now 立刻关机(root用户使用)
    • 4、shutdown -h 10 10分钟后自动关机

Putty连接

Putty

Firewall

安装Docker

Docker

1
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

由于国内访问不到docker官方镜像,可以通过aliyun的源来完成。

阿里云镜像

1
2
$ sudo systemctl start docker
$ sudo systemctl enable docker
Read more »

SpringBoot整合Swagger2并汉化

Posted on 2018-07-06 | In Java | | Visitors:

本文将介Swagger2,它可以轻松组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API,而不再需要Postman。

Swagger2注解说明

Swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

1
2
3
4
5
6
7
8
9
10
11
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数
  • @Api:用在请求的类上,表示对类的说明

    • tags=”说明该类的作用,可以在UI界面上看到的注解”
    • value=”该参数没什么意义,在UI界面上也看到,所以不需要配置”
  • @ApiOperation:用在请求的方法上,说明方法的用途、作用

    • value=”说明方法的用途、作用”
    • notes=”方法的备注说明”
  • @ApiImplicitParams:用在请求的方法上,表示一组参数说明

    • @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
      • name:参数名
      • value:参数的汉字说明、解释
      • required:参数是否必须传
      • paramType:参数放在哪个地方
        • header –> 请求参数的获取:@RequestHeader
        • query –> 请求参数的获取:@RequestParam
        • path(用于restful接口)–> 请求参数的获取:@PathVariable
        • body(不常用)
        • form(不常用)
      • dataType:参数类型,默认String,其它值dataType=”Integer”
      • defaultValue:参数的默认值
  • @ApiResponses:用在请求的方法上,表示一组响应

    • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
      • code:数字,例如400
      • message:信息,例如”请求参数没填好”
      • response:抛出异常的类
  • @ApiModel:用于响应类上,表示一个返回响应数据的信息,(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)

    • @ApiModelProperty:用在属性上,描述响应类的属性
Read more »

使用Redis管理分布式Session

Posted on 2018-05-30 | In Java | | Visitors:

使用Redis管理分布式Session

Redis 是一个强大而简单的键值型数据库,之前在公司网站改版的过程中大量使用 Redis 来处理一些特殊的需求,我希望能将自己对 Redis 的使用经验都分享出来,而这里算是第一篇吧。

背景

项目是一个有着不小访问量的网站,为了达到分流的作用,网站按照不同的业务(个人、企业、后台、营销、搜索、API等)区分成不同的子域名,而子域名下运行的是不同的实例。

对用户登录这块的逻辑,原来的做法是将登录的明文信息(登录ID、用户名、姓名等)在登录过程中直接写入用户 cookie,当需要进行登录校验的时候,后台直接取出 cookie 中保存的ID进行处理。可以想象,这样的模式只要模拟或者盗取了客户端的 cookie 信息,对于客户来说几乎没有任何安全性的保障。

由于用户的操作可能跨越多个实例,如果采用服务器 session 的机制的话,就需要解决 session 的共享问题,从技术的实现角度来说可能碰到的坑就更多了,于是我们利用了 Redis 来模拟服务器的 session。

Read more »

开发笔记

Posted on 2018-05-24 | In Java | | Visitors:

1、jQuery countdown插件

倒计时插件

2、Spring Boot引用js、css文件

https://blog.csdn.net/CureRrzy/article/details/79350356

Read more »

Hello World

Posted on 2018-03-31 | | Visitors:

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Read more »

已加入Electron中文简体翻译计划

Posted on 2017-12-12 | | Visitors:

Waylan Punch已加入Electron中文简体翻译计划。

MathJax在网页中的使用

Posted on 2017-12-11 | | Visitors:

MathJax允许你在网页中使用LaTeX,MathML或AsciiMath注解来包含数学公式,这些数学公式将使用JavaScript处理HTML,SVG或MathML方程式来产生,以显示在任何浏览器中。

有两种方法可以访问MathJax:最简单的方法是使用分布式网络服务(如cdnjs.com)提供的MathJax副本,但是也可以在本地机器上下载并安装MathJax的副本,或者在你的硬盘上使用(不需要网络访问)。 本文给出了在您的Web站点上运行MathJax的最快和最简单的方法,但是您可能需要去官网查阅更详细得信息以进行自定义页面的设置。

#使用CDN

使用MathJax最简单的方法是直接接入内容分发网络(CDN)提供的公共链接。
有许多免费的CDN提供商提供MathJax的副本。 一些提供“滚动版本”,即在发布时更新到最新可用版本的链接:

  • cdnjs.com(推荐)(https://cdnjs.com/)
  • jsdelivr.com 滚动
  • unpkg.com 滚动
  • rawgit.com(https://rawgit.com/)
  • gitcdn.xyz(http://gitcdn.xyz/)
  • raw.githack.com(http://docs.mathjax.org/en/latest/raw.githack.com)

如何接入?

1
2
3
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
Read more »
123…7
Waylan Punch

Waylan Punch

Keep Calm And Code On.

66 posts
2 categories
66 tags
RSS
GitHub E-Mail Weibo StackOverflow
Links
  • StackOverflow
  • LeanCloud
  • 云栖社区
  • GitHub
  • 掘金网
  • 知乎
© 2014 — 2019 Waylan Punch
Powered by Hexo
|
Theme — NexT.Mist v5.1.4