<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[programmer_at的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/programmer_at</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; programmer_at]]></copyright><item><title><![CDATA[基于@Aspect的Spring AOP实现竟然没有运行：Spring“最直觉”的调试思路]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/89635128</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/89635128</guid><author>programmer_at</author><pubDate>Sun, 28 Apr 2019 21:31:10 +0800</pubDate><description><![CDATA[本文通过一个问题“基于@Aspect的Spring AOP实现竟然没有运行”的调试全过程，给出了Spring最基础最“直觉”最“特别”的调试思路：考虑对象是否被框架加载/实例化了？

比较了解Spring AOP的同学可以直接看第二部分“2. 调试思路总结”。阅读本文大概需要10min。]]></description><category></category></item><item><title><![CDATA[网络连接情况的调试思路：从实践中理解ICMP协议]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/89352870</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/89352870</guid><author>programmer_at</author><pubDate>Sat, 20 Apr 2019 18:32:04 +0800</pubDate><description><![CDATA[网络连接问题在后台开发中最常见的问题之一。本文总结了定位网络连接问题的思路及常用工具 ping和traceroute（traceroute是Linux命令，在windows中是tracert），并从ICMP网络协议的角度来解释 ping和traceroute的实现原理。假如学有余力的读者，还可以看看扩展部分，一起来转一下牛角尖：“机器通不通”这个描述到底准不准确？]]></description><category></category></item><item><title><![CDATA[NXSDOMAIN(域名无法访问)的问题排查思路：深入理解"在浏览器输入网址到显示页面全过程"（一）]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/86547765</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/86547765</guid><author>programmer_at</author><pubDate>Mon, 25 Feb 2019 19:08:51 +0800</pubDate><description><![CDATA[问题描述
通过域名访问放在腾讯云服务器上的SpringBoot应用出现异常：

腾讯云上的部署情况：
腾讯云服务器上同时部署了多个应用（网站），通过nginx监听80端口，将域名的请求转发到相应的端口，再由端口对应的程序处理网络请求。
问题解决思路
首先看到是DNS没有找到这个域名对应的IP address.
Tomcat出错找日志
www.iasokg.com访问出错的全过程
先找域名是否能够正...]]></description><category></category></item><item><title><![CDATA[英文抗生素药物医学知识图谱IASO1.0版发布 线上试用正式启动]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/87633749</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/87633749</guid><author>programmer_at</author><pubDate>Mon, 18 Feb 2019 17:52:59 +0800</pubDate><description><![CDATA[近日，由北京大学互联网信息工程研发中心（CIRE）开发的中文医学知识图谱英文抗生素药物医学知识图谱IASO1.0发布，面向公众正式开放试用。IASO是利用自然语言处理与文本挖掘技术，基于大规模医学文本数据，以人机结合的方式研发的英文药物医学知识图谱。
IASO知识图谱基于DO，IDO，NCBI，HPO和DrugBank等数据库，以及在线百科，权威医学文献等高质量医学数据资源构建而成的。 涵盖507...]]></description><category></category></item><item><title><![CDATA[23种常见设计模式总结（类图，优缺点，不同设计模式之间的对比）]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/85053187</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/85053187</guid><author>programmer_at</author><pubDate>Sat, 29 Dec 2018 09:30:12 +0800</pubDate><description><![CDATA[设计模式的几个重要原则

单一职责原则
开闭原则
依赖倒转原则
里氏代换原则
合成聚合复用原则：尽量使用组合/聚合代替继承
迪米特原则：降低耦合性

设计模式 类图 优点 缺点

...]]></description><category></category></item><item><title><![CDATA[从数据结构（树）深入理解数据库的索引]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/82735128</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/82735128</guid><author>programmer_at</author><pubDate>Mon, 17 Sep 2018 12:13:46 +0800</pubDate><description><![CDATA[树

二叉树

性质： 
1. 在非空二叉树中，第iii层的结点总数不超过2i−12i−12^{i-1}, i&amp;amp;amp;amp;amp;gt;=1i&amp;amp;amp;amp;amp;gt;=1i&amp;amp;amp;amp;gt;=1; 
2. 深度为hhh的二叉树最多有2h−12h−12^{h}-1个结点(h&amp;amp;amp;amp;amp;gt;=1)，最少有h个结点; 
3. 对于任意一棵二叉树，如果其叶结点数为N0，而度数为2的结点总数为N2，则N0=N2+1; ]]></description><category></category></item><item><title><![CDATA[实践出真知：理解Spring Bean生命周期]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/82533396</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/82533396</guid><author>programmer_at</author><pubDate>Sat, 08 Sep 2018 21:16:31 +0800</pubDate><description><![CDATA[


实例
生命周期
Spring Aware接口
Spring PostProcessor
一些建议







实例



public class MyBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAware, BeanClassLoaderAware,
        InitializingBean...]]></description><category></category></item><item><title><![CDATA[深入浅出解析HashMap源码]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/82431293</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/82431293</guid><author>programmer_at</author><pubDate>Wed, 05 Sep 2018 21:40:25 +0800</pubDate><description><![CDATA[转载自：https://huanglei.rocks/coding/194.html （该个人博客十分geek）


  基于 OpenJDK1.8





1 综述
1.1 内部类和字段
1.1.1  Node
1.1.2 TreeNode
1.1.3 table:Node[]
1.1.4 modCount:int


1.2 底层数据结构


2 插入
2.1 流程综述
2.2 hash()...]]></description><category></category></item><item><title><![CDATA[傻傻分不清：Spring IoC注入，自动装配与循环依赖]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/82389221</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/82389221</guid><author>programmer_at</author><pubDate>Tue, 04 Sep 2018 19:47:42 +0800</pubDate><description><![CDATA[


什么是IoC
IoC注入方式
优缺点比较
循环依赖
解决办法
1.改用setter注入方式(推荐)
2. @Lazy注解
3. 使用ApplicationContextAware, InitializingBean











什么是IoC

在创建新的Bean时，IoC容器会自动注入新Bean的所依赖的其他Bean，而无须自己手动创建。 




IoC注入方式


构造器注入 ...]]></description><category></category></item><item><title><![CDATA[SpringBoot 2.0 学习计划]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/80877211</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/80877211</guid><author>programmer_at</author><pubDate>Sun, 01 Jul 2018 20:34:29 +0800</pubDate><description><![CDATA[SpringBoot 2.0 学习计划

学习计划相关链接: https://github.com/YuanKQ/SpringBootTutorial , 学习计划的每一步都有对应的commit.


  在查找配置文件相关文档时，务必要保证SpringBoot的版本号要匹配, 


// 重要版本信息
Spring Boot 2.0.3
fastJson 1.2.17
redis 4.0   
...]]></description><category></category></item><item><title><![CDATA[Java线程池实现原理与源码解析(jdk1.8)]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/79799267</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/79799267</guid><author>programmer_at</author><pubDate>Tue, 03 Apr 2018 10:09:49 +0800</pubDate><description><![CDATA[为什么需要线程池？ 
线程池能够对线程进行统一分配，调优和监控： 
- 降低资源消耗（线程无限制地创建，然后使用完毕后销毁） 
- 提高响应速度（无须创建线程） 
- 提高线程的可管理性

Java是如何实现和管理线程池的? 
从JDK 5开始，把工作单元与执行机制分离开来，工作单元包括Runnable和Callable，而执行机制有Executor框架提供。




  newScheduled...]]></description><category></category></item><item><title><![CDATA[JVM方法调用与方法区]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/79764148</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/79764148</guid><author>programmer_at</author><pubDate>Fri, 30 Mar 2018 22:23:19 +0800</pubDate><description><![CDATA[


0. 方法区
0.1 内容加载的时间节点
0.1.1 类信息
0.1.2 静态变量
0.1.3 常量
0.1.4 代码
0.1.5 虚方法表


0.2 方法区会发生OOM吗？


1.  解析调用
2. 分派调用
2.1 静态分派
2.2 动态分派
2.3 单分派与多分派


Reference








0. 方法区



0.1 内容加载的时间节点



0.1.1 类信息

=...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap源码解析（jdk1.8）]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/79715177</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/79715177</guid><author>programmer_at</author><pubDate>Tue, 27 Mar 2018 16:30:07 +0800</pubDate><description><![CDATA[ConcurrentHashMap


  基于JDK1.8




ConcurrentHashMap
1. 原理解析
1.1. 重要成员变量
1.2. 实例初始化
1.3. put操作
1.3.1 put过程描述
1.3.2 hash算法
1.3.3 定位索引
1.3.4 获取table对应的索引元素f


1.4. table 扩容
1.4.1 addCount
1.4.2 treeify
...]]></description><category></category></item><item><title><![CDATA[ThreadLocal知识点解析]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/79432212</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/79432212</guid><author>programmer_at</author><pubDate>Sat, 03 Mar 2018 19:05:58 +0800</pubDate><description><![CDATA[1. 作用


（具体作用）为每个线程都维护一个* 线程局部变量* ;
（目的）每个线程都可以修改自己内部的变量本，而不影响其他线程的变量。
（重要区分：optional）属于线程安全范畴，但是不是为了解决线程同步问题：多个线程对同一个资源的并发访问。




2. 每个线程的局部变量是存储在哪里的？


  类似问题： 
  
  ThreadLocal是如何每个线程维护局部变量的？


==每...]]></description><category></category></item><item><title><![CDATA[Thread.join()的真正含义]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/78934278</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/78934278</guid><author>programmer_at</author><pubDate>Fri, 29 Dec 2017 18:53:13 +0800</pubDate><description><![CDATA[首先, Thread.join() 并没有将线程合并起来~ 
任何疑惑都先从Java Doc开始,  
stackoverflow上有个极好的例子:  
 
1. After  the main thread creates and starts the t1 and t2 threads. There are 3 threads running in parallel: main, t1, t2]]></description><category></category></item><item><title><![CDATA[ReentrantReadWriteLock 读写锁获取与释放源码解析]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/78910614</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/78910614</guid><author>programmer_at</author><pubDate>Wed, 27 Dec 2017 11:53:05 +0800</pubDate><description><![CDATA[ReentrantReadWriteLock 读写锁构造函数与ReentrantLock相类似, 其自定义同步器Sync分为公平锁FairSync与非公平锁NonfairSync的两种.默认为NonfairSyncpublic ReentrantReadWriteLock() {
        this(false);
    }public ReentrantReadWriteLock(bool]]></description><category></category></item><item><title><![CDATA[ReentrantLock加锁与解锁源码解析]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/78905843</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/78905843</guid><author>programmer_at</author><pubDate>Tue, 26 Dec 2017 19:55:33 +0800</pubDate><description><![CDATA[ReentrantLock公平锁与非公平锁的lock()和unlock()过程解析.ReentrantLock.lock() public void lock() {
        this.sync.lock();
    }sync.lock()取决于ReentrantLock获取锁的机制: 公平性FairSync or 非公平性UnfairSync(Default)非公平性(实现重进入的过程]]></description><category></category></item><item><title><![CDATA[首次将本地代码上传至github]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/78011705</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/78011705</guid><author>programmer_at</author><pubDate>Sun, 17 Sep 2017 17:19:08 +0800</pubDate><description><![CDATA[这个问题我遇到好几次了, 每次解决的方式都不一样, 有时解决地十分丑陋, 所有今天必须给自己规范化一下解决流程.前提github账号 
本地也已经安装了git场景
本地尚且没有代码
本地已经有代码了, github上也没有代码, 尚未将代码上传至github
本地已有代码, github上也有代码, 两者没有冲突, 需要将本地代码上传至github上
本地已有代码, github上也有代码, 两者也]]></description><category></category></item><item><title><![CDATA[Python中使用多个分隔符分隔字符串re.split]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/77409507</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/77409507</guid><author>programmer_at</author><pubDate>Sat, 19 Aug 2017 11:57:02 +0800</pubDate><description><![CDATA[正则表达式基础，看这篇就够了



摘要

split多个分隔符 单一分隔符，使用str.split()即可  
多个分隔符，复杂的分隔情况，使用re.split



单一分隔符，str.split()与 re.split()效果是一样的 
多个单一 分隔符 时 ，”[]”与 “|”的 效果是一样的，但是 请注意 使用 “|”时某些字符 需要转义 
多个 长短 不一 的的分隔符的分隔符时， 就应]]></description><category></category></item><item><title><![CDATA[Get pixel width of d3.js SVG element created with width as percentage]]></title><link>https://blog.youkuaiyun.com/programmer_at/article/details/74779595</link><guid>https://blog.youkuaiyun.com/programmer_at/article/details/74779595</guid><author>programmer_at</author><pubDate>Fri, 07 Jul 2017 20:10:46 +0800</pubDate><description><![CDATA[问题描述借助d3.js画了一个力引导图(Force-Directed Graph) 官方示例 
但是官方示例中将SVG元素的width和height都是设定为像素, 也就是是该SVG不能自适应了.那么为了使SVG能够自适应, 自然而然将svg元素的width和height设置为百分比.<svg width="100%" height="100%"></svg>依然是官方示例, 力引导图却没有出现在网]]></description><category></category></item></channel></rss>