零碎知识

 

目录

1 大端小端

2 java接口

3 字符串连接

4 servlet container和server

6 控制反转和依赖注入

7 类加载器和classpath

8 ctrl+F和wrap-around

9 装箱和拆箱

10 override覆盖、overload重载、hide隐藏和修饰符

11 子类方法的异常抛出

12 cpu架构

13 开机引导过程

14、隔离级别

15、事务提交

16 tomcat的默认web应用

17、URL、URN和URI

18 maven配置阿里仓库

19 eclipse开发的一些解决方案

20 度量单位

21 url解析

22 UTC和GMT

23、单字节编码

24 intel cpu

25 关于Desktop Environment的理解

26 闰年

27 JDK相关的环境变量

28 linux中文件后缀名

29 eclipse寻找jvm

30 Spring多容器应用

31 共享IP和独立IP的区别

32 vps和vm的区别

33 FTTH、FTTB

34 Logical Vs. Arithmetic Shift

35 ipv4私有地址

36 md5


1 大端小端

Big-Endian:具体是指最高位字节在地址最低位、最低位字节在地址最高位的顺序来存储数据,而Little-Endian使用相反的顺序来储存数据。

2 java接口

接口隐式abstract,方法隐式public abstract,字段隐式为public、static、final。

3 字符串连接

运行时字符串之间的连接操作(+)等同于:

new StringBuilder().append("firstString").append("secondString").toString()//也可能使用StringBuffer

4 servlet container和server

如今很多servlet容器经常会内置web服务器(web server),因此很少有人区分java servelt容器和java web服务器了。

5、The term CRLF refers to Carriage Return (ASCII 13, \r) Line Feed (ASCII 10, \n). ... For example: in Windows both a CR and LF are required to note the end of a line, whereas in Linux/UNIX a LF is only required. In the HTTP protocol, the CR-LFsequence is always used to terminate a line.

6 控制反转和依赖注入

DI is a subset of IoC


IoC means that objects do not create other objects on which they rely to do their work. Instead, they get the objects that they need from an outside service (for example, xml file or single app service). 2 implementations of IoC, I use, are DI and ServiceLocator.


DI - Dependency Injection is concrete term, in which we provide dependencies of the object at run time by using different injection techniques viz. Setter Injection, Constructor Injection or by Interface Injection.

7 类加载器和classpath

每个类加载器都可以定义一个属于自己的classpath路径

8 ctrl+F和wrap-around

在使用ctrl+F搜索时会出现wrap-around或wrap-search供选择,它的意思是从光标处开始搜索,直到文档底部,如何还继续寻找,则从文档开始出寻找,直到原先光标的地方,也就是全文档查找。如果不启用,则查到底部则结束。

Wrap-around means the program will search for the text you specify beginning at the place in the document where you are currently positioned, and will continue past the end, to the beginning of the document back to your current position. In other words, wrap-around search will search the entire document irrespective of where you may be positioned within it. 

If you only want to search to the end of the document, turn off wrap-around search.

9 装箱和拆箱

基本类型自动包装时调用了包装类的valueOf方法,自动拆箱时调用了包装类的intValue方法。

10 override覆盖、overload重载、hide隐藏和修饰符

  • override覆盖:子类方法覆盖父类方法,子类或父类引用都是调用子类方法。
  • overload重载:类的所有方法(包括继承的方法),只要方法原型参数不同,就是重载。不同参数调用不同方法。
  • hide隐藏:子类继承但没有覆盖方法,只是子类作用域中隐藏了该方法,称为隐藏。如父类字段、静态方法被子类隐藏了,通过父类引用跳出子类作用域,然后调用这些方法、字段。
  • 修饰符:子类方法覆盖后访问修饰符可以修改成访问范围更广的,比如protect换成public。如果父类方法是private,那么子类同名方法不叫覆盖,而是隐藏。

11 子类方法的异常抛出

子类覆盖父类的方法可以不用抛出异常,即使父类方法有异常抛出列表;但父类引用子类对象且父类方法有异常抛出时,需要try来处理异常。

参考:https://stackoverflow.com/questions/9036016/inheritance-method-signature-method-overriding-and-throws-clause

12 cpu架构

cpu有很多架构,这三种很常见:ARM 、x86(IA-32、i386)、 x86_64(x64、AMD64、intel64)
架构是一个很抽象的概念,不同cpu产商可以生产同一架构的cpu。操作系统通常有对应不同cpu架构的版本。
x86包括i386、i686等处理器,支持32位地址空间。x64支持64位地址空间。
arm采用精简集指令,x86_64和x86采用复杂集指令。
树莓派是arm架构的。arm架构有很多版本,ARMv3道ARMv7支持32位地址空间,ARMv8-A架构支持64位。

