自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring Boot实现自定义注解

在Spring Boot项目中可以使用AOP实现自定义注解,从而实现统一、侵入性小的自定义功能。实现自定义注解的过程也比较简单,只需要3步,下面实现一个统一打印日志的自定义注解:1. 引入AOP依赖在pom文件中引入AOP的依赖:<dependency> <groupId>org.springframework.boot</groupId&g...

2019-07-15 16:45:00 233

转载 JDK8字符串拼接的正确姿势

1. 对列表中的元素进行拼接以前,对一个列表中的字符串进行拼接时,常见的代码如示例1所示:代码示例1 List<String> ids = ImmutableList.of("1", "2", "3"); StringBuilder sb = new StringBuilder(); for (String id : ids...

2019-03-22 21:27:00 1134

转载 MySQL中条件放在where后面与放在on后面的区别

假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下:address表:test_on_position表:1. left join条件在where后面SELECT *FROM test_on_positionLEFT JOIN address ON...

2018-08-24 19:42:00 868

转载 Guava的RateLimiter在单机限流中的正确用法

错误使用在实现限流时,网上的各种文章基本都会提到Guava的RateLimiter,用于实现单机的限流,并给出类似的代码:public void method() { RateLimiter rateLimiter = RateLimiter.create(10); if(rateLimiter.tryAcquire()){ // do busines...

2018-07-03 18:35:00 752

转载 CAP定理与BASE理论

1. CAP定理C:Consistency,一致性A:Availability,可用性P:Partition tolerance,分区容错性CAP定理,指的是在一个分布式系统中,一致性、可用性、分区容错性,三者不可得兼。2. CAP详解2.1 一致性(C)指所有节点访问同一份最新的数据副本。通俗理解就是,在分布式系统中,所有的数据副本,在同一时刻值相同。2.2 可用性...

2018-06-27 13:41:00 145

转载 Java循环中try...finally...遇到continue

一段很简单的代码,先自己在大脑中给出结果:for (int i = 0; i < 5; i++) { System.out.println("enter: i=" + i); try { if (i % 2 == 0) continue; } finally { System.out.println(...

2018-06-15 17:43:00 1183

转载 形象地理解Cookie和Session

Cookie和Session的形象理解通过实际生活中的银行卡来理解Cookie和Session间的关系:Cookie相当于银行卡Session相当于银行账户结合到银行存钱和取钱的过程来理解:存钱过程1. 兴高采烈地到银行柜台,把要存的钱交给银行工作人员;2. 银行工作人员把钱存好后,给你一张银行卡。取钱过程1. 需要用钱了,找到最近的ATM机,插入银行卡,输入密码;...

2018-05-17 17:07:00 217

转载 MySQL在Read Uncommitted级别下写操作加X锁

很多文章认为MySQL在读未提交(Read Uncommitted)的隔离级别下,写操作是不加锁的,然而实际上并不是,在RU级别下,写操作加有X锁。实践出真知以前,我也认为RU隔离级别下,写操作不会加锁。偶然间,看到一篇优质的文章《查看Mysql正在执行的事务、锁、等待》,文章介绍了查看锁的语句:select * from information_schema.innodb_loc...

2018-05-16 14:40:00 431

转载 分布式系统敏感操作的并发处理(并发锁)

在实际工作中经常遇到对账户的操作(账户充值和账户消费),处理的逻辑如下:// 1 查询账户当前的金额// 2 根据操作,计算操作后的金额// 3 更新账户的金额然而,在实际中经常会有并发操作的问题,下面通过在数据中执行SQL的方式,模拟下不做并发处理的情况:数据库是MySQL,隔离级别采用默认的可重复读,表为t_money,只有两列:id、money,只有一条记录id=1, m...

2018-04-19 14:40:00 135

转载 同步工具:CountDownLatch、CyclicBarrier和Semaphore

1. CountDownLatch1.1 功能及使用场景一个同步工具,使得一个或多个线程等待一组线程执行完成后再执行。使用场景:等待一些前置任务执行完成后,再执行特定的功能。比如,系统启动时,各种配置生效后,才能运行提供服务。1.2 代码实例public class CountDownLatchTest { public static void main(String...

2018-04-13 11:43:00 62

转载 ThreadLocal的使用场景及实现原理

1. 什么是ThreadLocal?线程局部变量(通常,ThreadLocal变量是private static修饰的,此时ThreadLocal变量相当于成为了线程内部的全局变量)2. 使用场景变量在线程内部共享,线程间无关再具体点,可以分为两类:单例的对象中static属性,线程内共享,线程间无关;工具类属性,线程内共享,线程间无关。为什么这么说呢?下面看4个问题:...

2018-04-11 16:40:00 734

转载 Java对象与Map间相互转换

将Java对象转为一个Map,以及将map转为对应Java对象,代码如下:public class BeanMapUtil { private static ConcurrentHashMap<String, Map<String, String>> beanFieldCache = new ConcurrentHashMap<>();...

2018-04-08 15:19:00 98

转载 Java线程池停止空闲线程是否有规则呢?

Java线程池中线程的数量超过核心线程的数量,且所有线程空闲,空闲时间超过keepAliveTime,会停止超过核心线程数量的线程,那么会保留哪些线程呢?是不是有规则呢?测试代码: ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 5, 3, TimeUnit.SECONDS, new ArrayBlockin...

2018-03-27 15:27:00 384

转载 个性化推荐算法需要有“监督”

现如今,各大巨头网站纷纷加入了个性化推荐的技术,例如购物网站会提示“看了这些商品的人又看了”,视频网站会在个人首页向你推荐视频,Feed流网站向你推荐“可能感兴趣的新闻”......在这个“大数据”的时代,积累了大量用户行为数据的网站,根据用户的行为数据训练推荐模型(有的个性化推荐算大甚至不需要大量的用户行为,而是对大量的事物进行建模),建立用户的个人画像,向用户推荐其可能感兴趣的事物。...

2017-10-23 21:59:00 211

转载 Guava的SetMultimap

在工作中,我们会经常用到如下类似的结构Map<String, Set<Stirng>> map = new HashMap<Stirng, Set<String>>();使用起来比较复杂,Guava同样提供了一个类似的接口:SetMultimap,可是从百度上基本找不到该接口的具体实现类,最后还是给Google一下,简单的使用代码:i...

2017-10-19 19:02:00 150

转载 Java对中文进行排序

对中文进行排序,同样是得定义一个Comparator,下面上代码:import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class OrderTest ...

2017-10-18 18:11:00 640

转载 Java获取当前运行方法所在的类和方法名

很简单,直接看代码: public void showClassAndMethod() { System.out.println(this.getClass().getSimpleName() + ":" + new Exception().getStackTrace()[0].getMethodName()); }转...

2017-09-08 15:49:00 509

转载 MySQL查询where条件的顺序对查询效率的影响

看到有资料说,where条件的顺序会影响查询的效率,根据的逻辑是:where条件的运行是从右到左的,将选择性强的条件放到最右边,可以先过滤掉大部分的数据(而选择性不强的条件过滤后的结果集仍然很大),在根据其它条件过滤时,需要比较的数据量就少,提高查询的效率。当我看到这个逻辑时,自我认为不是太合理,数据库引擎在执行SQL语句时,都是要经过查询优化器的,查询优化器会将SQL进行优化,...

2017-09-07 13:39:00 761

转载 List元素删除不会导致越界但有问题的写法

今天在论坛里看到一段请教list删除的问题,下面先看代码: public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(5); list.add(1); list.add(2); li...

2017-09-05 09:29:00 562

转载 Spring中Bean的生命周期

bean的生命周期一篇比较好的结合代码介绍bean的生命周期的博文《一些常用的Spring Bean扩展接口》转载于:https://www.cnblogs.com/acode/p/7448489.html

2017-08-29 15:32:00 86

转载 Java反射的用法

Class类在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。反射Java的反射主要就是使用class对象生成对应类的实例、调用类的方法等对操作。示例代码:Car.javapublic class Car { private String ...

2017-08-24 09:26:00 108

转载 JavaScript的setTimeout()和setInterval()

1. setTimeout()方法作用:在制定的毫秒数后调用函数或计算表达式语法:setTimeout(code,millisec)实例:function timedMsg(){ var t=setTimeout("alert('5 seconds!')",5000)}...<input type="button" value="Display time...

2017-08-07 16:49:00 69

转载 Java的Bean

Bean的定义遵循Sun的Java Bean规范编写的特殊类Java Bean的规范类的访问控制权限是public类提供有一个无参的构造函数类的属性的访问控制权限是private,通过setXXX()方法和getXXX()方法访问属性可序列化,即实现接口java.io.SerializableBean的目的实现代码的重用,一个bean就是可重用的软件组件。参考资料...

2017-07-20 15:56:00 75

转载 Java的checked exception与unchecked exception

在Java中exception分为checked exception和unchecked异常,两者有什么区别呢?从表象来看,checked异常就是需要在代码中try ... catch ...的异常,编译器在编译代码时会进行校验,如果没有对这些异常进行捕捉,就会编译出错。(本人理解:checked异常就是可以预料到会出现异常,为了防止真的出现异常,代码中必须显式地捕捉checked...

2017-07-20 10:53:00 148

转载 properties文件读取与写入

将peoperties文件的读取和写入封装成了一个工具类:import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException...

2017-07-14 13:11:00 146

转载 Java的StringBuIlder扩容机制

JDK 1.6中,扩容的源码是这样:void expandCapacity(int minimumCapacity) { int newCapacity = (value.length + 1) * 2; if (newCapacity < 0) { newCapacity = Integer.MAX_VALUE; ...

2017-07-10 16:35:00 600

转载 Java并发编程实战3-可见性与volatile关键字

1. 缓存一致性问题在计算机中,每条指令都是在CPU执行的,而CPU又不具备存储数据的功能,因此数据都是存储在主存(即内存)和外存(硬盘)中。但是,主存中数据的存取速度高于外存中数据的存取速度(这也就是为什么内存条的价格会高),于是计算机就将需要的数据先读取到主存中,计算机运算完成后再将数据写入到外存中。但是,CPU的计算能力太强了,CPU从主存中读取写入数据的速度还是太慢了,严重影...

2017-05-26 14:41:00 75

转载 Java并发编程实战2-线程安全

1. 定义一个类是线程安全的,是指在被多个线程访问时,类可以持续进行正确的行为。2. WHY我们想要的是线程安全的程序,为什么在线程安全的开始讲线程安全的类呢?编写线程安全的代码,本质上就是管理对状态的访问,而且通常是共享的、可变的状态。我们讨论的的线程安全性,看起来好像是关于代码的,但是我们真正要做的,是在不可控制的并发访问中保护数据。当多个线程访问一个类时,如果不用考虑这...

2017-05-26 14:40:00 65

转载 Java词频统计

public class WordCount { public static void main(String[] args) { String[] stopWords = { "", ",", "." }; List<String> stopWordList = Arrays.asList(stopWords); S...

2017-05-05 13:29:00 136

转载 Java中split的对象被特殊字符(.或|)分隔

在Java中,一个String对象被一些特殊字符分隔时,可以使用split()方法,生成一个String[],然后进行其他的操作,就像下面这样:String str = "a1_b1_c1";String[] strList = str.split("_");其实,split()的参数是一个正则表达式,当String对象是被正则表达式中的特殊字符分隔时,split()的参数就不能直...

2017-05-05 11:30:00 168

转载 Java代码中谁拿到了锁?

我们都知道当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。这些基础也许大家都知道,但是很多人还是搞不清哪个对象才是锁?如果你能正确回答以下问题,那么才算你彻底搞明白了哪个对象才是锁?静态同步方法问题如下代码是两个静态同步方法:Class A{public static synchronized void write(boolean b){ is...

2017-04-12 10:17:00 197

转载 临时表

临时表存储在tempdb中,是一个需要分配空间的实表(区别于视图,视图不需要分配空间,是一条预编译的SQL语句 )临时表有两种:本地临时表、全局临时表本地临时表与全局临时表的主要区别是:可见性、可用性本地临时表,仅对当前用户的连接可见;用户可以显式地删除,如果没有显式地删除,当用户从SQL Server实例断开连接时被删除。全局临时表,对任何用户可见;用户可以显式地删除,若...

2017-04-11 09:30:00 74

转载 Python动态规划求解最长递增子序列(LIS)

原始代码错误,移步博客查看O(N^2)及优化的O(N*logN)的实现:每天一道编程题——最长递增子序列转载于:https://www.cnblogs.com/acode/p/6636564.html

2017-03-28 19:53:00 624

转载 Java中LinkedList的fori和foreach效率比较

在《Java中ArrayList的fori和foreach效率比较》中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较。1. list的元素为自定义的对象自定义的Student类public class Student { private String name; private Integer age;...

2017-03-03 15:46:00 130

转载 Java中ArrayList的fori和foreach效率比较

1. list的元素为Integer【代码实例1】 public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); int maxNum = 1000000; for (int i = 0; ...

2017-03-03 15:34:00 427

转载 Python批量文件重命名

今天,得到一个里面都是图片的文件夹,但是图片都没有后缀,因此想用Pythton批量地为所有的文件加上".jpg"的后缀,代码如下:#-*- coding:utf-8 -*-#重命名文件import ospath = 'D:\pics'for file_path in os.listdir(path): if os.path.isfile(os.path.join(...

2017-03-02 12:43:00 78

转载 Java线程池(一):初识

1、什么是线程池?  简单粗暴的理解就是:装着一个或多个线程的容器,我们称这个容器为线程池。  在现实世界中,有着各种各样的“池”,例如游泳池、花池等等。那花池来说,里面种满了各种各样的鲜花,花池本身要做的就是提供一片空地,里面的鲜花是园丁来种植、浇水。不同于花池,线程池不仅仅需要提供一个可以装线程的容器,同时还要承担起管理容器里中线程的职责(例如,新建线程、使用线程等)。 ...

2017-02-10 16:01:00 49

转载 Java的clone():深复制与浅复制

Java中要想自定义类的对象可以被复制,自定义类就必须实现Cloneable中的clone()方法,如下: 1 public class Student implements Cloneable { 2 3 private String name; 4 5 private int age; 6 7 pr...

2017-01-19 15:40:00 95

转载 Java的序列化与反序列化(一):初识

Java提供了一种对象序列化的机制:一个对象可以被表示为一个字节序列,该字节序列包含对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。整个过程都是 Java 虚拟机(JVM)独立的,也就是说,在一个平台上序列化的对象可以...

2017-01-09 14:53:00 95

转载 iframe与父页面中JS执行顺序控制

同事遇到了一个问题:   父页面中有几个iframe,初衷是父页面的JS通过AJAX获取数据,然后用于初始化iframe页面,可以结果却是有的iframe页面却不能获得数据。【问题根源】  父页面在加载iframe的时候,也会执行JS代码,二者执行完成先后顺序并不可控,而iframe却要使用JS获取的数据,导致在iframe初始化时,没有得到数据,也就无法初始化iframe页...

2017-01-05 11:18:00 735

空空如也

空空如也

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

TA关注的人

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