自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 将本地项目上传至 Github

将本地项目上传至 Github欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的K...

2020-06-09 13:50:06 38 0

转载 ApplicationContextAware使用理解

问题背景 在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码: ApplicationContext appContext = new ClassPathXmlApplicationContext(“applicati...

2020-03-02 10:02:37 70 0

转载 DATETIME与TIMESTAMP的区别,该不该使用自动更新

今天遇到一个问题,明明数据有更新,update_time字段却还停留在创建数据的时候。 按常理来说这个字段应该是自动更新的才对。 查了一下表结构,update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP 发现update_time字段的类型是d...

2019-12-16 14:11:31 57 0

转载 一文弄懂Nginx最核心的配置

背景 在日常的工作中,跟Nginx打交道的时候挺多的。之前对location的匹配规则是一知半解的,为了搞明白location是如何匹配的,查了些资料总结此文。希望能给大家带来帮助。 语法规则 location [ = | ~ | ~* | ^~ ] uri { ... } location @n...

2019-11-15 11:34:40 55 0

转载 使用CloseableHttpClient 模拟发送HttpGet和HttpPost请求

项目中经常会用到模拟Http请求,而jdk 下的 rt.jar核心库中也有 java.net提供了这方面的功能,但是总体而言,功能还是缺少灵活性和全面性,HttpClient的出现就是弥补了其缺失的功能。HttpClient不是浏览器客户端,而是一个客户端和服务端实现通信的Http组件库。本篇文章...

2019-11-08 15:34:57 183 0

原创 动态改变日志级别

动态的修改线上环境的日志级别,在分布式环境,一次修改一台,改变的途径有: (1)通过http访问,处理请求,改变日志级别。可以使用轻量级的httpServer(推荐 NanoHTTPD)监听指定端口,http请求ip,访问到具体的机器上修改日志级别。 (2)通过请求Zookeeper,修改节点上的...

2019-11-06 18:50:12 91 0

原创 值判断的性能比较

经常写业务代码,会有对字段值的判断,首先要校验非空,然后做值判断。如果值为null,不校验直接判断会引起异常,如果异常处理不当会引发事故。 所以,这样写会很简便: new Integer(8).equals(d) 把比对的值放在Integer里,即便变量d为null也不会异常。 但是,这种写法的...

2019-11-06 12:56:31 37 0

原创 logback实践总结

logback的日志滚动策略使用总结: 1、如果日志打印的多的话,很容易占满磁盘,引起宕机。所以要配置日志滚动策略rollingPolicy,设置最大文件容量,超过最大值,再下一次产生新文件的时候,自动清空最早的文件。 2、假设某logger对应路径的日志每天有3G,可以分配给该logger的最大...

2019-11-05 17:37:50 54 0

原创 使用maven Profile实现多环境构建

多环境是指,有多个profile环境,每个环境有自己不同的配置(有的定义在pom.xml中,有的定义在.properties文件中),总共分三步: 1、在pom.xml中定义多个profile 2、在resources里新建目录存放不同环境的配置文件 3、在pom.xml中定义加载的环境的配置,指...

2019-10-29 20:21:47 67 0

转载 Nginx配置upstream实现负载均衡

转载:https://www.cnblogs.com/wzjhoutai/p/6932007.html 1、在http节点下,加入upstream节点。 upstream linuxidc { server 10.0.6.108:7080; server 10.0.0.85:8980; } 2、将...

2019-10-28 14:54:09 60 0

原创 并发中锁的分类

1、自旋锁 线程状态及上下文切换消耗系统资源,当访问共享资源的时间短,频繁切换上下文不值得。jvm使线程在没有获得锁的时候,执行空循环,循环几次之后,如果还没获得锁,再被挂起。 2、阻塞锁 改变了线程的运行状态,让线程进入阻塞状态进行等待,当获得相应的信号(唤醒或者时间)时,才可以进去线程的准备就...

2019-08-09 09:08:57 65 0

原创 volatile和synchronized

如何把非原子性操作变成原子性操作? 1、volatile关键字只能保证可见性,并不保证原子性 2、synchronized关键字,使操作具有原子性 区分一下synchronize内置锁和互斥锁 1、内置锁,在对象头,自动获取释放,获得的唯一方式,进入锁保护的同步代码块 2、互斥锁,内置锁就是一个互...

2019-08-07 09:34:28 37 0

原创 ReentrantLock源码分析

首先,想先梳理一下自己看源码的目的,最近有篇文章特别火《程序员12小时惊魂记:凌晨迁移数据出大事故!》,里面强调了解决问题的能力很重要,这给我一种只看源码和设计模式关键时刻不给力的感觉,周末去看了鲁能和恒大的比赛,那种在瞬间做出决策的压力只会比事故现场更紧张,而且不能有一点犹豫。我想竞技体育的魅力...

2019-08-06 00:17:46 85 0

原创 如何搭建一个前后端分离的项目

整体思路 如下: 动态请求,Client->Nginx->Tomcat->Nginx->Client 静态请求,Client->Nginx->Client

2019-07-24 09:12:47 2826 0

原创 Iterator死循环

iterator不能放在循环里,每次都会获得一个新的迭代器,导致死循环。 要先获取迭代器,然后对迭代器循环。 public static void main(String[] args) { //正确 Iterator<String> it = ...

2019-07-17 21:44:31 286 0

转载 偏向锁,轻量级锁与重量级锁的区别

转自:https://blog.csdn.net/choukekai/article/details/63688332 锁的量级说明锁的竞争程度。 偏向所锁,轻量级锁都是乐观锁,重量级锁是悲观锁。 一个对象刚开始实例化的时候,没有任何线程来访问它的时候。它是可偏向的,意味着,它现在认为只可能有一个...

2019-07-16 22:04:23 124 0

原创 并发容器1 vs 同步容器

并发容器:CopyOnWrite系列、 Concurrent系列、 BlockingQueue系列 特点:每个并发容器的设计都不一样,根据具体场景设计,尽量避免使用锁。 CopyOnWriteArrayList 内部持有一个ReentrantLock lock = new ReentrantLo...

2019-07-16 08:59:15 55 0

原创 Lock接口,和Synchronized区别,分布式锁

什么是锁:同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记。这个标记可以理解为锁。...

2019-07-13 19:34:34 588 0

转载 Java分布式锁看这篇就够了

原文出自: https://www.cnblogs.com/seesun2012/p/9214653.html https://blog.csdn.net/seesun2012 ### 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步...

2019-07-13 18:40:30 178 0

转载 SQL中# 与$ 的区别

转自:https://www.cnblogs.com/luohanguo/p/9122398.html 区别: (1)#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是id,则解析成的sql为order by “id”。 (2)...

2019-07-11 17:55:35 53 0

转载 Elasticsearch 如何做映射mapping

转自:https://blog.csdn.net/zhousenshan/article/details/82928827 1、什么是映射     映射:创建索引的时候,可以预先定义字段的...

2019-07-09 17:30:01 117 0

原创 场景优化-工厂模式和策略模式(非常实用且常用的设计模式)

问题: 随着业务代码的复杂度增加,我们的代码中出现了大量的 if-else,一坨一坨的,类特别大,非常难看,而且还伴随着大量的重复代码,特别容易隐藏坑,比如增加或修改场景时,需要把所有重复的代码都改一遍,如果有遗漏就会产生bug。 目的: 所以要拆解类,要对重复代码抽象。 如何实现: 使用工厂模式...

2019-07-06 18:21:12 427 0

转载 java并发-独占锁与共享锁

转自:https://blog.csdn.net/wojiushiwo945you/article/details/42292999 1 锁的独占与共享       java并发包提供的加锁模式分为独占锁和共享锁,独占锁模式下,每次只能有一个线程能持有锁,Reent...

2019-06-28 09:21:11 1688 0

原创 java并发等待/通知的经典范式

分为两部分,等待方和通知方: 等待方: (1)获取对象的锁 (2)如果条件不满足,那么调用对象的wait()方法,被通知后仍要检查条件。 (3)条件满足则执行对应的逻辑。 对应伪代码: synchronized(对象) { while(条件不满足) { 对象.wait(); } 对应的处...

2019-06-14 11:26:40 137 0

原创 MySQL索引优化

1、使用组合索引 2、什么情况下要注意where条件的顺序(索引列顺序) 3、善于使用in(使用in优化了什么) 4、order by如何优化(结合索引) 5、覆盖索引 6、删除冗余索引 7、什么时候使用重复索引 8、避免使用范围查询(多个范围查询如何优化) 9、前缀索引 10、理解二级索引 11...

2019-05-29 22:12:48 50 0

原创 Spring编程式事务回滚踩坑

基于 TransactionDefinition、PlatformTransactionManager、TransactionStatus 编程式事务管理是 Spring 提供的最原始的方式,通常我们不会这么写,但是了解这种方式对理解 Spring 事务管理的本质有很大作用。 基于 Transac...

2019-05-27 11:07:36 650 0

转载 java异常类型

转自:http://c.biancheng.net/view/1038.html 异常类型 在 Java 中所有异常类型都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类层次结构的顶层。Throwable 类下有两个异常分支 Exception 和 E...

2019-05-27 11:04:35 68 0

原创 Spring事务回滚配置

1、Spring的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚; unchecked异常包括error和runtime异常;checked异常包括IOException异常,需要try catch或向上抛出异常。程序在抛出runtime异常的时候才会进行回滚...

2019-05-27 10:59:26 387 0

原创 Spring声明式事务调用关系

(4月份的时候,看了一下事务的使用,写了4份笔记,分享一下。) Spring中生成代理的方式有两种:JDK动态代理 和 CGLlib。JDK只能代理带接口的,cglib有没有接口都行。 问题一、 假如一个类里有两个方法,a有事务,b没有事务。 如果在b里调用a,那么b会有事务吗? 分析: 1、对目...

2019-05-27 10:58:21 68 0

原创 JMM-java内存模型

在并发编程中,需要处理的两个关键问题: 1、线程之间如何通信。 2、线程之间如何同步。 线程之间的通信机制有两种:1、共享内存。2、消息传递。 共享内存的并发模型里,线程之间共享程序的公共状态,通过读-写内存中的公共状态进行隐式通信。 消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发...

2019-05-03 17:12:04 101 0

原创 spring-config.xml的annotation-driven详解

使用spring mvc时,经常有这个注解annotation-driven,意思是支持注解。 例: < context:annotation-config/> 支持配置注解 向 Spring 容器注册AutowiredAnnotationBeanPostProcessor、Commo...

2019-03-28 21:58:26 154 0

转载 Redis--各个数据类型最大存储量

原文地址:https://redis.io/topics/data-types https://blog.csdn.net/sinat_27143551/article/details/80701089 Strings类型:一个String类型的value最大可以存储512M Lists类型:li...

2019-03-16 18:25:12 1035 0

原创 java并发机制的底层实现原理

java中使用的并发机制依赖于jvm的实现和cpu指令。

2019-03-04 09:21:28 75 0

原创 影响缓存使用效果的几个关注点

1、监控运行中的缓存 对于进程外缓存,一般需要监控cpu,进程内存使用情况,连接数等。 2、GC影响

2019-02-26 22:16:48 70 0

原创 缓存穿透

《深入分布式缓存:从原理到实践》 缓存数据没有命中就会存在缓存穿透。 目标:避免攻击性穿透、并发更新穿透,让缓存数据的失效过程尽可能平滑。 方法:选择不同的缓存策略、缓存淘汰算法。 第一种场景: 利用不存在的key攻击应用。 过程:每次请求会先检查缓存中是否存在,如果存在返回缓存内容,如果不存在就...

2019-02-15 09:43:07 56 0

转载 log4j MDC用户操作日志追踪配置

可参考官方文档:http://www.logback.cn/08%E7%AC%AC%E5%85%AB%E7%AB%A0MDC.html 一、MDC介绍 MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日...

2019-02-13 15:21:12 638 4

原创 引入缓存前的考量-大处着眼,小处着手《深入分布式缓存-从原理到实践》

缓存不是系统架构的必选项,只有在遇到性能瓶颈的业务场景,才可能需要引入缓存。 首先从宏观考虑,整体的缓存场景,缓存层次,缓存策略(同步/更新)。 其次从局部考虑,选择合适的缓存组件,使用方式(数据结构、分布、部署),制定缓存系统的SLA(服务等级协议)。 最后,在系统运行过程中,要对缓存系统监控报...

2019-02-13 09:46:57 72 0

原创 git常用命令

回滚到指定版本 比较两个分支的文件的差异 git diff branch1 branch2 --stat //显示出所有有差异的文件列表 git diff branch1 branch2 文件名(带路径) //显示指定文件的详细差异 git diff branch1 branch2...

2019-02-12 15:54:33 62 0

转载 Spring depends-on介绍

Spring depends-on介绍 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!-- redis配置 --&amp;amp;amp;amp;amp;amp;amp;amp;am...

2019-01-28 20:22:10 96 0

原创 MyBatis3官网文档要点总结

1-XML映射配置文件 官网地址:http://www.mybatis.org/mybatis-3/zh/configuration.html 2-Mapper XML文件 3-动态SQL 4-JAVA API 、SQL语句构建器 、 日志

2018-11-05 09:49:24 182 0

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