博主说明 -- 重要.重要.重要的事情说三遍 写这篇文章是主要锻炼写博客的能力以及记录自己的成长经历,要是写的不对欢迎大佬评论指正,同时希望对大家有所帮助.然后我写博客尽量简洁+图片+宏观的方式,便于大家理解,同时自己也不喜欢写的太复杂. 出现BUG 程序一旦出现报错,我相信很多人都和我一样 --> 复制异常 --> 打开谷歌搜索 --> 点击前三个页面 --> 嗯,原来如此,我知道了,![](https://images.cnblogs.com/cnblogs_com/CoolB…
原创文章 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希望这篇文章会是你看到过的最全面最权威的回答. 一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的.下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法. 1-1 常用数据结构 数组.链表.堆.栈.队列.Hash表…
我在面试 Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候选人直接说没写过.我就想,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分,有没有放过自定义对象?而这个时候,候选人说放过,于是两个问题的回答就自相矛盾了. 最近问下来,这个问题普遍回答不大好,于是在本文里,就干脆从hash表讲起,讲述HashMap的存数据规则,由此大家就自然清楚上述问题的答案了. 1 通过Hash算法来了解HashMap对象的高效性 我们先复习数据结构里…
本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的技巧,技巧我讲,公司你选,两厢便利. 毕业生和初级程序员(一般是工作经验3年以下)大多处于事业的青黄不接的阶段,在找工作时往往会遇到缺乏实际项目经验的瓶颈,作为技术面试官,我也经常在面试过程中感受到这些候选人缺乏实际经验的缺陷.不过本人之前做过java兼职培训老师,也总结了些这批人群提升实际技能和面试技能的技巧,最近也老有人来问我这个,所…
表驱动法 1.相信很多刚从事工作的程序员或一些初级程序员在写代码的时候会出现对一些逻辑判断写成多层if-else嵌套的经历,这种方式在一些简单的层次中运用起来确实可行,但对于一些大型项目逻辑判断比较多的情况下,一下子嵌套十几个甚至更多的if-else就会显得吃力.混乱,降低了可读性.因此今天我要介绍一种代替if-else的方式-----表驱动法. 2.相对比于switch-case这种方式,表驱动法会更有效些:使用表驱动可以提高源程序的可读性,使之更简洁而且更容易修改与扩充. 3.对于表驱动方式…
程序员:统治世界or修复bug? 时至今日,我们依然生活在一个市场和技术受到高度崇拜的世界里,但是历史演化的规律提醒着我们:当一个东西开始成为社会崇拜的对象时,其中暗藏的不利因素将悄然的进行着.有人认为数字技术和互联网能够消除物理世界的不公平,但是我们今天看到,这种想法就像是认为完全自由的市场可以带给人们完全自由的发展一样,显得不切实际. 还记得自己初学编程的初衷吗?每一个热爱技术的人都有一个梦想:在未来的某一天,我要用我编写的软件统治这个世界. 现在,随着IT技术.互联网技术.人工智能的迅速发…
所有的编程语言中都有内存模型这个概念,区别于微架构的内存模型,高级语言的内存模型包括了编译器和微架构两部分.我试图了解了Java.C#和Go语言的内存模型,发现内容基本大同小异,只是这些语言在具体实现的时候略有不同. 我们来看看Java内存模型吧,提到Java内存模型大家对这个图一定非常熟悉: 这张图告诉我们在线程运行的时候有一个内存专用的一小块内存,当Java程序会将变量同步到线程所在的内存,这时候会操作工作内存中的变量,而线程中变量的值何时同步回主内存是不可预期的.但同时Java内存模型又告…
首先介绍下,目前C#作为一门快速开发的语言,在面试的过程中需要注意的技术知识点,了解下面的知识点对于初级工程师入职非常有帮助,也是自己的亲身体悟. 1.    简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public : 公共成员,完全公开,没有访问限制. internal: 只有在同一程序集的文件中,内部类型或成…
随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移动互联网后端,经典Windows界面开发,移动互联网端界面开发,跨平台界面开发,图形分析,系统架构,应用设计,还有现在最为流行的分布架构等一些新的技术领域. 这么牛的语言,你是不是想知道怎样学习和掌握它呢?接下来请看经过小编整理过C/C++工程师必备知识的思维导图. 初学者看到这么密集的知识点,是不…
之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路   实现这个需求的基本思路是读取这张图片每一个像素的色彩值,然后给excel里的每一个单元格填充上颜色.所以主要用到的是PIL.openpyxl这两个库. PIL使用   PIL是Python里面做图像处理的时候十分常用的一个库,功能也是十分的强大,这里只需要用到PIL里一小部分的功能. from PI…
自上周被微信小程序刷屏之后,这周大家都在谈微信小程序能够带来哪些红利的话题,其实我想从程序员的角度来谈谈,带给我们程序员来的红利,或许是我们程序员创业或者赚钱的机遇. 其实我从<作为移动开发程序员,你是否患有微信应用号“恐惧症”?>文章中已经说过了,微信小程序可能是原生的机遇,在程序员面对微信小程序的恐惧中说其实也是我们程序员创业的春天或者挣外快的一个机遇. 我们想想,像微信服务号是面对企业的一种宣传,对企业有利,而微信公众号是自媒体人的天下,打开了自媒体人的春天,自媒体时代到来了,对于爱写作…
作为程序员,Git 是一个很好的代码管理工具.Git 是一个版本控制系统,主要的作用就是记录代码的修改过程,有效的追踪文件的变化.当代码出现错误的时候可以很容易的恢复到之前的状态,不管对于个人开发还是多人协作开发项目都是必不可少的. 在Git shill 下的使用  (https://help.github.com) 一 安装Git http:://git-scm.com  提供windows.linux.mac os 二 配置Git 打开Git shell 输入命令:$ ssh-keygen…
浅谈程序员创业 ——作者:邓学彬.Jiesoft 1.什么是创业? 关于“创业”二字有必要重新学习一下,找了两个相对权威定义: 创业就是创业者对自己拥有的资源或通过努力能够拥有的资源进行优化整合,从而创造出更大经济或社会价值的过程.——百度百科 创业是一种思考.推理和行为方式,它为机会所驱动,需要在方法上全盘考虑并拥有和谐的领导能力.创业必须要贡献出时间.付出努力,承担相应的财务的.精神的和社会的风险,并获得金钱的回报.个人的满足和独立自主.——互动百科 两者都给出了明确的创业定义,这里想着重想…
作者熟悉二三十种编程语言,写了20多年代码.本书是作者对编程语言.开发流程.google的战略等的思考.比较有趣. 前面部分是作者对编程语言的一些思考.作者鄙视C++, Java,面向对象.比较有趣的是作者把编程语言和思想划分为自由和保守两大阵营.自由派希望快速发布,容忍bug和安全上的缺陷,保守派则重视安全和稳健 作者认为,设计优秀的弱类型系统比同样优秀的强类型系统更有竞争力. 作者推崇精简,认为代码最大的敌人是体格,也就是代码的行数. 作者认为Perl和Python两种语言的出现时间差不多,…
案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id.原因是修改了一个返回操作人姓名的函数,返回了操作人的id.但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员的id.该bug污染了一条修改记录,操作员手动删除就好了.回滚代码后恢复.本质是修改了函数的返回值,却没有查看所有调用的地方.这个函数的名字叫getinfo,但是在代码的其他模块中也有同名函数,返回的都是id,让修改的人以为都是一个函数,引起了混淆.所以函数名也要修改,做到通过名字能够清晰看出函数功…
这是个持续多年的话题了,很多大公司,尤其是牛逼的独立分包公司(开发公司)都会有代码审核和严格QA程序,一般的公司就很难说咯,在法律上目前还没有完全支持处罚程序员bug经济损失的判例(国内如此),国外也是分为故意损害和无意损害两类,但是举证故意损害举证很困难.就我的经验来说(我只在小公司和小小公司待过,大公司和超级公司只是从资料和论文以及产品里看过),一般会有限制级要求和程序性要求,其他的就是使命感和责任心的管理,加强程序员的自我管理是很重要的学问:这里说的是OKR,不是KPI:技术型公司不适用制…
 C# 常见的排序方式 冒泡排序(Bubble sort) 堆排序(Heap sort) 插入排序(Insertion sort) 归并排序(Merge sort) 快速排序(Quick sort) 选择排序(Selection sort) 希尔排序(Shell sort) 冒泡排序编码实现效果 //随机整数数组 , , , , , , }; //降序排列 ; i < intArrys.Length; i++) { ; j < (intArrys.Length - - i); j++) { ]…
好久没写博客了,重新学习C语言了的基础课程,发现很多东西都忘记的差不多了,闲来无事,总结一下关于指针的知识,希望能帮到像我一样的菜鸟们: 指针,众所周知是C语言的精华所在,不懂指针的话,你就不要说你学过C语言,因为实在是太丢脸了. 很多人,(当然,也包括我在刚学习指针的时候,被灌输的思想就是指针就是地址)然而,这仅仅是个部分正确的说法.指针与地址有着千丝万缕的联系,然而它又不完全同于地址,具体是什么,且听我慢慢道来. 一.指针与地址的关系 什么是地址?比如,你的内存有1K的存储空间,那么按字节给…
相信好多同行都用过Parse,而正是因为Parse给我们的开发带来的极大的便利,才有了项目从零开始,到正式上线仅仅用上不到两周的时间,现在Swift还在迅速的发展,很快就会占有大量的市场,现在就就结合Swift和Parse在结合现在苹果官方主推的storyBoard做一个简单的小demo,了解一下他们之间的结合使用 有关于使用Parse的一些框架我都分享到下面的网盘中链接如下: http://pan.baidu.com/s/1c09cCxi     首先先导入下载好的Parse的框架,接着我们在…
基于Linux的系统最美妙的一点,就是你可以在终端中使用命令行来管理整个系统.使用命令行的优势在于,你可以使用相同的知识和技能来管理随便哪个Linux发行版. 对于各个发行版以及桌面环境(DE)而言,要一致地使用图形化用户界面(GUI)却几乎是不可能的,因为它们都提供了各自的用户界面.要明确的是,有些情况下在不同的发行版上需要使用不同的命令来执行某些特定的任务,但是,基本来说它们的思路和目的是一致的. 在Fedora上通过命令行使用dnf来管理系统更新 在本文中,我们打算讨论Linux用户应当掌…
分销系统 微信公众号开发 分销系统 微信小程序…
提到http server,一般用到的都是Apache和nginx这样的成熟软件,但是,有的情况下,我们也许也会用一些非常轻量级的http server.http server的c++轻量级实现里,Mongoose和tinyhttpd这两个比较有名,而且很有参考价值. Mongoose只有一个.h一个.c,而且能够很好的跨平台.在工作中,有过Mongoose运用在PC软件和android app的实践,效果也还可以. cesanta/mongoose: Mongoose Embedded Web…
在"21.一个cgi的c++封装"中,我们封装了cgi,在这之上,我们可以再来封装一个webapi的framework.当然,前文的Casablanca是个不错的选择,但是它比较庞大,而且缺少一些业务上需要的功能. Web API应用架构设计分析(1) - 伍华聪 - 博客园http://www.cnblogs.com/wuhuacong/p/4614875.html 面向对象的WebAPI框架XXL-HEX - 许雪里 - 博客园http://www.cnblogs.com/xuxu…
实际工作的Protocol Buffer使用经验 # 写proto文件- 协议版本 项目用的是protobuf2,所以要指定 syntax = "proto2";- 包名 package xxx_yyy;- 优化选项 option optimize_for=LITE_RUNTIME;- 导入其它依赖的proto import "typea.proto";- message定义    - required定义必选    - repeated定义重复项,底层实现一般是l…
在"3.fastcgi.fastcgi++"中,我们了解了cgi,也尝试了fastcgi++,这里,再记录一种对fastcgi的封装. 1.cgi接口层    request_t 请求,提供get.set.get_path.get_remote_ip    response_t 应答,提供set_content_type.write    cgi_handler_t int handle(request_t & req, response_t & resp)    fr…
前台选中某些表,确定提交到后台,偶尔会报500错误,通过排查发现:由于后台代码写的不严谨,导致前台选中的表名如果全不存在的话就会导致后台走异常报500错误,所以决定在前台先对数据进行一次过滤,使至少有一个表名存在的话才会去走跳转语句.数据过滤成功之后再去请求下载的方法.下面相关代码记录: 1.此处获取所有选中复选框的id. function getCheckbox(){ var checkbox = $('.un-p-l input'), len = checkbox.length, check…
不知不觉,到深圳实习已经三个礼拜了.跟在暑假的三个半月实习不一样,这次收获更多,感受更好,算是摆脱了那次实习给我带来的阴影(这个会放到以后才说). 在知乎上,有这么一个问题,你现在最想跟刚工作时的你说些什么.众多的回答里面,我对Fenng(冯大辉)的回答最有印象,其中一点就是要养成好习惯,在几年之后你就会发现自己比别人牛逼好几倍.坚持做总结,让自己好的地方做得更好,做得不好的地方有所改进,起码是不要继续恶化,就算不会让自己像是得了作弊器一样逆天升级,收获也会比什么都不做多得多吧. 第一周关键词:…
我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打将近10年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折. 详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟. 面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人-他很诚恳地告诉我,你还年轻,真的应该…
你们可能会想,我这么菜的吗?5分钟都坚持不了? 本文说起来会有点尴尬,毕竟这是我曾经经历过的故事 那时候的我还真菜,每天写着 if/ for 及一些简单的业务逻辑代码,虽工作有些日子了,但技术水平还停留在刚毕业的起步阶段. 记得,那是一个周末,我去某知名互联网公司面试,好像不到五分钟,我就被面试官亲切地赶出来了,当时我那个尴尬,内心深受打击. 为什么会被赶出来?这道题我记得很清楚,我不确定是不是因为这道题,但却是这道题结束了整个面试,大概的经过是这样: 面试官:HashMap 和 Hashtab…
我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕. 当年纪越来越大后,我开始变得不能加班.我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨).我在本地教育委员会社区里提供一些帮助,还组织开源兴趣小组参加活动. 我在思考,为什么以前会把如此多的时间全部用在编程上.大量的编程.那是我渴望深入研究一个类库,一个框架或一门技术. 现在的技术的学习曲线的增加,让我的忍耐性越来越低.各种新技术,因为新奇让人兴奋,但最终变成一场场争论…