参考:
https://en.wikipedia.org/wiki/ARM_architecture https://en.wikipedia.org/wiki/X86 https://en.wikipedia.org/wiki/X86_64
https://serverfault.com/questions/610308/x86-i386-i686-amd64-i5-i7-archtecture-processor-confusion
https://stackoverflow.com/questions/14794460/how-does-the-arm-architecture-differ-from-x86
https://askubuntu.com/questions/54296/difference-between-the-i386-download-and-the-amd64

13 开机引导过程

上电,主板自动读取BIOS或UEFI(rom)中的固件(一段小程序),固件执行开机自检,可以访问硬盘和主存。在硬盘的MBR或GPT中找到引导程序(可以引导多个操作系统,grub2最受欢迎)。引导程序将内核加载到主存执行。最后内核运行用户空间的软件(分为系统软件和用户软件),比如图形界面接口来让用户登录之类的软件。

https://en.wikipedia.org/wiki/Booting

14、隔离级别

  • read_uncommited:加写锁,直到事务结束释放,解决丢失修改问题。
  • read_commited:在上一级别基础上加读锁(可能为乐观锁),读完立即释放,解决脏读。
  • repeatable_read:在read_uncommited基础上加读锁(可能为乐观锁),直到事务结束释放,解决不可重复读问题。
  • serializable:在上一级别基础上加间隙锁等等等等,因此解决了幻读。

mysql的默认隔离级别:repeatable_read。

15、事务提交

在原始jdbc中,Connection默认自动提交,也就是没执行一句sql语句就当做一个事务提交。在mybatis中,默认不自动提交,在进行插入、修改等操作后需要手动提交。并不是事务中提交后才执行sql语句,而是每条都执行,只是callback利用日记可以回滚到初始状态罢了。

16 tomcat的默认web应用

tomcat中webapps下的ROOT目录代表的应用为默认应用。估计host下的该目录都为默认应用。

17、URL、URN和URI

URL和URN是URI的一种,URN通常指向一个资源但没有给出他的具体位置和访问方式,而URL通常给出了资源的访问机制和网络地址。A URN may be compared to a person's name, while a URL may be compared to their street address. In other words, a URN identifies an item and a URL provides a method for finding it.关于这些名词,经常被混用和用错,所以在看到这些名词时需要从上下文辨析他的具体含义。

参考:https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#URLs_and_URNs

18 maven配置阿里仓库

下载速度会加快。在配置文件的mirrors元素中添加mirror元素:

<mirror>

    <id>nexus-aliyun</id>

    <mirrorOf>*</mirrorOf>

    <name>Nexus aliyun</name>

    <url>http://maven.aliyun.com/nexus/content/groups/public</url>

</mirror>

19 eclipse开发的一些解决方案

要是maven下载的包毁坏,则在maven的repository中删除它,然后在项目中使用maven->update project...

如果编写程序过程中,eclipse出现了莫名其妙的问题,可以点击project->clean...清除项目尝试一下。如果导入项目后出现了莫名其妙的问题,很有可能是因为项目与电脑环境冲突,比如jdk版本太高,很多jar包不支持,又如数据库的驱动包不支持现有数据库的包。

如果eclipse中tomcat出了问题,可以将里面的应用删除,clean整个server的,clear jsp生成的servlet。

20 度量单位

1s=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒)

21 url解析

浏览器中看似有中文,其实是浏览器正确解析的结果,如果解析不了,会使用%来表示。

可参考:url编码

22 UTC和GMT

UTC和GMT差别不大,但是还是有点小区别的:

Some computer standards are defined in terms of Greenwich mean time (GMT), which is equivalent to universal time (UT). GMT is the "civil" name for the standard; UT is the "scientific" name for the same standard. The distinction between UTC and UT is that UTC is based on an atomic clock and UT is based on astronomical observations, which for all practical purposes is an invisibly fine hair to split. Because the earth's rotation is not uniform (it slows down and speeds up in complicated ways), UT does not always flow uniformly. Leap seconds are introduced as needed into UTC so as to keep UTC within 0.9 seconds of UT1, which is a version of UT with certain corrections applied. There are other time and date systems as well; for example, the time scale used by the satellite-based global positioning system (GPS) is synchronized to UTC but is not adjusted for leap seconds

参考:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

23、单字节编码

ANSI>ISO-8859-1>ASCII

编码方式和编码集是不同概念。

已发表博客,参考:字符编码

