java
文章平均质量分 79
奋进的小伙子
这个作者很懒,什么都没留下…
展开
-
关于hashmap的深入-hashmap产生死锁的详解
前言几个月前,上线了一个版本。但是上线了几个小时之后 CPU 突然暴增至99%,在网上搜了一下,多半是因为出现死循环问题了。就用 jstack dump 了当时的线程快照,发现这次死循环问题的起源是 HashMap 的 get()方法。之后先是迅速重启了服务,这样可以让服务先运行一段时间。然后立即修复了这个 bug并提交到 SVN。这次事故的原因是因为开发时没有注意到 HashMap 是非线...转载 2020-03-12 11:45:38 · 952 阅读 · 0 评论 -
一致性Hash算法原理
一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。二、一致性Ha...转载 2020-02-26 22:49:15 · 608 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩区别及其解决方案
一、缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导...原创 2020-02-26 22:44:43 · 196 阅读 · 0 评论 -
java单例模式的实现方式
单例模式的六种实现方式,代码注释比较详细,不多说,请看详细代码一、饿汉模式/立即加载模式/** * Created by Xiao GuoJian on 2018/1/25. * 立即加载/饿汉模式 * 此模式是在类被加载的时候对象已经被创建,不管有没有使用,都创建了 * 此模式是线程安全的 */public class Singleton1 { private sta原创 2018-01-25 17:47:33 · 348 阅读 · 0 评论 -
多线程实例三----多生产者多消费者(模拟kfc多生产和多消费)
KFC中,同时有多个产者生产汉堡,也有多个消费者消费汉堡,当生产到100个剩余时,就暂停生产;当销售到0个时,就暂停销售。此例子就是简单的多生产和多消费问题,跟有些多生产多消费例子不同的是其他的基本上是生产一个汉堡就唤醒消费者消费,生成一个消费一个;而在本例子中生产者和消费者则互不影响,只是达到设置的极限条件之后才唤醒。本例子使用了三种实现方式,分别为简单多线程实现、用线程池实现、用jdk1.原创 2018-01-25 10:13:38 · 2441 阅读 · 0 评论 -
多线程实例一----三个窗口同时卖票
package com.shone.thread.ticket;/** * Created by Xiao GuoJian on 2018/1/24. * 三个窗口同时卖票 *//** * 票 */class Ticket { private int count = 1; public void sale(){ while (true) {原创 2018-01-25 09:54:32 · 6813 阅读 · 5 评论 -
多线程实例二----两个人同时存取钱
java 多线程简单实例二----两个人同一个账户取钱思路:两个线程,一个代表取钱的操作,一个代表存钱的操作,互相不影响,但是要保证存取的数据正确。代码如下:package com.shone.thread.getmoney;/** * Created by Xiao GuoJian on 2018/1/24. * 两个人用同一个账户在取钱 */class Bank{原创 2018-01-25 09:59:39 · 6688 阅读 · 0 评论 -
SpringMVC中使用Interceptor拦截器
SpringMVC中的Interceptor拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306那样子判断当前时间是否是购票时间。 一、定义Interceptor实现类 SpringMVC中的Interceptor拦截请求是通过HandlerInterceptor来实现的。在Spring转载 2016-03-21 16:20:17 · 371 阅读 · 0 评论 -
Linux unison+inotify 文件实时双向同步
一:Unison简介 Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison有文字界面和图形界面,这里只介绍如何在文字界面下使用. unison拥有其它一些同步工具或文件系统的相同特性,但也有自己的特点: 跨平台使用; 对内核和用户权限没有特别要求; unison是双向的,它能自动处理两分拷转载 2015-10-10 15:04:31 · 1889 阅读 · 0 评论 -
阿里云配置nginx多域名指向
我的阿里云默认在服务器的/alidata/server/nginx中;因为nginx中的conf文件夹中的nginx.conf文件配置默认指向的是vhosts文件夹下的所有*.conf文件都有效,所有只要复制default.conf文件,并且修改文件中的内容即可,具体内容如下: 1、到/alidata/server/nginx/conf/vhosts文件夹下 cd /alidata/原创 2015-07-15 22:18:45 · 2384 阅读 · 2 评论 -
初探nginx架构
初探nginx架构(100%)众所周知,nginx性能高,而nginx的高性能与其架构是分不开的。那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧。nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。我们也可以手 动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而转载 2015-07-15 22:21:31 · 750 阅读 · 0 评论 -
Mac终端中上传文件到Linux服务器
Mac将本地文件上传到服务器上scp -P 22 /Java/program.war root@123.456.789.987:/usr/server/tomcat7/webapps/上端口大写P 为参数,22 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。 /Java/program.war表示本地上准备上传文件的路径和文件名。root@123.456.789.987 表原创 2015-07-15 22:15:25 · 38084 阅读 · 0 评论