自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

柒君的博客

编程就像搞园艺!

  • 博客(42)
  • 收藏
  • 关注

原创 centos7.5安装gitlab-runner,配置CI/CD流水线

一般不建议gitlab-server和gitlab-runner装在同一台服务器。第一步:安装gitlab-runner,最好和gitlab实例版本一致。第四步:项目根目录加入gitlab-ci.yml配置文件。一般分为共享型runner和项目型runner。项目型的,只有特定项目可以使用它来执行流水线。共享型的,任何项目都可使用它来执行流水线。第二步:创建runner实例。第三步:注册runner。

2024-03-31 21:58:54 404

原创 同一个主机配置多个SSH key

使用git时,我们可能一个git客户端使用多个git服务器,比如github,自建gitlab,gitee,为了防止提交混乱,所以需要一一对应生成公私钥。有了配置文件,ssh在建立连接时,就会知道该用对应的公私钥进行连接。新建或配置ssh的客户端config文件,就在当前目录下。使用ssh-add录入这三者。

2024-03-30 19:55:39 427

原创 centos7.5 安装gitlab-ce (Omnibus)

访问第二步中定义的gitlab实例地址;

2024-03-30 13:29:49 322

原创 prettier和eslint冲突怎么解决?

配置.eslintrc,把eslint-plugin-prettier插件配置在extends数组中的最后一位,以便可以覆盖其他风格配置规则。“eslint-plugin-prettier”: eslint插件,使eslint可以使用prettier的风格规则进行检查。前提:项目中已安装:eslint,prettier,已配置.eslintrc和.prettierrc。prettier:用来校验和处理js文件,css文件,html文件,格式问题。eslint:用来校验和处理js文件,逻辑和格式问题。

2024-02-04 11:14:55 944

原创 nodejs中cjs和esm模块相互操作(记录)

注:现在有了类似rollup类的打包工具,可以在开发源码时完全使用纯esm规范写,而打包时选择生成cjs规范的包。

2023-03-23 23:29:00 713 1

原创 Promise梳理

promise梳理

2022-09-16 18:04:09 344

原创 git revert xxxx -m 1 git代码回滚

git revert 类似于裁剪,可以想象成截取DNA片段,它不会影响剪裁所在位置commit后的操作,而reset会直接抛弃此commit及之后的全部提交,对于多人合作的分支不太安全。第一步:查看你要回滚的某一次commit的详情,如果是merge得来的commit,会出现该commit的来源,即合并开始的位置和结束的位置git show xxxx --stat第二步:普通分支直接回滚;而含有开始结束位置的分支需要指定 -m 参数。1,代表主分支开始位置的commit;2,代表被合入分支的结束位.

2022-05-01 20:16:41 1920

原创 centos7.5中使用pm2启动verdaccio报错:Cannot find module ‘/root/verdaccio‘

前提:1.已经全局安装过verdaccio2.verdaccio已经通过软连接或其他等方式,变为可执行的命令(例如:ln -s /usr/local/node-v14.17.2-linux-x64/bin/verdaccio verdaccio)pm2 start verdaccio这时候使用pm2 logs命令:发现提示找不到verdaccio模块https://stackoverflow.com/questions/44273846/verdaccio-fail-to-start-h.

2022-03-28 01:56:31 2016

原创 vue2.x项目安装与配置

shell:npm install -D webpack webpack-cli webpack-dev-server @babel/core @babel/preset-env @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties @babel/plugin-syntax-dynamic-import babel-loader style-loader css-loader less less-loader u

2022-03-10 23:55:20 1326

原创 ERROR 1046 (3D000) at line 22: No database selected

把导出的sql文件改一下保存再上传:加上一句:use 你的库名称;如果上传出现21行错误:ERROR 1049 (42000) at line 21: Unknown database ‘test’这需要在需要导入的MySQL中新建一个,和待导入sql中一样名称的库,本例叫test,然后再导入;新建库:再重新导入即可。...

2022-02-11 23:44:56 1122

原创 express中res.sendFile、res.render、express.static()三者的使用

一、res.sendFile必须使用绝对路径,它的作用是响应出去一个文件,可以直接返回html文件做渲染。app.get("/kkk", (req, res) => { res.sendFile(path.resolve(__dirname,"./views/insertArticle.html"));});浏览器访问http://localhost:8000/kkk,其实就是在访问insertArticle.html文件。二、res.render使用这个方法就代表需要用到“模板引擎

2022-02-10 19:27:55 4751

原创 nodejs转换文件编码,使用iconv-lite插件

const fs = require("fs");const path = require("path");const os = require("os");const platform = os.platform();// npm转码插件const iconv = require("iconv-lite");// 注意:fs模块一般情况下默认以utf8格式输入输出// 判断文件有无内容function isEmpty(filepath) { try { let content

