<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Stay Foolish]]></title><description><![CDATA[小码打怪升级中]]></description><link>https://blog.youkuaiyun.com/yangcheng33</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yangcheng33]]></copyright><item><title><![CDATA[迁移系统激活已有的正版windows11专业版及office家庭学生版步骤]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/127823141</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/127823141</guid><author>yangcheng33</author><pubDate>Sat, 12 Nov 2022 19:04:02 +0800</pubDate><description><![CDATA[换新电脑后迁移系统如何保持windows专业版激活状态？OEM的正版office如何也迁移到已有系统中？本文将通过实操一步一步解决每个问题。]]></description><category></category></item><item><title><![CDATA[Java8 函数式编程——基础篇]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/107054688</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/107054688</guid><author>yangcheng33</author><pubDate>Wed, 01 Jul 2020 02:23:38 +0800</pubDate><description><![CDATA[函数式编程

一种编程范式，它将电脑运算视为函数运算，并且避免使用程序状态以及易变对象。其中，λ演算（lambda calculus）为该语言最重要的基础。

特性
函数是“第一等公民”
函数与其他数据类型一样，可以赋值给其他变量，也可以作为参数，也可以作为返回值。
不可变性
像闭包一样，传入的自由变量是不可变的，降低数据的不一致性。同时也只返回新的值，不修改变量状态，没有“副作用”。
为什么使用

代码简洁，开发快速
易于理解，降低风险
易于并行
延迟执行

