Timzhouyes's Blog

临渊羡鱼,不如退而结网。

Unix缩写风格

各种命令缩写

无聊和乏味的工作是罪恶 – Eric S. Raymond 构建于图形界面之上的操作系统,使用鼠标作为主输入设备, 是否使用缩写并不重要。比如 Windows 系统中的目录,几乎都是全称…… 点击两次鼠标进入文件夹 pf, 并不意味着点击13次才能进入文件夹 Program Files 而构建于命令行之上的操作系统,如 Linux,只要3个字母以上的单词,几乎都要缩写。 例如: cd ...

Shell是如何执行命令的

命令的执行过程梳理

从第一行的#!开始,Shell是如何执行命令的? 参考:https://linuxtoy.org/archives/shell-programming-execute.html#id3 从#!开始 开头的声明是讲文本文件的内容是交给哪个解释器来解释的。 比如:#!/bin/bash,就是将文本文件的内容交给bash去自行。 但是不同的系统之中这个文件的位置可能不同,这种情况下该怎么...

大型分布式项目的分库分表


MySQL的部分规范梳理

在网络上找到了一些资料,自认为自己之前对于MySQL相关的规范还不是很熟悉,今天就来好好梳理一下。 参考 命名规范 基本命名规则 使用Snake方式命名 禁止超过32个字符,见名知意,建议使用名词而非动词 数据库和数据表的使用前缀: 临时库和临时表必须使用tmp作为前缀,并且日期作为后缀(后缀这个可以用来区分不同版本的临时表) 备份库,...

Shell奇奇怪怪的操作符

Shell自我学习过程之中的梳理

最近在接老项目,是由Python和Shell编写的。而且其中对于逻辑调用处理的部分主要采用的是Shell。早就知道这个难啃,但是想不到其中奇奇怪怪的操作符那么多。今天就来好好梳理一下。 1. 奇怪的操作符 $?是做什么的? $? is used to find the return value of the last executed command. Try the follo...

SQL知识点自我学习

包括一些基本用法

Learn SQL and related things. Today I went through one online exam about the SQL, and here is the notes for me to do some summarisation. SELECT One thing need to learn is select different values:...

《从0开始学大数据》笔记

一转眼一月过去,这一个月主要在忙业务,忙代码,很难空出专门的时间进行自我学习。既然看起来这个状况不会有什么改变,那就改变自己的学习习惯,见缝插针,也会有很大收获。 最近在学习的就是极客时间上面的《从0开始学大数据》。 下面的标题是课程的节号。有些自己觉得有新的想法的点会记在这里。 9. 为什么我们管Yarn叫作资源调度框架 下面是Yarn的本身的架构图: 实际上我们可以看到有两套主...

学习函数式编程

对一些基本概念的理解和掌握

简直就像是递归一样……学Scala之前我们要先弄懂什么是函数式编程。 来吧!让暴风雨来的更猛烈些吧! 笔者先来一句直接概括: 函数式编程,是只关注操作而不关注实现的一种编程方式。函数可以作为参数传入另一个函数,且不改变传入参数的值。 参考资料: https://coolshell.cn/articles/10822.html http://www.ruanyifeng.com/b...

Scala Study

Some defination and example code

Found that if you want to know how to operate Spark, it is better to know how to use Scala. So learn Scala first~ Scala is a language which based on JVM, and there are a lot of similarities betwe...

Future相关学习

剖析FutureTask,附带一些代码样例

在Java之中,多线程的调用方式主要是两个,一个是Future,一个是Thread。当然,在多线程的情况下建议使用的是ThreadPool,但是本文为了突出原理,直接手动开多线程!今天就主要来学习一下Future相关的知识。 警告:本篇有些硬核,如果想看相关的总结简析可以直接看开始的重点! 简略版: 1. 是什么? Future实际上是我们想让其他线程执行耗时任务时候的一个”收货凭证...

剪枝算法和部分题解

对剪枝算法的一点个人研究

学习一下剪枝。下面是个人笔记梳理和心得。 1. 概念 剪枝,在机器学习之中的定义是:通过解决决策树过拟合,为了降低模型复杂度的一种手段。在我们的算法学习过程之中,其意义也是相似的,即通过剪枝来删除掉某些不可能成立的情况,从而帮助我们减少时空复杂度。 剪枝的目的: 剪枝就是为了降低算法复杂度,也就是在搜索空间之中剪掉绝对不可能得到解的部分来减小搜索空间。 剪枝的三原则: 正确...

Airflow简介

包括一些简单示例

作为一个Data Engineer,往往大家都是从ETL开始做起。那么Airflow就是ETL之中不可缺少的一个工具。 本文会对相关的基础概念进行介绍,并且搭配一些例子。 参考 1. 简介 先讲什么是ETL。ETL是Extract, transform, load三个词的组合,先看Wikipedia的定义: In computing, extract, transform, ...

学习ThreadLocal相关

对于一些基础知识的简析


什么是“精确一次”?

精确一次的简介和实现方式简析

在很多流系统之中,比如 Flink,kafka和其他的等等之中有一个被广泛讨论的特性:精确一次(Exactly once),但是到底什么是“Exactly once”?怎么才算是实现了”exactly once”?下面进行一下浅析。 参考 1. 背景 本文分析了流计算系统中常说的”exactly once”特性,主要观点是:exactly once 并不保证完全一样。 参考 ...

Kill之中-9和-15的区别

kill的原理初探

