杭州物色工作小记

最后一小是14号,也就周二早上面的,是召开公共卫生信息化解决方案的号,先是画试题,内容来接触浅而技术点来硌原来,虽然为闹一些非明白怎么做的,但少号面试官看了简历后,有接触笑意地问了产档相关的,闲聊了下,然后说她们的着力产品还是当做解决方案,Android部分大少,只是当作帮助,最后一个面试官说,“小伙子,挺不错的!我们就是无招你哪……”(笑~)。好吧,确实,进去里面做的物呢不多。感谢她们之过奖,直接回复给自身还并非做决定。-_-

前言

近些年于挑如何利用阿里云服务器搭建筑一个略的基于Flask框架的后端接口,刚开为贪图方便,就直接进货了一个Windows
Server 2008系服务器,这为盖下了无聊的坑。

 

服务请下来后,会为您一个公网IP和内网IP,由于是第一不成学习搭建后端接口,对于如何对行使阿里云服务器,来拍卖好公网IP和内网IP之间的涉嫌蒙下了未略的坑,真是对应的等同句子话:技术之成人往往是一步一个坑。

 

下简单说一下搭建Flask服务器端遇到的题目:

先是,Flask自带了一个服务器,直接用非常方便,不过这个服务器的性能最没有,但是于调试以及上要绰绰有余。刚开头把代码放到阿里云服务器上,并跑通后,测试接口时公网IP无法访问,那时自己认为是Flask自带服务器的题材,即因Flask自带服务器原因导致无法运用公网IP访问。

 

那么,问题应运而生了,就设找解决办法吧,网上搜索资料给出参考意见:使用nginx
+gunicorn来部署Flask相关服务,可以避公网IP无法访问问题。然后,我就去寻觅资料,安装gunicorn,结果运行测试时直接报错,最后发现gunicorn不支持Windows系统,这也最为坑了,早知道自己立马购置服务器时就无该图便宜,直接购买一个基于Linux的系统了。

 

今,新的题材同时来了,既然无克以nginx
+gunicorn来配置Flask相关服务,那便使运用其他方法来解决吧,网上资料参照结果:使用tornado。好,那么我又来查阅学习tornado部署应用开发文档,按照支付文档部署了后,在服务器上跑通后,发现依然不能够运用公网IP进行接口访问同测试。

 

到了这边,就叫自家反省,这个难道真是Flask部署应用服务器问题吧?后来,就以网上找到了同一首关于阿里云公网IP无法访问问题的章,发现这要好去阿里云官网上去配置安装。

 

不怕以上遇到的问题,压根就非是Flask部署服务器问题,是自己从未干明白阿里云服务器如何行使的题材……

 

切实配置安装方式展现:阿里云服务器 ECS 访问不了公网 ip 可能的原因和缓解办法

附:

 葡京网上娱乐场 1

 

 


先行说生面试的整情况吧。由于现行应届生已经远非校园招聘了,只能通过社会招聘的路子去找寻工作,这样应届生会有少沾劣势:
一凡是没有工作经验;二凡工薪相对校园招聘可能会见低点。有些商家针对应届生可能产生一个薪资标准,所以最好不要赶毕业后搜索工作,想想之前一意孤行等及毕业找呢是醉了……

 

第八贱是千篇一律贱举行互联网医疗护理者产品之商家,三个面试官一起面,压力山大,幸好之前HR邀请时说觉得自家之简历不错,是独出想法及履之总人口,才发出部分底气去面试。那天状态十分好,无论由讲的语调、回答问题的艺还是提问都拿控得格外好,虽然技术问题并无是回应得老大周到,但最后或顺以到offer。后续HR也来信几不良问我确定去那家店,感谢他的青睐和最终之祝福!

 

高空,投递四十基本上下商店,十个面试邀请,三家offer,比想象着争先多,也正如幸运,但迅即并无能够证实什么,我理解自己之程度咋样,还得多岁月错开沉淀!最终决定去魔厨,一凡强调团队,二凡讲求产品,个人还爱开同互联网紧密相关的成品,也盼望自己能于创业公司获得更要命之洗炼。相信自己力所能及抓好!

