天飞 学习笔记


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 公益404

  • 搜索

Mysql DAL

发表于 2019-12-23 | 更新于: 2019-12-23 | 分类于 uncategorized

MySQL 数据访问层中间件(DAL)

graph TB
client-->altas
client-->mysql_router
client-->mycat
altas-->master
mysql_router-->master
mycat-->master
altas-->slave
mysql_router-->slave
mycat-->slave
graph TB
cobar-->mycat

使用横向扩展,读写分离提升读性能

使用分库分表提升写性能

历年关键字

发表于 2019-12-19 | 更新于: 2019-12-19 | 分类于 uncategorized

2019

微服务

service mesh 服务网格

serviceless

chaos enginering 混沌工程

ant

kubernetes学习笔记

发表于 2019-11-27 | 更新于: 2019-11-27 | 分类于 kubernetes

docker

docker engine

图片来自[https://www.qikqiak.com/k8s-book/docs/2.Docker%20%E7%AE%80%E4%BB%8B.html](https://www.qikqiak.com/k8s-book/docs/2.Docker 简介.html)

命令

1
$ docker pull [选项] [Docker Registry 地址[:端口]/]仓库名[:标签]

运行

1
2
3
4
docker run -i -t --rm 镜像:标签 /bin/bash
$ docker run ubuntu:16.04 /bin/echo 'Hello world'
-d 后台运行
docker commit修复运行的镜像读写层后提交

列出镜像

1
2
3
 docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest 3c41ce05add9 5 months ago 95 MB

当利用docker run来创建容器时,Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

dockerfile

Union FS 是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层

  1. FROM 指定基础镜像
    1. 官方高质量镜像
    2. scratch 一个虚拟的镜像,表示空白
  2. RUN 运行命令(使用&&连接生成一层FS, 支持\ 换行 ,# 注释)
    1. shell:RUN <命令>
    2. exec:RUN [“可执行文件”, “参数1”, “参数2”]

构建镜像

1
docker build [选项] <上下文路径/URL/->

镜像构建上下文目录是相对engine来说的,不是本地的路径,必须改./开头.

使用-f可以指定任意名称的文件为dockerfile文件.

资源类型
secrets
clusterrolebinding
serviceaccount

#

1
2
kubectl delete namespaces <insert-some-namespace-name>
删除namespace将删除其下的所有资源

kubernetes-dashboard v1.10在k8s 1.16中无法登陆

1
2
3
https://github.com/kubernetes/dashboard/issues/4406
floreks commented on Oct 10, 2019
Dashboard v1 is not being maintained and will not work with newer versions of K8S. v2 will be updated and new beta will be released once #4377 is merged.

负载均衡后端检测

发表于 2019-11-13 | 更新于: 2019-11-13 | 分类于 负载均衡

nginx后端检测

默认没有踢除功能

linux资源管理

发表于 2019-11-13 | 更新于: 2019-11-13 | 分类于 linux

进程

单进程->FD

1
2
3
4
#用户单进程的最大文件数,用户登录时生效
echo '* soft nofile 1048576' >> /etc/security/limits.conf
echo '* hard nofile 1048576' >> /etc/security/limits.conf
ulimit -n 1048576 #用户单进程的最大文件描述符数 当前会话生效

tcp/ip

发表于 2019-11-13 | 更新于: 2019-11-13 | 分类于 tcpip

端口号

TCP协议源端口与目标端口分别占用2个字节(16个bit),共可存储2^16=65536个端口.去掉1024个系统保留端口,可用64512个端口.

一个客户端共可发起64512个TCP连接

服务端没有数量限制,取决于内存,CPU资源限制.服务端的TCP连接数为: socket fd(clientip:65412)*N.

数据结构

发表于 2019-11-10 | 更新于: 2019-11-10 | 分类于 dataStructures

Data Structures 数据结构

heep(堆)

堆(heap)又被为优先队列(priority queue),但并不是队列(按先后顺序).堆是按优先级dequeue(出队),enqueue(入队).

“堆”是实现调度器的理想数据结构。(Linux中可以使用nice命令来影响进程的优先级)

堆通常是一个可以被看做一棵完全二叉树(complete binary tree)的数组对象(二叉堆(binary heap)

堆顶的优先级高,堆的主要操作是插入和删除最小元素(元素值本身为优先级键值,小元素享有高优先级)。

  1. 新加入的节点加入底部,与父节点比较优先级大小,比父节点小就交换.(percolate_up)

  2. 删除根节点后生成两个子树,重构堆(percolate_down).将lasted做为根连接子树

堆是非线性数据结构,相当于一维数组,有两个直接后继。

堆的定义如下:

1
2
n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。
(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2)

在程序中,堆用于动态分配和释放程序所使用的对象。在以下情况中调用堆操作:

  1. 事先不知道程序所需对象的数量和大小。

  2. 对象太大,不适合使用堆栈分配器。

堆使用运行期间分配给代码和堆栈以外的部分内存。

1
2
3
4
计算公式
parent(i) = floor((i - 1)/2)
left(i) = 2i + 1
right(i) = 2i + 2

这些公式允许我们不使用指针就可以找到任何一个节点的父节点或者子节点。事情比简单的去掉指针要复杂,但这就是交易:我们节约了空间,但是要进行更多计算。幸好这些计算很快并且只需要O(1)的时间。

react

发表于 2019-11-05 | 更新于: 2019-11-05 | 分类于 front-end

react 遍历

1
2
3
4
5
6
res.data.map(
(item, index)=>{
item.key = index;
return item;
}
);

antd table

1
2
3
const columns
const dataSource
const rowSelection

CROS

1
Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/imooc/order/' from origin 'http://127.0.0.1:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
1
Origin: http://127.0.0.1:3000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pip install django djangorestframework django-cors-headers

INSTALLED_APPS = [
...
'corsheaders',
...
]

MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware'
]


CORS_ORIGIN_ALLOW_ALL=True
或
CORS_ORIGIN_WHITELIST = [
'google.com',
'hostname.example.com',
'localhost:8000',
'127.0.0.1:9000'
]

index.js:1375 Warning: Failed prop type: Invalid prop id of type array supplied to Select, expected string.

expected to return a value in arrow function array-callback-return

A map() creates an array, so a return is expected for all code paths (if/elses).

If you don’t want an array or to return data, use forEach instead.

Linux kernel

发表于 2019-11-01 | 更新于: 2019-11-01 | 分类于 linux

文件系统

  1. 文件
  2. 目录
  3. 链接
  4. 块设备
  5. 字符设备
  6. 管道
  7. 套接字

文件

inode惟一索引

文件属性

1
2
3
4
5
6
7
8
9
[Fri Nov 01 talen@tp hexo.blog]$ stat yarn.lock
File: yarn.lock
Size: 97141 Blocks: 192 IO Block: 4096 regular file
Device: 803h/2051d Inode: 42116468 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ talen) Gid: ( 985/ users)
Access: 2019-09-16 17:39:57.848034466 +0800
Modify: 2019-07-24 20:51:25.073555443 +0800
Change: 2019-07-24 20:51:25.073555443 +0800
Birth: 2019-07-24 20:51:25.073555443 +0800
阅读全文 »

javascript 学习

发表于 2019-09-28 | 更新于: 2019-09-28 | 分类于 front-end

html是结构,CSS是表示,js是动态

graph TB
ES5
ES6
node(node.js ES服务端运行环境)
ES6-->babel(babel转码器)
babel-->ES5
less-->css
jsonp[jsonp可以跨域]-->api
axios[axios不能跨域]-->api

一个变量,多个数组

变量

变量要先声明再赋值

变量名规范:

  1. 必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号和数字
  2. 变量名区分大小写
  3. 不允许使用JavaScript关键字和保留字做变量名
1
2
3
4
var 变量名,变量2,变量n; //变量需要声明
var mychar;
mychar="javascript";
var mynum = 6;

输出变量,字符串可以使用+号串连

ES6增加let代码块作用域变量

数组

创建数组语法:

1
var myarray=new Array(num); //num是数组初始长度,可为空, 可扩展

数组赋值:

JS的数组中添加元素只需要使用未使用的索引即可.

1
2
3
4
5
6
var myarr=new Array(); //定义数组
myarr[0]=80;
myarr[1]=60;
myarr[2]=99;
var myarray = new Array(66,80,90,77,59);//创建数组同时赋值
var myarray = [66,80,90,77,59];//直接输入一个数组(称 “字面量数组”)

数组长度

1
myarray.length; //获得数组myarray的长度

数组的维度

1
2
3
4
一维数组的表示: myarray[ ]
二维数组的表示: myarray[ ][ ]
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3]]
myarr[0][1]=5; //将5的值传入到数组中,覆盖原有值。说明: myarr[0][1] ,0 表示表的行,1表示表的列。

