自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不是秃头的程序员小李

程序员的秃头之路

  • 博客(135)
  • 收藏
  • 关注

原创 小李带你透彻分析RocketMQ的高性能网络通信机制

目录RocketMQ的基本通信通信流程RocketMQ的通信类结构RocketMQ的多线程模型同步异步与阻塞非阻塞的区别linux 网络 I/O 模型Netty 的多线程模型RocketMQ 的线程模型消息协议设计与编解码消息的通信方式和流程Client 发送请求消息Server 接收请求消息和处理逻辑总结本文篇幅较长,建议先收藏再观看。前言上一篇文章《NameServer 启动流程和存储结构剖析》主要讲解了 RocketMQ 中 NameServer 的元

2022-05-30 09:58:03 741

原创 RocketMQ源码(一) NameServer 启动流程和存储结构剖析

前言NameServer 作为 RocketMQ 的注册中心,对Broker和路由信息进行管理。那我们带着几个问题去剖析 NameServer 的源码:NameServer 启动流程是什么样的?会创建哪些核心数据结构?NameServer 以什么样的数据结构存储着 Broker 与路由信息的?Broker 上线、下线、发送心跳这些操作在 NameServer 中是如何进行的?NameServer 是如何进行 Broker 心跳检测的?我们带着上面的这些问题来开始剖析 NameServer 的

2022-05-22 21:19:26 692

原创 人人都懂的RocketMQ基本原理

RockerMQ基本原理

2022-05-15 17:48:17 2901

原创 并发编程学习(一)Java 内存模型

Java 内存模型什么是 Java 内存模型(Java Memory Model)Java 内存模型是一种规范,规范了 Java 虚拟机和计算机内存是如何进行协同工作的。JMM 规定了一个线程如何和何时看到其它线程修改过后的的共享变量的值,以及在必须时如何同步的访问共享变量。主内存、高速缓存、寄存器CPU 包含一系列的寄存器,它们是 C...

2020-04-02 17:41:04 187

原创 JSON的学习与使用

公众号:小李不秃,Java 原创博主阅读本文大概需要 7.8 分钟前言我们在进行软件开发的过程中,服务与服务之间会进行相互的调用。在数据进行传输前,我们通常会将数据转化成 JSON 的格式进行传输,比如 ajax 调用请求,接收传过来的 JSON 数据,javascript 就可以对传过来的数据进行直接的调用。本篇文章会讲解以下的内容:什么是 JSON—what为什么有 JSON...

2020-01-18 23:36:35 285

原创 深入浅出 JVM 系列(一)什么是 JVM?它处于什么位置?

阅读本文大概需要 5.6 分钟前言在 Java 开发中,我们经常会提到 JVM。我们知道 JVM 是 Java 虚拟机,但是它的运行原理是什么?它的内存结构是什么?如何进行优化?如何去定位问题?面试中遇到 JVM 问题如何回答?接下来我会开启 JVM 的章节,为大家一一解答上面的问题。现在就开启我们的 JVM 学习之路吧!什么是 JVM?它处于什么位置?面试官:什么是 JVM?小李...

2020-01-10 23:29:49 415

原创 JVM 体系结构与工作方式

阅读本文大概需要 12.8 分钟。0. 前言JVM 能够跨计算机体系机构来执行 Java 字节码,也就是我们所说的 Java 可以跨平台执行,主要是由于 JVM 屏蔽了与各个计算机平台相关的软件或者硬件之间的差异,使得与平台相关的耦合统一由 JVM 提供者来实现。本文将介绍下面内容:介绍 JVM 的总体设计的体系结构介绍 JVM 的执行引擎是如何工作的介绍执行引擎如何模拟执行 J...

2019-12-31 18:24:01 355

原创 深入理解Constructor之newInstance方法

知其然,知其所以然0. 前言在上一篇《反射从入门到精通之深入了解Class类》,我们深入分析了一下 Class 类的原理。在本篇文章,我们分析一下 Constructor 使用方法的原理。1. Constructor通过反射调用构造函数有两种方法:调用无参构造函数:Class.newInstance()调用带参数的构造函数:通过 Class 类获取 Constructor调...

