自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 基于@Aspect的Spring AOP实现竟然没有运行:Spring“最直觉”的调试思路

本文通过一个问题“基于@Aspect的Spring AOP实现竟然没有运行”的调试全过程,给出了Spring最基础最“直觉”最“特别”的调试思路:考虑对象是否被框架加载/实例化了? 比较了解Spring AOP的同学可以直接看第二部分“2. 调试思路总结”。阅读本文大概需要10min。

2019-04-28 21:31:10 398 0

原创 网络连接情况的调试思路:从实践中理解ICMP协议

网络连接问题在后台开发中最常见的问题之一。本文总结了定位网络连接问题的思路及常用工具 ping和traceroute(traceroute是Linux命令,在windows中是tracert),并从ICMP网络协议的角度来解释 ping和traceroute的实现原理。假如学有余力的读者,还可以看...

2019-04-20 18:32:04 87 0

原创 NXSDOMAIN(域名无法访问)的问题排查思路:深入理解"在浏览器输入网址到显示页面全过程"(一)

问题描述 通过域名访问放在腾讯云服务器上的SpringBoot应用出现异常: 腾讯云上的部署情况: 腾讯云服务器上同时部署了多个应用(网站),通过nginx监听80端口,将域名的请求转发到相应的端口,再由端口对应的程序处理网络请求。 问题解决思路 首先看到是DNS没有找到这个域名对应的IP ad...

2019-02-25 19:08:51 560 0

原创 英文抗生素药物医学知识图谱IASO1.0版发布 线上试用正式启动

近日,由北京大学互联网信息工程研发中心(CIRE)开发的中文医学知识图谱英文抗生素药物医学知识图谱IASO1.0发布,面向公众正式开放试用。IASO是利用自然语言处理与文本挖掘技术,基于大规模医学文本数据,以人机结合的方式研发的英文药物医学知识图谱。 IASO知识图谱基于DO,IDO,NCBI,H...

2019-02-18 17:52:59 385 0

原创 23种常见设计模式总结(类图,优缺点,不同设计模式之间的对比)

设计模式的几个重要原则 单一职责原则 开闭原则 依赖倒转原则 里氏代换原则 合成聚合复用原则:尽量使用组合/聚合代替继承 迪米特原则:降低耦合性 设计模式 类图 优点 缺点 ...

2018-12-29 09:30:12 5748 2

原创 从数据结构(树)深入理解数据库的索引

树 二叉树 性质: 1. 在非空二叉树中,第iii层的结点总数不超过2i−12i−12^{i-1}, i>=1i>=1i>=1; 2. 深度为hhh的二叉树最多...

2018-09-17 12:13:46 464 3

原创 实践出真知:理解Spring Bean生命周期

实例 生命周期 Spring Aware接口 Spring PostProcessor 一些建议 实例 public class MyBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAw...

2018-09-08 21:16:31 1920 1

转载 深入浅出解析HashMap源码

转载自: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 m...

2018-09-05 21:40:25 229 1

原创 傻傻分不清:Spring IoC注入,自动装配与循环依赖

什么是IoC IoC注入方式 优缺点比较 循环依赖 解决办法 1.改用setter注入方式(推荐) 2. @Lazy注解 3. 使用ApplicationContextAware, InitializingBean 什么是IoC 在创建新的Bean时,IoC容器会自动...

2018-09-04 19:47:42 3390 0

原创 SpringBoot 2.0 学习计划

SpringBoot 2.0 学习计划 学习计划相关链接: https://github.com/YuanKQ/SpringBootTutorial , 学习计划的每一步都有对应的commit. 在查找配置文件相关文档时,务必要保证SpringBoot的版本号要匹配, // 重要版...

2018-07-01 20:34:29 930 0

原创 Java线程池实现原理与源码解析(jdk1.8)

为什么需要线程池? 线程池能够对线程进行统一分配,调优和监控: - 降低资源消耗(线程无限制地创建,然后使用完毕后销毁) - 提高响应速度(无须创建线程) - 提高线程的可管理性 Java是如何实现和管理线程池的? 从JDK 5开始,把工作单元与执行机制分离开来,工作单元包括Runna...

2018-04-03 10:09:49 19364 7

原创 JVM方法调用与方法区

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 单分派与多分派 Refere...

2018-03-30 22:23:19 538 0

原创 ConcurrentHashMap源码解析(jdk1.8)

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对应的...

2018-03-27 16:30:07 15733 13

原创 ThreadLocal知识点解析

1. 作用 (具体作用)为每个线程都维护一个* 线程局部变量* ; (目的)每个线程都可以修改自己内部的变量本,而不影响其他线程的变量。 (重要区分:optional)属于线程安全范畴,但是不是为了解决线程同步问题:多个线程对同一个资源的并发访问。 2. 每个线程的局部变量是存储在哪里...

