- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 Jsoup 或 apache httpClient 从 CURL 创建此请求?
curl 'https://www.instagram.com/rupload_igphoto/fb_uploader_1557924189090'
-H 'cookie: mid=XNvymQAEAAFb4YRR4JkElxTB8I2_; csrftoken=IEpfr1jO1kB4EOFblQE285c9h5vD1LSh; ds_user_id=12828973541; sessionid=12828973541%3AXYcFYbRfWuitX7%3A23; rur=FRC; urlgen="{\"83.242.226.146\": 8359}:1hQtFJ:UiVB7Sl3c0NxnZh7VB9XujhuDGc"'
-H 'origin: https://www.instagram.com'
-H 'accept-encoding: gzip, deflate, br'
-H 'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7'
-H 'user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
-H 'x-requested-with: XMLHttpRequest'
-H 'x-csrftoken: IEpfr1jO1kB4EOFblQE285c9h5vD1LSh'
-H 'x-ig-app-id: 1217981644879628'
-H 'x-entity-name: fb_uploader_1557924189090'
-H 'offset: 0'
-H 'x-instagram-ajax: 748957cebea4'
-H 'content-type: image/jpeg'
-H 'accept: */*'
-H 'authority: www.instagram.com'
-H 'x-instagram-rupload-params: {"media_type":1,"upload_id":"1557924189090","upload_media_height":1080,"upload_media_width":1079}'
-H 'x-entity-length: 16620'
-H 'referer: https://www.instagram.com/create/details/'
--data-binary $'ÿØÿà\u00\u10JFIF\u00\u01\u01\u00\u00\u01\u00\u01\u00\u00ÿÛ\u00C\u00\u03\u02\u02\u02\u02\u02\u03\u02\u02\u02\u03\u03\u03\u03\u04\u06\u04\u04\u04\u04\u04\u08\u06\u06\u05\u06\u09\u08\n\n\u09\u08\u09\u09\n\u0c\u0f\u0c\n\u0b\u0e\u0b\u09\u09\r\u11\r\u0e\u0f\u10\u10\u11\u10\n\u0c\u12\u13\u12\u10\u13\u0f\u10\u10\u10ÿÛ\u00C\u01\u03\u03\u03\u04\u03\u04\u08\u04\u04\u08\u10\u0b\u09\u0b\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10\u10ÿÀ\u00\u11\u08\u048\u047\u03\u01"\u00\u02\u11\u01\u03\u11\u01ÿÄ\u00\u1a\u00\u01\u01\u01\u01\u01\u01\u01\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u02\u01\u03\u04\u05\u08ÿÄ\u00\u1f\u10\u01\u01\u00\u02\u03\u01\u01\u01\u01\u01\u00\u00\u00\u00\u00\u00\u00\u01\u111\u02\u12AQa\u21q"ÿÄ\u00\u17\u01\u01\u01\u01\u01\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u01\u02\u04ÿÄ\u00\u1c\u11\u01\u00\u02\u03\u01\u01\u01\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u01\u11\u211qAaQÿÚ\u00\u0c\u03\u01\u00\u02\u11\u03\u11\u00?\u00ýö\u03\u89Ú\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u02nÔ\u9b°`\u00\u00\u09»cnØ\u00\u00]%WI\u00\u00\u19tÖ]\u02@\u00\u00o\u1d©<v \u00\u07 \u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u017jMØ0\u00\u00\u04ݱ·l\u00\u00.\u92«¤\u80\u00\u0cºk.\u81 \u00\u007\u8eÔ\u9e;P\u00\u03Ð\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u9bµ\'\u900\u00\u00\u04ݱV$\u00\u00ºJ\u8b2\u09\u0b0\u00˦\u80\u81VJË(01U8\u838í@\u00\u00ô\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u002é m\u98¬\u00\u00\u19c@@«2Ë0\u0c\u00\u06^?\u1a\u02E3¯À`b\u80\u00\u00Þµ¸\u90\u19%\u1a\u03°\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00Ë2\u95²ÏA \u00\u00\u00\u03/\u1f\u8cP\u08\u15Ö3\u14\u18\u00\u06 \u03:Æ\u80\u00\u007\u14\u07P\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u19fR°\u10*ñøÌP`\u00\u00\u00\u003\u11 3«1T\u02q~\u1dj\u80gXÜ@\u00\u00X\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u031\u1a\u02zþ\u9dj\u80N+1~,\u04\u0b\u01\u02±>\u18\u80\u91X\u86\'ÀH¬O\u8d\u04\u0b\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u01=\u8cÐP\u80\u15\u99ôÌH\nÌ;Dæ}f`/´;Dv\u87oÀWo÷â{~3µ\u05öü;~#µ3A}¿\u0eß\u88íúÌþ\u83§o÷ã\u9e\u7fLþ\u83§o÷ã\u9e\u7fLþ\u83§o÷ã\u9e\u7fLþ\u83§o÷ã\u9e\u7fLþ\u83§o÷ã\u9e\u7fLþ\u83§o÷â3~\u9d¨/·ã{Dvü;\u02ûC1\u19\u8d\u05f}j\u00X\u8cßíAB{~70\u1a\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u03-ÂvÛrÀ\u01\u97\u97Àk;1\u80ÜÖ\u16Æ[A¦gÔ³"+´;~\'´goÁWÚ³59¬ÏÚ"óúÌϨÌ;~\n¾Ñ\u9d¿\u11Ú\u9d¯Ð_o÷â;~\u9d¿A}¿\u0eß\u88íúvý\u05öü;~#·éÛô\u17Ûðíø\u8eߧoÐ_o÷â;~\u9d¯ÐtÌno×>ß\u86`:ö§df·°/2\u89% ¼ÖË\u13, ,L¸V`\u00\u00ÜÖ\u00©rÔ*\\\u83@\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u01\u97MO `2Ü\u01o\u91\u21n\u03E¸M¶\u8c·\u025\u97\u92mÉl\u80ÜÖ\'µ`+´gjËc;PVoÖf\'?k;@Wff§µe¿h.ßµ\u9d¢;3µ\u07NÐí\u1cóLÐtí\u0eÑÏ4Í\u07NÐí\u1cóLÐtí\u0eÑÏ4Í\u07NÐí\u1cóNÔ\u1de¿[Ûë\u94±]¾\u83¬¿+g/®rülåô\u1d3ñ³\u97ÔK\u86Ë\u91]\u1b/ÔK\u85\u02\u86KãA²ª\\ \u05\u8c\u97-\u00\u00VÚ\u9e7Å\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u9e[RnÁ\u89·5WH\u03IÛmM¸\u10·\u096Ë|\u80Z\u93I· ÛËã3\u96[#-´FÛ\u19\u9a\u9bde¶\u82\u8cíñ9\u8cÍ\u05[ö§´Nc;P_j\u9bÊ"ò\u9fYØ\u1d;C´síNÔ[tí\u0eÑϵ;P·NÐí\u1cûSµ\u0btí\u0eÑϵ;P·NÐ\u9c\u9cûVöú\u0e³\u97ÕJã*¥ø\u0eÒ¶rúç.U/Ðt\u97\n\u95Î\\*\\\u03¤¹T¸s\u95RäWFËõ\u1co\u8a\u05\u09\u97\n\u01Rå-Ð(\u00&Ö\u85M\u03@\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u00\u01ÿÙ' --compressed ;
我可以创建一些请求路径(kotlin)
val c = Jsoup.connect(link)
.timeout(20 * 1000)
.userAgent(userAgent).ignoreContentType(true)
.header("X-Requested-With", "XMLHttpRequest")
.header("origin", "https://www.instagram.com")
.header("accept-encoding","gzip, deflate, br")
// .header("accept-language","ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7")
.header("user-agent", userAgent)
.header("x-requested-with","XMLHttpRequest")
.header("x-csrftoken", csrf)
.header("x-ig-app-id", igAppId)
.header("x-entity-name", "fb_uploader_$ts")
.header("offset", "0")
.header("x-instagram-ajax", rollOutHash)
.header("content-type", "image/jpeg")
.header("accept", "*/*")
.header("authority", "www.instagram.com")
.header("x-instagram-rupload-params","{\"media_type\":1,\"upload_id\":\"${ts}\",\"upload_media_height\":1080,\"upload_media_width\":1079}")
.header("x-entity-length", "16620")
.header("content-length", "16620")
.header("referer","https://www.instagram.com/create/details/")
.cookies(cookie)
我可以添加所有 header 和 cookie 来请求,但我现在不知道如何在此请求中添加图像文件。“--data-binary”参数中的图像文件。怎么做呢? (抱歉我的英语)
最佳答案
正如评论中提到的。目前这不适用于 Jsoup。有一个open issue关于这一点和修复可能就像将 Request.body
更改为 byte[]
并适当重载 requestBody
方法一样简单(当然在适当的情况下使用 OutputStream
而不是 BufferedWriter
)。
因此,如果您不想提供拉取请求,则需要使用替代方案。使用 apache httpclient 这个替代方案可能如下所示:
HttpClients.createDefault().use {client ->
val post = HttpPost("yourUri").apply {
entity = ByteArrayEntity(File("yourFile").readBytes())
// addHeader or setHeaders ...
addHeader("headerName", "value")
// ... all your headers...
}
client.execute(post)
}
关于java - 如何添加参数 'request payload'到post请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56152139/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!