今天给大家分享一波 Java 中的代码作死小技巧,熟练掌握这些小技巧后,保证能让你写出同事看不懂的代码~
至于为啥要写出同事看不懂的代码,我发现好处还是挺多的,简单举几个例子:
- 同事无法轻易修改你的代码,避免团队协作不当引入 bug
- 塑造个人能力的不可替代性,规避被辞退的风险
- 代码 review 时,帮助同事治疗好多年的低血压
今天给大家分享一波 Java 中的代码作死小技巧,熟练掌握这些小技巧后,保证能让你写出同事看不懂的代码~
至于为啥要写出同事看不懂的代码,我发现好处还是挺多的,简单举几个例子:
在一个项目中需要指纹登录系统,比如自助的仓库管理系统,用户自己刷指纹开门,系统检测到这一行为进行自动登录系统;用户接下来可以在系统中刷RFID进行借取操作。
采购的是中控一体机,刷卡指纹等
https://mvnrepository.com/artifact/net.sf.jacob-project/jacob
Flot 是一个基于 jQuery 的纯 JavaScript 绘图库,主打浏览器兼容好、体积小。在一个需要老旧浏览器兼容的项目里用过它,这里把使用方式与踩过的坑记下来。
Flot 的特点是依赖 jQuery、面向 <canvas> 绘图,在 IE 时代兼容性出色,且 API 简单。它的官网早已停止维护,因此适合维护存量项目,新项目更建议用 ECharts、Chart.js 等现代库。
选型时可以先看差异:
给我的文档系统添加了导出,本文记录PDF填坑小结。
@RequestMapping(value = "export")
public void exportPdfNew(String mdContent, String type, HttpServletResponse response) {
response.reset();
response.setContentType("multipart/form-data");
String title = "file";
String author = "gavin";
String mdFileContent = "";
ServletOutputStream out = null;
try {
byte[] fileBytes = null;
String htmlFile = StringEscapeUtils.unescapeHtml4(mdContent);
String cleanedHtmlFile = htmlFile.replace("<img", "<img style=\"display:inline-block;width:100%;max-width:650px;\" ");
cleanedHtmlFile = cleanHtml(cleanedHtmlFile);
fileBytes = convert(author, cleanedHtmlFile);
response.setHeader("Content-Disposition",
"inline; filename=\"" + title + "_" + System.currentTimeMillis() + ".pdf\"");
out = response.getOutputStream();
out.write(fileBytes);
out.close();
out.flush();
} catch (Exception e) {
System.out.println(e);
}
}
想用
autocomplete="off"关掉浏览器对密码框的自动填充,往往会发现根本不起作用——现代浏览器为了「帮用户记住密码」,刻意忽略了密码字段上的off。本文梳理原因与几种可行的绕行方案,并附带服务端控制台读取密码不回显的要点。
autocomplete="off" 无效按 MDN 对 autocomplete 的说明,值为 off 时浏览器不应为当前字段自动填入或选中值。但文档同时给出了一条 Note:在大多数现代浏览器中,off 无法阻止浏览器的密码管理工具自动填充密码字段。
最近做的一些导出项目,需要使用图片资源,字体资源,证书,其它文件等;由于编译为jar并部署的,通常需要读取jar中的资源; 本文只要记录读取资源并通过jar方式运行和在开发IDE中运行的一致性。
public class Resource {
public void getResource() throws IOException{
File file=new File("D:\\res.txt");
BufferedReader br=new BufferedReader(new FileReader(file));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
}
}
打包内容: Java,MySQL,Springboot JAR + 第三方dll组件。
对于一些简单的WEB应用,使用诸如java,SQL,JAR/WAR期望将其统一打包成一个EXE安装包进行安装,并将其注册为Windows的服务。
2019-03-14 JWS在新版本中要收费,我去他大爷的。配置起来这么麻烦,远不及winsw.
创建对象是 Java 里最基本的操作,但除了最常见的
new,还有反射、克隆、反序列化等多种途径。理解它们的差异,有助于在框架开发、对象拷贝、缓存等场景做出正确选择。
| 方式 | 是否调用构造器 | 典型用途 |
|---|---|---|
new |
是 | 普通对象创建 |
反射(newInstance / Constructor) |
是 | 框架、IoC 容器、动态加载 |
克隆(clone) |
否 | 复制已有对象的副本 |
| 反序列化 | 否 | 对象持久化 / 网络传输后还原 |
Unsafe.allocateInstance |
否 | 绕过构造器分配实例(序列化框架内部用) |
| 工厂 / 建造者 / 单例 | 视实现 | 封装创建逻辑、控制实例数量 |