- 博客(249)
- 资源 (3)
- 收藏
- 关注
原创 如何判断一个产品该不该做
可以从行业报告、同类上市公司财报、行业市场经理等渠道获取数据,例如针对中小企业的考勤产品,需要关注中小企业的个数,每个中小企业对考勤的建设成本。例如产品开发期的研发资源数量、发布日期要求,例如需要申请到公司名义的微信公众号授权,例如需要产品推广时,渠道市场同事的协作等等。从某种程度上说,产品经理就是为新产品而生,如何让自己的产品能够保证更高概率的成功呢,我想核心是产品对多大范围的用户,有多大商业价值。市场需求:通过调研市场,了解目标群体的需求程度、竞争对手的产品等,判断市场是否需要这个产品。
2023-08-09 17:17:55
223
原创 C端产品和B端产品的区别
什么是B端产品? 典型的B端产品有CRM、ERP、OA、中台等。什么是C端产品? C端则是微信、抖音、京东淘宝等。B端产品和C端产品的区别? 一、面向用户不同B端客户是企业级用户,用户群是稳定的、统一的。B端产品面向的客户是企业内员工,该类用户具备企业级的共同特征从而形成集体人格。B端产品的用户需求是企业级的,个性化需求通常被忽略,然而B端产品使用者通常可能有多种角色。以数据中台为例,使用户可能包括业务人员、数据挖掘专家、运维人员、管理者等等,通常...
2021-04-17 17:28:12
12715
原创 什么是三层交换机、网关、DNS、子网掩码、MAC地址
一、什么是vlan?二、单臂路由与三层交换机三、什么是网关一、什么是网关二、如何来理解网关三、网关的ip地址四、网关是如何实现通信?五、什么是默认网关?四、什么是DNS五、MAC地址六、子网掩码很多朋友多次问到什么是网关、dns、子网掩码,三层交换机,它们定位的用途;确实,因为网络技术在弱电中确实应用非常广泛,我们平时在vip技术群中也是不断的讨论到网关、vlan、三层交换机或子网掩码等问题,今天我们就一起用通俗方式一次性了解清楚。一、什么是vlan?VLAN中文是“虚拟局域网”。
2021-01-09 15:46:49
916
转载 高并发场景下数据库的常见问题及解决方案
一、分库分表(1)为什么要分库分表随着系统访问量的增加,QPS越来越高,数据库磁盘容量不断增加,一般数据库服务器的QPS在800-1200的时候性能最佳,当超过2000的时候sql就会变得很慢并且很容易被请求打死,而单表数据量过大也会导致数据库执行sql很慢,为了应付这种场景产生了分库分表这种思想和技术。分表就是把一个表的数据放到多个表中,然后查询的时候你就查一个表。可以按照某一个维度...
2019-12-23 09:41:05
3096
原创 UIButton防止按钮和手势的暴力点击
首先理解下几个概念1、IMP:它是指向一个方法具体实现的指针,每一个方法都有一个对应的IMP,当你发起一个消息之后,最终它会执行的那段代码,就是由IMP这个函数指针指向了这个方法实现的2、SEL:方法名称的描述,只记录方法的编号不记录具体的方法,具体的方法是 IMP3、Method:是一个类实例,里面的结构体有一个方法选标 SEL – 表示该方法的名称,一个types – 表示该方法参数的类...
2019-08-07 10:30:46
703
2
原创 Java Properties 类
Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。Properties 定义如下实例变量.这个变量持有一个Properties对象相关的默认属性列表。Properties default...
2019-07-03 13:55:07
175
原创 Java Stack 类
import java.util.*;public class StackDemo { static void showpush(Stack<Integer> st,int a) { st.push(new Integer(a)); System.out.println("push(" + a + ")"); Sy...
2019-07-03 09:38:00
494
原创 Java Vector 类
import java.util.*;public class VectorDemo { public static void main(String[] args) { Vector v = new Vector(3, 2); System.out.println("Initial size: " + v.size());...
2019-07-03 09:27:33
211
原创 Java Bitset类
import java.util.BitSet;public class BitSetDemo { public static void main(String[] args) { BitSet bits1 = new BitSet(16); BitSet bits2 = new BitSet(16); //...
2019-07-03 09:14:52
161
原创 Java Enumeration接口
import java.util.Vector;import java.util.Enumeration;/** Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。* 这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。尽管如此,它还是使用在诸如Vector和Properties这些传统...
2019-07-03 08:59:58
191
原创 Java 抽象类
Employee.javapublic abstract class Employee { private String name; private String address; private int number; public Employee(String name, String address, int number) ...
2019-06-17 14:01:28
807
原创 Java 多态
Test.java/** 多态* 多态是同一个行为具有多个不同表现形式或形态的能力*//** 多态的优点* 1. 消除类型之间的耦合关系* 2. 可替换性* 3. 可扩充性* 4. 接口性* 5. 灵活性* 6. 简化性多态存在的三个必要条件 继承 重写 父类引用指向子类对象*//** 当使用多态方式调用...
2019-06-17 10:24:05
960
原创 iOS-UIButton防止重复点击(三种办法)
目录使用场景 方法一 设置enabled或userInteractionEnabled属性 方法二 借助cancelPreviousPerformRequestsWithTarget:selector:object实现 方法三 通过runtime交换方法实现 注意事项一 使用场景在实际应用场景中,有几个业务场景需要控制UIButton响应事件的时间间隔。1 当点击按钮...
2019-06-17 09:10:55
9946
1
原创 Java 重写(Override)与重载(Overload)
TestDog.java/** 重写(Override)* 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!* 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。* 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOE...
2019-06-17 09:05:25
198
原创 OC指示符assign、atomic、nonatomic、copy、retain、strong、week的解释
在使用@property定义property时可以在@property与类型之间用括号添加一些额外的指示符,常用的指示符有assign、atomic、nonatomic、copy、retain、strong、week、等。详情如下:assign: 简单赋值,不更改索引计数(Reference Counting)。使用assign: 基础数据类型 (NSInteger,CGFloat)...
2019-06-15 14:27:09
607
原创 Java继承
Animal.javapublic class Animal { //公共父类 private String name; private int id; public Animal(String myName, int myid) { name = myName; id = myid; } public v...
2019-06-15 09:40:29
163
原创 Java传输对象模式
传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它。对于客户端,传输对象是只读的。客户端...
2019-06-14 15:22:31
663
原创 Java服务定位器模式
服务定位器模式(Service Locator Pattern)用在我们想使用 JNDI 查询定位各种服务的时候。考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术。在首次请求某个服务时,服务定位器在 JNDI 中查找服务,并缓存该服务对象。当再次请求相同的服务时,服务定位器会在它的缓存中查找,这样可以在很大程度上提高应用程序的性能。以下是这种设计模式的实体。服务(...
2019-06-14 15:12:52
307
原创 Java拦截过滤器模式
拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务。 过滤器链(Filter ...
2019-06-14 14:58:20
561
原创 Java前端控制器模式
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌...
2019-06-14 14:31:36
614
原创 Java数据访问对象模式
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。以下是数据访问对象模式的参与者。数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作。 数据访问对象实体类(Data Access Object concrete c...
2019-06-14 14:07:38
346
原创 Java组合实体模式
组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可...
2019-06-14 11:02:58
387
原创 Java组合实体模式
组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可...
2019-06-14 08:40:06
279
原创 Java业务代表模式
业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。客户端(Client) - 表示层代码可以是 JSP、servlet 或 UI java 代码。 业务代表(Business Delegate) - 一个为客户端实体提供的入口类,它提供了对业务服务方法的访问...
2019-06-13 15:31:02
366
原创 JavaMVC 模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。 View(视图) - 视图代表模型包含的数据的可视化。 Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据...
2019-06-13 15:03:52
1095
原创 Java访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操作耦合问题。何时使用:需要对一个对象结构中的对...
2019-06-13 14:26:28
206
原创 iOS处理高并发量的数据请求和数据集合的对应关系
一、处理高并发请求的核心代码如下:// 创建信号量 dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); // 创建全局并行 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0...
2019-06-13 13:57:28
2168
原创 Java模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。...
2019-06-13 13:53:26
585
原创 Java策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...
2019-06-13 11:16:25
1896
原创 Java空对象模式
在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。Ab...
2019-06-13 10:43:49
365
原创 Java状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用...
2019-06-13 10:20:48
489
原创 Java观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标...
2019-06-13 09:35:45
143
原创 Java中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决:对象与对象之间存在大量的关联关系,这样势必会导...
2019-06-13 09:08:46
298
原创 Java迭代器模式
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把在元素之间游走的...
2019-06-12 08:58:41
133
原创 Java解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的解释器。何时使用:如果一种特定类...
2019-06-11 09:36:48
160
原创 Java命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进...
2019-06-10 10:04:22
182
原创 Java 责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。意图:避免请求发送者与接收者耦合在一起,让多个...
2019-06-10 09:03:56
115
原创 Java代理模式
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要...
2019-06-06 10:07:47
148
原创 Java外观模式
外观模式:隐藏系统的复杂性,并向客户提供了一个客户端可以访问系统的接口,这种类型的设计模式属于结构型模式,他向现有的系统添加一个接口,来隐藏系统的复杂性这种模式设计到一个单一的类,该类提供了客户请求的简化方法和对现有系统类方法的委托调用意图:为子系中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用主要解决:1.降低访问复杂系统的内部子系统时...
2019-06-05 14:29:08
132
原创 Java组合模式
组合模式:适用于把一组相似的对象当作一个单一的对象,组合迷失一句树形结构来组合对象,用来表示部分以及整体层次。这种类的设计模式属于结构型模式,他创建了对象组的树形结构这种模式创建了一个包含自己对象组的的类。给类提供了修改相同对象组的方式意图:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单一对象和组合对象的使用具有一致性主要解决:他在我们树形结构的问题中,模糊了简...
2019-06-05 10:57:44
542
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人