2022-01-27 16:19:03 3911

原创 nodejs的socket网络编程

简单介绍使用nodejs的net模块进行socket网络编程,不涉及深入的自定义应用层协议知识,仅仅进行了文本的传输,没有设计数据的结构,数据的结束位置等。socket默认使用传输层的TCP可靠送达协议,默认是长连接。server端:const net = require("net");const HOST = "127.0.0.1";const PORT = 6868;const server = net.createServer();server.listen(PORT, HOS.

2022-01-26 10:33:35 5190 1

原创 应用层协议和传输层协议

待修订在意念传输发明出来之前,计算机之间传输信息,总是需要介质的!要么有线传输,要么无线电波传输。你能接收到一条其他计算机的信息,那么物理层面上你一定能连接到它,你们是时空一致的。网线上传输的数据其实就是电,可能是模拟信号或数字信号,这取决于传输介质。osi七层模型和tcp/ip五层模型功能划分基本一样,区别在于tcp/ip模型高度概括了应用层。虽然看起来分层,但实际上这些层只是人为抽象,物理层面上并不存在。传输时就是电信号,类比发报机(嗒嗒嗒)。我们现在通常说的传输层协议,一般就是指tcp协

2022-01-17 10:16:05 3513

原创 nth-of-type和nth-child的区别

这代表一堆p元素中的第四个p元素,颜色应为红色p:nth-of-type(4){ color:"red";}这代表一堆子元素中的第四个元素,且它如果是p元素,颜色应为红色p:nth-child(4){ color:"red";}你细品!!!

2022-01-10 21:46:58 318

原创 mobx的使用注意事项

mobx是采用的发布订阅模式的方式管理程序的状态。即:任何订阅了该状态值的程序,在该状态改变时都将接收到通知,然后做出响应。参考mobx中文网 https://cn.mobx.js.org黄金法则: 如果你想创建一个基于当前状态的值时,请使用 computed。当状态改变时,所有衍生都会进行原子级的自动更新。因此永远不可能观察到中间值。所有衍生默认都是同步更新。这意味着例如:动作可以在改变状态之后直接安全地检查计算值。observable方法或装饰器,默认是递归调用的,即被观察对象的所有.

2022-01-01 21:38:40 774

原创 使用putty生成公私钥,并链接远程服务器

第一步:使用puttykeygen导入或生成公私钥注意:保存私钥,公钥我们直接ctrl+c复制到,远程服务器的~/.ssh/authorized_keys文件中,并把此文件的权限设置为700第二步:暂时用账号密码登陆远端服务器,查看其sshd_config配置是否正常cd /etc/ssh && vim sshd_config保证这两行没有被注释,是正常的PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_ke

2021-11-28 23:52:08 1461

原创 centos7.5使用yum安装chrome浏览器

centos7.5使用yum安装chrome浏览器

2021-11-27 18:34:13 5392 2

原创 selenium使用小结和注意点

我们的页面中有些dom是在页面加载完成后(document.readyState后)就出现的,而有些dom元素,是通过js动态生成加入的。这时需要我们在触发完按钮之后“等一会”,等弹框中的内容加载完毕,然后我们在继续流程,防止某些元素没找到,或者不可交互。比如我们get的网址是一个需要登陆态的网址,那么我们需要先get这个网址,然后添加这个网址登陆所需的cookies,然后再get一遍这个网址。在第一个参数没有返回真值期间,wait方法会循环执行,阻塞住主线程,等待条件判定结果,直至超时报错。

2021-11-26 11:13:14 619

原创 项目中npm包的更新策略

总结:尽量使用package-lock.json中记录的内容。当安装包不存在于lock中,或与lock的记录不兼容时,更新lock。反之以lock为准。参考博客:https://blog.csdn.net/weixin_43820866/article/details/105232066

2021-11-13 12:31:55 3295

原创 react16和react17区别

17改进:1.不再在document上绑定事件,改为绑定于rootNode节点,这样可以使多个版本的react同时存在于页面中,不会因为事件绑定系统起冲突2.去除了事件池,不在用e.persist(),现在可以直接在异步事件中(回掉或timeout等)拿到事件对象3.副作用清理函数(如果存在)改为异步执行,即在浏览器渲染完毕后执行???副作用清理函数会异步执行 —— 如果要卸载组件,则清理会在视图更新后运行4.forwardRef和memo组件的行为会与常规函数组件和class组件保持一致

2021-11-12 10:34:37 3252

原创 react-router-dom6和5区别

待修订6的改进:1.useHistory钩子废弃,改为useNagetive钩子2.Switch组件更名为Routes组件,且子元素只能是Route组件或React.Fragment组件3.Route之间可以进行嵌套4.Route的strict属性废弃,不在需要考虑路径结尾是否有‘/’5.Route添加了index属性,拥有index属性的Route不具有path属性(写了也无效),它在父级未匹配任何子路由时展示(类似于fallback)6.新增Outlet组件,是子路由们渲染的容器7.Ro

2021-11-12 10:34:07 4745

原创 在虚拟机上测试rm -rf 命令,自爆了

切记不要在任何正常机器上使用rm -rf / 或 rm -rf / * 命令!!!系统:CentOS-7-x86_64-DVD-2003.iso开始测试:现在很多操作系统,已经默认拒绝在/目录下执行 rm -rf /操作了,减小了一些风险。但是!!!如果你执行 rm -rf /* (来个通配符,即删除 / 目录下的所有文件),它会执行!...

2021-11-03 22:31:03 1027

原创 硬件描述语言HDL和汇编语言、c语言的区别

个人感觉:硬件描述语言(vhdl等):是为了制造cpu(类似的芯片),设计人员使用hdl设计和安排寄存器和时序电路如何组合,然后最终会生成门级网表,然后通过相关软件等生成最终物理电气电路(怎么布局,怎么切割,怎么布线)汇编或c语言等:是为了使用cpu(类似的芯片),比如使用某个寄存器、使用算数逻辑单元、释放某个变量等操作两者没有交集,不冲突,应用领域不一样,一个是造,一个是用...

2021-10-27 23:35:50 2154

原创 npm配置文件的优先级

前提:windows系统项目级别:此项目的根目录下的.npmrc文件用户级别:C:\Users\yourname\ .npmrc全局级别:C:\Users\yourname\AppData\Roaming\npm\etc\npmrc优先级由高到低,全局配置优先级最低(甚至可能没有)nrm插件可以方便的管理npm的registry全局安装npm install -g nrm主要命令:列出所有可用源(默认为官方源)nrm ls* npm -------- https://regi.

2021-10-24 21:18:53 2041

原创 centos7.5使用yum在线安装mysql8.0.x

CentOS的yum仓库中,默认是没有mysql的,所以我们去mysql的官网下载mysql的仓库,注意对应版本。地址:https://dev.mysql.com/downloads/repo/yum/感谢此篇博客,我就是看过此文章后,按需操作安装的。特此记录下来参考博文:https://www.cnblogs.com/skyblue123/p/13287028.html1.添加mysql的yum源yum localinstall mysql80-community-release-el7-.

2021-09-22 22:45:46 330

原创 记录linux常用命令

cat [filepath] 整体查看某文件less [filepath] 可以带翻页的查看某文件touch 创建普通文件mkdir 创建目录文件rm -rf 删除文件或目录ps -ef 查看当前所有在运行的进程kill [pid] 优雅的终止某进程kill -9 [pid]暴力的终止某进程systemctl status [name] 查看某服务的状态systemctl list-unit-files 查看所有安装的服务的自启动状态 enabled 代表开机启动的systemctl e

2021-09-19 21:37:35 105

原创 跨源资源共享(CORS)

只有 浏览器 才有跨域限制,因为浏览器有同源策略。而其他任何能发请求的客户端都没有跨域限制,比如CURL,postman等。跨域时,浏览器请求默认不会自动携带cookie什么时候算跨域?协议,主机,端口,这三者组成了域Origin(也可以叫做元组),只要三者中有一处不同就是不同源,违反浏览器同源策略,造成跨域例如:http://www.example.com:8080参考链接:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS.

2021-09-15 21:58:54 228

原创 buffer类型数据存入mysql

mysql中定义的blob类型的字段,nodejs使用buffer类型的数据,可以直接insert成功。比如express使用multer中间件,设置内存模式,即memoryStorage模式,这是上传的文件是以buffer类型存在于内存中,可以直接使用req.file.buffer插入数据库中。另外发现nodejs的fs模块读取文件是默认读取成buffer类型的。...

2021-09-08 19:31:33 774 2

原创 express记录

1.express中的中间件必须要写next(),不然请求会被挂起,无法往下传递2.错误处理中间件,可以有多个,但是秉持就近原则,即错误会被就近的错误处理中间件捕获,且有err参数的中间件就是错误处理中间件3.express中抛出错误需要使用next函数,因为throw在回掉函数中抛出会造成程序崩溃(事情就严重了,app crashed)4.express的多个中间件类似于栈结构,其实也能实现洋葱模型,因为next()后的代码也会按照入栈顺序依次执行5.错误处理中间件和普通中间件的区别就是,多了一个

2021-08-28 10:58:11 80

原创 git基本操作

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-08-28 10:42:20 185

原创 react项目安装与配置

CLI:npm install -D webpack webpack-cli webpack-dev-server @babel/core @babel/preset-env @babel/preset-react @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties @babel/plugin-syntax-dynamic-import babel-loader style-loader css-loader

2021-08-27 23:48:54 739

原创 react-native环境搭建注意事项

注意:此为个人经验,请依据自身项目情况,酌情参考请严格参照react-native中文网的搭建开发环境文档进行操作。安装Java的jdk并配置相关环境变量。安装Android-studio,安装时会自动安装安卓开发所需的sdk。以上依据文档要求,下载相应版本,并配置好后,我们来初始化react-native项目。3.1. 使用nrm切换为国内的淘宝镜像源,防止卡住。npx nrm use taobao3.2 不再使用react-native-cli工具,而是采用npx re

2020-08-30 16:33:49 210

原创 redux和sessionStorage,localStorage的区别

注:很多同学觉得用localstorage可以代替redux, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到。1.redux中的数据,在刷新(手动或者js触发)页面时,就会消失(或者说被重新初始化),无法持久化。2.sessionStorage中的数据,关闭浏览器后消失(会话结束),且按域存储。3.localStorage中的数据,永不消失(持久化在硬盘),且按域存储。

2020-08-16 16:24:59 2030

原创 React函数式组件和class组件

React函数式组件和class组件挂载组件:函数式组件:react会直接调用该函数,并传入props参数class组件:react会new此组件,并传入props参数更新组件:函数式组件:更新时,会重新执行此函数clss组件:更新时,该class组件的实例会重新调用自己的render方法,也就是说原来的实例还是原来的实例。通过测试发现:更新时,constructor函数根本没执行,也就是说根本没有new新的实例。只是会重新调用组件的render方法。多多使用函数式组件:函数式组件没有自己的

2020-08-16 16:11:35 1785

原创 react15和react16区别

代替react15的同步更新,react16的scheduler调度器会告诉reconciler,浏览器是否有空闲时间执行js脚本(通过浏览器原生提供的api)。我们知道js可以操作dom元素,所以浏览器的GUI线程和js线程是互斥的。对人眼来说,正常流畅的刷新率为60hz,即60帧,即浏览器约16.6ms刷新一次。这样在组件层级过深时,会造成js执行时间过长,浏览器无法布局和绘制,造成丢帧。JS脚本执行 ------》 浏览器样式布局 ------》 浏览器样式绘制。的需求,改而采用新的结构。

2020-08-16 15:54:59 2124

原创 JSON 是一种格式!

JSON 是一种格式!json是一种格式! json是一种格式! json是一种格式!在Java script中,json并不是任何一种数据类型。json只是一种书写格式。一般说的json对象,其实就是具有json规范格式的js对象,它的key都用双引号括起来。而一般的js对象,key并不需要双引号括起来。例如:{ “name” : “2323”, “sex” : “afasdf”, “age” : “6262” }    json格式的js对象{ n

2020-07-26 09:37:04 236

原创 ajax阻止表单提交时,form的提交按钮最好不要用button按钮

使用jQuery的ajax做表单提交时,form的提交按钮最好不要用button。可以用div,模仿一个提交按钮用button可能会产生浏览器默认行为的,会造成,跳过ajax校验,直接提交jquery的ajax中的dataType字段,是给ajax自己看的,不是给服务器看的。这是规定ajax应该以什么方式解析服务器返回的数据。如果你不写这个值,那么ajax就默认的根据http包的mime信息来智能判断数据类型,来操作服务器的responseText。前后端应该约定好,以什么格式进行交换数据。例

2020-07-26 09:10:45 341

原创 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢?

如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢?答:报错解决办法:A: 在父类中加一个无参构造方法B: 通过使用super关键字去显示的调用父类的带参构造方法C: 子类通过this去调用本类的其他构造方法子类中一定要有一个构造方法去访问了父类的构造方法,使得父类的数据可以初始化(否则继承有什么意义)。总之一定要有个构造方法,不管是从哪里来的子类实例化时总是(默认,不用写super())先调用父类的无参构造方法。如果父类没有无参的构造方法,那就一定要显式(写super(xxx))调

2020-07-19 11:14:27 919 2

原创 java的父类构造函数是不能继承的,且不存在父类对象

父类中的构造方法是不能继承的父类中的构造方法是不能继承的,但是在实例化子类的时候会默认调用父类的构造方法。调用构造方法不会生成对象,它只是起到初始化的作用,需要配合new一起使用,只有new才会开辟新的内存空间,生成新的对象。所以生成子类实例的时候,不存在父类对象这种说法。...

2020-07-19 10:49:59 193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除