几年前我曾经写过两篇关于 ThreadLocal 的文章,分别是ThreadLocal类之简单理解和ThreadLocal类之简单应用示例,不过限于当时的水平,有些问题并没有说的很明白,所以今天再写一篇文章,重新说说这个类。
我们首先看一个例子:
package cn.bridgeli.demo;
/**
* @author BridgeLi
* @date 2021/4/21 11:02
*/
public class User {
String name = "Denny";
}
然后我们有一个操[……]
Read more
1. BIO
我们先看一个 Java 例子:
package cn.bridgeli.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author bridgeli
*/
public class SocketBIO {[......]
Read more
每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“引用”。在 JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)4 种,这 4 种引用的强度依次减弱,今天这篇文章就简单介绍一下这四种类型,并简单说一下他们的使用场景。
1, 强引用(Strong Reference)
强引用类型,是我们最常讲的一个类型,我们先看一个例子:
pa[......]
Read more
前一段时间听马士兵老师讲课,讲到某公司的一个面试,两个线程,其中一个线程输出ABC,另一个线程输出123,如何控制两个线程交叉输出1A2B3C,由于本人多线程掌握的一直不是很好,所以听完这道题,个人感觉收获良多,这是一个学习笔记。这道题有多种解法,不过有些属于纯炫技,所以只记录常见的三种解法。首先看第一种
1. park 和 unpark
package cn.bridgeli.demo;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.concur[......]
Read more
博客有半年没更新了,不是我偷懒,而是之前服务器到期了,开博客这么多年,钱其实花了不少,但是没有一点收益,所以上了谷歌广告,如果文章对你稍稍有一点帮助,希望能花一秒钟帮忙点一下广告,谢谢。
今天这篇文章呢,不难,其实是解答我一直以来心里的一个疑问。是这样的,之前看五八技术委员会主席沈剑老师的公众号架构师之路的一篇文章:http 如何像 tcp 一样实时的收消息,里面其中的一个方案是用 http 短连接轮询的方式实现“伪长连接”。但是对于轮询,我们的第一反应肯定是有延时,但是标题不是说的是实时吗?当然我们可以把轮询的时长缩短一些,先不说这样大部分时间的轮询调用,可能都没消息返回,造成服务器资[……]
Read more
关于规则引擎,我们在工作中应该会经常遇到,例如我们对不同的用户给不同的折扣。前一段时间在网上闲逛,发现一个很简单的规则引擎,一下是学习笔记。
在使用之前,我们要先导入 jar 包:
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-rules-core</artifactId>
<version>3.3.0</version>[......]
Read more
在学习 volatile 关键字的时候,我们都知道他有两个作用:1. 内存可见性;2. 禁止指令重排序。但是我们一般都是说,那么怎么证明呢?请看下面这段代码:
package cn.bridgeli.demo;
/**
* @author BridgeLi
* @date 2020/7/4 10:27
*/
public class Disorder {
private static int x = 0;
private static int y = 0;
private static volatile int a = 0;[......]
Read more
昨天听马士兵教育张福刚讲公开课,里面讲解了布隆过滤器,今天无聊没事干,整理了一下笔记。关于布隆过滤器是什么东西,有什么应用场景就不做讨论了,网上有很多,大家可以自行了解,只记录实现:
1. pom 依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version&g[......]
Read more
今天不写博客了,水一篇玩玩。老祖宗说,工欲善其事,必先利其器。很多做开发的同学都喜欢 Mac,我也是,自从用了之后爱不释手,但是当帮助一些同学解决问题的时候,总是发现,有些同学的终端使用的是 Mac 自带的终端和 shell,特别难用,完全无法发挥 Mac 的威力,然后给他们推荐怎么配置一下更好用,但是发现很多同学都是,现在已经懒得一个一个同学的说了,所以今天我就写一篇文章,怎么配置更好用的终端和 shell,希望下次再遇到直接能甩给他这篇文章就行。
一. 终端,iterm2
很多同学首先使用的终端是原生终端,那个终端说实话太难用了,我都想不出来理由,这么好用的电脑,苹果是如何忍受[……]
Read more
一、JPA
1. 连表查询时数据长度正常,内容都是重复的,MySQL 数据库运行查询语句结果正常
先看写法:
package cn.bridgeli.demo.repository;
import cn.bridgeli.demo.entity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* @aut[......]
Read more
近期评论