程序猿

大话接口隐私与安全

安稳与你 提交于 2020-04-07 10:29:37
作为后端程序猿自己写的 接口 就像自己的 孩子 一样,尽然制造出来了,那就要对他以后的人生负责到底; 随着业务的壮大,需要支撑业务接口也越来越多,使用的用户量变大,虎视眈眈的黑客们视机而动,总是在业务中寻找着可以窃取他人利益的入口,所以我们应该多考虑安全性问题,防范于未然。 场景 服务端程序猿根据需求开发出业务相关的接口,用来满足需求中用户和服务器交互的功能,提供给前端或者客户端(PC端软件,APP端应用)使用, 大部分程序猿在开发接口的时候就仅仅去考虑如何实现业务上的逻辑功能,而往往很少会去考虑接口的安全性问题, 一般服务端提供的接口都是http/https协议的,通过Fiddler,Wireshark,Charles等抓包工具,可以抓取到请求,然后进行分析,模拟请求,进行并发请求,或者修改信息的攻击。 例子: 问题1. 接口暴露用户隐私信息就相当于在光天化日下裸奔,被看光了 描述:程序猿在做业务接口的时候往往没有保护用户隐私的意识,把用户的隐私信息暴露在外面,一旦被人利用起来会给用户带来麻烦,同时被发现会降低平台的信任度; 防: 用户隐私数据加密,加*号,如用户的相关数据的JSON中有用户手机号,用户邮箱,支付账号,邮寄地址等隐私数据; 用户请求接口时需要对其隐私参数加密:如用户登陆请求登陆接口,需要将用户密码进行可逆加密,以免接口被恶意代理捕捉请求后获取明文密码;

Java开发人员的升级之路

有些话、适合烂在心里 提交于 2020-04-07 05:34:06
第一部分:对于参加工作一年以内的同学。恭喜你,这个时候,你已经拥有了一份Java的工作。 这个阶段是你成长极快的阶段,而且你可能会经常加班。但是加班不代表你就可以松懈了,永远记得我说的那句话,从你入行那一刻起,你就要不停的学习。在这一年里,你至少需要看完《Java编程思想》这本书。这本书的内容是帮助你对于Java有一个更加深入的了解,是Java基础的升级版。这本书很厚,当初看这本书,我花了整整三个月。正常速度的话,应该可以在半年左右看完。我这里不要求过高,只要你在一年以内把这本书看完即可。当然了,我所说的看完,是充分吸收,而不是读一遍就完事了,因此有些内容你可能会看不止一遍。总而言之,这个阶段的核心学习思想就是,在工作中实践,并且更加深入的了解Java基础。 第二部分:对于参加工作1年到2年的同学。这部分时间段的同学,已经对Java有了一个更加深入的了解。 但是对于面向对象的体会可能还不够深刻,编程的时候还停留在完成功能的层次,很少会去考虑设计的问题。于是这个时候,设计模式就来了。我当时看的是《大话设计模式》这本书,并且写了完整版的设计模式博客。因此,我要求大家,最多在你工作一年的时候,必须开始写博客,而设计模式就是你博客的开端。 请记住,我所提的基本都是最低要求,因此不要有任何松懈的心理,否则五年后,你不要去羡慕别人高于你的工资,也不要去羡慕别人进入了某公司。这一年

golang逃逸分析