操作符

算术操作符(+、-、*、/等),比较操作符(<、>、>=、<=等),逻辑操作符(&&、||、!)

自加一“++”;自减一“--”

操作符之间的优先级(高到低):

算术操作符 → 比较操作符 → 逻辑操作符 → “=”赋值符号

condition

1
2
3
4
5
6
7
8
9
if(条件1)
{ 条件1成立时执行的代码}
else if(条件2)
{ 条件2成立时执行的代码}
...
else if(条件n)
{ 条件n成立时执行的代码}
else
{ 条件1、2至n不成立时执行的代码}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 当有很多种选项的时候,switch比if else使用更方便。
switch(表达式)
{
case值1:
执行代码块 1
break;
case值2:
执行代码块 2
break;
...
case值n:
执行代码块 n
break;
default:
与 case值1 、 case值2...case值n 不同时执行的代码
}

迭代

1
2
3
4
for(初始化变量;循环条件;循环迭代)
{
循环语句
}
1
2
3
4
while(判断条件)
{
循环语句
}
1
2
3
4
5
do //先执行一次再循环
{
循环语句
}
while(判断条件)

break语句退出当前循环,直接执行后面的代码

continue的作用是仅仅跳过本次循环

function

函数定义后需要调用

1
2
3
4
5
function 函数名()
{
函数代码;
}
函数名()

