1. 聚能聊>
  2. 话题详情

程序媛比码大赛 不秀美颜 秀代码

美国研究者分析了开源代码库Github 140万用户的数据。他们发现和男性相比,女性发送的“拉请求”(代码更新提议)更容易被接受。由数据上看,女性提交代码的通过率为78.6%,而男性的通过率仅为74.6%。

在中国程序媛中,他们的代码又有什么样的魅力,云效联合云栖社区、饿了么、钉钉、阿里云、天猫、口碑发起首届程序媛比码活动——不秀大长腿,秀高智商;不秀美图照,秀代码图,参与晒码互动游戏赢“83行代码”T恤!
111

视障工程师蔡勇斌和女朋友为83行代码T恤带盐照

虐完狗,我们继续说说这群女工程师的第83行代码及代码背后的故事:

有被代码耽误的钉钉吃货程序媛,写代码写到忘记吃饭的——采霜
她急需能把她从代码中叫醒去吃饭的小伙伴,赶紧勾搭;
http://yq.aliyun.com/roundtable/126499/answer/170319#visit170319
有以代码为乐的饿了么大前端打(bei)杂(guo)工程师——敖天羽
http://yq.aliyun.com/roundtable/126499/answer/170299#visit170299
还有全栈美女工程师——前端后端一锅端的——墨瑜女神
http://yq.aliyun.com/roundtable/126499/answer/170316#visit170316
还有阿里云活好码赞,像男人一样活着的技术专家小姐姐——清宵http://yq.aliyun.com/roundtable/126499/answer/170296#visit170296
和天猫Java程序媛,happy(被)来(逼)的——采月
http://yq.aliyun.com/roundtable/126499/answer/170354#visit170354
阿里口碑 搜索推荐组的JAVA女工程师——妍霏
http://yq.aliyun.com/roundtable/126499/answer/214059#visit214059
阿里口碑基础平台技术部的工程师-衔远,一个技术与马甲线并存的mm
http://yq.aliyun.com/roundtable/126499/answer/248798#visit248798

云栖社区聚能聊专家,具有知性温婉气质的——海洋的云
http://yq.aliyun.com/roundtable/126499/answer/170290#visit170290
福州市五佰网络科技有限公司的Java女工程师——江小白太白
http://yq.aliyun.com/roundtable/126499/answer/189332#visit189332
在下*的程序媛——cn_suqingnian
http://yq.aliyun.com/roundtable/126499/answer/170309#visit170309
交通银行的前端女工程师——昆0830
http://yq.aliyun.com/roundtable/126499/answer/201979#visit201979

ATA_750x378

互动方式

你可以参与互动点评,我们会优选精彩点评赠送“向代码致敬”T恤;
你可以邀请身边的女工程师加入我们的程序媛比码大赛,并署上邀请理由;
你也可以推荐一段女程序员写的优秀代码,并说明推荐这段代码的理由;
如果你就是程序媛,直接晒一段代码,更欢迎秀个人写代码的专注照;

晒码形式参考

我是xx公司的xx女工程师xx
(照片可以有)
我的第83行代码来自xx一段代码
(一定要有代码哦)

活动福利

1、点评程序媛的代码,赢取“向代码致敬”T恤;
2、程序媛晒码,赢取“向代码致敬”T恤/淘宝心选提供的香薰片;
3、Super Coder大奖:网友和大牛共同评选点评,其中点赞互动人数最高的5位程序媛的将获得阿里巴巴颁发的Super Coder奖杯;该段参赛代码也将被印制在淘宝心选特指的程序媛定制香薰片上;参赛者有机会参加9月份杭州云栖大会极客派活动与更多的技术开发者及技术大牛见面互动。

83行代码

很多人不理解83行代码是什么意思?
83行代码是我们程序员的一种信念,是一份敬畏
可以去向代码致敬,寻找你的第83行探寻你的答案

云效

云效,一站式企业协同研发云,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具支撑,详情点击https://www.aliyun.com/product/rdc

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    83行代码限量T恤 x 20

  • 奖品二

    蓝牙手环 x 10

385个回答

22

清宵 复制链接去分享

我是阿里云函数计算团队技术专家清宵,用动图撩一下大家吧~~大家好!

IMG_3733

我的第83行代码来自这个简单的Life模型,非项目非社区贡献,纯业余时间自娱自乐。
看了《药神》之后,对人生的感悟加深。回来没有写什么观后感,却是随便写了一段代码,构造一个极其简单的人生模型,算作总结思考了。
人生如码,以梦为马。珍惜所爱,精彩过好每一天!

package main

import (
    "fmt"
    "math/rand"
    "sync"
    "time"
)

var (
    r = rand.New(rand.NewSource(time.Now().Unix()))

    disasterSignal = make(chan string)
    accidentSignal = make(chan string)
    diseaseSignal  = make(chan string)
)

// Element : abstract factor which life consisted by
type Element interface {
    Improve()
    Depress()
    Stable()
    Enable() bool
    BeAbleHandle(event string) bool
}

type Activity interface {
    IsSuitable(life *Life) bool
    Do(life *Life)
    Interrupted()
}

type Life struct {
    Sex string
    Age time.Duration

    Health       Element
    Knowledge    Element
    Ability      Element
    RelationShip Element
    Wealth       Element
    OtherElement Element

    Work        Activity
    Study       Activity
    Exercise    Activity
    Entertain   Activity
    Rest        Activity
    OtherActive Activity

    isDoings []Activity

    vitalitySignal chan struct{}
    NaturalDeath   chan struct{}
}

func (f *Life) Join(oppositeSex *Life, love, family Element) (*Life, error) {
    if !love.Enable() || !family.Enable() || f.Sex == oppositeSex.Sex {
        return nil, fmt.Errorf("Sorry, no boby should be borned!")
    }

    boby := &Life{
        Sex:            []string{"male", "female"}[r.Intn(2)],
        Age:            0,
        isDoings:       []Activity{},
        NaturalDeath:   make(chan struct{}),
        vitalitySignal: make(chan struct{}),
    }

    return boby, nil
}

func (f *Life) Run() {
    go ExternalEndanger(f)
    // time elapses day by day
    for {
        startTime := time.Now().UTC()
        wg := &sync.WaitGroup{}

        for _, active := range []Activity{f.Study, f.Work, f.Entertain, f.Exercise, f.Rest, f.OtherActive} {
            if f.SuitableFor(active) {
                wg.Add(1)
                go func(activity Activity) {
                    defer wg.Wait()
                    activity.Do(f)
                }(active)
            }
        }

        select {
        case <-f.NaturalDeath:
            f.Close()
            fmt.Println("Life is short, make it colourful and cherish the love around all!")
            return
        case <-f.vitalitySignal:
            fmt.Println("记得买保险!")
            return
        case <-time.After(24*time.Hour - time.Now().UTC().Sub(startTime)):
            fmt.Println("One day went by...")
        }
        //wg.Wait()
        f.Age += 24 * time.Hour
    }

    fmt.Println("Goodbye, life!")
}

func (f *Life) Somehow() {
    // happened something to effect one to reach some life stage
}

func (f *Life) SuitableFor(active Activity) bool {
    return active.IsSuitable(f)
}

func (f *Life) Survive(event string) bool {
    for _, e := range []Element{f.Health, f.Knowledge, f.Ability, f.RelationShip, f.Wealth, f.OtherElement} {
        if !e.BeAbleHandle(event) {
            return false
        }
    }

    return true
}

