自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 存储过程 遍历表 并保存数据 汇总数据方便查询

DROP PROCEDURE IF EXISTS FountTable;delimiter $$create procedure FountTable()begin declare TableName varchar(64); declare i int; DECLARE cur_FountTable CURSOR FOR sele...

2019-03-05 15:29:11 2015

原创 SpringBoot 集成Redis(redis使用lua脚本)

 pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht

2019-02-22 14:36:57 2257

原创 避免反射和序列化攻击的单例设计模式

package com.yf.test.demo;/** * 饿汉式,不支持懒加载 */public class MyClass1 { private MyClass1(){} private static MyClass1 instance=new MyClass1(); //饿汉式 public static MyClass1 getInstan...

2018-12-10 11:10:42 213

原创 Zookeeper分布式锁

package com.yf.test.demo;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.con...

2018-11-28 10:49:08 170

原创 通过ThreadPoolExecutor创建线程池

线程池不使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明: Executors 返回的线程池对象的弊端如下:FixedThreadPool 和 SingleThreadPool : 允许的请求队列长度为 Integer.MAX_VALUE ,可能会堆积大量的请求,从而导致 ...

2018-11-28 10:41:32 1479 1

原创 springboot集成mongodb

spring.data.mongodb.uri=mongodb://localhost:27017/test<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200...

2018-09-12 15:34:09 121

原创 注册加密用户密码

String salt = RandomStringUtils.randomAlphanumeric(20);user.setPassword(new Sha256Hash(user.getPassword(), salt).toHex());user.setSalt(salt);登陆时://密码错误if(!user.getPassword().equals(new Sha256...

2018-08-23 14:13:37 650

原创 java中的BigDecimal

public static void main(String[] args) { double d1=1.01; double d2=2.01; System.out.println(d1+d2); }结果:3.0199999999999996 不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一...

2018-08-23 09:59:06 125

原创 java项目小技巧

static{ Timer timer=new Timer(); timer.schedule(new TimerTask() { public void run() { task(); } },0, 60 * 1000); }写在类里面 每一分钟执行一次

2018-08-22 17:52:29 186

原创 条件队列

wait()、notify()和notifyAll()一般是跟synchronized配合一起使用,这些方法都是Object类提供的。当线程重wait()状态下被唤醒,wait()在被唤醒后还需要重新去获取锁,此时它重新请求锁时并没有具备任何特殊的优先级,要与任何其他尝试进入同步代码块的线程一起去竞争获取锁,如果获取锁失败的话,会继续停留在当前的wait()方法状态下。所以wait方法继续...

2018-07-25 17:09:41 374

原创 读写锁

ReadWriteLock也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个资源可以被多个线程同时读,或者被一个线程写,但是不能同时存在读和写线程。   基本规则:  读读不互斥 读写互斥 写写互斥    问题: 既然读读不互斥,为何还要加读锁   答:  如果只是读,是不需要加锁的,加锁本身就有性能上的损耗            如果读可以不是最新...

2018-07-24 18:03:48 3995 2

原创 Semaphore

Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有实际的许可证这个对象,Semaphore只是维持了一个可获得许可证的数量。 Semaphore经常用于限制获取某种资源的线程数量。下面举个例子,比如说操场上有5个...

2018-07-24 16:13:51 307

原创 死锁之加锁顺序

package thread.test;import java.math.BigDecimal;import java.util.Currency;public abstract class Amount implements Comparable<Amount>{ public abstract BigDecimal getBalance(); public abs...

2018-07-23 16:31:51 1397

原创 对动态代理的复习

package my.proxy;public interface UserService { public String getName(int id); public Integer getAge(int id); }package my.proxy;public class UserServiceImpl implements UserService { ...

2018-07-23 10:37:06 121

原创 自定义RPC框架的简单实现

package com.remote.service;/** * Created by 79782 on 2018/7/22. */public interface HelloService { public String sayHello(String name);}package com.remote.service;/** * Created by 797...

2018-07-22 18:51:14 431 1

原创 线程的中断interrupt,判断是否中断isInterrupt和interrupted的区别

api 含义 public void interrupt() 中断线程,中断并不是真正的中断线程,而只设置标志位(中断位)来通知用户 public boolean isInterrupt() 判断Thread 对象是否中断 public static boolean interrupted 判断 当前线程是否中断,并且清除当前中断状态   pa...

2018-07-21 10:54:47 771

原创 用多个线程计算和

package thread.test;import java.util.concurrent.Callable;import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorCompleti...

2018-07-20 14:22:13 547

原创 为计算结果建立高效可伸缩的高速缓存

package thread.test;public interface Computable<A,V> { V compute(A arg) throws InterruptedException;}package thread.test;import java.math.BigInteger;public class ExpensiveFunction i...

2018-07-19 20:43:06 122

原创 FutureTask

package thread.test;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import...

2018-07-19 15:51:52 102

原创 《java并发编程实战》读书笔记3

5.2并发容器        Java5.0通过提供几种并发的容器类来改进同步容器。同步容器通过对容器的所有状态进行串行访问,从而实现了它们的线程安全。这样做的代价是削弱了并发性,当多个线程共同竞争容器级的锁时,吞吐量会降低。    另一方面,并发容器是为多线程并发访问而设计的。    因为ConcurrentHashMap不能够在独占访问中被加锁,我们不能使用客户端加锁来创建新的原子操作...

2018-07-19 14:06:23 100

原创 缓存

打开一个网站,响应的时间不能超过三秒。高频率的相对稳定 读多写少的数据可以缓存。缓存加异步缓存: 将持久化的数据存放到内存副本中,用以提高并发,提高读写速度。原因:1.基于内存操作。2.空间换时间。3.降低瓶颈操作。4.减少对外依赖。层级                     常见产品                          缓存解决方案                  ...

2018-07-18 21:02:29 115

原创 《java并发编程实战》读书笔记2

3.共享变量    编写正确的并发程序的关键在于对共享的、可变的状态进行访问管理。3.1可见性    可见性是微妙的,这是因为可能发生错误的事情总是与直觉大相庭径。在一个单线程化的环境里,如果想一个变量先写入值,然后在没有写干涉的情况下读取这个变量,你希望能得到相同的返回值。这看起来是很自然的。但是当读和写发生在不同的线程中时,情况却根本不是这样。为了确保跨线程写入的内存可见性,你必须使用...

2018-07-18 13:54:47 93

原创 《java并发编程实战》读书笔记1

1.找到顺序和异步之间最好的平衡,通常是那些高效率人士的一个特点--对于程序来说也是如此。2.相同的关注点(资源利用,公平和方便)不仅促进了线程的发展,也促进了线程的发展。线程允许程序控制流的多重分支同时存在于一个进程。他们共享进程范围内的资源,比如内存和文件句柄,但是每一个线程有其自己的程序计数器、栈和本地变量。线程也为多处理器系统中并行地使用硬件提供了一个自然而然的分解;同一程序内的多...

2018-07-17 18:09:14 92

原创 CAS

 由于CAS操作属于乐观派,它总认为自己可以成功完成操作,当多个线程同时使用CAS操作一个变量时,只有一个会胜出,并成功更新,其余均会失败,但失败的线程并不会被挂起,仅是被告知失败,并且允许再次尝试,当然也允许失败的线程放弃操作,这点从图中也可以看出来。基于这样的原理,CAS操作即使没有锁,同样知道其他线程对共享资源操作影响,并执行相应的处理措施。同时从这点也可以看出,由于无锁操作中没有锁的存在...

2018-07-17 14:37:27 105

原创 如何才能做一名合格的程序员

上周末去面试,面试官问了我一个问题,工作之外的时间里如何证明自己是热爱技术的。这个问题当时我就不知道怎么回答,回到家之后我想了很久,在网上也看了别人的职业生涯,现在总结如下,希望自己铭记于心:1. Love Coding 热爱编程如果没有这种热爱,你就无法在日复一日的coding中保持专注,更不用说脱颖而出。任何成功背后,都有不为人知的苦闷和寂寞。2. Know yourself 贵有...

2018-07-17 10:16:56 724

原创 JDK1.7和JDK1.8的ConcurrentHashMap

从JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+红黑树,相对而言,总结如下思考1.JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)2.JDK1.8版本的数据结构变得更加简单,使...

2018-07-15 22:26:23 241

原创 hashMap,linkedHashMap以及synchronized和lock的一点总结

给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。存储位置 = f(关键字)这个函数f一般称为哈希函数。在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1)。哈希表的主干就是数组。当我们对某个元素进行哈...

2018-07-15 20:34:37 536

原创 多线程编程3线程生命周期图和多线程内存模型图

2018-07-11 11:36:39 102

原创 多线程编程2

package learn.threadpool;public class MemberService extends Thread { @Override public void run() { long l1=System.currentTimeMillis(); try { Thread.sleep(2000); ...

2018-07-10 17:18:26 93

原创 多线程编程1

package learn.test;public class TestThread { public static void main(String[] args) throws Exception { System.out.println("begin"); new Thread(new Runnable() { @Overr...

2018-07-10 15:30:31 75

原创 java基本数据类型和引用数据类型

基本数据类型:    2b:byte,boolean 1字节    cs:char,short 2字节    if:int,float 4字节    dl:double,long 8字节不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于对象类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。3种引用类型: ...

2018-07-09 09:47:40 87

原创 一致性hash算法

今天看了下一致性hash算法,先总结如下:一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环。整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到2^32-1,也就是说0点左侧的第一个点代表2^32-1, 0和2^32-1在零点中方向重合,我们把这个由2^32个点组成的圆环称为Hash环。下一步将各个服务器使用Hash进行一个哈希,具...

2018-07-08 21:22:24 89

原创 Dubbo-admin管理平台的安装

下载的dubbo没有admin改成下这个版本就好了解压后,根目录里存在dubbo-admin,进入 mvn package -Dmaven.test.skip=true 安装完后,生成target目录,进入这个目录,找到dubbo-admin-2.6.0这个目录,把这个目录全部copy到tomcat的目录webapps下的ROOT下面(删除tomcat webapps目录下ROOT原有内容)启动t...

2018-07-08 12:38:44 219

原创 过滤器,拦截器,监听器

一张图

2018-07-07 15:19:21 93

原创 存储过程中用游标

delimiter $create PROCEDURE phoneDeal()BEGIN    DECLARE  id varchar(64);   -- id    DECLARE  phone1  varchar(16); -- phone    DECLARE  password1  varchar(32); -- 密码    DECLARE  name1 varchar(64);   --...

2018-07-07 14:43:43 233

原创 ActiveMQ第二课 SSM整合ActiveMQ

1.web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation=&quot

2018-07-06 14:15:31 1154

原创 ActiveMQ第一课

windows下载:http://activemq.apache.org/activemq-580-release.html默认用户名密码为admin、adminpackage mq.demo;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.command.ActiveMQQueu...

2018-07-05 21:00:50 97

原创 一点总结

一.并发依据:1.响应时间。2.吞吐量。3.QPS.二.提高程序并发处理能力的方案(架构层面):(水平扩展,垂直拆分)1.提升单机的性能:增加CPU,增加内存,硬盘(解决IO读取效率)。2.提升单机架构性能三.水平扩展是高并发处理终极解决方案可通过Nginx的心态检查来保证Nginx的高可用性Nginx分发规则:轮询,权重,响应时间,ip-hash,visual ip...

2018-07-05 20:58:37 85

原创 拦截器HandlerInterceptorAdapter实现性能监控

package learn.interceptors;import org.apache.log4j.Logger;import org.springframework.core.NamedThreadLocal;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servl...

2018-07-05 14:52:09 1278

原创 CSS逻辑与样式分离

只与样式相关的代码用css写不用js<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title> 逻辑与样式分离</title><style type="text/css"> .cle

2018-07-04 23:09:14 486

空空如也

空空如也

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

TA关注的人

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