2020-04-26 18:00:50    16    0    0

作为一个领导者,优秀的领导风格与管理行为都有哪一些呢?怎么安排团队结构能让团队协作效益最大化?又该采用怎样的激励机制鼓舞员工努力工作呢?针对这一系列问题,笔者将给出解答。

李嘉诚曾经坦言:

“企业的成功需要依托团队的力量,团队的主心骨必须是那些优秀的人才,只要你拥有一支高效的团队,那么你成功的概率将提高80%。”

一个公司最宝贵的资产不是理念,更不是宏大的规划,而是优秀的团队。

细数行业内那些成功的企业,其背后都有一个超强的团队。比如,马云有阿里巴巴十八罗汉,马化腾也有他的腾讯五虎。这也是为什么许多投资人在做选择时,都把创始团队放在首位的原因。

一个优秀的领导者,不仅要自己能干、会干,更要能够做好识人、用人、管人,激发团队的活力和动力,带领着团队不断成长、成就卓越。

01 你知道有哪些领导风格吗?

一个好的领导者首先要认识自己的管理方式和风格。因为,你的领导方式会决定整个团队的绩效!我们知道在球场上,同样的球队,由不同的教练来带领和指挥,成绩也是有千差万别的。

领导的管理风格也决定着团队的成绩。到底一名好的团队管理者的行为是怎样的,有哪些特点?一般来说,我们在团队中看到的管理者的管理风格有六大类:

1. 命令型领导风格

这个风格的管理者主要的特点是:说一不二。他发出的决策,团队的员工必须无条件的执行。即使你有不同的想法,他也会通过命令和强硬的方式,让你放弃自己的主张。

2. 愿景型领导风格

愿景型的领导会向团队成员去描述团队前往的方向,而且会告诉大家我们前往的这个方向是多么激动人心和意义非凡。

3. 亲和型领导风格

亲和型的领导力的风格致力于培养良好的、亲密的团队之间的关系,他在乎人与人之间保持一种愉悦的氛围,建立跟员工之间的情感的连接。

它的理念就是以人为本,亲和型领导者很擅长用赞扬和鼓励的方式去跟员工进行互动。

4. 民主型领导风格

民主型的领导很愿意花时间与团队的成员以民主的方式建立信任,更加在乎员工的参与感,更加在乎员工发表他们的建议和他们在决策中扮演的角色。

在决策时他更倾向广泛地征求员工的想法和意见,并通过结合大家各种建议和意见达成共识。

5. 标杆型领导风格

正如它的名称所示,以领导者作为完成任务的标杆。领导者会设定一个非常高的绩效的标准,然后亲自示范,并要求员工依照此种方式来操作。

6. 教练型领导风格

顾名思义,教练型领导者能够跟下属一起分析他工作上的能力的长处和短处,或者工作上的优势或不足

2020-04-26 15:10:55    40    0    0

问题

如果只能进行两个值的加减乘除,如何编程计算一个数学表达式的值?
比如计算 1+2*3+(4*5+6)*7,我们知道优先级顺序 () 大于 * / 大于 + - ,直接计算得 1+6+26*7 = 189

中缀、后缀表达式的计算

人利用中缀表达式计算值

数学表达式的记法分为前缀、中缀和后缀记法,其中中缀就是上边的算术记法: 1+2*3+(4*5+6)*7,人计算中缀表达式的值:把表达式分为三部分1 2+3 (4*5+6)*7 分别计算值,求和得 189。但这个理解过程在计算机上的实现就复杂了。

计算机利用后缀表达式计算值

中缀表达式 1+2*3+(4*5+6)*7 对应的后缀表达式: 123*+45*6+7*+,计算机使用栈计算后缀表达式值:

