精华内容
下载资源
问答
  • 不要怕被打断

    2012-12-06 23:31:00
    我要说的是,你被打断之后,理所当然的高估自己的思考,而不是真实的思想质量。你以为你不被打断,必然就会解决问题,或者找到问题的核心?真的么?你有这种百分之一百的信心?这不过是错觉而已,一个...

    很多人都厌恶被打断,我也是。但是现实生活中,往往就是经常被骚扰,难道我们可以创造一个纯净的真空世界?因此,解决这个问题,不能空想,而应该去面对真实的环境。

    之所以害怕被打断,原因是什么?打断之后就继续不起来了。我要说的是,你被打断之后,理所当然的高估自己的思考,而不是真实的思想质量。你以为你不被打断,必然就会解决问题,或者找到问题的核心?真的么?你有这种百分之一百的信心?这不过是错觉而已,一个被打断就继续不下去的思想,可见有多么薄弱!我敢打赌,99%的被打断的思路,都是狗屁一堆,都被高估了,只有极低的可能性,刚好给你碰到真正有意思的思想。

    因此,不应该太过愤怒,被打断不是别人的错,而是你自己的错。既然是自己的错,就要想办法去弥补,而不是唠唠叨叨,幻想一个真空世界。

    我真实的体验是,一些真正有价值的思想,并不是灵机一动,而是真正的很巩固的,逻辑性很强的思路。一种飘渺的触感,会让你无比兴奋,但是和真正有意义的解决方案相比,还差很远。不要依赖这种触感,当然如果有也不要错过。被打断的人,往往并非是触感发生之时,而恰恰是迷失在自己的感觉之中出不来的人,只是不愿意承认其实这不过是错觉。认错是很关键的一步,只有认错才能从感觉,从猜想中走出来。

    有什么感觉需要你花几个小时不被打断才能验证?灵感只是一瞬间,如果真的被打断,也是刚好发生在那一瞬间,几分钟,最多十几分钟的过程。过了那个阶段,其实灵感已经飘走,剩下的只是验证而已。验证过程可以被打断的么?

    好吧,最好要承认自己根本没有抓住要领。

    既然害怕被打断,那么首先第一步,就应该先“存档”。大部分“空想者”的特点就是光脑里面想,从来不做记录,也不去理清思路,更不愿意验证,因为一验证就会发现思想的漏洞。

    要改善这种空想的习惯,首先就要保存自己的思路。思想只有陈述出来,才能看清楚。胡思乱想,自会产生一种自我感觉良好的错觉。把各种灵感,写下来,联成一片,然后实施验证工作。

    另外,要避免被打断,一个有效的方法就是把事情分成一小节一小节。一般而言,很多人感觉上连续工作是很高效,其实不然,比较短的时间会有更高的专注度,长时间反而会降低思考的质量。

    大部分出色的时间管理守则,就是要求建立短期的,强化式的思考,而不是追求越长越好。其实我们工作中,往往都是连续的,不过经常开小差而已。这也许并不是因为别人骚扰你,而是你自身注意力涣散了。

    展开全文
  • 最近在温习Java Thread的各种状态变化,想到Thread.join方法的用法:当前线程阻塞到join线程结束后才继续执行。于是我翻了以下Thread.join方法的源码,如下图: 在发现join方法内部其实使用wait方法来实现的,...

    最近在温习Java Thread的各种状态变化,想到Thread.join方法的用法:当前线程阻塞到被join线程结束后才继续执行。于是我翻了以下Thread.join方法的源码,如下图:

    在发现join方法内部其实使用wait方法来实现的,我立即想到了对应的notify/notifyAll方法,当时就想着既然是用wait进行线程休眠,我是不是可以用notify/notifyAll来进行唤醒?打破join引起的阻塞?

    1、有想法就实践吧,第一次的测试代码:

    public static void testJoin() {
            final Thread thread = new Thread() {
                @Override
                public void run() {
                    for (int i = 0; i < 10; i++) {
                        try {
                            Thread.sleep(2000);
                        } catch (InterruptedException e) {
                            System.out.println("InterruptedException from sleep");
                        }
                        System.out.println("thread running: " + i);
                    }
    
                }
            };
    
            thread.start();
    
            (new Thread(() -> {
                try {
                    Thread.sleep(1000 * 6);
                    synchronized (thread) {
                        thread.notifyAll(); // wake wait status
                    }
                    System.out.println("notify join thread");
                } catch (InterruptedException e) {
                    System.out.println(e.getClass().getName() + " is thrown 1");
                }
            }
            )).start();
            try {
                thread.join();
            } catch (InterruptedException e) {
                System.out.println(e.getClass().getName() + " is thrown 2");
            }
            System.out.println("main is running after join!");
        }

    运行结果如下:

    thread running: 0
    thread running: 1
    thread running: 2
    notify join thread
    thread running: 3
    thread running: 4
    thread running: 5
    thread running: 6
    thread running: 7
    thread running: 8
    thread running: 9
    main is running after join!

    结果显示,main线程调用join的代码处并没有解除阻塞状态,于是我返回join源码处仔细查看,wait代码处被唤醒后代码会如何执行呢?这才发现wait被while循环包围,终止条件是被join的thread已经执行完成(isAlive()),好吧,这才是join方法的目的:被join线程执行完成后当前线程才能继续执行。这次实验加深了我对join方法的理解,同时也引发了另一个问题的思考:join的thread执行完成后,join方法中的wait状态是怎么被唤醒的呢?在JDK源码中找了好一会也没找到答案,后来在网上搜了下,有人说是JVM内部实现的,在thread执行完毕后进行的唤醒(c++代码),暂时记录一下,以后有机会研究JVM源码的时候再求证一下,参考链接:https://www.jianshu.com/p/fc51be7e5bc0

    2、上面的第一次尝试并没有实现我的需求,后来我在看到Thread的interrupt相关知识点时,又想起来这个问题。以下是我的第二次尝试,最终结果是main线程跳出join阻塞状态继续运行了,也就是说join阻塞状态是可以被打断的,实现方式就是使用线程的interrupt方法。

    public static void testJoin() {
            final Thread thread = new Thread() {
                @Override
                public void run() {
                    for (int i = 0; i < 10; i++) {
                        try {
                            Thread.sleep(2000);
                        } catch (InterruptedException e) {
                            System.out.println("interruptedException thrown by sleep!");
                        }
                        System.out.println("thread running: " + i);
                    }
    
                }
            };
    
            thread.start();
    
            final Thread mainThread = Thread.currentThread();
            (new Thread(() -> {
                try {
                    Thread.sleep(1000 * 10);
                    mainThread.interrupt();
                    System.out.println("notify join thread");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            )).start();
    
    
            try {
                thread.join();
            } catch (InterruptedException e) {
                System.out.println(e.getClass().getName() + " is thrown~");
            }
            System.out.println("main is running after join!");
        }

    运行结果如下:

    thread running: 0
    thread running: 1
    thread running: 2
    thread running: 3
    thread running: 4
    notify join thread
    java.lang.InterruptedException is thrown~
    main is running after join!
    thread running: 5
    thread running: 6
    thread running: 7
    thread running: 8
    thread running: 9

    这里有一点需要说的是,需调用mainThread的interrupt方法,而不是被join线程的interrupt方法,因为执行join方法中的wait代码段的当前线程是main线程,被阻塞的也是main线程,被join线程在wait处只是作为竞争资源和锁监控对象。实际测试,如果调用被join线程的interrupt方法,只会打断被join线程run方法中的sleep(2000)的休眠状态。

    总结一下,Thread的interrupt操作可以让线程从wait/sleep/join等休眠状态中恢复过来并抛出InterruptedException异常,附上interrupt方法的注释。

    展开全文
  • 当程序员思路被打断

    周思博(Joel Spolsky)曾在他的一篇博客中说过:有时我什么事都干不了。
    当然,我走进办公室,到处闲逛,十秒钟就检查一次电邮,看网页,甚至干些不用脑子的事,比如支付美国运通的账单。但就是不会回到写代码的流程上来。这样的低效症一发作一般都要持续一两天。但在我的职业生涯里,作为程序员,曾经好几次一连几个星期什么事都干不了。就像他们说的,我心不在焉,我状态不好,我根本不在状态。

    这篇文章我读了五六遍,仍然深感震动,因为这样一个程序员界的标志性人物也会有这样菜鸟的问题。

    还好,不只是我有这样的问题。
    这里我没有保持高效的秘诀分享,但是我可以告诉你们什么让我的效率低下:

    • 开放式房间布局
    • 程序员争论Django与.NET哪个好
    • 程序员笼统的争论
    • 同事过来问:“嘿,我的邮件你收到没?”
    • 嚼东西的声音。很明显我有恐音症
    • 对于我手上的问题还不理解
    • 怀疑这个项目
    • 手上有多个任务要完成,它们都是十万火急的
    • 有十万火急的事,其他事都别干了
    • 手机微博消息提示音
    • 电邮提示弹窗
    • 任何弹出窗口
    • 即时通信软件
    • 老婆问:“嘿,可以拿一分钟来帮我做件事吗?”
    • build时间很长
    • 噪音
    • 办公桌前老有人走来走去
    • 公司集体活动
    • 维基百科(我是说真的,不要点任何链接)
    • 黑客新闻
    • 总体来说,互联网都会影响效率

    过去这些事让我工作效率不错:

    • 安静的环境
    • 安静的办公室(个人专用办公室太少见了)
    • 理解项目下一步我该干什么
    • 对于问题有透彻的认识
    • 没有打扰
    • 我是认真的:没有打扰
    • 远离微博
    • 远离黑客新闻
    • 硬件不出问题
    • 热爱正在工作的项目
    • build和debug的时间不长
    • 不要在网上争论政治

    很明显,低效因素中有一半是我自找的,但是有些不是,例如开放式办公室布局。

    根本上讲,我们每个人都能控制造成我们低效的因素。我不会和平对抗。我要不就强硬表态,要不就坐着任由其他人在我身边走动。对此我真不擅长应对。所以,我在处理外部低效因素方面没有好建议,但是我知道这一条:控制我能控制的。意思是:

    • 关闭iPhone上的提示(还有个好处就增加了待机时间)
    • 连续编码3小时就给我自己一个奖励(通常形式是“上网时间”,看看黑客新闻或是微博)
    • 当真的真的有事要干才在家工作
    • 投资一个性价比高的抑噪耳机
    • 在日历上安排“无会”时间,向别人表明你在这些时间很忙,这是我的工作时间。
    • 不要卷入办公室程序员的争论;人们有强烈的个人观点,而程序员的特性就是喜欢争论。如果真是有业务问题需要解决,让我们去会议室去,把每种方法的优缺点都摆出来。用数据说话,别只是争吵。
    • 把办公桌摆在不会被过路人打扰的地方。
    • 先看一遍问题,然后再请另一位程序员为我详细的解释一遍,这样我可以对要干的工作有更好的理解。这样做实现了两点:第一,这使我能掌握形势,使得我至少能对工作的要点有个基本了解。第二,它让我在求助时能问出更聪明的问题。

    是什么让你效率低下,而你又是怎么与之抗争?

    展开全文
  • 关于在Struts2框架下JSON串被打断的问题

    在struts2的返回结果集做出了如下配置:

    <package name="easyUIorder"  extends="json-default">
            <action name="queryList2" class="orderAction" method="query">
                <interceptor-ref name="params" />
                <result name="success" type="json">
                    <!-- <param name="root">returnDataMap</param> -->
                </result>
            </action>
    </package>

    在action进行封装时,利用工具类将结果集转换成json串:

    List<SortOrder> orders = new LinkedList<SortOrder>();
                if (StringUtils.isBlank(sort)) {
                    orders.add(SortOrder.asc("id"));
                }
                else {
                    orders.add(new SortOrder(sort, asc));
                }
            PagedList<Order> pList = orderService.findOrders(operationUserName,
                        order, page - 1, rows, orders);
            Map map = new HashMap<>();
            map.put("total", pList.getResultSize());
            map.put("rows",pList.getList());
            String jsonStr=JsonUtil.writeValueAsString(map);
            ServletActionContext.getResponse().getWriter().write(jsonStr);

    那么此时json串回传到页面就出现了被打断的情况。

    分析:这里我思考了很久才解决这个问题,因为之前一直使用注解很少采用配置文件,所以有些配置也不是很清楚。这里出现问题的主要原因还是因为进行了两次JSON转换。在action中把map转换成JSON,然后在Struts2返回结果集的时候由于结果集类型设置为JSON类型,这里会再次把回传的数据JSON化一次。这样的两次转换就把数据转换成了打断的JSON串。其实这个问题本身不难,只是没想过来,希望其他的小伙伴遇到这个问题能够通过这篇文章得以解决,避免浪费太多时间。

    展开全文
  • 对程序员来说,打断是低...在某一个会议上,或者某一次会议之前的回顾过程中,对销售人员来说,一次中断的代价意味着他花在处理被打断上的时间。比如一次摇头,或者“我刚讲到哪儿了?噢,我想起来了。” 再比如一
  • 对程序员来说,打断是低效率的最大原因之一。说实话,这种情况可能对任何人来说都是这样,只是对...在某一个会议上,或者某一次会议之前的回顾过程中,对销售人员来说,一次中断的代价意味着他花在处理被打断
  • 对程序员来说,打断是低效率的最大...项目主管刚刚在你即将按下下一条指令,在你打算使用“跳过”而不是“进入”吓了你一跳。他唠唠叨叨的讲述自己或者是客户或者是其他什么事情的重要性,反正你是没在听,
  • 打断时间

    2004-09-26 00:45:00
    时间不够用的情况下就是要来打断时间的,当事情正进行的爽的时候,比如游戏玩到一半,电视电影看到一半,这个时间就要注意打断时间,只有打断了时间,才能思考这件事情的正确与否,才能有余下的热情做其它的事情,也...
  • 一旦思路中断,我们也许得花20分钟才能重新将它找回。 2.对程序员来说,在游戏X中增加一项功能也许容易,但这并不意味着在游戏Y中添加新功能也会很容易。因为就其本质来说,任何两款游戏的内部架构都完全不同。 ...
  • 漫画:为什么不能打断程序员?

    千次阅读 2015-06-10 15:36:04
    漫画:为什么不能打断程序员? 2012年,国外程序员 Daniel Greenfeld 在 Twitter 发了一条推(见下图):“开发人员每天应当有 4-6 小时的无中断时间。每次 3-5 分钟的中断,其成本远超过你的想象。” ...
  • 而且现在这样的人很吃香,还不少人羡慕着、效仿着。郑教授的话,值得所有中国人思考。 1.日本人宁愿喜欢黑人,也不喜欢我们,因为现在的中国人没有了精神。 2.大家都在嘲笑俄罗斯,但我知道俄罗斯将来...
  • 工作效率思考

    2014-03-04 23:40:00
    最近埋怨工作效率太低,这也不是第一次了。 仔细思考,这应该也是事实。 无论如何,提高工作效率对我自己总是好事。...3. 自制力差: 在工作觉得无聊,注意力不集中, 会主动寻求打断,如打开QQ...
  • 其中有很多的因素,但我觉得有一项是很重要的是:善于思考或者说擅长思考。只有这样,我们才能比别人理解的更深,才会有更独到的见解。那么,怎样 才能做到善于思考呢? 思考的过程大致上就是,向我们的大脑中输入...
  • 一、前言 最近在研究animator的时候Interruption Source用法的耗费了我很长时间,因为在了解的过程中在网上大多都是官方文档的译文,首先感谢我...所以我在刚触发A-B就立即触发A-C,即Interruption没有效果, 后来
  • 最近的思考20190829

    2019-08-29 18:19:44
    做时间不够聚焦,比如整理定位算法的综述,看具体一篇论文,做这些事情老是容易被打断,比如看微信群里发一条信息,公司中午发水果了,工位边上有什么动静,等等非常容易鸡毛蒜皮的小事儿打断,然后自己就懈怠不管...
  • 规划与思考

    千次阅读 多人点赞 2020-02-29 19:46:33
    规划与思考 写于: 2020年2月29日 从2018年实习到现在,也算干了一年多的程序员. 时间飞逝,技术和心态成长了很多.但是还是有很多地方需要提升的. 这里做了一个总结以及未来的规划. 时间管理 小的时候总觉得时间过得很...
  • 思考致富》精华版

    千次阅读 2014-05-08 17:10:52
    第一章 《思考致富》与《成功法则》  拿破仑.希尔花费25年时间研究500多位百万富翁,写出了划时代巨著《成功法则》,这本书提出了十五项成功法则:明确的目标、自信心、储蓄的习惯、进取心与领导才能、想象力、...
  • 都会遇到一个问题,管理者会紧急的打断下属之前的工作计划,让下属干管理者认为重要的工作。 二.问题举例 土老三,经过多年努力,终于当上了一个领导。他有若干个个下属,其中一个叫王老五的。 土老三,在2周前,给...
  • 2.和别人沟通或者有疑问,先找测试再找开发,因为开发在思考问题被打断会影响工作效率,作为团队的一员,需要顾全整个团队的效率利益,珍惜开发资源。 3.确定做某件事之前,需要先将所有准备工作做好,...
  • 年初计划的思考

    千次阅读 2013-01-06 14:28:46
    举了这么个例子,我主要想表达的是,去年我的计划,有些虽然由于变化被打断了,但是今年我仍然可以做些调整,按照新的计划执行下去,把计划(事情)做成。 在历年的计划中,有些计划是可以来长久经营的。比如移动...
  • 做事中思考

    2007-04-19 16:17:00
    主要是我在进行总体计划,总是要受到别人的干扰,包括上级和下级的,计划总会一些事情打断,不能按照计划进行,从而不能完成计划,所以需要有一个总体计划,在每星期定一个,我们在按照此计划工作时间上可以...
  • 关于学习的一些思考

    2013-06-07 18:16:53
    知识的价值 情况:有时候学习一个东西的时候,老是想...列清单,具体的做饭就是专注于问题或者争议,用词语或者短语记录的自己的想法,而不要过早关注细节,以免打断自己的思路。当自己的想法记录下来后,再去筛选,改
  • 适合思考的环境

    2018-06-28 08:01:34
    适合思考的环境 适合思考的环境 生活中适合思考的场景 为什么这些地方适合思考??有什么共性?? 温度比较低的地方 有东西流动的地方 安静的地方 古典音乐 和不爱思考的人聊天 共性 生活中总有一些...
  • 谷歌SRE与运维工作的思考

    千次阅读 2020-02-04 08:51:00
    “工作经常被打断,技术含量不高的问题太多,开发换了一轮又一轮、重复性问题回答了一遍又一遍...”等等,也是运维人员经常抱怨最大的问题。 我们也老早安排了值班,但由于各个产品业务的独特性与复杂性,值班人员...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,952
精华内容 7,980
关键字:

思考时被打断