BCI--脑电基础整理
脑电基础整理脑机接口(BCI),是一种通过检测中枢神经系统活动并将其转化为人工输出,来替代、修复、增强、补充或者改善中枢神经系统的正常输出,从而改变中枢神经系统与内外环境之间的交互作用的技术。脑机接口技术通过置于头皮或颅内的电极等传感器采集脑神经活动信号,经过信号处理、特征提取、模式识别等过程,可获知人的控制意图、认知或心理状态、神经系统疾病状态等信息,为运动、语言等功能残缺的患者提供新的控制、交流通道或康复手段,也可为健康人群提供更多信息输出通道。随着脑电信号采集技术与信号处理技术的发展成熟,脑机接口技术已逐渐走入临床应用,在诸如中风、注意力缺陷等脑损伤或其他神经系统疾病患者的临床康复中表现出色,为高位截瘫、肌萎缩性侧索硬化症等运动功能障碍患者提供新的运动功能替代方案,为情绪、疲劳、意识状态等的检测和识别提供客观指标。
一、采集脑电信号的四种技术1、脑电图(Electroencephalography,EEG)脑电图通过电极记录大脑的电活动,电极通常嵌入电极帽中。这种电极帽通常需要 5 分钟才能安装在用户身上并调节电极以获得良好的信号。脑电图系统相对便宜且便携,是 BCI 研究中最常 ...
SpringBoot 内置工具类
一、断言
断言是一个逻辑判断,用于检查不应该发生的情况
Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions 开启
SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查
123456789101112131415161718// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛出异常,不予『放行』。// 和 notNull() 方法断言规则相反void isNull(Object object, String message)// 要求参数必须为真(True),否则抛出异常,不予『放行』。void isTrue(boolean expression, String message)// 要求参数(List/Set)必须非空(Not Empty),否则抛出异常,不予放行void notEmpty(Collec ...
领域驱动设计学习
小傅哥博客读后感:https://bugstack.cn
一、初识领域驱动设计1、介绍
DDD(Domain-Driven Design 领域驱动设计)是由 Eric Evans 最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。整个过程大概是这样的,开发团队和领域专家一起通过 通用语言(Ubiquitous Language)去理解和消化领域知识,从领域知识中提取和划分为一个一个的子领域(核心子域,通用子域,支撑子域),并在子领域上建立模型,再重复以上步骤,这样周而复始,构建出一套符合当前领域的模型。
依靠领域驱动设计的设计思想,通过事件风暴建立领域模型,合理划分领域逻辑和物理边界,建立领域对象及服务矩阵和服务架构图,定义符合 DDD 分层架构思想的代码结构模型,保证业务模型与代码模型的一致性。通过上述设计思想、方法和过程,指导团队按照 DDD 设计思想完成微服务设计和开发。
拒绝泥球小单体、拒绝污染功能与服务、拒绝一加功能排期一个月
架构出高可用极易符合互联网高速迭代的应用服务
物料化、组装化、可编排的服务,提高人效
2、服务架构 ...
图数据库--Neo4j的介绍
一、图数据库1、什么是图数据库
随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。
社交领域:Facebook, Twitter,Linkedin 用它来管理社交关系,实现好友推荐
零售领域:eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验
金融领域:摩根大通,花旗和瑞银等银行在用图数据库做风控处理
汽车制造领域:沃尔沃,戴姆勒和丰田等顶级汽车制造商依靠图数据库推动创新制造解决方案
电信领域:Verizon, Orange 和 AT&T 等电信公司依靠图数据库来管理网络,控制访问并支持客户 360
酒店领域:万豪和雅高酒店等顶级酒店公司依使用图数据库来管理复杂且快速变化的库存图数据库并非指存储图片的数据库,而是以图数据结构存储和查询数据。
图数据库是基于图论实现的一种 NoSQL 数据库,其数据存储结构和数据查询方式都是以图论为基础的, >图数据库主要用于存储更多的连 ...
图与图学习
图与图学习一、图1.1、图的定义
图表示物 件与物件之间的关系的数学对象,是图论的基本研究对象。
节点(node)用红色标出,通过黑色的边(edge)连接。
在图上执行怎样的分析:
研究拓扑结构和连接性
群体检测
识别中心节点
预测缺失的节点
预测缺失的边
空手道俱乐部图
这个「空手道」图表示什么?Wayne W. Zachary 在 1970 到 1972 年这三年中研究的一个空手道俱乐部的社交网络。该网络包含了这个空手道俱乐部的 34 个成员,成员对之间的连接表示他们在俱乐部之外也有联系。在研究期间,管理员 JohnA 与教练 Mr.Hi(化名)之间出现了冲突,导致俱乐部一分为二。一半成员围绕 Mr.Hi 形成了一个新的俱乐部,另一半则找了一个新教练或放弃了空手道。基于收集到的数据,除了其中一个成员,Zachary 正确分配了所有成员在分裂之后所进入的分组。
1.2、图的基本表示方法
图 G=(V, E) 由下列要素构成:
一组节点(也称为 verticle)V=1,…,n
一组边 E⊆V×V
边 (i,j) ∈ E 连接了节点 i 和 j
i 和 j 被称为 ...
手写netty的springboot-starter组件
本文的工作分为两个部分,一个是研究 Netty 框架的使用,实现服务端和客户之间的通信,另一个是将服务端和客户端的 Netty 打包成 springboot-starter 组件(两个组件:rpc-server-start,rpc-client-start),方便直接引入 starter 去实现 Netty 的相关功能。
项目地址:https://gitee.com/mi_chong/NettyDemo
一、Netty1、NIO 是一种非阻塞 IO
单线程可以连接多个客户端。
选择器可以实现但线程管理多个 Channel,新建的通道都要向选择器注册。
一个 SelectionKey 键表示了一个特定的通道对象和一个特定的选择器对象之间的注册关系。
selector 进行 select()操作可能会产生阻塞,但是可以设置阻塞时间,并且可以用 wakeup()唤醒 selector,所以 NIO 是非阻塞 IO。
2、Netty 模型 selector 模式
NIO 采用多线程的方式可以同时使用多个 selector
通过绑定多个端口的方式,使得一个 selector 可以同时注册 ...
秒杀那些事
1、九个细节
2、页面静态化
活动页面绝大多数内容是固定的,比如:商品名称、商品描述、图片等。为了减少不必要的服务端请求,通常情况下,会对活动页面做静态化处理。用户浏览商品等常规操作,并不会请求到服务端。只有到了秒杀时间点,并且用户主动点了秒杀按钮才允许访问服务端。
针对不同地区访问使用 CDN,它的全称是 Content Delivery Network,即内容分发网络。
3、秒杀按钮==CDN 上的 js 文件是如何更新的?==
秒杀开始之前,js 标志为 false,还有另外一个随机参数。
当秒杀开始的时候系统会生成一个新的 js 文件,此时标志为 true,并且随机参数生成一个新值,然后同步给 CDN。由于有了这个随机参数,CDN 不会缓存数据,每次都能从 CDN 中获取最新的 js 代码。
4、读多写少
使用 Redis 抵抗大量的请求。
5、缓存问题==秒杀之前查询商品是否存在==
根据商品 id,先从缓存中查询商品,如果商品存在,则参与秒杀。如果不存在,则需要从数据库中查询商品,如果存在,则将商品信息放入缓存,然后参与秒杀。如果商品不存在,则直接提示 ...
算法那些事
1、哈希表
1.1 构造规则
必须是一致的
计算简单
散列地址均匀分布
1.2 散列函数构造方法1)直接定址法
数组其实就是一张哈希表f(key) = key
12// 通用公式f(key) = a * key + b a,b均为常数
2)数字分析法
该方法也是十分简单的方法,就是分析我们的关键字,取其中一段,或对其位移,叠加,用作地址。比如我们的学号,前 6 位都是一样的,但是后面 3 位都不相同,我们则可以用学号作为键,后面的 3 位做为我们的散列地址。如果我们这样还是容易产生冲突,则可以对抽取数字再进行处理。我们的目的只有一个,提供一个散列函数将关键字合理的分配到散列表的各位置。这里我们提到了一种新的方式,抽取,这也是在散列函数中经常用到的手段。
3)折叠法
主要思路是将关键字从左到右分割成位数相等的几部分,然后叠加求和,并按散列表表长,取后几位作为散列地址。
4)除法散列法在用来设计散列函数的除法散列法中,通过取 key 除以 p 的余数,将关键字映射到 p 个槽中的某一个上,对于散列表长度为 m 的散列函数公式为
12// 最经典的算法f(k) = k mod p ...
14种常见的算法模式
微信公众号https://mp.weixin.qq.com/s/FbMCAiRN_rO9a_GV4pCGoA
代码仓库https://github.com/TangBean/grokking-the-coding-interview/
1.滑动窗口
1.1 给定问题可能需要滑动窗口的方法
问题的输入是一种线性数据结构,比如链表、数组或字符串
你被要求查找最长/最短的子字符串、子数组或所需的值
1.2 可以使用滑动窗口模式处理的常见问题
大小为 K 的子数组的最大和(简单)
123456789101112131415161718192021222324252627282930313233343536373839/** * Given an array of positive numbers and a positive number ‘k’, * find the maximum sum of any contiguous subarray of size ‘k’. * <p> * Example 1: * <p> ...
LeetCode数据库题目集合
https://leetcode-cn.com/problemset/database/
题目都是leetcode 上了可以点击题目会有相应的链接
由于个人比较喜欢用开窗函数,所以都优先用了开窗 ,当然这些并不一定都是最优解,答案仅供参考
每道题后面都应相应的难度等级,如果没时间做的话 可以在leetcode 按出题频率刷题
我是安顺序刷的题,后续还会继续更新
祝大家面试取得好的成绩
175. 组合两个表难度简单
SQL架构
表1: Person
12345678+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键
表2: Address
123456789+-------------+---------+| 列名 | 类型 |+------ ...