1.idea debug进入HashMap源码时传参不正确?
2.JAVA阅读源码,大量英文注释阅读不方便,求集成idea里面的翻译java注释由英文翻译为中文的工具。
3.idea 运行main方法
4.webå端å¼åç¼è¾å¨ï¼
5.kafka源码阅读之MacBook Pro M1搭建Kafka2.7版本源码运行环境
idea debug进入HashMap源码时传参不正确?
我测试了下面的代码:分别在这四个位置打了断点以监控程序的运行情况,debug后,进入第一次断点的趣步源码软件位置为:
与题主说的情况一致,而没有进入我的第一个断点进行输出,而后F9:
发现还是在put文件,经多次F9之后,可以看出来,其实java的jvm在启动的时候,在底层也自行调用的put方法,将jvm所需要的一些动态库、jar包put到某个map之中,具体是table匹配网页源码哪个map看不出来。要等到jvm底层将所有东西准备好后,才进行main函数。
jvm准备需要put多少次我就不数了,现在我先把put的断点取消,让程序debug到我的第一个断点处:
这个时候将put方法打上断点,F9发现:
奇怪的key值增加了,它将我的classes编译目录丢进去了,继续F9,和上一步差不多,再再次F9,终于来了:
继续F9,终于到达了我的第二个断点:
继续F9,这次没有put奇怪的东西了:
继续:
最后:
然后程序退出:
综上,jvm在启动的炫酷源码代码时候会在程序背后隐式地将一些配置啊什么的通过put方法放到某些地方,不用关心,你遇到的情况是正常的也是正确的
JAVA阅读源码,大量英文注释阅读不方便,求集成idea里面的翻译java注释由英文翻译为中文的工具。
学会在idea(eclipse)中阅读、调试源码,是java程序员必不可少的一项技能。在idea中配完环境后,默认其实也是能够对jdk的源码进行debug调试的。但是无法在源码中添加自己的注释,无法添加自己的理解。如果干瞪眼看的话,可能过段时间,就忘记了。mybatis源码笔记整理下面就介绍下,如何在jdk源码中为所欲为,像在我们自己的代码中一样写注释、调代码:
打开idea,选择Project->File->Project Structure->SDKs->Sourcepath,初始状态如下图 :
打开本地jdk安装路径,本处为E:\java\jdk8,将此路径下的src.zip压缩包解压到自定义的指定文件夹(可以在电脑磁盘任意位置),本处解压到同目录的jdk_source文件夹下,如下图:
继续在步骤1中的设置页面中操作,将E:\java\jdk8\src.zip通过右侧的减号将其移除;并通过右侧的加号,将解压文件夹E:\java\jdk8\jdk_source导入进来;点击apply,再点击OK。导入结果见下图:
这时,主页图指标源码再重新打开jdk的源码类,我们就可以在源java文件中,添加自己的注释了。
一定注意:添加注释时,一定不要新加一行写注释。最好在一行代码的后面,使用//进行注释。否则行号和真正的jre中编译后的代码行号对应不上,如果对源码debug时,会出现代码运行和行号不匹配的情况
idea 运行main方法
解决方案:可能由于我编译elasticsearch-6.6.0源码需要jdk1.的原因,所以我在win上配置了双jdk并切换至jdk1.时需手动删除当初安装jdk1.8.0时C:\ProgramData\Oracle\Java\javapath\java.exe、javaw.exe、javaws.exe共三个文件导致原系统jdk1.8.0被异常加载。故只需在idea的File--->Project Structure--->SDKs--->点击+号--->重新指定原正常的jdk1.8.0安装目录。于是完美解决java类中import java.xxx时报错问题和无法右键此java文件并运行main方法的问题。
webå端å¼åç¼è¾å¨ï¼
å代ç ç软件æåªäº
常ç¨çå代ç 软件æ以ä¸å 个ï¼
1ãWebStormãWebStormæ¯jetbrainså ¬å¸æä¸ä¸æ¬¾JavaScriptå¼åå·¥å ·ãç®åå·²ç»è¢«å¹¿å¤§ä¸å½JSå¼åè èªä¸ºâWebå端å¼åç¥å¨âãâæ强大çHTML5ç¼è¾å¨âãâææºè½çJavaScriptIDEâçã
2ãSublimeTextãSublimeTextæ¯ä¸ä¸ªä»£ç ç¼è¾å¨ä¹æ¯HTMLåæ£æå è¿çææ¬ç¼è¾å¨ã
3ãHBuilderãHBuilderæ¯ä¸ä¸ºå端æé çå¼åå·¥å ·ï¼å ·æé£ä¸æ ·çç¼ç ãæå ¨çè¯æ³åºåæµè§å¨å ¼å®¹æ°æ®ãå¯ä»¥æ¹ä¾¿çå¶ä½ææºAPPãæä¿æ¤ç¼çç绿æ设计çç¹ç¹ã
å端å¼å常ç¨åªäºå·¥å ·è½¯ä»¶ï¼å端å¼åçç¼è¯å¨å¨éæ©ä¸è¿æ¯å¾å¤çãå¨å¦æ ¡éï¼èå¸ä¸»è¦è®²ä¸ä¸ªå端å¼å软件ï¼
1ãWebStorm
帮å©ç¼åHTMLãCSSãLessãSassåStylus代ç ï¼å¹¶ä¸æ¯æNode.jså主æµæ¡æ¶ï¼å¦ReactãAngularã?Vue.jsãMeteorçãä¸IntelliJIDEAåæºï¼ç»§æ¿äºIntelliJIDEA强大çJSé¨åçåè½ãä½æ¯ä»è´¹è½¯ä»¶ã
2ãIntelliJidea
ideaæ¯å¦æ ¡èå¸æå¾æå¤çä¸æ¬¾è½¯ä»¶ï¼ä»å¦Javaå¼å§ï¼é¤äºeclipseåmyeclipseä¹å¤ï¼å¦æ ¡èå¸ç¨çæ广æ³çJavaç¼è¯å¨å°±æ¯ideaï¼èideaä¹è½è¿è¡å端项ç®çå¼åï¼ideaæ¯æç¨å¾æççä¸ä¸ªç¼è¯è½¯ä»¶ãåä¸ä¸ªå®æ´çå端ç½ç«ï¼é 置好jdkï¼tomcatï¼mavenï¼æ°æ®åºä¹åå°±å¯ä»¥å¨ideaä¸è¿è¡æ建äºã
3.VisualStudioCode
ç®ç§°VScodeï¼å端å¼åæ¶æå¦ä¹ ç第ä¸æ¬¾è½¯ä»¶ï¼å½æ¶å¦VScodeçæ¶åä¸çç½è¯¾ï¼èå¸ç¨æ件çæ¶åä¸ä¸ªæ²¡è·ä¸ï¼å°±è·ä¸ä¸äºãæ»ä½æè§ä¸æ¥æ¯æ件åºå¾ä¸°å¯ï¼èä¸å åå ç¨ä¸å¤§ï¼ç®åæ身边ç¨VScodeç人æ¯æå¤çã
ä¸é¢æ¯æå¨å®ä¹ ä¸æ¥è§¦å°çå端å¼åå·¥å ·ï¼
notepad++
页é¢å¾ç®åï¼ä¹ä¸çåæ¯ä¸ä¸ªè®°äºæ¬ï¼å®ä¹ç¡®å®å¯ä»¥å½è®°äºæ¬ç¨ãæå¾å¤ç¹è²æ件å¯ä»¥ä½¿ç¨ï¼æ¯æå¤ç§ç¼ç¨è¯è¨çè¯æ³é«äº®æ¾ç¤ºï¼å ·æ代ç æå åè½ã
2ãHBuilderX
HBuilderXæ¯DCloudï¼æ°å天å ï¼æ¨åºçä¸æ¬¾æ¯æHTML5çWebå¼åIDEãHBuilderçç¼åç¨å°äºJavaãCãWebåRubyãHBuilderæ¬èº«ä¸»ä½æ¯ç±Javaç¼åãæ¯HBuilderä¸ä¸ä»£çæ¬ï¼å ·æ轻便ãéåvueæ¡æ¶çç¹ç¹ã
æä»ä¹å¥½çç¼ç 软件åï¼
æ²ä»£ç ç¨ç软件æï¼Androidstudioï¼WebStormï¼IntellijIDEAï¼sourceinshghtï¼Vscodeã
1ãAndroidstudio
对UIçé¢è®¾è®¡åç¼å代ç ææ´å¥½å°æ¯æï¼å¯ä»¥æ¹ä¾¿å°è°æ´è®¾å¤ä¸çå¤ç§å辨çãåæ ·æ¯æProGuardå·¥å ·ååºç¨ç¾åãä¸è¿ï¼ç®åçæ¬çAndroidStudioä¸è½å¨åä¸çªå£ä¸ç®¡çå¤ä¸ªé¡¹ç®ã
2ãWebStorm
jetbrainså ¬å¸æä¸ä¸æ¬¾JavaScriptå¼åå·¥å ·ãç®åå·²ç»è¢«å¹¿å¤§ä¸å½JSå¼åè èªä¸ºâWebå端å¼åç¥å¨âãâæ强大çHTML5ç¼è¾å¨âãâææºè½çJavaScriptIDEâçãä¸IntelliJIDEAåæºï¼ç»§æ¿äºIntelliJIDEA强大çJSé¨åçåè½ãä¸è¿ï¼æçç²ä¸è¯´è¿ä¸ªæç¹å¡ï¼ä½æ¯åè½è¿æ¯é½å ¨çã
3ãIntellijIDEA
IntellijIDEAæ¯javaç¼ç¨è¯è¨å¼åçéæç¯å¢ï¼å¨ä¸çå ä¹è¢«å ¬è®¤æ¯æ¯è¾å¥½çä¸ä¸ªjavaå¼åå·¥å ·ã
4ãsourceinshght
ä¸ä¸ªé¢å项ç®å¼åçç¨åºç¼è¾å¨å代ç æµè§å¨ï¼å®æ¥æå ç½®ç对C/C++ï¼C#åJavaçç¨åºçåæãSourceInsightè½åæä½ çæºä»£ç 并å¨ä½ å·¥ä½çåæ¶å¨æç»´æ¤å®èªå·±ç符å·æ°æ®åºï¼å¹¶èªå¨ä¸ºä½ æ¾ç¤ºæç¨çä¸ä¸æä¿¡æ¯ãSourceInsightæä¾äºæå¿«éç对æºä»£ç ç导èªåä»»ä½ç¨åºç¼è¾å¨çæºä¿¡æ¯ã
5ãVscode
Vscodeå ¨ç§°VisualStudioCodeï¼æ¯ä¸æ¬¾é对äºç¼åç°ä»£webåäºåºç¨ç跨平å°æºä»£ç ç¼è¾å¨ã
webå端å¼åå·¥ä½ç¨ä»ä¹è½¯ä»¶å½æ¶åå°å¼åå·¥å ·æ¶ï¼è¯å®é¿ä¸å¼ç¼è¾å¨ï¼SublimeTextè¿ä¸ªå·¥å ·å¾å欢è¿ï¼å ³é®æ¯å®ç´§åãç®æ´ãå¿«éï¼é¿ææ¬çå¼é度ä¹æ¯æ ææ»´ãæ¥ææ¼äº®çç¨æ·çé¢å强大çåè½ï¼å¦ä»£ç 缩ç¥å¾ãPythonæ件ã代ç ç段ççãæ¨è¿å¯ä»¥èªå®ä¹é®ç»å®ãèååå·¥å ·æ ãå®æ¯ä¸ä¸ªè·¨å¹³å°çç¼è¾å¨ï¼æ¯æWindowsãLinuxãMacOSXåå ¶ä»æä½ç³»ç»ãAdobeDreamweaveræ¯ä¸ä¸web设计人åå¯è§åwebå¼åå·¥å ·ç第ä¸ä¸ªç¹æ®å¼åï¼å®å¯ä»¥æ¹ä¾¿å°å建跨平å°ç约æï¼è·¨æµè§å¨éå¶å¨æweb页é¢ããç¹å»æµè¯æéä¸éåå¦è®¾è®¡ã
å¦ææ¨æç®å¦ä¹ å端çç¥è¯ï¼å¯ä»¥èèä¸ä¸åéæè²ãåéçä¼ä¸æå¡ä¸å¡èµè½ä¼ä¸æ°åå转åè¿ç¨ï¼è´åäºä¸ºä¼ä¸æä¾å ¨æ¹ä½ç»¼å人ææå¡ï¼ç®åå·²ä¸ç¾åº¦ã京ä¸ãé¿éãè ¾è®¯ãç»ä¿¡ãä¸æ¹å½ä¿¡çå½å ç¥åä¼ä¸è¾¾æ深度åä½å ³ç³»ï¼ä¸å½å ä½å®¶ä¼ä¸å»ºç«äººæè¾éåä½å ³ç³»ãåéå¨ä¼ä¸æèå人æå°±ä¸ä¹é´æ建起桥æ¢å纽带ï¼ä¸ºæå½æ°å产ä¸å¥åº·å¿«éåå±ååºäºå®è´¨æ§è´¡ç®ã
kafka源码阅读之MacBook Pro M1搭建Kafka2.7版本源码运行环境
在探索Kafka源码的过程中,决定搭建本地环境进行实际运行,以辅助理解和注释。由于日常开发中常使用Kafka 2.7版本,选择了在MacBook Pro M1笔记本上搭建此版本的源码环境。搭建过程中,记录了遇到的障碍,方便未来再次搭建时不必从头开始。 搭建Kafka 2.7源码环境需要准备以下基础环境:一、Zulu JDK1.8
在MacBook Pro M1笔记本上,基本都已安装JDK,版本不同而已。使用的是Zulu JDK1.8版本,通过下载.dmg格式的一键安装,环境自动配置,安装路径通常在 /Library/Java/JavaVirtualMachines。二、Scala 2..1
并未在系统里安装Scala,而是直接利用IDEA。按照Preferences -> Plugins -> Scala安装。选择IDEA的不同Scala JDK版本。三、安装Gradle6.6
通过官网gradle.org/releases/下载Gradle6.6版本。如国内下载速度较慢,可直接从百度网盘下载安装包。安装完成后,解压并放置在目录/Users/helloword/software/gradle-6.6,通过mac终端执行指令配置环境。四、Zookeeper3.4.6安装
直接从百度网盘下载zookeeper-3.4.6.tar.gz包,解压后放置在三台机器的/app目录下。在每个目录中创建data子目录,并建立myid文件,按照特定数字填写。在zoo.cfg文件中进行配置并复制至其他机器。五、Kafka2.7源码部署
从官网下载Kafka 2.7源码,或从百度网盘获取。解压至目录/Users/helloword/software/kafka/kafka-2.7.0-src,并通过Gradle构建环境。在mac终端执行指令,生成gradle-wrapper.jar,配置依赖。将源码导入IDEA,加载Gradle构建的项目。六、源码运行
确保源码运行打印日志,需将log4j.properties复制到core的 resources目录,并在build.gradle中添加log4配置。修改config/server.properties配置,包括zookeeper路径和broker的ip。配置server、consumer、producer三个进程,确保Kafka服务、消费者和生产者能够正常工作。 整个Kafka 2.7版本源码的本地搭建步骤完成。后续计划撰写系列文章总结阅读源码的经验。关注公众号写代码的朱季谦,获取更多分类归纳的博客。