零散知识点集合

* Maven 镜像站点

<!-- 阿里云的镜像站(速度快) -->
<mirror>
	<id>nexus-aliyun</id>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
	<mirrorOf>central</mirrorOf> 
</mirror>

* HTML字符转义

空格 ( &nbsp; )    & ( &amp; )    < ( &lt; )    > ( &gt; )

* URL和URI的区别

1、
URI(uniform resource identifier)统一资源标识符。
URL(uniform resource locator):统一资源定位符。

2、
URI 标识一个事物,URL 定位一个事物;然而,位置同样可以标识一个事物,
所以,每个URL都是一个 URI,但一个 URI 并不一定是一个 URL。

3、
Java中通过request.getRequestURI()和request.getRequestURL()取得的值。
uri = /servlet01/index.jsp
url = http://localhost:8080/servlet01/index.jsp 

* 浮点数精确计算问题(java、mysql、javascript、python3)

java:BigDecimal 可以;

mysql:decimal(numberic)可以,计算速度会慢一点;建议以整数存取;

javascript:不可以;

python3:Decimal 可以,计算速度会慢一点;

* Java HTML JavaScript SQL 单双引号总结

1、java
'' 表示char字符
"" 表示String字符串

2、html
'' 和 "" 没什么区别

3、javascript
'' 和 "" 都表示字符串

4、SQL
(a) '':在标准SQL中,表示字符串只能使用单引号。
(b) "":在oracle中,双引号不能表示字符串。在mysql中,双引号也可以表示字符串。

* Java 与 JavaScript 字符串 split() 方法的不同?

  Java: String[] arr = "1,2,3,".split(","); // arr.length=3
  
  JavaScript: var arr = "1,2,3,".split(","); // arr.length=4

* JavaWEB中的编码问题

1、JavaScript :

encodeURI() / decodeURI()
encodeURI() 除了对 # $ & + , / : ; = ? @ ! ' ( ) ~ * - . _ 0-9 a-z A-Z 不编码,对URL中其他所有字符进行UTF-8编码,在每个码值前加上“%”。

encodeURIComponent() / decodeURIComponent()
encodeURIComponent() 除了对 ! ' ( ) ~ * - . _ 0-9 a-z A-Z 不编码,对其他所有字符都进行UTF-8编码。
这个函数通常用于将一个URL当作一个参数放在另一个URL中,这样可以避免参数URL中的&影响请求URL的完整性。

2、Java:

java.net.URLEncoder.encode(str,"UTF-8") / java.net.URLDecoder.decode(str,"UTF-8")
java.net.URLEncoder.encode 除了对 * - . _ 0-9 a-z A-Z 不编码,&nbsp;空格 字符转成 + 字符以外,对其他所有字符都编码。 
java.net.URLDecoder.decode 会将 + 解码成 &nbsp;空格 字符。

* SQL 的 LEFT JOIN

  A表 和 B表 通过 LEFT JOIN 连接,ON 后的 AND 条件只能限制 B表。

* MySQL日期格式化字符串

%Y    年,4 位
%m    月,数值(00-12)
%d    月的天,数值(00-31)
%H    小时 (00-23)
%i    分钟,数值(00-59)  
%s    秒(00-59)

* SQL优化与数据库事务

1、SQL优化?explain 、开启慢查询 、建立索引。


2、ACID 是事务正确执行的四个基本特性。比如一个支持事务(Transaction)的数据库必须具有这四种特性。

原子性(Atomicity):事务是一个不可分割的执行单位,事务中的操作,要么都做,要么都不做。

一致性(Consistency):事务执行的结果必须是使数据从一个一致性状态转到另一个一致性状态。比如事务中的操作一部分成功一部分失败,为了避免数据产生不一致状态,会将失败的操作撤销,使数据回到事务开始前的状态。

隔离性(Isolation):并发执行的各个事务内部的操作和数据是相互隔离的,相互不能干扰。

持久性(Durability):事务一旦提交,数据的改变就是永久性的,以后即使发生故障也不影响结果。


3、数据库事务的隔离级别:

串行化(Serializable):避免  脏读、不可重复读、幻读。

可重复读(Repeatable read):避免  脏读、不可重复读。

读已提交(Read committed):避免  脏读。

读未提交(Read uncommitted):最低级别,任何情况都无法保证。


4、
(1)脏读:在A事务处理过程里读取了B事务修改且未提交的数据。

(2)不可重复读:事务A多次读取同一数据,事B在事务A多次读取的过程中,对数据进行了更新并提交,导致事务A多次读取同一数据时,结果不一致。

(3)幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,这就叫幻读。


5、数据库默认事务隔离级别:

MySQL:可重复读(Repeatable read)

Oracle、SQLServer、DB2、PostgreSQL:读已提交(Read committed)


6、数据库事务的传播性:

PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。

PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

* shiro原理

1、核心概念:Subject, SecurityManager, Realms

(a)Subject:当前执行的用户。

(b)SecurityManager:安全管理器,管理所有用户的安全操作。

(c)Realms:领域,充当Shiro与你的应用程序的安全数据之间的“桥”或“连接器”。


2、其他概念:Authentication, Authorization, Session Management, Cryptography, Ciphers

(a)Authentication:认证,验证用户的身份。也可以称为“登录”。

(b)Authorization:授权,授权实质上是访问控制用户可以访问您的应用程序,如资源、网页等。大多数用户执行访问控制是通过使用角色和权限等概念。