JavaScript-警告(alert 消息对话框)

1
alert(字符串或变量);

JavaScript-确认(confirm 消息对话框)

1
confirm(str);

参数说明:

1
2
str:在消息对话框中要显示的文本
返回值: Boolean值

返回值:

1
2
当用户点击"确定"按钮时,返回true
当用户点击"取消"按钮时,返回false

JavaScript-提问(prompt 消息对话框)

语法:

1
prompt(str1, str2);

参数说明:

1
2
str1: 要显示在消息对话框中的文本,不可修改
str2:文本框中的内容,可以修改

返回值:

1
2
1. 点击确定按钮,文本框中的内容将作为函数返回值
2. 点击取消按钮,将返回null

JavaScript-打开新窗口(window.open)

语法:

1
window.open([URL], [窗口名称], [参数字符串])

参数说明:

1
2
3
4
5
6
7
8
9
10
URL:可选参数,在窗口中要显示网页的网址或路径。如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档。
窗口名称:可选参数,被打开窗口的名称。
1.该名称由字母、数字和下划线字符组成。
2."_top"、"_blank"、"_self"具有特殊意义的名称。
_blank:在新窗口显示目标网页
_self:在当前窗口显示目标网页
_top:框架网页中在上部窗口中显示目标网页
3.相同 name 的窗口只能创建一个,要想创建多个窗口则 name 不能相同。
4.name 不能包含有空格。
参数字符串:可选参数,设置窗口参数,各参数用逗号隔开。

参数表:

img

JavaScript-关闭窗口(window.close)

close()关闭窗口

用法:

1
window.close();   //关闭本窗口

或

1
<窗口对象>.close();   //关闭指定的窗口

认识DOM

文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。

img

HTML文档可以说由节点构成的集合,三种常见的DOM节点:

<元素标签 属性>文本<元素>

为元素标签配置惟一ID属性,通过ID获取元素

语法:

1
document.getElementById(“id”)

结果:null或[object HTMLParagraphElement]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Object.innerHTML; //获取/修改元素的内容

Object.style.property=new style; //修改元素的CSS样式
<p id="pcon">Hello World!</p>
<script>
var mychar = document.getElementById("pcon");
mychar.style.color="red";
mychar.style.fontSize="20";
mychar.style.backgroundColor ="blue";
</script>

Object.style.display = none/block;//显示或隐藏对象

object.className = classname; //配置对象类名

img

整理链接:https://www.imooc.com/code/468

123…10

天飞

95 日志
41 分类
79 标签
RSS
GitHub E-Mail
Links
  • 天飞的博客
© 2017 — 2020 天飞
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站访客数 人次 本站总访问量 次