2019-12-24 00:12:29 2330

原创 反射从入门到精通之深入了解Class类

知其然,知其所以然0. 前言本文会讲解反射的原理,如果大家对反射不了解,可以先看《反射从0到入门》,对反射有大概的了解。《反射从入门到精通》我会分为两篇来讲解,这一篇是讲解 Class 类的原理,下一篇我会讲解反射 API 的原理。1. Class 类的原理孟子曰:得人心者得天下。而在 Java 中,这个「人心」就是 Class 类,获取到 Class 类我们就可以为所欲为之为所欲为...

2019-12-17 22:29:44 251

原创 学习反射看这一篇就够了

个人公众号:不是秃头的程序员小李专注于 Java 内容,欢迎大家前来留言文章内容比较多,建议收藏反射Java 分编译期和运行期编译方式说明:静态编译:在编译时确定类型 & 绑定对象。如常见的使用new关键字创建对象动态编译:运行时确定类型 & 绑定对象。动态编译体现了Java的灵活性、多态特性 & 降低类之间的藕合性以后开始学习的时候,我们都要...

2019-12-12 20:43:47 306

原创 深入理解 BigDecimal 的使用

文章目录什么是 BigDecimal为什么用 BigDecimal 而不用 double加减乘除常用方法保留两位小数四舍五入比较注意事项参考什么是 BigDecimalBigDecimal 可以表示一个任意大小且精度完全准确的浮点数。为什么用 BigDecimal 而不用 doubleTalk is cheap, Show me the Code.例 1:double d1 = ...

2019-12-11 23:13:32 1013

原创 工作小结(持续更新中)

工作小结-持续更新文件操作页面上传文件到Controller文件下载到本地文件于sftp操作上传文件到sftpsftp下载文件到本地获取上下文路径通过request获取springboot获取上下文路径文件操作页面上传文件到Controller在后台系统中,上传文件功能非常常见,这是每个后台系统都应该实现的功能。在我们的魔方后台系统中。其中有个功能是需要导入卡号密码。实现方式如下:上传文件...

2019-07-11 20:24:45 227

转载 使用IDEA创建WEB项目和Tomcat部署

转自:https://www.cnblogs.com/shindo/p/7272646.html1.首先使用IntelliJ IDEA建立一个web项目。点击“finish”完成,项目就基本上创建好了。我们先别急着写代码,先给环境测试一下空项目部署到Tomcat看看能不能够运行起来,项目结构如图:jsp:[html] view plain copy<%--    Created by Int...

2018-06-22 14:35:32 288

原创 Integer与int的区别

int:八种原始数据类型(byte、int、short、long、float、double、char、boolean)之一。默认值是0,可以直接存储数据值。Integer:是int的包装类,它有一个int类型的字段存储数据,并且提供了基本的操作。比如数学运算、int和字符串之间转换等。在Java5中引入了自动装箱和自动拆箱的功能,Java可以根据上下文,自动进行转换,极大地简化了相关编程。默认值是...

2018-06-07 08:38:55 416

转载 jquery 大于号(>)的作用

jQuery选择器中的大于号>作用是什么:jQuery灵活多样的选择器是jQuery的优点之一。下面就介绍一下其中的一个选择器,用大于号表示。代码示例如下:<!DOCTYPE html><html><head><meta charset=" utf-8"><title>蚂蚁部落</title>&am

2018-06-06 10:29:06 2601

原创 java switch 慎用字符串比较

今天看项目,发现周五提交的项目被人改动过一次,我在资源历史将两个文件进行比较了一下,发现了下面的改动。左边是改动过的,右边是我写的。因为需要判断,然后在拼接字符串,我看jdk1.7以后是支持switch进行string类型的比较但是你要记住了,生产环境jdk可能不是1.7,没准是1.6。那么这个地方就会出现bug了。所以在开发的时候,自己需要注意的事情开始很多,对于这个jdk的版本问题也要注意。...

2018-06-05 09:51:58 8270 6

原创 Svn 更新 Working copy locked

