Attention注意力机制
理解
人类视野开阔,但焦点只有小范围或者一个点,这个就叫做注意力
人类在长期进化中形成的一种【生存机制】
在特定场景下,解决某个问题
特点
信息肯定很多
对问题有帮助的信息
对问题无帮助的信息——噪声
大脑算力有限、资源有限,不可能同时把精力分配给所有的信息
策略:要解决某个问题,就必须快速的从纷乱繁杂的信息中,检索出对解决问题最重要的信息
举例
英语考试中的信息匹配
上课看屏幕
淘宝买衣服
一段在菜市场的录音
在当前计算机算力资源的限制下,注意力机制绝对是提高效率的一种必要手段,将【注意力】集中到有用的信息上,不要在噪声中花费时间
核心目标从众多信息中选择出对当前任务目标更关键的信息,将注意力放在这上面
Encoder-Decoder框架架构
文本处理和语音识别的Encoder部分通常采用【RNN模型】
图像处理的Encoder一般采用【CNN模型】
例:机器翻译场景输入的是英文句子:Tom chase Jerry,翻译生成中文单词:“汤姆”,“追逐”,“杰瑞”
信息Tom chase Jerry
有效信息每次生成一个目标单词,每个目标单词的有效信息都不一样,比如 ...
IDEA详解
IntelliJ IDEA 介绍JetBrains 公司介绍IDEA(https://www.jetbrains.com/idea/)是 JetBrains 公司的产品,公司旗下还有其它产品,比如:
WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术;
PyCharm:用于开发 python
PhpStorm:用于开发 PHP
RubyMine:用于开发 Ruby/Rails
AppCode:用于开发 Objective - C/Swift
CLion:用于开发 C/C++
DataGrip:用于开发数据库和 SQL
Rider:用于开发.NET
GoLand:用于开发 Go
IntelliJ IDEA 介绍IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
主要功能介绍
语言支持上:
其他支持:
主要优势 ...
智慧校园管理系统
项目展示登录及角色控制
首页展示
业务模块展示
智慧校园系统简介项目简介智慧校园管理系统:主要是以年级、班级为单位,进行老师和学生信息记录和统计功能。项目采用前后端分离架构思想,前端采用HTML+CSS+VUE来实现页面效果展示,后端采用SpringBoot+MybatisPlus框架实现数据存储等服务。存储层使用高性能的MySQL,服务器使用SpringBoot内置的Tomcat9.x,项目构建工具使用Maven来管理jar包和项目构建。
项目模块
技术栈
VUE是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。 前后端分离是目前一种非常流行的开发模式,它使项目的分工更加明确:后端:负责处理、存储数据。前端:负责显示数据。前端和后端开发人员通过接口进行数据的交换。
Spring Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定 ...
MyBatis-Plus
MyBatis-Plus简介简介MyBatis-Plus (简称MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
MyBatis-Plus 提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速的实现对单表的CRUD、批量、逻辑删除、分页等操作。
特性
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model ...
MyBatis
MyBatis简介MyBatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于 2013年11月迁移到Github。
iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
MyBatis特性
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
MyBatis 是一个半自动的ORM(Object Relation Mapping)框架
MyBatis ...
Java8新特性
新特性简介
速度更快
代码更少(增加了新的语法Lambda表达式)
强大的 Stream API
便于并行
最大化减少空指针异常 Optional
Lambda表达式为什么使用Lambda表达式概述Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java的语言表达能力得到了提升。
123456789101112131415161718192021222324252627//原来的匿名内部类@Testpublic void test1(){ Comparator<String> com = new Comparator<String>(){ @Override public int compare(String o1, String o2) { return Integer.compare(o1.length(), o2.length()); ...
JDBC核心技术
Web技术概览
JDBC概述数据的持久化
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
Java中的数据存储技术
在Java中,数据库存取技术可分为如下几类:
JDBC直接访问数据库
JDO (Java Data Object )技术
第三方O/R工具,如Hibernate, Mybatis 等
JDBC是java访问数据库的基石,JDO、Hibernate、MyBatis等只是更好的封装了JDBC。
JDBC介绍
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据 ...
机器学习评价指标
评价指标的引出为什么要引出这么多评价指标,它是基于什么样的需求?
在生活中,最常用的就是准确率,因为它定义简单而且比较通用,但在机器学习中,它往往不是评估模型的最佳工具,特别是在数据分布不平衡的时候,请看一个例子:
比如我们训练了一个预测地震的模型,预测类别只有两个:0:不发生地震、1:发生地震,当前有100个测试集,如果模型无脑把每一个测试用例都预测为0,那么它就达到99%的准确率,但实际上它并不具有预测的能力,为什么会出现这种情况?因为这里数据分布不平衡,类别为1的数据太少,完全分错类别1,依然可以达到很高的准确率,因此在正负样本不平衡的情况下,准确率这个评价指标就有很大的缺陷。(这里的正负是相对于任务来说的,对于预测地震这个任务而言,目标是预测出地震,所以地震就是正例)
准确率是关注了所有分类正确的,当正负样例分布不平衡时,负例占据了绝大多数,而正例得不到体现,因此会造成分数高的情况,那么一个很自然解决的办法就是我们聚焦于关注正例的识别,于是就引出了精确率(精度)、召回率等指标。
一级指标准确率、精确率、召回率等这些评价指标都是基于底层的统计指标(一级指标)计算出来的。
对于一个 ...
L14-网络编程
网络编程
概述
Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
网络基础
计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。
网络编程的目的:直接或间接地通过网络协议与其它计算机进行通讯。
网络编程中有两个主要的问题:
如何准确地定位网络上一台或多台主机
找到主机后如何可靠高效地进行数据传输。
如何实现网络中的主机互相通信:
通信双方地址
一定的规则(有两套参考模型)
OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广
**TCP/IP参考模型(或TCP/IP协议)**:事实上的国际标准。
网络通信协议
通讯要素一:IP和端口号
IP 地址:Ine ...
L06-多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。
前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。
一个案例引发的多表连接案例说明
12#案例:查询员工的姓名及其部门名称 SELECT last_name, department_name FROM employees, departments;
分析错误情况:
12345SELECT COUNT(employee_id) FROM employees; #输出107行SELECT COUNT(department_id)FROM departments; #输出27行SELECT 107*27 FROM dual;
我们把上述多表查询中出现的问题称为:笛卡尔积的错误。
笛卡尔积(或交叉连接)的理解笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。 ...