2018-03-03 19:05:58 227 0

原创 Thread.join()的真正含义

首先, Thread.join() 并没有将线程合并起来~ 任何疑惑都先从Java Doc开始, stackoverflow上有个极好的例子: 1. After the main thread creates and starts the t1 and t2 threads. Th...

2017-12-29 18:53:13 7696 1

原创 ReentrantReadWriteLock 读写锁获取与释放源码解析

ReentrantReadWriteLock 读写锁构造函数与ReentrantLock相类似, 其自定义同步器Sync分为公平锁FairSync与非公平锁NonfairSync的两种.默认为NonfairSyncpublic ReentrantReadWriteLock() { ...

2017-12-27 11:53:05 539 0

原创 ReentrantLock加锁与解锁源码解析

ReentrantLock公平锁与非公平锁的lock()和unlock()过程解析.ReentrantLock.lock() public void lock() { this.sync.lock(); }sync.lock()取决于ReentrantLock获取锁的机制:...

2017-12-26 19:55:33 375 0

原创 首次将本地代码上传至github

这个问题我遇到好几次了, 每次解决的方式都不一样, 有时解决地十分丑陋, 所有今天必须给自己规范化一下解决流程.前提github账号 本地也已经安装了git场景 本地尚且没有代码 本地已经有代码了, github上也没有代码, 尚未将代码上传至github 本地已有代码, github上也有代码...

2017-09-17 17:19:08 5247 1

原创 Python中使用多个分隔符分隔字符串re.split

正则表达式基础,看这篇就够了 摘要 split多个分隔符 单一分隔符,使用str.split()即可 多个分隔符,复杂的分隔情况,使用re.split 单一分隔符,str.split()与 re.split()效果是一样的 多个单一 分隔符 时 ,”[]”与 “|”的 效果是一...

2017-08-19 11:57:02 35485 0

原创 Get pixel width of d3.js SVG element created with width as percentage

问题描述借助d3.js画了一个力引导图(Force-Directed Graph) 官方示例 但是官方示例中将SVG元素的width和height都是设定为像素, 也就是是该SVG不能自适应了.那么为了使SVG能够自适应, 自然而然将svg元素的width和height设置为百分比.<sv...

2017-07-07 20:10:46 1520 0

原创 SpringMVC 将复杂对象以json格式返回前端

环境SpringMVC 4.3.5 Jackson 2.6.5复杂对象描述涵盖列表, 而列表里面的每一个也都是对象 返回json数据如下:{ "nodes": [ {"id": "Myriel", "group&...

2017-07-04 20:35:09 4030 0

原创 FreeMarker模板继承

动机freemarker默认是没有模板继承功能的,为其添加新指令@extends,@block,@override,@super,这些指令属于rapid-framework的扩展。问题但是,都说加上rapid-framework的jar包,然后修改配置文件就够了, 但是你会发现出现一下问题: ...

2017-05-12 17:25:28 1113 0

原创 FreeMarker中文乱码

共有三处地方需要注意:FreeMarkerConfigurer<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigu...

2017-05-09 11:40:57 4703 0

原创 springMVC与freemarker整合

主要遇到以下两个问题:freemarker.template.TemplateHashModelExException in thread "main" java.lang.NoClassDefFoundError: freemarker/template/TemplateHa...

2017-05-08 20:22:03 4916 1

原创 neo4j 3.0多数库切换

动机 类似与关系型数据库,创建了多个数据库 想要像访问关系型数据库那样来可以无缝切换多个数据库 然而,在neo4j 3.0都暂时没有办法做到:每次启动neo4j,它只能读取一个数据库。 比如,现在有两个数据库graph.db,graph2.db。假设neo4j默认的数据库为graph.db,启动...

2017-04-07 17:29:37 8016 3

原创 远程访问neo4j

动机采用REST来远程访问neo4j的数据库 同时在本地浏览器查看数据是否添加正确(neo4j的可视化界面x.x.x.x:7474/browser)即,通过HTTP协议来与neo4j进行交互环境配置Linux 版本$ lsb_release -a LSB Version: :core-4....

2017-04-06 20:59:28 16036 3

原创 MySQL备忘之表联结(JOIN)

个人觉得写得极好的一篇博客: http://www.cnblogs.com/BeginMan/p/3754322.html本来就是一个左右不分的迷糊虫,刚开始学习表联结时,出现了left join,right join,inner join,balala…… @^@已经懵圈了,知道遇到这幅图,整...

2017-03-23 21:43:31 434 0

原创 IntelliJ编译时,致命错误:在路径和启动路径中找不到包java.lang

基础知识主要是发现自己的Java没有安装成功:……\Java\jdk1.8.0_121\lib里面没有tools.jar,dt.jar而假如正确安装的话,dt.jar和tools.jar位于:{Java_Home}/lib/下,而rt.jar位于:{Java_Home}/jre/lib/下, {...

2017-03-06 23:08:09 6697 0

原创 MySQL备忘之数据更新篇(INSERT, UPDATE, DELETE)

INSERT插入完整行与NULL not null字段必须插入值 auto_increment字段可以不填入,即使填入NULL值也是不必要的,由DBMS自动计算并填充。 如果表的定义允许,则可以在INSERT操作中省略某 些列。省略的列必须满足以下某个条件。 该列定义为允许NULL值(无值或空值...

2017-03-06 12:09:00 527 0

原创 MySQL备忘之查询篇

最好的教材当然是官方文档: https://dev.mysql.com/doc/refman/5.7/en/ 作为一枚回回英语考试都垫底的英文盲觉得文档写得还是很通俗易懂,只要你够耐心。distinctDISTINCT关键字应用于所有列而不仅仅是它的前置列。SELECT DISTINCT ve...

2017-03-05 14:11:08 420 0

原创 Import Java Projects from other IDE into IntelliJ IDEA

需求将一个在Mac OSX NetBeans的Java Application Project导入到win10 IntelliJ IDEA,进行二次开发。问题IntelliJ IDEA无法识别出整个工程,如下图 强行运行,需要Edit Configuration,发现无法发现main cla...

2017-03-01 21:41:29 896 0

原创 系统级虚拟机

本文仅是基于“了解基本概念”层面,所以会写的比较简单,想深入了解的同学可以读一下两篇很经典的paper:Disco: running commodity operating systems on scalable multiprocessors和Virtual Machine Monitors ...

2017-02-08 17:08:52 450 0

原创 数的表示与运算

计算机基础知识总结第一篇,先从最害怕的计算机组成原理开始。 为了防止写过就忘(其实还是会忘记T……T)。计算机中数的表示假设该计算机使用八位表示数,其中一位是符号位,其余7位表示数值。机器数与真值机器数:一个数字在机器中的二进制表示形式,带有符号位 真值:带符号位的机器数对应的真正的数值,机器...

2017-02-05 18:35:41 2406 0

原创 How to Install MongoDB on CentOS7 Gracefully

倒腾MongoDB好几天,强迫症的老人家发现了这些问题: 其实安装MongoDB不难,但是有没有发现启动起来很麻烦?关闭看进程号,再kill掉T…T 有没有更加gracefully使用MongoDB? 能不能让它随着服务器启动而启动?或者是我想让它启动再启动? 安装环境还是那句老话,不讲环境的安装...

2016-11-16 22:44:38 500 0

原创 Linux快速启动应用程序

刚从windows转linux系统,一般都需要通过图形界面过渡一下。随着安装的软件增多,尤其是一些编程用的IDE,比如JB家的软件,每次都要cd xx/xx/xx/bin,然后再运行脚本,所以觉得十分麻烦。所以就想想能不能不要那么麻烦,快速地启动应用程序呢?不会偷懒的程序猿不是好攻城狮。下面是我...

2016-11-07 22:37:15 11255 0

原创 笔记本装SSD,win10

目前搜到的网上教程都是在机械硬盘再加装一个SSD,然后再装win7。而肘子是直接把SSD替换原来的HDD,再重装win10。踩过了无数的坑。。。T^T0.环境国行版的envy14j104tx的m.2接口没(yan)有(ge),所以,肘子只能把笔记本的机械硬盘拆掉,在原来的机械硬盘位置装上固态硬盘。...

2016-08-28 11:56:25 4642 0

原创 Java 泛型

首先,肘子假设各位读者朋友已经了解了泛型的基本概念了。同样以Head First Java的习题开头(P576练习) 下面哪些语句可以通过编译么?//Dog是Animal的子类 //[1] ArrayList<Dog> dogs1 = new ArrayList<Animal&...

2016-08-04 20:28:49 833 0

原创 Java静态与同步

Head First Java(第2版)P526程序:/*代码示例一*/ public class TestThread { public static void main(String args[]){ ThreadOne t1 = new ThreadOne(); ...

2016-07-29 17:50:38 436 0

原创 Java中的异常处理

先看看在Head First Java(第二版)第351页习题:class MyEx extends Exception {} public class ExTestDrive { public static void main(String[] args) { String...

2016-07-20 16:52:12 1028 0

原创 byte[]与ByteBuffer相互转化

NFD在传送大量数据的时候,比如我要传输大文件,或者各类文件的时候,只能使用Blob,但是当接收方接收数据的时候,Blob只能转为ByteBuffer,如何转化为byte[]呢?在查看API文档的时候,发现有个array()的函数,但是被坑惨了!!!根本读不出来好嘛!!! 在stackoverfl...

2016-04-11 21:41:58 17316 0

提示
确定要删除当前文章?
取消 删除