自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(298)
  • 资源 (2)
  • 论坛 (2)
  • 收藏
  • 关注

原创 druid监控等插件的实现以及过滤器模式

druid的功能就不多讲了,主要提供数据库连接池的功能,但是支持丰富的监控和日志以及防火墙功能。这些附加功能都是以插件的形式存在的,可以自由定制。本文主要讲解监控、日志等插件的实现,以及怎么集成到druid里。一、 Druid的使用先来看一段使用druid连接池的流程。首先是配置连接池<?xml version="1.0" encoding="UTF-8"?&...

2019-11-11 21:48:30 451

转载 Mybatis拦截器介绍 - 拦截所有执行的sql

1.1目录1.1 目录1.2 前言1.3 Interceptor接口1.4 注册拦截器1.5 Mybatis可拦截的方法1.6 利用拦截器进行分页1.2前言 拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法。Mybati...

2019-11-01 17:57:29 1275

原创 Java 实体映射工具 MapStruct器

目录背景常用方式MapStruct1. 引入方式2. 使用方式2.2 类型转换获取转换器背景java分布式系统经常需要做do(数据库访问对象)对象跟dto(业务传输对象)。一般do对象只涉及系统内部跟数据库的交互,如果跟其他系统通过rpc交互,需要定义dto对象。但是do对象跟dto对象有很多字段的名称和类型都是相同的,但是需要程序来做转换。目前常用的方式并发量高的时候,都会有点性能问题。...

2019-10-05 19:02:28 509

转载 spring中使用@ResponseBody注解返回json,Long类型精度丢失