style=”font-size: 18pt;”>目录

style=”font-size: 14pt;”>前言

style=”font-size: 14pt;”>1
准备干活

style=”font-size: 14pt;”>2
具体贯彻

第一感谢琪琪一家人以宁波常对本身的体贴照顾,感谢琪琪每天微信语音电话的抚慰,感谢及老的聊天和指向offer提的几沾建议,感谢红飞的关注与对店家之一对点评,感谢红飞的姐帮忙我一块寻找房子(不然我还不知底何找好,随便找找个地方就停下了),感谢田园的致敬还操心我一个人数停止孤独(笑~),还感谢CC帮我处理学校的持续工作与家里人对本身的电话问候。最后,感谢【Muscle,
天生就会飞】讨论小组的几只小兄弟科立, 明明及桂添,
愿意每天放自己的吐槽和露,不然我一个人口于杭城恐怕会见较孤单和止……能坚持下去,并找到工作,你们功不可没!


7.6顶杭州,此前在内推网已接受同花顺公司之笔面试邀请(当时股市正在动荡,收到这家商店之邀请确实有接触小惊喜),笔面试当天来临杭州。当天恰台风要来,杭州下中雨,出了西湖知识广场地铁,手机信号不好,忘记搭哪路车了,导航不了,想由之也罢自不了,后来折腾死长远,走了许多冤枉路才到达酒店(这种气象,内心总会狠狠自嘲一番,“呵呵,真是个坏傻逼,大老远跑来杭州干嘛,熟人不多只,广深不是重复好与否”)。

2 具体实现

视底具体实现代码,会让大家感慨,Python的确是一个美观的语言,Flask框架为真是本着许稍加若以轻量级的框架美称呀。使用MongoDB数据库,操作数据库也变得颇为简略。

 

每当羁押下代码之前,需要简单说一样下REST的核心思维原理,也相当给是本身好更深化印象吧。下面说下由阮一峰博客的一个评价,我备感这样讲述的深客观。

 

REST四只基本尺度:
1.使用HTTP动词:GET
POST PUT DELETE;
2.无状态连接,服务器端不答应封存了多达下文状态,即每个请求都是独的;
3.啊每个资源设置URI;
4.通过XML
JSON进行数据传递;
兑现上述条件的架构即可称为RESTFul架构。
1.互联网环境下,任何利用之架构和API可以为迅速解;
2.分布式环境下,任何要都可以于发送至自由服务器;
3.异构环境下,任何资源的造访和动用方法都合并;

 

看到地方介绍,既然说了REST方式使用HTTP动词GET
POST PUT DELETE来落实相关操作。

这就是说下代码就大概实现转即时四只动词的具体操作功能。

GET:实现由服务器后台获取数据功能,例如登陆接口功能实现;

POST:实现为服务器后台提交数据功能,例如登记接口功能实现;

PUT:实现修改服务器后台就发生多少功能;

DELETE:实现删除服务器后台就发出数量功能。

 

关押了上面介绍,下面就是伸手圈代码:

比方无以tornado,直接采用下一个mongo.py文件被代码即可实现本文标题所陈述效:

#coding=utf-8
#mongo.py
from flask import Flask,abort
from flask import jsonify
from flask import request
from flask_pymongo import PyMongo


app = Flask(__name__)

app.config['MONGO_DBNAME'] = 'rest'
app.config['MONGO_URI'] = 'mongodb://172.18.252.20:27017/rest'  #如果部署在本上,其中ip地址可填127.0.0.1

mongo = PyMongo(app)

@app.route('/login', methods=['GET'])
def get_all_users():
  star = mongo.db.userInfo.find()
  output = []
  for s in star:
    output.append({'name' : s['name'], 'pwd' : s['pwd']})
  return jsonify({'result' : output})


