Java Style Guide
# Java Style Guide
The intention of this guide is to provide a set of conventions that encourage good code.
It is the distillation of many combined man-years of software engineering and Java development
experience. While some suggestions are more strict than others, you should always practice good
judgement.
If following the guide causes unnecessary hoop-jumping or otherwise less-readable code,
readability trumps the guide. However, if the more ‘readable’ variant comes with
perils or pitfalls, ...
SSM + SpringBoot
# MyBatis
# 基本介绍
ORM(Object Relational Mapping): 对象关系映射,指的是持久化数据和实体对象的映射模式,解决面向对象与关系型数据库存在的互不匹配的现象
[
](https://camo.githubusercontent.com/f891e8a939201da30df7e2c6bf1b6f88d57918561a8eff2a777b444da79de6d5/68747470733a2f2f67697465652e636f6d2f7365617a65616e2f696d616765732f7261772f6d61737465722f4672616d652f4d7942617469732d4f524d2545342542422538422545372542422538442e706e67)
MyBatis:
MyBatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需关注 SQL 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 Statement 等过程。
MyBatis 通过 XML 或注解 ...
Cache
# 缓存
# 一、缓存特征
# 命中率
当某个请求能够通过访问缓存而得到响应时,称为缓存命中。
缓存命中率越高,缓存的利用率也就越高。
# 最大空间
缓存通常位于内存中,内存的空间通常比磁盘空间小的多,因此缓存的最大空间不可能非常大。
当缓存存放的数据量超过最大空间时,就需要淘汰部分数据来存放新到达的数据。
# 淘汰策略
FIFO(First In First Out):先进先出策略,在实时性的场景下,需要经常访问最新的数据,那么就可以使用 FIFO,使得最先进入的数据(最晚的数据)被淘汰。
LRU(Least Recently Used):最近最久未使用策略,优先淘汰最久未使用的数据,也就是上次被访问时间距离现在最久的数据。该策略可以保证内存中的数据都是热点数据,也就是经常被访问的数据,从而保证缓存命中率。
LFU(Least Frequently Used):最不经常使用策略,优先淘汰一段时间内使用次数最少的数据。
# 二、缓存位置
# 浏览器
当 HTTP 响应允许进行缓存时,浏览器会将 HTML、CSS、JavaScript、图片等静态资源进行缓存。
# ISP ...
Algorithm and Data Structure - Other
# 算法 - 其它
# 汉诺塔
有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。
这是一个经典的递归问题,分为三步求解:
① 将 n-1 个圆盘从 from -> buffer
② 将 1 个圆盘从 from -> to
③ 将 n-1 个圆盘从 buffer -> to
如果只有一个圆盘,那么只需要进行一次移动操作。
从上面的讨论可以知道,an = 2 * an-1 + 1,显然 an = 2n - 1,n 个圆盘需要移动 2n - 1 次。
public class Hanoi {
public static void move(int n, String from, String buffer, String to) {
if (n == 1) {
System.out.println("from " + from + " to " + to);
retur ...
Design Patterns - Bridge
# 桥接(Bridge)
# Intent
将抽象与实现分离开来,使它们可以独立变化。
# Class Diagram
Abstraction:定义抽象类的接口
Implementor:定义实现类接口
# Implementation
RemoteControl 表示遥控器,指代 Abstraction。
TV 表示电视,指代 Implementor。
桥接模式将遥控器和电视分离开来,从而可以独立改变遥控器或者电视的实现。
public abstract class TV {
public abstract void on();
public abstract void off();
public abstract void tuneChannel();
}
public class Sony extends TV {
@Override
public void on() {
System.out.println("Sony.on()");
}
@O ...
Javascript Interview Questions and Answers
# What are the possible ways to create objects in JavaScript
There are many ways to create objects in javascript as below
Object constructor:
The simplest way to create an empty object is using the Object constructor. Currently this approach is not recommended.
var object = new Object();
Object’s create method:
The create method of Object creates a new object by passing the prototype object as a parameter
var object = Object.create(null);
Object literal syntax:
The object lit ...
Promise Interview Questions
# 从一道让我失眠的 Promise 面试题开始,深入分析 Promise 实现细节
先把罪魁祸首挂在这里给大家群殴 👇
Promise.resolve().then(() => {
console.log(0);
return Promise.resolve(4);
}).then((res) => {
console.log(res)
})
Promise.resolve().then(() => {
console.log(1);
}).then(() => {
console.log(2);
}).then(() => {
console.log(3);
}).then(() => {
console.log(5);
}).then(() =>{
console.log(6);
})
// 大家先思考一下
这道面试题是无意间在微信群里看到的,据说是某厂的面试题。一般关于 ...
some JS Frontend Interview Quesitions
# 1. 变量声明与类型
# 1.1 var let const 区别
var 是 ES5 语法,let、const 是 ES6 的语法
var 有变量提升
var、let 是变量,可修改;const 是常量,不可修改
let、const 块级作用域;var 函数作用域
【ES6】变量声明 - var-let-const - 区别与联系 - 总结
# 1.2 数据类型
值类型(7 个):Undefined、Null、Number、String、Boolean、Symbol (ES6)、BigInt (ES10)
引用类型:Object:Array、Function
【JS】JavaScript-ES5 数据类型 - 基本数据类型 - 引用数据类型 - 类型之间的转换 - 数据类型的判断
# 1.3 值类型与引用类型的区别
值类型 存在栈内存中,变量拿到的就是它的值
引用类型 存在堆内存中,变量拿到的只是它的一个引用,是它的地址
【JS】JavaScript - 对象 - Object - 内建对象 - 宿主对象 - 自定义对象 - 操作对象 - 基本数据类型与引用数据类型区别
...
Algorithm and Data Structure interview summary notes
# Interviews
# 目录
在线练习
在线面试编程
数据结构
算法
位运算
算法复杂度分析
视频教程
面试书籍
计算机科学与技术资讯
文件结构
# 在线练习
LeetCode
Virtual Judge
CareerCup
HackerRank
CodeFights
Kattis
HackerEarth
# 在线面试编程
Gainlo
Refdash
# 数据结构
# Linked List
链表即是由节点(Node)组成的线性集合,每个节点可以利用指针指向其他节点。它是一种包含了多个节点的、能够用于表示序列的数据结构。
单向链表:链表中的节点仅指向下一个节点,并且最后一个节点指向空。
双向链表:其中每个节点具有两个指针 p、n,使得 p 指向先前节点并且 n 指向下一个节点;最后一个节点的 n 指针指向 null。
循环链表:每个节点指向下一个节点并且最后一个节点指向第一个节点的链表。
时间复杂度:
索引: O(n)
搜索: O(n)
插入: O(1)
移除: O(1)
# Stack
栈是元素的集合,其包含了两个基本操作:push 操作可以用 ...
my kubernetes beginner notes
# Kubernetes 入门笔记
# 前置内容
Linux | Linux 入门笔记
Docker | Docker 入门笔记
# 目录
1 Kubernetes 概念和架构
2 从零搭建 Kubernetes 集群
3 Kubernetes 核心概念
4 搭建集群监控平台系统
5 从零搭建高可用 Kubernetess 集群
6 在集群环境中部署项目
# 1 Kubernetes 概述和架构
# 1.1 Kubernetes 简介
Kubernetes,首字母 K,尾字母 s,中间 8 个字母,简称 K8s。
# 1.2 Kubernetes 功能
目前只需要知道 Kubernetes 有以下 9 个功能,关于这 9 个功能,后面详细介绍。(我也不知道这些是啥玩意,先记住名词再说)
自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
自我修复
当容器失败时,会对容器进行重启
当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服 ...