美国研究者分析了开源代码库Github 140万用户的数据。他们发现和男性相比,女性发送的“拉请求”(代码更新提议)更容易被接受。由数据上看,女性提交代码的通过率为78.6%,而男性的通过率仅为74.6%。
在中国程序媛中,他们的代码又有什么样的魅力,云效联合云栖社区、饿了么、钉钉、阿里云、天猫、口碑发起首届程序媛比码活动——不秀大长腿,秀高智商;不秀美图照,秀代码图,参与晒码互动游戏赢“83行代码”T恤!
有被代码耽误的钉钉吃货程序媛,写代码写到忘记吃饭的——采霜
她急需能把她从代码中叫醒去吃饭的小伙伴,赶紧勾搭;
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
你可以参与互动点评,我们会优选精彩点评赠送“向代码致敬”T恤;
你可以邀请身边的女工程师加入我们的程序媛比码大赛,并署上邀请理由;
你也可以推荐一段女程序员写的优秀代码,并说明推荐这段代码的理由;
如果你就是程序媛,直接晒一段代码,更欢迎秀个人写代码的专注照;
我是xx公司的xx女工程师xx
(照片可以有)
我的第83行代码来自xx一段代码
(一定要有代码哦)
1、点评程序媛的代码,赢取“向代码致敬”T恤;
2、程序媛晒码,赢取“向代码致敬”T恤/淘宝心选提供的香薰片;
3、Super Coder大奖:网友和大牛共同评选点评,其中点赞互动人数最高的5位程序媛的将获得阿里巴巴颁发的Super Coder奖杯;该段参赛代码也将被印制在淘宝心选特指的程序媛定制香薰片上;参赛者有机会参加9月份杭州云栖大会极客派活动与更多的技术开发者及技术大牛见面互动。
很多人不理解83行代码是什么意思?
83行代码是我们程序员的一种信念,是一份敬畏
可以去向代码致敬,寻找你的第83行探寻你的答案
云效,一站式企业协同研发云,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具支撑,详情点击https://www.aliyun.com/product/rdc
83行代码限量T恤 x 20
蓝牙手环 x 10
我是阿里云函数计算团队技术专家清宵,用动图撩一下大家吧~~大家好!
我的第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()
}
}
江小白太白
已获得83行代码限量T恤
复制链接去分享
我是福州市五佰网络科技有限公司的Java女工程师江小白
我的第83行代码来自添加员工信息之前在Service中校验是否已经存在相同的手机号的一段代码
悄悄说一句,那个大名鼎鼎的黄*刀是我的顶头上司,我们一起在福建从事机动车驾驶员培训信息化建设的工作,他那人很变态,老喜欢审查别人编码的质量,一小点不规范,就让你改改改,在挣扎中求生。
不是福州人,在福州软件园上班
领导来视察了,哈哈。代码整体很规范,给个赞~~
高手如云 给个赞~
笨笨的粽子妞
已获得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)
对耶~~~
有对象了吗
哈哈,必然,没有……
我是云效的全栈开发女工程师,朱默,花名:墨瑜。
据说认真工作的程序员魅力值加10:
我的第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;
}
}
疯狂打call
看照片看不出是在认真工作,是在认真做手工活放松吗?
大家好,我是饿了么大前端的打杂工程师敖天羽。
照片:
别的小姐姐们晒得代码都太厉害了……只有我是来搞笑的,前年情人节的单身狗翻译器代码,两块钱你买不了吃亏,两块钱你买不了上当:
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();
}
对了,新晋花名「天汪」,请多多指教汪。(路过,给各位小姐姐们端茶送水)
昆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
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 = ["性别","年龄","星座","国家城市"])
工作两年,不喜欢化妆,已有男朋友,哈哈~
我是钉钉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,有投必回
现科技厉害了,
厉害
这么高的颜值还做什么程序猿T.T
cn_suqingnian
已获得83行代码限量T恤
复制链接去分享
在下*的程序媛,平时喜欢自己写点宏文件……最喜欢自己写的啦
照片:
听说要爆照然后:
/*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
我是 阿里口碑 基础平台技术部的工程师-衔远,坐标上海。
听说还有发照骗,说好的不秀美颜呢!!
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;
}
}
我是 阿里口碑 搜索推荐组的JAVA女工程师,花名妍霏。
不上相所以自拍比较少,好不容易才找到一张没崩的自拍照骗。
决定再发一张和我们口碑团队的另外一位超漂亮精致妹子的合照!口碑的精致女工程师可是非常的多哦~
我们团队还有大量的坑招人,包括不限于java/c++工程师,算法工程师等等,欢迎大家加入~ fayyen1213@koubei.com
我的第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 ");
}`
默认是Wealthy Boy,妹子你暴露了==
我的外号就是Wealthy Boy
听说程序媛这个物种十分罕见,我是作为罕见中的一员happy(被)来(逼)的,毕业几年的人生感悟:每个人在浩瀚的宇宙中都有自己独特的坐标,这个坐标会因为你的选择而变的不同,同样这个世界也会因为你坐标的移动而变得不同!SO,COME ON 加入我们,让我们一起改变世界,成就更好的自己!我在tmall一直等你!caiyue@tmall.com
package tmall;
import lombok.*;
/**
@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("欢迎来天猫一起成为更好的自己!");
}
}
惟楚有才
已获得蓝牙手环
复制链接去分享
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;
}
康维
已获得蓝牙手环
复制链接去分享
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;
}
被撩了
被代码撩了
爱上小姐姐了
我也爱你们~
厉害
不得了不得了~ 代码逻辑清晰, 干净利落, 高内聚低耦合, 遵守了代码的设计原则, 给美女程序猿点个赞!💕
不明觉厉!
不得了不得了,评论有模有样,遵守了本话题的互动规则,给帅锅点个赞,并赠送一件T恤,请邮件回复你的邮寄地址、姓名、手机号、T恤尺寸及你的阿里云昵称,邮件回复给小编:danfeng.adf@alibaba-inc.com
能写代码的妹子不多,能写golang的妹子就更少了!👍👍👍
谁能给翻译下这段代码~总感觉里面有人生大彩蛋
妹子可以帮你review代码哦,函数计算欢迎你!!
我觉得这段代码比较有意思的地方在于,以代码为思考的工具来模拟人生。
世人用诗词来感叹人生,用哲学来思考人生,而我们用代码来模拟人生。
小姐姐超级好看~
这段代码构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的代码功底。码上火,码上火,码上火!!!!
vitalitySignal买保险可以作为软广植入,招商引资吧
厉害,然后留下了没技术的泪水
函数计算果然人才济济~~
不要被这个妹子的外表所迷惑,写起代码来心狠手辣
第一眼看到了Sex还以为代码里有什么段子😂性别请用gender,不客气。。。😂
谢谢建议。gender比较书面,代码用于自娱自乐,比较随性,没有斟酌用词上的口语化和书面化,仅供大家赏玩吧,纯当添加娱乐色彩了。
小姐姐好
刚看到动图的时候,心里想
“切,这么漂亮的小姐姐,估计代码不能看。”
可往下看代码的时候,却被里面的话语,感动了。似乎80行的故事,就为了那三行情诗:
newLife, err := female.Join(male, ElementImp{Type: "love"}, ElementImp{Type: "family"})
if err != nil {
newLife.Run()
什么语言?也不多加几句注释,欺负小白吗?
golang~~
代码还不完整~人生的代码一个人写不完,希望能得一人,一起写,写一生~~
您好~
好有诗情画意,单身的好青年在哪里?速来报道!
😁
golang就是简洁啊
if err != nil {
有异常的人生才能开始跑吗 😀
有异常的人生才能开始跑吗 😀
if err != nil {
}
很难想象,这会突然醒了,看到这里仿佛看到了人生。
go?感觉还是Java好写
第一次从代码中看到了人生的感觉~
默默的把bug修复了,一运行 就告知 投胎投错了~滑稽
代码写的美 ,人长得好看,这样的小姐姐给我来一打。。。
高手,收我为徒吧?我崇拜你。👍
👍👍👍
👍👍👍
有理,已经fix
被撩到了
被撩到了
被撩到了
看不懂
这是golang语言啊,
作为一个golang死忠粉,顶起来
你能加我好友吗?qq:328204086
有多少人脱发的举个手。。。
看不懂 呵呵
收下你了~~😝
这是什么语言?
可以考虑生孩子的延续
这代码有点意思
赞赞 拜师
厉害了~膜拜中
厉害
看看
突然有了学习的动力了呢
哈哈,在成都一次培训会上见过
突然找到了我的人生目标
看不懂 呵呵看不懂 呵呵看不懂 呵呵看不懂 呵呵
发的图片都没有代码来的精彩。
赞!
我是不是来晚了啊
我看到了1024一定是个老司机
很难想象
拜倒~
超级厉害啊
这就是传说中的天书吧😄
我的第83行代码来自这个简单的Life模型,非项目非社区贡献,纯业余时间自娱自乐。
看了《药神》之后,对人生的感悟加深。回来没有写什么观后感,却是随便写了一段代码,构造一个极其简单的人生模型,算作总结思考了。
人生如码,以梦为马。珍惜所爱,精彩过好每一天!
写的真好,先赞!
厉害厉害,妹子写代码最有味道
不得了不得了~ 代码逻辑清晰, 干净利落, 高内聚低耦合, 遵守了代码的设计原则, 给美女程序猿点个赞!💕
码品见人品,妹子文武兼备啊!
life = [ 'love','work']
for you in life:
print('so love or work this a question!')
厉害了妹子!
小姐姐很棒
很好的
人美猛码
666
才子佳人
爱上代码了
代码挺新潮,都用上golang,团队应该全面上golang了吧。
程序创意挺好,还给出了风险控制建议(买保险).
欲望不要太大,记得开个线程组来管理与统筹有限的时间与活动吧。
路上
看看就好
牛逼牛逼,膜拜高手
厉害厉害
爱上小姐姐了
难道不是女装大佬么