@app.route('/register', methods=['POST'])
def add_user():
  star = mongo.db.userInfo
  name = request.json['name']
  pwd = request.json['pwd']
  star_id = star.insert({'name': name, 'pwd': pwd})
  new_star = star.find_one({'_id': star_id })
  output = {'name' : new_star['name'], 'pwd' : new_star['pwd']}
  return jsonify({'result' : output})

@app.route('/modify/<string:name>', methods=['PUT'])
def update_user(name):
    user = mongo.db.userInfo.find({"name":name})
    output = []
    for s in user:
      output.append({'name': s['name'], 'pwd': s['pwd']})
    if len(output) == 0:
      abort(404)
    mongo.db.userInfo.update({"name":name},{'$set':{"name":"LZ111"}})
    return jsonify({'result': output})

@app.route('/delete/<string:name>', methods=['DELETE'])
def delete_user(name):
    user = mongo.db.userInfo.find({"name": name})
    output = []
    for s in user:
      output.append({'name': s['name'], 'pwd': s['pwd']})
    if len(output) == 0:
      abort(404)
    mongo.db.userInfo.remove({'name': name})
    return jsonify({'result': True})



if __name__ == '__main__':
    # app.run(host = '0.0.0.0', port = 80, debug = True)
    app.run()

 

要用tornado,新建一个tornado_server.py文件,添加以下代码,作为Flask服务启动部署,也可以实现相关功能:

#coding=utf-8
#tornado_server.py
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop

from mongo import app


http_server = HTTPServer(WSGIContainer(app))
# http_server.listen(9000)  #此时,开启端口9000,默认本机127.0.0.1的IP地址
http_server.bind(80, "172.18.252.20")# 开启端口为9000,172.18.252.20为内网ip地址,也可以设置为0.0.0.0,
http_server.start(1)
IOLoop.instance().start()

 

扣押了上面代码,点击运行,即可实现相关接口功能了。既然是接口,GET方式还吓说,如果是POST方式,使用浏览器就非那么好操作了,此时咱们得采取相同慢性接口测试软件,在此处自己推荐用Postman(PS:Postman百度经验介绍,Postman官网下充斥链接),如果起同学利用基于Linux相关系统,推荐应用CURL来贯彻。

 

下面就是正式启幕下Postman测试Get、Post、Put和Delete方式接口:

Get方式,选中下图中下拉框GET方式,直接输入URL,然后点击Send蓝色按钮即可获取请求数据。

 葡京网上娱乐场 2

 

Post方式,选中下拉框中Post方式,这里由于要发送数据,需要有些设置一下。

首先,在生图备受Headers中假如挑Content-Type的数方式,这里自己选择的是json格式:

 葡京网上娱乐场 3

下一场,点开下图被Body,选择raw,添加要存入的json格式数据,如下:

 葡京网上娱乐场 4

末段,点击Send按钮,在无限下出现相关提示信息后,即可查看Post请求结果。

 

Put方式操作以及Get方式一样,不同之是用选中操作方式吧Put,具体而下图:

 葡京网上娱乐场 5

 

Delete方式以及Put请求几等同,不同的凡一个实践修改操作,一个实践删除操作而已,具体要下图:

 葡京网上娱乐场 6

 

基本操作就这么,看罢上面代码,发现采用FLask+MongoDB写后端平接口是免是特意简单?

 

 

参考资料:
1.Designing a
RESTful API with Python and
Flask(PS:附加一个中文版,不过其中代码有bug)

2.理解RESTful架构

3.MONGODB
RESTFUL API WITH
FLASK

 

感谢

1 准备干活

导入Flask及有关扩展:

pip
install flask

pip
install flask-pymongo

pip
install
tornado(此处可选取可不选。如果不挑,直接利用Flask自带的服务器部署即可;如果选择,可以利用tornado部署)

 

MongoDB数据库绑定服务ip地址设置(PS:如果不开展下述设置,默认ip为本机127.0.0.1地点):

