红米手机|十二篇文章判定一个程序员,看完之后你觉得你是程序员吗( 三 )


那么问题来咯

  1. 为什么字符串是不可变的?
  2. 【红米手机|十二篇文章判定一个程序员,看完之后你觉得你是程序员吗】如何正确拼接字符串?

第十一篇、程序员安全有一个计算机系的学生在StackOverFlow上问了这个问题 。 就像我们了解到的一些常见编程概念比如操作系统 , 算法 , 数据结构 , 计算机体系结构 , 以及其它东西一样 , 了解安全也同样重要 。 安全是一个很大的话题 , 包括加密解密 , SSL , WEB安全 , 混淆 , 认证 , 授权 , 等等 , 它是每个程序员都应该了解的基础知识 。 刚进这行的时候 , 我个人对安全这块还不是很了解 , 这时候我就开始基于Servlet/JSP写一些的Java WEB程序 , 后来我才了解到EWB安全性以及一些安全威胁比如SQL注入 , 拒绝服务 , XML注入 , 跨站脚本 , 等等 。 作为一名Java开发人员 , 我现在遵循fortify PMP , 以及其它一些静态代码分析器提供的Java安全编码规范进行编码 。 我现在觉得我是程序员啦 。
第十二篇、程序员小心翼翼的延迟时间不管用的是什么语言 , Java还是C++都好 , 要写出高性能的应用程序 , 你都得了解延迟时间的基础常识 ,
这些问题你都知道吗?
  1. 从内存中读取一个变量需要多久?
  2. 从一级缓存中读取又需要多久 , 二级缓存呢?
  3. SSD硬盘中随机读又需要多久 , 还有要是从磁盘中读呢?
  4. 互联网的加锁解锁需要多长时间?
  5. 从一个城市发送一个数据包到另一个城市需要多长时间?
  6. 在同一个数据中心又需要多久?
这些延迟的数字是独立于任何编程语言的 , 开发人员必须要想写高频低延迟的应用程序 , 它们是核心知识库中的一部分 。
学习Java语言这些只是冰山一角 , 但并不是所有人都有热情去学习 。 写程序是一份很有挑战的工作 , 在你的职业生涯中 , 能帮忙到你的就是这些基础知识 , 比如 , 内存 , Unicode , 浮点数 , 时间 , 安全 , 这些对任何程序员来说都非常重要 。
真好看的图


推荐阅读