1.现象发现一个奇怪的bug。对于Long 类型的数据,如果我们在Controller层通过@ResponseBody将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题。2、简单分析@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器(默认使用MappingJackson2Htt...

2019-09-13 19:38:35 796

转载 IDEA maven 多模块jar pom打包发布问题总结 nexus

在用IDEA构建maven多module项目时,碰到了一些问题,现在归纳总结如下。假如一个maven项目下分为几个module,分别是不同的服务,以及common模块,结构如下:shopping├── common├── mail-service├── order-service└── pay-service则shopping pom大概率是如下内容: <mo...

2019-05-28 16:24:07 2199

转载 一篇有深度的介绍mysql的文章:存储、缓存、锁、文件

先抛出几个问题 1.为什么不建议使用订单号作为主键? 2.为什么要在需要排序的字段上加索引? 3.for update 的记录不存在会导致锁住全表? 4.redolog 和 binlog 有什么区别? 5.MySQL 如何回滚一条 sql ? 6.char(50) 和 varchar(50) 效果是一样的么? 索引知识回顾对于 MyS...

2019-04-14 17:36:07 449

原创 semaphore注意事项

java 信号量比较变态的一点Semaphore semaphore = new Semaphore(3); Runnable runnable = () -> { try { System.out.println(Thread.currentThread().getName() + "try acquire");...

2019-04-11 15:01:45 375

原创 rxjava介绍

rxjava适用于大量的任务之间没有依赖关系,可以并发执行的情况。回调方法 (onNext, onCompleted, onError)Subscribe方法用于将观察者连接到Observable,你的观察者需要实现以下方法的一个子集:onNext(T item)Observable调用这个方法发射数据,方法的参数就是Observable发射的数据,这个方法可能会被调用多次,取决于你的实现...

2019-04-11 14:56:04 161

原创 spring加载数据库的groovy脚本

spring加载数据库的groovy脚本动态加载groovy beanIBM系列spring支持groovy

2019-03-29 16:19:23 745

原创 java 偏向锁 轻量级锁 重量级锁

因为synchronized使用的对象监视器底层使用的是系统原语来实现的锁,线程挂起恢复的时候,会涉及内核态和用户态的转换,性能比较差。jdk1.6对synchronized做了不少优化,所谓的优化就是在内部减少synchronized的使用,因为有些情况下synchronized是可以避免的。上面只是介绍了jdk的出发点,具体的优化步骤和逻辑,有几篇博客讲的不错,这里先mark一下,有空再来...

2019-03-04 10:10:35 318

转载 面试:消息队列相关

本文内容思维导图:消息队列其实很简单  “RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词。我也在我的多篇文章中提到了这个概念。可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要...

2019-03-03 16:49:53 379

翻译 kafka事务

官方网址用户提供一个事务id,用于初始化生产者。一、额外的概念Transaction Coordinator类似于consumer group coordinator,管理事务日志和生产者的pid。Transaction Log类似于 Consumer Offsets topic,事务日志是事务的持久化存储,存储着每个活动的事务状态。已经完成的事务,其实事务日志就没有意义了。Con...

2019-02-24 22:16:18 575

转载 JTA 原理与实现

利用 JTA 处理事务什么是事务处理事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下 1. 将 A 账户中的金额减...

2019-02-14 12:12:31 195

原创 Hystrix介绍和使用指南

一、HystrixHystrix是Netflix开源的一款容错系统,能帮助使用者码出具备强大的容错能力和鲁棒性的程序。提供降级,熔断等功能,并且熔断开关打开之后,会在服务可用之后,自动关闭。spring cloud中有用到。如果你的服务依赖于多个服务,并且不想因为某个服务挂掉,而影响你服务。比如hbase挂掉了,你可以通过降级策略返回默认值,或者直接熔断。Hystrix提供了服务隔离,每个服...

2018-12-23 12:00:49 573

原创 解读mvn依赖树信息

[INFO] \- com.mogujie.sm:elasticsearch5-boot-starter:jar:1.0.6:compile[INFO] +- (org.elasticsearch:elasticsearch:jar:5.0.0:compile - version managed from 5.6.11; omitted for duplicate)[INFO] \...

2018-11-28 18:36:18 2640

原创 依赖兄弟模块时,执行mvn命令报错:找不到依赖

有个项目是多模块的,模块A,模块B。模块A和B是同一个父pom下的兄弟模块。模块B依赖模块A,但是模块A又不需要部署到maven仓库。当执行mvn dependency:tree的时候就会报下面的错误: Could not resolve dependencies for project **moduleA**: The following artifacts could not be res...

2018-11-28 17:27:06 1788

原创 java经典面试题

java经典面试题什么是线程安全?又是一个理论的问题,各式各样的答案有很多,我给出一个个人认为解释地最好的:如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。线程安全也可以划分为几个级别,java语言中各种擦偶哦共享的数据分为一下5类:不可变,绝对线程安全,相对线程安全,线程兼容,线程对立。不可变:访问不可变对应,string或者final...

2018-11-15 19:34:38 249

原创 groovy基础

groovy基本语法groovy默认会导入以下库import java.lang.* import java.util.* import java.io.* import java.net.* import groovy.lang.* import groovy.util.* import java.math.BigInteger import java.ma...

2018-05-26 22:17:47 230

原创 mysql知识(锁和事务)

mysql知识几篇不错的博客 link 死锁分析 mysql总体介绍锁mysql中的锁有好几种,按照作用范围分为行锁和表锁,gap锁,next-key lock,intention lock(意向锁)。按照作用性质,又分为共享锁和排它锁。还有虚拟的乐观锁与悲观锁。 首先要明白,mysql的锁其实是对索引加锁,如果查询语句中没有索引,则对表加锁。(讨论的是select ...

2018-05-19 15:41:44 995

原创 redis知识总结

redisredis事务事务对于关系型数据库很重要的功能。比如redis不支持新建一个带有过期时间的key,如果用redis实现分布式锁,一般就是设置一个key,然后设置过期时间,但是这个过程又不能保证事务性。 redis也提供了事务的功能,但是跟平常理解的事务又有点不太一样。 redis的事务只能保证要么全部不执行,要么全部都执行,而不会在某条命令出错之后,把之前的命令回滚掉,取...

2018-05-19 15:39:55 344

原创 秒杀系统(感悟&待续)

秒杀 秒杀系统最重要的就是防止超卖(哈哈)。只要不亏本就行。同时秒杀系统流量一般比较大,采用同步方式效率肯定比较低。 秒杀就是请求过来,减去相应库存,生成订单的过程。如果库存不足,则不能生成订单。出错一般就在查询库存和减库存的过程中,不是同步的。先提供一种简单的思路: 减库存的sql里加上剩余数量>=请求秒杀数量的条件,类似update SecKillGoods g set g.r

2017-10-10 22:02:31 546

原创 java常用定时组件

java 定时组件cron4j cron4j是轻量级的定时组件,可使用linux的crontab表达式来配置线程执行的时间。官方说,可以保证一年内的时间正确性。最小定时精度是一分钟。官网:http://www.sauronsoftware.it/projects/cron4j/manual.php 稍微看了下源码,大概是线程每次休眠一分钟,然后查看有没有到可以执行的时间。如果到了就

2017-08-27 22:30:58 1274

转载 转载的java面试题(值得推荐)

之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇诚意之作,希望能给未来找工作的人一点指引和总结, 也希望能使大家少走点弯路 , 如果能耐心读完,相信对你会找到你需要的东西。先说一下LZ的基本情况,LZ是四川某985学校通信专业的研究生(非计算机),大学阶段也就学了C语言,根本没想过最后要成为码农。大四才开始学java,研

2016-08-27 11:16:55 1784

原创 jdk源码阅读--(LinkedList)

一、linkedList底i层存储结构private static class Node { E item; Node next; Node prev; Node(Node prev, E element, Node next) { this.item = element; thi

2016-08-24 22:28:40 997

转载 java 常用序列化和反序列化框架使用-json,kyro,jdk

不知道为什么博客不能收藏了,只好转载过来。转载地址:http://blog.csdn.net/earbao/article/details/46914407[java] view plain copypackage com.baidu.test;    import java.io.Serializable;  impor

2016-05-27 17:13:17 2616

转载 SessionUtil Tomcat 生成 session id 的算法

package com.haohui.web.util;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Random;/

2016-05-24 21:30:01 5659

转载 java服务器何时创建Session

Session 机制:session机制是一种服务器端的机制,用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识。这个标识称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,

2016-05-20 10:57:15 12279 1

原创 java并发编程实战-对象的共享

一、可见性当读操作和写操作在不同的线程进行的时候,并不能保证读的线程可以读到写线程最新的更改。如果要确保内存对写入操作的可见性,就必须使用同步。处理器还会对程序中的操作进行重排序。重排序保证在单线程的执行情况下,和不重排序得到的结果一样,但是多线程的话,就不一定了。一个简单的方法避免所有的问题就是:只要有数据共享,就是用正确的同步。1.失效数据    看下面的程序:如果不对

2016-05-13 16:57:52 1418

转载 一位资深程序员大牛给予Java初学者的学习建议

这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学。在大家看之前,我要先声明两点。1、由于我本人是Java后端开发出身,因此所推荐的学习内容是

2016-05-13 10:51:13 95006 47

原创 http-客户端识别与cookie机制

web服务器可能会同时与数千个不同的客户端同时进行对话。这些服务器通常要记录下他们在与谁交谈。而不是认为所有的请求都来自匿名的客户端。本章讨论服务器识别客户端的技巧。个性化接触Http是一个匿名、无状态的请求/响应协议。web服务器几乎没有什么信息可以用来判断哪个用户发送的请求,也无法记录来访用户的访问序列。本章对http识别用户的几种技巧进行了总结。一般分为以下几种。承载用户身份信息的htt

2016-05-10 21:25:48 8085

原创 java并发编程实战笔记-线程安全性

什么是线程安全性线程安全性定义中最核心的概念就是:**正确性**。我们将单线程的正确性近似定义为“所见即所知”,当多个线程访问这个类的时候,始终能表现出正确的行为,那么这个类就是线程安全类。当多个线程访问某个类时,不管运行时环境采用什么调度方式或者这些线程将如何交替运行,并且调用代码时,不需要额外的同步,就可以产生正确的结果。这个类就是线程安全类。在线程安全类上执行任何串行或者并行的操作

2016-05-09 18:25:32 2242

原创 http web服务器

web服务器实现web服务器实现了http和相关的tcp连接处理,负责管理web服务器提供的资源,以及对web服务器的配置、控制、及扩展方面的管理。通用的软件web服务器 有很多种,大多来自三个公司,apache,微软和sun的iplant。web服务器设备 就是预先包装好的软硬件解决方案,厂商在他们选择的计算机平台上预先安装好软件服务器,并将软件配置好。嵌入式web服务器 可以嵌入

2016-05-09 15:29:49 2968

原创 http-web缓存

缓存web缓存可以自动保存常见的文档副本的Http设备,当web请求到达时,如果本地已有缓存副本,则直接响应。下面会解释http如何保持副本的新鲜度,以及缓存和服务器通信的问题。冗余数据传输就带宽瓶颈: 一般局域网带宽都比较高,城域网带宽较低,如果可以在局域网设置缓存,则可以很快的响应用户。瞬间拥塞 可以防止突发事件,瞬间挤爆服务器,产生在哪。距离时延命中和未命中 缓存要检查副本是不是服

2016-05-09 12:23:03 2769

原创 运输层TCP/UDP 笔记

一、运输层协议概述1.1 严格地讲,二个主机进行通信,就是二个主机中的应用进程进行通信。也就是端到端的通信是主机中应用进程的通信。运输层提供应用进程间的逻辑通信,网络层为主机之间提供逻辑通信。运输层要对收到的报文进行差错检测,IP数据包首部的校验和字段,只是检查首部是否出错,不检验数据部分。1.2 UDP 用户数据包协议TCP 传输控制协议二个对等的实体在通信时,传递的数据单元

2016-05-05 11:05:07 1103

原创 [leetcode]Longest Increasing Subsequence

总体思想就是:For example, ifnums = [5,6,7,1,2,8,3,4,0,5,9]then after we prcoess the 7:S = [5,6,7]after w process the 2:S = [1,2,7]after we process the 8:S = [1,2,7,8]Then w

2016-05-03 20:14:51 690

原创 openflow协议规范1.1.0翻译

1.介绍2.交换机组件一个openflow交换机包括多个流表和一个组表,用来匹配和转发包。控制器可以通过openflow协议主动地或者被动地增加、更新、删除流表项。每个流表都有一组流表项,流表项按照优先级匹配包,在每个流表中首先匹配的流表项将会被使用。如果在一个流表中没有匹配,可能发生以下动作:转发给控制器,丢弃,继续匹配下一个流表。流表项关联的指令如果是pipeline,

2016-05-03 20:12:01 1526

原创 [leetcode]Coin Change

1.只提供一种递归的思路,从上到下解决问题,没有完全优化,会超时。public class Solution { public int coinChange(int[] coins, int amount) { Arrays.sort(coins);//jdk降序排列 int len=coins.length; int total=0,p

2016-04-26 21:50:48 874

转载 vxworks 开发环境搭建 vmware

转载网址:http://blog.sina.com.cn/s/blog_40c3ef0f0100qdef.htmlVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实操作系统 windriv vxwork时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广操作系统可靠性卓越泛地应用在通信、军事、航空、航天等高精尖技术及实时高精尖航空应用性要求极高的领

2016-04-26 12:44:29 3906

转载 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)

1、先科普下最长公共子序列 & 最长公共子串的区别:找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。2、最长公共子串其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长公共子串是"b

2016-04-24 20:08:21 918

原创 [leetcode] Longest Substring Without Repeating Characters

思路:保持二个指针,i是慢指针,也就是最长字符串的开始位置,j表示当前查找的位置。indexOf函数,从i到j-1,搜索s[j]出现的位置,如果没有出现返回-1,如果出现了,返回匹配位置。当这个字符在前面出现的时候,j-i就是当前的最长子串的长度。然后i设置为匹配位置的下一个位置,从新开始查找。代码如下。public class Solution { public int length

2016-04-23 20:50:52 647

Android应用程序开发宝典

android 作为时下最火的系统 这是一本详细介绍了开发过程的好书 值得一看

2012-07-07

简易无线遥控系统

本文是一套简易的无线遥控系统,涉及了通信的很多方面,讲的也很详细,有兴趣的可以看看。

2012-03-29

jliang981的留言板

发表于 2020-01-02 最后回复 2020-04-03

为什么csdn不能收藏博客了?

发表于 2016-05-27 最后回复 2016-05-27

空空如也

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

TA关注的人 TA的粉丝

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