人机交互设计
引言如何进行设计我们需要考虑以下几点:
用户们都是哪些人?
哪些活动将要被执行?
交互发生的地方在哪?
所以,我们需要匹配用户的活动,需求和诉求
理解用户的需求:
需要考虑到人们擅长什么和不擅长什么
考虑一下什么东西可能在人们现在的做事方式上有帮助
思考一下什么可以提供高质量的用户体验
倾听人们想要什么,并让他们参与进来
使用经过尝试和测试的以用户为中心的方法
可用性与用户体验可用性目标:
有效
高效
安全
具有良好的实用价值
易于学习
很容易记住如何使用
用户体验目标:
satisfying
enjoyable
engaging
exciting
entertaining
rewarding
fulfilling
memorable
challenging
relaxing
comforting
fun
Donald Norman的设计原则可发现性 Visibility可以确定哪些操作是可行的以及设备的当前状态。明确的关键要素(行为召唤按钮、图片和标题),清晰的视觉层次结构(按优先级排列的内容), 显而易见的导航系统在设计中都具有良好的可发现性和理 ...
计算机安全概述
对称加密也被称为常规加密或单密钥加密。其安全使用的两个要求:1. 需要一个强加密算法,2. 发送者和接收方必须以一种安全的方式获得了密钥的副本,并且必须保持密钥的安全。
对应的攻击方式:
密码分析攻击:
依赖:算法的性质,一些了解明文的一般特征,一些样本明文密文对。利用算法的特征试图推断特定的明文或正在使用的密钥。如果成功,所有用该密钥加密的消息都会被破坏。
暴力攻击:
在密文上尝试所有可能的密钥,直到得到一个有意义的明文。
常见加密算法:
Data Encryption Standard (DES)
Triple DES (3DES)
Advanced Encryption Standard (AES)
常见对称加密模式:
ECB
全称:Electronic codebook,即电子密码本。需要将待加密消息按照对应算法分组的要求分成若干块,并对每个块进行独立加密
优点:ECB模块可以并行处理数据。
缺点:同样原文生成同样的密文,并不能很好地保护数据。
同时加密,如果原文一样,加密出来的密文也是一样的,因为它们的加密密钥key都是一样的。
CBC
全称:Cipher B ...
Vue-router和vuex
路由的定义后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上的资源。
前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)实现不同页面之间的切换。hash的特点是HTTP请求中不会包含hash相关的内容,类似于超链接中的锚点。这种通过改变hash来切换页面的方式称为前端路由。
路由可以让应用程序根据用户输入的不同地址动态挂载不同的组件。
Vue Router是Vue.js的官方路由管理器。
安装:
1npm install vue-router@4
vue-router的基本使用router-link通过使用一个自定义组件router-link来创建链接,可以使得vue-router在不重新加载页面的情况下更改URL,并处理URL的生成及编码。<router-link>组件支持用户在具有路由功能的应用中单击导航。通过to属性指定目标地址,默认渲染成带有正确链接的<a>标签。
<router-link>比<a href=”…”>会更好一些,理由如下:
无论是HTML5 hist ...
振动信号处理
振动信号处理基础在设备运行时,我们如果想要监控它内部各个部件的运转情况,一种行而有效的方式就是在相应部件上加装传感器,测量它的振动数据,再进行进一步的分析。采集到的原始信号往往是不能直接拿来分析的,需要经过一定的处理以后才能更好地提取出振动信号内部蕴含的特征。
振动的描述常用的描述振动的物理量:
位移 $\Delta x=x_2-x_1$
速度 $\nu=\lim_{\Delta t \to 0} \frac{\Delta x}{\Delta t}=\frac{dx}{dt}$
加速度 $a=\lim_{\Delta x \to 0} \frac{\Delta \nu}{\Delta t}=\frac{d \nu}{dt}$
力 $F=ma$
应变 (线应变、角应变)
定义与分类
确定性信号:能用确定的时间函数表达
周期信号:瞬时幅值随时间重复变化
简谐信号
复杂周期信号:能由几个简谐振动信号合成
非周期信号
随机信号
平稳随机信号:统计特性不随时间变化
各态经历信号:任一次实现都经历了所有可能状态的振动信号
非各 ...
SQL中JOIN与聚合函数的冲突解决方案
问题描述最近,笔者遇到了这样一个问题,举例说明一下。由于某些原因,真实的数据表被替换为虚构的水果相关表,并且虚构数据之间的对应关系与实际并不相符!
小A是个农场主,他遍布全国的果园里种植了大量不同的水果。对于每种水果,都有特定的适用的杀虫剂。对于如下三个表:
水果表(fruits)
id
name
type
color
area
pesticide_id
…
1
红富士
苹果
红色
烟台
3
…
2
华蕉
香蕉
黄色
海南
2
…
3
小香芒
芒果
黄色
海南
2
…
4
金枕榴莲
榴莲
黄色
海南
1
…
…
…
…
…
…
…
…
杀虫剂订购清单表(orders)
id
pesticide_id
order_num
order_time
…
1
2
26
2023-10-15 12:35:14
…
2
1
32
2023-10-15 18:12:47
…
3
2
17
2023-10-16 09:25:39
…
…
…
…
…
…
杀虫剂表(pesticides)
id
name
…
1
辛硫磷
…
2
灭 ...
SKF实习经历小结
前言背景SKF是一家瑞典公司,主营业务是轴承、密封和润滑。我去实习的部门是AIA,人工智能与应用部门。团队主要做预测性诊断与设备的健康管理,同时有算法开发和数据处理的工作。
工作内容与体验在SKF的两个月,主要工作还是开发网页。难度不大,也不会有什么压力。总体工作氛围轻松愉快,团队内部相处氛围也很好。整个公司的状态比较像创业公司,没有太多的条条框框约束,也没有周报、日报、KPI、OKR等各种比较规则性的东西。基建方面也是很像小公司,很多基础组件刚刚起步,一切都方兴未艾。总的来看这种情况有好有坏,好处是比较自由,可以自己学习很多东西,各方面的内容包括底层知识都可以接触到。坏处就是没法培养一个规范化的流程与标准。但我个人还比较喜欢这种模式,大家见仁见智吧。
还有一个比较有意思的点是,整个办公楼层都是没有固定工位的,大家都是每天早上来到占一个位置,走的时候再把自己的东西全部带走,类似于大学里的图书馆模式,想用有两个屏幕的位置还是要早起一点的…
整体评价由于是个北欧公司,作息时间非常友好,每天4点半就下班。对于想要WLB或者下班以后想继续提升自己的同学还是非常友好的。薪资待遇方面,制造业确 ...
Vue3相关技术
Vue3快速上手简介Vue是一套用于构建用户界面的渐进式框架。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
Vue3发布于2020年9月19日,它在Vue2.x的基础上进行了一些优化,对TypeScript有了更好的支持。
vue-devtoolsvue-devtools是一个Chrome浏览器的插件,是官方提供的一个Vue开发者工具,方便用户在开发Vue项目时调试。可以在官网安装,但操作较为复杂。访问极简插件网
https://chrome.zzzmh.cn
在线安装较为简单。
创建Vue3项目可以使用vue-cli创建。
安装或升级vue cli,保证版本在4.5.0以上
123vue --versionvue create <proj_name>
Vue常用指令介绍Vue指令是带有v-前缀的特殊属性。他的职责是当表达式的值改变时,将其产生的连带影响响应式地作用于DOM。
v-textv-text用于操作纯文本,它会替代显示对应的数据对象上的值。当绑定的数据对象上的值发生改变时,插值处的内容也会随之更新。
{{ }}会将数据解释为普通文本 ...
TypeScript介绍
简介TypeScript,简称TS,是微软开发的开源、跨平台的编程语言,是JavaScript的超集。它在最终阶段会被编译为JavaScript代码。它与JavaScript的关系如下图所示:
从技术上讲,TS就是具有静态类型的JavaScript。其最大的特点就是强类型,支持静态和动态类型,可以在编译期间发现并纠正错误,降低试错成本,同时提升代码的规范性。
TS安装1. 安装node.js安装完node后,会自带一个npm包管理器,后面就可以通过npm来安装TS和其他库了。
node.js官网地址:https://nodejs.org/zh-cn
2. npm输入npm -v可以查看npm的版本。由于npm下载插件是从国外服务器下载的,在国内速度较慢,大家可以替换为淘宝团队维护的镜像:
1npm install -g cnpm -registry=https://registry.npm.taobao.org
然后使用cnpm -v查看版本,检测是否安装成功。
3. 全局安装TypeScript1npm install -g typescript
安装完成后运行tsc -V检查 ...
找实习经历总结
动机从2021年开始,互联网行业就迎来了寒冬。各大公司都在裁员,校招名额也越来越少。秋招的时候有一份相关的实习经历无疑是可以加分不少。尤其是对我这种论文不行,无比赛,本科非科班的选手来说,在其他硬件不足的情况下,一份实习经历就显得尤为可贵了。
准备过程-算法岗从二月份开始,我就开始投一些大厂的算法相关岗位了。(感谢我导师能允许我暂时放下科研准备找实习,很多老师都是不放学生出去实习的,如果是本科的读者朋友要读研的话,一定要跟老师和课题组内的师兄师姐提前问清楚说好!)因为我的方向非常小众,对口的岗位几乎没有,没办法只能去投那些没有什么细分方向限制的岗位,比如机器学习组件开发等。搜/广/推/CV/NLP等全部都要求有相关经验,或者相关的比赛取得过名次,这在一定程度上也反映了互联网寒冬不缺人的情况(报的人太多了,只要有相关方向经历的,来了就能上手干活)。
一个星期的时间,基本把国内能叫上名的互联网大厂都投了一遍,一些小厂也投了不少,像Momenta。但是最终给面试的只有两家,一家是学院群里定向内推的拼多多,另一家是岗位内容跟我方向非常契合的字节跳动 ...
Python里的那些“坑”
Python是一门非常容易上手的语言,对于初学者非常友好。但是,这种简单易上手的代价是隐藏在它背后的巨大复杂度。这也就造成了在很多时候,会发生一些看起来很神奇的事情。其实,这只是对Python背后的机制不了解造成的。今天,笔者带大家梳理一下Python中容易踩到的那些”坑“。
变量是“盒子”吗?很多人都认为,Python里的变量像是一个“盒子”。它里面可以装各种各样的数据,当我们把其他值赋给这个变量的时候,就相当于把盒子里的数据倒掉,然后再装新的值。
但实际上,Python里的数据才是占主导地位的,变量像是一个”便利贴”。把当我们把其他值赋给这个变量的时候,相当于把变量这个便利贴从原数据上撕掉,再贴到新的数据盒子上。
嗯?不信?我们可以做个实验。
1234567891011a = [1, 2, 3]b = ab[1] = 4print(a)print(id(a))print(id(b))>>>[1, 4, 3]14901486430081490148643008
当然,对于不可变对象,你会发现更改b对于a没有影响。这是因为在你更改b的那一瞬间,由于a和b指向的是 ...