计算后缀表达式的代码实现

  1.  
    func calculate(postfix string) int {
  2.  
    stack := stack.ItemStack{}
  3.  
    fixLen := len(postfix)
  4.  
    for i := 0; i < fixLen; i++ {
  5.  
    nextChar := string(postfix[i])
  6.  
    // 数字:直接压栈
  7.  
    if unicode.IsDigit(rune(postfix[i])) {
  8.  
    stack.Push(nextChar)
  9.  
    } else {
  10.  
    // 操作符:取出两个数字计算值,再将结果压栈
  11.  
    num1, _ := strconv.Atoi(stack.Pop())
  12.  
    num2, _ := strconv.Atoi(stack.Pop())
  13.  
    switch nextChar {
  14.  
    case "+":
  15.  
    stack.Push(strconv.Itoa(num1 + num2))
  16.  
    case "-":
  17.  
    stack.Push(strconv.Itoa(num1 - num2))
  18.  
    case "*":
  19.  
    stack.Push(strconv.Itoa(num1
2020-04-21 10:03:31    24    0    0

图片是一种常见的数据展现形式,近来接触到了好几个关于上传图片的设计,本文围绕“如何在web设计上传图片”进行总结。

在Web网页中常常遇见图片上传,上传图片的应用场景场景在个人信息中(比如:上传个人头像)、信息反馈(比如:淘宝的订单评价)、社交场景(比如:上传图片发朋友圈)。

我们了解图片的基本属性主要包括:图片的文件格式、图片大小、图片宽和高,以及图片数量。那下面就来看看,针对各种场景下的上传图片,该如何根据用户场景进行设计。

一、需求场景

在很多网站中,常常会遇到上传单张图片,最典型的场景就是上传个人头像,这个属于个人信息补充的需求场景,该场景只允许上传一张图片。例如用户在网站注册之后,基本上都会通过个人中心在里面上传个人图片,设置一个用户喜欢的头像。

二、案例分析:微博VS QQ上传个人头像

在很多社交网站中,常常为了促进用户的沟通,会鼓励用户上传个人头像。因为在社交场景中,个人头像比一个昵称更加让人能记住你。

上传个人头像是一个常见功能,但是对于头像的处理确实有很多方式的。常见的方式是上传一张高清的图片,但是显示的是缩略图。其次社交场景的上传图片用户更多趋向处理图片,比如对图片进行滤镜美颜,目的是通过头像吸引别人。还有一种上传头像之后,是用户精心挑选的满意的图片设置为自己的头像,支持再次点击头像,可以全屏显示原图。

我们就来看看微博和QQ中是如何上传用户的个人头像的。

1. 上传图片前,告诉用户图片规则

在新浪微博的个人主页,可以看到自己的图像,注册账号之后,都是提供一个默认的图片。后期是引导用户上传头像。

所以在用户没有上传过图像,系统使用默认图片,有一个很醒目的“上传头像”,去引导用户上传自己的头像。

用户点击“上传头像”之后,打开头像设置窗口。

在这个弹框中,首先就告知用户上传图片的规则:图片的格式和大小限制。在上传图片区域用文案提示:只支持JPG、PNG、GIF,大小不超过5M。

微博的头像设置这里,由于上传的图片,需要进行裁剪,所以右侧还提供了一个预览效果。由于微博的头像应用在3个地方:分别是个人页面的大尺寸头像、发表微博的中尺寸头像以及发表评价使用的小尺寸图像,三个地方都是不同的尺寸,所以这里的预览有3个不同尺寸的预览效果。

2. 在上传图片中,引导用户行为

(1)图片的格式和大小校验

点击“选择图片”,弹出选择文件的窗口,web端支持自定义文件,可根据支持的图片类型,自定义文件

2020-04-13 10:31:56    21    0    0

历史
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

HTTP 的发展是由蒂姆·伯纳斯-李于 1989 年在欧洲核子研究组织(CERN)所发起。由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)制定标准,最终发布了一系列的 RFC,其中最著名的是 1999 年 6 月公布的 RFC 2616,定义了 HTTP 协议中现今广泛使用的一个版本——HTTP 1.1。

2014 年 12 月,互联网工程任务组(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工作小组将 HTTP/2 标准提议递交至 IESG 进行讨论 [1],于 2015 年 2 月 17 日被批准。[2] HTTP/2 标准于 2015 年 5 月以 RFC 7540 正式发表,替换 HTTP 1.1 成为 HTTP 的实现标准。

以上摘要自 维基百科。

SPDY
SPDY(发音如英语:speedy)。实际上在 HTTP2 提出来之前,SPDY 流行了很长一段时间。该系列协议由谷歌开发,于 2009 年公开。它的设计目标是降低 50% 的页面加载时间。当下很多著名的互联网公司都在自己的网站或 APP 中采用了 SPDY 系列协议(当前最新版本是 SPDY/3.1),因为它对性能的提升是显而易见的。主流的浏览器(谷歌、火狐、Opera)也都早已经支持 SPDY,它已经成为了工业标准。HTTP Working-Group 最终决定以 SPDY/2 为基础,开发 HTTP/2。

突然在 Chrome 51 版本之后不支持 SPDY 了,Chrome 弃用了 SPDY,开始全面支持 HTTP2。

HTTP/2 的优势
相比 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化:

每个服务器只用一个连接。HTTP/2 对每个服务器只使用一个连接,而不是每个文件一个连接。

2020-04-13 10:31:27    5    0    0

一. 一般的问题

  1. 为什么要修改 HTTP? HTTP/1.1 在 Web 上已经服务了 15 年以上,但是它的缺点正在开始显现。加载网页比以往任何时候都需要更多资源(请参阅HTTP Archive’s page size statistics),并且要高效地加载所有这些资源非常困难,因为事实上,HTTP 只允许每个 TCP 连接有一个未完成的请求。

过去,浏览器使用多个 TCP 连接来发出并行请求。但是,这是有局限性的。如果使用的连接过多,则将适得其反(TCP 拥塞控制将被无效化,导致的用塞事件将会损害性能和网络),并且从根本上讲是不公平的(因为浏览器会占用许多本不该属于它的资源)。同时,大量请求意味着“在线”上有大量重复数据。

这两个因素都意味着 HTTP/1.1 请求有很多与之相关的开销。如果请求过多,则会影响性能。

这使得业界误解了“最佳实践”,进行诸如 spriting 图片合并,data: inlining 内联数据,Domain Sharding 域名分片和 Concatenation 文件合并之类的事情。这些 hack 行为表明协议本身存在潜在问题,在使用的时候会出现很多问题。

  1. 谁制定了 HTTP/2? HTTP/2 是由 IETF 的 HTTP 工作组开发的,该工作组维护 HTTP 协议。它由许多 HTTP 实现者,用户,网络运营商和 HTTP 专家组成。

请注意,虽然我们的邮件列表托管在 W3C 网站上,但这并不是 W3C 的努力。但是,Tim Berners-Lee 和 W3C TAG 与 WG 的工作进度保持同步。

大量的人为这项工作做出了贡献,最活跃的参与者包括来自诸如 Firefox,Chrome,Twitter,Microsoft 的 HTTP stack,Curl 和 Akamai 等“大型”项目的工程师,以及许多诸如 Python、Ruby 和 NodeJS 之类的 HTTP 实现者。

要了解有关 IETF 的更多信息,请参见Tao of the IETF。您还可以在 Github 的贡献者图中了解谁为规范做出了贡献,以及谁在我们的实现列表中参与该项目。

  1. HTTP/2 与 SPDY 有什么关系? HTTP/2 第一次出现并被讨论的时候,SPDY 正逐渐受到实现者(例如 Mozilla 和 nginx)的青睐时,并且被当成对 HTTP/1.x 的重大改进
电商    2020-04-01 15:21:18    19    0    0

电子商务日趋成熟的今天,购物车体系几乎成了行业的标配,然而作为电商第三极的拼多多为什么迄今为止也不做购物车功能呢?下面通过这篇文章来与大家分享。

一、购物车的前世今生

首先来聊一聊购物车的前世今生。购物车的概念来源于线下零售体系,传统商超将购物车放置于购物入口,为客户提供便捷的购物体验,这里购物车起到的作用:提升客户购物过程中购买多件商品或大件商品时的便携性

早期(07年之前)的淘宝并没有购物车功能,当时淘宝最大竞品:易趣,同样没有购物车功能。按照当时的产品思维:在线商城的核心逻辑是为用户提供便捷购物体验,所以交易链路越短越便捷、转化越高,而购物车用来提升购物时商品便携性的作用,在线上虚拟商城体系下失效,自然作为旧时代产物被淘汰。

购物车想法的提出来自于淘宝营销团队,购物车未出现之前,淘宝的促销仅有简单的打折促销。购物车的出现为淘宝打开一片新天地,让在线交易有了真正意义上的订单概念,继而延伸出了运费模板(满N件包邮/满M元包邮)、丰富的促销玩法(满减、满折、满赠、M元N件等)。

二、购物车与拼团的定位

1. 购物车

那么购物车的核心是什么,或者说购物车的作用是什么?

用来凑优惠,鼓励用户多买商品,购物车的逻辑是:单一用户通过购买多件商品形成一定的议价能力,议价能力来源于三个成本:物流成本、包装成本、用户购买量较多时商家愿意出让的利润成本。

这里仅考虑商品成本、包装成本、运输成本对单品售卖成本的影响。

2. 拼团

回到拼团,拼团的概念,可以简单理解为:用户通过相互拼单购买某一款商品以获取更低的价格。可以看出,拼团的逻辑是:多用户通过购买同一款商品形成一定的议价能力(优惠)

那么这个议价能力从何而来?

物流成本、包装成本衰减了吗?

答案是没有,拼团本质上是通过降低商家获客成本形成议价能力。

这里仅考虑获客成本、商品成本、包装成本、运输成本对单品售卖成本的影响。

3. 总结

1)购物车的核心:凑优惠

购物车的本质:单用户购买多件商品降低商家物流成本、包装成本及部分利润出让形成一定的议价能力,属于单人多品导向型购物,依赖购物车

2)拼团的核心:获客

拼团的本质:多用户(拼团发起人+被邀请人)购买同一款商品降低商家获客成本形成一定议价能力,属于单品多人导向型购物,依赖分享功能,不依赖购物车

三、拼多多为什么不做购物车问题的拆解

透过购物车、拼团的核心与本质,我们现在明白了这是两种不同形态的业务,鱼和熊掌不可兼得

2020-03-31 13:37:27    15    0    0

一、 什么是数据分析?

数据分析是一个很宽泛的概念,很多教科书上都有标准的定义。所谓“数据分析”,是指根据“业务理解”,采用“适当的统计方法”对收集的数据进行清洗,提取有用的信息和规律,以简明易懂的方式“呈现”给使用人员,发挥数据的作用。

二、 游戏数据分析在做什么?

在游戏行业中,我们需要了解如何有效地获取用户、评估效果,需要了解如何激活用户、评估产品质量,也需要知道如何提升收益,并挖掘潜在的高价值用户,由这些需求,游戏便与数据分析结合在一起了。

根据游戏产品的生命周期进行划分。在产品稳定之前,游戏数据分析的主要任务是通过业务分析,快速响应需求,帮助策划和运营人员优化产品、运营和市场活动。在产品稳定且规模达到一定量级时,游戏数据分析的主要任务是将前期的业务理解不断抽象、提炼,通过算法形成固定模型,由产品调用并嵌入到游戏的功能中,以及进行专项课题研究。

概括起来,可以分为以下4个部分:

(1) 基础支持:包括数据埋点的需求跟进和验收,数据仓库搭建,各类平台及运营工具搭建;

(2) 产品调优:从实际的生产流程来看,游戏产品,特别是移动游戏,一旦正式推广开始,研发精力主要集中在各类SDK的对接、版本维护和后期内容填充上。因此,根据留存及付费分析对产品的基础数值、玩点摆放、核心体验进行优化的工作主要集中在产品测试阶段;

(3) 运营优化:产品上线后,数据分析的主要任务集中在市场投放监控、基础运营支持,以及运营活动的规则和排期优化;

(4) 挖掘应用:产品在稳定运营一段时间且在线和收入规模还能稳定在一定量级时,开始涉及更多专项课题研究和一些挖掘算法,如通过分类算法个用户打标签,常应用在“防盗号”、“工作室识别”、“精准推送”、“伪随机”等。

三、 游戏数据分析师的层次

注意,任何企业的数据分析,都是基于对业务的理解进行的。一开始入行的分析师,容易陷入唯工具论,认为学好了数据分析工具就是万能的,笔者也曾陷入过这样的思维中,后来在数据圈和别人组队学习R语言时,我的组长lowwill开始纠正我的想法,那时候,我是已经把《R in Action》从头翻看了两遍啊。最后才发现,学了那么久的工具,竟然一点都不理解某些深层次的统计方法和业务知识。

每一次的数据分析,都应该是“三分工具七分业务“。就是说,业务理解应该占至少70%以上,工具只是辅助。不要一味地追求高逼格的数据分析工具,往往Excel就能解决的问题,

Go    2020-03-31 13:37:25    15    0    0

一 、new和make的定义

  func new(Type) *Type
  func make(t Type, size ...IntegerType) Type

其中Type代表某一个数据类型。

二 、两者的区别

2.1 返回值

从定义中可以看出,new返回的是指向Type的指针。 make直接返回的是Type类型值。

2.2 入参

new只有一个Type参数,Type可以是任意类型数据。 make可以有多个参数,其中第一个参数与new的参数相同,但是只能是slice,map,或者chan中的一种。对于不同类型,size参数说明如下:

  • 对于slice,第一个size表示长度,第二个size表示容量,且容量不能小于长度。如果省略第二个size,默认容量等于长度。
  • 对于map,会根据size大小分配资源,以足够存储size个元素。如果省略size,会默认分配一个小的起始size。
  • 对于chan,size表示缓冲区容量。如果省略size,channel为无缓冲channel。
Go    2020-03-31 13:33:35    10    0    0

简介

json格式可以算我们日常最常用的序列化格式之一了,Go语言作为一个由Google开发,号称互联网的C语言的语言,自然也对JSON格式支持很好。但是Go语言是个强类型语言,对格式要求极其严格而JSON格式虽然也有类型,但是并不稳定,Go语言在解析来源为非强类型语言时比如PHP等序列化的JSON时,经常遇到一些问题诸如字段类型变化导致无法正常解析的情况,导致服务不稳定。所以本篇的主要目的

  1. 就是挖掘Golang解析json的绝大部分能力
  2. 比较优雅的解决解析json时存在的各种问题
  3. 深入一下Golang解析json的过程
  • Golang解析JSON之Tag篇

  1. 一个结构体正常序列化过后是什么样的呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main
import (
    "encoding/json"
    "fmt"
)
 
// Product 商品信息
type Product struct {
    Name      string
    ProductID int64
    Number    int
    Price     float64
    IsOnSale  bool
}
 
func main() {
    p := &Product{}
    p.Name = "Xiao mi 6"
    p.IsOnSale = true
    p.Number = 10000
    p.Price = 2499.00
    p.ProductID = 1
    data, _ := json.Marshal(p)
    fmt.Println(string(data))
}
 
 
//结果
{"Name":"Xiao mi 6","ProductID":1,"Number":10000,"Price":2499,"IsOnSale":true}

  2. 何为Tag,tag就是标签,给结构体的每个字段打上一个标签,标签冒号前是类型,后面是标签名

1
2
3
4
5
6
7
8
9
10
11
// Product _
type Product struct {
    Name      string  `json:"name"`
    ProductID int64   `json:"-"// 表示不进行序列化
    Number    int
数据分析    2020-03-31 09:47:23    25    0    0

近几年,大数据被炒的火热。这股热度,让许多人都以为,做数据分析很吃香。随便上招聘网站看看,就会看到各种高薪招聘数据分析人员,让人诱惑不止。而后,各种公众号、学习平台,都开始吹数据分析的前路有多么广阔,企业对数据分析师的缺口逐年扩大,供不应求。导致很多适合或者不适合从事数据分析工作的人,都想要来分一杯羹。

我们用数据分析中常用的分析理论来谈这个问题—5W2H

(1) What:想从事数据分析工作

如下所示,是我之前搜集到的对各等级分析师的一个能力总结。


除了数据分析师,大部分人的工作其实都会接触到数据分析,只不过他们的分析工作都是比较简单的分析,相当于初级数据分析师的水平。而若是想进一步进阶到中级数据分析师,就会比较困难了,会迅速筛掉一大波打酱油的数据从业人员。

也就是说,我们应该明确自己的职业规划。如果你想从事数据分析工作,首先你应该考虑是从事专职的数据分析,还是类似于运营、市场等会经常进行数据分析的工作。它们的区别在于:

在初级阶段,专职的数据分析师基本相当于打杂,是作为数据专员一样的存在,名副其实的表哥表姐,工作内容枯燥,而运营等人员,会更多触及到业务以及业务的施行,工作内容丰富,更容易快速进入管理层。

到了中级阶段,由于专业知识技能、经验等的缺乏,很多初级数据分析师会被淘汰掉,而未被淘汰掉的数据分析师,就开始有了相对较好的薪资待遇和发展空间。而运营等人员,通常很难突然转到来做中级数据分析师,他们缺乏对数据分析相关知识技能的深入理解,这个阶段,不是说你会用数据透视表看透数据就可以了,需要你深入挖掘数据。

到了高级阶段,数据分析师的薪资待遇又上了一个很大的台阶,已经算是中高端的才人了。而运营等人员,才开始筛掉一大波从业人员,最终留下的,也会获得很好的待遇。但到此来说,如果你想从事专职数据分析师,在前期就会遭遇到残酷的优胜劣汰,而若只是想从事会接触到日常数据分析工作的其它岗位,这种优胜劣汰会发生在后期。毕竟,简单的工作谁都会做,如果你没有一颗不断进取的心,很难在每一次的优胜劣汰中存活下去。

(2) Why:为什么想从事数据分析工作?

确定问题后,接下来就应该不带任何杂念地问问自己:你为什么想从事数据分析工作?是因为被高薪诱惑到了,还是觉得这一块发展空间很大,或者是觉得它特别高大上,或者是觉得自己特别适合数据工作,亦或是别的什么原因。无论什么原因,你都要清醒理智一点,对你得出的原因进行

12/155