- 博客(26)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 真正理解线程上下文类加载器(多案例分析)
线程上下文类加载器破坏了“双亲委派模型”,可以在执行线程中抛弃双亲委派加载链模式,使上层代码可以逆向使用下层的系统类加载器。本文通过JDBC和Tomcat两个案例分析,详细解释了其中的原理。
2016-09-25 13:31:36 58788 115
原创 java类加载器不完全分析
本文分析了启动(Bootstrap)类加载器、扩展(Extension)类加载器、系统(System)类加载器、用户自定义类加载器的原理,并介绍一些类加载器的常用方法。
2016-09-08 02:44:13 8788 4
原创 迁移系统激活已有的正版windows11专业版及office家庭学生版步骤
换新电脑后迁移系统如何保持windows专业版激活状态?OEM的正版office如何也迁移到已有系统中?本文将通过实操一步一步解决每个问题。
2022-11-12 19:04:02 16693
原创 Java8 函数式编程——基础篇
函数式编程一种编程范式,它将电脑运算视为函数运算,并且避免使用程序状态以及易变对象。其中,λ演算(lambda calculus)为该语言最重要的基础。特性函数是“第一等公民”函数与其他数据类型一样,可以赋值给其他变量,也可以作为参数,也可以作为返回值。不可变性像闭包一样,传入的自由变量是不可变的,降低数据的不一致性。同时也只返回新的值,不修改变量状态,没有“副作用”。为什么使用代码简洁,开发快速易于理解,降低风险易于并行延迟执行例: 根据用户名批量并行获取工号Before
2020-07-01 02:23:38 820
原创 如何在spring代理中实现自我调用(self-invocation)
问题在spring中如果在方法上添加了诸如@Transactional、@Cacheable、@Scheduled、@Async或是切面之类注解,那么这个类就将由spring生成其代理对象,对指定方法进行相关的包装。当该方法在其他对象中被调用时是可以正常触发代理方法的,然而在本类的方法中调用时却不会,最终调用的还是原始方法。class Service { public void met...
2019-01-25 01:48:57 7253 1
原创 Java服务问题快速排查指南
问题收到服务内存占用过大告警,登录虚拟机使用ps -ef发现每隔几秒java进程占用的CPU就回暴增一次排查方向一:服务日志查看服务日志,正频繁打印连接mail服务器失败,根据错误堆栈信息定位到业务代码位置排查方向二:JVM工具若代码中未打印出错信息,可以考虑从jvm线程上入手。使用jps获取java服务pid使用top -H -p pid查看高占用线程,CPU...
2018-08-27 17:21:07 1500
原创 在Java项目中使用traceId跟踪请求全流程日志
最近在项目开发中遇到了一些问题,项目为多机部署,使用kibana收集日志,但并发大时使用日志定位比较麻烦,大量日志输出导致很难筛出指定请求的全部相关日志,以及下游服务调用对应的日志。因此计划对项目日志打印进行一些小改造,使用一个traceId跟踪请求的全部路径,前提是不修改原有的打印方式。简单的解决思路想要跟踪请求,第一个想到的就是当请求来时生成一个traceId放在ThreadLoc...
2018-06-25 02:09:15 83108 22
翻译 Java虚拟机是如何处理异常的?
编码时我们常常被要求尽量减少try-catch语句块,理由就是就算不抛异常它们也会影响性能。然而影响究竟有多大呢?语句块应该放在循环体内部还是外部呢?下面译文将详细阐释Java虚拟机处理异常的机制。 虽然文中没有进行性能分析,但文末提供了一些基准测试的文章,先把结论写在前头:try-catch语句块几乎不会影响程序运行性能!
2017-08-12 01:52:04 3934
原创 Java数值类型提升机制(三目条件运算符与空指针问题)
Java语法特性隐藏在了代码中的每个角落,最常见的就是自动拆装箱和类型提升了。这些特性在带来编码便利性的同时也在代码中藏下了些不易察觉定时炸弹,比如对null拆箱时引发的空指针异常NPE。本文就将JLS中关于数值提升的机制译述出来,便于更深刻地理解代码后面的东西。问题以下几段代码为什么是这样的运行结果:Object k = true ? null : 1;System...
2017-07-31 02:16:13 2605
原创 JVM常用工具
说到监控JVM,一般想到就是jps/jinfo/jstat/jmap等JDK自带的工具,或者是JConsole/VisualVM等图形化便捷工具。但一般服务器都部署在远程虚拟机中,那又该如何远程监控呢?通常的方法是走jstatd或jmx,那如何保证通信过程的安全呢?很多教程都避开了ssl的配置方式,因此笔者在填坑若干后奉上此篇教程,仅供参考。 文章将按上述的方式逐一介绍JVM监控方式,若仅对
2017-03-13 01:58:46 1350
原创 Intellij IDEA通过tomcat部署web项目的机制
以前使用eclipse调用tomcat运行web项目时,eclipse的方式非常直接了当,就是直接将项目更新到%TOMCAT_HOME%/webapps目录下即可。然而在使用Intellij IDEA时,该目录下看不到任何项目文件,%TOMCAT_HOME%/conf/Catalina/localhost目录下也看不到任何项目配置文件,那么问题来了,web项目到底是如何部署到tomcat上的呢?
2016-11-03 02:16:19 12248 18
原创 彻底删除Daemon虚拟光驱工具残留的光驱盘符
解决了以下问题:资源管理器中始终显示盘符“光驱G”,“设备管理器”中查看该虚拟光驱显示为“dtsoft virtual cdrom device”,卸载后重启又会出现,只能禁用。
2016-11-03 01:13:34 18389 2
原创 spring集成SLF4J时的问题及延展
Spring Framework 所使用的日志接口一直都是 commons-logging,Apache Commons Logging是一个通用的日志接口,与slf4j简单日志门面类似。如果它搜索到应用添加了log4j的引用,那么将直接使用log4j,如果你想用现在越来越流行的SLF4J来接管日志接口,则需要使用SLF4J提供的 jcl-over-slf4j 把 commons-logging
2016-10-07 01:29:21 2121
翻译 Log4j 2环境配置和适配组件配置(maven/ivy/gradle)
本文介绍了Log4j 2 在maven/ivy/gradle三种构建工具中的环境配置和适配组件配置。
2016-10-03 01:31:06 8710
翻译 Apache Log4j 2 中文文档
Log4j是一个常用的java日志工具类,然而1.x的版本存在诸多的缺陷,官方也逐渐减少了对其的维护。但自2014年Log4j 2推出到现在,仍有大部分的人在使用Log4j 1,导致网上搜索到的Log4j 2文档都不大完整,零零散散不便查阅。所以我打算抽出一部分时间慢慢翻译一遍英文文档,中间可能跳过一些不常用的配置。
2016-10-03 00:38:36 5772 2
原创 mybatis打印SQL日志最终解决方案
mybatis只能通过配置log4j日志输出级别的方式来打印sql。但网上搜到的答案均无效,最终发现直接配置dao层输出级别即可。
2016-09-18 00:37:19 18785 11
翻译 使用maven命令将第三方jar包导入本地仓库
当maven中央仓库或者私服上没有你需要依赖的第三方jar包时,一般都是手动将jar包放入本地repository文件夹下对应的目录,这样才可被maven正确识别。但这种方法操作繁琐,也不便于脚本化。为了化简操作步骤、减少出错率,我们推荐使用 maven-install-plugin 插件来进行jar包安装。
2016-08-30 14:20:22 13924 3
原创 Hdfs(NameNode&DataNode)和Hive迁移总结
这篇文章介绍如何快速迁移hadoop和hive到新机器上,以及其中遇到问题的解决方案,顺便回顾一下部分相关环境配置的过程。
2016-05-30 02:27:45 4575
原创 java研发面经:滴滴、美团、网易、58赶集等
今年秋招我的面试大致结束了,差不多把提供北京java岗位的互联网公司大都投一遍,也获得了几个面试机会,在这儿把面经都和大伙儿分享一下吧。
2015-09-25 23:05:47 5414 1
原创 ReentrantLock中lock/trylock/lockInterruptibly方法的区别及源码解析
看了几篇关于这三者区别的文章,但都说的不够具体,自己去读了下源码,大概是清楚了三者的功能,不想了解源码的可以跳到最后看总结。首先,ReentrantLock类中使用了大量的CAS操作,也就是CompareAndSwap原子操作,依靠硬件保证互斥与同步,然后说下interrupt()方法。每个线程都有一个interrupt标志。当线程在阻塞状态时,如sleep、wait、await(park)、...
2015-08-16 22:45:49 7912 1
原创 百度使用的网页变灰css
研究了下百度的css,在html中任意地方加上以下css变能做到使整个页面变灰,兼容多种浏览器。html{ filter: grayscale(100%); -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-f
2015-08-13 13:13:31 2523
K均值算法+SVM实现数据分类
2014-03-17
K均值算法+SVM实现数据分类
2014-03-17
mysql是如何实现自定义数据库隔离级别的?
2016-09-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人