入门
今天周六, 在家闲来无事, 多写俩篇博客(本想说成写文章, 但想了想该文实在承担不起文章二字, 便罢) 把最近看到的和想到的记录一下(恰好也把俩三年前写博客的热情又拾了起来).
经常在知乎上看到, 有人发问, 新人如何入门Java, 新人应该读哪些Java相关的书籍, 今天来谈谈这个问题.
Java入门的话, 分析一下哪些行文算是入门
- 搭建Java开发环境
- 掌握Java基础语法(原生类型/包装类型, 变量声明, 循环控制, 方法声明/调用, 类定义, 实例化对象…)
私认为掌握上面这俩点就算Java入门了, 也不需要买什么书籍, 在网上找个教程, 或者去慕课网/B站/油管 上面找个教学教程, 利用3-5天的时间学一学就好了, 会用能记住就ok了, 不必深究语法.
上面第二点只是把当下想到的说了一下, 更多的还请参考(Java 教程).
入门之后干什么呢? 找一个自己喜欢的方向, 做个小项目练练手. 例如写一个web项目, 再学习一下下面的几个技术
- SpringBoot: 用于后台web服务器
- Mybatis: 替代原生的JDBC, 与mysql打交道的
- vue/element-ui: 写前台页面的
基本上用上面这三个技术就能写一个后台管理系统出来, 当然我也只是把我熟悉的技术写了一下, 如果你身边有其他技术栈的同学指导, 也可以采用其他的技术栈.
如果前台从0写起来比较费劲, 可以参考一个开源的前端工程vue-element-admin
随着功能的不断完善, 你对技术的理解也会不断的加深, 开发的兴趣也会不断加大. 只有对一件事情有兴趣了, 我们才想把它做好, 不是吗?
A)
最近组内项目有个模块进行了较大规模的重构, 需要跑一下压力测试, 看一下性能如何. 但是介于产品的模式, 在正常场景下需要向通道发送消息, 然而在压测中, 我们希望这段行为能被mock掉.
当时想到的方案可以采用Spring AOP, JMockit或者自己通过Javasisit/ASM这种字节码框架来实现功能.
由于项目中我自己很少使用Spring AOP来做一些功能, 便没让它当首选方案, 研究了一下JMockit实现, 发现是使用动态Agent实现的.ok, 那么便初步定了一下方案Agent+Javasisit来实现(ASM手写字节码实在太痛苦).
B)
这一段貌似是废话, 你们也看不见代码发生的真实地转变, 我只是记录一下心路历程.
利用了2个小时, 采用Agent+Javasisit实现了一个小的模块, 基本功能也都实现了, 但是使用起来实在是太麻烦了, 代码耦合性太高. 于是又换了个思路, 去掉了Javasisit框架, 也完美地实现了功能.
C)
整个mock框架分为俩部分.
- agent-core, mock的核心代码
- agent-client, 在这个工程中, 我们只需要在pom中引入需要替换的工程的依赖, 然后再agent-client中把要替换的类重写一遍就好了
Chrome
- Awesome Autocomplete for GitHub
- Enhanced Github
- Octotree
- OneTab
- Pinbox
- Tampermonkey
Mac
这部分参考自有哪些命令行的软件堪称神器?
- bat: cat 替换工具
- mycli: mysql 客户端
- ag:比 grep、ack 更快的递归搜索文件内容。
- jq: json 文件处理以及格式化显示
- shellcheck:shell 脚本静态检查工具
- fzf: 命令行下模糊搜索工具
- mosh: 基于 UDP 的终端连接
- glances: 更强大的 htop / top 代替者
- figlet: 将输入字符转换成艺术字体。
- Pandoc: 可以将 markdown 转成各式各样的格式:PDF、DOCX、EPUB、MOBI
- asciinema: 终端下的录制分享软件
- ttygif: 终端录屏工具
- Teleport: 堡垒机系统
- prettyping: ping 替代品
- fzf: 命令行模糊搜索工具
- ncdu: 查看磁盘目录及文件的使用情况
- jenv: Java 多版本管理工具
- nnn: 文件管理器
- fd: find 替代命令
- htop: top 优化版本
- you-get: 非常强大的媒体下载工具
- httpie:
- aria2
- sz/rz
- ip
- fcrackzip: 破解 zip 压缩包密码。
- Rename-CLI: 文件重命名工具
- fasd: 快速跳转工具
1 | yum install -y bat mycli ag jq fzf mosh glances asciinema ttygif ncdu jenv fd nnn autojump tmux |
VSCode
- Code Runner
- Markdown Preview Enhanced
- MySQL Syntax
- Open in Browser
- Path Intellisense
- PEG.js Language
- Prettier - Code formatter
- REST Client
- Settings Sync
- Terminal
IDEA
列举一下 idea 中常用的插件(仅限于自己要安装的)
- ASM Bytecode Outline
- BashSupport
- Free Mybatis Plugin
- Grep Console
- JavaCC Plugin
- Translation