Lua 脚本
Lua 脚本
学习视频:
Lua教程-进阶部分 - 4K超清【不定期更新】_哔哩哔哩_bilibili
Lua 教程 | 菜鸟教程 (runoob.com)
文档:LuatOS 文档
Lua 5.3 Reference Manual - contents
轻量级、嵌入式脚本语言
最常见的中间件 Redis MySQL Proxy 和 MySQL WorkBench都是可以通过lua脚本进行扩展功能
1. 环境搭建1.1 Win 环境下载
Lua在Windows下的安装、配置、运行_lua-language-server win7-CSDN博客
官网:https://www.lua.org/
在线编译界面:https://onecompiler.com/lua/42jmby4vv
下载界面:[Download lua-5.4.2_Win32_bin.zip (LuaBinaries) (sourceforge.net)](https://sourceforge.net/projects/luabinaries/files/5.4.2/Tools Executables ...
JUC 并发编程
JUC
学习视频:【狂神说Java】JUC并发编程最新版通俗易懂_哔哩哔哩_bilibili
1. 基本介绍
JUC:java.util.concurrent 包,简称 JUC,是 Java 5 引入的并发工具包,提供了大量的并发编程工具和高级特性,用于简化多线程编程
进程和线程:
进程:计算机中正在执行的独立程序,每个进程拥有独立的内存空间和系统资源,进程是CPU资源分配的最小单位
线程:进程内部的执行单元,一个进程可以包含多个线程,线程共享进程的内存空间和资源,线程是CPU调度和执行的最小单位
Java 默认有2个线程 ==> main线程、GC线程
Java 真的可以开启线程?
从源码看,Java 是使用本地 native 方法调用底层的 C/C++ 代码来开启线程
start0 是 Thread 类的私有本地方法,由 JVM 通过 C/C++ 代码实现
123456789101112131415161718192021// C++ 底层, Java是没有权限操作底层硬件的private native void sta ...
Java 集合
Java 集合
学习视频:【韩顺平讲Java】Java集合专题 -ArrayList HashMap HashSet List Map TreeMap TreeSet等_哔哩哔哩_bilibili
1. 集合介绍
数组的不足:不够灵活
长度开始时必须指定,而且一旦指定,不能更改
保存的必须为同一类型的元素
使用数组进行增加元素的示意代码比较麻烦
12345678// 数组扩容示例代码Person[] pers = new Person[1];pers[0] = new Person();// 扩容Person[] pers2 = new Person[pers.length + 1] // 创建新数组for() {} // 拷贝 pers 数组的元素到 pers2pers2[pers2.length - 1] = new Person(); // 添加新的对象
集合的好处:
可以动态保存任意多个对象,使用比较方便
提供了一系列方便的操作对象的方法(crud):add、remove、set、get 等
使用集合添加,删除新元素代码更加简洁
2. ...
RabbitMQ 入门
RabbitMQ
学习笔记:02-什么是MQ_哔哩哔哩_bilibili
1. 消息队列1.1 MQ 相关概念1.1.1 什么是 MQ
MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已
还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游 “逻辑解耦+物理解耦” 的消息通信服务
a 给 b 发消息,a 就是上游,b 就是下游
使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务
1.1.2 为什么要用 MQ
MQ 有三大功能:
流量削峰
举例:
如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果
但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单
使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好
图示说明:
应用解耦
...
awk 编程
使用 awk 编写 shell 脚本
awk 是一个强大的 Linux 命令,有强大的文本格式化的能力
三剑客:
grep:擅长单纯的查找或匹配文本内容
awk:更适合编辑、处理匹配到的文本内容
sed:更适合格式化文本内容,对文本进行复杂处理
1. awk 基础
awk 语法:
12awk [option] 'pattern[action]' file ...awk 参数 '条件动作' 文件
Action 指的是动作,awk 擅长文本格式化,且输出格式化后的结果,因此最常用的动作就是 print
条件动作举例:
1234{print $0} # 把每行都打印出来, 等同于 {print}{print $1} # 把每行的第一列打印出来(默认以空格为列的分隔符){print $NF} # 每行的最后一列[倒数第二列可以写成$(NF-1)]{print $1,$4,$5} # 打印多列(中间加上逗号是为了 ...
Redis 基础
Redis 基础篇
NoSql 数据库
1. 入门1.1 NoSQL
SQL 和 NoSQL
关系型数据库 和 非关系型数据库
区别:
(1)结构化和非结构化
SQL关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束
NoSql对数据库格式没有严格约束,往往形式松散,自由。可以是key-value,可以是文档,或者图格式
(2)关联和非关联
关系型:
非关系型
12345678910111213141516171819{ id: 1, name: "张三", orders: [ { id: 1, item: { id: 10, title: "荣耀6", price: 4999 } }, { id: 2, item: { id: 20, title: "小米11", price: 399 ...
爬虫
爬虫1. 相关概念介绍
解释1:通过一个程序,根据 Url 进行爬取网页,获取有用的信息
解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息
1.1 爬虫核心?
爬取网页
解析数据(重点)
难点:爬虫与反爬虫之间的博弈
1.2 爬虫的用途
数据分析/人工数据集
社交软件冷启动
舆情监控
竞争对手监控
1.3 爬虫分类
通用爬虫(不学)
功能:访问网页->抓取数据->数据存储->数据除了->提供检索服务
实例:百度、google等搜索引擎
缺点:
抓取的数据大多是无用的
不能根据用户的需求来精准获取数据
聚焦爬虫
功能:根据需求,实现爬虫程序,抓取需要的数据
设计思路:
确定要爬取的url
模拟浏览器通过 http 协议访问 url,获取服务器返回的 html 代码
解析 html 字符串
增量式爬虫
检测网站中的数据更新情况,只会抓取网站中最新更新出来的数据
1.4 反爬手段
User-Agent:
简称 UA,是一个特殊的字符串头,能识别客户使用的操作系统及版本、CPU 类型、浏览器语言、插件等等
代理 IP ...
Jmeter 压测
JMeter参考:JMeter 快速上手 | 白月黑羽 (byhy.net)
JMeter 这个软件工具 主要用于服务端系统的性能测试
比如 测试 web网站,API服务器 的性能,如下图所示
1. 安装 JMeter
前提要有 JDK8/JDK11
官网:Apache JMeter - Download Apache JMeter
下载后解压放在 D盘即可
2. 打开
进入 bin 目录下,双击 jmeter.bat 文件,就会出现如下界面:
修改系统背景和字体大小还有语言,可以点击 option
3. 界面简介性能测试是:验证在各种性能负载场景下 ,系统的表现是否符合预期
模拟大量用户访问被测系统?
一个性能测试场景, JMeter称之为 test plan ,中文翻译为 测试计划 。实际上,一个 JMeter的测试计划对应性能测试的一个场景,其实也就是一个测试用例 。应该先准备好性能测试用例, 然后再用JMeter对应配置好一个测试计划来对应它。每个测试计划都可以保存在一个单独的文件中。
JMeter的测试计划,具体里面的内容(怎么测), ...
Fabric 入门
Fabric
官方文档:关键概念 — hyperledger-fabricdocs master 文档
1. 关键概念1.1 区块链网络
这个 Fabric 区块链网络包括了两个应用程序通道以及一个排序通道。
组织 R1 和 R4 负责排序通道,R1 和 R2 负责蓝色的应用程序通道,R2 和 R3 负责红色的应用程序通道。
客户端应用程序 A1 是组织 R1 的元素,CA1 是它的证书颁发机构。
组织 R2 的节点 P2 可以使用蓝色的通信设施,也可以使用红色的应用程序通道。
每个应用程序通道具有它自己的通道配置,这里是 CC1 和 CC2。
系统通道的通道配置是网络配置 NC4 的一部分。
一个有四个组织的网络,带有两个通道和三个 Peer 节点,两个智能合约和一个排序服务。
并由四个证书颁发机构来支撑。
它为三个客户端应用程序提供了账本及智能合约服务,这些应用程序可以通过两个通道与账本和智能合约进行交互。
1.2 身份
确定了对资源的确切权限以及对参与者在区块链网络中拥有的信息的访问权限
要使身份可以被验证,它必须来自可信任的权威机构
成员服务提供者(Membershi ...
MyBatis
一、MyBatis1. MyBatis 简介1.1 MyBatis 历史
MyBatis 本是 Apache 的一个开源项目 iBatis,2010年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis 。代码于2013年11月迁移 Github。
iBatis 一词来源于 “internet” 和 “abatis” 的组合,是一个基于Java的持久层框架。iBatis 提供的持久层框架包括 SQL Maps(sql 映射) 和 Data Access Objects(DAO)。
1.2 MyBatis 特性
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录
MyBatis 是一个 半自动的ORM(Object Rela ...