kill是Linux之中比较常用的命令之一,那么kill之后带有的参数不同,从而导致的结果不同这一点,自己之前没有详细的了解过。今天看到一篇相关的博文,也算顺带自己做一下梳理和总结。 原文地址 0. 从一个问题引起 作者是从一个问题引起的:一个线上服务总是出现Full GC,这个问题我们之前写过解决方案: 总是出现Full GC,很有可能是出现了内存泄露,即使是线上的环境,需要迅速恢...

Apache架构师总结的30条设计原则

与个人的一些小心得

不想当架构师的后端不是好程序员 :) 看到了一篇文章,之中讲述了一个Apache的架构师提出的30条架构原则。看了一下, 发现对于架构设计,特别是分布式的架构设计很有帮助,在这里对于每一条,进行一下自己的梳理,希望可以有所收获。 转载文章地址 一. 基本原则 1. KISS(Keep it simple, stupid) 保持每件事情尽可能的简单,用最简单的解决方案来解决问题。 ...

RESTful初探

简介,优点和缺点

本文主要解决三个问题: 什么是RESTful? RESTful的优点是什么? RESTful的缺点是什么? 1. 什么是RESTful RESTful,简而言之,就是使用URL来定位资源,用HTTP动词来描述操作。 这个即是其优点,又是其缺点:在所需要传递的信息可以被抽象成状态的时候,可以极大的简化URL,但是对于某些性质是行为的信息则无能为力。 比如: GET ...

《剑指offer》学习(一)

面试的基础知识

《剑指offer》作为被很多前辈提及过的好书,自然有其精妙之处。 那就学起来吧! 1. 数据结构 大部分面试题围绕的数据结构有: 数组,字符串:都是连续空间,一个存储数字(狭义上而言),一个存储字符。 链表和树:出现的频率比较高,虽然在Java之中,没有显式的指针操作,但是实际上对于对象的操作都是直接操作指针的。 栈和队列:栈是先入后出,所以其和递归紧密相关——由于最后...

LeetCode 动态规划 Java实现

包含题解和想法

基于参考,进行自己的解读和代码编写。 动态规划,要将问题进行转换,从底到顶的进行求解。同时,要能将状态的转换抽象出状态转移方程,将方程之间的状态流转表示出来。 先放一下学习笔记: Lucifer的动态规划讲解 Lucifer 讲义笔记 1. 如何练习递归 作者在这里提出来一个观点:可以将平时的迭代写法全部变成递归写法,比如“将字符串逆序输出”。那么作者认为迭代和递归可以完成同样的...

LeetCode 双指针专题 Java实现

包含题解和想法

上一份是二叉树的实现和想法,觉得在总结之中放入题目过于冗余,因为大家都会打开leetcode来看原题是什么,因此这份总结之中将题目部分删去,便于阅读。 在下面的资料基础之上加上个人的理解,部分代码进行明晰化,不搞缩写。 仍然是参考大佬:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8...

一些网络问题梳理

包括证书密钥泄露和DNS的anycast

今日发现了在证书链传递过程之中和DNS相关的一些问题没太搞清楚,再来总结一下,把问题摸清。 1. 证书私钥泄露了怎么办? 参考:https://www.anquanke.com/post/id/183339 假设证书链之中的某一个环节,其私钥被泄露出去了,那么该怎么办? 这种情况就需要吊销证书了。那么如果证书的状态是已吊销,怎么能够让其他的终端知道这个证书已经被吊销呢? .1 远古...

LeetCode树专题 Java实现

包含题解和想法

刷题,就得按照专题刷。 二叉树,其构成为一个根节点,且必定有两个子节点。在最下面的叶子层全都是为空的子节点。 那么每次以其左子树和右子树作为操作单位,就很自然的将整个树拆分成了更小的树,并且可以结合最后的叶子节点层全都是Null来进行递归的结束判定,可以说树这个结构是天然适合递归的。 参考:https://github.com/CyC2018/CS-Notes/blob/master/...

gitlab CI与DockerFile初探

初步梳理

因为使用的就是gitlab-ci,加上在开发环境和测试环境上面在部署的时候使用的是docker和kubernetes,今天来初探一下其过程和区别。 1. gitlab-ci 用法 参考: 作者:浦东飞猪老莲 链接:https://zhuanlan.zhihu.com/p/68371743 来源:知乎 下面就以我自己手头的这份文件作为剖析: stages: - test - ...

BigDecimal如何保证计算精度

与transient方法初探

参考:https://zhuanlan.zhihu.com/p/71796835 在计算机之中,我们知道一切都是二进制的,那么对于一个数字而言,其在内存之中的长度是有限的,这种情况之下,其也就只能保存有限的数字(必须可以表示为2的n次幂)。 这种情况之下,小数的表示就很难了——比如0.3,就没法精确表示。但是生活之中的小数操作是必不可少的,比如钱数的加减。如何使这些操作尽可能的精确呢?就...

一些杂项问题梳理

1. WebSocket是什么原理?为何可以实现持久连接? websocket是一个协议,其是借助HTTP进行连接,在连接完成之后切换成WebSocket协议。 且websocket可以主动推送信息给客户端。 2. 什么是JMM? JMM,Java Memory Model,其是一种符合内存模型规范的,屏蔽了各种硬件和操作系统差异的,保证了Java程序在各种平台下面对内存的访问都能保...

Java常见的性能问题和排查

CPU占满,内存泄露,死锁等问题

