自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ac_dao_di的专栏

关注产品、算法优化、大数据、底层架构、Web开发、互联网安全

  • 博客(77)
  • 资源 (17)
  • 收藏
  • 关注

原创 spring cloud实践

spring cloud脚手架实践,使用到的组件包括:consul/nacos/ribbon/feign

2022-07-30 18:23:32 638 1

原创 spring ApplicationContext启动过程

本文对spring ApplicationContext启动过程进行详细解析,介绍刷新过程中的10个阶段的作用,包括ConfigurationClassPostProcessor处理java config注入beanDefinition,注册BeanPostProcessor对所有bean的构建进行初始化,创建内嵌tomcat容器注册servlet

2022-03-31 16:53:38 1516

原创 spring boot配置类注册深入解析

解析自动化配置类生效的机制,条件注解的处理过程,spring boot自动化配置类,有的条件类不存在,工程里打开是标红的,spring boot解析时不报错的原理。@EnableXXXX的实现原理,注册BeanDefinition有哪些高端的姿势?@Configuration和@Component到底有什么区别。

2022-03-31 16:43:54 5186

原创 spring boot启动加载tomcat原理深度剖析

spring boot应用打包成Fat jar时,启动内嵌tomcat的原理;spring boot应用打包成WAR时,外部tomcat启动spring boot SpringApplication的原理;自动化配置Servlet/ServletFilter/ServletListener的原理

2022-03-05 22:57:03 5043

原创 spring boot 2.1.7启动过程源码解析

深度剖析spring boot 2.1.7.RELEASE启动的过程,以及其中的扩展点,内容包括如何构建environment、加载配置文件、初始化日志系统、如何和spring cloud进行集成、如何集成远程配置、如何加载自动化配置、如何注册到consul上

2022-02-12 22:28:02 1064

原创 基于本地仓库搭建nexus私服

在公司里运行工程代码顺风顺水,离职后,你可能有公司的部分代码,但是打开工程,满屏标红,看着是不是很难受?有没有办法不标红呢?当然是有的,只需要搭建自己的私服即可,慢慢看完下面你就知道怎么做了。

2021-12-12 16:59:24 1140

原创 简易版dubbo实现

简易版dubbo实现一、dubbo简介实现一个简易版的dubbo,首先看下dubbo是什么,    dubbo是阿里开源的rpc框架,目前是apache顶级开源项目,可以用来构建微服务。社区已经到了3.0版本,生态活跃,原来是java写的,现在有go版本,支持云原生。研究dubbo的目的:一方面是dubbo浑身是宝,用到了zk/javassit/netty/spring/spi等技术,可以说看懂了dubbo源码,对自己是十分有帮助的。不仅能学习优秀

2021-11-20 23:33:16 3293 2

原创 spring boot入门

一、相对于spring的优点自动化配置,快速构建,避开依赖地狱,引进starter jar,配置yaml,即可使用相关功能。便捷部署:支持嵌入式tomcat,无需依赖外部tomcat,可以本地启动,可以打成jar运行。注解驱动编程:无任何xml,基于spring 4.0条件注解实现bean注册,基于servlet 3.0实现动态servlet等。健康监控:方便排查bean的生效情况,以及做心跳。二、IDEA构建和本地运行    详细见github仓库

2021-10-24 15:14:40 517

原创 Linux 0.11 文件系统的实现机制

Linux 0.11 文件系统的实现机制一、概述Linux 0.11的文件系统与Minix 1.0文件系统类似,是一种索引式文件系统。对于Linux而言,一切都是文件。一般有普通文件,字符设备文件,块设备文件,符号链接,目录文件,有名管道等。这是由文件系统实现的,它把底层进行了抽象,提供了统一的访问接口,如open,read,write等系统调用。其实对于文件系统,每个设备都有

2020-03-08 10:37:50 683

原创 用C++实现一个多进程回显服务器

用C++实现一个多进程回显服务器1. 服务端程序(Linux) 服务进程:通过监听所有网卡的9877接口,当有客户端来连接时,使用fork创建一个子进程对客户端连接进行服务,然后父进程继续监听连接的到来需要注意的是当服务进程未退出时,子进程在结束后将进入僵尸状态。服务父进程未使用信号对这些僵尸进程进行处理,随着连接的增多,服务端将出现很多僵尸进程。当然,如果父进

2020-03-08 10:37:14 271

原创 slf4j使用和原理简单分析

slf4j使用和原理简单分析    开发时面向slf4j-api进行编程,然后在类路径下放入具体的日志类和适配器,如log4j、logback、java util logging、common loggings等,以及对应的配置文件,log4j.properties、logback.xml等,即可使用具体的日志jar。1. slf4j + log...

