08 2021 档案

摘要:这里有篇博客写的挺不错的,可以参考学习:PM2实用入门指南,不过最好的学习方式还是看官方文档。 一、PM2 介绍 PM2(Process Manager 2 )是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的 阅读全文
posted @ 2021-08-31 22:38 古兰精 阅读(2939) 评论(0) 推荐(0) 编辑
摘要:一、内部原理 exports = module.exports = {} exports 是 module.exports 的引用,怎么理解这句话呢?大概就是 var a = {}; var b = a; a 和 b 之间的关系吧。 1、require:在文件中 require 实际引入的是 mod 阅读全文
posted @ 2021-08-31 19:07 古兰精 阅读(2990) 评论(0) 推荐(0) 编辑
摘要:一、nginx 配置 http 请求重定向到 https server段{}可以这样写: // 方式1 rewrite ^/(.*)$ http://domain.com/$1 permanent; // 方式2 rewrite ^ http://domain.com$request_uri? pe 阅读全文
posted @ 2021-08-30 22:57 古兰精 阅读(1418) 评论(0) 推荐(0) 编辑
摘要:我们习惯的使用下面命令进入容器: docker run -it --name container5 busybox /bin/bash 但是今天遇到报错如下: [root@moapp-0003 ~]# docker exec -it c713b93718e0 /bin/bash OCI runtim 阅读全文
posted @ 2021-08-30 15:54 古兰精 阅读(9173) 评论(0) 推荐(0) 编辑
摘要:这个问题的起因是后端日志经常有一个报错:Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: syntax error at or near "LIMIT"。 但是奇怪的是那个查询方法根本就没有 limit 阅读全文
posted @ 2021-08-29 22:51 古兰精 阅读(4067) 评论(0) 推荐(1) 编辑
摘要:所有熟悉 Vue 技术栈的小伙伴,都知道在列表渲染的场景下,不能使用 index 或 random 作为 key。 也有很多小伙伴在面试的时候会被面试官比较详细的追问,假如使用index 作为 key 会有什么问题?假如使用 random 作为 key 会有什么问题?假如使用一个唯一不变的 id 作 阅读全文
posted @ 2021-08-29 21:29 古兰精 阅读(422) 评论(0) 推荐(0) 编辑
摘要:做实训平台的时候有用到将 docker 应用迁移到 linux 的数据盘,我们有个 500g 的数据盘,对这方面不了解,所以查博客学习一下。 通常在项目正式上线后,随着Linux服务器中系统盘数据量的不断增长,导致Disk过高,数据存储空间短缺。因此,我们通常需要将系统盘数据进行迁移,通过创建数据盘 阅读全文
posted @ 2021-08-29 19:31 古兰精 阅读(1408) 评论(0) 推荐(0) 编辑
摘要:一、磁盘管理 1、Linux 磁盘管理好坏直接关系到整个系统的性能问题。Linux 磁盘管理常用三个命令为 df、du 和 fdisk。 df(英文全称:disk full):列出文件系统的整体磁盘使用量 du(英文全称:disk used):检查磁盘空间使用量 fdisk:用于磁盘分区 2、df 阅读全文
posted @ 2021-08-29 14:46 古兰精 阅读(8343) 评论(0) 推荐(0) 编辑
摘要:一、文件基础属性 1、Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 2、在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限: chown 阅读全文
posted @ 2021-08-28 23:24 古兰精 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:在用户界面中使用图片和动画已经成为现代网络应用的一个普遍现象。尽管这些现代设计的重点是改善你的应用程序的用户体验,但如果这些图像对所有设备都没有响应,事情就会变得适得其反。作为开发者,我们必须满足所有这些要求。但大多数时候,我们错过了一些小东西,而这些小东西可以带来巨大的差异,因为我们正在寻找更高层 阅读全文
posted @ 2021-08-28 20:59 古兰精 阅读(1111) 评论(0) 推荐(0) 编辑
摘要:一、问题背景 1、bug 描述 某日被告知有一个bug:在网页宽度较小时,发现 Flex 容器被子元素撑大导致UI显示异常的问题,如下 这是什么鬼...我期待它不管什么时候都能像下面这样显示(不撑破父容器),就如这样: 2、问题解决: 我试了试,发现给 flex-item 容器加个overflow: 阅读全文
posted @ 2021-08-28 20:33 古兰精 阅读(4249) 评论(1) 推荐(2) 编辑
摘要:一、项目实例问题 1、问题背景 某个需求做了之后,注意到有个接口返回数据特别慢,特别是使用下面的 3 个字段排序时就直接卡死,肯定是 sql 性能写法问题,所以决定研究一下查看究竟。 其实需求挺简单,有几个字段排序,前端需要展示那些字段,然后之前的后端写的 sql 如下,仅提取主要问题点,其实就是需 阅读全文
posted @ 2021-08-27 23:48 古兰精 阅读(2777) 评论(0) 推荐(0) 编辑
摘要:一、df 、du 常见命令 du 查看目录大小,df 查看磁盘使用情况。 1、df -h 命令查看:文件系统 容量 已用 可用 已用占比 挂载点 (列标题) 2、查看某个目录的大小:du -hs /home/master/documents 3、查看目录下所有目录的大小并按大小降序排列:sudo d 阅读全文
posted @ 2021-08-26 22:49 古兰精 阅读(2298) 评论(0) 推荐(0) 编辑
摘要:一、项目实例 我们有个订单,有不同的产品类型,比如课程、云市场类,那么订单实体类的 imageUrl 就得取自不同的表了。比如 type = 课程时,imageUrl 数据得从课程表里取;type = 云市场时,imageUrl 数据得从云市场表里取。 那么如何写 sql 呢?利用 case whe 阅读全文
posted @ 2021-08-26 22:33 古兰精 阅读(1633) 评论(0) 推荐(0) 编辑
摘要:一、Linux 系统启动过程 1、Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: (1)内核的引导。 (2)运行 init。 (3)系统初始化。 (4)建立终端 。 (5)用户登录系统。 2、内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动 阅读全文
posted @ 2021-08-23 22:49 古兰精 阅读(3279) 评论(0) 推荐(0) 编辑
摘要:一、场景及问题背景: 我们平时开发时本质上就是对应用程序的各种状态进行切换并作出相应处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到,然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得代码逻辑特别的乱。随着增加新的状态或者修改一个状态,if el 阅读全文
posted @ 2021-08-22 22:26 古兰精 阅读(319) 评论(0) 推荐(0) 编辑
摘要:先可以看下这篇博客:如何用状态机简化代码中复杂的 if else 逻辑 —— https://mp.weixin.qq.com/s/dDOA5JQQz3r4a7-yPl33Bg 一、状态机的基本概念 当处理的情况特别多,我们把每种情况的处理逻辑封装成一个状态,然后不同情况之间的转换变成状态的转换。这 阅读全文
posted @ 2021-08-22 21:30 古兰精 阅读(728) 评论(0) 推荐(0) 编辑
摘要:测试用例设计:将软件测试的行为活动,作为一个科学化的组织归纳。 测试用例:设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。 因为我们不可能进行穷举测试,为了节省时间和资源、提高测试效率,必须从数量极大的可用测试数据精心挑选出具有代表性或者特殊性的测试数据来进行测试。 阅读全文
posted @ 2021-08-22 20:40 古兰精 阅读(1959) 评论(0) 推荐(0) 编辑
摘要:测试用例设计的最基本要求:覆盖住所要测试的功能。这是再基本不过的要求了,别看只是简单的一句话,要能够达到切实覆盖全面,需要对被测试产品功能的全面了解、明确测试范围(特别是要明确哪些是不需要测试的)、具备基本的测试技术(如:等价类划分等)等。 那么满足了上述这条要求是不是设计出来的测试用例就是好的测试 阅读全文
posted @ 2021-08-22 20:06 古兰精 阅读(1031) 评论(0) 推荐(1) 编辑
摘要:这篇文章我主要想记录学习一下在软件测试行业中的一些常见理论效应以做基本了解。 一、杀虫剂效应 1、杀虫剂效应介绍 杀虫剂效应原本指农业中随着农药的普及使用,害虫对农药的抗药性就越来越强,农药就越来越难杀死害虫。在农场里为了对付破坏农作物的害虫,农业专家开发出了对应的杀虫剂,刚开始效果很好,但是随着时 阅读全文
posted @ 2021-08-22 17:37 古兰精 阅读(1110) 评论(0) 推荐(0) 编辑
摘要:一、软件测试方法: 白盒测试、黑盒测试、灰盒测试、静态测试、动态测试 1、白盒测试: 是一种测试用例设计方法,在这里盒子指的是被测试的软件。白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计 阅读全文
posted @ 2021-08-22 16:40 古兰精 阅读(8577) 评论(0) 推荐(0) 编辑
摘要:一、shell流程控制 1、和其他语言不一样,sh 的流程控制不可为空。如果 else 分支没有语句执行,就不要写这个 else。 2、if else 流程 (1)if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行( 阅读全文
posted @ 2021-08-21 22:53 古兰精 阅读(601) 评论(0) 推荐(0) 编辑
摘要:一、proxy_cookie_domain配置误区 Nginx做反向代理的时候,我们一般习惯添加proxy_cookie_domain配置,来做cookie的域名转换,比如 location /api { proxy_pass https://***.test.com; proxy_cookie_d 阅读全文
posted @ 2021-08-21 22:16 古兰精 阅读(4308) 评论(0) 推荐(0) 编辑
摘要:一、设备文件处理与磁盘文件的区别 先说几个比较直观的感觉。首先,在你通过键盘(一般是标准的输入的终端设备),输入字符,直到你输入的回车键(键盘上面的 Enter 为回车键,不是换行键;换行的 ACCII 为 10,回车为 13;换行在程序中的体现就是 \n),你的程序才会有“反应”,给人一种好像就是 阅读全文
posted @ 2021-08-21 21:36 古兰精 阅读(12850) 评论(0) 推荐(1) 编辑
摘要:在进到容器内部执行命令的时候,如果命令比较长,会出现折行情况,如 可以调节里面的两个环境变量:$COLUMNS $LINES,默认是80 24。 一、问题描述及解决 1、问题情况一:我需求里遇到的情况 docker 容器在启动成功后是可以通过docker exec,kubectl exec命令登陆进 阅读全文
posted @ 2021-08-21 21:01 古兰精 阅读(5191) 评论(1) 推荐(1) 编辑
摘要:一、传递参数 1、在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。 n 代表一个数字,0 为执行的文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推 #以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径): #!/bi 阅读全文
posted @ 2021-08-19 22:49 古兰精 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:一、什么是Shell脚本 可以看这篇博客,基础知识写的比较全:Linux Shell脚本教程:30分钟玩转Shell脚本编程 —— http://c.biancheng.net/cpp/shell/ 1、简介 Shell脚本(英语:Shell script)是一种电脑程序与文本文件,内容由一连串的s 阅读全文
posted @ 2021-08-17 22:48 古兰精 阅读(720) 评论(0) 推荐(0) 编辑
摘要:Linux su(英文全拼:switch user)命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。使用权限:所有使用者。 一、语法 su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG] 阅读全文
posted @ 2021-08-16 22:40 古兰精 阅读(18056) 评论(0) 推荐(0) 编辑
摘要:一、问题背景 1、问题描述 docker 中执行:apt-get update 报错:E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied) 2、问题原因:权限不足,请使用 阅读全文
posted @ 2021-08-16 21:52 古兰精 阅读(6997) 评论(0) 推荐(1) 编辑
摘要:事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。 一、什么是事务 事务是由数据库中一系列的访问和更新组成的逻辑执行单元。事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,这段逻辑要么全部执行成功,要么全部执行失败。 举个最常见的例子,你早上出去买早餐 阅读全文
posted @ 2021-08-15 21:51 古兰精 阅读(560) 评论(0) 推荐(0) 编辑
摘要:前后端分离架构带来的好处一搜一大堆,这里主要讨论一下后端接口的安全问题。因为在分离的情况下,后端 api 是暴露在外网中的,常规的web项目无论如何前端都是要通过公网访问到后台api的,带来的隐患也有很多。比如: (1)接口公开,谁都可以访问; (2)数据请求的参数在传输过程被篡改; (3)接口被重 阅读全文
posted @ 2021-08-15 21:03 古兰精 阅读(6643) 评论(0) 推荐(0) 编辑
摘要:缓存由于其高并发和高性能的特性,已经在项目中被广泛使用,在缓存的使用中,通常会面临一个更新的问题,当数据源产生变化,如何去更新到数据库与缓存之中,并且尽量保证安全与性能。 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 更新缓 阅读全文
posted @ 2021-08-14 21:42 古兰精 阅读(854) 评论(0) 推荐(0) 编辑
摘要:在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这 阅读全文
posted @ 2021-08-14 21:00 古兰精 阅读(934) 评论(0) 推荐(0) 编辑
摘要:在开发的过程中,项目中使用定时器已经不是一个新鲜的事情了,但是如果你的项目后期部署到集群环境下,如果不做处理,就会出现意想不到的问题,原因:由于我们项目同时部署在多台集群机器上,因此到达指定的定时时间时,多台机器上的定时器可能会同时启动,造成重复数据或者程序异常等问题。 服务器采用了负载均衡,有两台 阅读全文
posted @ 2021-08-14 20:17 古兰精 阅读(7165) 评论(0) 推荐(3) 编辑
摘要:一、Linux连续执行多条命令的写法 多个命令可以放在一行上,其执行情况得依赖于用在命令之间的分隔符。分隔符有分号 ";"、"&&" 和 "||"。 1、分号分隔 命令按顺序从左到右依次执行,如果某个命令执行出错了,直接跳到下一个命令继续执行!(这个比较危险,慎用) 2、"&&": 这个和编程语言中 阅读全文
posted @ 2021-08-14 19:29 古兰精 阅读(363) 评论(0) 推荐(1) 编辑
摘要:Dockerfile中RUN,CMD和ENTRYPOINT都能够用于执行命令,下面是三者的主要用途: RUN命令:执行命令并创建新的镜像层,通常用于安装软件包 CMD命令:设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换 ENTRYPOINT 阅读全文
posted @ 2021-08-13 21:58 古兰精 阅读(751) 评论(0) 推荐(0) 编辑
摘要:sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义。我们经常在 Dockerfile 文件中看 阅读全文
posted @ 2021-08-12 22:45 古兰精 阅读(10031) 评论(0) 推荐(2) 编辑
摘要:不论是开发者是运维人员,都经常有需要进入容器的诉求,目前看,主要的方法不外乎以下几种: (1)使用ssh登陆进容器,需要在容器中安装启动sshd,存在开销和攻击面增大的问题,同时也违反了Docker所倡导的一个容器一个进程的原则。容器本身是一个无状态,用后即焚的东西。为了尽量的轻量快捷建议一个容器尽 阅读全文
posted @ 2021-08-12 18:55 古兰精 阅读(2331) 评论(0) 推荐(0) 编辑
摘要:在docker run创建并运行容器的时候,可以通过-p指定端口映射规则,但是如果后期想要为正在运行的容器添加额外的端口映射该怎么做呢? 方法一:删除原来容器,重新run一个容器。 这种方法只适合没有状态的容器或者没有持久化的容器,毕竟重建后的容器是一个全新的,之前配置的东西全还原了。 也可以将之前 阅读全文
posted @ 2021-08-12 17:45 古兰精 阅读(785) 评论(0) 推荐(0) 编辑
摘要:一、docker 容器网桥实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都 阅读全文
posted @ 2021-08-12 17:24 古兰精 阅读(8594) 评论(0) 推荐(4) 编辑
摘要:一、apt、yum、apk的介绍 1、apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。 apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 apt 命令执行需要超级管理 阅读全文
posted @ 2021-08-12 16:34 古兰精 阅读(4164) 评论(0) 推荐(0) 编辑
摘要:一、如何在docker容器中安装yum等软件 通过 apt 在 docker 容器中安装各种软件。有时候我们拉取的镜像并没有内置yum等软件,这个时候我们可以使用apt install yum 来安装yum //先更新一波 apt update //vim apt install vim //wge 阅读全文
posted @ 2021-08-12 14:56 古兰精 阅读(10377) 评论(1) 推荐(0) 编辑
摘要:一、Date.compareTo比较时间 DateFormat dateFormat = DateFormat.getDateInstance(); Date oldTime = dateFormat.parse("2021-04-07 19:50:11"); Date newTime = new 阅读全文
posted @ 2021-08-09 23:06 古兰精 阅读(5025) 评论(0) 推荐(0) 编辑
摘要:一、生成随机密码 public class CommonUtils { //随机密码生成 public static String makeRandomPassword(int len){ char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM 阅读全文
posted @ 2021-08-09 22:10 古兰精 阅读(804) 评论(0) 推荐(0) 编辑
摘要:在 es6 之前 JS 一直没有自己的模块语法,为了解决这种尴尬就有了require.js等AMD或CMD方式的出现。在 es6 发布之后 JS 又引入了 import 的概念使得不清楚两者之间的区别的同学在实际使用过程中造成了自己的误解,在查阅了相关资料之后在此记录下自己的小小见解。 一、requ 阅读全文
posted @ 2021-08-06 23:19 古兰精 阅读(3225) 评论(0) 推荐(0) 编辑
摘要:做一个需求在解析 token 时用到 Java 里正则匹配,所以决定把 Java 里的常用正则的工具类学习一下。 在解析 token 的时候还碰到了之前学习过的贪婪模式与非贪婪模式的区别。 Matcher m = Pattern.compile("&data=(.*)").matcher(query 阅读全文
posted @ 2021-08-06 22:24 古兰精 阅读(738) 评论(0) 推荐(0) 编辑
摘要:每当在数据库中创建一个对象,所有者可以分配它访问权限。所有者通常是执行创建语句的用户。对于大多数类型的对象,初始状态是:只有所有者(或超级用户)可以修改或删除对象。为了让其他角色或用户使用它,特权或权限必须是理所当然。 为了给用户分配权限,使用 GRANT 命令。 一、授权语法 1、GRANT命令的 阅读全文
posted @ 2021-08-03 22:03 古兰精 阅读(2291) 评论(0) 推荐(0) 编辑
摘要:一、Caused by: java.net.SocketTimeoutException: connect timed out的原因及解决 部署时碰到一个错误,如下: java.net.SocketTimeoutException: connect timed out at redis.client 阅读全文
posted @ 2021-08-03 18:40 古兰精 阅读(3419) 评论(0) 推荐(0) 编辑
摘要:一、docker 安装 PG 的基本使用 1、查看本地pg镜像 —— 需要先 pull 下来一个合适版本的 postgressql 镜像,然后再查看 docker images | grep postgres 2、初始化镜像 —— 需要先创建数据卷 docker run --name postgre 阅读全文
posted @ 2021-08-02 23:38 古兰精 阅读(3378) 评论(0) 推荐(0) 编辑
摘要:一、docker run 的 --rm 选项的作用 Docker容器进程有两种运行模式。 1、前台模式(默认) —— foreground 容器 docker run ... // 或 docker run -d=false ... 注意,只有在前台模式下,才有必要设置-it命令选项,为容器设置伪T 阅读全文
posted @ 2021-08-02 22:39 古兰精 阅读(10846) 评论(0) 推荐(1) 编辑
摘要:一、PostgreSQL备份与还原指定数据库数据和导出指定的数据表 // 备份(pg_dump) pg_dump -h [127.0.0.1] -U [postgres] -d [dbname] -f [dump.sql] // 还原(psql) psql -h [127.0.0.1] -U [po 阅读全文
posted @ 2021-08-01 23:24 古兰精 阅读(1829) 评论(0) 推荐(0) 编辑
摘要:一、docker 内文件系统是如何工作的 —— 镜像启动容器的本质 首先,需要明确 Docker 内的文件系统是如何工作的,Docker镜像被存储在一系列的只读层。 Docker 镜像是由多个文件系统(只读层)叠加而成,当启动一个容器的时候,Docker 会加载只读镜像层并在其上(镜像栈顶部)添加一 阅读全文
posted @ 2021-08-01 22:55 古兰精 阅读(816) 评论(0) 推荐(0) 编辑
摘要:一、Docker 数据管理 在生产环境中使用Docker的过程,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作。 所谓Docker的数据持久化即:数据不随着Container的结束而结束。在Docker中,要想实现数据的持久化,需要将数据从宿主机挂载到容器 阅读全文
posted @ 2021-08-01 22:18 古兰精 阅读(605) 评论(0) 推荐(1) 编辑
摘要:一、docker 安装 redis 步骤 1、找一个合适的 redis 版本 —— 目前推荐的稳定版是 5.0 2、使用 docker 安装 redis docker pull redis:5.0 docker images 3、准备redis的配置文件 因为需要redis的配置文件,这里最好还是去 阅读全文
posted @ 2021-08-01 19:04 古兰精 阅读(10185) 评论(0) 推荐(3) 编辑
摘要:一、Linux 创建文件的5种方式 1、touch 命令 // 创建一个文件 touch test.ini // 同时创建两个文件 touch test1.txt test2.txt // 批量创建文件(如创建2000个文件) touch test{0001..2000}.txt // 更改文件 t 阅读全文
posted @ 2021-08-01 18:16 古兰精 阅读(7563) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示