参考文章:https://mp.weixin.qq.com/s/fcYbt3wUhcZlBeZy0RfgGQ 本文主要梳理四种情况:CPU 100%,内存泄露OOM,死锁——无法创建新线程和线程频繁切换导致系统性能下降。 0. 工具梳理 0.1 top top命令是我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息。top -Hp ...

JVM浅谈

参考:3y的和纯洁的微笑的文章。 1. 类加载机制 对于一个Java Bean: 我们写一个测试类: 我们都知道,使用javac来编译代码,使用java命令来运行代码。 1.1 java编译过程和语法糖的处理 javac是java源码的编译过程,编译由三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成class文件 语法糖的处理: 我们在平...

Redis综合梳理

还是看3y的公众号总结。 1. Redis底层数据结构实现 Redis底层是K-V对,其键值只能是String,但是Value可以是以下五种形式。 其创建一个新的K-V对的时候,K和V会分开创建,也就是说一次创建两个对象。 1.1 String 在上面的图我们知道string类型有三种编码格式: int:整数值,这个整数值可以使用long类型来表示 ...

Spring家族详解

参考资料:3y的文章 1. Spring AOP & IOC 1.1 是什么?有何特点? IOC:依赖反转,解决的是对象管理和对象依赖的问题 AOP:面向切面编程,解决的是非业务代码抽取的问题。 1.2 怎么用? IoC:我们将对象的依赖关系交给Spring,需要对象的时候就去Spring之中去取。 好处: 将对象统一管理...

Java集合初探