在svn更新的时候报出以下的错误问题的原因我在网上搜到了一些1.上次提交命令失败,导致整个文件夹下都被锁定了解决办法1.在本地对应的svn文件clean up就可以了,但我试过了不好使2.打开CMD,cd进入到锁定的项目目录下。比如我上边的锁定目录,进入后使用命令del lock /q/s来删除lock文件然后在更新,就可以了。/q:在安静模式下进行/s: 删除本身目录及其所有的子目录与文件...

2018-06-05 08:57:45 357

转载 最近看的知识点

1.JNDI是什么?可能你会说JNDI不就是Java命名和目录接口  但是你知道为什么要用JNDI么?这个文章讲的非常好http://blog.csdn.net/sunkobe2494/article/details/50824359我记得还有一个评论 总结的非常好JNDI单的理解,就是把固定的连接方式剥离出来,单独写在一个配置文件里,下载.properties

2017-12-25 16:19:15 209

原创 httpclient工具类 get post(4.3.5)

import java.io.IOException;import java.net.URI;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.http.NameValuePair;import org.apache.http.client.entity.Ur

2017-12-04 17:50:30 230

原创 nginx安装手册

记录下nginx安装过程,防止以后忘记1 nginx安装环境         nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。n  gcc         安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++n  PCRE

2017-11-24 14:36:05 277

转载 JAVA中的值传递和引用传递,String的值传递特性

String的两种实例化方式的区别String是在java编程中用的最多的数据类型,因此也有很多与其他数据类型不同的性质。创建字符串可以用的命令有:String str="abc";//创建str字符串,内容为abc。String str=new String("abc");//创建str字符串,内容为abc。虽然两种方法都可以创建,但是却有很大的不同。分析一下这两句命令:

2017-10-28 13:30:06 240

转载 java中静态代码块的用法 static用法详解

转自:http://blog.csdn.net/xinying0424/article/details/7826517java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时

2017-10-28 11:08:59 239

转载 include与jsp:include区别

转自:http://www.cnblogs.com/Ghost-Draw-Sign/articles/1835974.html我们都知道在jsp中include有两种形式,分别是   前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来看看吧。 通常当应用程序中所有的页面的某些部分(例如标题、

2017-10-27 22:53:08 232

转载 <input type="text">中的value为null或"",有何区别

本人最近在亚信数据实习,有问题可以给我留言,随时交流问什么突然查这个问题,因为在项目中遇到了,两个相差不多的模块,一个传的是null,而另一个传的是“”,而null是可以插入进数据库的,而“”是不可以的。所以有点迷惑,只有百度君来帮我下。同时通过这个问题,也体会到了代码健壮性的重要一般情况下我们是通过输入框来输入参数的。如果我们什么也没有输入,后面获取的就是null

2017-08-30 15:02:40 2168

转载 centos6.5安装jdk

转自:http://blog.csdn.net/xiaofuruo/article/details/401070451.解压压缩包,选择解压到事先创建的目录下如:/var/softtar  -zxvf  jdk-7u55-linux-i586.tar.gz:解压jdk到当前目录下 2.配置环境变量 1)输入vi /etc/profile:编辑profile文件 2)在p

2017-04-22 19:31:50 353

转载 解决linux安装软件:/lib/ld-linux.so.2: bad ELF interpreter问题

转自:http://www.111cn.net/sys/linux/55374.htm有的时候不得不佩服百度的强大,你不会的错误只需要复制粘贴 就会有很多解决办法 这个只是其中一种遇到问题:64位系统中安装了32位程序解决办法是因为64位系统中安装了32位程序解决方法:yum install glibc.i686

2017-04-22 19:23:30 2069

原创 Httpclient post和get请求

//方便自己以后查找用public class HttpClientTest { @Test public void doGet() throws Exception{ //创建一个httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); //创建一个Get对象 HttpGet

2017-04-16 18:03:14 307

转载 Spring 4.1+ 的 JSONP使用

转自:http://www.cnblogs.com/leechenxiang/p/5430546.html如今的巨石应用已经越来越不行了,很多互联网在后期都会在用分布式的架构那么在页面上不同的服务调用不同域名下的json是有问题的(跨域:不同域名,相同域名但是不同端口)JavaScript规范中提到的json是不能直接跨域调用,为了安全,但是能调用js片段所以把json包装