蓝咒 提交于 2020-03-25 21:25:10
带GC语言给我们程序的编写带来了极大的便利,但是与此同时屏蔽了很多底层的细节,比如一个对象是在栈上分配还是在堆上分配。对于普通的代码来说虽然不需要关心这么多,但是作为强迫症程序猿,还是希望能让自己写出来的代码性能最优,所以还是需要了解什么是逃逸,以及如何判断是否发生了逃逸。 什么是堆和栈? 首先需要知道,我们说的堆和栈是啥。这个可不是数据结构里面的"堆"和"栈",而是操作系统里面的概念。 栈 在程序中,每个函数块都会有自己的内存区域用来存自己的局部变量(内存占用少)、返回地址、返回值之类的数据,这一块内存区域有特定的结构和寻址方式,大小在编译时已经确定,寻址起来也十分迅速,开销很少。这一块内存地址称为栈。栈是线程级别的,大小在创建的时候已经确定,所以当数据太大的时候,就会发生"stack overflow"。 堆 在程序中,全局变量、内存占用大的局部变量、发生了逃逸的局部变量存在的地方就是堆,这一块内存没有特定的结构,也没有固定的大小,可以根据需要进行调整。简单来说,有大量数据要存的时候,就存在堆里面。堆是进程级别的。当一个变量需要分配在堆上的时候,开销会比较大,对于go这种带GC的语言来说,也会增加gc压力,同时也容易造成内存碎片。 为什么有的变量要分配在堆,有的要分配在栈? 这个问题要从C++说起了。在C++中,假设我们有以下代码: ```c++ int* f1() { int

连载《一个程序猿的生命周期》- 44.感谢,我从事了IT相关的工作

邮差的信 提交于 2020-03-24 14:08:44
感谢博客园一直以来的支持,写连载都是在这里首发,相比较CSDN和开源中国气氛要好的多。 节前,想以此篇文章结束《一个程序猿的生命周期》的《生存》篇,对过10的年做一个了断,准备开启新的起点。 正文: 从《 0.一贫如洗的家境 》写到现在,父母已经58了,我也已经30岁了,我的孩子也已经3岁了。时代的变迁造就了我们现在美好的生活,而在人生的旅途上也付出了无数的艰辛。当你暮然回首的时候,那些可能连屁都算不上,难道你还会怀疑你的前途嘛!!! 从事IT相关的工作(不敢妄称IT行业),仅仅为了自己的生存。但是,一不小心也保证了家庭的生存,实乃意外之惊喜。父母付出的一切,也算传承下来了。 多年走来,并没有哪位领导说:**你在什么时间把这个东西给我做出来。没有出现此类情况实属万幸,全凭自己的主动性去工作。但是不得不说,我的发展遇到了瓶颈,储备了很多知识无用武之地,或者说将何去何从。如果仅仅为了一份工作,那也没有必要考虑这些。和以前的总经理聊天,他说:**你平时不怎么说话,但是说出来的话很有见地......唯一缺少的就是实践。不谦虚的说,他的评价是对的。和每天保持的阅读量和思考有直接的关系。但是,不是所有平台都有实践的机会,天时、地利、人和缺一不可。在等待机会的时候是一件很熬人的事,甚至是苦闷, 就像一位饥饿的农民在守株待兔,兔子什么时候会来呢?! 程序猿的疑惑,干到30?干到35

一个人把项目做上线你怎样想的?

谁说我不能喝 提交于 2020-03-11 06:50:01
这篇就随随便便的写写,乱写,想起啥写啥,想说啥写啥!不用像写博客时候那么严谨,其实只是突然想说说公司项目做上线之后的一点点感悟: 首先,自己是一四年九十月份才接触到iOS,那时候大四,开始了自己一个人的摸索学习之路,其实仔细算算,真正在公司开始接触项目做也就两年!刚开始第一个项目,多人一起开发,可惜的是,那公司没有大神!自己刚开始的一点点小心思没有达成!(原本想着有大神带带,成长的更快!)有问题也只能靠自己!老觉得第一个项目 -- 拿来练手了~ 第一个项目自己也就是写代码实现一些简单的功能,其他的是根本就用不着担心别的。说实在的,那时候能解决一些问题会感觉很开心,感觉自己真叼,虽然现在觉的那时候挺幼稚的。选择这行,刚开始是觉得好混吃混喝,或者大学毕业无路可走等等理由!虽然后来脸被打的啪啪响。到现在也还留着第一个项目时候的源码,有时候没事做了,会运行起来看看,看看那丑到哭的界面,那时候没发现吗?恩,有,记得刚上线的时候自己还开心的发了条朋友圈,有朋友问APP的名字,没好意思说!为什么?因为公司人都觉得界面丑到哭,这...TM就尴尬了,毕竟是自己做的东西啊!恩...仔细想想后来,还是不好意思说!不知道什么时候,它就变成了我的一个梗,很烂的梗!不过还好,相比技术,在第一家公司认识了一帮年龄相同,臭味相投的朋友,这点,很挺欣慰!那时候公司的老板真的是一个你看见就烦,听见声音就烦的人

程序猿必备福利之二下篇!!!简易使用Nodejs实现从美图网爬取清晰脱俗的美图??

别等时光非礼了梦想. 提交于 2020-03-11 02:40:29
从 程序猿必备福利之二上篇 我们知道了将请求到的数据写入文件和对请求地址进行安全判断,然而请求到数据都是一整块的text/HTML网页文件格式的数据,这时我们要对数据进行筛选,则需要用一个到第三方模块 cheerio 可查看了解一下使用方法 当然这里还是要先爆一波福利,本章节加上 程序猿必备福利之二上篇 点击查看 你学会了,你就会这波福利了,嘿嘿嘿嘿嘿!!! 1.这里还是要重复一遍如对nodejs有什么不懂可以查看下面相关内容, 浅学易懂 ,知晓nodejs的可以略过 推荐的相关资料,内容都是满满的干货 i.小白如对nodejs是什么,以及nodejs npm配置源是什么不知可查看 nodejs简介 以及配置nodejs的 环境变量 ii.如不知nodejs简单的对文件与文件夹的curd请查看 文件的curd 或查看 node文件的读写判断 以及Nodejs对内置模块fs的进阶使用方法技巧 nodejs进阶 iii.如对这些都以知晓可查看nodejs如何使用第三模块express简单 创建服务器 查看 vi.如何使用express框架搭建node服务,编写node脚本代码,并在浏览器请求服务,简单体验前后交互的流程,点击查看 前后交互流程 以及前后交互的 js代码 2.现在开始进入我们的正题,从 程序猿必备福利之二上篇 知道我们请求的数据都是网页文件格式而且是一整块的

爆笑的程序员梗,笑死人不偿命!

时光总嘲笑我的痴心妄想 提交于 2020-02-29 19:29:54
爆笑的程序员梗,笑死人不偿命! 问答 Q:你是怎么区分一个内向的程序员和一个外向的程序员的? A:外向的程序员会看着你的鞋和你说话时。 Q:为什么程序员不能区分万圣节和圣诞节? A:这是因为 Oct 31 == Dec 25!(八进制的 31==十进制的 25) 2.火车 火车一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面是一个老奶奶 和一个年轻漂亮的姑娘。两个上前坐了下来。程序员和那个姑娘他们比较暧昧地相互看对方。这时,火车进入山洞,车厢里一片漆黑。此时,只听见一个亲嘴的声 音,随后就听到一个响亮的巴掌声。很快火车出了山洞,他们四个人都不说话。 那个老奶奶在喃喃道,“这个年轻小伙怎么这么无礼,不过我很高兴我的孙女扇了一个巴掌”。 项目经理在想,“没想到这个程序员居然这么大胆,敢去亲那姑娘,只可惜那姑娘打错了人,居然给打了我。” 漂亮的姑娘想,“他亲了我真好,希望我的祖母没有打疼他”。 程序员坐在那里露出了笑容,“生活真好啊。这一辈子能有几次机会可以在亲一个美女的同时打项目经理一巴掌啊” 3.PHP 女神:你能让这个论坛的人都吵起来,我今晚就跟你走。 程序猿:PHP语言是最好的语言! 论坛炸锅了,各种吵架。 女神:服了你了,我们走吧,你想干啥都行。 程序猿:今天不行,我一定要说服他们,PHP语言是最好的语言

用GIF图片来告诉大家程序猿的真实生活

狂风中的少年 提交于 2020-02-29 03:45:37
程序猿的生活究竟是怎样的?今天小编就用GIF图片来告诉大家程序猿的真实生活。(图片较多,请谨慎加载!)   当你往产品环境中加入一些东西时:   当你没有Google就发现问题的解决方法时:   当你没保存代码就关闭了IDE接口时:   凌晨3点还在修Bug时:   当表达式返回值正如你所料时:   当老板告诉你,你开发的模型压根就没在用时 :   当你告诉老板你已经修复了Bug时:   当你没测试代码就上传,结果完美运行时:   营销部那群“贱人”向程序猿展示销售业绩时:   还记得你初次将美丽的CSS加到网页中的样子吗:   当系统管理员开放root权限时:   你熬了一整夜、耗了一整天,开始调试代码时:   周末,所有人都在加班就你一个人在休息时的感觉:   当老板在找人修复严重Bug时:   项目提前完成,收获意外奖励时:   尼玛,上周五还行的东西周一就挂了时:   当你漫无目的、无规格地开发时:   老板告诉我,“调试就是专门给不会编程的人准备的”时,你真想……   当你更新完数据库脚本,上传后发现整个数据库都被清除了…… 来源: https://www.cnblogs.com/ainima/archive/2013/03/01/6331059.html

Spring Boot 1.5.x 基础学习示例

☆樱花仙子☆ 提交于 2020-02-28 07:27:49
一、为啥要学Spring Boot?      今年从原来.Net Team“ 被 ”转到了Java Team开始了微服务开发的工作,接触了Spring Boot这个新瓶装旧酒的技术,也初步了解了微服务架构。Spring Boot是Spring4之后整合的产物,它摒弃了原来Spring的一大堆的配置,采用了约定大于配置的方式,还是原来的配方,还是原来的佐料,让各路开发人员能够快速地使用Java开发微服务程序。其实,当我们了解了Spring Boot之后,会发现ASP.Net Core和Spring Boot很像,他们都是适合做微服务的技术。不过,对于Spring Boot的资料和相关的生态"看"起来要好一些(比如我现在公司已经没有多少.Net的新项目了),对于.Net程序员来讲,多掌握一门开发技术的需求越来越明显。这两年间,博客园的.Net程序员已有不少转到了或者已经掌握了基于Java的微服务开发技术(Spring Boot & Spring Cloud),这也说明了市场的需求变化。对于我来说,虽然我不排斥Java也在积极学习Java,但我还是更爱.Net Core一些(没办法, C#用的最爽 ),可能这就是初恋的味道把。但是,我也强烈建议.Net程序员多掌握一门技术,特别是在当今Spring Boot等框架已经为我们降低了很多学习门槛的基础上

对于非程序猿来说,我们能用python来做些什么?

谁说我不能喝 提交于 2020-02-21 11:33:27
对于学习python的动机,对于专业的程序猿来说,当然是一门手艺。优秀的程序猿年薪百万,能够实现财务自由过上理想的生活。但是程序猿也不是所有人都能当的,第一是需要年富力强的脑力和体力;第二是需要经过大量的编程的训练;第三可能还需要一点点的天赋。更何况程序猿工作辛苦,还会有秃头的风险。所以不是所有人都能当程序猿的,那么问题来了,对于非程序猿来说,我们要学编程吗?以python为例,我们究竟能用python来做些什么呢?以下是我整理的一些python编程对于普通人(非程序猿)来说的一些作用,之后会考虑每一个都开一个专栏。 1.从海量文件中提取所有的指定数据数; 2.处理相册和图片,寻找需要的图片; 3.把所有文件的名字重命名; 4.自动发送邮件、微信、短信; 5.暴力求解初高中数学题; 6.批量处理excel、word文档; 7.爬虫搜集网络数据; 8.编写游戏、游戏外挂; 9.开发个人Web网站; 10.开发智能微信公众号; 11.数据分析、数据挖掘并做可视化展示给老板看; 12.做一个智能机器人; 13.人脸识别打卡签到; 14.制作美颜相机; 14.制作翻译器等桌面软件; 15.批量下载音乐、视频; 16.微信防撤回插件; 17.淘宝京东商品比价; to be continued. 参考文献: 进阶:80个python练手项目列表 来源: CSDN 作者: 梧桐雪 链接: