机器学习基础知识
机器学习是人工智能的重要技术基础,涉及的内容十分广泛。由于我是以发强化学习方向论文为导向,所以机器学习部分知识点不做深入学习,了解为主,本文主要涵盖机器学习入门的基础知识。
机器学习的核心元素:数据、模型、算法
机器学习工作流程一般为数据预处理(Processing)、模型学习(Learning)、模型评估(Evaluation)、新样本预测(Prediction)几个步骤
数据预处理:输入(未处理的数据 + 标签)-> 处理过程 ->(特征处理+幅度缩放、特征选择、维度约减、采样)-> 输出(测试集 + 训练集)
模型学习:模型选择、交叉验证、结果评估、超参选择。
模型评估:了解模型对于数据集测试的得分。
新样本预测:预测测试集
基本名词示例/样本:一条数据集中的一条数据
属性/特征:判断样本好坏的根据,如「色泽」「根蒂」
属性空间/样本空间/输入空间X:由全部属性张成的空间
特征向量:空间中每个点对应的一个坐标向量
标记:关于示例结果的信息,如((色泽=青绿,根蒂=蜷缩,敲声=浊响),好瓜),其 ...
MySQL运维篇
MySQL日志错误日志错误日志记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,应当首先查看此日志
该日志默认开启,默认存放目录/var/log/,默认的日志文件名为mysqld.log,查看日志位置:
show variables like '%log_error%';
二进制日志二进制日志(BINLOG)记录了所有的 DDL和 DML语句,不包括数据查询(SELECT、SHOW)语句
作用:
灾难时的数据恢复
MySQL的主从复制
在MySQL8中,默认二进制日志是开启的,查看日志参数:
show variables like '%log_bin%';
参数说明:
log_bin_basename:当前数据库服务器的binlog日志的基础名称(前缀),具体的binlog文件名需要在该basename的基础上加上编号(编号从000001开始)
log_bin_index:binlog的索引文件,记录了当前服务器关联的binlog文件有哪些
格式
日志格式 ...
ElasticSearch基础入门(二)
DSL语句DSL(Domain Specific Language),中文翻译为特定领域语言,在这里代表ES中的查询语言。
Elasticsearch的查询可以分为两大类:
叶子查询(Leaf query clauses):一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。
复合查询(Compound query clauses):以逻辑方式组合多个叶子查询或者更改叶子查询的行为方式。
快速入门语法结构:
GET /索引库名/_search{ "query": { "查询类型": { // .. 查询条件 } }}
GET /索引库名/_search:其中的_search是固定路径,不能修改
以最简单的无条件查询为例,无条件查询的类型是:match_all,因此其查询语句如下:
GET /items/_search{ "query": { "match_all": { ...
SpringCloud微服务入门(二)
在微服务远程调用的过程中,还存在几个问题需要解决。
首先是业务健壮性问题:
例如在之前的查询购物车列表业务中,购物车服务需要查询最新的商品信息,与购物车数据做对比,提醒用户。大家设想一下,如果商品服务查询时发生故障,查询购物车列表在调用商品服 务时,是不是也会异常?从而导致购物车查询失败。但从业务角度来说,为了提升用户体验,即便是商品查询失败,购物车列表也应该正确展示出来,哪怕是不包含最新的商品信息。
还有级联失败问题:
还是查询购物车的业务,假如商品服务业务并发较高,占用过多Tomcat连接。可能会导致商品服务的所有接口响应时间增加,延迟变高,甚至是长时间阻塞直至查询失败。
此时查询购物车业务需要查询并等待商品查询结果,从而导致查询购物车列表业务的响应时间也变长,甚至也阻塞直至无法访问。而此时如果查询购物车的请求较多,可能导致购物车服务的Tomcat连接占用较多,所有接口的响应时间都会增加,整个服务性能很差, 甚至不可用。
暂时无法在飞书文档外展示此内容
依次类推,整个微服务群中与购物车服务、商品服务等有调用关系的服务可能都会出现问题,最终导致整个集群不可用。
暂时无法在飞书文档外展 ...
ElasticSearch基础入门
在某些数据量非常大的项目中,一定会提供搜索功能。如果搜索功能仅仅使用数据库模糊查询实现,就会带来很多问题:
效率低。由于数据库模糊查询不走索引,在数据量较大的时候,查询性能很差。数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,
功能单一。数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。
而使用搜索引擎就没有上述问题。
elasticsearchElasticSearch是一款非常强大的开源搜索引擎,支持的功能非常多
认识和安装Elasticsearch是elastic技术栈中的一部分。完整的技术栈包括:
Elasticsearch:用于数据存储、计算和搜索
Logstash/Beats:用于数据收集
Kibana:用于数据可视化
整套技术栈被称为ELK,经常用来做日志收集、系统监控和状态分析等等,其核心就是用来存储、搜索、计算的Elasticsearch
需要安装的内容有:
Elasticsearch:提供核心的数据存储、搜索、分析功能。
Kibana:Elasticsearch对外提供的是Restful风格的API,任何操作都 ...
SpringCloud微服务入门(一)
微服务基础知识认识微服务单体架构单体架构(monolithic structure)即整个项目中所有功能模块都在一个工程中开发。项目部署时需要对所有模块一起编译、打包。项目的架构设计、开发模式都相对简单。
当项目规模较小时,这种模式上手快,部署、运维也都很方便,因此早期很多小型项目都采用这种模式。
但随着项目的业务规模越来越大,团队开发人员也不断增加,单体架构就呈现出越来越多的问题:
团队协作成本高:团队数十个人同时协作开发同一个项目,由于所有模块都在一个项目中,不同模块的代码之间物理边界越来越模糊。
系统发布效率低:任何模块变更都需要发布整个系统,而系统发布过程中需要多个模块之间制约较多,需要对比各种文件,任何一处出现问题都会导致发布失败,往往一次发布需要数十分钟甚至数小时。
系统可用性差:单体架构各个功能模块是作为一个服务部署,相互之间会互相影响,一些热点功能会耗尽系统资源,导致其它服务低可用。
要想解决这些问题,就需要使用微服务架构。
从单体架构到微服务微服务架构,首先是服务化,就是将单体架构中的功能模块从单体应用中拆分出来,独立部署为多个服务。同时要满足下面的一些特点:
...
RabbitMQ基础入门
在微服务中,必然会涉及到服务之间的调用,基于OpenFeign的调用需要调用者发起请求后等待服务提供者执行业务返回结果后,才能执行后续的操作,即调用者在调用过程中处于阻塞状态,这种调用方式为同步调用。但在很多场景下,我们可能需要采用异步调用的方式,将与业务关系不大的微服务与主干业务剥离开,以提升整体效率。目前常见的实现方案就是基于MQ实现。
MQMQ即消息队列(MessageQueue),目前比较常见的MQ有:
ActiveMQ
RabbitMQ
RocketMQ
Kafka
RabbitMQ
ActiveMQ
RocketMQ
Kafka
公司/社区
Rabbit
Apache
阿里
Apache
开发语言
Erlang
Java
Java
Scala&Java
协议支持
AMQP,XMPP,SMTP,STOMP
OpenWire,STOMP,REST,XMPP,AMQP
自定义协议
自定义协议
可用性
高
一般
高
高
单机吞吐量
一般
差
高
非常高
消息延迟
微秒级
毫秒级
毫秒级
毫秒以内
消息可靠性
高
一 ...
java基础入门(五)
Java新特性介绍(9~17)Java 9新特性Java9的主要特性有JShell、接口的private方法等。
JShellJava 9为提供一种交互式编程工具JShell,类似于Python的Shell,安装java并完成环境配置后,只需要输入jshell命令即可开启交互式编程
示例C:\Users\71947>jshell| 欢迎使用 JShell -- 版本 17.0.9| 要大致了解该版本, 请键入: /help introjshell> int a = 10a ==> 10jshell> int b = 15b ==> 15jshell> int c = a + bc ==> 25jshell> public int max(int a, int b){ ...> return a >= b ? a : b; ...> }| 已创建 方法 max(int,int)jshell> int d = max(a, b)d ==> 15jshell> /va ...
java基础入门(四)
Java8新特性Java8中经常使用的有Lambda表达式、Stream流、日期与时间API
Lambda表达式快速入门
无参数和返回值的Lambda
需要启动一个线程去完成某些任务时,通常会通过Runnable接口来定义任务内容,使用Thread类启动线程。
传统写法为:
public class Test{ public static void main(String[] args){ new Thread(new Runnable() ( @Override public void run(){ //... System.out.println("新线程任务执行"); } }).start(); }}
Lambda是一个匿名函数,可以理解为一段可以传递的代码。使用Java8的写法,上述写法可以重写为:
public class T ...
MongoDB基础入门
MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
应用场景MongoDB相较于传统的关系型数据库,可应对“三高“需求
High performance:对数据库高并发读写的需求
Huge Storage:对海量数据的高效率存储和访问的需求
High Scalability && High Availability:对数据库的高可扩展性和高可用性的需求
什么时候选择MongoDB
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上的读写QPS(更高也可以)
应用需要TB甚至PB级别数据存储
应用要求存储的数据不丢失
应用 ...