还是天问五连:是什么?有什么特点?怎么用?如何实现?有什么要注意的地方? 走! 1. Collection 2.1 什么是Collection Java是一门面向对象的语言,那么有的时候我们需要对不止一个对象进行处理,这种情况就需要”集合“,也就是Collection来存放对象。 2.2 怎么用? 可以看出很多方法,比如 size(),contains(),iterator(...

浏览器输入URL之后都发生了什么?

先做个假设: 一个 Chrome 浏览器 一台 Linux 服务器 发起 HTML 请求 不考虑任何缓存和优化机制 采用 HTTP/1.1 + TLS/1.2 + TCP 协议 1. URL解析 HSTS 由于安全隐患,会使用HSTS强制客户端使用HTTPS来访问页面。 HSTS是可以防止中间人劫持的一种有效方式。 参考资料:https://www.bar...

多线程相关总结

包括多线程,线程池,Synchronized实现等等

参考资料:Java3y的文章。 以后,对于基础知识点的梳理,我都会通过五问:是什么?有什么特性?怎么用?怎么实现?有什么坑(使用的时候要注意什么)? 1. 为什么要使用多线程? 首先,目前的CPU一般都是多核的,如果在多核CPU上同一时刻只跑一个线程,那未免太浪费了。另外,对于IO密集型操作,CPU等待IO的时间比较长,这段时间其实也是浪费掉了的。那么多线程就可以有效的利用多核或者IO...

重新梳理计算机基础

包括Java,数据库,数据结构等等

1. Java 1.1 面向对象一定比面向过程性能差吗? 1.2 Java 的多态性 多态之中是父子相关的性质。其标识是父类引用对象可以指向子类引用对象: 父类类型 变量名字 = new 子类类型(); 那么对于方法和变量,到底以谁为准呢? 多态成员变量:编译运行看左边 Fu f=new Zi(); System.out.printl...

内存管理之页表

页,帧和偏移量

一个32位机器,如果采用一级页表,要使用4MB的内存来做页表。如何计算出这个结论的? 为什么32位的系统内存最大为4GB? 下面请看走近科学。 1. 虚拟内存和物理内存 在操作系统之中,进程是资源分配的最小单位。那么也就是说每一个进程都有独立的一块资源。这里的资源包括: 页表——对应虚拟内存资源 文件描述符表——对应打开的文件资源 寄存器——对应运行时数据 信号控...

进程,线程彻底剖析

与进程,线程间通信问题梳理

如何理解”进程是分配资源的最小单位,线程是操作系统调度的最小单位?“ 都说”进程很重“,那么到底重在哪? 进程间的通信到底是什么情况? 请听小周为你一一道来。 参考:https://blog.csdn.net/pange1991/article/details/84770181 1. 什么是计算机资源? 我们正在使用的冯诺依曼体系的计算机,将资源抽象成了三种: 计算资源+存储资...

常见的HTTP状态码梳理

包括几种状态码之间的联系

话不多说。 参考https://juejin.im/post/5c2320266fb9a04a006f0e20 1. 1xx 信息性状态码 100: 服务器接受到请求,但是还没做出响应 举例:在淘宝上面买了东西,订单生成成功,但是还没发货。 2. 2xx 成功 200: 成功。正常处理 204: No Content: 成功,但是没有要返回的内容。像发送了空包裹。 206: ...

算法和数据结构相关

在刷题之中遇到的好问题与心得

此处主要是记录一些自己觉得精彩的LeetCode题解和心得。 1. Tree 预备. AVL 树 AVL树是一种平衡二叉树,其平衡因子(某个节点的左子树的高度减去右子树的高度得到的差值)的绝对值都不超过1。在每次添加或者删除的情况下,其都会进行检验,如果不满足这个条件,就进行相应的左旋和右旋,从而使其满足平衡因子的差值的绝对值不超过1的要求。 那么为什么在许多数据结构之中使用红黑树而...

递归梳理

如何设计和使用递归

递归算是一个困扰我很久的问题,之前觉得总是转不过来弯,今天试着详细的梳理一下,将这个地方搞透。 参照:https://chenqx.github.io/2014/09/29/Algorithm-Recursive-Programming/ 1. 概念 递归算法,其实质是将问题分解成规模缩小的同类问题的子问题,然后递归的调用自身来解决问题。 递归算法的特点有: 在方法里面调用自...

Build a Spring from Zero(2)

Import Exception, meet Single Responsibility Principle, create ApplicationContext and ClassPathXmlApplicationContext

1. Refactor code: import Exception and retest Last article we said that the way only use try catch is not user-friendly. So toady we put them together and build a hierarchy tree like this: To t...

Build a Spring from Zero(1)

Create class from XML file

1. IoC and AOP IoC: Inversion of Control, or Dependency Injection(DI). In my understanding, it is we put business class and configuration file into Spring container, and then it can produce a syst...

二叉树三种顺序遍历的递归和非递归算法

个人对于递归的一点总结

二叉树之中的遍历分为几种情况,前序,中序,后序。在三种顺序之中又有递归和非递归两种。下面就结合一些资料和我自己的总结,将这几种的区别讲清楚。 乍一看这三种遍历方式可能有点糊涂,实际上很好区分,在一棵二叉树之中有根节点和左右子树,左子树必须在右子树之前遍历,那么可以选择的也就是根节点的顺序了。 如果操作顺序是: 根-左-右,那么就是前序遍历 左-根-右,那么就是中序遍历 左-右-根,...

《Java特种兵》阅读笔记(4)

第四章-Java通信,交互就需要通信


《Java特种兵》阅读笔记(3)

第三章-JVM,Java程序员的OS

第三章 - JVM,Java程序员的OS 3.2 跨平台和字节码基本原理 3.2.1 javap 命令工具 public class StringTest { public static void main(String[] args) { String a = "a" + "b" + 1; String b = "ab1"; S...

学习Algorithm思想(1)

第零章、必读系列

看到 Github 的 trend 上面有个迅速攀升的 repo,一看是讲如何面对算法和如何解决算法的。刚好在家闲来无事,学习一下。 https://github.com/labuladong/fucking-algorithm 能看到真的说人话的教程真的很幸运,不要放弃这种学习透彻的机会。 学习数据结构和算法的框架思维 作者首先讲了,本 repo 的目的就是给数据结构和算法做一个框...

《Java特种兵》阅读笔记(2)

第二章-Java程序员要知道计算机工作原理

接着学习这本书。 第2章 Java 程序员要知道计算机工作原理 2.1 Java 程序员需要知道计算机工作原理吗? 这一章主要讲解CPU,内存,磁盘等等角度来看的 计算机的基本原理。也通过缓存来理解优化设计,讲解系统的 I/O 和数据库交互的关系。 2.2 CPU的那些事儿 2.2.1 从CPU联系到 Java 首先我们清楚,每个进程或者是线程发送操作请求之后,最后会由 cpu ...

《Java特种兵》阅读笔记

第一篇——Java功底篇

开干。 第一章:看看功底如何 1.1 String的例子,见证下功底 下面看看 equals() 怎么用: package JavaTeZhongBing; public class Chapter1_1 { public static void main(String[] args) { String a = "a" + "b" + 1; ...

Java ClassLoader 解析

与 ClassLoader 源码分析

本篇是小周和你读源码(1) 系列的文章。 在读 Java 源码之中的 Class 源码时(没错,这句话在Class源码开篇似曾相识),发现其中很多东西是和 ClassLoader相关的,那么还是要将 ClassLoader 之中的一些概念性问题搞清楚。下面就是学习心得: 参考:https://blog.csdn.net/briblue/article/details/54973413 ...

Class源码解析

本篇是小周和你读源码(1) 系列的文章。 本是准备先看Boolean类,但是发现其中涉及到了太多关于Class类的内容,如果不先了解 Class 类,很难进一步将其讲清,因此转而先写本文。 还是先从概述开始吧。 概述 /** * Instances of the class {@code Class} represent classes and * interfaces in a...

Go语言接着学

按照官方教程学学Go,顺带加一些自己的笔记

学学Go,顺带记录一些自己的笔记。 基础知识 Named return values Go 的返回值可以被命名。但是在语言之中引入了一种机制,使其如果没有命名也不会报错。 如果没有命名,那么直接就会按照函数之中引入的顺序来进行返回,比如下面这段代码: func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x re...

RocketMQ初步总结和辨析

消息队列和RocketMQ入门总结

看到一篇文章之中对消息队列和RocketMQ做了初步的总结,觉得比较好,在此加上自己对于部分功能的解释在这里写一篇。 原文链接:https://juejin.im/post/5df0825b51882512420af94a 参考链接:https://www.cnblogs.com/chjxbt/p/11407890.html 消息队列简介 对于消息队列,之前有过梳理,此处只是对之前叙...

服务器临时导流本地环境

记录一点ssh的小操作

今天遇到了一个问题:由于staging上面的版本与我要开发的版本差了一版。所以我没有办法将代码merge到staging环境之中。那么怎么满足测试的需要呢?这就涉及到下面的骚操作:开个口子,将流量打到本地来。 假设服务器环境的段口为8803,我们本机上面的段口是8080。那么我们怎么打过来呢? 其实只要两步就好了: 将线上环境的nginx对应的条目改成 http://localh...

算法学习

开篇与第一章基础

要想当一个好的程序员,算法功底是必不可少的。种一棵树最好的时间是十年前,然后是现在。开搞! 我学习算法所使用的书籍是那本红皮的《算法》。 下面是一些自己总结的知识点,大部分比较零碎,就当做是个人笔记了吧。 第一章 基础 1.1 基础编程模型 1.1.10.1 二分查找 二分查找之中,我对其函数的结束条件感到十分精妙,先放代码: package Cha1Sec1; /** *...

学习corntab 定时任务

记一次项目之中定时任务的学习

由于今天要写一个定时任务的项目,今天学习一下crontab的写法。 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html crontab用来干什么? 通过corntab,可以在固定的时间间隔上面执行指定的系统指令,或者是shell script 脚本。不只是时间间隔,也可以是某个或者某些时间点。 命令...

MySQL面试相关问题

对于互联网行业而言,MySQL是非常重要的一环。 除了我们刚刚梳理过的MySQL之中索引的部分知识之外,还有其他的一些MySQL相关的知识点需要我们去掌握。在之前的一些文章之中有过梳理,在此总结一篇我认为很好的文章,作为一个综合性的整理。 学习文章地址: http://huyan.couplecoders.tech/mysql/笔试面试/2019/07/10/MySQL面试一百问/ ...

MySQL之中索引的部分知识

包含某些MySQL的面试题目解析

在日常生活之中,MySQL的索引原理还是非常重要的,也是一个程序很多时候的瓶颈所在。本文会梳理包括MySQL 索引和其他的一些MySQL 知识,下面就开始讲。 下面是参考的博客地址: http://huyan.couplecoders.tech/mysql/读书笔记/高性能mysql/2019/06/01/Mysql索引原理及其优化/ 什么是索引 先上定义: 索引是存储引擎用于快速...

Java 之中的泛型和类型擦除

参考:https://blog.csdn.net/xiangwanpeng/article/details/77896340 https://blog.csdn.net/s10461/article/details/53941091 本文的顺序是先讲泛型,然后讲关于类型擦除的问题。 泛型 概述 首先要解决的问题:什么是泛型?为什么要使用泛型? 这是网上一段内容的引用: 泛...

Java反射简析

包括部分modifier的介绍

参考: https://juejin.im/post/598ea9116fb9a03c335a99a4 概述 Java反射机制,指的是在程序 运行 的时候,对于任意一个类, 可以知道这个类的所有属性和方法, 对于任意一个对象,可以调用这个对象的所有属性和方法。 这种动态的获取信息和动态的调用对象的方法的功能被称为Java的反射机制。 反射机制最重要的就是“运行时”,其使得我们可以使用...

小周和你读源码(1)

对于java.lang部分代码的阅读提纲

今天开始梳理以下 java 的底层源码,第一部分打算从 java.lang,这个最基本的包开始。不知道这个系列多久可以完成,但是希望自己可以一直坚持下去。 本来认为,看源码就要把一个类吃透了再吃下一个,但是后来真正阅读的过程之中发现,类和类之间相互交错,想要彻底的将一个类看透对我目前而言过难,所以决定先以广度为主,将代码的大部分功能做初步的了解。 顺带一提,之前自己看openj9的代码,...

Boolean源码解析

java.lang 源码阅读与Wrapper类的简析

本篇是小周和你读源码(1) 系列的文章。 因为是第一篇,所以先尝试使用分段解释的方法。以后可能会有改动。 总概 首先是这个类的作用: /** * The Boolean class wraps a value of the primitive type * {@code boolean} in an object. An object of type * {@code Bool...

CORS相关梳理

CORS的概念和同源政策相关的梳理,加上AJAX梳理

学起来! 阮一峰相关博文: http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html https://www.ruanyifeng.com/blog/2016/04/cors.html 同源政策概述 含义 同源政策(Same-origin policy),最开始是指A网页设置的Cookie,B网页不能打开,除非这...

对于不同域名之间浏览器Cache处理方式的小探究

记一次RabbitMQ的排查处理

今天遇到了一个很有趣的问题,是这样的: 在 develop 环境和 staging 环境上,有两套版本不同的 RabbitMQ,均需要通过跳板机进行端口映射再使用。 但是在 staging 环境上是可以用 127.0.0.1 和 localhost 登录的,在 develop 环境上面就只可以用 localhost 登录。 目标:在两个环境之下都可以使用 127.0.0.1 和 loca...

对Kubernetes的port部分的具体梳理

包括clusterIP如何使用等等

下面是对于Kubernetes 的各种port如何使用的梳理。 在k8s 之中,有三种port: port, targetPort 和 nodePort。 下面是cluster 和 service 的关系示意图: 所有的service在同一个cluster之中,互相之间可以直接通信。直接通信可以通过 <clusterIP>:<port> 或者 service...

对于Spring Feign的一些学习总结

包括一个官网负载均衡教程的自我总结

教程地址:https://www.jianshu.com/p/a0d50385e598 在工作之中对于Spring Feign 的应用比较多。Feign,作为一个声明式的 Web Service 客户端,提供了HTTP 请求的模版,只要通过简单的编写接口和插入注解,就可以定义HTTP的参数,格式地址等等信息。而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用就可以完成服务请...

SpringBoot使用RedisTemplate操作Redis

自己的一些理解和感悟

在感叹完Spring对于程序的大大简化之后,在这里总结一下Redis在Spring之中的使用技巧。Spring将Redis封装成一个RedisTemplate,所以本文之中主要总结的是如何使用这个RedisTemplate。话不多说,现在开始。 参考文章地址:https://www.cnblogs.com/superfj/p/9232482.html 本博客之中之前对于Redis的部分学...

Kubernetes官方教程个人笔记

一些自己的理解和记录

本文是对于官方教程的个人笔记和记录。主要是自己认为一些比较重要的点的总结。 在之前的文章之中提到过,我们和k8s进行沟通的唯一渠道是通过 API 的 endpoint。 kubectl 就是这样一种使用 API endpoint 来进行沟通的方法。换言之,我们在使用 kubectl 的时候,就是在使用 K8s 的 API 进行沟通。 kubectl 命令...

Kubernetes入门简明教程

与K8s的一些基本概念辨析等等

今天写完了任务的API,之后对于后端的要求是学习一下K8s,本篇文章的意义是对于自己学习过程的某些记录。正文开始。 文章地址:https://www.toocruel.net/kubernetes-ru-men-jian-ming-jiao-cheng/ Kubernetes 概述 K8s是一个底层资源和容器之间的一个抽象层。我自己的理解,这里指的是一个统一管理,统一布置的中间管控层。...

Docker Compose File explaination

Simple analyse on examples from official website

How to depoly docker image to server, based on constructed CI/CD pipeline? This article is about the specific steps and details on it. 1. Example Code There are several versions of Conpose file: ...

关于Redis,MyBatis和Spring之中问题的一点梳理

包括SpringBean,以及Lua脚本的一些杂谈

最近在极限做项目的过程之中真的学到了很多……当然压力也真的很大,总是担心自己会成为团队的瓶颈,所以只能更逼自己去make it. 今天分配我的第一阶段的任务已经结束了,正好趁这个周五,马上要从北京回到坡县的晚上,在马上要去理发的间隙,静下心来好好梳理一下最近的收获和心得. 话不多说,开搞! 1. 关于 Redis 部分的总结 在新项目的过程之中,Redis的部分是我第一次遇到。 之前的,...

关于API设计和Spring的一点记录

总结一下最近踩到的坑

做中学的确是最快学习的方式……开冲 1. 对API设计的一些经验总结 下面是针对应用内部,即前端对后端的API的设计之中总结的一点经验。 命名:前端对后端的API不应叫做 Internal API,Internal API 是内部的一些功能,是不对用户开放的,比如黑名单设置等等。前端对后端的API应直接叫做 API 在API的设计之中,命名和URL设计的原则要让人一眼知道其作...

MyInfo 使用方法

对于MyInfo 的 API 调用做一点小结

MyInfo API Data 数据分为两种:政府确认数据和用户个人提供数据。 政府确认数据,是从政府的信息源拿到的,不可以以电子形式更改。个人提供数据是User自己在MyInfo APP 之中提供的,可以以电子形式更改。 FAQ MyInfo 不支持IP白名单,但是可以白名单下面的Fully Qualified Domain Names: test.ap...

学习Go语言

阅读《The way to Go》

趁着在间隙的时间,把Go入个门。虽说语言只是工具,但是学学也是比不学要好。 阅读环境在:https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md 作者的中文译本是经过官方授权的,不必担心版权问题。 话不多说。实战。 前言 本书由这样几部分组成: Go语言起源和开发环境 Go语言核...

《阿里巴巴Java开发手册》总结与理解

和个人的一些感悟

经各位大佬推荐,想要把 Java 弄明白一点,就看一下《阿里巴巴 Java 开发手册》,那就开始呗。 看了看发现 《码出高效》 这本书更适合,那就改成看这本书了…… 第一章 计算机基础 以下的基础问题: 位移运算可以快速的实现乘除运算,那位移的时候要注意什么? 浮点数的存储与计算为什么总会产生微小的误差? 乱码产生的根源是什么? 代码执行的时候,CPU 是如何配合内...

数据库设计和一些业务注意的要点

包括数据库索引设计

数据库在任何的业务之中都非常重要,尤其是对于互联网企业的业务,大部分都是“数据密集型”,说白了,不同于游戏等“计算密集型”业务,其主要就是将数据传输和搬运给需要的人,那么这种场合下面,数据库的设计就更重要了。 本文之中,我对于数据库的索引,结构和一些其他需要注意的细节方面做一些简要的梳理。下文的很多情况是针对于互联网公司的,高并发访问、低频写入、高频读取、产生大量日志、单个业务逻辑简单、分...

学习Shell

Shell简析和基本操作介绍

已经想不出该在这里说什么了,开工…… 参考:http://www.runoob.com/linux/linux-shell.html 1. Shell 简介和 Shell 环境 Shell 既是一种命令语言,又是一种程序设计语言。 Shell 提供了一个应用程序,其提供了一个界面,用户通过这个界面进行访问操作系统内核 的操作。 1.1 Shell 环境 本教程之中所说的 Shel...

MyBatis 入门

对于XML和annotation的SQL语句做一些梳理和总结

高产似母猪之中的母猪…… MyBatis 因为其支持定制化 SQL,存储过程等等,而且避免了几乎所有的JDBC 代码和手动设置参数,以及获取结果集等等这些操作,深受广大被折磨的程序员的欢迎. 由于环境配置已经存在,那么我就直接略过环境配置的环节,直接上干货啦! 1. XML 映射文件 官方说明是:由于MyBatis 的映射语句的强大,其映射器的XML 文件变得相对简单,相对于同功能的...

学习 Groovy

包括Groovy基本知识和闭包(clousure)相关

Groovy 是一门基于 JVM 的动态语言,既可以面向对象编程,又可以用作纯粹的脚本语言。在学习 Java 语法的情况下会很容易学习,下面就是 Groovy 和 Java 语法的不同之处的学习。 学习教程:https://www.kancloud.cn/kancloud/learnxinyminutes/58931 Groovy基础 1. 与Java的异同 Groovy可以作为 J...

高性能,高可用网站架构研究

对高性能网站的一点梳理

看到一篇文章,手把手教你构建一个高性能、高可用的大型分布式网站,其中将 大型分布式网站 的架构做了一个梳理,那就自己看着学习一下。 1. 大型网站的特点与架构目标 下面是一般的大型网站的特点: 用户多,分布广泛 大流量,高并发 海量数据,服务 高可用 安全环境恶劣,易受网络攻击 功能较多,迭代较快,发布比较频繁 从小到大,采取渐进发展的发展方式 大型网站架...

Linux基础知识

在后端开发过程之中需要知道的 Linux 基础知识

要做一个合格的后端开发,只会一点 Java 是远远不够的。Linux 作为一种历史”长远“的操作系统,若想将每个细节都说清楚属实太难,本篇文章之中,将一些基础的 Linux 概念和使用方法进行一定的梳理,感谢下面的参考资料: 后端程序员必备的Linux基础知识 1. 从认识操作系统开始 ……这里就不多讲了,再多讲就像科普了…… 1.1 操作系统简介 下面是作者的四点操作系统介绍: ...

Spring AOP 之中的JDK 和 CGLib 动态代理哪个效率更高

对不同用法的一点比较研究

无意之间看到了一篇文章,里面对于Spring AOP 之中 JDK 和 CGLib 二者动态代理哪个效率更高做了测试,于是在自己博客之中记一下笔记,算是兴趣的一点探究。 一、基本概念 首先,针对Spring 的两个特点:AOP和ROC之中的AOP,底层实现有两种方式:一种是 JDK 动态代理,一种是 CGLib 的方式。 自从 Java 1.3 开始,Java 提供了动态代理技术,允许...

Java相关知识点梳理(二)

容器相关

忙里偷闲,扎实基础才是正经事。 8说了,开冲! 18. Java 容器都有哪些? Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示: Collection List ArrayList LinkedList Vecto...

对MQ的一些梳理

总结一个MQ的GitChat

在看了一个GitChat之后,在自己的blog里面做一下notes和写一下自己的想法。 推荐”石杉的架构笔记“,也是这篇文章的出处。 1. 概述 消息中间件(Message Queue,简称 MQ)是我们平时经常用到的一个东西,但是对于业务而言,可能我们平时更多的是在于会实现生产信息,消费信息。但是深入思考之后可能发现下面的几个问题我们从未认真思考过: 为何要使用MQ 使用...

Java相关知识点梳理(一)

Java基础,包括Java环境,Java基本类型,抽象类与接口等等

忙里偷闲,扎实基础才是正经事。 8说了,开冲! 1. JDK和JRE有什么区别 这个知识点我想只要搞Java的都知道…… JDK:Java Development Kit的简称,Java开发工具包,提供了Java的开发环境和运行环境(JRE) JRE: Java Runtime Environment 的简称,Java 运行环境 JDK之中其实包含了JRE还有javac,...

Redis浅析

对Redis的概念和用法的简析,以及分布式数据库和缓存双写一致性分析

参考资料: 为什么我们做分布式使用 Redis ? - 程序之心 丁仪的文章 - 知乎 https://zhuanlan.zhihu.com/p/50392209 http://www.runoob.com/redis/redis-tutorial.html 1. 为什么要使用redis 在项目之中使用redis,主要的考虑角度是性能和并发。 性能 由于在数据库之中查询数据是一项特别耗费资...

Salesforce Trailhead

Walk through the 18 hours tutorial

Here is the note for Salesforce Basics tutorial on Trailhead. Get Started with the Salesforce Platform What does Salesforce Platform offer? Develop custom data models and applications for des...

Learn Django

Do a Demo on offical guide

Follow the tutorial of official website and do a Demo on Github Django at a glance Here are summaries of what Django is better. Design the model The ORM(Object-relational mapper) can make user ...

学习Python

《learn python the hard way》

Yes. Learn Python the hard way. So this blog is a studying note for me to record things I think important or difficult :) And also a place for me to write down my own thinking. Let’s Go! Codes:...

后端面试之中的部分知识点梳理

OS,网络以及数据库等等的大杂烩

针对一些问题做一下梳理。 1. 操作系统和网络 1.1 进程和线程有什么区别? 进程(process) 和线程(thread) 之间的区别为: 一个程序下至少有一个进程,一个进程下至少有一个线程。 一个 process 也可以有多个 thread 来加快程序的执行速度 1.2 进程(process) 之间有哪些通信方式? 参考:https://www.jianshu.com/p...

Shopee 后端一面准备与一道负载均衡的后端面试题

使用HashMap达到O(1)复杂度

分享一道后端的负载均衡面试题和我自己的做法。使用 java 实现。 根据 nodes 写一个 SLB(负载均衡),按 weight 来做粗略划分,注意 nodes 并不是固定的,给出的代码为了说明才固定了 3 个值。nodes 结构如下: nodes = [ { 'id': 1, 'weight': 100, # 32 core 'coun...

浅谈MySql之中的引擎

包含MySql之中的索引以及B+树的实现

作为一款被广泛使用的数据库,MySql在很多的地方都有使用。今天在这里主要是针对其中的数据库引擎,包括不同引擎的锁的力度,还有MySql之中的索引技术进行一点简要的分析和总结。 下面是参考文章链接: https://blog.csdn.net/zgrgfr/article/details/74455547 https://zhuanlan.zhihu.com/p/42106761 一...

浅谈Java之中的HashMap

基于JDK 1.8的源码解析

Hashmap不管是在我们日常的编程过程之中经常用于降低复杂度,在面试之中也经常被考察。 我在最近的学习过程之中也看到了一些很好的资料,包括源码解析或者宏观层面的讲解。在这里写下来自己的一些心得体会。 附上资料地址: https://blog.csdn.net/login_sonata/article/details/76598675 https://blog.csdn.net/v1...

Angular编程风格总结

Angular官方风格指南

浩明老哥说编程风格指南非常重要,那就咱也整一个! 在官方的风格指南里面,所有的做法都附上了原因,不论是好的还是坏的。编程风格,更像是一种程序员之间约定俗成的规定,统一的约定可以极大程度的减小阅读他人代码时候所带来的困难。 1.单一功能原则 在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该...

JavaScript基础学习(2)

从第十一节-this 开始

11-this 解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的 上下文对象。 根据函数的调用方式的不同,this会指向不同的对象:【重要】 1.以函数的形式调用时,this永远都是window。比如fun();相当于window.fun(); 2.以方法的形式调用时,this是调用方法的...

JavaScript基础学习(1)

以GitHub上一个项目为基础

作为一个前端,要是不会 JavaScript ,那就是个笑话。 不说了,开冲 https://github.com/qianguyihao/Web/wiki 01-JS简介 JavaScript 的组成 JavaScript 分为三个部分: ECMAScript: JavaScript 的语法标准。 DOM:文档对象模型,操作网页上的元素,例如让盒子移动,变色,轮播图 ...

学习Angular官方SuperHero tutorial

附带在做项目的过程之中遇到的问题和解决方法

开始学习 Angular 。下面是对于官方教程之中自认为难点或者重点的梳理。 在文章的最后是在项目之中所遇到的问题和解决方法,持续更新~ 快速上手 Components are the fundamental building blocks of Angular applications.所以在 Angular 之中,承担功能的基本单位就是 Components。 使用 Ang...

《Spring Boot 42讲》学习笔记(4)

构建RESTful API服务

第2-8课:Spring Boot 构建一个 RESTful Web 服务 RESTful 的核心概念是“资源”,从 RESTful 的角度来看,网络之中,无论一段文本,图片,歌曲,服务等等都对应一个特定的URI,并且用URI进行表示,访问这个URI就可以得到这个资源。 资源可以有多种表现形式,也就是资源的“表述(Representation)。 此处教程所举的例子是一张图片,既可以是...

基本算法和数据结构

对自己在学习基础算法和数据结构之中的一些个人问题的记录

在给自己弥补算法和数据结构基础时候,作为小白经常有一些问题,或者是质疑算法,或者是质疑数据结构的设计,但是最后总是被自己打脸……开一个post,将这些“奇思妙想”记录下来,也防止自己以后再犯一样的错误。 1. 循环队列 循环队列,使用两个指针进行判断,一个是front队首,指向的就是队列之中的第一个元素,一个是tail队尾,指向的是队列之中的最后一个元素的后一位。这就导致了,如果只想使用一个...

《Spring Boot 42讲》学习笔记(3)

模板引擎Thymeleaf使用

第2-3课:模板引擎Thymeleaf基础使用 1. 什么是模板引擎? 模板引擎,是为了用户界面和业务数据(内容)分离而成的,其可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 模板引擎的实现有“置换引擎”(将模板内容之中的特定标记替换,但效率底下),“解释型”模板引擎和“编译型”模板引擎等。 2. Thymeleaf介绍与其特点 具体介绍网上很多,个人理...

浅谈MVC,MVP和MVVM

对重点和差异点做一些分析

在寻找Angular教程的过程之中,发现网上有声音认为Angular是MVVM,突然觉得自己对于这些架构的区别还不够明晰,因此在这里系统的学习和总结一下,MVC,MVP,MVVM三者之间的区别和重点。 1 . MVC MVC,也就是 Model, View, Controller 三层。 谈谈MVC模式,下面是对于M,V,C的具体介绍: 1)最上面的一层,是直接面向最终用户的”...

《Spring Boot 42讲》学习笔记(2)

构建基本项目与Spring之中annotation的浅析

第2-1课:Spring Boot对基础Web开发的支持(上) Spring Boot对于Web的开发的支持很全面,包括开发,测试和部署都有支持。Spring-boot-starter-wew是spring Boot对于Web开发提供支持的组件,其主要包括RESTful,参数校验,使用Tomcat作为内嵌容器。下面是介绍: JSON的支持 JSON(JavaScript Object ...

《Spring Boot 42讲》学习笔记(1)

从Hello world开始……

第 1-1 课:Spring Boot产生的背景及其设计理念 Spring是Rod Johnson在不满当时的Java EE和EJB过于臃肿,不是所有的项目都需要这种大型框架的情况下自行开发的。在其interface21一炮走红之后,一对一的J2EE设计和开发开始流行起来。2003年,其和同伴在这个基础上开发了一个全新的框架,命名为Spring。随后Spring的发展进入了快车道。 到底...