func (f *Life) Close() {
    for _, doing := range f.isDoings {
        doing.Interrupted()
    }

    close(f.vitalitySignal)
}

var female = LifeFromSomeWhere("female")
var male = LifeFromSomeWhere("male")

func ExternalEndanger(f *Life) {
    for {
        event := ""
        select {
        case event = <-diseaseSignal:
        case event = <-disasterSignal:
        case event = <-accidentSignal:
        }

        if !f.Survive(event) {
            f.Close()
            return
        }
    }
}

func LifeFromSomeWhere(sex string) *Life {
    life := &Life{Sex: sex}
    life.Somehow()

    return life
}

func main() {
    // I don't know the question of "鸡生蛋 or 蛋生鸡"...
    newLife, err := female.Join(male, ElementImp{Type: "love"}, ElementImp{Type: "family"})
    if err == nil {
        newLife.Run()
    }
}
不靠谱贝贝 回复

被撩了

云效鼓励师 回复

被代码撩了

1418809248868182 回复

爱上小姐姐了

清宵 回复

我也爱你们~

50294509 回复

厉害

韩俊强 回复

不得了不得了~ 代码逻辑清晰, 干净利落, 高内聚低耦合, 遵守了代码的设计原则, 给美女程序猿点个赞!💕

rockuw 回复

不明觉厉!

云效鼓励师 回复

不得了不得了,评论有模有样,遵守了本话题的互动规则,给帅锅点个赞,并赠送一件T恤,请邮件回复你的邮寄地址、姓名、手机号、T恤尺寸及你的阿里云昵称,邮件回复给小编:danfeng.adf@alibaba-inc.com

scorpion 回复

能写代码的妹子不多,能写golang的妹子就更少了!👍👍👍

云效鼓励师 回复

谁能给翻译下这段代码~总感觉里面有人生大彩蛋

rockuw1 回复

妹子可以帮你review代码哦,函数计算欢迎你!!

饭娱咖啡 回复

我觉得这段代码比较有意思的地方在于,以代码为思考的工具来模拟人生。
世人用诗词来感叹人生,用哲学来思考人生,而我们用代码来模拟人生。

李沃晟 回复

小姐姐超级好看~

_柳下 回复

这段代码构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的代码功底。码上火,码上火,码上火!!!!

shuaichang 回复

vitalitySignal买保险可以作为软广植入,招商引资吧

1573481126487360 回复

厉害,然后留下了没技术的泪水

serverless 回复

函数计算果然人才济济~~

1585714933323637 回复

不要被这个妹子的外表所迷惑,写起代码来心狠手辣

// 狂吃内存
// event: {"memory": 129}
// result: 不能有正常的返回(预期UDF吃空内存之后就挂了)
// status: 不知道
func handler(w http.ResponseWriter, r *http.Request) {
    body, err := ioutil.ReadAll(r.Body)
    if err != nil {
        log.Println("read body failed:", err)
        w.WriteHeader(500)
        return
    }
    res := Event{}
    err = json.Unmarshal(body, &res)
    if err != nil {
        log.Println("json parse failed:", err)
        w.WriteHeader(500)
        return
    }
    log.Print("get memory:", res)
    consume := make(map[int64]int64)
    for ix := 0; ix < res.Memory*1024*1024/16; ix++ {
        consume[int64(ix)] = int64(ix)
        if 16*len(consume)/(1024*1024) == 0 || 16*len(consume) > 128*1024*1024 {
            log.Printf("memory:%d", 16*len(consume))
        }
    }

    fmt.Fprintf(w, "bad result!!you should not meet me! UDF should go die!!!")
}
likaiwalkman 回复

第一眼看到了Sex还以为代码里有什么段子😂性别请用gender,不客气。。。😂

清宵 回复

谢谢建议。gender比较书面,代码用于自娱自乐,比较随性,没有斟酌用词上的口语化和书面化,仅供大家赏玩吧,纯当添加娱乐色彩了。

阿啦卜 回复

小姐姐好

1944169325375125 回复

