- 博客(64)
- 资源 (4)
- 收藏
- 关注
原创 Docker磁盘清理和迁移
0. du -hs /var/lib/docker/命令查看磁盘使用情况。linlf@dacent:~$ sudo du -hs /var/lib/docker/237G /var/lib/docker/# 删除`none`镜像docker images|grep none|awk '{print $3 }'|xargs docker rmi#只删除那些未被使用的资源docker system prune # 删除所有退出状态的容器docker container prune
2022-03-10 09:26:09
880
原创 URL命名规范
Browser URL规范基本规范不允许出现没有意义的下 URL只能允许英文字母(az,全小写)、数字(09),英文连接符(-)https://展开的层级目录内容中不允许出现“丨”、下划线“_”、多斜杠字符“//”、“+”、“#”(除特殊情况比如开发人员使用#锚点定位)层次命名不要超过3个单词正确示例:https://www.example.com/first/second/third.html错误示例:https://www.example.com/first/second/
2022-01-18 17:14:55
10180
原创 the-way-to-go(六)
错误处理与测试通常(错误信息)都会有像 “Error:” 这样的前缀,所以你的错误信息不要以大写字母开头错误类型以 “Error” 结尾,错误变量以 “err” 或 “Err” 开头不能随意地用 panic 中止程序,必须尽力补救错误让程序能继续执行recover 只能在 defer 修饰的函数中使用:用于取得 panic 调用中传递过来的错误值,如果是正常执行,调用 recover 会返回 nil,且没有其它效果panic 会导致栈被展开直到 defer 修饰的 recover () 被调用或者
2021-12-15 16:57:47
105
原创 the-way-to-go(五)
包(Package)精密计算和 big 包整数的高精度计算 Go 语言中提供了 big 包其中包含了 math 包:有用来表示大整数的 big.Int 和表示大有理数的 big.Rat 类型(可以表示为 2/5 或 3.1416 这样的分数,而不是无理数或 π)这些类型可以实现任意位类型的数字,只要内存足够大。缺点是更大的内存和处理开销使它们使用起来要比内置的数字类型慢很多大的整型数字通过 big.NewInt(n) 来构造大有理数通过 big.NewRat(N,D) 方法构造所有大数字类型都
2021-12-15 14:54:37
374
原创 the-way-to-go(四)
数组 & 切片数组具有相同 唯一类型 的一组以编号且长度固定的数据项序列可以是任意的原始类型例如整型、字符串或者自定义类型长度必须是一个常量表达式,并且必须是一个非负整数数组长度也是数组类型的一部分数组长度最大为 2Gb把一个大数组传递给函数会消耗很多内存。有两种方法可以避免这种现象:传递数组的指针使用数组的切片数组是值类型切片切片是一个 长度可变的数组对于 切片 s 来说不等式0 <= len(s) <= cap(s)永远成立多个切片如果表示同一个数组的
2021-12-14 13:57:10
102
原创 the-way-to-go(三)
函数(function)函数是基本的代码块函数编写的顺序无关紧要;鉴于可读性的需求,最好把 main() 函数写在文件的前面DRY 原则:不要重复你自己(Don’t Repeat Yourself)三种类型:普通的带有名字的函数匿名函数或者 lambda 函数方法(Methods)除了 main ()、init () 函数外,其它所有类型的函数都可以有参数与返回值函数签名:函数参数、返回值以及它们的类型Go 语言不支持函数重载函数也可以以申明的方式被使用,作为一个函数类型type
2021-12-09 16:13:50
608
原创 Go(geekr.dev)学习三
运算符算术运算符含+、-、*、/、%、++、--%(取余运算只能用于整数)不同类型的整型值不能直接进行算术运算,必需先转化相同类型再执行计算自增/自减运算符,只能作为语句,不能作为表达式,且只能用作后缀,不能放到变量前面func method() { a := 10 b := 20 var c int c = a + b c = a - b c = a * b c = a / b c = a % b // 等效于:a=a+1 a++ /
2021-12-07 16:26:28
346
原创 Go(geekr.dev)学习二
面向对象由一系列具有相同类型或不同类型的数据构成的数据集合(类似Java中的类)没有 class、extends、implements 之类的关键字和相应的概念,借助结构体实现类的声明不支持构造函数、析构函数,通过定义NewXXX这样的全局函数作为类的初始化函数指针方法与值方法(Go 语言不支持隐藏的 this 指针,所有的东西都是显式声明)toString实现:方法名固定为String;手动实现;无需显示调用使用点号 (.) 操作符访问结构体成员,格式为:“结构体.成员
2021-12-07 16:25:36
673
原创 Go(geekr.dev)学习一
数据类型数字类型类型描述int8/int16/int32/int64有符号整数uint8/uint16/uint32/uint64无符号整数float32/float64IEEE-754 32/64位浮点型数;与Java的对应:float32 => float;float64 => double自动类型推导为 float64开发中建议尽量使用 float64,因为 math 包下面的计算都是用此类型byte类似uint8rune类似 in
2021-12-07 16:22:11
646
原创 Go安装及Goland配置
Windows安装环境变量GOPATH:需要加到path中,用来执行go相关指令的(安装目录)【fixme】GOROOT:存储所有项目的第三方依赖目录(可自定义)【fixme】代理配置源一 开源全球代理https://goproxy.io源二 七牛云(仅国内访问)https://goproxy.cn源三 阿里云https://mirrors.aliyun.com/goproxy/源四 Goproxy 中国https://golang.com.cn/proxyGoland配置
2021-12-02 10:32:03
616
原创 the-way-to-go(二)
数组// 声明var variable_name [SIZE] variable_type// 初始化// SIZE可以不写(括号必需保留),会自动根据值的个数进行推到并设置var variable_name = [SIZE]variable_type{val_1,val_2,...,val_SIZE}var variable_name = []variable_type{val_1,val_2,...,val_SIZE}// 访问略// 示例var balance [10] float
2021-11-04 15:50:40
132
原创 the-way-to-go(一)
变量init函数在main函数之前执行func init() { fmt.Println("This is init function")}func main() { fmt.Println("This is main function")}// 输出内容// This is init function// This is main function标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,那使用这种标识符的对象就可以被外部包的代
2021-11-02 14:34:19
164
原创 锁状态及升级
JDK1.6之前的实现JDK1.6之前synchronized是一个重量级锁,效率很低(阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态切换需要耗费处理器时间,如果同步代码块中内容过于简单,这种切换的时间可能比用户代码执行的时间还长)JDK1.6之后优化synchronized性能出现了偏向锁、轻量级锁;锁的状态会随着竞争情况进行升级,不能降级;但偏向锁可以被重置为无锁对象结构介绍[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdfNcDr
2021-10-22 13:59:50
226
原创 ShardingSphere使用(三)(ShardingProxy)
ShardingProxy与ShardingJDBC不同,ShardingJDBC相当于是一个虚拟数据库,应用开发采用直接连接的方式配置文件说明# 服务配置server.yaml# 分片配置config-sharding.yaml# 影子库(多用于压力测试)config-shadow.yaml# 主从(读写分离)配置config-master_slave.yaml# 加密配置config-encrypt.yamlserver.yaml# 数据治理(ShardingPr.
2021-10-18 13:31:53
602
原创 ShardingSphere使用(二)(ShardingJDBC配置)
分片策略数据源配置# 所有配置的数据源都必须配置在对应数据节点下# 支持配置多数据节点spring.shardingsphere.datasource.names=m1,m2spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driversp
2021-10-18 10:29:14
1241
原创 ShardingSphere使用(一)
数据分片垂直分片:按照业务的方式进行拆分;核心理念是专库专用(按照业务将数据表分散到不同的数据库中)水平分片:横向拆分(通过某些规则将数据分散至多个库或表中)概念SQL水平拆分示例:订单实体order对应表名为t_order,拆分为t_order_0至t_order_9共10张表逻辑表:水平拆分的数据库(表)的相同逻辑和数据结构表的总称。示例中的t_order真实表:在分片的数据库中真实存在的物理表。示例中的t_order_0到t_order_9数据节点:数据分片的最小单
2021-10-18 10:24:30
1676
原创 Java守护线程
Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一起结束工作Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是GCUser和Daemon两者几乎没有区别,如果User Thread全部退出运行,只剩下Daemon Thread,那虚拟机也会退出(没有了被守护者User Thread,Daemo.
2021-10-14 22:17:50
499
原创 MySQL事务
基础概念事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一条或多条sql语句,这些语句要么都执行,要么都不执行逻辑架构和存储引擎MySQL服务器从逻辑架构上分为三层:第一层:处理客户端连接、授权认证等第二层:服务器层,负责查询语句的解析、优化、缓存及内置函数的实现、存储过程等第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务由存储引擎实现MySQL支持事务的存储引擎包括InnoDB、NDB Cluster等,InnoDB
2021-09-28 15:36:47
167
原创 MySQL脏读、幻读和不可重复读
脏读即当前事务(A)中可以读到其他事务(B)未提交的数据(脏数据)。A事务读取B事务尚未提交的数据,此时如果B事务发生错误并执行回滚,那么A事务读取到的数据就是脏数据这种情况经常发生于转账与取款操作中幻读即在事务A中按照某个条件先后两次统计数据库记录数,两次统计结果的记录数不同。事务A在执行读取操作,需要两次统计数据的总量,前一次查询数据总量后,此时事务B执行了新增数据操作并执行了提交;这个时候事务A读取的数据总量和之前统计的不一样,平白无故的多了几条数据不可重复读即在事务A中先
2021-09-27 15:24:46
336
原创 Redis
事务特性原子性:Atomicity一致性:Consistency隔离性:Isolation持久性:DurabilityRedis事务可以通过 MULTI,EXEC,DISCARD和 WATCH 等命令来实现事务(transaction)功能
2021-09-23 14:23:37
102
原创 ThreadLocal
什么是ThreadLocal?称为线程本地变量,当使用ThreadLocal维护变量时,每个Thread拥有一份自己的变量副本,多个线程之间互不干扰,实现线程间的数据隔离ThreadLocal维护的变量在线程的生命周期内起作用ThreadLocal数据结构每个线程对应一个Thread对象,每个Thread对象中,都拥有一个ThreadLocal.ThreadLocalMap成员变量ThreadLocalMap类似于HashMap,维护的都是key-value键值对(HashMap维护的是数
2021-09-16 16:28:48
96
原创 强引用、软引用、弱引用、虚引用
从JDK1.2开始,Java把对象引用分为四种级别,由高到低分别为:强引用、软引用、弱引用和虚引用强引用(Strong Reference)// 强引用就是我们经常使用的引用Object obj = new Object();把一个对象赋给一个引用变量,这个引用变量就是一个强引用只要还有强引用指向一个对象,垃圾收集器就不会回收这个对象显示的设置obj=null或超出对象的生命周期,则此对象可以被回收(回收时机视收集策略决定)软引用(Soft Reference)实现:java.l.
2021-09-16 11:05:10
117
原创 Java编程思想(二)
数组// 多维数组中构成矩阵的每个向量都可以具有任意长度,也称为粗糙数组// 只有第一维必须需要指定长度(如果不指定其他维度长度,相当于仍然为一维数组,且所有元素都是null)// 多维数组从第二维开始都是对象引用,可以为nullRandom random = new Random(47);int[][][] ints = new int[random.nextInt(7)][][];// 元素为List<String>的数组List<String>[] ls;/
2021-09-14 16:50:10
165
原创 ReentrantLock(AQS)
AbstractQueuedSynchronizer简称AQS,是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架以下代码基于Open JDK1.8.0_292以非公平锁示例ReentrantLockReentrantLock与Synchronized对比ReentrantLock与AQS的关联ReentrantLock支持公平锁和非公平锁ReentrantLock的底层由AQS实现(引子)非公平锁加锁流程(JDK1.8)// java.ut.
2021-09-13 14:55:52
245
原创 啥是CAS
CAS什么是CAS?compareAndSwap,比较交换,是一种无锁原子算法,映射到操作系统就是一条CPU的原子指令执行过程:CAS(V,E,N)当前实际值、当前期望值、修改后的值多个线程使用CAS操作一个变量时,最多只有一个会成功,其余均会失败失败的线程不会挂起,仅被告知失败,且允许再次尝试(自旋)使用无锁的方式完全没有锁竞争带来的线程间频繁调度的开销和阻塞,对死锁问题天生免疫。性能更好底层原理:硬件指令集(原子指令集)其他原子指令集:测试并设
2021-09-10 11:18:44
157
原创 Kafka基本概念
消息队列MQ 消息模型消息队列分类点对点消息生产者生产消息发送到 Queue 中,然后消息消费者从 Queue 中取出并消费消息。消息被消费后,Queue 中不再有存储,所以消费者不可能消费到已经被消费的消息。Queue 支持存在多个消费者,但是对于一条消息而言,只会有一个消费者可以消费发布/订阅消息生产者(发布)将消息发布到 Topic 中,同时有多个消费者(订阅)消费该消息。与点对点方式不同,发布到 Topic 的消息会被所有订阅者消费Kafka
2021-09-09 17:02:00
369
原创 IDEA下载源码包失败解决
问题现象:查看依赖 jar 包源码时,提示:cannt not download source Sources not found for解决方法:## 下载所有 pom 里依赖jar包的 sourcemvn dependency:resolve -Dclassifier=sources
2021-08-23 15:28:58
441
原创 设计模式及原则
面向对象的设计原则也被称为为SOLID,是敏捷软件开发过程的一部分。包括单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则单一职责原则软件模块应该只有一个被修改的理由使封装工作达到最佳状态的良好实践开闭原则模块、类和函数应该对扩展开放,对修改关闭最重要的设计原则之一,是大多数设计模式的基础里氏替换原则LSP派生类型必需完全可替代其基类型(子类型多态)在设计模块和类时,必须保证派生类型从行为的角度来看是可替代的(派生类型应该像其父类型那样表现,不应该破.
2021-08-19 19:35:36
91
原创 Cookie vs. Session
什么是 CookieHTTP Cookie( Web Cookie或浏览器 Cookie)是服务器发送到浏览器并保存在浏览器的一小块数据在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能主要用途:会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)个性化设置(如用户自定义设置、主题等)浏览器行为跟踪(如跟踪分析用户
2021-08-17 17:21:49
103
原创 Java编程思想(一)
this关键字成员变量与参数同名时,使用 this 指定为成员变量除构造器外,编译器禁止从其他任何地方使用 this 调用构造器使用this调用构造器:可以使用 this 调用一个构造器(不能调用两个)调用构造器必须位于起始处初始化顺序数组初始化:最后的一个逗号可以保留基本数据类型值会自动初始化为空值(数字:0,布尔:false)代码块:静态代码块:与成员静态变量完全相同 ==> 仅会在必要执行一次(类首次加载或静态方法被调用)非静态代码块:用来初始化每
2021-08-11 21:53:18
304
原创 Nginx入门
特点支持热部署,几乎可以做到 7*24 小时不间断运行支持不间断服务的情况下进行软件版本热更新占用内存少并发能力强、能支持高达5w并发连接典型使用场景静态资源服务反向代理服务API服务(OpenResty:一个基于 NGINX 的可伸缩的 Web 平台)擅长底层服务端资源处理(静态资源转发、反向代理、负载均衡等)相关概念跨域资源共享(CORS,Cross Origin Resource Sharing)是一种基于HTTP头的机制,新增了一组HTTP头字段。对那些可能
2021-08-01 21:05:43
137
原创 Nginx常用技巧
静态服务server { listen 80; server_name static.sherlocked93.club; # 防止中文文件名乱码 charset utf-8; location /download { # 静态资源目录 alias /usr/share/nginx/html/static; # 开启静态资源列目录 autoindex on; #
2021-08-01 16:08:07
436
原创 Nginx.conf配置详解
# 全局配置# 指定可以运行nginx服务的用户和用户组,只能在全局块配置#user [user] [group]# 注释user指令或配置为nobody表示所有用户都可运行# user指令在Windows上不生效,配置此项会生成警告#user nobody;# Nginx 进程数,一般设置为和CPU核心数一样;支持的配置项为:number | auto# 如下配置进程数为:1个master,1个workerworker_processes 1;# Nginx 错误日志级别及存放.
2021-07-31 16:35:21
2598
原创 七、字符集(MySQL读书笔记)
1、如果引用要处理各种各样的文字,或者将发布到使用不同语言的国家或地区,就应该选择Unicode字符集。对于MySQL来说,目前就是UTF-82、如果应用中涉及已有数据的导入,就需要充分考虑字符集对已有数据的兼容性3、如果数据库只需要支持一般中文,数据量很大,性能要求也很高,可以选择双字节定长编码的中文字符集,比如GBK4、如果数据库需要做大量的字符运算,如比较、排序等,那么选择定长字...
2021-07-31 10:15:01
79
原创 八、索引的设计和使用(MySQL读书笔记)
1、所有MySQL列类型都可以被索引,对相关列使用索引是提高 SELECT 操作性能的最佳途径;么中存储引擎对每个表至少支持 16 个索引,总索引长度至少为 256 字节;2、MyISAM 和 InnoDB 存储引擎的表默认创建的都是 BTREE 索引,MySQL目前不支持函数索引(8.0待验证),但是支持前缀索引;还支持全文本(FULLTEXT)索引-- 索引在创建表时可以同时创建,也...
2021-07-31 10:14:29
133
settings-ws-2020.1.zip
2020-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人