人机交互设计
引言如何进行设计我们需要考虑以下几点:
用户们都是哪些人?
哪些活动将要被执行?
交互发生的地方在哪?
所以,我们需要匹配用户的活动,需求和诉求
理解用户的需求:
需要考虑到人们擅长什么和不擅长什么
考虑一下什么东西可能在人们现在的做事方式上有帮助
思考一下什么可以提供高质量的用户体验
倾听人们想要什么,并让他们参与进来
使用经过尝试和测试的以用户为中心的方法
可用性与用户体验可用性目标:
有效
高效
安全
具有良好的实用价值
易于学习
很容易记住如何使用
用户体验目标:
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
灭 ...
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检查 ...
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指向的是 ...
《Effective Python》总结
第一章 培养Pythonic思维第1条 查询自己使用的Python版本1$ python3 --version
不要使用Python2!
推荐3.8左右的版本(写于2023-04),初学者不要用太新的版本,很多库不支持最新版。
第2条 遵循PEP8风格指南PEP8全称Python Enhancement Proposal #8,是针对Python代码格式编订的风格指南。不符合PEP8的做法一般编译器(如Pycharm)会自动检查标黄提醒。以下是一些重点规范:
用4个空格表示缩进,而不是制表符
下划线变量命名。
表达式一行写不下,可以用括号括起来,不要用 \ 续行。
import语句放在开头,总是使用绝对名称,按顺序划为三部分:标准库、第三方、自己的模块。
第3条 了解bytes与str区别bytes包含的是原始数据,即8位无符号值
1a = b'h\x65llo'
str包含的是Unicode码点
1a = 'a\u0300 propos'
第4条 用支持插值的f-string取代C风格的格式字符串与str.format方法1 ...
爬虫逆向技术
逆向介绍爬虫,就是在网络上自动抓取自己所需要的内容。很多人认为,爬虫技术主要是要学怎么去爬取内容,但其实,单纯的爬取网页内容(针对不设防的网站)非常简单,用Python几十行即可搞定。但理想很丰满,现实很骨感。实际上,不设防的网站少之又少,大部分信息重要程度很高的网站都有很难突破的加密与保护措施,比如常见的各种验证码。所以,学习爬虫更重要的是如何绕过网站/APP内的反爬虫措施,从而顺利得到我们想要的数据。这个过程就是逆向。
另外,提到爬虫,很多人都会问:“写这玩意是不是容易坐牢?”。确实,爬虫这种东西本身就带了一种“不太道德”的色彩,很多网站也是深受其扰。但对于个人开发者而言,只要做的不太过分,适当的爬取内容,一般公司也不会针对个人发起诉讼。“不谈剂量谈毒性就是耍流氓”。大家掌握好一个度就可以了。
Python爬虫常用工具在线工具
链接
简介
https://spidertools.cn
爬虫工具库
https://www.json.cn
Json解析网站
https://base64.us
Base64编码解码
https://www.runoob.c ...