(c)Session Management:会话管理。

(d)Cryptography:加密。

(e)Ciphers:密钥,加密算法使用一个密钥对数据进行可逆转换的。

* DNS域名解析

用户在浏览器中输入域名并按下回车后,域名的解析过程:

1. 浏览器查找自己缓存中是否有这个域名对应的解析过的IP地址,如果有,返回这个IP地址,解析过程结束。

2. 如果浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的解析过的IP地址,如果有,返回这个IP地址,解析过程结束。

4. 如果前面两个过程都无法解析,操作系统会把这个域名发送到 Local DNS Server(本地域名服务器,即网络配置中的“DNS服务器地址”),如果在 Local DNS Server 缓存中有这个域名对应的解析过的IP地址,返回这个IP地址,解析过程结束。

5. 如果 Local DNS Server 无法解析,Local DNS Server 会把这个域名发送到 Root DNS Server(根域名服务器),Root DNS Server 解析后返回给 Local DNS Server 一个 gTLD Server(通用顶级域名服务器)的地址,如.com、.cn、.org等通用顶级域名服务器。

6. Local DNS Server 再向 gTLD Server 发送请求,接受到请求的 gTLD Server 查找并返回这个域名对应的 Name Server 域名服务器的地址。Name Server 域名服务器通常就是你申请域名的域名服务提供商的服务器。

7. Local DNS Server 再向 Name Server 域名服务器发送请求,Name Server 域名服务器查询存储的域名与IP地址关系映射表,在正常情况下会将得到的目标IP连同一个TTL值返回给 Local DNS Server。Local DNS Server 会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制(TTL:失效时间)。

8. 本地域名服务器 Local DNS Server 把解析的结果返回给操作系统,操作系统缓存这个域名和IP的对应关系,域名解析过程结束。

注:缓存域名的解析结果受域名的失效时间和缓存的空间大小控制。Linux上使用命令 dig www.taobao.com +trace 可以显示整个域名解析过程。

* 像素(px)、图片相关知识

像素(px):数码感光元件上最小的感光单位,也是数字图片上最小的不可再分割的元素。像素的大小是没有固定长度值的,不同设备上1个像素色块的大小是不一样的。

图片分辨率:单位面积内的像素数量,单位是dpi(像素点/英寸)。

图片尺寸:图片长400、宽400,表示图片是由横向400像素,纵向400构成的(合计160000像素)。

图片体积:保存图片所需存储空间的大小。

PNG:无损压缩存储的图片格式,占用存储空间大。

JPG/JPEG:有损压缩存储的图片格式,占用存储空间小。

* Git将某分支的某次提交合并到另一分支

代码开发的时候,有时需要把某分支(比如develop分支)的某一次提交合并到另一分支(比如master分支),这就需要用到git cherry-pick命令。

首先,切换到develop分支,敲 git log 命令,查找需要合并的commit记录,比如commitID:7fcb3defff;

然后,切换到master分支,使用 git cherry-pick 7fcb3defff  命令,就把该条commit记录合并到了master分支的本地仓库。

最后,git push 提交到master远程库,至此就把develop分支的这条commit所涉及的更改合并到了master分支。

* 集群、分布式、微服务、分布式系统的 CAP 定理

注:为了便于理解分布式、集群和微服务将“业务”定义为“应用和数据库的集合”。

1、Redis集群方案

目前最好的redis高可用架构方案是 redis-cluster。redis官方对redis-cluster架构的建议是redis-master用于读写,redis-slave用于备份,默认不建议读写分离。


2、 集群、分布式、微服务

“业务”可以看成是“应用和数据库的集合”。

a、集群:复制同一个业务,部署在多个服务器上。(集群是一种特殊的分布式系统)

b、分布式:将一个业务分拆成多个子业务,部署在 不同网络 的服务器上。(分布式系统一致性理解,比如A子业务新增一条数据,B子业务统计数据也要新增)

c、微服务:微服务的粒度比分布式更小,服务之间耦合度更低,分布式系统向微服务演化是一种趋势。


3、 分布式系统的 CAP 定理

一致性(Consistency):(All nodes see the same data at the same time )所有节点在同一时间的数据完全一致,即强一致性。

可用性(Availability):(Reads and writes always succeed) 服务一直可用。

分区容错性(Partition tolerance):分布式系统节点间无法通信形成分区。

* Iass、Pass、SasS 三种云服务区别

  • IaaS:Infrastructure-as-a-Service(基础设施即服务)
  • PaaS:Platform-as-a-Service(平台即服务)
  • SaaS:Software-as-a-Service(软件即服务)
    在这里插入图片描述

如何理解:
设想你是一个餐饮业者,打算做披萨生意。

1、方案一:IaaS

他人提供厨房、炉子、煤气,你使用这些基础设施,来烤你的披萨。

2、方案二:PaaS
除了基础设施,他人还提供披萨饼皮。
你只要把自己的配料洒在饼皮上,让他帮你烤出来就行了。
也就是说,你要做的就是设计披萨的味道(海鲜披萨或者鸡肉披萨),他人提供平台服务,让你把自己的设计实现。

3、方案三:SaaS
他人直接做好了披萨,不用你的介入,到手的就是一个成品。你要做的就是把它卖出去,最多再包装一下,印上你自己的 Logo 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值