开拓CMD,进入MongoDB安装之bin文件夹下,例如我之安装目录也:C:\Program
Files\MongoDB\Server\3.2\bin

然后在CMD中输入mongod.exe
–bind_ip yourIPadress

里参数–bind_ip意思:绑定服务IP,若绑定127.0.0.1,则只能本机访问,不点名默认本地所有IP。(注意:其中yourIPadress填写好搭建服务器的内网ip地址)

现实要下图:

 葡京网上娱乐场 7

葡京网上娱乐场 8

 

打开Flask自带的服务器,一般用app.run(),其中一般用如下三只参数:host(指定ip地址,如果无填,默认为127.0.0.1)、port(指定使用的端口,如果未点名,默认为5000端口)、debug(开启调试模式,默认值为Flase,即非起来起来调试模式,如要敞开则好安装也True)。

 

如果在服务器上多建筑Flask接口相关服务,设置中host=’0.0.0.0’表示以公网ip下之跟一个局域网段所有ip都得拜这服务,如果管host指定为中一个内网ip地址,则这局域网下所有用户可以透过拜访这指定的ip地址访问Flask服务。

 

后介绍好稍微看看,也相当于是询问一下nginx
+gunicorn以及tornado的基本概念。也可以忽略,直接翻2
具体贯彻

 

使用nginx
+gunicorn来部署Flask相关服务,即非应用Flask自带的服务器。

 

看到地方的配置方式,作为初学者,不免会时有发生新的疑点,什么是nginx和gunicorn呢?

自要好吧是初接触的,查看了瞬间网上资料,大概了解了一下。

 

什么是nginx呢?