例: 根据用户名批量并行获取工号
Before]]></description><category></category></item><item><title><![CDATA[如何在spring代理中实现自我调用(self-invocation)]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/86634981</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/86634981</guid><author>yangcheng33</author><pubDate>Fri, 25 Jan 2019 01:48:57 +0800</pubDate><description><![CDATA[问题
在spring中如果在方法上添加了诸如@Transactional、@Cacheable、@Scheduled、@Async或是切面之类注解，那么这个类就将由spring生成其代理对象，对指定方法进行相关的包装。当该方法在其他对象中被调用时是可以正常触发代理方法的，然而在本类的方法中调用时却不会，最终调用的还是原始方法。
class Service {
    public void met...]]></description><category></category></item><item><title><![CDATA[Java服务问题快速排查指南]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/82116170</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/82116170</guid><author>yangcheng33</author><pubDate>Mon, 27 Aug 2018 17:21:07 +0800</pubDate><description><![CDATA[问题

收到服务内存占用过大告警，登录虚拟机使用ps -ef发现每隔几秒java进程占用的CPU就回暴增一次



排查方向一：服务日志


查看服务日志，正频繁打印连接mail服务器失败，根据错误堆栈信息定位到业务代码位置


排查方向二：JVM工具

若代码中未打印出错信息，可以考虑从jvm线程上入手。


使用jps获取java服务pid
使用top -H -p pid查看高占用线程，CPU...]]></description><category></category></item><item><title><![CDATA[在Java项目中使用traceId跟踪请求全流程日志]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/80796129</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/80796129</guid><author>yangcheng33</author><pubDate>Mon, 25 Jun 2018 02:09:15 +0800</pubDate><description><![CDATA[最近在项目开发中遇到了一些问题，项目为多机部署，使用kibana收集日志，但并发大时使用日志定位比较麻烦，大量日志输出导致很难筛出指定请求的全部相关日志，以及下游服务调用对应的日志。因此计划对项目日志打印进行一些小改造，使用一个traceId跟踪请求的全部路径，前提是不修改原有的打印方式。



简单的解决思路

想要跟踪请求，第一个想到的就是当请求来时生成一个traceId放在ThreadLoc...]]></description><category></category></item><item><title><![CDATA[Log4j 2架构]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/78172526</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/78172526</guid><author>yangcheng33</author><pubDate>Sat, 07 Oct 2017 23:35:39 +0800</pubDate><description><![CDATA[本文主要介绍Log4j 2 的基础架构。]]></description><category></category></item><item><title><![CDATA[Java虚拟机是如何处理异常的？]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/77104561</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/77104561</guid><author>yangcheng33</author><pubDate>Sat, 12 Aug 2017 01:52:04 +0800</pubDate><description><![CDATA[编码时我们常常被要求尽量减少try-catch语句块，理由就是就算不抛异常它们也会影响性能。然而影响究竟有多大呢？语句块应该放在循环体内部还是外部呢？下面译文将详细阐释Java虚拟机处理异常的机制。 
  虽然文中没有进行性能分析，但文末提供了一些基准测试的文章，先把结论写在前头：try-catch语句块几乎不会影响程序运行性能！]]></description><category></category></item><item><title><![CDATA[Java数值类型提升机制（三目条件运算符与空指针问题）]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/76408580</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/76408580</guid><author>yangcheng33</author><pubDate>Mon, 31 Jul 2017 02:16:13 +0800</pubDate><description><![CDATA[Java语法特性隐藏在了代码中的每个角落，最常见的就是自动拆装箱和类型提升了。这些特性在带来编码便利性的同时也在代码中藏下了些不易察觉定时炸弹，比如对null拆箱时引发的空指针异常NPE。本文就将JLS中关于数值提升的机制译述出来，便于更深刻地理解代码后面的东西。




问题

以下几段代码为什么是这样的运行结果：



Object k = true ? null : 1;
System...]]></description><category></category></item><item><title><![CDATA[JVM常用工具]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/60505725</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/60505725</guid><author>yangcheng33</author><pubDate>Mon, 13 Mar 2017 01:58:46 +0800</pubDate><description><![CDATA[说到监控JVM，一般想到就是jps/jinfo/jstat/jmap等JDK自带的工具，或者是JConsole/VisualVM等图形化便捷工具。但一般服务器都部署在远程虚拟机中，那又该如何远程监控呢？通常的方法是走jstatd或jmx，那如何保证通信过程的安全呢？很多教程都避开了ssl的配置方式，因此笔者在填坑若干后奉上此篇教程，仅供参考。 
  文章将按上述的方式逐一介绍JVM监控方式，若仅对]]></description><category></category></item><item><title><![CDATA[使用Exchange读取邮件、发送邮件]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/55049629</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/55049629</guid><author>yangcheng33</author><pubDate>Mon, 13 Feb 2017 15:53:12 +0800</pubDate><description><![CDATA[使用Exchange读取邮件、发送邮件]]></description><category></category></item><item><title><![CDATA[Intellij IDEA通过tomcat部署web项目的机制]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/53016764</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/53016764</guid><author>yangcheng33</author><pubDate>Thu, 03 Nov 2016 02:16:19 +0800</pubDate><description><![CDATA[以前使用eclipse调用tomcat运行web项目时，eclipse的方式非常直接了当，就是直接将项目更新到%TOMCAT_HOME%/webapps目录下即可。然而在使用Intellij IDEA时，该目录下看不到任何项目文件，%TOMCAT_HOME%/conf/Catalina/localhost目录下也看不到任何项目配置文件，那么问题来了，web项目到底是如何部署到tomcat上的呢？]]></description><category></category></item><item><title><![CDATA[彻底删除Daemon虚拟光驱工具残留的光驱盘符]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/53016432</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/53016432</guid><author>yangcheng33</author><pubDate>Thu, 03 Nov 2016 01:13:34 +0800</pubDate><description><![CDATA[解决了以下问题：资源管理器中始终显示盘符“光驱G”，“设备管理器”中查看该虚拟光驱显示为“dtsoft virtual cdrom device”，卸载后重启又会出现，只能禁用。]]></description><category></category></item><item><title><![CDATA[spring集成SLF4J时的问题及延展]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52728641</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52728641</guid><author>yangcheng33</author><pubDate>Fri, 07 Oct 2016 01:29:21 +0800</pubDate><description><![CDATA[Spring Framework 所使用的日志接口一直都是 commons-logging，Apache Commons Logging是一个通用的日志接口，与slf4j简单日志门面类似。如果它搜索到应用添加了log4j的引用，那么将直接使用log4j，如果你想用现在越来越流行的SLF4J来接管日志接口，则需要使用SLF4J提供的 jcl-over-slf4j 把 commons-logging]]></description><category></category></item><item><title><![CDATA[Log4j 2环境配置和适配组件配置（maven/ivy/gradle）]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52725910</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52725910</guid><author>yangcheng33</author><pubDate>Mon, 03 Oct 2016 01:31:06 +0800</pubDate><description><![CDATA[本文介绍了Log4j 2 在maven/ivy/gradle三种构建工具中的环境配置和适配组件配置。]]></description><category></category></item><item><title><![CDATA[Log4j 2的特性和改进]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52725882</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52725882</guid><author>yangcheng33</author><pubDate>Mon, 03 Oct 2016 01:16:31 +0800</pubDate><description><![CDATA[本文介绍了Log4j 2的诸多特性和改进， 建议将1.x升级到最新版本。]]></description><category></category></item><item><title><![CDATA[Apache Log4j 2 中文文档]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52725179</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52725179</guid><author>yangcheng33</author><pubDate>Mon, 03 Oct 2016 00:38:36 +0800</pubDate><description><![CDATA[Log4j是一个常用的java日志工具类，然而1.x的版本存在诸多的缺陷，官方也逐渐减少了对其的维护。但自2014年Log4j 2推出到现在，仍有大部分的人在使用Log4j 1，导致网上搜索到的Log4j 2文档都不大完整，零零散散不便查阅。所以我打算抽出一部分时间慢慢翻译一遍英文文档，中间可能跳过一些不常用的配置。]]></description><category></category></item><item><title><![CDATA[真正理解线程上下文类加载器（多案例分析）]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52631940</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52631940</guid><author>yangcheng33</author><pubDate>Sun, 25 Sep 2016 13:31:36 +0800</pubDate><description><![CDATA[线程上下文类加载器破坏了“双亲委派模型”，可以在执行线程中抛弃双亲委派加载链模式，使上层代码可以逆向使用下层的系统类加载器。本文通过JDBC和Tomcat两个案例分析，详细解释了其中的原理。]]></description><category></category></item><item><title><![CDATA[mybatis打印SQL日志最终解决方案]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52567159</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52567159</guid><author>yangcheng33</author><pubDate>Sun, 18 Sep 2016 00:37:19 +0800</pubDate><description><![CDATA[mybatis只能通过配置log4j日志输出级别的方式来打印sql。但网上搜到的答案均无效，最终发现直接配置dao层输出级别即可。]]></description><category></category></item><item><title><![CDATA[java类加载器不完全分析]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52464898</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52464898</guid><author>yangcheng33</author><pubDate>Thu, 08 Sep 2016 02:44:13 +0800</pubDate><description><![CDATA[本文分析了启动（Bootstrap）类加载器、扩展（Extension）类加载器、系统（System）类加载器、用户自定义类加载器的原理，并介绍一些类加载器的常用方法。]]></description><category></category></item><item><title><![CDATA[使用maven命令将第三方jar包导入本地仓库]]></title><link>https://blog.youkuaiyun.com/yangcheng33/article/details/52368766</link><guid>https://blog.youkuaiyun.com/yangcheng33/article/details/52368766</guid><author>yangcheng33</author><pubDate>Tue, 30 Aug 2016 14:20:22 +0800</pubDate><description><![CDATA[当maven中央仓库或者私服上没有你需要依赖的第三方jar包时，一般都是手动将jar包放入本地repository文件夹下对应的目录，这样才可被maven正确识别。但这种方法操作繁琐，也不便于脚本化。为了化简操作步骤、减少出错率，我们推荐使用 maven-install-plugin 插件来进行jar包安装。]]></description><category></category></item></channel></rss>