24 intel cpu

intel的酷睿i3、i5、i7的差异主要体现在核心数、是否有Turbo Boost技术、缓存大小、超线程上。一般i7比i5好,i5比i3好。但是不是必定成立,因为每个系列都有不同年代的产品,比如i5 4200H 不一定比i3 8100好。最主要的还是要看上面的参数,当然主频也是非常非常重要的参数。

https://www.pcworld.idg.com.au/article/386100/what_difference_between_an_intel_core_i3_i5_i7_/

25 关于Desktop Environment的理解

 

参考:https://en.wikipedia.org/wiki/Desktop_environment

26 闰年

闰年2月有29天,否则28天。能够被4整除不被400整除的年份为闰年。

27 JDK相关的环境变量

安装JDK后,最多需要设置三个环境变量:PATH,JAVA_HOME和CLASSPATH。

  • PATH:主要为了让可执行文件java.exe(windows下)或java(linux下)能够在命令行下执行
  • JAVA_HOME:约定俗称的一个环境变量,指向jdk安装目录,有些java程序(如tomcat)在运行时可以通过该变量获得运行时资源,比如tomcat。其二(不确定对不对),当存在多个版本的jdk时,无论运行哪个jdk版本的jvm(即设置path),最终使用的运行环境还是JAVA_HOME指向的jdk。
  • CLASSPATH:用于告诉应用类或资源的路径。可选的,默认当前工作目录。如果设置,最好也将“.”加入到变量中。在命令行,通过选项-cp能够覆盖该设置。

参考:what is the reason for the existence of the JAVA_HOME environment variable?
https://docs.oracle.com/javase/tutorial/essential/environment/paths.html
https://blog.csdn.net/u011416247/article/details/79249470?utm_source=blogxgwz5

28 linux中文件后缀名

linux中文件后缀名不是必要的,仅仅只是用来描述文件如何被“执行”。下面是一些linux后缀名和它的意义:

Linux extensionWindows EquivalentShort description
.so, .o.dllObject that can be loaded at runtime (Similar to DLL)
.a.libStatic library
[none], .elf(rare).bin(rare).exe, .com(rare)Linux executables
.sh.batShell script
.exe.exeMono application, Wine application
.deb.msiInstaller package for Debian/Ubuntu releases (Though .deb is much more powerful with native support for dependencies and repos). Note that .deb is actually a .ar archive with a special control file, a special file order, and a different extension.
.rpm.msiInstaller package for RedHat/CentOS releases.
.tar.gz, .tar, .gz.zipCompressed files that can contain a program or any other data, like images, documents, etc
.ko.sysDrivers and kernel modules are loaded into the Linux kernel and have more hardware access than other programs.
.sh, .php, .py, etc.batLinux is capable of running any file that it has an interpreter for. A line at the top of the file called the shebang specifies what interpreter to run the file with. Windows only really runs .bat files in this way.

参考:https://www.quora.com/What-is-the-extension-of-a-executable-file-in-Ubuntu

29 eclipse寻找jvm

  1. eclipse先从eclipse/jre目录下寻找jvm
  2. 如果没有,则咨询eclipse.ini文件
  3. 最后在PATH路径下查找

30 Spring多容器应用

一个容器可以有父容器,比如springMVC中就有两个容器,一个web应用对应一个ApplicationContext容器,为父容器,每个DispatcherServlet对应一个WebApplicationContext容器,为子容器。父容器中定义的Bean都可以被子容器访问到,也可被子容器覆盖。在ApplicationContext中可以定义和业务逻辑、数据访问有关的Bean,而WebApplicationContext 中可以定义和控制器与视图解析器有关的Bean。

参考:
https://stackoverflow.com/questions/43452644/what-is-the-difference-between-spring-parent-context-and-child-context
https://stackoverflow.com/questions/18578143/about-multiple-containers-in-spring-framework

31 共享IP和独立IP的区别

连接到互联网的每台计算机都分配了一个唯一的IP地址,以用来相互通信。IP地址是一个32位数字地址,通常是由4个数值从0到255的数字组成,中间有分隔点,例如192.168.0.123。尽管IP地址有数十亿之多,但这一数目仍然是有限的。

在虚拟主机行业有两种类型的IP地址:

  • 独立IP地址是指一个网站拥有自己单独的IP地址。拥有独立IP的网站,无论您输入其网址或其IP地址,都可以访问该网站。
  • 共享IP地址是指多个网站共享同一IP地址。服务器可以根据用户输入的网址来判断用户所请求的网站。在此情况下,直接输入IP地址将进入一个通用页面,而不是您所请求的网站。