2017-04-10 21:04:40 378

转载 AFTER触发器和Instead Of触发器区别

转自:http://bbs.csdn.net/topics/300074591INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。INSTEAD O

2017-04-10 14:26:12 897

转载 Eclipse常用快捷键(对于萌新的我真的好用)

转自:http://www.cnblogs.com/mq0036/p/4995390.htmlEclipse常用快捷键1几个最重要的快捷键代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2显示搜索对话框:Ctrl+H快速Outline:Ctrl+O打开资源:C

2017-03-14 20:22:43 359

转载 maven 编译出错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean

转自:http://blog.csdn.net/mys328/article/details/54881927eclipse在使用maven的tomcat控件编译java程序时,报错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project

2017-03-09 20:02:24 626

转载 @Autowired和@Resource区别

转自:http://bhdweb.iteye.com/blog/16639071、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowir

2017-03-06 21:16:28 300

转载 Linux下history命令用法

转自:http://blog.sina.com.cn/s/blog_5caa94a00100gyls.html如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍history 命令的 15 个用法。使用 HISTTIMEFORMAT 显示时间戳当你从命令行执行 history命令后,通常只

2016-12-29 16:09:32 519

转载 网关和路由的区别

刚开始看网关和路由以为是一回事,都是将信息传递的,然后在一对比其实还是有区别的,这个是我百度找的,不一定准确,但是很形象,容易理解转自:https://zhidao.baidu.com/question/426851523.html网关就是在网络上的一个指路标,也能理解为就是一道门,你从这个房间出来去另一个房间需要一扇门,网关就是这扇门,更可以理解为关卡。在网络中将各类地址,各类协议连

2016-11-21 20:49:31 4251

原创 linux磁盘分区

对习惯于使用windows的用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,非常好理解。但对这些初上手 red hat linux的用户,可就有点恼人了。因为对red hat linux用户来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。red hat

2016-11-16 21:40:57 281

转载 centos7进入单用户模式修改root用户密码

转自:http://www.centoscn.com/CentOS/config/2015/0513/5429.html步骤一,开机时随便按下键盘,进入以下菜单选择第一项,按“e”键进行修改步骤二,定位到“ro”步骤三:把“ro”改成“rw init=/sysroot/bin/sh”.完成之后按“Ctrl+x”。

2016-11-09 17:51:28 1539

转载 Centos7更改默认启动桌面(或命令行)模式

转自:http://jingyan.baidu.com/album/ea24bc39960fa0da62b331e0.html?picindex=1centos7以后是这样的,7以前就是别的版本了1.systemctl get-default命令获取当前模式2.systemctl set-default graphical.target 修改启动模式(修改为图形界面,要是修

2016-10-25 20:57:15 5537

转载 Java调用oracle function的两种方式

1.PreparedStatement stmt =conn.prepareStatement("select pkg.fun(?) from dual");stmt.setLong(1,123);Result rs = stmt.executeQuery();if (rs.next) { return rs.getDouble(1);}2.CallableSt

2016-10-08 18:36:01 924

转载 Java中PreparedStatement和Statement的用法区别

刚开始学,年少无知,对于这两个的区别不了解,当想起来的时候,看看别人的微博,收获很大。转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html1、 PreparedStatement接口继承Statement, PreparedStatement实例包含已编译的 SQL 语句,所以其执行速度要快于Statement 对象

2016-09-28 22:03:24 343

转载 Oracle视图

转自:http://www.jellythink.com/archives/1064该死的报表这几天每天被该死的报表折腾死了,简直就是折磨。自己刚接手这块业务时间不长,发现以前的人挖的坑,在报表这里就各种体现,为了一个简单的报表,要填各种各样的坑。先来说一下我们这里做报表的方法吧。在各种业务流程中,会记录各种日志,不同的日志记录到数据库不同的表中;然后从不同的表中,取得

2016-09-15 21:11:17 269

空空如也

空空如也

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

TA关注的人

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