代码
Java奥利给
苦逼程序员码农日常技术、学习资源分享
展开
-
透视HTTPS建造固若金汤的城堡
为什么有 HTTPS?因为 HTTP 不安全!现在的互联网已经不再是 “田园时代”,“黑暗森林” 已经到来。上网的记录会被轻易截获,网站是否真实也无法验证,黑客可以伪装成银行网站,盗取真实姓名、密码、银行卡等敏感信息,威胁人身安全和财产安全。上网的时候必须步步为营、处处小心,否则就会被不知道埋伏在哪里的黑客所“猎杀”。HTTPS 如何实现安全通信?如何构建出固若金汤的网络城堡?主要涉及的知识点如下:了解什么是 HTTPS 什么样的才是安全的通信 对称加密与非对称加密、摘要算法、数字签名、..原创 2020-09-15 15:37:09 · 193 阅读 · 0 评论 -
Java开源框架中的设计模式以及应用场景
前言设计模式是软件设计中常见问题的典型解决方案,你可以通过对其进行定制来解决代码中的特定设计问题。关于设计模式,网上有很多讲解。但大部分都是Demo示例,看完有可能还是不知道怎么用。本文笔者将从设计模式入手,看一看在优秀的Java框架/中间件产品中,不同的设计模式应用场景在哪里。一、单例模式单例模式是Java中最简单的设计模式之一,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访原创 2020-08-24 17:19:40 · 421 阅读 · 0 评论 -
都2020年了你还不懂 ZooKeeper?没关系,这一篇给你讲的明明白白
本来想系统回顾下 ZooKeeper的,可是网上没找到一篇合自己胃口的文章,写的差不多的,感觉大部分都是基于《从Paxos到ZooKeeper 分布式一致性原理与实践》写的,所以自己读了一遍,加上项目中的使用,做个整理。加油,奥利给!前言面试常常被要求「熟悉分布式技术」,当年搞 “XXX管理系统” 的时候,我都不知道分布式系统是个啥。分布式系统是一个硬件或软件组件分布在不同的网络计算机中上,彼此之间仅仅通过消息传递进行通信和协调的系统。计算机系统从集中式到分布式的变革伴随着包括分布..原创 2020-07-23 16:04:59 · 359 阅读 · 0 评论 -
因为一个跨域请求,我差点丢了饭碗!
浏览器基本原理我叫小珉,是Windows帝国一个普通的上班族。今天,我入职了一家浏览器公司,公司的主营业务是为人类提供Internet上网服务,我的岗位是负责执行JavaScript代码。上午的晨会上,认识了负责网络连接的老白,所有网络请求都得找他帮忙,还有负责存储管理的小黑,什么Cookie,LocalStorage,SessionStorage之类的都归他管。哦,差点忘了,还有一个妹子小雪,她负责网页渲染。随后主管安排了我的工作:老白从网络取回网页之后交给小雪来解析渲染,遇...原创 2020-06-30 15:03:25 · 173 阅读 · 0 评论 -
Java优雅的记录日志:log4j实战篇
写在前面项目开发中,记录错误日志有以下好处: 方便调试 便于发现系统运行过程中的错误 存储业务数据,便于后期分析 在java中,记录日志有很多种方式: 自己实现:自己写类,将日志数据,以io操作方式,写数据到文本文件、数据库中。 使用log4j:log4j可以将日志输出到console窗口、文本文件、数据库等,功能强大! 使用slfj:slfj也是一个很强大的功能,slfj旨在一统天下,提供了logging.jar 和 log4j的接口,可以通过s原创 2020-06-29 15:21:15 · 226 阅读 · 0 评论 -
你还在使用 try-catch-finally 关闭资源?
代码一定得写的优雅一点!你还在使用try-catch-finally关闭资源吗,如果是,那么就有点out了。JIAMIN把手教你使用JDK7引用的try-with-resourceJDK7之前资源的关闭姿势:/** * jdk7以前关闭流的方式 * * @author hetiantian * */public class CloseResourceBefore7 { private static final String FileName = "file.txt";原创 2020-06-28 16:46:17 · 350 阅读 · 0 评论 -
Java 14 祭出代码简化神器,Lombok 要被干掉了?
Java 14 3 月发布距现在已经发布已经3个多月了,发布了很多新特性,详细的新特性介绍可以看这篇文章:http://www.javastack.cn/article/2020/java14-has-been-released/栈长之前也陆续分享过两篇 Java 14 的新特性: Java 14 之模式匹配,非常赞的一个新特性! Java 14 来势汹汹,这回让空指针无处遁形!! 感觉很好玩,今天再来分享一个新特性:JEP 359: Records (Preview)原创 2020-06-27 15:31:33 · 279 阅读 · 0 评论 -
总结了大量的 Java 代码精简之道,非常棒!
前言古语有云:道为术之灵,术为道之体;以道统术,以术得道。其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。在拜读大佬“孤尽”的文章《Code Review是苦涩但有意思的修行》时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已...原创 2020-06-27 14:51:04 · 408 阅读 · 0 评论 -
Java 10 大装 B 写法,看完可以出去吹牛逼了!
1、集合初始化集合的创建、赋值一步到位,想不想学?来,上边跟我一起画个 List,在你下边画一个Map……List<String>list=newArrayList<String>(){{add("www.");add("javastack.");add("cn");}};Map<String,String>map=newHashMap<String,String>(){{pu...原创 2020-06-26 19:27:36 · 245 阅读 · 0 评论 -
Java:如何更优雅的处理空值?
导语在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。业务中的空值场景存在一个UserSearchService用来提供用户查询的功能:publicinterfaceUserSearchService{List<Use...原创 2020-06-23 18:55:40 · 490 阅读 · 0 评论 -
怎么对 Java 程序调优?不看别后悔!
Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层、数据库层、框架层、JVM 层,如图 1 所示。图 1.Java 性能优原创 2020-06-23 16:48:30 · 226 阅读 · 0 评论 -
如何不重启热更新线上 Java 代码?
一、前言热更新代码的场景1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题。二、Arthas的使用使用阿里巴巴开源的Java诊断工具---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指标,还可原创 2020-06-23 16:45:41 · 610 阅读 · 0 评论 -
打破你的认知,数字除以 0 一定会崩溃吗?
一、引言在这个浮躁的社会,我们都学会了一种技能,快速学习使用各种开源库、开源框架。学习使用各种高端大气的技术,热修复、插件化、模块化、ORM……这些技能固然重要,但是有时候也要放慢脚步,耐着性子,打打基本功。不要看不起这些零零碎碎的基础知识,这些基础日积月累,慢慢的会让你跟同事拉开差距。接下来,我们直奔主题。开始我们的基本功。二、代码1System.out.println("1/0=" + 1/0);大叔的灵魂拷问:上面的代码会崩溃吗?如果不会,会输出什么呢?原创 2020-06-22 15:05:30 · 263 阅读 · 0 评论 -
Java 高并发之设计模式
本文主要讲解几种常见并行模式, 具体目录结构如下图.单例单例是最常见的一种设计模式, 一般用于全局对象管理, 比如xml配置读写之类的.一般分为懒汉式, 饿汉式.我公众号 Java 相关的文章整理成了 PDF ,关注微信公众号 Java后端 回复 666 下载。懒汉式: 方法上加synchronized1publicstaticsynchronizedSingletongetInstance(){2if(single ==null) {3...原创 2020-06-22 14:00:21 · 188 阅读 · 0 评论 -
Java 代码精简之道
前言古语有云:道为术之灵,术为道之体;以道统术,以术得道。其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。在拜读大佬“孤尽”的文章《Code Review是苦涩但有意思的修行》时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已...原创 2020-06-22 13:54:08 · 330 阅读 · 0 评论