由于域名注册量的迅速增长和IP地址的有限性,主机提供商不得不尽量使用共享IP。事实上,数以百计的网站往往共用相同的IP地址。静态IP主机已不再是业界规范,而且通常花费更多。

https://www.sugarhosts.com/zh-cn/hosting/dedicated-ip

32 vps和vm的区别

VPS(Virtual Private Server,虚拟专用服务器),是通过硬件虚拟化技术,在物理服务器之上模拟出来的虚拟服务器。类似于通过VMware或VirtualBox在电脑上运行一个独立的操作系统。每个VPS有独立的内存、硬盘和操作系统。您可以像使用独立服务器一样使用VPS,依据自己的需要配置软件环境。

虚拟主机实质上则是一种软件服务,只能支持特定种类的程序如PHP编写的程序。

要运行一些虚拟主机不支持的程序,如Java程序、可执行程序、NodeJS脚本等,您需要考虑VPS。如果网站访问量非常多,虚拟主机提供的资源不足,您需要考虑VPS。选择合理的VPS套餐非常重要,VPS并不总是比虚拟主机更好。由于VPS需要运行独立的操作系统,两者的资源消耗因素并不完全相同,网站在低配置VPS上的表现可能逊于在虚拟主机上的表现。

虚拟主机使用的一般是共享ip,而vpn有独立ip。

https://www.sugarhosts.com/zh-cn/vps/ssd-vps-hosting
https://host.zzidc.com/xnkj/1570.html

33 FTTH、FTTB

光纤入户(FTTH)用户需要光纤连接光猫设备才可以使用。

光纤宽带是在运营商机房通过设备把电信号调制成光信号,通过光纤传输到用户处。用户要通过光纤上网,需要使用运营商机房端设备相配套的光猫设备,把光信号转换为用户电脑等设备可以使用的电信号,通过网线连接用户设备上网使用。光纤两端光口光波长等参数要和运营商机房端设备对应起来才可以使用。因此,光猫设备应该选择运营商提供的。


小区宽带或楼宇宽带,光纤到小区或到楼宇(FTTB)。光纤连接PON设备,通过PON设备分出网线接到用户家。这种情况,用户家不需要光猫,电脑直接接到网线,通过拨号上网即可上网。

https://zhidao.baidu.com/question/511373417.html

34 Logical Vs. Arithmetic Shift

逻辑移位和算术移位都是按位运算,但是逻辑移位用于无符号移位,算术移位用于有符号移位。

  • 逻辑左移

    在大多语言中对应  <<
  • 逻辑右移

    在大多语言中对应 >>
  • 算术左移

    在大多语言中对应 << 与逻辑左移一致
  • 算术右移

    在大多语言中对应 >>>

参考:
https://open4tech.com/logical-vs-arithmetic-shift/
https://en.wikipedia.org/wiki/Arithmetic_shift
https://en.wikipedia.org/wiki/Logical_shift

35 ipv4私有地址

  • A类地址10.0.0.0-10.255.255.255
  • B类地址172.16.0.0—172.31.255.255
  • C类地址192.168.0.0-192.168.255.255

私有地址也是保留地址,还有其他保留地址,用以特殊用途。比如电信给我的宽带地址就不是公网地址,而是保留地址。。

保留地址:https://en.wikipedia.org/wiki/Reserved_IP_addresses

36 md5

md5(message-digest algorithm)信息摘要算法,是一个计算出128位哈希值的函数。作为加密哈希函数,一个最基本的要求是,两个不同的信息,不可能计算出相同的哈希值。然后md5没有达到要求,但md5仍然被广泛用于验证数据的完整性,除非数据被故意修改(哈希值仍不变)。linux中可以使用命令md5sum得到数据的md5值。

参考:https://en.wikipedia.org/wiki/MD5
https://www.gohacking.com/what-is-md5-hash/

37 X11 vs. VNC 

VNC 是抓取图像传输,X11 是抓取绘制图像的命令传输,相同环境下X11得到的画面是无损的,并可以节约大量带宽,一种改进的压缩 X11 转发方式称为 NoMachine NX,是 Linux 下最好用的连接方式,类似的技术在 Windows 上就是 RDP。


X11 的劣势似乎是远程用户和本地用户不能共享同一个 sessions,即 X11 登录会启动一个新的 session,而不是接管当前用户正在用的那个,所以不能同时操作,甚至看不到对方的操作;RDP 登录使用的是同一个 session,尽管看不到对方的操作;VNC 使用的是同一个,并且远程和本地可以同时操作。

来源:http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html 下的评论

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值