摘要自百度百科(https://baike.baidu.com/item/nginx/3817705?fr=aladdin)的一段解释:Nginx是一款[轻量级](https://baike.baidu.com/item/%E8%BD%BB%E9%87%8F%E7%BA%A7/10002835)的[Web](https://baike.baidu.com/item/Web/150564) 服务器/反向代理服务器和电子邮件(IMAP/POP3)代理服务器,并于一个BSD-like
协议下发行。其性状是挤占内存少,并发能力高,事实上nginx的起能力确实当与色的网页服务器遭到见比较好,中国新大陆使用nginx网站用户发生:百度、京东、新浪、网易、腾讯、淘宝等。

 

什么是gunicorn呢?

摘要自网上亦然整整文章(http://www.pythontip.com/blog/post/5155/)一段解释:Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python
WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork
worker模式,具有下非常简单,轻量级的资源消耗,以及强性能等风味。

Gunicorn
服务器作为wsgi
app的器皿,能够与各种Web框架兼容(flask,django等),得益于gevent等技术,使用Gunicorn能够当中心无改变wsgi
app代码的前提下,大幅度提高wsgi app的属性。

 

探望地方的解决办法,试着搭建安装,发现gunicorn不支持Windows系统,坑啊,早明白这么即便打一个Linux服务器。

使用gunicorn报错信息:

Traceback (most recent call last):

  File "d:\program files (x86)\python27\Lib\runpy.py", line 174, in _run_module_as_main

    "__main__", fname, loader, pkg_name)

  File "d:\program files (x86)\python27\Lib\runpy.py", line 72, in _run_code

    exec code in run_globals

  File "E:\WorkPlace\Git_python\liu_demo\venv\Scripts\gunicorn.exe\__main__.py", line 5, in <module>

  File "e:\workplace\git_python\liu_demo\venv\lib\site-packages\gunicorn\app\wsgiapp.py", line 10, in <module>

    from gunicorn.app.base import Application

  File "e:\workplace\git_python\liu_demo\venv\lib\site-packages\gunicorn\app\base.py", line 12, in <module>

    from gunicorn import util

  File "e:\workplace\git_python\liu_demo\venv\lib\site-packages\gunicorn\util.py", line 9, in <module>

    import fcntl

ImportError: No module named fcntl

 

 葡京网上娱乐场 9

 

然我的服务器依旧是Windows版本,Flask服务器环境要要搭建,那么得使用什么方案也?

这边推荐用tornado。

这就是说什么是tornado呢?

摘抄至网上一样篇稿子(http://www.tornadoweb.cn/)介绍:Tornado 是 FriendFeed 使用的不过扩大的非阻塞式
web 服务器及其相关工具的开源版本。这个 Web
框架看起有点像 web.py 或者 Google 的
webapp,不过为了能使得行使非阻塞式服务器环境,这个
Web 框架还噙了有些连锁的得力工具 和优化。

Tornado
和今底主流 Web 服务器框架(包括大部分 Python
的框架)有着鲜明的别:它是非阻塞式服务器,而且速度相当快。得利于其
非阻塞的道同对 epoll 的下,Tornado
每秒可以处理数以千计的连年,这意味对于实时 Web 服务以来,Tornado
是一个良之 Web 框架。我们付出这 Web 服务器的要紧目的就是为着处理
FriendFeed 的实时功能 ——在 FriendFeed
的运用里各级一个挪用户还见面保持正一个服务器连接。(关于什么扩容
服务器,以拍卖数以千计的客户端的连年的题材,请参阅 C10K
problem。)

 

有关实际怎么动,可以查看上面文章介绍,也可以瞻仰下文的实际用代码。

 

 


碎碎念

但还吓,个人算是比较幸运,原本认为起码要两三单星期才能够确定工作之,想不到九天就算规定了,比自己意料的快多。用了拉勾网、哪上班、周伯通、内推网、内聘网陆续投递了四十基本上下合作社的Android开发工程师(只挑对应届生或要求限期一年左右的照耀),有少数贱是一直过来简历不经过之,有局部圈了简历而尚未过来的,大多数直接没看,不过陆续有幸收到十贱商厦之面试邀请,从周一刚刚来杭州到周五面了六下商家,周日及周二面了季家,最终将到三单offer。获得面试时的大部凡是创业公司,比较出名的主干无过来,如快之、网易、蘑菇街,有赞誉,一凡是要求限期太强,二凡简历或不入他们法眼。此外周伯通上之过来是极抢的,面试邀请吧是绝多之。(不要问我干什么非用智联招聘和前程无忧之类的)

特套一总人口顶杭州搜索工作,个中之辛酸,想想呢不易于,需要感谢之丁吗非常多,对于喜好写文字的自,总认为要写点东西记录下。

说到来杭州寻找工作,难免会发生不少人口问何故选择杭州办事(因为自是广西口,在广东阅读,而飞至杭州),特别是历次面试,这个题材是避免不了之,我也问问了好N多方方面面,回想从年初前一股脑决定去杭州,起初理由实在来硌不纯粹,然而,时过境迁,现在底说辞都是老大纯粹了(只吧私家工作发展),当然或许为饱含几分叉倔强,因为前面说过之语,我便假设错过品味,总不可知从自己的体面,虽然非会见出谁在全而。或者,你为堪冠以“世界那么坏,我思去看看”的理由去了解(笑~)……

上述是零散碎念,下面转入正题。

第六家是总店针对该女装品牌刚成立之开电商方面的分店,面试官是自面试这么多小商店中极度特别的,说话方式若显得不敷成熟稳重(比较年轻),只问了部分技术点,没详细咨询技术内容,他说觉得自家简历写得是,水平还ok,然后拉了生任何的,就直让HR过来谈薪资和入职了,虽然来得最为抢,但自我倒从没即时答应,主要是坐小想不开(公司地址、还惦记尝试下其他局)。

第七小也就算是自现即将入职的店,当前紧要营业的出品是网上厨房App,也就要举行相同慢慢悠悠美食类p2p共享经济模式的制品。周日面试的,面试官是技术总监,主要问了自做的局部品种,和询问自己之个体想法,他的评头品足是简历不错,相对于应届生算是于不错之了(十分感谢他的重视!-_-)。不过这他们还怀有担心,没有一直为offer,后来周二下午再度与HR详谈(当时既将到零星下offer,也思考了十分遥远,十分明确想上他们铺),晚上才规定被offer,回想从中三个多钟的等,也死麻烦让的。而是本已是无限好的开始了,也决定了因创业之情怀去工作!

来杭州前方,在宁波森琪家已了贴近一个星期的日子,真的坏谢谢森琪家人之盛情款待,他家人吧老nice,让自身感触及如在家般的团结,不见面专门拘谨。第一浅呆在同学家那么长时(以前连亲戚家还并未呆了如此长时),也感受及不同家庭之教导艺术同待客之道。宁波是独好地方!……呆在同学小以内,一种植“安静舒适”的环境,使自身没有于自己了大的下压力去考虑工作的作业,也对有些作业慢慢平静。感谢之过渡期,让自己还能够源源去杭州之想法(虽然后面有头小意外,但实际我要不见面吃动摇的)。

下周就要进行新的初步了,相信自己,专注以及坚持,继续加油!:)

不错的心思颇重要!来前便尊重了投机之心态:不苟去想得失,因为您从无所得,最多两三个星期日后,等到弹尽粮绝,还摸索不顶办事,就愤然地滚动回广州深圳夺。大好的情怀,降低薪资要求,再长很多同室的关切,给自身高度鼓励,才要自身顺手找到如意的做事。

压力总源于无形之中。错开寻找工作前其实特别没底气的,而且笔面试都没有怎么准备;老爸和哥哥总怂恿我返回广深,说离家那么远干嘛,工资待遇又是大抵,还无设呆在广深方便,当时想想呢是……某天妈妈电话给我,没连,后发少信了吧,知道自家当杭州摸索工作较艰苦,而且看了自我七月找工作的运程不顶好,当时即觉着那个心酸的,回她电话说这些事物好之就信,不好的便无须信了,我摸工作还好……为了节省开支,期间易了三不良酒店(两天而家七上,首住特惠),专门挑了一些较方便的,整个过程花还好,不敢住求职公寓,东西最多,怕不安全。于是坐个好背包,大行李箱及电脑包,疲于奔命……

by cfanr
2015.07.18

其次叔下分别于拉勾周伯通上接的请,分别是举行多媒体广告系统(如广告机)的星际网络与召开酒店餐饮网络服务的东边网升。星际网络的庄,除了小题目尚未回好外,整个笔面试流程还好,说了几龙会时有发生通知,但事实证明一般这样说之,都是无继承的了。东方网升,初面和面试官聊得稀好的,他评价也酷高,然后周五技术总裁复试,本来以为会进的,但后来问的时刻说店铺项目还无确定,所以还免可知让恢复,呃,好吧,反正这就拿到其它offer了。

可惜首战失利,太久没有看笔试题了,也太久没有面试了,说话说得语无伦次,面试官问的重重题目也不能自圆其说。所以面试的面前早晚要对准自己简历上所描绘的诸一点去准备,自我介绍时为恐怕是话题的引入点。

面试总体状况

题外话

第九家是举行二手车交易平台,大搜车,非常有前景而且办公条件特别棒的局。当时就是闹硌后悔投得无比晚,怕等不及后续的面试。不过最终电话过去咨询时要么没能入二面,HR反馈说,他们要招工作经验比较丰富的开发人员。面试过程被,确实有点内容对得无是格外好,主要是忘记了,唉,准备得真的不够。

季寒商店是千篇一律寒开校园匿名社区的创业企业,CEO还nice,直接给出了面试评价,确实切中我之重大,本来还眷恋让HR面下的,但HR在农忙外,然后说后续又通知,然后就没然后了。:(
第五小也是一致贱创业公司,办公环境非常高,做的吗是相近uber、Airbnb共享经济模式的异域观光服务平台。是的,从海外市场开开打,他们CEO的角资源非常丰富。可惜开场的自我介绍有接触乱,后续的面试就发生接触次了,欸,每次紧张,说话便会专门急,没有逻辑o(╯□╰)o。

面试