刚看到动图的时候,心里想
“切,这么漂亮的小姐姐,估计代码不能看。”
可往下看代码的时候,却被里面的话语,感动了。似乎80行的故事,就为了那三行情诗:
newLife, err := female.Join(male, ElementImp{Type: "love"}, ElementImp{Type: "family"})
if err != nil {
newLife.Run()

骐源 回复

什么语言?也不多加几句注释,欺负小白吗?

清宵 回复
回复@骐源:

golang~~

清宵 回复

代码还不完整~人生的代码一个人写不完,希望能得一人,一起写,写一生~~

清宵 回复

您好~

骐源 回复
回复@清宵:

好有诗情画意,单身的好青年在哪里?速来报道!

韩俊强 回复

😁

fatestart 回复

golang就是简洁啊

hea 回复

if err != nil {

    newLife.Run()
}

有异常的人生才能开始跑吗 😀

hea 回复

有异常的人生才能开始跑吗 😀

if err != nil {

newLife.Run()

}

opsarno 回复

很难想象,这会突然醒了,看到这里仿佛看到了人生。

zyz0323 回复

go?感觉还是Java好写

chen1002wenli 回复

第一次从代码中看到了人生的感觉~

chen1002wenli 回复

默默的把bug修复了,一运行 就告知 投胎投错了~滑稽

developlee 回复

代码写的美 ,人长得好看,这样的小姐姐给我来一打。。。

mingo333 回复

高手,收我为徒吧?我崇拜你。👍

mingo333 回复

👍👍👍

mingo333 回复

👍👍👍

清宵 回复
回复@hea:

有理,已经fix

jerhe 回复

被撩到了

jerhe 回复

被撩到了

jerhe 回复

被撩到了

1992125338991598 回复

看不懂

老月亮 回复

这是golang语言啊,

老月亮 回复

作为一个golang死忠粉,顶起来

啊花花草草 回复

你能加我好友吗?qq:328204086

1755802798325712 回复

有多少人脱发的举个手。。。

1728812356059799 回复

看不懂 呵呵

清宵 回复
回复@mingo333:

收下你了~~😝

jeff.w@87 回复

这是什么语言?

贤维 回复

可以考虑生孩子的延续

_eli 回复

这代码有点意思

1670908391546620 回复

赞赞 拜师

cross__ 回复

厉害了~膜拜中

天天向上康 回复

厉害

mhtqq 回复

看看

bbskkb 回复

突然有了学习的动力了呢

wlandcx 回复

哈哈,在成都一次培训会上见过

moon123456 回复

突然找到了我的人生目标

加新 回复

看不懂 呵呵看不懂 呵呵看不懂 呵呵看不懂 呵呵

大财主 回复

发的图片都没有代码来的精彩。
赞!

hellonewword 回复

我是不是来晚了啊

royal888 回复

我看到了1024一定是个老司机

海海开心 回复

很难想象

卓上一品 回复

拜倒~

攸宁 回复

超级厉害啊

捏死小日本 回复

这就是传说中的天书吧😄

淡而无味 回复

我的第83行代码来自这个简单的Life模型,非项目非社区贡献,纯业余时间自娱自乐。
看了《药神》之后,对人生的感悟加深。回来没有写什么观后感,却是随便写了一段代码,构造一个极其简单的人生模型,算作总结思考了。
人生如码,以梦为马。珍惜所爱,精彩过好每一天!

发迹网 回复

写的真好,先赞!

hiat 回复

厉害厉害,妹子写代码最有味道

henry3 回复

不得了不得了~ 代码逻辑清晰, 干净利落, 高内聚低耦合, 遵守了代码的设计原则, 给美女程序猿点个赞!💕

拼命三郎ol 回复

码品见人品,妹子文武兼备啊!

python_lz 回复

life = [ 'love','work']
for you in life:

if you ==  'love':
   return you = 'NO money'
elif you == 'work':
   return you = 'NO love and no family and no anything'

print('so love or work this a question!')

yangbinchen 回复

厉害了妹子!

评论
12

江小白太白 已获得83行代码限量T恤 复制链接去分享

我是福州市五佰网络科技有限公司的Java女工程师江小白
screenshot
我的第83行代码来自添加员工信息之前在Service中校验是否已经存在相同的手机号的一段代码
screenshot
悄悄说一句,那个大名鼎鼎的黄*刀是我的顶头上司,我们一起在福建从事机动车驾驶员培训信息化建设的工作,他那人很变态,老喜欢审查别人编码的质量,一小点不规范,就让你改改改,在挣扎中求生。

黄一刀 回复

代码规范易读、逻辑严谨清晰、异常保护处理,不错,真心不错!总于能上台面了。

不靠谱贝贝 回复

哈哈哈,长江后浪推前浪

骐源 回复

哈哈哈

聚小编 回复

欢迎领导视察检阅~~

莫与 回复

看不懂呀,持久层用的hibernate?返回提示语用的运行时异常?

翟至味 回复

if多了点,函数式编程可以了解一下,还有异常处理可以改进一下

mingo333 回复

你好!你是福州人吗,还是在福州上班?

江小白太白 回复
回复@mingo333:

不是福州人,在福州软件园上班

江小白太白 回复

感谢大佬指点江山。

江小白太白 回复
回复@莫与:

ibatis

江小白太白 回复

前浪死在沙滩上,哈哈哈哈哈哈哈哈哈哈哈哈哈。。。

江小白太白 回复

感谢领导做出如此高的评价,假如我拿了奖品,会分你摸一下的。

黄一刀 回复
回复@骐源:

兄台,见笑见笑

黄一刀 回复

立正,敬礼。

1755802798325712 回复

领导来视察了,哈哈。代码整体很规范,给个赞~~

1728812356059799 回复

高手如云 给个赞~

24k-xf 回复

为啥同一样的事情要搞两遍了

小川游鱼 回复

好厉害的女程序媛

楼中楼 回复

做着自己喜欢的事情,有时就算被批评感觉都能学到东西

蕾女心经 回复

逻辑是不错的啊

蕾女心经 回复

厉害的女人

梅岭笛子 回复

我是小白。

库管员 回复

围观

评论
5

海洋的云 已获得83行代码限量T恤 复制链接去分享

平时习惯于用Jupyter Notebook写代码,以至于很多代码像是这样:

# 分块计算缺失程度(23块)
block_list = [1,5,6,20,24,28,32,36,48,52,54,64,72,76,102,107,111,155,161,166,211,254,278,298]

for i in tqdm(range(len(block_list)-1)):
    tmp_df = train_test.iloc[:,block_list[i]-1:block_list[i+1]-1]
    print(tmp_df.columns)
    tmp_df_T = tmp_df.T
    tmp_df['count'] = tmp_df_T.count()
    train_test['count_f' + str(block_list[i]) + '_f' +str(block_list[i+1])] = tmp_df['count']
    train_test['count_label_f' + str(block_list[i]) + '_f' +str(block_list[i+1]-1)]=np.where(train_test['count_f' + str(block_list[i]) + '_f' +str(block_list[i+1])] > 0,0,1)

# 计算占比(基于date)
for i in tqdm(r_list):
    df_dratio = pd.DataFrame()
    for j in date_list:
        df_tmp = train_test[train_test['date'] == j]
        f_ratio = pd.DataFrame(df_tmp[i].value_counts())
        f_ratio['date'] = j
        f_ratio[i + '_rcount'] = f_ratio[i]
        f_ratio[i + '_ratio'] = f_ratio[i]/len(df_tmp)
        f_ratio[i] = f_ratio.index
        f_ratio = f_ratio.reset_index(drop = True)
        df_dratio = pd.concat([df_dratio, f_ratio], axis = 0)
        df_dratio = df_dratio.reset_index(drop = True)
    train_test = train_test.merge(df_dratio,on = ['date',i],how = 'left')

比较喜欢的一段代码是这样:

import copy
def cal_all_altcol_1(col_, labelcol = None, error_corr = False):  
    
#     if labelcol is not None:
#         print("pcsing by groups")
        
    col = copy.deepcopy(col_)
    colname = col.columns[0]

    if(error_corr == True):
        if labelcol is not None:
            mean = pd.DataFrame(calmean(col, labelcol))
            alt_col = [col, 1 / col, col-mean, np.fabs(col-mean)]
            alt_col_name = [colname + "_X", colname + "_1/X", colname + "_Xerr", colname + "_Xerr_abs"]
        else:
            mean = calmean(col, labelcol)
            alt_col = [col, 1 / col, np.fabs(col-mean)]
            alt_col_name = [colname + "_X", colname + "_1/X", colname + "_Xerr_abs"]
    elif(error_corr == False):
        alt_col = [col , 1 / col]
        alt_col_name = [colname + "_X", colname + "_1/X"]
    
    alt_list = pd.concat(alt_col, axis = 1)
    alt_list.columns = alt_col_name
    return alt_list

def cal_all_altcol_1_base(col_, labelcol = None, error_corr = False):  
    # 只取正负列
    
#     if labelcol is not None:
#         print("pcsing by groups")
        
    col = copy.deepcopy(col_)
    colname = col.columns[0]
    
    if(error_corr == True):
        if labelcol is not None:
            mean = pd.DataFrame(calmean(col, labelcol))
            alt_col = [col, np.fabs(col-mean), col-mean, ]
            alt_col_name = [colname + "_X", colname + "_Xerr_abs", colname + "_Xerr"]
        else:
            mean = pd.DataFrame(calmean(col, labelcol))
            print(mean)
            alt_col = [col, np.fabs(col-mean)]
            alt_col_name = [colname + "_X", colname + "_Xerr_abs"]
    elif(error_corr == False):
        alt_col = [col]
        alt_col_name = [colname + "_X"]
    
    alt_list = pd.concat(alt_col, axis = 1)
#     print (alt_list)
    alt_list.columns = alt_col_name
    return alt_list


def cal_all_altcol_2(col_i, col_j, labelcol = None, error_corr = False):
    
#     if labelcol is not None:
#         print("pcsing by groups")
    coli = copy.deepcopy(col_i)
    colj = copy.deepcopy(col_j)
    coliname = coli.columns[0]
    coljname = colj.columns[0]
    colbet = coliname + "_" + coljname
    coli.columns, colj.columns = [colbet], [colbet] # 需要把列名统一不然不能直接减
    
    Plus = coli + colj
    Minus = coli - colj
    Multiply = coli * colj
    Divide_1 = coli / colj
    Divide_2 = colj / coli
    everynum_perpart = 5
    
    if(error_corr == True):
        P_mean = pd.DataFrame(calmean(Plus, labelcol))
        Mi_mean = pd.DataFrame(calmean(Minus, labelcol))
        Mu_mean = pd.DataFrame(calmean(Multiply, labelcol))
        D1_mean = pd.DataFrame(calmean(Divide_1, labelcol))
        D2_mean = pd.DataFrame(calmean(Divide_2, labelcol))
        if labelcol is not None:
            alt_col =  [Plus, Minus, Multiply, Divide_1, Divide_2,
                        np.fabs(Plus - P_mean), np.fabs(Minus - Mi_mean), np.fabs(Multiply - Mu_mean),
                        np.fabs(Divide_1 - D1_mean), np.fabs(Divide_2 - D2_mean),
                        Plus - P_mean, Minus - Mi_mean, Multiply - Mu_mean,Divide_1 - D1_mean, Divide_2 - D2_mean]
            alt_col_name = [colbet + "_X+Y", colbet + "_X-Y", colbet + "_X*Y", colbet + "_X/Y", colbet + "_Y/X",
                            colbet + "_X+Yerr_abs", colbet + "_X-Yerr_abs", colbet + "_X*Yerr_abs",
                            colbet + "_X/Yerr_abs", colbet + "_Y/Xerr_abs",
                            colbet + "_X+Yerr", colbet + "_X-Yerr", colbet + "_X*Yerr",
                            colbet + "_X/Yerr", colbet + "_Y/Xerr",]
        elif labelcol is None:
            alt_col = [Plus, Minus, Multiply, Divide_1, Divide_2, 
                       np.fabs(Plus - P_mean), np.fabs(Minus - Mi_mean), np.fabs(Multiply - Mu_mean),
                       np.fabs(Divide_1 - D1_mean), np.fabs(Divide_2 - D2_mean)]
            alt_col_name = [colbet + "_X+Y", colbet + "_X-Y", colbet + "_X*Y", colbet + "_X/Y", colbet + "_Y/X",
                            colbet + "_X+Yerr_abs", colbet + "_X-Yerr_abs", colbet + "_X*Yerr_abs",
                            colbet + "_X/Yerr_abs", colbet + "_Y/Xerr_abs"]
    elif(error_corr == False):
        alt_col = [Plus, Minus, Multiply, Divide_1, Divide_2]
        alt_col_name = [colbet + "_X+Y", colbet + "_X-Y", colbet + "_X*Y", colbet + "_X/Y", colbet + "_Y/X"]
    
    alt_list = pd.concat(alt_col, axis = 1)
    alt_list.columns = alt_col_name
#     print(alt_list)
    return alt_list
# def cal_all_alt2tol(coli, colj, )
# cal_all_altcol_2(test, test2)
微wx笑 回复

照片可以有

不靠谱贝贝 回复

给你点赞

韩俊强 回复

爆个照~

海洋的云 回复

照片地址:U2FsdGVkX1/rDdJ6eOZMr35KrgQq40iFFNRpozyCMmxyoMunAwoMGncitwpufyBe
J6UGm80wZ/Pru5/H/Ob7wz+zrtQrqD6QrwDM0R7d+L5P8MbaPiaZmM14umlvAgyW(请自行解密~~~)

饭娱咖啡 回复
饭娱咖啡 回复

真不好意思。手一抖索,就解出来了。尴尬

云效鼓励师 回复

谢谢😝

海洋的云 回复

o(╥﹏╥)o

聚小编 回复

爆照爆照!

键盘上跳舞 回复

宽慰汝之,幸甚

jijunjian 回复

没看懂,爆照爆照吧

掷python于你 回复

居然是python耶………

海洋的云 回复

小编,o(╥﹏╥)o

海洋的云 回复

颇受汝之关照,幸甚至哉

海洋的云 回复

对耶~~~

yaohong 回复

404

小石人丶 回复

这波操作很6

sr_zhang 回复

定个赞 666呀

yunganlong 回复

有对象了吗

评论
10

敖天羽 复制链接去分享

大家好,我是饿了么大前端的打杂工程师敖天羽。

照片:d5045073e258563e2b62eed24605cd60

别的小姐姐们晒得代码都太厉害了……只有我是来搞笑的,前年情人节的单身狗翻译器代码,两块钱你买不了吃亏,两块钱你买不了上当:

const pinyin = require('pinyin');
const program = require('commander');

const translate = require('./translator');

program
  .version('0.0.5')
  .description('单身狗汪化翻译机,把你的话都变成汪星语')
  .option('-e --emoj', '使用emoj来替代汉字汪')
  .option('-i --stdin', '传输标准输入流文本而不是命令行参数')
  .option('-c --clip', '自动复制到剪贴板(文本过大慎用)')
  .parse(process.argv);

const word = !program.emoj;
const clip = program.clip;

if (program.stdin) {
  process.stdin.setEncoding('utf-8');

  process.stdin.on('readable', () => {
    let chunk = process.stdin.read();
    if (chunk !== null) {
      translate(chunk, word, clip);
    }
  });
} else {
  if (program.args.length > 0) {
    translate(program.args[0], word, clip);
    process.stdout.write(`\n`);
  }
  else
    program.outputHelp();
}

对了,新晋花名「天汪」,请多多指教汪。(路过,给各位小姐姐们端茶送水)

云效鼓励师 回复

写代码的妹子果然各个都是戏精

yhspy 回复

给天哥疯狂打电话!

50294509 回复

天哥牛B

饭娱咖啡 回复

如果我没看错的话,pinyin,用中文翻译过来就是,拼音。xiaoku

zyh!!! 回复

优秀

opsarno 回复

囧,为什么你这么突出。

chen1002wenli 回复

被阿里收购了连花名也要搞起。。

musiq 回复

six six six

hiekay 回复

2*3 ;7-1;1+5;

评论
5

tuntunmo 复制链接去分享

我是云效的全栈开发女工程师,朱默,花名:墨瑜。

据说认真工作的程序员魅力值加10:
IMG_5001
我的第83行代码来自云效RDC上某一功能的代码, 猜猜是哪个功能:

public class MysqlLockBuilder {
    private DataSource dataSource;
    private String mysqlTableName;

    private LockDataAccessor lockDataAccessor;

    private LockStateAccessor lockStateAccessor;
    private String defaultClientId;

    public void init() throws SQLException {
        MysqlLockDataAccessor mysqlLockDataAccessor = new MysqlLockDataAccessor();
        mysqlLockDataAccessor.setMysqlTableName(mysqlTableName);
        mysqlLockDataAccessor.setConnection(dataSource.getConnection());
        lockDataAccessor = mysqlLockDataAccessor;

        defaultClientId = IP.getIpAddr();

        lockStateAccessor = buildMysqlLockStateAccessor();
    }

    private LockStateAccessor buildMysqlLockStateAccessor() throws SQLException {
        MysqlLockStateAccessor lockStateAccessor = new MysqlLockStateAccessor();
        lockStateAccessor.setMysqlTableName(mysqlTableName);
        lockStateAccessor.setConnection(dataSource.getConnection());
        lockStateAccessor.init();
        return lockStateAccessor;
    }

    public String getDefaultClientId() {
        return defaultClientId;
    }

    public void setDefaultClientId(String defaultClientId) {
        this.defaultClientId = defaultClientId;
    }

    public TimedLock lockForAWhile(String lockId, int timeout) throws LockAccessException {
        TimedLock lock = new TimedLock(lockId, defaultClientId, timeout);
        try {
            lock.setLockStateAccessor(buildMysqlLockStateAccessor());
            lock(lock);
            return lock;
        } catch (SQLException e){
            lock.close();
            throw new LockAccessException(e);
        } catch (LockAccessException e) {
            lock.close();
            throw e;
        }
    }

    public ScopedLock lockWhenAlive(String lockId) throws LockAccessException {
        ScopedLock lock = new ScopedLock(lockId, defaultClientId);
        try {
            lock.setLockStateAccessor(buildMysqlLockStateAccessor());
            lock(lock);
            return lock;
        } catch (SQLException e){
            lock.close();
            throw new LockAccessException(e);
        } catch (LockAccessException e){
            lock.close();
            throw e;
        }
    }

    /**
     * 指定clientId,加时间锁
     * @param lockId: 锁名称
     * @param timeout: 加锁时长
     * @param clientId: 锁的持有者
     * @return
     * @throws LockAccessException
     */
    public TimedLock lockForAWhileByClient(String lockId, int timeout, String clientId) throws LockAccessException {
        TimedLock lock = new TimedLock(lockId, clientId, timeout);
        try {
            LockStateAccessor timeLockStateAccessor = buildMysqlLockStateAccessor();
            lock.setLockStateAccessor(timeLockStateAccessor);
            lock(lock);
            return lock;
        } catch (SQLException e){
            lock.close();
            throw new LockAccessException(e);
        } catch (LockAccessException e) {
            lock.close();
            throw e;
        }
    }

    /**
     * 刷新时间锁,延长加锁时长
     * @param lockingContext
     * @return
     * @throws LockAccessException
     */
    public Boolean refreshTimeLockByContext(LockingContext lockingContext) throws LockAccessException {
        if(lockStateAccessor == null){
            try {
                lockStateAccessor = buildMysqlLockStateAccessor();
            }catch (SQLException e) {
                throw new LockAccessException(e);
            }
        }

        return lockStateAccessor.refreshTimeLock(lockingContext);
    }

    /**
     * 手动解锁
     * @param lockingContext
     * @return
     * @throws LockAccessException
     */
    public Boolean unlockTimeLockByContext(LockingContext lockingContext) throws LockAccessException {
        if(lockStateAccessor == null){
            try {
                lockStateAccessor = buildMysqlLockStateAccessor();
            }catch (SQLException e) {
                throw new LockAccessException(e);
            }
        }

        return lockStateAccessor.timedUnlock(lockingContext);
    }

    /**
     * 根据锁id,获取时间锁信息
     * @param lockId
     * @return
     * @throws LockAccessException
     */
    public LockingInfo getTimedLockInfo(String lockId) throws LockAccessException{
        return lockStateAccessor.getTimedLockingInfo(lockId);
    }

    private void lock(Lockable lock) throws LockAccessException {
        try {
            lockDataAccessor.createIfNotPresent(lock.id());

            boolean locked = lock.lock();
            if (!locked) {
                throw new LockAccessException("Lock has been occupied");
            }
        } catch (Exception e) {
            throw new LockAccessException(e);
        }
    }

    public String getMysqlTableName() {
        return mysqlTableName;
    }

    public void setMysqlTableName(String mysqlTableName) {
        this.mysqlTableName = mysqlTableName;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public DataSource getDataSource() {
        return dataSource;
    }

}
雷侠 回复

长的又好看,技术又厉害。

流下来没技术的眼泪。

骐源 回复

墨玉!这名字好!

1573481126487360 回复

点个赞

饭娱咖啡 回复

加锁解锁功能。

zhuzhiyi1211 回复

疯狂打call

聚小编 回复

哇,社区里原来潜伏了这么多美女程序猿内!~

韩俊强 回复

首先,人好看👍;
代码: 从简短的代码看出遵循了单一职责及开闭原则; 整体来看使用的是结构型模式下典型的Facade模式, 这种设计外解耦, 松耦合, 能够预防复杂业务带来的风险扩散, 同时一个子系统可以有多个门面, 门面不参与系统的逻辑; 建议:如果后面新增较多的解锁类型, 建议使用Decoretor 组合装饰器, 此模式优于Facade, 运行时可增减职责, 可解决类膨胀, 接口较一致且能保持 compoent 的简单性。 暂时看到这么多, 如有错误认识, 还请指教。😁

opsarno 回复

看到阿里同学们的代码,我开始想自己的花名了。

莫与 回复

完全看不懂,太厉害了

chen1002wenli 回复

看照片看不出是在认真工作,是在认真做手工活放松吗?

ddddyy 回复

666

大财主 回复

看代码可见有在认真工作。

放眼未来 回复

厉害

评论
3

昆0830 已获得蓝牙手环 复制链接去分享

我是交通银行的前端女工程师,
我的第83行代码来自一段爬取指定用户评论区的粉丝信息然后分析并画出用户画像的项目,很好玩。

导入所需库

import json
import time
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import squarify
import requests
from matplotlib.patches import Polygon
from mpl_toolkits.basemap import Basemap
from matplotlib.collections import PatchCollection

获取每条微博评论的url参数

def get_comment_parameter():

url = 'https://m.weibo.cn/api/container/getIndex?uid=1773294041&luicode=10000011&lfid=100103type%3D1%26q%3D%E7%8E%8B%E8%8F%8A&\
       featurecode=20000320&type=uid&value=1773294041&containerid=1076031773294041'

c_r = requests.get(url)

for i in range(2,11):
    c_parameter = (json.loads(c_r.text)["data"]["cards"][i]["mblog"]["id"])
    comment_parameter.append(c_parameter)
return comment_parameter

if name == "__main__":


comment_parameter = []#用来存放微博url参数
comment_url = []#用来存放微博url
user_id = []#用来存放user_id
comment = []#用来存放评论
containerid = []#用来存放containerid
feature = []#用来存放用户信息
id_lose = []#用来存放访问不成功的user_id

get_comment_parameter()

#获取每条微博评论url
c_url_base = 'https://m.weibo.cn/api/comments/show?id='
for parameter in comment_parameter:
    for page in range(1,101):#提前知道每条微博只可抓取前100页评论
        c_url = c_url_base + str(parameter) + "&page=" + str(page)
        comment_url.append(c_url)

#获取每个url下的user_id以及评论
for url in comment_url:
    u_c_r = requests.get(url)
    try:
        for m in range(0,9):#提前知道每个url会包含9条用户信息
            one_id = json.loads(u_c_r.text)["data"]["data"][m]["user"]["id"]
            user_id.append(one_id)
            one_comment = json.loads(u_c_r.text)["data"]["data"][m]["text"]
            comment.append(one_comment)
    except:
        pass
    

#获取每个user对应的containerid
user_base_url = "https://m.weibo.cn/api/container/getIndex?type=uid&value="
for id in set(user_id):#需要对user_id去重
    containerid_url = user_base_url + str(id)
    try:
        con_r = requests.get(containerid_url)
        one_containerid = json.loads(con_r.text)["data"]['tabsInfo']['tabs'][0]["containerid"]
        containerid.append(one_containerid)
    except:
        containerid.append(0)
        
#获取每个user_id对应的基本信息
#这里需要设置cookie和headers模拟请求
user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"
headers = {"User-Agent":user_agent}
m = 1
for num in zip(user_id,containerid):
    url = "https://m.weibo.cn/api/container/getIndex?uid="+str(num[0])+"&luicode=10000011&lfid=100103type%3D1%26q%3D&featurecode=20000320&type=uid&value="+str(num[0])+"&containerid="+str(num[1])
    try:
        r = requests.get(url,headers = headers,cookies = cookie)
        feature.append(json.loads(r.text)["data"]["cards"][1]["card_group"][1]["item_content"].split("  "))
        print("成功第{}条".format(m))
        m = m + 1
        time.sleep(1)
    except:
        id_lose.append(num[0])

#将featrue建立成DataFrame结构便于后续分析
user_info = pd.DataFrame(feature,columns = ["性别","年龄","星座","国家城市"])

工作两年,不喜欢化妆,已有男朋友,哈哈~
_20180721085325

不靠谱贝贝 回复

小姐姐留下个人介绍和照片吧

chen1002wenli 回复

涂点口红就赞啦

不靠谱贝贝 回复

美女美女

云效鼓励师 回复

银行星座信息也被搜集啦,看来只有我NP最不懂我啦555

chenle0907 回复

有这么漂亮的程序媛吗

加新 回复

漂亮

royal888 回复

糟了,心动的感觉。

海海开心 回复

美女

评论
5

蚊子踩着霜 复制链接去分享

我是钉钉smart work团队的高级开发专家,花名采霜,工作一忙有时候饭也顾不上吃,顺手写一段终结选择困难症的代码,大家随意看看~

# -*- coding:utf-8 -*-
import random
what_to_eat = ['牛肉拉面', '麻辣烫', '麻辣香锅', '重庆小面', '水饺', '沙拉', '煎饼果子', '米线', '盖浇饭', '凉皮肉夹馍', '粥+煎饺', '寿司', '石锅拌饭']
random.shuffle(what_to_eat)
what_to_eat_this_week = random.sample(what_to_eat, 5)
for index in range(len(what_to_eat_this_week)):
    print('周' + str(index + 1) + ':' + what_to_eat_this_week[index])

知道大家想看的是照骗~ 海报里面的C位就是我,想和我一起工作么,钉钉smart work团队诚招java、ios、安卓、前端以及产品经理。有意者简历到caishuang@alibaba-inc.com,有投必回
_jpeg

云效鼓励师 回复

一个被代码耽误的吃货技术女神,急需有人入坑喊她一起吃饭~~

不靠谱贝贝 回复

这个招聘广告给个赞

1573481126487360 回复

厉害

1732445414569870 回复

我可不要这样选吃的,我要天天纠结一番,啊哈哈哈

1728812356059799 回复

现科技厉害了,

楚俊[online] 回复

厉害

talos 回复

每天吃一遍不就可以了,无需选择👌

麥伢の稥気 回复

下次可以直接报老北京的菜单了:有蒸羊羔、蒸熊掌、蒸鹿尾儿、烧花鸭、烧雏鸡、烧子鹅.............

凉宫 回复

天天纠结

放眼未来 回复

这看上去就是吃货一枚,呵呵

评论
2

cn_suqingnian 已获得83行代码限量T恤 复制链接去分享

在下*的程序媛,平时喜欢自己写点宏文件……最喜欢自己写的啦

照片:
听说要爆照然后:
_LXN_VQ7NKW21B1_L_N89_G

/*by Qingnian Su,Only want to write sonething useful*/
#ifndef suqingnian
#define suqingnian


template<typename _Element_pow>
  _Element_pow
    _pow(_Element_pow _a,_Element_pow _b,_Element_pow _mod)
    {
        _Element_pow _res=1;
        for(;_b;_b >>= 1, _a= _a * _a % _mod)
          if(_b & 1) _res = _res * _a % _mod;
        return _res ;
    }

template<typename _Element_gcd>
  _Element_gcd
    _gcd(_Element_gcd _m, _Element_gcd _n)
    {
        while (_n != 0)
        {
          _Element_gcd _t = _m % _n;
          _m = _n;
          _n = _t;
        }
      return _m;
    }


    bool __check[1000010];
    int __size;
    int _num[1000010];
    void _prime(int __n)
    {
      for(int _i=2;_i<=__n;_i++)
        {
          if(!__check[_i]) _num[__size++]=_i;
          for(int _j=0;_j<__size;_j++)
          {
            if(_i*_num[_j]>__n) break;
            __check[_num[_j]*_i]=1;
            if(_i%_num[_j]==0) break;
          }
        }
      return ;
    }
    bool _isprime(int __n) {return ~__check[__n];}


#include<cstdio>

template<typename _Element_stack>
struct _stack{
    _Element_stack __st[100010];
    int __size_st;
    void __push(_Element_stack __x)
      {__st[++__size_st]=__x;return ;}
    void __pop()
      {__size_st--;return ;}
    _Element_stack __top()
      {return __st[__size_st];}
    bool _empty() {return __size_st==0;}
};

#endif
#endif
李沃晟 回复

为小姐姐颜值和代码疯狂的打电话~

不靠谱贝贝 回复

看代码见颜值,打call

云效鼓励师 回复

看代码见颜值,打call

chen1002wenli 回复

可怕的C++

cn_suqingnian 回复

qwq

蛇眉铜鱼 回复

可以爆一张吃鲸的照片, 更美

早起鸟青木 回复

我就想水一下

cn_suqingnian 回复
ali_yun_user 回复

回复这个比较安全,阿里云这个活动适合单身的人

评论
4

云里阿云 复制链接去分享

我是 阿里口碑 基础平台技术部的工程师-衔远,坐标上海。
听说还有发照骗,说好的不秀美颜呢!!

ps:团队大量招人,欢迎加入~~ enqing.teq@koubei.com

下面是一段商品购买时库存扣减回补的代码,欢迎cr

 
public class PurchaseProcessExecutorImpl implements PurchaseProcessExecutor {

/**
 * 外部库存服务
 */
private OutInventoryService outInventoryService;

/**
 * 执行外部扣减流程,同时更新扣减状态
 *
 * @param bizOrder
 * @return
 */
@Override
public void executeSubtract(InventoryOrder bizOrder, String uid) {

    List<SubtractProcessDetail> details = bizOrder.getSubtractProcess();

    //生成外部预算请求,key是outInvId
    List<OutInventoryControlRequest> outReqs = convert2OutInvReqs(details);

    //通过budgetCore进行扣减
    Map<String, BudgetControlResult> res = budgetCoreControl(outReqs, uid, ControlType.SUBTRACT);

    //更新扣减单元状态
    updateUnitStatus(res, details);

    //更新子单扣减状态
    updateOrderStatus(details);

    //更新主单状态
    bizOrder.updateSubtractStatus();

}

/**
 * 执行回补流程,同时更新回补状态
 * @param subtractOrder
 * @param rollbackOrder
 * @param uid
 */
@Override
public void executeRollback(InventoryOrder subtractOrder, InventoryOrder rollbackOrder,
                            String uid) {

    //生成外部预算请求
    List<OutInventoryControlRequest> outReqs = convert2OutInvReqs(
        rollbackOrder.getRollbackProcess());

    //通过budgetCore进行回补
    Map<String, BudgetControlResult> res = budgetCoreControl(outReqs, uid, ControlType.ROLLBACK);

    //更新回补单元状态
    updateUnitStatus(res, rollbackOrder.getRollbackProcess());

    //更新子单状态
    updateOrderStatus(rollbackOrder.getRollbackProcess());

    //更新主单状态
    rollbackOrder.updateRollbackStatus();

}

/**
 * 更新扣减单元状态
 *
 * @param res
 * @param details
 */
private <T extends PurchaseProcessDetail> void updateUnitStatus(Map<String, BudgetControlResult> res,
                                                                List<T> details) {
    if (CollectionTool.isEmpty(details)) {
        return;
    }
    //结果解析
    details.forEach(detail -> {
        //根据扣减结果更新状态
        detail.getUnits()
            .forEach(unit -> unit.updateUnitStatus(res.get(unit.getOutInventoryId())));
    });
}

/**
 * 更新子单明细状态
 * @param details
 * @param <T>
 */
private <T extends PurchaseProcessDetail> void updateOrderStatus(List<T> details) {
    if (CollectionTool.isEmpty(details)) {
        return;
    }
    details.forEach(detail -> detail.updateStatus());
}

/**
 * 通过budgetCore进行回补 or 扣减
 *
 * @param outReqs
 * @param uid
 */
private Map<String, BudgetControlResult> budgetCoreControl(List<OutInventoryControlRequest> outReqs,
                                                           String uid,
                                                           ControlType controlType) {

    Map<String, BudgetControlResult> budgetControlResultMap = new HashMap<>();

    if (CollectionTool.isEmpty(outReqs)) {
        return budgetControlResultMap;
    }

    //根据类型调用bc进行回补or扣减
    if (ControlType.SUBTRACT == controlType) {
        //扣减
        budgetControlResultMap = outInventoryService.batchSubtract(uid, outReqs);

    } else if (ControlType.ROLLBACK == controlType) {
        //回补
        budgetControlResultMap = outInventoryService.batchRollback(uid, outReqs);

    } else {
        InvBizLog.procWarn(InvBizType.INV_SUBTRACT, InvSecErrorCode.BC_NOT_SUPPORT, "bc控制模式不支持",
            controlType);
    }

    if (CollectionTool.isEmpty(budgetControlResultMap)) {
        
        InvBizLog.fail(InvBizType.INV_SUBTRACT, InvSecErrorCode.LOAD_BUD_CORE_RESULT_NULL,
            "budgetCore调用失败");
        throw new InvBusinessException(InvSecErrorCode.LOAD_BUD_CORE_RESULT_NULL, true);
    }

    InvBizLog.proc(InvBizType.INV_SUBTRACT, "budgetCore调用结束,结果={0}", budgetControlResultMap);

    return budgetControlResultMap;
}
}
不靠谱贝贝 回复

一个有马甲线的程序媛!!!!回复大于10条,我就帮mm偷跑一个马甲线

古散 回复

已cy

饭娱咖啡 回复

求交往会不会被打死!毕竟我没马甲!哈哈哈

1764327410948875 回复
1764327410948875 回复

为了马甲线就是干

cjsoldier 回复

还是我们java亲切些。我要为我们java妹子带盐。

整篇代码没有很多“尖锐的”符号(下划线和箭头),看起来很舒服,不扎眼睛。偶尔有一两个标点符号点缀一下,读起来也不会视觉疲劳。

代码整体看起来更像是一篇优美的散文,尤其是这散文还是出自妹子之手,更觉得这不是散文,而是诗歌了。尤其是那婉转悠长的变量,虽然含蓄,但是表达出来的意思的却是那么的清楚,坚定。透过变量名,我仿佛看到了妹子绯红的脸颊和那双毫不迟疑的眼睛。睫毛弯弯却目光如炬。我相信任何人只要看了一眼都会为之动容,都会忍不住在心里面呐喊:老天爷啊,请垂怜眷顾这个可爱的小姑娘吧。实在不行,把你对我的那份眷顾送给她吧。

cjsoldier 回复

还是我们java亲切些。我要为我们java妹子带盐。

整篇代码没有很多“尖锐的”符号(下划线和箭头),看起来很舒服,不扎眼睛。偶尔有一两个标点符号点缀一下,读起来也不会视觉疲劳。

代码整体看起来更像是一篇优美的散文,尤其是这散文还是出自妹子之手,更觉得这不是散文,而是诗歌了。尤其是那婉转悠长的变量,虽然含蓄,但是表达出来的意思的却是那么的清楚,坚定。透过变量名,我仿佛看到了妹子绯红的脸颊和那双毫不迟疑的眼睛。睫毛弯弯却目光如炬。我相信任何人只要看了一眼都会为之动容,都会忍不住在心里面呐喊:老天爷啊,请垂怜眷顾这个可爱的小姑娘吧。实在不行,把你对我的那份眷顾送给她吧。

jvm.牧羊人 回复

java赞

yunganlong 回复

仰慕 ---------------------

评论
5

fayyen 复制链接去分享

我是 阿里口碑 搜索推荐组的JAVA女工程师,花名妍霏。

不上相所以自拍比较少,好不容易才找到一张没崩的自拍照骗。
47f6b6ba26b833771649bd39779acff260e07f09

决定再发一张和我们口碑团队的另外一位超漂亮精致妹子的合照!口碑的精致女工程师可是非常的多哦~

我们团队还有大量的坑招人,包括不限于java/c++工程师,算法工程师等等,欢迎大家加入~ fayyen1213@koubei.com

6fccc6471956d2a39ac693b86c96d40f3ae36225

我的第83行代码来自 生成特定搜索场景下所需要查询的门店状态值集合 的一段代码,欢迎大家指正。
`

/**
 * 计算单个display_status
 *
 * @param status 展示状态列表
 * @return 单个计算结果
 */
public static int getEngineDisplayStatus(Map<DisplayStatusEnum, Integer> status) {
    int resNum = 0;

    for (Map.Entry<DisplayStatusEnum, Integer> entry : status.entrySet()) {
        resNum = resNum + (int)(Math.pow(10, entry.getKey().getIndex()) * entry.getValue());
    }
    return resNum;
}
/**
 * 递归计算所有的display_status
 *
 * @param statusList 展示状态列表
 * @param boolList   状态开关列表
 * @param resList    display_status列表
 * @param index      起始位置
 * @param calStatus  中间结果
 */
private static void calDisplayStatus(DisplayStatusEnum[] statusList, List<Boolean> boolList, List<Integer> resList,
                                       int index, Map<DisplayStatusEnum, Integer> calStatus) {
    if (index == statusList.length) {
        resList.add(getEngineDisplayStatus(calStatus));
        return;
    }

    DisplayStatusEnum displayStatusEnum = statusList[index];
    if (boolList.get(index)) {
        calStatus.put(displayStatusEnum, displayStatusEnum.getDisplayValue());
        calDisplayStatus(statusList, boolList, resList, index + 1, calStatus);
        if (displayStatusEnum != DisplayStatusEnum.MallDisplay) {
            calStatus.put(displayStatusEnum, displayStatusEnum.getDefaultValue());
            calDisplayStatus(statusList, boolList, resList, index + 1, calStatus);

            calStatus.put(displayStatusEnum, displayStatusEnum.getDisplayValue());
        }
    } else {
        calStatus.put(displayStatusEnum, displayStatusEnum.getDefaultValue());
        calDisplayStatus(statusList, boolList, resList, index + 1, calStatus);
    }
}
/**
 * 计算指定环境下需要查询的所有店铺display_status值
 *
 * @param status 展示状态列表
 * @return display_status最终计算结果
 */
public static String getDisplayStatusQuery(List<DisplayStatusEnum> status) {
    List<Integer> r = new ArrayList<Integer>();
    List<Boolean> boolList = new ArrayList<Boolean>();

    DisplayStatusEnum[] enumList = DisplayStatusEnum.class.getEnumConstants();
    for (DisplayStatusEnum e : enumList) {
        if (status.contains(e)) {
            boolList.add(true);
        } else {
            boolList.add(false);
        }
    }

    Map<DisplayStatusEnum, Integer> calcuStatus = new HashMap<DisplayStatusEnum, Integer>();
    calDisplayStatus(enumList, boolList, r, 0, calcuStatus);

    return StringUtils.join(r, " OR ");
}`
不靠谱贝贝 回复

好可爱的妹子

痞子姜 回复

(((o(゚▽゚)o)))

云效鼓励师 回复

收下膝盖

1755802798325712 回复

爱笑的程序媛更美丽~

李八郎 回复

稀有物种

评论
1

小霸王丶石 已获得蓝牙手环 复制链接去分享

上学学的就是php,我的第83行代码很普通但是很有纪念性
image

不靠谱贝贝 回复

亲,介绍一下自己吧

uiz 回复

几百年看到个php的

起名字好难 回复

右侧略缩图那里,你后面的缩进也太恐怖了吧,比萨斜塔啊

评论
1

1932532569132020 已获得83行代码限量T恤 复制链接去分享

大家好我是一名大一的学生马鑫泽,目前水平有限,希望日后比现在还强
image
image
image

1932532569132020 回复

多多支持

不靠谱贝贝 回复

亲,是程序媛吗

起名字好难 回复

哈哈,人员管理系统,大一标配

楚俊[online] 回复

牛啊

瞎子点灯 回复

难不?

评论
3

1450231970162105 复制链接去分享

image

不靠谱贝贝 回复

同学,自我介绍一下,爆个照

1992125338991598 回复

你是要每天换个不同的男朋友吗

1643015296784801 回复

默认是Wealthy Boy,妹子你暴露了==

1755802798325712 回复

我的外号就是Wealthy Boy

消失er 回复

66666,这代码 没毛病

评论
1

惟楚有才 已获得蓝牙手环 复制链接去分享

protected String getPassword(ServletRequest request) {
        String password = super.getPassword(request);
        if (StringUtils.isBlank(password)){
            password = ObjectUtils.toString(request.getAttribute(getPasswordParam()), StringUtils.EMPTY);
        }
        // 登录密码解密(解决登录密码明文传输安全问题)
        String secretKey = Global.getProperty("shiro.loginSubmit.secretKey");
        if (StringUtils.isNotBlank(secretKey)){
            password = DesUtils.decode(password, secretKey);
            if (StringUtils.isBlank(password)){
                logger.info("登录密码为空或解码错误.");
            }
        }
        return password;
    }
1

康维 已获得蓝牙手环 复制链接去分享

public SessionMenu getCurrentMenu(String menuCode, List<SessionMenu> menus) {
        SessionMenu currentMenu = null;
        if (!Empty.isEmpty(menuCode)) {
            A:
            for (SessionMenu m : menus) {
                for (SessionMenu m1 : m.getChildren()) {
                    if (menuCode.equals(m1.getCode())) {
                        currentMenu = m1;
                        break A;
                    }
                }
            }
        }
        if (currentMenu == null && menus.size() > 0) {
            for (List<SessionMenu> list = menus; !Empty.isEmpty(list); list = currentMenu.getChildren()) {
                currentMenu = list.get(0);
            }
        }
        return currentMenu;
    }
0

六九投诉网 复制链接去分享

男工程师不知道能不能发言

不靠谱贝贝 回复

可以评价一下程序媛的代码啊

jaffzhang 回复

补充,支持!

angellce 回复

程序萌新躲在角落瑟瑟发抖

追逐星系 回复

支持支持

sffrwrr 回复

真的喂 ~~

qyna0313 回复

支持支持

评论
0

阿攀达 复制链接去分享

女人是上帝开发的艺术品。
女人的代码是什么呢?

云效鼓励师 回复

艺术品中的精品

xiaodel 回复

男猿不敢说话

1387542973422997 回复

难道这只是妹子间的游戏,不允许大叔参与。

刘12 回复

2

azhenglianxi 回复

QAQ

评论
2

采采采采采 复制链接去分享

听说程序媛这个物种十分罕见,我是作为罕见中的一员happy(被)来(逼)的,毕业几年的人生感悟:每个人在浩瀚的宇宙中都有自己独特的坐标,这个坐标会因为你的选择而变的不同,同样这个世界也会因为你坐标的移动而变得不同!SO,COME ON 加入我们,让我们一起改变世界,成就更好的自己!我在tmall一直等你!caiyue@tmall.com
_me
package tmall;

import lombok.*;

/**

  • Created by caiyue on 2018/7/16.
    */

@AllArgsConstructor
class Business {

private String buName, salary, awardMoney, mission, colleague;
public Person change(Person p) {return p;}
public String toString() {
    return buName + "公司:[工资:" + salary + ",奖金:" + awardMoney + ",同事:" + colleague + ",使命:" + mission + "]";
}

}

@Data
@AllArgsConstructor
class Person {

private String role, x, y, z;
public String toString() {return role + ":[" + x + "、" + y + "、" + z + "]";}

}

class TmallBu extends Business {

public TmallBu(String buName, String salary, String awardMoney, String misson, String colleague) {
    super(buName, salary, awardMoney, misson, colleague);
}
public Person change(Person p) {
    switch (p.getRole()) {
        case "程序媛": 
            return new Person(p.getRole(), "人美", "码赞", "会生活");
        case "程序员": 
            return new Person(p.getRole(), "人帅", "钱多", "疼老婆");
        default: 
            return new Person(p.getRole(), "坐标丢失", "坐标丢失", "坐标丢失");
    }
}

}

public class TransformAll {

public static void main(String[] args) {
    Business tmall = new TmallBu("天猫", "五颗星", "五颗星", "改变自己改变世界", "一群有情有义的人");
    Person ordinaryGirl = new Person("程序媛", "定位自我", "找寻理想", "探索生活意义");
    Person tmallProgrammerGirl = tmall.change(ordinaryGirl);
    System.out.println(tmall.toString());
    System.out.println(tmallProgrammerGirl.toString());
    System.out.println("欢迎来天猫一起成为更好的自己!");
}

}

云效鼓励师 回复

看到这里
return buName + "公司:[工资:" + salary + ",奖金:" + awardMoney + ",同事:" + colleague + ",使命:" + mission + "]";
}
突然想起了那篇文章年薪百万的阿里人

chen1002wenli 回复

java妹子比例有点高

有个疯姑娘 回复

厉害了厉害了!

评论
0

关羽大侠 复制链接去分享

难道这只是妹子间的游戏,不允许大叔参与。

不靠谱贝贝 回复

你可以评价妹子的代码

云效鼓励师 回复

你可以推荐妹子的代码,还可以推荐妹子~~

1361239915619774 回复

你们可以看看可口可乐官网的代码,那才叫艺术

1783323541501494 回复

看大叔的颜值

31017933 回复

看大叔的颜值

评论
1

起名字好难 复制链接去分享

那什么,你们的

83行T恤

我收到了。

但是我穿 size = 185 号的,你们给我寄的 size = 175 号的。

跪求怎么破解
不靠谱贝贝 回复

送女朋友,或者送男朋友也行

英雄-武汉 回复

这个好............

蕾女心经 回复

喜欢这个

评论
20
70575
浏览
3
收藏
邀请他人互动
关注
22
粉丝
785
话题
8

简介:

云效非著名程序员鼓励师
结合大数据能力帮助电商企业快速搭建平台、应对业务高并发,剖析秒杀、视频直播等场景

基于阿里聚安全的核心技术,为移动应用(APP)提供全生命周期的安全服务,其能够准确发现应用的安全漏洞,恶意代码,...

兼容Jenkins标准,可提供快速可靠的持续集成与持续交付服务。基于容器技术和阿里云基础服务架构,提供稳定和安全...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...