5 gghh2015

尚未进行身份认证

暂无相关简介

等级
TA的排名 3w+

ApplicationContextAware使用理解

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

2020-03-02 10:02:37

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

今天遇到一个问题,明明数据有更新,update_time字段却还停留在创建数据的时候。按常理来说这个字段应该是自动更新的才对。查了一下表结构,update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP发现update_time字段的类型是datetime由此牵扯出两个问题,(1)timestamp与datetime的区别;(2)CURRE...

2019-12-16 14:11:31

一文弄懂Nginx最核心的配置

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

2019-11-15 11:34:32

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

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

2019-11-08 15:34:34

动态改变日志级别

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

2019-11-06 18:42:42

值判断的性能比较

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

2019-11-06 12:53:02

logback实践总结

logback的日志滚动策略使用总结:1、如果日志打印的多的话,很容易占满磁盘,引起宕机。所以要配置日志滚动策略rollingPolicy,设置最大文件容量,超过最大值,再下一次产生新文件的时候,自动清空最早的文件。2、假设某logger对应路径的日志每天有3G,可以分配给该logger的最大空间是20G,可以使用rollingPolicy的TimeBasedRollingPolicy策略,每周生成一个文件,当第3周结束,日志大小为21G,超过最大限制,会自动删除第1周的文件,再创建第4周的日志文件。

2019-11-05 17:29:23

使用maven Profile实现多环境构建

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

2019-10-29 20:21:47

Nginx配置upstream实现负载均衡

转载:https://www.cnblogs.com/wzjhoutai/p/6932007.html1、在http节点下,加入upstream节点。upstream linuxidc {server 10.0.6.108:7080;server 10.0.0.85:8980;}2、将server节点下的location节点中的proxy_pass配置为:http:// + upstr...

2019-10-28 14:50:47

并发中锁的分类

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

2019-08-09 09:08:57

volatile和synchronized

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

2019-08-07 09:34:28

ReentrantLock源码分析

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

2019-08-06 00:17:46

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

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

2019-07-24 09:12:47

Iterator死循环

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

2019-07-17 21:44:31

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

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

2019-07-16 22:04:23

并发容器1 vs 同步容器

并发容器:CopyOnWrite系列、 Concurrent系列、 BlockingQueue系列特点:每个并发容器的设计都不一样,根据具体场景设计,尽量避免使用锁。 CopyOnWriteArrayList内部持有一个ReentrantLock lock = new ReentrantLock(),读写分离,写时复制出一个新的数组,完成插入、修改或者移除操作后将新数组赋值给array。只是在增删改上加锁,但是读不加锁,CopyOnWriteArrayList支持读多写少的并发情况。

2019-07-16 08:59:15

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

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

2019-07-13 19:34:34

Java分布式锁看这篇就够了

原文出自:https://www.cnblogs.com/seesun2012/p/9214653.html https://blog.csdn.net/seesun2012### 什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在...

2019-07-13 18:40:30

SQL中# 与$ 的区别

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

2019-07-11 17:55:35

Elasticsearch 如何做映射mapping

转自:https://blog.csdn.net/zhousenshan/article/details/82928827 1、什么是映射    映射:创建索引的时候,可以预先定义字段的类型以及相关属性(比如说让某字段是否存储、用那种分析器、重要级别)Elasticsearch可定义...

2019-07-09 17:30:01

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。