- 博客(35)
- 收藏
- 关注
原创 如何写好一份产品分析报告
摘自《产品经理面试攻略》应届生求职过程中,除了一份优秀的个人简历,还可以准备一些作品,比如说产品体验报告、竞品分析报告、市场分析报告、用户调研报告、产品分析报告、个人项目总结报告等。对于其中的产品分析报告,有以下两种方式撰写:一、层次分析法战略层:产品目的,用户需求,经营者和用户想从产品中得到什么。范围层:规格功能,某个功能是否应该成为该产品的功能之一,各种功能的组合方式是什么样的。结构层:流程结构,用户如何到达某个页面,他们走完流程后能去哪里。框架层:页面布局,按钮,表格和文本
2021-09-15 20:10:59
1665
原创 如何确定产品需求优先级
时间紧迫。互联网产品需求多,时间紧任务重,再加上互联网瞬息万变,需要快速抢占市场,稍有延迟可能就会错失机会,被竞争对手超越。 公司内部资源有限。技术、运营、宣传等相关人员人数有限,如果产品功能过多,则会消耗大量的人力资源。所以在这种环境下,选择最重要的产品需求进行开发,以最快的速度完成产品更新占领市场。那么该如何确定产品需求的优先级?主要从以下几个方面考虑:需求的投入产出比 需求的紧急程度 需求与产品策略的契合度 需求之间的潜在联系 根据实际可调配的资源情况...
2021-09-15 19:33:41
513
原创 互联网产品的分类总结
原文:浅析互联网产品的分类、特点及变现互联网产品就是用于满足用户特定需求的基于互联网技术上的功能与服务集成。1、按照服务对象分类面向用户(2C)产品:注重用户体验,最大程度满足用户的需求,提供给用户最好的产品使用体验。 面向客户(2B)产品:满足用户价值,效益第一,体验第二,能切实解决客户问题,提升业务效益。2、按照运行平台分类移动端产品:使用户更加便捷地操作相应的功能模块,达到使用目的。 PC端产品:适合一些即时性较低但信息量大,功能操作复杂的产品。 其他智能设备端产品3、按照用
2021-09-13 21:19:08
2327
原创 C++读写txt文件
QFile file("文件存储地址"); if(! file.open(QIODevice::Append|QIODevice::Text)) //append追加,不会覆盖之前的文件 { QMessageBox::critical(this,"错误","文件打开失败,信息没有保存!","确定"); return; } QTextStream out(&file);//写入数据 .
2021-04-20 16:32:15
1289
原创 Qt学习笔记(一).pro项目描述文件
【转载】https://blog.51cto.com/9291927/1867811一个QT工程中包含不同类型的文件:.pro 项目描述文件;.pro.user 用户描述文件;.h 头文件;.cpp 源文件;.ui 界面描述文件;资源文件(图片、音频等).pro 项目描述文件的基本构成:① #注释起始符;② QT 模块声明;③ TARGET 可执行文件名;④ TEMPLATE 程序模板声明;⑤ SOURCES 源码文件声明;⑥ HEADERS 头文件声明;⑦ FORMS 界面文件声明;⑧
2021-03-15 18:16:59
560
转载 #ifndef MAINWINDOW_H
【文章出处】:https://zhidao.baidu.com/question/516571108.html头文件定义时的一个常用方法,为了避免重复包含同一个头文件。如:test1.h中定义了一个全局变量int a,test2.h中include了test1.h,然后test.c中include了test1.h和test2.h,如果没有这个宏,显然test.c中预编译时会定义两次变量a,因此会报错。只需在头文件开头处加上:#ifndef TEST1_H //宏随便定义,一般为头文件的大写.
2021-03-05 21:36:26
956
转载 Qt中的信号槽机制(2)
【转载】原文链接:https://blog.youkuaiyun.com/linux_wgl/article/details/33419409Qt中的信号槽由信号和槽函数构成。一、信号当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就像一个正常的函数调用一样。信号-槽机制完全独立于任何GUI事件循环。只有当所有的槽返回以后发射函数(emit)才返回。 如果存在多个槽与某个信号相关联,那么当
2021-03-04 21:07:07
246
1
转载 Qt中的信号槽机制
【转载】原文链接:https://blog.youkuaiyun.com/jiang_xinxing/article/details/68060682Qt中的信号槽由信号和槽函数构成。1、信号1)是一个函数a. 这个函数不需要实现, 只声明就可以b. 使用关键字 signals 限定2)信号函数返回值: void3)可以重载4)信号可以连接信号5)信号可以连接多个槽函数6)多个信号可以链接同一个槽函数2、槽函数1)qt5中的槽函数, 类的成员函数, 全局函数, 静态函数, lambda表达
2021-03-04 20:44:16
198
1
原创 数组 移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。要求:① 必须在原数组上操作,不能拷贝额外的数组。② 尽量减少操作次数。示例:输入: [0,1,0,3,12] 输出: [1,3,12,0,0]解法:双指针public class MoveZeroes { public static void moveZeroes(int[] nums) { int indexNow = 0; // 用来赋值的指针 ...
2021-01-18 21:11:45
148
原创 数组 求两个数组的交集
题目:给定两个数组,编写一个函数来计算它们的交集。示例:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]解法:排序 双指针 import java.util.Arrays;//题目:给定两个数组,编写一个函数来计算它们的交集。public class Intersect { public int[] intersect(int[] nums1, int[] nums2){ Arrays.sort(nums1); // 先..
2021-01-18 11:30:41
773
原创 数组 只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例:输入 [4,1,2,1,2] 输出 4解法上述三种解法都需要额外使用 O(n) 的空间,其中 n 为数组长度。如果要求使用线性时间复杂度和常数空间复杂度,上述三种解法显然都不满足要求。要求: 时间复杂度:O(n),其中 n 为数组长度。只需对数组遍历一次。 空间复杂度:O(1)。 解法:class FindSingleNum { publ..
2021-01-14 15:01:37
146
原创 数组 旋转数组
题目:给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例:输入 nums = [1,2,3,4,5,6,7], k = 3 输出 [5,6,7,1,2,3,4]解法:arraycopy(原数组名称,原数组起始下标,目标数组名称,目标数组起始下标,截取长度)class Solution { public void rotate(int[] nums, int k) { int l = nums.length; int[] arr...
2021-01-14 10:40:23
125
原创 数组 存在重复元素
题目:给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例:nums = [1,2,3,1], 输出:true解法:①哈希表:根据关键码值(key value)直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,以加快查找速度。 用时 9msimport java.util.HashMap;class Solution{ public bo...
2021-01-13 18:19:13
624
1
原创 数组 删除排序数组中的重复项
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例:给定数组 nums = [1,1,2], 输出 [1,2]解法:双指针class Solution { public int removeDuplicates(int[] nums) { if(nums.length == 0) return 0;...
2021-01-13 17:56:58
101
原创 ROM与RAM的区别
ROM也称为只读存储器,数据只能写入该类型存储器,并不能加以修改,断电后可以保存数据。RAM指的是随机存储器,也就是内存,还种类型的存储器可以随时读写,并且速度很快,断电后不能保存数据。...
2020-11-26 19:38:54
235
原创 Quartus Ⅱ设置IP核
以ROM为例① Tools → MegaWizard Plug-In Manager② 点击 Next③ 在2处起一个合适的例化名,Next④ 根据需要选择,Next⑤ Next⑥ 选择 MATLAB 生成的 mif 文件,Next⑦ Next⑧ 选中,Finish⑨ 打开工程所在的文件夹,选中生成的 ROM_inst.v 文件,用编辑器打开,复制粘贴到程序中,并修改相应的输入输出名称。...
2020-11-25 21:33:06
5943
原创 用 Quartus Ⅱ 调用 ModelSim 联合仿真
以4选1多路选择器为例:Verilog描述(用case语句)module data_selector41(sel,in,out); input [1:0] sel; input [3:0] in; output out; reg out; //若括号里均为0,则out必为0,完全可以不执行always语句 always @(sel or in) begin case({sel[1],sel[0]})
2020-11-23 18:07:24
479
1
原创 Quartus Ⅱ 仿真波形报错 can‘t find port“A[0]“ in design
在使用Quartus Ⅱ仿真波形时报错 can't find port "A[0]" in design原因是Quartus Ⅱ默认0为数组起始位,如A[7:0],而不是A[8:1]。
2020-11-23 17:13:22
1731
4
原创 使用case语句设计八功能的算术运算单元(ALU)
题目:使用case语句设计八功能的算术运算单元(ALU),其输入信号a和b均为4位,功能选择信号select为3位,输出信号out为5位。算术运算单元ALU所执行的操作与select信号有关,具体关系见下表。Verilog描述:module ALU(a,b,select,out);input [3:0] a,b;input [2:0] select;output reg [4:0] out;always @ (select or a or b) begin case(se
2020-10-21 19:12:44
3006
原创 Verilog约束文件
使用软件:vivadovivado使用的约束文件格式为xdc文件。xdc文件主要是定义管脚约束、时钟约束,以及其他时序约束。约束文件的创建:①先创建一个.xdc的约束文件,在vivado左侧边栏Project Manager下,点击Add Source②选择Add or create constraints,点击Next③点击Create File按钮,在file name输入文件名,点击OK④点击Finish按钮,完成约束文件的创建约束文件的书写:(普通IO口只需约
2020-09-12 17:26:13
10661
1
原创 Verilog中的阻塞赋值和非阻塞赋值
begin end之间的赋值语句有阻塞赋值和非阻塞赋值之分。阻塞赋值:语句顺序执行,前面的执行完才可以执行后面的。赋值符号:=如: 其中赋值语句1会阻塞赋值语句2,即只有当赋值语句1执行完才能执行赋值语句2。阻塞赋值的实质:右边表达式计算结束,马上对左边寄存器变量赋值,中间不能插入其他任何操作。非阻塞赋值:所有语句并行执行。赋值符号:<=如: 其中赋值语句1不会阻塞赋值语句2,赋值语句1、2并行执行。非阻塞赋值的实质:首先按顺序计算右边表达式的值,但并不马上赋值,而是等到过..
2020-09-12 15:49:55
1169
原创 两则乘法器的Verilog描述及测试程序
乘法原理 Verilog描述module MULT4B(R,A,B);parameter S = 4;//4位乘法器//参数定义关键词parameter(将常数用字符表示称为参数)input [S:1] A,B;//A为被乘数,B为乘数output [2*S:1] R;//R为乘积integer i;//i为循环变量reg [2*S:1] R;//always语句中的赋值目标必须为reg型always @ (A or B) begin ...
2020-09-11 20:46:19
1585
2
原创 全加器的Verilog描述及测试程序
全加器功能:完成两个1位二进制数的加法,并考虑进位输入。 真值表 逻辑式 全加器实现方法:用2个半加器组成。半加器的Verilog描述module h_adder (A,B,SO,CO); input A,B; output SO,CO; assign SO=A ^ B; assign CO=A & B;endmodule全加器的逻辑电路图(其中ne...
2020-09-11 09:26:05
6013
1
原创 4选1多路选择器的Verilog描述及仿真
多路选择器的功能:在选择信号的控制下,从多个输入中选择一个输出。真值表 符号 Verilog描述module data_selector41(sel,in,out); input [1:0] sel; input [3:0] in; output out; reg out; //若括号里均...
2020-09-08 09:01:29
47474
5
原创 半加器的Verilog描述及测试程序
半加器功能:完成两个一位二进制数的加法,不考虑进位输入。真值表 逻辑图 半加器的Verilog描述module h_adder (A,B,SO,CO); input A,B; output SO,CO; assign SO=A ^ B; assign CO=A & B;endmodule 测试程序module test_...
2020-09-07 20:03:19
4454
1
原创 Ubuntu 解决 ‘E: 无法定位软件包 lib32bz2-1.0’ 问题
sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6
2020-07-16 15:19:54
3884
2
原创 解决 ‘无法获得锁 /var/lib/dpkg/lock-frontend-open (11: 资源暂时不可用) ’问题
运行 apt-get install/update 等命令时,报错:E:无法获得锁 /var/lib/dpkg/lock-frontend-open(11:资源暂时不可用)E:Unable to acquire the dpkg frontend lock(/var/lib/dpkg/lock-frontend),is another process using it?解决方法:强制解锁sudo rm /var/lib/dpkg/lock-frontend...
2020-07-16 14:26:34
294
原创 控制数码管显示的思路
1、锁存端:高电平时输入输出连通,低电平时不连通,保持原来的值2、P0端都要接上上拉电阻(由于I/O口输出i很弱,不到1mA,若不加上拉电阻,无法点亮发光二极管),接法如图所示3、思路:先让位选锁存端(WELA)P2.7为高电平1,P0口送数,选中某一数码管后,将位选锁存端变为低电平;再让段选锁存端(DULA)P2.6为高电平1,P0口送数,再把段选锁存端变为低电平。4、例:6个数...
2018-07-11 19:30:26
1348
原创 如何控制蜂鸣器的响动频率
#include "reg52.h"#define BIT0 0x01//将八位中每一位都表示出来00000001#define BIT1 0x02#define BIT2 0x04#define BIT3 0x08#define BIT4 0x10#define BIT5 0x20#define BIT6 0x40#define BIT7 0x80void init(){ ...
2018-07-08 23:06:57
11296
1
原创 单片机C语言基础知识
1、ROM用于存放程序,或者一些原始数据;RAM用于存放数据2、sfr:SFR声明,sfr SCON=0x98; sfr16:SFR的16位数据声明 ,sfr16 T2=0xCC sbit:特殊功能位声明,sbit OV=PSW^2; bit:位变量声明3、&& 逻辑与;&按位与;>>位右移;<<位左移;^按位异或;~按位取反...
2018-07-08 22:19:37
2825
原创 利用51单片机控制LED灯(格式规范)
当管脚P1为低电平时,LED灯亮#include "reg52.h"#define BIT0 0x01void main(){ P1 = 0xFE;//只有最低位亮 TMOD = 0x01;//高四位为定时器中断1(为0表示没用),低四位为定时器中断0(1:方式1) TH0 = (65536-5000)/256;//5000以us为单位,此处为5ms;60536依次加一,直到65...
2018-07-07 23:30:39
6007
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人