我解释一下为什么我会说“盲目崇拜”,因为你没有看到那些*LIX哲学背后的东西。现代的软件是复杂的,从设计到底层全都很复杂。但无论是什么软件,本质都是简单的,也只有本质才能简单的描述出来。现代软件需要的有保存措施的错误处理、易用、容错、等各个方面,而*LIX哲学过度的强调简单,这些几乎都会去掉,跟本不做。还有就是与人类交换信息的方便程度,最开始时几乎为0,因为是要手动编写机器码,控制一堆开关,然后是卡片,然后到了键盘+终端,终于有了点样子。但很遗憾的是,由于历史遗留问题,*LIX给计算机领域带来了很负面的作用,把机器与人类交换信息的程度停留在了终端(命令行)。*LIX及其哲学不是主要的问题根源,而是大量的爱好者错误的认知,造成了现在*LIX这种落后,并且把落后视为先进的局面。 我实在无法想象,现代的文明还会有这些落后的东西,并还要被那个落后的哲学所影响。每当我用*IM的时候,始终感觉不到现代高科技的样子,当我用*ed替换文本时,也感觉不到半点现代高科技的样子。未来的计算机,机器与人类的信息交换肯定会提升几个层次,比如意念。绝对不可能几百年后还要人类去记一堆的命令,而必须是机器及软件承担大部分交互的责任,来贴近人类。(*LIX及其社区、爱好者从骨子里就反对好用的交互,而且他们也难做出。思想停留在终端) 就比如什么简单性,过分的强调,造成了简单到不好用的地步。现代的软件,不在于其内部简单还是复杂,而是易用、性能、功能强大、错误处理、保护、安全等各个重要的能力。不能因为这样造成软件编写会复杂就去掉!然而大部分*LIX软件就是这么做的,只做容易设计编写的,而不做任何与现代文明相符合的东西。 而且,软件最重要的,第一无论如何都是正确性!永远都必须是正确性第一!然后过分的强调简单,导致一些*LIX软件甚至为了简单性连软件的目的都不能正确完成。 没什么好说的,我真的觉得博主处于一种“盲目崇拜”的状态,盲目的意思,就是你看不清自身。你在敏捷、XML等各种地方都能看清,都能知道“不崇拜”和不“不完全反对”,不做信徒。但很遗憾的是,你最终还是在*LIX上做了信徒。这就是“盲目”,或许你自己也没有意识到自己成为了“信徒”。 有些人是微软的信徒,用C#,搞COM,全部都用微软的概念和工具,有些人则是苹果的信徒,还有一些,是*LIX的信徒。成为信徒是很可怕的,因为会“盲目”的以为所信的东西的对的、所信的东西其宣扬的”哲学”和”观点”是对的。就比如我,一直用C++,但绝对不会成为C++的信徒,一直在批判C++,别人骂C++我也不会有任何辩解的欲望。一直用Windows,也不会成为Windows的信徒,别人骂微软骂Windows丝毫都影响不到我。一直用Windows,但绝不会用VS这种臃肿的东西,而是用MinGW+CodeBlocks。在开发的软件中可以找出很多设计模式,但绝对不是刻意去搞的设计模式,而且是隐藏的。我可以说我不是任何“派”的“信徒”。 *LIX确实有可取的地方,但是,真的不多。(比如管道和把所有设备看成文件的做法,其实是错误的东西。) 回复
Thread.h 和 ThreadPool.h 1. Thread 类可以被创建,创建后该线程绑定到一个函数; 2. 其中的 Thread::start()方法开始使用线程运行函数, 线程类似 做事的人,函数类似工作,一件工作可以由多个人同时做, 也即多个线程可以去绑定同一个函数。 3. ThreadPool 类是创建多个线程,可以随意执行函数; 4. 需要执行的函数由 ThreadPool::run(const Task& task) 去指定, 函数名称可以不一样,功能也可以不一样,只要结构一致。 函数返回,会同步唤醒 std::deque queue_ 5. void ThreadPool::start(int numThreads)创建了多个空线程,阻塞在等待执行函数的队列 6. ThreadPool::Task ThreadPool::take() 函数即是从函数队列取出一个函数,条件是线程池正在运行 running_ == true 7. void ThreadPool::runInThread() 调用 take() 函数去拿函数,take 会阻塞(条件变量)。 8. std::deque queue_; 队列保存了需要放到线程中去执行的函数,所以 void run(const Task& f); 有可能阻塞,如果队列里面等待执行的函数已满。 9. void ThreadPool::stop() 函数通知(条件变量)所有线程,running_ 已经为 false, 等待的线程执行完当前绑定的函数后,会退出。 for_each(threads_.begin(),threads_.end(),boost::bind(&muduo::Thread::join, _1)); 使用 pthread_join 去确认线程完全退出。 退出的条件是: void ThreadPool::runInThread() 函数结束。 所以,有可能导致函数队列里面要执行的函数有些没有执行完成。 回复
你好,一直关注你的博客,从技术到人生,写的很有心得,赞,最近面试遇到一个面试题,一直解决不了,你帮我看看吗能,题目是这样的 : 象棋中马走日,问马从象棋的左下角(原点)到棋盘中的(x,y)处的最短步数,棋盘长宽为m和n java 语言 谢谢了 回复
推荐一个php版的web文件管理软件KodExplorer, 可以取代ftp,方便对网站进行备份、解压缩,文件夹拖拽上传; 在线编辑器 webIDE(60多种代码高亮,自动补全) 可以体验下:http://www.kalcaddle.com/download.html 谢谢! 回复
@宝酷 陈老师你好: 我工作快有一年了,目前从事Android系统底层的开发(PS:就是修改Android源码,按需求修改,添加),我的研究方向是LInux嵌入式开发,很想往这边发展,不知道具体怎么规划?怎么发展?求指导呀~~另外,我女友催婚,我们在一起7年了(高中+大学),我觉得不急,但是她说等不到了,我就想难道程序员注定孤独一生?压力山大呀?求解救呀?有好办法么? 回复
MakeYourChoice : @宝酷 陈老师你好: 我工作快有一年了,目前从事Android系统底层的开发(PS:就是修改Android源码,按需求修改,添加),我的研究方向是LInux嵌入式开发,很想往这边发展,不知道具体怎么规划?怎么发展?求指导呀~~另外,我女友催婚,我们在一起7年了(高中+大学),我觉得不急,但是她说等不到了,我就想难道程序员注定孤独一生?压力山大呀?求解救呀?有好办法么? @宝酷 回复
求教,做技术5年30岁了,一直做爪哇内部管理系统,大中小都做过,还是决心一直做下去,想转战互联网,技术上如何突破自己的瓶颈? 是把所有东西一把抓,还是某一个知识点深入下去,精力实属有限,生活麻烦一堆,实在没法尽善尽美,望前辈给个重点突破口吧。。 回复
真话传达着 : 我解释一下为什么我会说“盲目崇拜”,因为你没有看到那些*LIX哲学背后的东西。现代的软件是复杂的,从设计到底层全都很复杂。但无论是什么软件,本质都是简单的,也只有本质才能简单的描述出来。现代软件需要的有保存措施的错误处理、易用、容错、等各个方面,而*LIX哲学过度的强调简单,这些几乎都会去掉,跟本不做。还有就是与人类交换信息的方便程度,最开始时几乎为0,因为是要手动编写机器码,控制一堆开关,然后是卡片,然后到了键盘+终端,终于有了点样子。但很遗憾的是,由于历史遗留问题,*LIX给计算机领域带来了很负面的作用,把机器与人类交换信息的程度停留在了终端(命令行)。*LIX及其哲学不是主要的问题根源,而是大量的爱好者错误的认知,造成了现在*LIX这种落后,并且把落后视为先进的局面。 我实在无法想象,现代的文明还会有这些落后的东西,并还要被那个落后的哲学所影响。每当我用*IM的时候,始终感觉不到现代高科技的样子,当我用*ed替换文本时,也感觉不到半点现代高科技的样子。未来的计算机,机器与人类的信息交换肯定会提升几个层次,比如意念。绝对不可能几百年后还要人类去记一堆的命令,而必须是机器及软件承担大部分交互的责任,来贴近人类。(*LIX及其社区、爱好者从骨子里就反对好用的交互,而且他们也难做出。思想停留在终端) 就比如什么简单性,过分的强调,造成了简单到不好用的地步。现代的软件,不在于其内部简单还是复杂,而是易用、性能、功能强大、错误处理、保护、安全等各个重要的能力。不能因为这样造成软件编写会复杂就去掉!然而大部分*LIX软件就是这么做的,只做容易设计编写的,而不做任何与现代文明相符合的东西。 而且,软件最重要的,第一无论如何都是正确性!永远都必须是正确性第一!然后过分的强调简单,导致一些*LIX软件甚至为了简单性连软件的目的都不能正确完成。 没什么好说的,我真的觉得博主处于一种“盲目崇拜”的状态,盲目的意思,就是你看不清自身。你在敏捷、XML等各种地方都能看清,都能知道“不崇拜”和不“不完全反对”,不做信徒。但很遗憾的是,你最终还是在*LIX上做了信徒。这就是“盲目”,或许你自己也没有意识到自己成为了“信徒”。 有些人是微软的信徒,用C#,搞COM,全部都用微软的概念和工具,有些人则是苹果的信徒,还有一些,是*LIX的信徒。成为信徒是很可怕的,因为会“盲目”的以为所信的东西的对的、所信的东西其宣扬的”哲学”和”观点”是对的。就比如我,一直用C++,但绝对不会成为C++的信徒,一直在批判C++,别人骂C++我也不会有任何辩解的欲望。一直用Windows,也不会成为Windows的信徒,别人骂微软骂Windows丝毫都影响不到我。一直用Windows,但绝不会用VS这种臃肿的东西,而是用MinGW+CodeBlocks。在开发的软件中可以找出很多设计模式,但绝对不是刻意去搞的设计模式,而且是隐藏的。我可以说我不是任何“派”的“信徒”。 *LIX确实有可取的地方,但是,真的不多。(比如管道和把所有设备看成文件的做法,其实是错误的东西。) 有点意思,不同的声音 回复
现在很赞同这种观点 真话传达着 : 我解释一下为什么我会说“盲目崇拜”,因为你没有看到那些*LIX哲学背后的东西。现代的软件是复杂的,从设计到底层全都很复杂。但无论是什么软件,本质都是简单的,也只有本质才能简单的描述出来。现代软件需要的有保存措施的错误处理、易用、容错、等各个方面,而*LIX哲学过度的强调简单,这些几乎都会去掉,跟本不做。还有就是与人类交换信息的方便程度,最开始时几乎为0,因为是要手动编写机器码,控制一堆开关,然后是卡片,然后到了键盘+终端,终于有了点样子。但很遗憾的是,由于历史遗留问题,*LIX给计算机领域带来了很负面的作用,把机器与人类交换信息的程度停留在了终端(命令行)。*LIX及其哲学不是主要的问题根源,而是大量的爱好者错误的认知,造成了现在*LIX这种落后,并且把落后视为先进的局面。 我实在无法想象,现代的文明还会有这些落后的东西,并还要被那个落后的哲学所影响。每当我用*IM的时候,始终感觉不到现代高科技的样子,当我用*ed替换文本时,也感觉不到半点现代高科技的样子。未来的计算机,机器与人类的信息交换肯定会提升几个层次,比如意念。绝对不可能几百年后还要人类去记一堆的命令,而必须是机器及软件承担大部分交互的责任,来贴近人类。(*LIX及其社区、爱好者从骨子里就反对好用的交互,而且他们也难做出。思想停留在终端) 就比如什么简单性,过分的强调,造成了简单到不好用的地步。现代的软件,不在于其内部简单还是复杂,而是易用、性能、功能强大、错误处理、保护、安全等各个重要的能力。不能因为这样造成软件编写会复杂就去掉!然而大部分*LIX软件就是这么做的,只做容易设计编写的,而不做任何与现代文明相符合的东西。 而且,软件最重要的,第一无论如何都是正确性!永远都必须是正确性第一!然后过分的强调简单,导致一些*LIX软件甚至为了简单性连软件的目的都不能正确完成。 没什么好说的,我真的觉得博主处于一种“盲目崇拜”的状态,盲目的意思,就是你看不清自身。你在敏捷、XML等各种地方都能看清,都能知道“不崇拜”和不“不完全反对”,不做信徒。但很遗憾的是,你最终还是在*LIX上做了信徒。这就是“盲目”,或许你自己也没有意识到自己成为了“信徒”。 有些人是微软的信徒,用C#,搞COM,全部都用微软的概念和工具,有些人则是苹果的信徒,还有一些,是*LIX的信徒。成为信徒是很可怕的,因为会“盲目”的以为所信的东西的对的、所信的东西其宣扬的”哲学”和”观点”是对的。就比如我,一直用C++,但绝对不会成为C++的信徒,一直在批判C++,别人骂C++我也不会有任何辩解的欲望。一直用Windows,也不会成为Windows的信徒,别人骂微软骂Windows丝毫都影响不到我。一直用Windows,但绝不会用VS这种臃肿的东西,而是用MinGW+CodeBlocks。在开发的软件中可以找出很多设计模式,但绝对不是刻意去搞的设计模式,而且是隐藏的。我可以说我不是任何“派”的“信徒”。 *LIX确实有可取的地方,但是,真的不多。(比如管道和把所有设备看成文件的做法,其实是错误的东西。) 回复
再看java的代码时发现的 public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float value less than 0.5 return (int)floor(a + 0.5f); else return 0; } 0x1.fffffep-2f此处e是指数,那么p是什么意思? 回复
我解释一下为什么我会说“盲目崇拜”,因为你没有看到那些*LIX哲学背后的东西。现代的软件是复杂的,从设计到底层全都很复杂。但无论是什么软件,本质都是简单的,也只有本质才能简单的描述出来。现代软件需要的有保存措施的错误处理、易用、容错、等各个方面,而*LIX哲学过度的强调简单,这些几乎都会去掉,跟本不做。还有就是与人类交换信息的方便程度,最开始时几乎为0,因为是要手动编写机器码,控制一堆开关,然后是卡片,然后到了键盘+终端,终于有了点样子。但很遗憾的是,由于历史遗留问题,*LIX给计算机领域带来了很负面的作用,把机器与人类交换信息的程度停留在了终端(命令行)。*LIX及其哲学不是主要的问题根源,而是大量的爱好者错误的认知,造成了现在*LIX这种落后,并且把落后视为先进的局面。
我实在无法想象,现代的文明还会有这些落后的东西,并还要被那个落后的哲学所影响。每当我用*IM的时候,始终感觉不到现代高科技的样子,当我用*ed替换文本时,也感觉不到半点现代高科技的样子。未来的计算机,机器与人类的信息交换肯定会提升几个层次,比如意念。绝对不可能几百年后还要人类去记一堆的命令,而必须是机器及软件承担大部分交互的责任,来贴近人类。(*LIX及其社区、爱好者从骨子里就反对好用的交互,而且他们也难做出。思想停留在终端)
就比如什么简单性,过分的强调,造成了简单到不好用的地步。现代的软件,不在于其内部简单还是复杂,而是易用、性能、功能强大、错误处理、保护、安全等各个重要的能力。不能因为这样造成软件编写会复杂就去掉!然而大部分*LIX软件就是这么做的,只做容易设计编写的,而不做任何与现代文明相符合的东西。
而且,软件最重要的,第一无论如何都是正确性!永远都必须是正确性第一!然后过分的强调简单,导致一些*LIX软件甚至为了简单性连软件的目的都不能正确完成。
没什么好说的,我真的觉得博主处于一种“盲目崇拜”的状态,盲目的意思,就是你看不清自身。你在敏捷、XML等各种地方都能看清,都能知道“不崇拜”和不“不完全反对”,不做信徒。但很遗憾的是,你最终还是在*LIX上做了信徒。这就是“盲目”,或许你自己也没有意识到自己成为了“信徒”。
有些人是微软的信徒,用C#,搞COM,全部都用微软的概念和工具,有些人则是苹果的信徒,还有一些,是*LIX的信徒。成为信徒是很可怕的,因为会“盲目”的以为所信的东西的对的、所信的东西其宣扬的”哲学”和”观点”是对的。就比如我,一直用C++,但绝对不会成为C++的信徒,一直在批判C++,别人骂C++我也不会有任何辩解的欲望。一直用Windows,也不会成为Windows的信徒,别人骂微软骂Windows丝毫都影响不到我。一直用Windows,但绝不会用VS这种臃肿的东西,而是用MinGW+CodeBlocks。在开发的软件中可以找出很多设计模式,但绝对不是刻意去搞的设计模式,而且是隐藏的。我可以说我不是任何“派”的“信徒”。
*LIX确实有可取的地方,但是,真的不多。(比如管道和把所有设备看成文件的做法,其实是错误的东西。)
浩哥,想向你请教一下。oracle的长事务是怎么触发告警的?
是不是本身事务很长时间没有提交后,由oracle的后台进程触发告警吗?
谢谢啊!
鼠大,下个周就高考考完后暑假要学编程的入门,看完程序员升级攻略后开始学习PYTHON 然后发现国内站的教程不多,找到了国外的,在此想请鼠大推荐几个国外的交流站 可以分享吗
真的很喜欢这里的博文,希望能够多多看到linux与c/c++方面的内容,和程序设计哲学与IT趣事相关的内容。
真的非常非常精彩。
坑爹啊,google被和谐,被迫用百度,告诉我还有其他什么可以用?
@kof99
DDG
https://duckduckgo.com这个搜索引擎,如何?
看了很多文章,学习了,感谢博主
因为查询可视化编程来到这里,很喜欢你关于 code review 的见解。
大神您好!请问一下,现在谷歌被墙掉了,根本上不去,GAE翻墙貌似也失效了,请问您是怎么翻墙上技术网站的,非常感谢!
http://tp4.sinaimg.cn/1401880315/180/40054262531/1 明明是个图片啊,可是能扫,很神奇,怎么做到的?谢谢
嗨,网站的404页面貌似打不开哦
Thread.h 和 ThreadPool.h
1. Thread 类可以被创建,创建后该线程绑定到一个函数;
2. 其中的 Thread::start()方法开始使用线程运行函数,
线程类似 做事的人,函数类似工作,一件工作可以由多个人同时做,
也即多个线程可以去绑定同一个函数。
3. ThreadPool 类是创建多个线程,可以随意执行函数;
4. 需要执行的函数由 ThreadPool::run(const Task& task) 去指定,
函数名称可以不一样,功能也可以不一样,只要结构一致。
函数返回,会同步唤醒 std::deque queue_
5. void ThreadPool::start(int numThreads)创建了多个空线程,阻塞在等待执行函数的队列
6. ThreadPool::Task ThreadPool::take() 函数即是从函数队列取出一个函数,条件是线程池正在运行
running_ == true
7. void ThreadPool::runInThread() 调用 take() 函数去拿函数,take 会阻塞(条件变量)。
8. std::deque queue_; 队列保存了需要放到线程中去执行的函数,所以
void run(const Task& f); 有可能阻塞,如果队列里面等待执行的函数已满。
9. void ThreadPool::stop() 函数通知(条件变量)所有线程,running_ 已经为 false,
等待的线程执行完当前绑定的函数后,会退出。
for_each(threads_.begin(),threads_.end(),boost::bind(&muduo::Thread::join, _1));
使用 pthread_join 去确认线程完全退出。
退出的条件是:
void ThreadPool::runInThread() 函数结束。
所以,有可能导致函数队列里面要执行的函数有些没有执行完成。
你好,一直关注你的博客,从技术到人生,写的很有心得,赞,最近面试遇到一个面试题,一直解决不了,你帮我看看吗能,题目是这样的 : 象棋中马走日,问马从象棋的左下角(原点)到棋盘中的(x,y)处的最短步数,棋盘长宽为m和n
java 语言 谢谢了
陈老师,关于谷歌的问题,自从看了你的那篇做一个环保的程序员中百度的问题就改用谷歌了,可是用谷歌检索出来的大多是国外网站,是不是有必要学习好英语?
必需学好英文。
@kkingns
英语要有一定基础啊,好多一手资料都是英文的。
@IT运维那些事儿
http://sou-ip.com/404/ 貌似能打开哦
@turtlegood
google镜像可以用,不用代理就可以访问Google搜索。
翻墙的话,推荐使用goagent。
求教 向大神求教 如何在自己制作的一个静态网页中实现用一个播放器可以播放多个视频(来自视频网站)?
求教 向大神求教 如何在自己制作的一个静态网页中实现用一个播放器可以播放多个视频(来自视频网站)?
Ctrl + 单击@flance
茶话汇改版了,欢迎常来哈!!!
身处北京,google打不开,只能用baidu访问,见谅。
您好,这个guestbook是自己做得还是用的什么插件呀?
顶!! 我也可以交换个链接吗?这是我的个人主页(http://stbioinf.com/)是用Jekyll+Github的方法做的,@陈浩
文章 不错 看不懂
推荐一个php版的web文件管理软件KodExplorer,
可以取代ftp,方便对网站进行备份、解压缩,文件夹拖拽上传;
在线编辑器 webIDE(60多种代码高亮,自动补全)
可以体验下:http://www.kalcaddle.com/download.html
谢谢!
建议添加回到顶部按钮
@宝酷
陈老师你好:
我工作快有一年了,目前从事Android系统底层的开发(PS:就是修改Android源码,按需求修改,添加),我的研究方向是LInux嵌入式开发,很想往这边发展,不知道具体怎么规划?怎么发展?求指导呀~~另外,我女友催婚,我们在一起7年了(高中+大学),我觉得不急,但是她说等不到了,我就想难道程序员注定孤独一生?压力山大呀?求解救呀?有好办法么?
@宝酷
求教,做技术5年30岁了,一直做爪哇内部管理系统,大中小都做过,还是决心一直做下去,想转战互联网,技术上如何突破自己的瓶颈? 是把所有东西一把抓,还是某一个知识点深入下去,精力实属有限,生活麻烦一堆,实在没法尽善尽美,望前辈给个重点突破口吧。。
新晋女程序员一名,看了女程序员的文章,感动,加油努力!
请教一个java问题: 陈老师,麻烦您写篇文章专门讲解下java的反射机制吧 谢谢!
大半夜点了一下High一下,果真High翻了。
能加个友链么?linrc.com/blog
@turtlegood
偶每次都是在谷歌浏览器中开启代理,在其他浏览器中访问页面!
赞一个。
我csdn上发帖求大牛博客,然后就到了这里。
然后我每天基本都回来看看
为什么有的人有头像
有点意思,不同的声音
现在很赞同这种观点
请问那个high一下怎么实现的?
作为一个刚入行的程序员,我感觉到自己经常在工作开发中那种面对很多问题无法解决深深的无力感,怎么解决很多需要大量的计算和编写代码的问题?让自己可以慢慢做到优雅的创造呢?
怎么皓哥最近都没有更新呢
为什么我从来没有注册过。。。也没有怎么样,回复的时候却能显示我在网络上常用的ID呢。。。
怎么订阅到kindle上面?
额。订阅好了 - -
再看java的代码时发现的
public static int round(float a) {
if (a != 0x1.fffffep-2f) // greatest float value less than 0.5
return (int)floor(a + 0.5f);
else
return 0;
}
0x1.fffffep-2f此处e是指数,那么p是什么意思?
@Aries
我明白了,e是十六进制的14,而因为e在十六进制中已经有别的意义所以科学计数的时候不用e表示指数,而是p或者P!
@真话传达着
人难以胜天。
很好奇你的身体情况怎么样。
@kof99
作为程序员,特别是中国的程序员,连接google是无容置疑的,费心思寻找各种“免费”的翻墙工具,还不如了解一下”VPN”,一年花100元左右购买商业VPN服务这些问题迎刃而解