2018-03-11 17:05:33 965

原创 Spring BeanFactory源码解析

一、BeanFactory接口    1. BeanFactory接口是工厂方法的实现机制,具体定义了以下几个方法:public interface BeanFactory { // 对于FactoryBean,该前缀用于取出FactoryBean,而非getObject对应的方法 String FACTORY_BEAN_PREFIX = "&"; // 返回bean实例,如果

2017-11-18 16:51:45 606

原创 MySQL导入和导出数据

1. 将两个pdf文件转化为excel,再转化为csv文件    录取数据:     成绩数据:     对应的pdf转excel网站为http://www.pdfdo.com/pdf-to-excel.aspx,注意勾选合并为单一工作表。     再在excel文件点击另存为csv文件,在转化之前,将多余的行和列删除,转化成绩表的格式如下: 2. 创建对应的数据表    注意数据表

2017-09-23 16:53:57 1044

原创 BufferedReader源码分析与使用

1. 设计思路    BufferedReader对各种Reader提供了缓存功能,这样可以避免多次读取底层IO(如FileReader),提高效率。默认的缓冲大小是8k,也就是每次读取都是8k为单位,这适用于大多数情况。另外,BufferedReader使用了装饰器模式,继承自Reader,并且构造函数需要Reader的子类入参。同时还提供了一行一行读取的功能readLine函数,这不是Reade

2017-09-17 17:46:32 1060

原创 有用的代码片段及配置

1. fastjson解析    解析json对象和数组,需要引入com.alibaba.fastjson 1.2.29版本。实例: JSONArray jsonArray = JSONArray.parseArray("[\"abc\",\"def\"]"); List fileNameList = jsonA

2017-08-29 17:50:42 604

原创 经验汇总

1. 日志配置(1) 增删改必须打印日志。修改数据必须有据可查。 (2) 条件分支必须打印分支参数。 (3) 打印数据量,对比性能。 (4) 打印最后结果。 (5) 打印当前用户。 (6) 对于controller层可以使用拦截器来计算时间,对于service层则只能用aop。2. spring事务管理。(1) @Transactional必须配置在service层的方法...

2017-08-29 17:42:13 356

原创 Mockito的使用

1. Mockito简介    调用mock对象的方法时,不会执行真实的方法,而是返回类型的默认值,如object返回null, int返回0等,否则通过指定when(方法).thenReturn(value)来指定方法的返回值。同时mock对象可以进行跟踪,使用verify方法看是否已经被调用过。而spy对象,默认会执行真实方法,返回值可以通过when.thenReturn进行覆盖。可见mock只

2017-08-21 00:50:58 2611

原创 dubbo+spring+zookeeper的集成入门实例

一、安装zookeeper    可以参考用两台物理机搭建Storm集群里面对zookeeper的安装。需要注意的是必须确保zookeeper正常启动,也就是必须监听端口2181。可以使用如下命令:sudo lsof -i:2181         $ZK_HOME/bin/zookeeper.out可以看到绑定了端口,这个文件会记录访问zookeeper的日志。如果出现问题,可以到$ZK_HOM

2017-07-23 00:14:27 2745

原创 Java Class文件结构分析

一、简单介绍    Java编译好后的文件是Class文件,该文件在虚拟机上运行,只有虚拟机能够识别。所以编译后的Class文件不依赖于具体的平台,具有跨平台的特性,但是依赖于虚拟机。很多语言,包括Java,Python,都可以编译成class文件。Class文件与EXE文件相比,比较紧凑,不需要填充和对齐。代码在方法区的Code属性中。     将Person.java代码使用javac Per

2017-07-03 22:57:19 467

原创 Hadoop多个文件单词计数

Hadoop的安装    首先下载Hadoop的安装包,这里使用2.7.3版本。解压到/usr/local下sudo tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local/     然后更改hadoop-2.7.3的属主sudo chown -R jessin /usr/local/hadoop-2.7.3    在/etc/profi

2017-06-17 14:53:51 2054 1

原创 Ubuntu 16.04 创建无线热点

要创建一个热点,首先必须有无线网卡,且该网卡支持AP模式,具体可以用如下命令查看:sudo apt-get install iwiw list如果出现如下包含AP的关键字,则表示支持AP模式: 首先点击右上角的网络图标,然后拉到最下面,点击编辑连接,得到如下界面: 点击增加,然后选择wi-fi,点击新建,得到如下界面: 这时填写连接的名称,填写SSID,也就是

2017-05-13 21:57:04 40306 14

原创 jquery + ajax + json入门实例

1. jquery ajax使用    对于一个网页,查询数据时一般使用ajax异步请求,这样可以不用刷新页面,减少流量,减轻服务端负担,加快响应速度。而jquery是一个javascript库(不是框架),对于各个浏览器的兼容性进行了封装,使用jquery将能大大提高开发效率。在一个html页面中,可以通过如下方式引入jquery:<head> <script src="http://aj

2017-05-10 15:15:02 1185

原创 有用的文章链接

1. 单元测试,包含@Before和@After,@BeforeClass和@AfterClass,可以忽略单元测试,期待单元测试抛出异常,以及限制执行时间。http://www.open-open.com/lib/view/open1492570031594.html2. IDEA添加模块:http://www.cnblogs.com/leap/p/6251576.html3. Servl...

2017-04-20 23:26:56 488

原创 待学清单

2017-4-121. 数据库explain执行计划。2. nginx和dubbo。3. 乐观锁和悲观锁。4. CAS。

2017-04-12 14:24:53 421

原创 curl命令

1 查看完整的响应报文,也就是包含响应header和报文主体html:curl -i http://www.baidu.com2 只查看响应头,不包含报文主体,其实就是head请求:curl -I http://www.baidu.com3 查看详细的请求过程,包括完整的请求报文和完整的结束报文,这个命令可以用来查看curl生成的请求报文:curl -v http://www.baidu.com4

2017-03-07 23:52:22 3131

原创 dot命令生成流程图

dot命令是graphviz的一部分,通过编写一些类似脚本的语言,可以容易地生成流程图。下面在新建一个文件tmp.dot,内容如下:digraph G {# 定义全局属性 fontname = "Courier New" fontsize = 8 # 从下往上 rankdir = BT# 定义节点属性 node [ shape =

2017-02-26 19:19:01 24403 1

原创 Java 枚举类型

Java提供了枚举类型,可以将所有全局变量集中在一个类中。但枚举类的构造方法只能是private,不能被继承,要覆盖的话只能在枚举类的内部进行覆盖。同时也不能继承其他类,因为enum类型默认会继承Enum,但可以实现多个接口。所有的实例在类的内部被定义好。可以通过values()静态方法得到所有静态实例的数组。枚举类型本质上也是一种类类型,可以作为map的键,从而可以填充枚举类的所有静态实例。

2017-02-26 16:12:10 724

原创 设置vim支持Markdown

1 安装vundle    vundle是用来管理vim插件的工具,之后才能安装Markdown插件。首先将vundle从github上克隆到本地。git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim    然后在HOME目录下创建一个.vimrc配置文件,具体内容如下:" ~/.vimrc""

2017-02-19 17:03:03 5465 1

原创 Storm入门实例之单词计数

1 环境搭建    关于Storm集群的搭建可以参考用两台物理机安装storm集群。本文将统一使用apache-storm-0.9.5来运行拓扑,使用Maven + IDEA的方式进行开发(参考 Ubuntu下Maven安装和使用)。2 项目源码2.1 配置pom.xml    有一个要注意的地方,就是storm-core.jar这个依赖在打包时的作用域必须是provided,因为集群环境会提供这个

2017-02-06 16:01:38 2975

原创 用两台物理机搭建storm集群

1 安装zookeeper下载zookeeper-3.4.9 下载zookeeper-3.4.9.tar.gz,解压到/opt/。sudo tar -C /opt -zxvf zookeeper-3.4.9.tar.gz在/etc/profile新建环境变量export ZK_HOME=/opt/zookeeper-3.4.9export PATH=$ZK_HOME/bin:$J

2017-02-05 19:16:39 2276

原创 Ubuntu常见问题及解决汇总

本博文将长期更新,用于记录Ubuntu下各种问题的解决办法。2015.10.11ubuntu安装搜狗输入法:http://jingyan.baidu.com/article/ad310e80ae6d971849f49ed3.html到官网下载搜狗输入法,然后在单击安装包,在命令行界面下输入命令等。2015.10.11系统刚开始装,命令行界面vi命令backspace不能使用:里面安装的是v

2017-02-02 18:01:23 3698

原创 bash语法

bash语法,包括变量的定义,数组的使用,结构化命令,条件表达式,输入和输出,函数的定义,位置参数,信号的捕获,脚本的运行等内容。

2017-01-30 16:23:56 2458

原创 Linux 实用命令

Linux实用命令汇总

2017-01-27 15:03:21 1038

原创 bash扩展

一、bash扩展的类型    在命令执行前,会先对整个命令进行处理或者扩展。扩展共有7种类型,分别是花括号扩展、波浪线扩展、参数和变量扩展、算术扩展、命令替换、单词分割、路径扩展。当存在多种类型扩展时,这个顺序也是扩展的执行顺序。只有花括号扩展、单词分割、路径扩展会改变单词的数量。而其他扩展是一一替换。二、花括号扩展    花括号扩展的格式是:前缀{整数..整数}后缀前缀{单个字母..单个字母}后

2017-01-25 19:37:59 1304

原创 Linux Man手册的使用示例

当我们学会使用man文档时,将大大提升使用命令的能力。这里,本人认为更多人是不知道man 命令文档的格式,不知怎么使用选项,导致不想使用man。为此,本文通过mkdir命令文档做一个示例,希望对读者们有所帮助。

2017-01-24 23:32:20 10289 3

原创 Minix 1.0文件系统的实现

Minix 1.0文件系统的实现一、概述    在sys_open中,我们并没有讨论如何将文件路径名转化为具体的inode,它使用的是open_namei这个函数实现的。这里面涉及到文件系统的实现。本文将从这个函数出发,说明如何将文件路径名转化为具体的inode,以及普通文件和目录是怎么实现的,在硬盘中是怎么存储的。二、解析文件路径2.1 通过路径名获得对应的节点open_namei    open

2017-01-22 20:05:47 4720

原创 Linux 0.11 块设备文件的使用

Linux 0.11 块设备文件的使用一、概述    块设备的IO操作是非常慢的,它远远赶不上内存和CPU的速度。为了减少访问块设备的次数,Linux的文件系统提供了内存高速缓冲区。当需要读取块设备的数据时,首先在缓冲区中查找,有则马上返回,没有则读到缓冲区中,然后再复制到用户数据缓冲区。这样缓冲块并没有马上消失,还会在内存中待一段时间,如果重复读取一个文件,下次就可以直接从缓冲块中读取。当缓冲块不

2017-01-19 14:37:39 2829

原创 MyBatis入门实例

MyBatis入门实例一、概述        MyBatis是一个优秀的持久层框架,可以使用XML配置文件或者接口加注解的方式来简化DAO操作,大大方便了SQL语句的管理。由于注解的功能极为有限,这里采用XML配置文件的方式。同时,MyBatis还支持动态SQL语句。二、创建数据库和数据表        在MySQL创建数据库和数据表:CREATE DATABASE test;CREATE TAB

2017-01-09 17:13:18 696

原创 Ubuntu下Maven安装和使用

Ubuntu下Maven安装和使用一、安装Maven安装Maven之前,必须安装了JDK,另外IDEA可以从https://download.jetbrains.8686c.com/idea/ideaIC-2016.2.5.tar.gz下载,里面有说明如何安装IDEA1.1 首先下载Maven的压缩包下载apache-maven-3.3.9.bin.tar.gz1....

2017-01-08 13:41:58 62971 1

原创 Git命令

Git命令       Git对同一个版本库可以有多个分支,可以在不同的分支下工作,HEAD指向当前分支。当在某个工作分支时,文件系统将呈现该分支的文件,对于新创建或者新创建且已经加到暂存区的文件,任何分支都可以看到该文件。只要不切换,下次在当前目录运行Git时还是这个状态,处在这个分支。每次本地提交给当前工作分支,都会产生一个commit id,且只会对该提交分支起作用,其他分支

2017-01-05 14:54:12 978

dubbo_demo

dubbo+spring+zookeeper集成入门实例,重点是熟悉dubbo的使用。

2017-07-23

mongoose.zip

Mongoose 嵌入式web服务器

2017-06-28

hadoop_hello_world

hadoop单词计数程序

2017-06-17

ajax_json.tgz

ajax json spring

2017-05-10

Linux0.11ppt

Linux 0.11 源码的整体流程的ppt

2017-03-02

GuavaDemo.java

Guava示例代码

2017-02-19

StormDemo.tar.gz

storm入门实例,包含源码和jar

2017-02-06

zeromq-4.0.3.tar.gz

zeromq-4.0.3.tar.gz

2017-02-05

jzmq.tar.gz

jzmq.tag

2017-02-05

apache-storm-0.9.5.tar.gz

apache-storm-0.9.5-tar.gz

2017-02-05

zookeeper-3.4.9.tar.gz

zookeeper-3.4.9.tar.gz

2017-02-05

linux0.11源码

linux0.11源码

2017-01-20

MyBatis入门实例源码

MyBatis入门实例源码

2017-01-09

原根与指标

数论中的原根和指标的课件,可以快速学习原根与指标的知识,进而获得数论知识。

2016-01-16

c语言

c语言,ACM测试,操作系统,资源开发等等,这是非常好的学习资料!

2015-11-22

lingo教程_数模软件入门

Lingo软件数模入门,最详实的Lingo软件教程,保你一学就会。

2015-09-04

java输入输出流

java输入输出流.ppt,详细介绍java的输入输出流,帮助你快速掌握java

2015-03-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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