精华内容
下载资源
问答
  • 三条原则不可忽视 【项目案例分享】 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目。 不过还是有很多学生朋友来问我“没有项目怎么办”,诚然,确实有不少同学没有实习经历,又没有...
        
    13894260-610c18c5e850f2be
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目。

    不过还是有很多学生朋友来问我“没有项目怎么办”,诚然,确实有不少同学没有实习经历,又没有什么像样的项目经历,对于这样的同学,简历上的项目经历难道只能空着了吗。

    其实不然,就算你是跟着一些课程做项目,你也可以通过丰富项目内容的方法把项目变成自己的,只要你真的去做了,真的理解了代码逻辑,同时有所收获,这个项目就是有价值的,是可以登上简历这一大雅之堂的。

    正因为如此,现在很多简历上的项目经历的质量都是参差不齐,同时有的项目经历又非常相似,面试官一眼就能知道你的项目到底是真是假。【文末有项目经历描述实例介绍】

    13894260-3bc1551ed08687f5
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    大部分的面试官都会对你的项目经历进行提问,你能不能清晰到位地描述号好你的项目经历,决定了你的项目价值,即使项目再牛掰,你不能把它讲清楚,那么也是白搭。

    所以,回答关于程序员项目方面的问题,是有技巧可循的,比技巧更重要的是 3 条原则,这也是我经历各种面试之后总结出来的东西。

    1、真实性

    项目经历,贵在真实,简历造假什么的真的不要想了,面试官稍微深入问一下简历上的东西,保证你会一脸懵逼,简历上那些高大上的技术到头来反而成为你被面试官抓住的把柄。

    何谓真实,首先,你要真的做过这些项目,其次,对项目的描述要真实,可以适度修饰,但不要太过夸大。

    2、所写内容一定要和你有关

    很多朋友都犯过一个错误,包括我,就是把喜欢把项目经历写的天花乱坠,比如把整个系统的开发工作都写在简历上,把部门的技术栈搬到简历上,把那些你没参与的工作都写到了简历上。

    其实这只是看起来很美好而已,当面试官问你比较不熟悉的模块时,你就只能说这个不是你做的,那个也不是你做的,这就十分尴尬了,在面试官那里一定也是大大扣分的。

    在吃了几次这样的亏之后,我简历上的项目经历再也没有出现和我无关的内容了,面试官问到实现细节我也能够应对自如,毕竟自己做过,心里肯定清楚呀。

    所以,与其指望着拿别人做得模块来浑水摸鱼,不如想想如何提炼一下你的项目内容吧,就算真的只是简单的CRUD,也没有关系,所谓“亮点自寻”,这个时候你就应该想办法把项目里的亮点找出来。

    比如你用了哪个ORM框架来实现数据库交互,为什么用Mybatis而不用Hibernate,或者是用了哪个Web框架、日志系统、构建工具,又或者用了什么数据库、缓存,为什么要用这些技术。

    除此之外,你也可以介绍一下自己如何优化模块的性能,复杂的业务逻辑又是如何实现的。

    说到这里顺便给大家推荐一个Java架构方面的交流学习群:964357187,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源和前辈的面试经验和面试题,相信对于已经工作和遇到技术瓶颈的码友,在这个群里会有你需要的内容。

    3、分点叙述,条理清晰

    这一点与其说是原则,不如说是技巧。把“分点叙述”翻译成白话文就是“一个模块用一段话来介绍,如果你做了 3 个模块,那么就分1、2、3点,分别用一句话来介绍所做的内容”

    这里补充一下,你可以在分点描述里提及技术栈,或者是在项目总结的部分介绍相关技术栈。

    比如:

    我负责部门数据运营报表模块的开发工作,使用JUC并发工具、线程池等技术完成该模块的业务逻辑开发,使用MySQL数据库、Hibernate框架完成数据层的处理,同时我对该模块的业务代码进行了优化,提升了数据报表30%的响应速度。

    为什么要分点叙述,其实就是让你的项目条理更清楚,面试官很容易就能看出你做了哪几个模块,可以对应地进行提问。

    以前我没有分点描述项目,结果面试官只能从一大段话中提取一些关键字来提问,这可能让面试官很不满意。

    不只是项目经历里的模块需要分点描述,你自己在介绍自己的项目时也应该通过这种方式来完成,这样的好处显而易见。

    你很快就能够条理清晰地向每一个面试官介绍自己的项目,并且针对每一个模块都可以很自然说出它们的难点、亮点,以及实现过程。

    不要问我为什么知道的,当程序员面试的次数越来越多时,已经习惯了介绍项目、回答项目问题了。所以每次遇到关于项目的问题基本上都是张口就来,面试官一问什么我就知道要答什么了。

    虽然以上三点原则不能包治百病,但是对很多同学来说应该是蛮有益处的。

    13894260-f057eec3998c9313
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    重点来了,到底验怎样证你的项目经验和技术?

    既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。

    13894260-363b41517b315a20
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    2. 准备项目的各种细节,一旦被问倒了,就说明你没做过

    一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。而且这些是你实际的项目经验,那么一旦让面试官感觉你都说不上来,那么可信度就很低了。

    不少人是拘泥于“项目里做了什么业务,以及代码实现的细节”,这就相当于把后继提问权直接交给面试官。下表列出了一些不好的回答方式。

    13894260-48efe19aa36850ed
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    在避免上述不好的回答的同时,大家可以按下表所给出的要素准备项目介绍。如果可以,也请大家准备一下用英语描述。其实刚毕业的学生,或者工作经验较少的人,英语能力都差不多,但你说了,这就是质的进步。

    13894260-cb543d8f5c3e67f7
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    面试前,一定要准备,一定要有自信,但也要避免如下的一些情况:

    13894260-50b809a987afff59
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】
    1. 不露痕迹地说出面试官爱听的话

    在项目介绍的时候(当然包括后继的面试),面试官其实很想要听一些关键点,只要你说出来,而且回答相关问题比较好,这绝对是加分项。我在面试别人的时候,一旦这些关键点得到确认,我是绝对会在评语上加上一笔的。下面列些面试官爱听的关键点和对应的说辞。

    13894260-2ca967809cbeaeba
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】

    读者福利

    预祝各位广大同仁找到自己满意的工作,如果对于面试有一些迷茫,对于自身工作几年遇到瓶颈期了,可以来群里与更多的大佬交流、切磋技术【Java高级互联网架构:964357187】,我整理了一些面试真题资料,还有和广大同仁一起交流学习共同进步,最重要的是还有阿里京东大佬一起分享职业经验、以及面试经验。

    13894260-0a4a22021c1e2929
    程序员简历项目经历怎么写 ?三条原则不可忽视 【项目案例分享】
    展开全文
  • 对于一个入门DBA 来说,有两东西对进阶比较关键:一是理解设计者是怎么想的,二是理解使用者环境的复杂性。两者都需要经验的积累,需要勤奋。    集体创作:小团体的自组织带来多维度的启发  在技术学习上,...
  • function Cat(){//js中对象的定义与函数一样,不同点在于怎么样调用。 } var cat1 = new Cat();//创建类实例 //js中类属性可以动态添加,并不需要在原型对象内。js对象没有类这个概念,而是称为原型对象 cat1.name...
  • 今天参加ACOUG活动,eygle大师分享了一个案例,其中讲到进程的strace时,问我某个字符是神马意思? 当时一时想不起了,他简单的进行了一下描述,...具体这些latch的持有和释放的顺序是怎么样的? 做了一会儿实验,...

    今天参加ACOUG活动,eygle大师分享了一个案例,其中讲到进程的strace时,问我某个字符是神马意思?
    当时一时想不起了,他简单的进行了一下描述,猛然大悟,但是还不是特别清楚其中的细节,很多东西
    确实是不用就会忘记的,晚上回来,准备研究eygle在活动上所提的lgwr 在写redo 时需要获得哪些latch?
    具体这些latch的持有和释放的顺序是怎么样的? 做了一会儿实验,没有搞明白,突然trace lgwr进程,发现
    了另外一点内容,彻底颠覆了我以前的认知。

    SQL> !ps -ef|grep lgwr
    ora10g   23584     1  0 08:36 ?        00:00:00 ora_lgwr_roger
    ora10g   23637 23572  0 08:37 pts/1    00:00:00 /bin/bash -c ps -ef|grep lgwr
     
     
    使用strace -ftr -o a.log -p 23584 跟踪lgwr进程,然后另外开启一个窗口进行如下操作:
     
    1000 rows deleted.
     
    SQL> commit;
     
    Commit complete.
     
    SQL>  alter system switch logfile;
     
    System altered.
     
    SQL> !ps -ef|grep lgwr|grep -v grep
    ora10g   23584     1  0 08:36 ?        00:00:00 ora_lgwr_roger
     
    然后我们再回头去看看strace 打出来的trace是什么样的。
     
    23584      0.000056 gettimeofday({1345909238, 375806}, NULL) = 0
    23584      0.000053 times(NULL)         = 432511470
    23584      0.000071 gettimeofday({1345909238, 375933}, NULL) = 0
    23584      0.000060 gettimeofday({1345909238, 375990}, NULL) = 0
    23584      0.000059 semtimedop(622592, 0x1, 0, {4294901770, 0}) = -1 EAGAIN (Resource temporarily unavailable)
    23584      3.001243 gettimeofday({1345909241, 377292}, NULL) = 0
    .....省略部分信息
    23584      0.000166 times(NULL)         = 432511770
    23584      0.000032 gettimeofday({1345909241, 377821}, NULL) = 0
    23584      0.000043 times(NULL)         = 432511770
    23584      0.000031 pwrite64(20, "\1\"\0\0\16\0\0\0\226\0\0\0\20\200\303\265h\0\0\0\4\0\0"..., 921088, 7168) = 921088
    23584      0.008318 times(NULL)         = 432511771
    23584      0.000040 gettimeofday({1345909241, 386276}, NULL) = 0
    23584      0.000072 times(NULL)         = 432511771
    23584      0.000040 gettimeofday({1345909241, 386367}, NULL) = 0
    23584      0.000036 getrusage(RUSAGE_SELF, {ru_utime={0, 13997}, ru_stime={0, 66989}, ...}) = 0
    23584      0.000048 getrusage(RUSAGE_SELF, {ru_utime={0, 13997}, ru_stime={0, 66989}, ...}) = 0
    23584      0.000046 gettimeofday({1345909241, 386496}, NULL) = 0
    .....省略部分信息
    23584      0.000126 gettimeofday({1345909242, 708436}, NULL) = 0
    23584      0.000071 times(NULL)         = 432511903
    23584      0.000074 times(NULL)         = 432511903
    23584      0.000054 gettimeofday({1345909242, 708690}, NULL) = 0
    23584      0.000134 times(NULL)         = 432511903
    23584      0.000110 pwrite64(20, "\1\"\0\0\25\7\0\0\226\0\0\0\20\200j\351\214\0\0\0\5\235"..., 512, 928256) = 512
    23584      0.000944 times(NULL)         = 432511904
    23584      0.000062 gettimeofday({1345909242, 709896}, NULL) = 0
    23584      0.000089 times(NULL)         = 432511904
    23584      0.000121 gettimeofday({1345909242, 710096}, NULL) = 0
    23584      0.000171 semctl(622592, 23, IPC_64|SETVAL, 0xbfffd4fc) = 0
    23584      0.001596 gettimeofday({1345909242, 711864}, NULL) = 0
    23584      0.000064 gettimeofday({1345909242, 711935}, NULL) = 0
    23584      0.000068 gettimeofday({1345909242, 711992}, NULL) = 0
    23584      0.000060 times(NULL)         = 432511904
    23584      0.000068 gettimeofday({1345909242, 712122}, NULL) = 0
    23584      0.000120 gettimeofday({1345909242, 712247}, NULL) = 0
    23584      0.000072 semtimedop(622592, 0x1, 670000, {4294901770, 0}) = -1 EAGAIN (Resource temporarily unavailable)
    23584      1.671260 gettimeofday({1345909244, 383580}, NULL) = 0
    23584      0.000072 gettimeofday({1345909244, 383647}, NULL) = 0
    ......省略部分信息
    23584      0.000462 gettimeofday({1345909247, 141720}, NULL) = 0
    23584      0.000106 pread64(15, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\225\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000135 gettimeofday({1345909247, 142041}, NULL) = 0
    23584      0.000193 gettimeofday({1345909247, 142133}, NULL) = 0
    23584      0.000139 pread64(16, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\225\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000105 gettimeofday({1345909247, 142405}, NULL) = 0
    23584      0.000122 gettimeofday({1345909247, 142503}, NULL) = 0
    23584      0.000071 pread64(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\225\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000093 gettimeofday({1345909247, 143127}, NULL) = 0
    23584      0.000576 gettimeofday({1345909247, 143255}, NULL) = 0
    23584      0.000087 pread64(15, "\25\302\0\0\20\0\0\0\227\31\0\0\377\377\1\4P\31\0\0\200"..., 16384, 262144) = 16384
    23584      0.000237 gettimeofday({1345909247, 143563}, NULL) = 0
    23584      0.000156 gettimeofday({1345909247, 143722}, NULL) = 0
    23584      0.000464 pread64(15, "\25\302\0\0\22\0\0\0\227\31\0\0\377\377\1\4\vL\0\0\0\0"..., 16384, 294912) = 16384
    23584      0.000408 gettimeofday({1345909247, 144677}, NULL) = 0
    23584      0.000472 gettimeofday({1345909247, 145071}, NULL) = 0
    23584      0.000095 pread64(15, "\25\302\0\0\24\0\0\0\226\31\0\0\377\377\1\4\243R\0\0\17"..., 16384, 327680) = 16384
    23584      0.000112 gettimeofday({1345909247, 145282}, NULL) = 0
    23584      0.000090 gettimeofday({1345909247, 145358}, NULL) = 0
    23584      0.000082 pread64(15, "\25\302\0\0\25\0\0\0\227\31\0\0\377\377\1\4B<\0\0\0\220"..., 16384, 344064) = 16384
    23584      0.000181 gettimeofday({1345909247, 145623}, NULL) = 0
    23584      0.000083 gettimeofday({1345909247, 145705}, NULL) = 0
    23584      0.000230 semctl(622592, 9, IPC_64|SETVAL, 0xbfffe10c) = 0
    23584      0.000809 gettimeofday({1345909247, 146745}, NULL) = 0
    23584      0.000069 times(NULL)         = 432512347
    23584      0.000055 pwrite64(15, "\25\302\0\0\26\0\0\0\230\31\0\0\377\377\1\4\362\230\0\0"..., 16384, 360448) = 16384
    23584      0.000852 times(NULL)         = 432512347
    23584      0.000052 times(NULL)         = 432512347
    23584      0.000053 pwrite64(16, "\25\302\0\0\26\0\0\0\230\31\0\0\377\377\1\4\362\230\0\0"..., 16384, 360448) = 16384
    23584      0.000689 times(NULL)         = 432512348
    23584      0.000057 times(NULL)         = 432512348
    23584      0.000052 pwrite64(17, "\25\302\0\0\26\0\0\0\230\31\0\0\377\377\1\4\362\230\0\0"..., 16384, 360448) = 16384
    23584      0.000612 times(NULL)         = 432512348
    23584      0.000067 gettimeofday({1345909247, 149302}, NULL) = 0
    23584      0.000077 gettimeofday({1345909247, 149402}, NULL) = 0
    23584      0.000089 times(NULL)         = 432512348
    23584      0.000088 pwrite64(15, "\25\302\0\0\21\0\0\0\230\31\0\0\377\377\1\4\10L\0\0\0\0"..., 16384, 278528) = 16384
    23584      0.000565 times(NULL)         = 432512348
    23584      0.000050 times(NULL)         = 432512348
    23584      0.000052 pwrite64(16, "\25\302\0\0\21\0\0\0\230\31\0\0\377\377\1\4\10L\0\0\0\0"..., 16384, 278528) = 16384
    23584      0.000562 times(NULL)         = 432512348
    23584      0.000051 times(NULL)         = 432512348
    23584      0.000051 pwrite64(17, "\25\302\0\0\21\0\0\0\230\31\0\0\377\377\1\4\10L\0\0\0\0"..., 16384, 278528) = 16384
    23584      0.000616 times(NULL)         = 432512348
    23584      0.000067 gettimeofday({1345909247, 151570}, NULL) = 0
    23584      0.000073 gettimeofday({1345909247, 151643}, NULL) = 0
    23584      0.000063 times(NULL)         = 432512348
    23584      0.000052 pwrite64(15, "\25\302\0\0\17\0\0\0\230\31\0\0\377\377\1\4\317\33\0\0"..., 16384, 245760) = 16384
    23584      0.000622 times(NULL)         = 432512348
    23584      0.000067 times(NULL)         = 432512348
    23584      0.000091 pwrite64(16, "\25\302\0\0\17\0\0\0\230\31\0\0\377\377\1\4\317\33\0\0"..., 16384, 245760) = 16384
    23584      0.000641 times(NULL)         = 432512348
    23584      0.000051 times(NULL)         = 432512348
    23584      0.000062 pwrite64(17, "\25\302\0\0\17\0\0\0\230\31\0\0\377\377\1\4\317\33\0\0"..., 16384, 245760) = 16384
    23584      0.000649 times(NULL)         = 432512348
    23584      0.000127 gettimeofday({1345909247, 154107}, NULL) = 0
    23584      0.000119 gettimeofday({1345909247, 154198}, NULL) = 0
    23584      0.000085 gettimeofday({1345909247, 154271}, NULL) = 0
    23584      0.000063 times(NULL)         = 432512348
    23584      0.000054 pwrite64(15, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.001031 times(NULL)         = 432512348
    23584      0.000083 times(NULL)         = 432512348
    23584      0.000056 pwrite64(16, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000639 times(NULL)         = 432512348
    23584      0.000060 times(NULL)         = 432512348
    23584      0.000051 pwrite64(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000624 times(NULL)         = 432512348
    23584      0.000088 gettimeofday({1345909247, 157021}, NULL) = 0
    23584      0.000065 gettimeofday({1345909247, 157085}, NULL) = 0
    23584      0.000065 pread64(15, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000090 gettimeofday({1345909247, 157250}, NULL) = 0
    23584      0.000077 gettimeofday({1345909247, 157317}, NULL) = 0
    23584      0.000124 times(NULL)         = 432512348
    23584      0.000092 times(NULL)         = 432512348
    23584      0.000061 gettimeofday({1345909247, 157594}, NULL) = 0
    23584      0.000119 semctl(622592, 23, IPC_64|SETVAL, 0xbfffcfb4) = 0
    23584      0.000143 gettimeofday({1345909247, 157857}, NULL) = 0
    23584      0.000065 gettimeofday({1345909247, 158008}, NULL) = 0
    23584      0.000170 pread64(20, "\1\"\0\0\1\0\0\0\226\0\0\0\0\200\246\270\0\0\0\0\0\5 \n"..., 512, 512) = 512
    23584      0.000067 gettimeofday({1345909247, 158151}, NULL) = 0
    23584      0.000042 gettimeofday({1345909247, 158200}, NULL) = 0
    23584      0.000046 pread64(15, "\25\302\0\0\36\0\0\0\223\31\0\0\377\377\1\4\236\177\0\0"..., 16384, 491520) = 16384
    23584      0.000054 gettimeofday({1345909247, 158293}, NULL) = 0
    23584      0.000047 gettimeofday({1345909247, 158340}, NULL) = 0
    23584      0.000039 pwrite64(18, "\1\"\0\0\1\0\0\0\227\0\0\0\0\200\244\272\0\0\0\0\0\5 \n"..., 512, 512) = 512
    23584      0.000504 gettimeofday({1345909247, 158885}, NULL) = 0
    23584      0.000078 gettimeofday({1345909247, 158994}, NULL) = 0
    23584      0.000084 pread64(20, "\1\"\0\0\1\0\0\0\226\0\0\0\0\200\246\270\0\0\0\0\0\5 \n"..., 512, 512) = 512
    23584      0.000050 gettimeofday({1345909247, 159095}, NULL) = 0
    23584      0.000041 gettimeofday({1345909247, 159137}, NULL) = 0
    23584      0.000039 pwrite64(20, "\1\"\0\0\1\0\0\0\226\0\0\0\0\200u\210\0\0\0\0\0\5 \n)M"..., 512, 512) = 512
    23584      0.000874 gettimeofday({1345909247, 160050}, NULL) = 0
    23584      0.000052 gettimeofday({1345909247, 160103}, NULL) = 0
    23584      0.000041 times(NULL)         = 432512349
    23584      0.000032 pwrite64(15, "\25\302\0\0\25\0\0\0\231\31\0\0\377\377\1\4\217\234\0\0"..., 16384, 344064) = 16384
    23584      0.000816 times(NULL)         = 432512349
    23584      0.000031 times(NULL)         = 432512349
    23584      0.000032 pwrite64(16, "\25\302\0\0\25\0\0\0\231\31\0\0\377\377\1\4\217\234\0\0"..., 16384, 344064) = 16384
    23584      0.000589 times(NULL)         = 432512349
    23584      0.000030 times(NULL)         = 432512349
    23584      0.000031 pwrite64(17, "\25\302\0\0\25\0\0\0\231\31\0\0\377\377\1\4\217\234\0\0"..., 16384, 344064) = 16384
    23584      0.000571 times(NULL)         = 432512349
    23584      0.000036 gettimeofday({1345909247, 162310}, NULL) = 0
    23584      0.000044 gettimeofday({1345909247, 162354}, NULL) = 0
    23584      0.000054 pread64(15, "\25\302\0\0(\1\0\0\220\31\0\0\377\377\1\4\200L\0\0\n\0"..., 16384, 4849664) = 16384
    23584      0.000077 gettimeofday({1345909247, 162488}, NULL) = 0
    23584      0.000047 gettimeofday({1345909247, 162532}, NULL) = 0
    23584      0.000043 gettimeofday({1345909247, 162575}, NULL) = 0
    23584      0.000038 pread64(15, "\25\302\0\0\275\0\0\0\226\31\0\0\377\377\1\4$\177\0\0Y"..., 16384, 3096576) = 16384
    23584      0.000052 gettimeofday({1345909247, 162665}, NULL) = 0
    23584      0.000042 gettimeofday({1345909247, 162707}, NULL) = 0
    23584      0.000038 pread64(15, "\25\302\0\0\25\0\0\0\231\31\0\0\377\377\1\4\217\234\0\0"..., 16384, 344064) = 16384
    23584      0.000051 gettimeofday({1345909247, 162796}, NULL) = 0
    23584      0.000106 gettimeofday({1345909247, 162904}, NULL) = 0
    23584      0.000039 times(NULL)         = 432512349
    23584      0.000051 pwrite64(15, "\25\302\0\0\276\0\0\0\231\31\0\0\377\377\1\4}\177\0\0Y"..., 16384, 3112960) = 16384
    23584      0.000520 times(NULL)         = 432512349
    23584      0.000030 times(NULL)         = 432512349
    23584      0.000032 pwrite64(16, "\25\302\0\0\276\0\0\0\231\31\0\0\377\377\1\4}\177\0\0Y"..., 16384, 3112960) = 16384
    23584      0.000598 times(NULL)         = 432512349
    23584      0.000037 times(NULL)         = 432512349
    23584      0.000031 pwrite64(17, "\25\302\0\0\276\0\0\0\231\31\0\0\377\377\1\4}\177\0\0Y"..., 16384, 3112960) = 16384
    23584      0.000507 times(NULL)         = 432512349
    23584      0.000035 gettimeofday({1345909247, 164782}, NULL) = 0
    23584      0.000042 gettimeofday({1345909247, 164825}, NULL) = 0
    23584      0.000039 pread64(15, "\25\302\0\0\24\0\0\0\226\31\0\0\377\377\1\4\243R\0\0\17"..., 16384, 327680) = 16384
    23584      0.000054 gettimeofday({1345909247, 164917}, NULL) = 0
    23584      0.000078 gettimeofday({1345909247, 165000}, NULL) = 0
    23584      0.000043 times(NULL)         = 432512349
    23584      0.000031 pwrite64(15, "\25\302\0\0\23\0\0\0\231\31\0\0\377\377\1\4\246R\0\0\17"..., 16384, 311296) = 16384
    23584      0.000568 times(NULL)         = 432512349
    23584      0.000043 times(NULL)         = 432512349
    23584      0.000032 pwrite64(16, "\25\302\0\0\23\0\0\0\231\31\0\0\377\377\1\4\246R\0\0\17"..., 16384, 311296) = 16384
    23584      0.000458 times(NULL)         = 432512349
    23584      0.000039 times(NULL)         = 432512349
    23584      0.000031 pwrite64(17, "\25\302\0\0\23\0\0\0\231\31\0\0\377\377\1\4\246R\0\0\17"..., 16384, 311296) = 16384
    23584      0.000543 times(NULL)         = 432512349
    23584      0.000034 gettimeofday({1345909247, 166819}, NULL) = 0
    23584      0.000045 gettimeofday({1345909247, 166863}, NULL) = 0
    23584      0.000038 times(NULL)         = 432512349
    23584      0.000031 pwrite64(15, "\25\302\0\0\22\0\0\0\231\31\0\0\377\377\1\4\3332\0\0\0"..., 16384, 294912) = 16384
    23584      0.000697 times(NULL)         = 432512349
    23584      0.000030 times(NULL)         = 432512349
    23584      0.000031 pwrite64(16, "\25\302\0\0\22\0\0\0\231\31\0\0\377\377\1\4\3332\0\0\0"..., 16384, 294912) = 16384
    23584      0.000509 times(NULL)         = 432512349
    23584      0.000037 times(NULL)         = 432512349
    23584      0.000032 pwrite64(17, "\25\302\0\0\22\0\0\0\231\31\0\0\377\377\1\4\3332\0\0\0"..., 16384, 294912) = 16384
    23584      0.000565 times(NULL)         = 432512350
    23584      0.000035 gettimeofday({1345909247, 168867}, NULL) = 0
    23584      0.000060 gettimeofday({1345909247, 168933}, NULL) = 0
    23584      0.000289 times(NULL)         = 432512350
    23584      0.000037 pwrite64(15, "\25\302\0\0\20\0\0\0\231\31\0\0\377\377\1\4P8\0\0\200$"..., 16384, 262144) = 16384
    23584      0.000525 times(NULL)         = 432512350
    23584      0.000030 times(NULL)         = 432512350
    23584      0.000032 pwrite64(16, "\25\302\0\0\20\0\0\0\231\31\0\0\377\377\1\4P8\0\0\200$"..., 16384, 262144) = 16384
    23584      0.000576 times(NULL)         = 432512350
    23584      0.000046 times(NULL)         = 432512350
    23584      0.000092 pwrite64(17, "\25\302\0\0\20\0\0\0\231\31\0\0\377\377\1\4P8\0\0\200$"..., 16384, 262144) = 16384
    23584      0.000630 times(NULL)         = 432512350
    23584      0.000043 gettimeofday({1345909247, 171228}, NULL) = 0
    23584      0.000045 gettimeofday({1345909247, 171272}, NULL) = 0
    23584      0.000044 gettimeofday({1345909247, 171316}, NULL) = 0
    23584      0.000037 times(NULL)         = 432512350
    23584      0.000054 pwrite64(15, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000804 times(NULL)         = 432512350
    23584      0.000038 times(NULL)         = 432512350
    23584      0.000032 pwrite64(16, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000589 times(NULL)         = 432512350
    23584      0.000030 times(NULL)         = 432512350
    23584      0.000031 pwrite64(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000606 times(NULL)         = 432512350
    23584      0.000034 gettimeofday({1345909247, 173571}, NULL) = 0
    23584      0.000038 gettimeofday({1345909247, 173609}, NULL) = 0
    23584      0.000039 pread64(15, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\300\377\0\0\0\0\0\0"..., 16384, 16384) = 16384
    23584      0.000054 gettimeofday({1345909247, 173702}, NULL) = 0
    23584      0.000040 gettimeofday({1345909247, 173742}, NULL) = 0
    23584      0.000040 times(NULL)         = 432512350
    23584      0.000751 times(NULL)         = 432512350
    23584      0.000043 gettimeofday({1345909247, 174576}, NULL) = 0
    23584      0.000041 semctl(622592, 23, IPC_64|SETVAL, 0xbfffd09c) = 0
    23584      0.001190 gettimeofday({1345909247, 175992}, NULL) = 0
    23584      0.000242 pread64(15, "\25\302\0\0\36\0\0\0\223\31\0\0\377\377\1\4\236\177\0\0"..., 16384, 491520) = 16384
    23584      0.000061 gettimeofday({1345909247, 176111}, NULL) = 0
    23584      0.000057 gettimeofday({1345909247, 176175}, NULL) = 0
    23584      0.000111 getrusage(RUSAGE_SELF, {ru_utime={0, 15997}, ru_stime={0, 72988}, ...}) = 0
    23584      0.000051 getrusage(RUSAGE_SELF, {ru_utime={0, 15997}, ru_stime={0, 72988}, ...}) = 0
    23584      0.000045 gettimeofday({1345909247, 176374}, NULL) = 0
    23584      0.000078 gettimeofday({1345909247, 176545}, NULL) = 0
    23584      0.000155 semctl(622592, 9, IPC_64|SETVAL, 0xbfffe0f4) = 0
    23584      0.000165 open("/proc/23604/stat", O_RDONLY) = 32
    23584      0.000058 read(32, "23604 (oracle) S 1 23604 23604 0"..., 999) = 190
    23584      0.000085 close(32)           = 0
    23584      0.000115 gettimeofday({1345909247, 177038}, NULL) = 0
    23584      0.000049 semctl(622592, 20, IPC_64|SETVAL, 0xbfffe0a4) = 0
    23584      0.000624 semctl(622592, 20, IPC_64|SETVAL, 0xbfffe14c) = 0
    23584      0.000042 close(8)            = 0
    23584      0.000035 open("/home/ora10g/admin/roger/bdump/alert_roger.log", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0660) = 8
    23584      0.000062 time(NULL)          = 1345909247
    23584      0.000040 stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1017, ...}) = 0
    23584      0.000146 stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1017, ...}) = 0
    23584      0.000071 stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1017, ...}) = 0
    23584      0.000064 writev(8, [{"Sat Aug 25 08:40:47 PDT 2012\n", 29}, {"Thread 1 advanced to log sequenc"..., 51}, {"\n", 1}], 3) = 81
    23584      0.000074 times(NULL)         = 432512350
    23584      0.000051 times(NULL)         = 432512350
    23584      0.000031 close(8)            = 0
    23584      0.000031 open("/home/ora10g/admin/roger/bdump/alert_roger.log", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0660) = 8
    23584      0.000063 writev(8, [{"  Current log# 1 seq# 151 mem# 0"..., 71}, {"\n", 1}], 2) = 72
    23584      0.000072 gettimeofday({1345909247, 178488}, NULL) = 0
    .....省略部分信息
    23584      0.000057 gettimeofday({1345909247, 179580}, NULL) = 0
    23584      0.000197 semtimedop(622592, 0x1, 200000, {4294901770, 0}) = -1 EAGAIN (Resource temporarily unavailable)
    23584      0.201062 gettimeofday({1345909247, 380703}, NULL) = 0
    .....省略部分信息
    23584      0.000068 gettimeofday({1345909247, 382030}, NULL) = 0
    23584      0.000047 semtimedop(622592, 0x1, 0, {4294901770, 0}) = -1 EAGAIN (Resource temporarily unavailable)
    23584      3.000146 gettimeofday({1345909250, 382231}, NULL) = 0
    23584      0.000068 gettimeofday({1345909250, 382295}, NULL) = 0
    23584      0.000058 gettimeofday({1345909250, 382353}, NULL) = 0
    23584      0.000062 gettimeofday({1345909250, 382415}, NULL) = 0
    23584      0.000055 gettimeofday({1345909250, 382548}, NULL) = 0
    23584      0.000170 gettimeofday({1345909250, 382644}, NULL) = 0
    23584      0.000063 times(NULL)         = 432512671
    23584      0.000225 gettimeofday({1345909250, 382930}, NULL) = 0
    23584      0.000058 gettimeofday({1345909250, 382984}, NULL) = 0
    23584      0.000055 times(NULL)         = 432512671
    23584      0.000065 times(NULL)         = 432512671
    23584      0.000107 gettimeofday({1345909250, 383219}, NULL) = 0
    23584      0.000073 times(NULL)         = 432512671
    23584      0.000050 pwrite64(18, "\1\"\0\0\2\0\0\0\227\0\0\0\20\200\200oh\0\0\0\4\0\0\0\223"..., 512, 1024) = 512
    23584      0.000886 times(NULL)         = 432512671
    23584      0.000078 gettimeofday({1345909250, 384300}, NULL) = 0
    .....省略部分信息
    23584      0.000092 gettimeofday({1345909250, 385232}, NULL) = 0
    23584      0.000061 semtimedop(622592, 0x1, 0, {4294901770, 0}) = -1 EAGAIN (Resource temporarily unavailable)
    23584      3.000481 gettimeofday({1345909253, 385780}, NULL) = 0
    .....省略部分信息
    23584      0.001228 times(NULL)         = 432512971
    23584      0.000520 gettimeofday({1345909253, 388094}, NULL) = 0
    23584      0.000184 getrusage(RUSAGE_SELF, {ru_utime={0, 15997}, ru_stime={0, 74988}, ...}) = 0
    23584      0.000081 getrusage(RUSAGE_SELF, {ru_utime={0, 15997}, ru_stime={0, 74988}, ...}) = 0
    23584      0.000183 gettimeofday({1345909253, 388540}, NULL) = 0
    .....省略部分信息
    23584      0.000141 gettimeofday({1345909253, 389471}, NULL) = 0
    23584      0.000079 semtimedop(622592, 0x1, 0, {4294901770, 0} <unfinished ...>
    [root@killdb ~]#

    我们来简单分析下上面的trace内容,首先pread64 这样的,是一个参数,可以看到时一些读的操作。

     

    全文请见原文博客链接地址 关于lgwr 进程的一点思考

    转载于:https://www.cnblogs.com/lovewifelovelife/archive/2012/08/26/3295026.html

    展开全文
  • 之前刚刚学习maven的时候,想着用着maven和ssm框架一个简单的案例,以便于熟悉和掌握,结果被一个问题卡在那里卡了很长时间,现在把他分享出来,以便于以后能够方便解决。 用maven搭建ssm’框架使用pageHelpper...

    之前刚刚学习maven的时候,想着用着maven和ssm框架写一个简单的案例,以便于熟悉和掌握,结果被一个问题卡在那里卡了很长时间,现在把他分享出来,以便于以后能够方便解决。

    用maven搭建ssm’框架使用pageHelpper插件的时候出现了一个bug,无论怎么样检查路径,配置文件总是启动报错。检查了很多地方都没有问题,后来发现可能是使用插件版本的问题。

    问题描述:

    使用pageHelper插件是导入依赖包然后启动项目发现项目报错,甚至会有可能出现sqlSessionfactory注入不进去的情况,在网上查了半天之后试了很多方法:比如 删除报错的路径的本地仓库的目录文件 或者直接删除工作空间管理maven项目下的jsqlparse架包,但是删除了之后会发现项目会报错无法找到这个依赖包的文件,就这样陷入了死循环。

    后来发现问题所在:

    1. 当我们使用分页插件在5.0以后的版本之后就不用再mybaits的配置文件里面写入数据库类型的方言配置了,他会自动的检测我们的数据库。
    2. 对于插件的5.1.1版本的依赖包个人试了很多次,只要把pom.xml文件的版本改成5.1.1启动就报错,但是改成其他版本就又好了。真的是mmp一万只奔腾而过,可能是因为我的项目使用的其他架包与这个版本冲突了吧。
    3. <configuration>
      	<settings>
      	<!-- 驼峰命名规则 -->
      		<setting name="mapUnderscoreToCamelCase" value="true"/>
      	</settings>
      	<!-- pageHelper配置 -->
      	<plugins>
      		<!-- 分页插件注册 -->
               <plugin interceptor="com.github.pagehelper.PageInterceptor">
               	<!-- 分页合理化配置,当传入的pageNum小于1时显示第一页,大于最后一个时显示最后一页 -->
               	<property name="reasonable" value="true"/>
                 <!-- <property name="helperDialect" value="sqlserver"/> 方言配置,5.0以后不用再配置 -->
              </plugin>
          </plugins>
      </configuration>

       

    总之:遇到为题要冷静处理,坚持一个,多去尝试,说不定一会就好了。

    展开全文
  • 音频D类功放LC滤波器设计(一)

    千次阅读 2021-01-07 21:59:42
    有了上一节的基础,这一节我们来看看D类音频功放的LC滤波器如何设计,思路是怎么样的,可以看作是一个案例。 考虑到有些同学没接触过D类音频功放,我会先简单介绍下D类功放的工作原理,然后D类功放为什么要用LC...

    LC串联谐振的意义

    有了上一节的基础,这一节我们来看看D类音频功放的LC滤波器如何设计,思路是怎么样的,可以看作是一个案例。

    考虑到有些同学没接触过D类音频功放,我会先简单介绍下D类功放的工作原理,然后D类功放为什么要用LC滤波器,再到LC滤波器设计具体过程。

    TI公司也有介绍D类放大器LC滤波器的设计文档,文末会分享出来。我写的与TI的区别,TI的主要介绍具体如何设计,我主要想说明思路过程,并指出里面的一些细节,为什么是这样。我希望的是,有了思路,即使没有任何文档,遇到类似的问题,也能自己去分析。

     

    D类功放工作原理

    D类功放相对于A,B,C类来说更不好理解,因为它是需要调制的,看起来就是占空比不同的PWM波,波形看着与我们的音频模拟波形一点都不像。

    下面来看一看它的原理。

     

    图片

                               

    简单理解就是:音频信号与三角波高频载波经过比较器进行比较,得到占空比不同的PWM波,然后将得到PWM信号通过MOS管对管,经过滤波器输入到喇叭。调制后得到的PWM里面含有音频分量,然后通过LC滤波器滤掉高频载波还原成原始信号。

    原理确实非常简单,但是我们可能会有如下问题,仅仅理解以上内容还是远远不够的。

    为什么有的电路喇叭两端用示波器量就是PWM波,但是却能正常发出声音?

    LC滤波器该如何设计,L,C如何取值?

    有的D类放大器要LC滤波,有的用磁珠就可以了,为什么?

    还有的厂家的宣称它们的放大器不需要滤波,用了什么技术?

    下面来看看这些问题是怎么分析的。

     

    典型的D类放大器电路

    D类放大器,我们常用的方式是差分的方式,即两个MOS对管中间接喇叭。下面就只分析这种差分方式,单端的分析方法也差不多。

    首先,D类放大器是一个大类,主要区别在于有不同的调制方式,下面先介绍两种,AD类,和BD类。

    AD类是经过三角波调制后再反相,用了一个比较器。BD类是先将音频信号反相,再将原信号和反相后的信号分别通过调制,用了两个比较器,从图中看不出来差别,下面来看看波形的区别。

    图片

    红色的为音频信号,三角波是调制信号,我们可以很容易的得到滤波之前的差分输出信号。从波形上看到,AD与BD的差分输出有着明显的区别,但是二者的电平都是高低变化,我们没法从上面直接得到有用的信息,比如看不出来哪种效率更高,哪种辐射会小一些等等。

    这时候,我之前的文章“信号在脑子里面应该是什么样的”就要派上用场了,我们需要把输出信号进行傅里叶变换,得到它们的频谱,有了频谱,就很容易看出差别。为此,我借助了Matlab软件,分别画出它们的频谱。

    注:为了减小Matlab软件的计算量(计算量大了电脑会卡),我设定的音频信号为1Hz,调制三角波为20Hz,虽然实际音频信号频率肯定是比1Hz要高的,但是分析结果应是一样的。

    下图是用幅度为1,频率为20Hz的三角波,来调制幅度为0.9,频率为 1Hz的正弦波。

    图片

    从上图看出,调制之后的有用信号1Hz被保留,幅度都是0.9,两种方式都是一样的,这说明都能达到目的,包含了完整的音频信号。

    AD调制方式,除了有用信号1Hz在,还有调制三角波频率20Hz的幅度也很大。而BD调制方式,20Hz频率消失了,只存在更高的谐波。从这个角度说, BD的方式是要更好的,损耗降低了。

    在音频输入为0的时候,也就是说放大器空闲,更能看出AD与BD的区别,如下图:

    图片

    在输入为0的时候,AD方式的差分输出为方波,而BD方式输出为0,毫无疑问,BD方式功耗更低。

    事实上,我们拿到了频谱,就能知道很多事情了

    首先,这些开关信号实在看起来不像是模拟音频信号,但是其确实包含了完整的音频频率信号在其中,所以直接通到喇叭也是可以正常响的,虽然额外多了高频载波,但是频率太高,超过人耳范围,高频分量是听不见的。

    其次,这些开关信号除了包含有用信号,还有丰富的高频频率,这些高频频率从调制频率开始往上。这些高频分量通到喇叭是没有什么好处的,反而会额外带来功率损耗,还有会造成EMI的问题。所以,我们需要一个滤波器来滤掉高频分量。并且,因为驱动喇叭需要的功率较大,而RC滤波器会有额外损耗,所以,LC低通滤波器就自然而然被选中了。

    最后,我们知道频谱里面的高频的频谱分布,那么滤波器的截止频率自然就出来了。截止频率必须高于音频频率上限20Khz,而要小于三角波的调制频率,在这个范围内,截止频率越低,去除高频分量越好。

    下面分享下上面波形的Matlab源码,有兴趣的同学可以去试试。

    f_audio=1;      %被调制信号(音频信号)频率为1Hz 
    f_sanjiao=20;   %三角波调制频率为20Hz
    
    %%%%%%%%%%%%%%%%%%%%%%%%  fft采样设置
    Fs=10000;  %采样率为Fs 
    L=(Fs/f_audio)*100;   %信号长度(采样总点数):100个周期的信号,长度越长,fft精度越高,但是执行时间越长
    T=1/Fs;    %采样周期
    t=(0:L)*T; %时间长度
    
    A_audio = 0.9;   %音频信号的幅度为 0.9----可以修改为不同的值尝试
    S1=A_audio*sin(2*pi*f_audio*t);         %被调制信号(音频信号)为幅度A_audio的正弦波
    S2=sawtooth(2*pi*f_sanjiao*t,0.5);  %调制信号(三角波)为幅度为1的三角波
    
    N=length(t);
    PWM1=zeros(1,N); %定义PWM1的长度  AD调制后差分波形
    PWM2=zeros(1,N); %定义PWM2的长度  BD调制后差分波形
    tmp=zeros(1,N);  %定义tmp的长度  计算用(中间变量)
    for i=1:N
        if S1(i)>S2(i)
            PWM1(i) = 1;
            tmp(i)  = 1;
        else
            PWM1(i) = -1;
            tmp(i)  = 0;
        end
    end
    
    for i=1:N
        if -S1(i)>S2(i)
            PWM2(i) = tmp(i)-1;
        else
            PWM2(i) = tmp(i);
        end
    end
    
    %%%%%%%%%%%%%%%%%%%%%%%% AD调制
    subplot(3,2,1);
    plot(t,S1,t,S2,'k');
    set(gca,'XLim',[0 2/f_audio]);%x轴的数据显示基频2个周期
    set(gca,'YLim',[-1.1 1.1]);
    title('AD调制');
    xlabel('t (s)');
    ylabel('幅度');
    
    subplot(3,2,3);
    plot(t,PWM1);
    set(gca,'XLim',[0 2/f_audio]);%x轴的数据显示范围
    set(gca,'YLim',[-1.1 1.1]);
    title('AD方式调制之后的-差分-信号');
    xlabel('t (s)');
    ylabel('幅度');
    
    X1=abs(fft(PWM1));
    subplot(3,2,5);
    semilogx(Fs*(0:(L/2))/L,X1(1:L/2+1)*2/L); 
    set(gca,'XLim',[0.1 10000]);%x轴的数据显示范围
    set(gca, 'XTickLabel' ,{'0.1','1','10','100','10K','100K'}); %x轴频率数据
    title('AD方式调制之后的-差分-频谱');
    set(gca,'YLim',[-0.1 1.5]);
    xlabel('f (Hz)');
    ylabel('幅度');
    
    %%%%%%%%%%%%%%%%% BD调制差分信号
    subplot(3,2,2);
    plot(t,S1,t,-S1,'--r',t,S2,'k');
    set(gca,'XLim',[0 2/f_audio]);%x轴的数据显示基频2个周期
    set(gca,'YLim',[-1.1 1.1]);
    title('BD调制');
    xlabel('t (s)');
    ylabel('幅度');
    
    subplot(3,2,4);
    plot(t,PWM2);
    set(gca,'XLim',[0 2/f_audio]);%x轴的数据显示范围
    set(gca,'YLim',[-1.1 1.1]);
    title('BD方式调制之后的-差分-信号');
    xlabel('t (s)');
    ylabel('幅度');
    
    X2=abs(fft(PWM2));
    subplot(3,2,6);
    semilogx(Fs*(0:(L/2))/L,X2(1:L/2+1)*2/L); 
    set(gca,'XLim',[0.1 10000]);     %x轴的数据显示范围
    title('BD方式调制之后的-差分-频谱');
    set(gca, 'XTickLabel' ,{'0.1','1','10','100','10K','100K'}); %x轴频率数据
    set(gca,'YLim',[-0.1 1.5]);
    xlabel('f (Hz)');
    ylabel('幅度');

     

    小结

    这一节我们看了Class D的输出信号波形,并分析了其频谱,我们要学会看频谱。本节就先写到这里吧,下一节会具体看看LC滤波器的设计过程。

    想要获得TI的LC滤波器设计文档,关注下方微信公众号,在微信公众号后台回复“CLASSD

     

    更多硬件知识,欢迎关注下方微信公众信号

    展开全文
  • 不管怎么样,还是分享给需要的人吧。 iCore2 ARM FPGA 双核心板实物购买链接:https://item.taobao.com/item.htm?id=20889895095 先来简单介绍下小身板,大智慧!iCore2 ARM FPGA 双核心板: iCore2是一款包含ARM / ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

案例分享怎么样写