自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Shawearn

青年老魏的博客

  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 Spring Cloud Alibaba(四):Spring Cloud 使用 Sentinel 实现限流

本文为 Spring Cloud Alibaba 系列 的第四篇文章,系列文章持续更新,点此 查看更多本示例代码基于之前的 m01 模块代码改造,项目启动依赖同 m01 模块,读者可以阅读此博文 《使用 Nacos + Dubbo 实现的远程服务调用》 了解 m01 模块代码功能。Sentinel 介绍Sentinel 是面向分布式服务架构的高可用流量防护组件,随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服

2020-07-30 18:44:45 461

原创 Spring Cloud Alibaba(三):使用 Nacos config 实现统一配置管理

本文为 Spring Cloud Alibaba 系列 的第三篇文章,系列文章持续更新,点此 查看更多前言Nacos 除了可用于服务注册发现,还可做配置中心功能,本文将通过示例演示如何在 Spring Cloud 下使用 Nacos config 实现配置管理;本示例需要先启动好 Nacos 服务,关于 Nacos 的安装与启用,请参见 Nacos 快速开始 ;本示例完整代码 点此查看;正文配置 Nacos启动 Nacos 服务,进入 配置管理 > 配置列表 > 新建配置,添加如下

2020-07-26 02:51:53 1217 1

原创 Spring Cloud Alibaba(二):注解实现 Dubbo 服务调用失败时的本地伪装

前言在上一篇博文中,笔者使用 Nacos + Dubbo 实现了远程服务调用,文章请见 《Spring Cloud Alibaba——使用 Nacos + Dubbo 实现的远程服务调用》实际上,由于网络或是其他各种原因,服务提供方可能无法被消费方访问,此时消费方便会抛出如下异常信息:org.apache.dubbo.rpc.RpcException: No provider available from registry localhost:9090 for service com.shawearn

2020-07-24 17:04:26 1330

原创 Debian 编译安装 nginx 服务器

下载源码包、解压并进入:# 下载;wget http://nginx.org/download/nginx-1.18.0.tar.gz# 解压;tar -zxvf nginx-1.18.0.tar.gz# 进入;cd nginx-1.18.0/配置并检测依赖:./configure --prefix=/home/mu/nginx --user=mu --group=mu --with-http_ssl_module --with-threads --with-http_re..

2020-07-21 15:33:05 2070

原创 从源码层面谈谈 ThreadLocal 线程私有实现方式

