- 博客(204)
- 资源 (2)
- 收藏
- 关注
原创 Docker单机:FileBeat+ELK 日志收集
参考链接:https://www.cnblogs.com/fbtop/p/11005469.html目的: 线程请求生成对应的requestId,根据requestId追踪链路生产消费的数据,方便定位问题和回溯;基于一些XXX考虑,和阿巴阿巴阿巴的原因先拿FileBeat+ELK的方式进行实验,跑通日志收集和展示的功能。为了避免重复造轮子,本篇只对上出链接博客做一些补充: 1.单机/docker/版本7.1.1; 2.docker四大网络的特点...
2020-08-12 11:09:17
1138
原创 观察者模式
@TOC观察者模式前言代码code过程中对于特定的场景前人总结了很多方便、高效、扩展性高的设计模式,下面是在code过程中关于观察者模式的应用。观察者模式类图场景:某操作导致对象A的状态发生变化,此时与A关联的B、C、D……都因为A的状态改变作出了不同的反应。执行容器:持有观察者集合,可以通过循环的方式统一执行观察者从父类继承过来的方法。观察者:继承父类,通过继承来的方法统一执行对应状态变化的各自操作。简单总结:父类引用指向子类,执行容器持有父类集合,通过循环父类集合执行观察者们的从
2020-08-01 17:16:14
293
转载 【转】三种方式解决SpringBoot拦截器不能注入bean的问题
转自:https://www.jianshu.com/p/60ff6d0dae7f一.原因这两天在写代码的时候遇到一个问题,为什么使用SpringBoot的时候,拦截器中使用@Autowired注入bean会报空指针.如下面代码所示,我们知道,Spring管理的bean发现有这个注解时候,它会直接注入相应的另一个Spring管理的bean.当 Spring 容器启动时,AutowiredA...
2020-03-03 16:39:17
2037
原创 ID临时方案
下面从特性、规则、生成、模块传递等几个方面对这四个ID进行定义和解释说明。 ID类型 特性 规则 产生 作用 场景 使用 RequestId 唯一性 排序行 归并性 纳...
2018-10-26 09:42:34
641
转载 springboot rabbitmq整合
转载:https://www.cnblogs.com/xmzJava/p/8036591.html这一篇我们来把消息中间件整合到springboot中=====================================================================首先在服务器上安装rabbitmq的服务,用docker拉取即可,不再详细描述。直接来撸代码...
2018-09-28 17:24:06
424
转载 mybatis 查询条件包含list
mybatis查询实体中包含list1.实体 private List<String> birthdayCon; // 生日条件:01-12,格式如:01,02 private Integer ageMin; // 最小年龄 private Integer ageMax; // 最大年龄 private List<Map<...
2018-09-08 10:54:37
8597
原创 记录:mysql行合并列合并显示
搬砖时遇到一个sql需要合并行 且 合并 列字段 显示的要求,好像是第一次写,记录一下。SELECT b.push_id AS pushId, b.push_time AS pushTime, c.real_name AS recivePerson, a.school_name AS school, a.real_name AS studentName, ...
2018-08-30 10:31:27
3904
2
原创 ESC+aliyun-redis+Docker
做一个简单的问题记录.............. 一、问题背景 使用docker在ECS主机上部署项目,项目中使用到了aliyun的redis,配置ip是阿里云给的字符串连接地址。 现象:将需要部署的war包直接在ecs主机上部署tomcat,可以访问aliyun-redis; 将需要部署的war包打到docker...
2018-07-20 15:36:27
663
原创 异常方案和实践
一、Java异常简介 异常是程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行。异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。 Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处...
2018-07-20 15:13:05
755
转载 Spring注解校验记录
一、spring注解作用二、自定义注解三、使用spring注解进行网关传入对象/参数的校验git: https://github.com/KingBoyWorld/kingboy-springboot-web/tree/feature_validate/src/mainps:文章来自对大牛的学习,是转载记录的。四、代码实践五、参考学习/转载地址https://blog.youkuaiyun.com/...
2018-06-25 10:38:55
400
原创 Dockerfile-tocmat:基于dockerhub的tomcat访问日志配置封装
1.需求变了,需要不依赖本地镜像,之前那个需要依赖本地镜像,需要一个可移植、不依赖本地配置的dockerfileFROM tomcat:8.02 # author3 # MAINTAINER admin <admin@domain.com>4 # put the project at the same context with the dockerfile5 ADD ./*.w...
2018-04-11 16:03:08
725
原创 tomcat-Dockerfile:可配置tomcat的访问日志
1.需求 tomcat的容器启动时,可以通过参数命令来决定容器中tomcat的server.xml的访问日志是否开启。2.tomcat-Dockerfile FROM openjdk:8-jreENV CATALINA_HOME /usr/local/tomcatENV PATH $CATALINA_HOME/bin:$PATHRUN mkdir -p "$CATALINA_HOME...
2018-04-11 11:03:11
2470
原创 Jedis连接池
1.前言 公司使用阿里云的云数据库Redis,在Spirng的配置中,传统的Jedis配置已经不合适了,因为本地连接云Redis服务需要输入密码才行,这样只有JedisPool中才有输入验证密码的属性,于是采用了JedisPool的方式来连接单击的Redis云服务。2.配置文件<beans xmlns="http://www.springframework.o
2017-11-02 19:21:31
621
原创 本地连接阿里云数据库Redis
1.背景公司买了阿里云的Redis服务,而不是传统的在阿里云的ECS主机上面搭建Redis服务,开发过程中需要在本地连接阿里云的Redis服务,也就是在本地使用Redis的可视化客户端连接云数据库Redis,但是云数据库Redis是支持外网连接的,唯一的办法就是使用Esc主机连接Redis,然后在ECS主机上安装rinetd 进行转发实现。2.步骤注意事项 阿里云的主机和服务分为两种网络:经典网络
2017-10-26 20:38:17
5097
原创 谈一下threadLocal的理解
ThreadLocal是Java里一种特殊的变量。每个线程都有一个ThreadLocal就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。它是为创建代价高昂的对象获取线程安全的好方法,比如你可以用ThreadLocal让SimpleDateFormat变成线程安全的,因为那个类创建代价高昂且每次调用都需要创建不同的实例所以不值得在局部范围使用它,如果为每个线程提供一个自己独有的变量拷贝
2017-08-27 21:34:57
476
4
原创 深入研究Spring-IoC:源码分析依赖注入
1.前言对于容器创建的过程已经阐述过一遍了,下面是依赖注入的问题。Spring提供的依赖注入的方法主要由两种:一种是通过getBean的方法;另一种是通过注解@Autowaire。需要指出的是依赖注入的过程是用户第一次向ioc容器索要Bean的时候开始生产的,也可以通过设置BeanDefinition的lazy-init属性来体现实例化。2.分析执行代码: HelloWorldService hel
2017-08-24 11:04:27
1169
6
原创 深入研究Spring-IoC:源码分析容器创建
1.前言从之前的分析中可以知道IOC容器的创建大致分为3步:Resource定位、BeanDefinition载入解析、向容器注册BeanDefinition。Tiny-spring手动实现了Spring框架,通过对这个源码的解读可以更好更有效的理解Spring。2.容器创建的硬编码ApplicationContext applicationContext = new ClassPathXmlApp
2017-08-24 10:32:27
467
5
原创 深入研究Spring-IoC :容器创建的几种方式
1.前言 本文为对tiny-spring的学习解读,代码参考自tiny-spring。一个手写的Spring简易版框架。 前面已经提到了Spring IOC容器的创建大致分为3个步骤。但是这个三个步骤是有一个演进的过程的,Spring容器创建方式前后有6种,从最基本的实例化创建创建到后来的自动化,这些过程的学习对我们学习理解IOC有很大的帮助。2.容器创建需要的代码HelloWorldServic
2017-08-24 09:22:15
1012
5
原创 深入研究Spring-IoC:两种设计和实现
一.Sprng IOC解除了对象实例化造成的耦合现象;将对象的创建和对生命周期的管理交给了容器来管理,可以通过注入的方式将IOC容器中的对象供给开发者使用,极大方便了开发。二.IOC容器系列的两种设计和实现–BeanFactory和ApplicationContextSpring IOC容器的设计中,IOC容器是一个统一称呼,具体担当容器的角色的Bean可以主要分为两种:BeanFactor
2017-08-23 20:16:16
796
4
原创 ITOO---选课里的Spring-RabbitMq
前言项目里需要用到RabbitMQ来做数据持久化的工作,需要将RabbitMQ集成到Spring中。生产端需要将同步消息发送到MQ,消费者接受后持久化到数据库;生产端/** * 退课 * @param coursetype * @param redisId * @param courseId * @param teachClassId *
2017-08-15 09:19:54
559
8
原创 并发编程(五):Executor框架
简介Executor是JDK提供的一套线程框架,用于有效的控制线程。Executor框架主要包含三个部分:任务:包括Runnable和Callable,其中Runnable表示一个可以异步执行的任务,而Callable表示一个会产生结果的任务任务的执行:包括Executor框架的核心接口Executor以及其子接口ExecutorService。在Executor框架中有两个关键类ThreadPoo
2017-08-15 09:04:12
363
5
原创 并发编程(四):并发工具类
前言并发工具类大致分为四种:阻塞队列、信号量(Semaphore)、栅栏(Barrier)以及闭锁(Latch)。用于Java在并发编程中各种情况下使用;闭锁– CountDownLatch闭锁作用相当于一扇门:在闭锁到达某一状态之前,这扇门一直是关闭的,所有的线程都会在这扇门前等待(阻塞)。只有门打开后,所有的线程才会同时继续运行。CountDownLatch 是一种灵活的闭锁实现,闭锁状态包含一
2017-08-15 08:28:38
1755
5
原创 并发编程(三):同步容器和并发容器
前言Java 中有些集合和非线程安全,而有些集合是线程安全,后者又被称为是Java中的同步容器,因为它能满足操作的原子性,保持数据同步。有些容器时Java自带的,而有些是通过Collections提供的方法包装的。同步容器在Java中,同步容器主要包括2类: 1)Vector、Stack、HashTableVector实现了List接口,Vector实际上就是一个数组,和ArrayList类似,但
2017-08-15 08:20:30
869
5
原创 并发编程(一):多线程基础知识
两种创建线程方法继承类: 1. 继承Thread 类;实现接口: 2. 实现Rnnable接口; 3. 实现Callable接口(rnnable的增强版,可以有返回值和抛异常)对比:Rnnable、Callable接口: 编程复杂,但是多个线程可以共享同一个target对象;适合多个相同线程来处理同一份资源的情况,可以将cpu、代码、数据分开。Thrad类: 编程简单,但是不能再继承
2017-08-15 08:09:36
508
4
原创 并发编程(二):非线程安全集合类
前言Java集合时所讲的ArrayList 、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都线程不安全的,当多个并发线程向这些集合中存取元素时,就可能会破坏这些集合的完整性。那么究竟是在什么情况下才会出现问题呢?线程安全就是说多线程访问同一代码(对象、变量等),不会产生不确定的结果;线程不安全的集合类ArrayList:package 线程不安全;imp
2017-08-14 21:48:04
916
4
转载 JDK自带工具类
下面,我们就按照工具文件名称的英文顺序来逐一介绍JDK内置的工具。工具名称描述appletviewer.exe用于运行并浏览applet小程序。apt.exe注解处理工具(Annotation Processing Tool),主要用于注解处理。extcheck.exe扩展检测工具,主要用于检测指定jar文件与当前已安装的
2017-08-13 19:39:35
3576
3
原创 ITOO---“秒杀”选课之Redis序列化
1.我的选课在进行选课活动中了为了尽量减少客户端和数据库的连接次数,在实现的思路是这样设计的:客户端的请求优先访问Redis缓存空间,如果Redis中没有则从数据库中加载,并添加到Redis中。这样多个客户端会优先从Redis中加载所需的资源,减少了数据库的压力。ps:选课中的课程比较多,数据库量较大。在Redis的存储遇到了个问题,因为Redis的存储方式是(Key,Value)形式的,在设计
2017-08-06 21:16:25
1174
13
原创 ITOO---选课里的“秒杀”业务实现(一)
1.我的选课在选课中有个中心环节需要格外的注意,那就对每一门课程数量增减。假如一门《走进英国》的选修课,因资源有限只有100个名额,在redis中以Key/Value形式存储–(CousreID,Capacity);客户端每次选课退课都只是对Capacity进行增减,它的业务实现逻辑是这样的:1.判断redis中是否存在该门课程的缓存;获得数据或者重新加载; 2.判断redis中该门课程的容量是
2017-08-06 20:38:48
986
9
原创 ITOO---选课里的“秒杀”业务设计
1.1 我的选课 背景介绍: 在项目的选课功能中碰到一个难题,是高校内的选课业务,有个难题的就是会出现高并发的现象,比如多个学生通过移动端或者pc端进行选课操作,多对一,进行数据库操作时难免出现脏读或幻读的现象;还有就是选课涉及的事务的隔离级别,不同线程对共享资源的访问需要隔离或者锁,需要保证资源的非共享性。每一门课的容量都如抢购一般,需要进行秒杀
2017-07-26 15:45:45
1272
33
原创 Spring Boot 运行原理之自动配置
我们知道Springboot提倡的是零配置,但是在我们开发工作中又是不可避免出现第三方软件的结合,需要我们对这些第三方的软件进行一些结合性或必要的属性进行赋值,而这时Spring boot会帮我们自动进行默认值的配置,避免我们亲自操刀。 SpringBoot关于自动配置的源码在Spring-boot-autoconfigure-1.3,可以在项目中直接查看:
2017-07-25 14:38:04
12790
20
原创 Spring Boot 注解类
一:Springboot 核心注解: @SpringBootApplication 是springboot的核心注解,目的是开启自动配置。 @SpringBootApplication注解组合了@Configuration、@EnablAutoConfiguration 、@ComponentStan。这个三个注解和@SpringBootApplication是互为替代关系;
2017-07-25 09:02:51
1474
19
原创 Spring 4x中的注解类使用
声明bean的注解:1、@Component组件2、@Service在逻辑层使用3、@Respository在数据层dao使用4、@Controller在表现层使用 注入Bean的注解:@Autowired:@Inject @Resource: 配置注解@Configuration声明当前类位配置类(xml)。@ComponentSan自
2017-07-24 16:06:02
599
19
转载 idea 使用快捷键
转载自:http://blog.youkuaiyun.com/childhooders/article/details/4319679Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数
2017-07-04 10:33:40
349
18
原创 AOP权限控制
使用Spring AOP做权限控制。Service提供的方法拥有自定义注解信息做权限控制,根据请求的权限,匹配方法上的权限。 权限信息类:Privilege 自定义注解类:PrivlegeInfo 注解解析类 : AnnotationParse 权限控制切面类:Pri
2017-06-26 14:49:51
2053
13
原创 封装持久层框架
JDBC:建立数据库连接 、 发送操作数据库语句、 处理结果。 Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login","password");Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("
2017-06-18 11:26:15
648
8
原创 AOP切面拦截-收集异常
D层接口/ 实现类:PersonDaoImpl/PersonDaol Service层接口/实现类:PersonServiceImpl/PersonService 切面类:ExceptionAspect 客户端测试类:ExceptionTest 配置文件:applicatio
2017-06-15 11:28:04
3611
7
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人