Coding
GarfieldEr007
这个作者很懒,什么都没留下…
展开
-
MySQL防止重复插入唯一限制的数据 4种方法
MySQL防止重复插入唯一限制的数据,下面我们逐一分析 :1.insert ignore into当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')这种方法很简便,但是有一种可能,就是加入不是因为重复数据报错,而是因为其他原因报错的,也同样被忽略了~2.on duplicate key upd...转载 2022-02-06 11:06:41 · 2117 阅读 · 0 评论 -
Make it run, make it right, make it fast
如果问我工作十多年后相比刚毕业参加的时候,学到了哪些重要的经验,那么“Make it work, make it right, make it fast”一定是其中最重要的经验之一。第一次听到这句话是从以前老板@沈嵘那里,然后发现是来源自大牛Kent Beck《Make It Work Make It Right Make It Fast》。这是软件项目开发的一条经典原则,实际上不...转载 2020-04-13 00:11:18 · 1119 阅读 · 0 评论 -
《构建之法》读后感之项目计划
最近看到《构建之法》的“8.6 计划和估计”这一节,颇多感触。这些年来,不同的阶段,对项目计划都有不同的认识和掌握。邹老师提到了制定计划的几个概念:目标、估计和决心。目标:表明一个希望达到的状态。例如,软件“五一”之前要投放市场!在建校一百周年之时把我校建成世界一流大学!不论这类目标如何重要,它们未必能够实现。 估计:以当前了解的情况和掌握的资源,要花费多少人力物力时间才能实现某事。...转载 2020-04-13 00:03:53 · 1049 阅读 · 0 评论 -
如何面试程序员
最近被“Homebrew作者因为不会在白板上翻转二叉树而被谷歌面试拒绝”这事各种刷屏,知乎、Quora都是热门问题,连LeetCode都专门增加了这道题。说到面试这种事,一般网上讨论的热点都是如何去应对面试的方法技巧,很少有文章去讲如何面试别人,而在工作几年后,去面试别人很有可能变成日常工作的一部分,而大多数时候是没有经过什么培训就被赶鸭子上架了,只能是自己逐步摸索。所以一直想整理总结一下如何...转载 2020-04-13 00:00:46 · 1128 阅读 · 0 评论 -
Code Review最佳实践
我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于...转载 2020-04-12 23:54:55 · 809 阅读 · 0 评论 -
如何高效的学习掌握新技术
最近一段时间,把React学习实践了一把,算是又多掌握了一门新技术,虽然学习过程比较辛苦曲折,但熟练掌握后感觉还是很好的,以后又多了一种选择,在技术思路上也开阔了很多。回想编程生涯这些年,2001年开始学习Asp,2002年学习Javascript,2003年学习Asp.Net/C#,2009年学习Objective-C,2013年又跳到前端这个大坑,从Nodejs到jQuery到Angula...转载 2020-04-12 23:52:09 · 1420 阅读 · 0 评论 -
从软件工程的角度解读任正非的新年公开信
昨天被任正非的那封《全面提升软件工程能力与实践,打造可信的高质量产品》的公开信刷屏了,作为一个软件工程专业科班出身的软件开发从业者,自然是引起了我(@宝玉xp)的好奇,仔细阅读之下确实让我大吃一惊,看似八股官方文,但细看之下是作者对于软件工程的理解确实非常深刻,各种专业术语信手拈来,比喻恰到好处。我对华为的研发其实一直挺好奇的,从传统的硬件公司,到现在软硬件齐头并进,华为手机销量都已经超过了苹...转载 2020-04-12 23:45:45 · 793 阅读 · 0 评论 -
如何参与一个 GitHub 开源项目?
最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势。而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力。对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能说你开源了自己的项目,可以任别人自由下载。那么该如何参与Github的开源项目呢?相信...转载 2019-11-22 22:05:43 · 692 阅读 · 0 评论 -
《阿里巴巴 Java 开发手册》读书笔记
偶然看到阿里巴巴居然出书了???趁着满减活动(节约节约....)我赶紧买来准备看看,刚拿到的时候掂量了好多下,总觉得商家给我少发了一本书,结果打开才知道..原来这本书这么小....编码规范的重要性别人都说我们是搬砖的码农,但我们知道自己是追求个性的艺术家。也许我们不会过多在意自己的外表和穿着,但在我们不羁的外表下,骨子里追求着代码的美、系统的美、设计的美,代码规范其实就是一个对程序...转载 2019-10-28 20:34:50 · 728 阅读 · 0 评论 -
编程的智慧
编程的智慧编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。反复推敲代码既然“天才是百分之一的灵感,百分之九十九的汗水转载 2015-12-28 12:45:16 · 995 阅读 · 0 评论 -
Leetcode 编程训练
Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义。我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了大学里的“算法和数据结构”里的好些最基转载 2015-12-15 12:37:26 · 932 阅读 · 0 评论 -
程序员技术练级攻略
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历转载 2015-12-15 12:42:48 · 1029 阅读 · 0 评论 -
如何写出无法维护的代码
酷壳里有很多我觉得很不错的文章,但是访问量最大的却是那篇《6个变态的Hello World》,和它能在本站右边栏“全站热门”中出现的还有“如何加密源代码”,以及编程真难啊等这样的文章。可见本站的读者们的偏好,我也相信你们都是“身怀绝技”的程序员。所以,今天给大家推荐这篇文章,相信一定能触动大家的兴奋点。这篇文章的原文在这里(http://mindprod.com/jgloss/unmain.h转载 2015-12-16 12:38:58 · 910 阅读 · 0 评论 -
如何成为牛逼的程序员
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:vczh链接:http://zhuanlan.zhihu.com/vczh-nichijou/19796639来源:知乎我有一个想法,不一定对。 第一篇文章(第一篇文章就贡献给投票了 - vczh的日常 - 知乎专栏)果然给了我灵感耶,标题的图片就是从评论里截出来的。为了以后回答那些层出不穷的转载 2015-12-16 12:42:10 · 1275 阅读 · 0 评论 -
如何看懂源代码--(分析源代码方法)
下文为经过Google翻译过的简体中文版:我们在写程式时,有不少时间都是在看别人的代码。 例如看小组的代码,看小组整合的守则,若一开始没规划怎么看, 就会“噜看噜苦(台语) ” 不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。 网路上有一篇关于分析看代码的方法,做为程式设计师的您,不妨参考看看, 换个角度转载 2015-12-16 13:56:50 · 1119 阅读 · 0 评论 -
2015 SegmentFault 黑客马拉松记录
We Came, We Saw, We Hacked上周末(2015.10.24),我们参加了由 segmentfault 组织的亚洲最大规模的黑客马拉松。这次的Hackathon在 北京 / 杭州 / 深圳 / 济南 / 武汉 多城同时联动。仅我们参加的北京赛区,就有30多个团队,150余人。本次赛事采用全新命题制,北京赛区的题目是:“让技术走进生活”我觉得这转载 2016-01-18 15:12:01 · 1907 阅读 · 0 评论 -
Cocos2d-x 的3D游戏制作官方教程(中文翻译)
Cocos2d-x 在版本3开始已经支持了3D游戏开发的特性,我在官网文档看到3D开发的部分,觉得有必要记录一下,权当做学习笔记。因为只花了半天时间翻译,而且能力有限,各位看官勿喷。本博客虽然水分很足,但是也算是博主的苦劳了,如需转载,请附上本文链接http://blog.csdn.net/cyh_24/article/details/45702343,不甚感激!相信,你已转载 2016-01-18 15:13:35 · 1875 阅读 · 1 评论 -
并行编程中的“锁”难题
在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁、活锁等引起的多线程Bug;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。1. 用锁来防止数据竞跑在进行并行编程时,我们常常需要使用锁来保护共享变量,以防止多个线程同时对该变量进行更新时产生数据竞跑(Data Race)。所谓数据竞跑,是指当两个(或多个)线程同时对某个共享变量进行操转载 2016-01-18 15:52:36 · 993 阅读 · 0 评论 -
大学生如何进化到程序猿
我想,我下面的这个问题,是很多大学生,尤其是那些跟我一样非计算机专业的大学生,一直都困惑着的一个问题:我们应该怎么学习,以进化成一个合格的程序猿! 作为一名电科专业的学生,出于对编程的爱好,大学的这两年里,我一直在自学编程知识。从C到数据结构,到参加ACM竞赛,再到C#,现在又回过头来学习《C++Primer》。我就像一只无头的苍蝇,在这无尽的代码中乱窜,兴奋,却毫无方向。转载 2016-01-19 12:39:15 · 923 阅读 · 0 评论 -
关于C# this 指针
This关键字的另一种用法是使用一项名为构造函数链的技术来设计类。当定义了多个构造函数时,这个设计模式就会很有用。由于构造函数通常会验证传入的参数来强制各种业务规则,所以在类的构造函数集合中经常会找到冗余的验证逻辑。考虑如下更新后的Motocycle:Class Motorcycle{Public int driverIntensity;Public string转载 2016-01-19 12:39:23 · 1273 阅读 · 1 评论 -
编程的首要原则(s)是什么?
半年前,JoelOnSoftware和CodingHorror合搞的stackoverflow.com刚上线不久,我兴冲冲地跑过去扔了一个问题:你们认为编程的首要原则是什么?作为我的学习原则的一个实践:8. 学习一项知识,必须问自己三个重要问题:1. 它的本质是什么。2. 它的第一原则是什么。3. 它的知识结构是怎样的。5个月过去了,这个问题到现在还有人回复转载 2015-12-18 12:56:15 · 856 阅读 · 0 评论 -
Lua简明教程
这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动。我很好奇得浏览了一下Lua解释器的源码,这可能是我看过最干净的C的源码了。转载 2015-12-19 12:55:54 · 892 阅读 · 0 评论 -
Go 语言简介(上)— 语法
周末天气不好,只能宅在家里,于是就顺便看了一下Go语言,觉得比较有意思,所以写篇文章介绍一下。我想写一篇你可以在乘坐地铁或公交车上下班时就可以初步了解一门语言的文章。所以,下面的文章主要是以代码和注释为主。只需要你对C语言,Unix,Python有一点基础,我相信你会在30分钟左右读完并对Go语言有一些初步了解的。Hello World文件名 hello.go转载 2015-12-19 12:59:02 · 995 阅读 · 0 评论 -
Go 语言简介(下)— 特性
希望你看到这篇文章的时候还是在公交车和地铁上正在上下班的时间,我希望我的这篇文章可以让你利用这段时间了解一门语言。当然,希望你不会因为看我的文章而错过站。呵呵。如果你还不了解Go语言的语法,还请你移步先看一下上篇——《Go语言简介(上):语法》goroutineGoRoutine主要是使用go关键字来调用函数,你还可以使用匿名函数,如下所示:转载 2015-12-19 13:01:15 · 1097 阅读 · 0 评论 -
Lua 5.1 参考手册
Lua 5.1 参考手册by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes云风 译 www.codingnow.comCopyright © 2006 Lua.org, PUC-Rio. All rights reserved.1 - 介绍Lua 是一个扩展式程序设计语言,它被设计成转载 2015-12-20 12:49:13 · 1555 阅读 · 0 评论 -
尾递归与Continuation
这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章,权当一次互联网资料的补充。:P递归与尾递归关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度:public class Node{ pub转载 2015-12-20 12:53:55 · 951 阅读 · 0 评论 -
尾递归对时间与空间复杂度的影响(上)
以前我也在博客上简单谈过“尾递归”及其优化方式方面的话题。前几天有同学在写邮件向我提问,说是否所有的递归算法都能改写为尾递归,改写成尾递归之后,是否在时间和空间复杂度方面都能有所提高?他以斐波那契数列为例,似乎的确是这样的情况。我当时的回答有些简单,后来细想之后似乎感觉有点问题,而在仔细操作之后发现事情并没有理论上那么简单,因此还是计划写篇文章来讨论下这方面的问题。斐波那契数列大家转载 2015-12-20 12:55:27 · 2341 阅读 · 0 评论 -
浅谈尾递归的优化方式
在上文《尾递归与Continuation》里,我们谈到了尾递归的概念和示例,不过有些朋友对于尾递归的功效依然有所怀疑。因此现在,我再简单讲解一下尾递归的优化原理,希望能给大家以一定理性认识。尾递归的循环优化尾递归,即是递归调用放在方法末尾的递归方式,如经典的阶乘:int FactorialTailRecursion(int n, int acc){ if (n ==转载 2015-12-20 12:57:38 · 2252 阅读 · 0 评论 -
浅谈线程池(上):线程池的作用及CLR线程池
线程池是一个重要的概念。不过我发现,关于这个话题的讨论似乎还缺少了点什么。作为资料的补充,以及今后文章所需要的引用,我在这里再完整而又简单地谈一下有关线程池,还有.NET中各种线程池的基础。更详细的内容就不多作展开了,有机会我们再详细讨论这方面的细节。这次,还是一个“概述”性质的,希望可以说明白这方面问题的一些概念。线程池的作用其实“线程池”就是用来存放“线程”的对象池。在转载 2015-12-20 12:59:30 · 904 阅读 · 0 评论 -
浅谈线程池(中):独立线程池的作用及IO线程池
在上一篇文章中,我们简单讨论了线程池的作用,以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,有助于我们在程序中选择合适的使用方式。独立线程池上次我们讨论到,在一个.NET应用程序中会有一个CLR线程池,可以使用ThreadPool类中的静态方法来使用这个线程池。我们只要使用QueueUserWorkItem方法向线程池中添加任务,线程转载 2015-12-20 13:00:41 · 2604 阅读 · 0 评论 -
浅谈线程池(下):相关试验及注意事项
三个月,整整三个月了,我忽然发现我还有三个月前的一个小系列的文章没有结束,我还欠一个试验!线程池是.NET中的重要组件,几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义,以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”,于是我们还是要通过试验来“验证”这些说明。此外,我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力,如果您这方面转载 2015-12-20 13:02:00 · 1289 阅读 · 0 评论 -
浅谈代码的执行效率(1):算法是关键
前一段时间在博客园里看到这样一篇文章,那位兄弟谈到程序效率的关键是“简短”。他说,“程序越简短,其可执行代码就越少,就越有效率”,而在编写程序的时候,“要尽量改进我们的算法,而改进算法中最重要的一条,就是减少语句”。这句话从表面上似乎正确,但我认为性能这问题不能用“简短”这种方式去思考,否则会进入一些误区。我整理了一下思路,希望可以从几个方面把详细谈一下这个问题。首先,如果说“简短的代码效转载 2015-12-20 13:04:00 · 1544 阅读 · 0 评论 -
浅谈代码的执行效率(2):编译器的威力
在上一篇文章中,我主要表达了这样一个观点:影响程序效率的关键之一是算法,而算法的选择与优化,和是否多一个赋值少一个判断的关系不大。关于算法的选择,我谈到其理论上的复杂度,并不直接反映出效率。因为在实际运用时,数据的规模,特征等等都会涉及到算法的实际效果。一个时间复杂度低的算法并不代表任何情况下的效率都高。这是“实际”和“理论”的区别之一。现在我打算来谈一下另一个比较“实际”的东西:编译器对于程序效转载 2015-12-20 13:05:41 · 1553 阅读 · 0 评论 -
浅谈代码的执行效率(3):缓存与局部性
在前两篇文章里,我们讨论了程序性能的两个方面,一是算法(广义的算法,即解决问题的方法),二是编译器。通过这两个方面,我想表达的意思是,一段程序的执行效率,是很难从表面现象得出结论的,至少从一些简单的层面,如代码的长度是几乎难以说明任何问题——因此一定要进行Profiling才能做到有效的优化。而现在,我们假设两段程序算法基本相同,编译器也只是进行简单的“翻译”,那么……我们能从“表面”看出性能高下转载 2015-12-20 13:07:03 · 1523 阅读 · 0 评论 -
浅谈代码的执行效率(4):汇编优化
终于谈到这个话题了,首先声明我不是汇编优化的高手,甚至于我知道的所有关于汇编优化的内容,仅仅来自于学校的课程、书本及当年做过的一些简单练习。换句话说,我了解的东西只能算是一些原则,甚至也有一些“陈旧”了——不过我想既然是一些原则性的东西,还是能够用它来做一定程度的判断。至少我认为,我在博客园里看到的许多关于“汇编优化”也好,“内嵌汇编”也罢的说法,经常是有些问题的。说到汇编优化,自然被人想转载 2015-12-20 13:08:07 · 3474 阅读 · 0 评论 -
趣味编程:函数式链表的快速排序
前一段时间有朋友问我,以下这段Haskell快速排序的代码,是否可以转化成C#中等价的Lambda表达式实现:qsort [] = []qsort (x:xs) = qsort (filter (= x) xs)我当时回答,C#中缺少一些基础的数据结构,因此不行。经过补充之后,就没有任何问题了。后来,我觉得这个问题挺有意思,难度适中,也挺考察“基础编程”能力的,于是就自己写了一个。如转载 2015-12-20 13:51:00 · 1308 阅读 · 0 评论 -
趣味编程:函数式链表的快速排序(参考答案)
之前我提出了一个“趣味编程”,模仿Haskell的方式对一个链表进行快速排序。在那篇文章中我解释了Haskell列表的结构,并给出了ImmutableList的基础实现。快速排序的例子很多,多做也没有意思。这题虽然打着“快速排序”的旗帜,但事实上这里的关键在于实现ImmutableList数据结构的相关操作——否则为什么叫“函数式链表”的快速排序呢?。一开始,我提出使用null来表示一转载 2015-12-20 13:52:12 · 1050 阅读 · 0 评论 -
趣味编程:从字符串中提取信息
字符串解析是程序员工作中非常重要的一部分,也是非常考验编程能力的工作。基本上我在面试程序员的时候,一定会出一道编程题目作为考察的一方面,而这道题目有很大的可能性是做字符串的解析。例如,给出一个模式规则,要求写程序判断某个字符串是否符合特定格式。例如,要求将BB Code转化为HTML。而现在这个趣味编程题,来自于我目前正在进行的项目。因此从实用角度来说,也有一定现实意义。这个标题基本上没有转载 2015-12-20 13:53:28 · 1391 阅读 · 0 评论 -
趣味编程:从字符串中提取信息(参考答案 - 上)
这次“趣味编程”的目的是解析字符串,从一个指定模式的字符串中提取信息。对于目前这个问题,解决方案有很多种,例如直接拆分,使用正则表达式,或是如现在本文这般按照顺序解析。总结果上来说,这些做法都是可取的,不过现在我打算举出的做法是我认为最为“典型”也最有“学习”和“展现”价值的解决方案:基于状态机的顺序字符解析。也欢迎您对此其他的做法进行深入分析。您可能需要重新阅读上一篇文章来回忆字符串解析转载 2015-12-20 13:54:46 · 1421 阅读 · 0 评论 -
趣味编程:从字符串中提取信息(参考答案 - 下)
昨天我们观察了如何使用基于状态机的顺序解析方式来提取字符串中的信息,不过由于winter-cn的做法和我原始的想法不谋而合,但实现的更为清晰,因此我在不献丑的同时,又设法使用另外一种方式来解决这个问题。后来又看到许多朋友给出了各种各样的做法,有普通拆分的方式,有利用正则表达式的做法。于是最后,我“不得不”使用一种特别的方式:F#来编写这么一段解析逻辑。从中我们也可以看到F#在做一些解析工作时的方便转载 2015-12-20 13:56:02 · 1223 阅读 · 0 评论