前言ThreadLocal 是一个用于存取线程本地变量的类,通过其实例的 get/set 方法进行数据的存取,数据存取到 ThreadLocal 后,只有线程自身能访问到,如下图:线程私有示例代码先看一段代码:public static void main(String[] args) throws InterruptedException { ThreadLocal<String> threadLocal = new ThreadLocal<>(); T

2020-07-21 14:05:55 259 1

原创 浅谈 Java 中的 volatile 作用(一):线程可见性

浅谈 Java 中 volatile 作用之:线程可见性前言volatile 在 Java 中有两个作用:线程可见性当一个线程对共享变量值做了修改,新值是能够及时的被其他线程获取到的。防止指令重排序本篇博文结合代码谈谈 volatile 关键字的线程可见性。概念线程可见性是指当一个线程对共享变量值做了修改,新值是能够及时的被其他线程获取到的。举个例子,假设有一共享变量 runFlag,该变量使用关键字 volatile 修饰:volatile boolean runFlag

2020-07-16 20:22:54 428

原创 Spring Cloud Alibaba(一):使用 Nacos + Dubbo 实现的远程服务调用

前言本示例需要先启动好 Nacos 服务,关于 Nacos 的安装与启用,请参见 Nacos 快速开始 ;本示例共三个模块,完整代码见:m01-nacos-dubbo-apim01-nacos-dubbo-providerm01-nacos-dubbo-consumer本示例使用的版本如下:Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot VersionFinchley.SR12.0.2.RELE

2020-07-13 19:07:10 2441 3

原创 [引用] 死磕 Synchronized 底层实现

原文地址如下,此处只做索引。死磕Synchronized底层实现–概论死磕Synchronized底层实现–偏向锁死磕Synchronized底层实现–轻量级锁死磕Synchronized底层实现–重量级锁

2020-07-10 18:33:10 152

原创 实验查看 Java 对象布局

前言我们知道,Java 对象由对象头、实例数据、对象补齐三部分组成,其布局如下图所示:Java 对象布局图下面通过实验的方式查看 Java 对象的布局。环境准备本次实验在 Debian 64 位操作系统中进行,使用 JDK 版本如下:shaw@shaw-pc:~$ java -versionjava version "1.8.0_211"Java(TM) SE Runtime Environment (build 1.8.0_211-b12)Java HotSpot(TM) 64-Bit

2020-07-06 15:45:51 450

原创 Debian 配置 Apache2 多个虚拟主机

前言本例中共配置两个网站,两个网站所在服务器假定为 127.0.0.1,信息如下:网站名称网站硬盘路径网站端口博客一/var/blog12018博客二/var/blog22019配置 Apache2 监听的端口:sudo nano /etc/apache2/ports.conf# 监听 2018 端口,与后面的 &lt;VirtualHost *...

2020-07-02 20:43:15 866

原创 Linux 编译安装 Apache RocketMQ 及问题解决

准备编译安装 Rocket MQ 需要以下环境:推荐 64 位操作系统,Linux/Unix/Mac;64 位 JDK 1.8+;Maven 3.2.x 以上版本;Git;4GB 以上的硬盘空间;下载# 下载安装包;wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zip安装# 解压;unzip rocketmq-all-4.7.1-

2020-07-02 20:06:13 547

原创 Spring Boot 整合 Apache Kafka

前言由于本文主要简介 Spring Boot 整合 Apache Kafka,因此默认读者已经成功安装并已启动 Apache Kafka 服务。正文添加依赖在生产者和消费者项目中添加 spring-kafka 依赖,如下:<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> &l

2020-07-01 16:55:33 422

原创 Redis 超时失效 Key 监听不及时原因分析及解决方案

Redis 超时失效 Key 监听不及时原因分析及解决方案欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart...

2019-12-06 17:52:40 3784 5

原创 Redis 集群配置

官方文档地址:https://redis.io/topics/cluster-tutorial本例 Redis 版本 5.0.5安装目录 /home/shaw/server/redis5/;若有不懂,请结合 Redis 官方文档集群需要依赖到 Ruby,因此需确保已经安装 Ruby:sudo apt-get install rubygem install redis集群 red...

2019-07-26 14:05:21 135

原创 Linux 安装 Redis

Linux 安装 Redis本例子在 redis-5.0.5.tar.gz 中测试成功安装# 下载wget http://download.redis.io/releases/redis-5.0.5.tar.gz# 解压tar -zxvf redis-5.0.5.tar.gz # 进入解压目录cd redis-5.0.5/# 指定目录并安装,服务被安装在 /home/sha...

2019-07-26 14:03:24 110

原创 搭建 Zookeeper 集群环境

搭建 Zookeeper 集群环境下载安装包 # 下载 wget https://apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz# 解压tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz# 移动到要安装的目录并 cd 进入相应路径# 。。。命令省略。。。...

2019-07-26 13:59:44 178

原创 Spring Boot 2.0 集成使用 Redis

Spring Boot 2.0 集成使用 Redis说明项目基于 Spring boot 2.0.5.RELEASE正文1. 引入 Maven 依赖&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-boot-starte

2018-11-04 21:06:14 352

原创 浅谈 JDK 的读写锁——ReentrantReadWriteLock

从 JDK1.5 开始,JDK 加入了 ReentrantLock 类,该类能够像 synchronized 关键字一样实现线程之间的同步互斥,并且在功能上比 synchronized 更强大,使用起来也更灵活。然而,ReentrantLock 在某些情况下也有自身的不足,因为同一时间内只有一个线程能够获取到锁并执行,这虽然保证了线程的安全,但假设我们有多个线程只是需要对对象进行读取操作,并没...

2018-04-11 03:29:16 645

原创 Java 自动装箱导致的性能问题

从 Java 1.5 开始,新增了自动装箱(autoboxing)的功能,这一定程度上模糊了基本类型与装箱基本类型的区别,有些人会很随意地将两者进行混用,这样代码在编译及运行时虽不报错,但在性能上却有着不小的差别,看下面的例子:long startTime = System.currentTimeMillis();Long sum = 0L;for (long i = 0; i &lt; ...

2018-03-12 22:35:00 665

原创 使用 JDK 动态代理

如何使用 JDK 动态代理使用 JDK 的动态代理,需要完成以下两步: - 编写服务接口及其实现 - 编写代理类,代理类中提供绑定方法和代理方法接下来我们通过代码一步步完成一个动态代理的示例。 编写接口package com.shawearn.proxy.service;/** * Created by Shawearn on 2017/8/1. */public interface M

2017-08-02 16:36:11 255

原创 关于 Java 中的 @Override 覆写

覆写(1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 (2) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型

2017-07-27 16:13:14 690

原创 Spring Boot 使用 Spring Security 后无法 POST 提交数据解决方法

【问题描述】项目使用的是 spring-boot + spring-security,页面用了 thymeleaf 模板页面代码如下: username: password: Submit登录操作代码:/** * 登录操作; * * @param userName 用户名; * @param password 密码;

2017-05-03 13:02:14 16641 4

原创 xStore —— 一款在浏览器本地对 Local Storage 和 Session Storage 进行存取的工具

最近因为做一个功能需要把一些用户填写的基本信息保存到浏览器的 Local Storage 中,于是找到了一个不错的工具——xStore,xStore 封装了 HTML5 的 localStorage 和 sessionStorage 接口,通过它可以很方便地将数据存放在浏览器本地的 Local Storage 或 Session Storage;xStore 项目 GitHub 开源地址:https://github.com/florian/xStore下面简要介绍下 xStore 的使用方式

2017-04-28 02:30:22 1065

原创 jQuery 通过已有模板生成节点并添加到页面

1. jQuery 代码:/** * 回车键发布评论; * 获取到页面已有的节点并进行相应内容替换; */$('.commList').delegate('.replyBox .g-input', 'keypress', function (e) { if (13 != e.keyCode) { return; } var $ul = $(this).closest('ul'

2017-02-28 15:53:58 611

原创 构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目(二)

构建 Zookeep + Dubbo + Spring Boot 的分布式调用项目(一)一、使用 Spring Initializr 构建 Dubbo 服务消费者 dubbo-consumer 项目1. 登录 http://start.spring.io/ 填写如下信息后点击 “Generate Project” 按钮,得到 dubbo-consumer 项目骨架

2017-02-14 14:25:25 7877 6

原创 构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目(一)

一、写在前头在开始构建前,默认你已经能够成功安装并启动 Zookeeper 注册中心,能够成功安装并启动 Dubbo 控制台;在本例中,我的 Zookeeper 注册中心 IP 地址为 192.168.10.41,端口号为 4183,Dubbo 控制台的访问地址为 http://192.168.10.41:8080;为了体现分布式调用,本例中创建了以下两个项目

2017-02-14 14:09:34 25714 11

原创 安装 Dubbo 管理端

一、下载在写这篇笔记的时候, http://code.alibabatech.com/ 已经停止维护,所以无法从官网下载 Dubbo 管理端,故提供此下载地址: 点击下载二、安装将 dubbo-admin.zip 安装包解压到 tomcat 服务器中并做相应配置即可。三、配置找到解压后的 dubbo-admin 中找到 WEB-INF/d

2017-02-14 13:47:23 831

原创 安装 Zookeeper 并启动 Zookeeper 服务

一、安装 Zookeeper下载地址:http://zookeeper.apache.org/将下载后的 zookeeper 解压,在 conf/ 下创建 zoo.cfg 文件tickTime=2000dataDir=/var/lib/zookeeperclientPort=2181tickTimethe basic time unit in millise

2017-02-14 13:03:32 706

原创 Spring Boot 程序用 log4j 替换 Logback

在 Spring Boot 中,程序默认使用 Logback 来记录日志并用 INFO 级别输出到控制台,某些情况下我们可能想用其他日志实现框架替换 Logback,在 Spring Boot 中,因为程序使用了自动配置,所以我们可以很方便地替换日志实现,下面以使用 log4j 替换 Logback 为例。1. 去除对默认日志的依赖 org.springframewor

2017-02-10 10:28:49 6544 2

原创 Spring Boot 跳转到 JSP 页面

1. 配置 application.properties 文件# 配置视图文件所在位置;spring.mvc.view.prefix=/WEB-INF/views/# 配置视图文件后缀名;spring.mvc.view.suffix=.jsp2. Controller 方法@RequestMapping("/myTest")public String myTest()

2017-02-05 16:12:01 10096 1

原创 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题

思路:使用两个线程调用同一静态方法(该静态方法不引用静态变量)、第一个线程被阻塞的时间大于第二个线程被阻塞的时间,若第一个线程与第二个线程的输出结果相同,则两个线程调用同一静态方法存在线程安全问题,若第一个线程于第二个线程的输出结果不同,则两个线程调用同一静态方法不存在线程安全问题;package com.shawearn.test;/** * 测试多个线程调用同一静态方法(无静态变

2016-10-18 01:42:22 2365

原创 Velocity 使用笔记

变量赋值:将变量 name 赋值为 "Shawearn"#set( $name = "Shawearn" )正式引用${name}静态引用$!name$name$name、$!name 与 ${name} 的区别:当变量 name 有被赋值时,$name、$!name 和 ${na

2016-09-30 00:17:39 278

原创 使用 Quartz 实现任务的动态管理

【写在前面】  1. 本文中使用的 Quartz 版本为 1.8.6;  2. 本文不会对 Quartz 做太多介绍;  3. 本文不会对代码做过多解释,因为大部分已经在代码的注释中说明过了;  4. 目前官网上最新的 Quartz 版本为 2.2.3,最新版的接口与本文所采用的 1.8.6 接口并不相同,使用本例代码请注意 Quartz 版本问题;  5. Quartz 官网

2016-05-19 22:26:02 2118

原创 配置 Apache 服务器支持 PHP 文件的解析

【说明】1. 本例中 Apache 版本为 httpd-2.4.20-x64-vc14 ,安装路径为 E:\Apache242. PHP 版本为 php-5.5.34-Win32-VC11-x64 ,安装路径为 E:\php-5.5.34【下载】登录 http://php.net/downloads.php 下载 PHP,由于我要把它跟 Apache

2016-04-16 23:26:10 16170

原创 Windows 系统安装 Apache 服务器

【下载】登录 https://httpd.apache.org/ 选择相应的版本下载,此处我下载的为 httpd-2.4.20-x64-vc14点击 “Download”点击 “Files for Microsoft Windows”选择 “Apacheaus”此时浏览器会跳到以下链接: http://www.apachehaus

2016-04-16 21:25:24 6230 1

原创 DOM4J 写入 XML 文件

项目依赖: dom4j dom4j 1.6.1生成 sitemap.xml 文件:// xmlString 是符合 XML 格式的字符串;// 根据 XML 字符串生成 org.dom4j.Document 对象;Document document = DocumentHelper.parseText(xmlString);// 指定 document 字符编码;d

2016-04-12 14:17:23 437

原创 使用 XStream 实现 Java 对象与 XML 的相互转换

1. 初始化要转为 XML 的数据:// 生成第一条地址数据;Address address1 = new Address(1, "地址一", "广东省XX市", "XX公司");// 生成第二条地址数据;Address address2 = new Address(2, "地址二", "广东省XX市", "家");List addresses = new ArrayList();/

2016-04-12 14:07:46 449

原创 Java 使用 json-lib 处理 JSON

【项目环境】 net.sf.json-lib json-lib 2.4 jdk151. JSON 数组对象转化为 List 对象;/** * JSON 数组对象转化为 Java 的 List 对象; */private void jsonArrayToList() { // JSON 格式的字符串; String jsonStr = "[{\"id\":2,\"is

2016-04-08 12:09:19 430

原创 使用 PrintArea 打印 HTML 页面的内容

【本例效果】点击“打印”按钮后,浏览器会弹出新窗口打印表格,如下图:【实现步骤】1. 下载 PrintArea 库,在页面中导入相应的 jQuery 库:2. 为“打印”按钮绑定点击事件:$(document).ready(function(){ // 绑定“打印”按钮的点击事件,"test123" 为“打印”按钮的

2016-03-24 19:57:54 6144 1

原创 Spring 整合 Hibernate 时启用二级缓存

写在前面:  1. 本例使用 Hibernate3 + Spring3;  2. 本例的查询使用了 HibernateTemplate;1. 导入 ehcache-x.x.x.jar 包;2. 在 applicationContext.xml 文件中找到 sessionFactory 相应的配置信息并在设置 hibernateProperties 中添加如下

2016-03-24 15:54:04 2043

Spring Boot 整合 Apache Kafka.zip

《Spring Boot 整合 Apache Kafka》博文对应的源代码;博文地址:https://blog.csdn.net/shawearn1027/article/details/107067328

2020-07-02

dubbo-consumer.7z

一个 Dubbo 服务消费者示例项目;

2017-02-14

dubbo-provider.7z

一个 Dubbo 服务提供者示例项目;

2017-02-14

dubbo-admin.zip

Dubbo 服务控制端

2017-02-14

空空如也

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

TA关注的人

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