自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Stream的简单学习

java8中的流原理学习

2022-08-20 22:11:21 364 1

原创 ThreadPoolExecutor简单学习

前言在实际开发中很多人用过线程池,但是并不一定懂线程池。有如下几个问题:Q1:说线程的创建比较耗费资源,体现在哪儿?原因是什么?Q2:线程池中的线程是怎么保活的?Q3:同一个线程是怎么进行任务一个又一个的执行的?Thread的runnable你是拿不到的。Q4:对于线程池构造参数你能理解它们的意义吗?当一个个任务运行时,你可否知道它们去哪儿,它们什么时候会执行,会结束?它们发生异常之后是怎样的?在设置数量的时候设置多大是合适的?设置时间的时候设置多长?一个线程池,core=2,max=4,qu

2022-04-08 22:00:00 270

原创 记一次用maven构建时Could not resolve dependencies问题解决

最近在发布的时候遇到了一个问题,出现报错:提示就是Could not resolve dependencies。针对这个问题的博客的解决方法一大堆,大部分都是针对IDEA工具的,在此不细说。这里说的是在服务器上进行发布,你的IDEA用不了了吧!起初也是困扰了我半天,登录上仓库去看,发现依赖的jar存在着的,死活想不通原因,无赖添加了如下命令,mvn clean package -DskipTests -e -U -X一看,才发现是parent工程下载失败,原来是忘了打包parent。总结经验教

2022-03-16 14:31:09 1853

原创 MpmcArrayQueue学习

前言在netty的NioEventLoop中看到有用到MPSC队列,今天就来学习学习。mpscqueue是jcTools提供的工具,在学习它之前,先回顾一下队列。队列队列是一种FIFO的数据结构,使用队列存取数据元素时,数据元素只能从表的一端进入队列,另一端出队列。常见于线程池的等待排队,锁的等待排队。队列有两种实现方式(堆栈实现不讨论)顺序存储实现–>数组链式存储实现–>链表为了简便将Queue定义如下:public interface Queue<E> {

2021-10-31 00:30:00 1351

原创 ChannelHandlerMask学习

前言在netty中有一个类ChannelHandlerMask,通过这个类可以计算出executionMask值,然后通过传入的mask进行(ctx.executionMask & mask) == 0 ,来判断是否是当前handler,从而找出下一个执行的handler。这也是netty中事件传播原理中的重要一环。本文5795字,阅读并理解大约需要10分钟。天才忽略。正文首先需要知道的是executionMask在AbstractChannelHandlerContext中:

2021-10-17 17:28:44 322 2

原创 通过MyFastThreadLocal学习FastThreadLocal(三)

前言上一回说到FastThreadLocal中存在一个缓存行的事,这回咱们来聊聊一个问题。问题的引出现在有一个任务,FBI要求你去追踪一辆小汽车,你收集到数据后,你该怎么反馈给boss?你怎么把这个过程展示出来。其实就是一段代码的事。public static void main(String[] args) { Point point = new Point(); new Thread(() -> { int i = 0; while (i+

2021-10-02 17:44:30 113

原创 通过MyFastThreadLocal学习FastThreadLocal(二)

前言在上一篇文章中,我们写了一个MyFastThreadLocal,简单的学习了FastThreadLocal中的设计,但是它还有问题,功能还不完善。今天我们根据昨天学习的内容再进行改进。正文今天我们仿写的类NettyFastThreadLocalNettyInternalThreadLocalMapNettyFastThreadLocalThreadNettyFastThreadLocalRunnable首先看NettyFastThreadLocalRunnable类。它与我们上一版的

2021-09-20 18:14:48 97

原创 通过MyFastThreadLocal学习FastThreadLocal(一)

前言在Netty中有一个类叫FastThreadLocal,根据它的原理来写一个MyFastThreadLocal。涉及的类netty中的类FastThreadLocalInternalThreadLocalMapFastThreadLocalThreadFastThreadLocalRunnable仿写的类主要原理先说FastThreadLocalRunnable,它实现了Runnable接口,又有一个成员变量Runnable,对成员变量进行try{}finally{}。如:pub

2021-09-19 20:24:14 140

原创 The connection to the server localhost:8080 was refused - did you specify the right host or port?

记一次k8s报错:运行kubectl get pods提示The connection to the server localhost:8080 was refused - did you specify the right host or port?查看日志发现时kube-apiserver连不上。curl localhost:8080/api也失败命令查看systemctl status kube-apiserver发现kube-apiserver未起来,报code=exited, st

2020-11-17 17:29:54 1726

原创 记一次k8s处理问题No API client: no api servers specified

使用k8s工具进行kubelet get pods出现I1111 15:04:04.990022 14323 feature_gate.go:181] feature gates: map[]W1111 15:04:04.990085 14323 server.go:400] No API client: no api servers specifiedI1111 15:04:04.990292 14323 docker.go:356] Connecting to docker on un

2020-11-11 15:14:59 1569

原创 解决java.lang.IllegalArgumentException: Could not resolve placeholder xx.xx.addr 的问题,思路:一定是配置文件问题

今天启动SpringBoot遇到一个问题,提示java.lang.IllegalArgumentException: Could not resolve placeholder 'xx.xx.addr' in value "${xx.xx.addr}"看到这个报错以为是配置文件写的不对,就去查看bootstrap.yml文件。后来发现是IDEA的问题,在我更改工程之后,build的时候,IDEA会移除旧有的bootstrap.yml文件,重新房新的。问题就出在这儿,在target下没有新的文件。读

2020-06-08 17:47:08 4124

转载 Java线程阻塞的代价

Java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内存态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值,变量等,以便内核态调用结束后切换会用户态继续工作。1.如果高频进行线程的切换操作,将消耗许多C...

2019-10-29 15:36:13 315

原创 CountDownLatch的学习

闭锁,一个大门,满足一定的条件后开门(8点了开学校大门)。/** * 闭锁 */public class TestHarness {//创建一些线程,并发的执行给定的任务 //每一个工作线程要做的第一件事是等待开始门阀打开,这样做能确保 //所有线程都做好准备时,才开始工作。 //每个线程的最后一个工作是结束门阀减1,这样做使控制线程有效的等待, // 直...

2019-10-17 14:42:46 162

原创 Java并发之“只有当你的程序需要在独占访问中加锁时,ConcurrentHashMap才无法胜任”理解

Java并发5.2.1中有一句无法理解**只有当你的程序需要在独占访问中加锁时,ConcurrentHashMap才无法胜任**需要理解锁的分类,先码一下独占锁

2019-10-14 15:31:15 195

原创 Collections.copy(src, dest)的坑

private List<Audience> clone(List<Audience> objList) { List<Audience> list = new ArrayList<>(); Collections.copy(objList, list); return list; }上面这段代码的作用是对objList进行复制。...

2019-08-26 17:35:56 453

转载 为计算结果简历高效、可伸缩的高速缓存

高速缓存:复用已有的计算结果,目的缩短等待时间,提高吞吐量。代价是占用更多的内存。/** * Computable接口提供一个功能,输入一个A,计算返回一个V * @param <A> * @param <V> */public interface Computable<A,V> { V compute(A a)throws Interru...

2019-08-26 17:23:35 157

转载 this引用逸出

this引用逸出:某个对象在初始化的时候发布自己这个对象。即,当前对象在初始化完成之前,给其它线程提供了引用。若其它线程先跑,则可能报错。下面是《java并发编程实践》给出的实例:public class ThisEscape { public ThisEscape(EventSource source){ source.registerListner(new Even...

2019-06-25 17:15:34 241

转载 传递性与不具传递性

传递性:数学和逻辑学上定义:若 ,其中 为某种关系运算符。则: 表述:若x,y,z∈R,x关系到y,y关系到z,则x关系到z.称为具有传递性。e.g.:若a,b,c∈R,且a=b,b=c,则a=c,就称为有传递性。非传递性:我认识你,你认识他,我不一定认识他。...

2019-06-24 16:27:32 3910

转载 iBaits中#和$的区别

区别:# 会进行预编译和类型匹配$ 进行字符拼接有如下SQL:select name from student where id=1;用#进行处理select name from student where id=#{0}相当于PreparedStatement preparedStatement=conn.prepareStatement("select name from su...

2019-05-05 10:52:27 151

转载 eclipse代码中有错误,项目中却不显示红叉

解决办法https://blog.csdn.net/wangming520liwei/article/details/53115228

2019-04-28 16:48:15 1373

原创 STS新建Spring Starter Project的坑

在用STS新建一个Spring Boot的项目的时候会出现下面这种样子对,你没看错,没有jar包,不能写Java文件。怎么办?选中项目右键->maven->update project,勾选Force Update of Snapshots/Releases点击OK,等待刷新。刷新之后就OK了。如下图:发生这种事的原因:STS不同于Eclipse,Eclipse会自动...

2019-03-22 17:04:42 2729

转载 使用jasypt对springboot的datasource密码等敏感信息加密-安全

1.pom.xml需要添加依赖 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.14</version&gt...

2019-03-21 13:25:46 789

原创 Maven配置

1.下载http://maven.apache.org/download.cgi2.下载后解压到一个目录,如D:\maven3.配置环境变量4.配置D:\maven\apache-maven-3.3.9\bin5.over

2019-02-28 14:17:47 70

原创 Spring注解之@Profile和@ActiveProfiles

@Profile 注解:1.使用@Profile的原因在平时的开发中,通常开发一个开发库,测试一个测试库,生产一个生产库。我们将数据库信息写在一个配置文件中,在部署的时候我们将配置文件改成对应的配置文件,这样改来改去非常麻烦。在使用@Profile后,我们就可以定义3个配置文件dev、sit、pro其分别对应3个profile,在实际运行的时候只需给定一个参数,容器就会加载激活的配置文件,...

2019-02-27 14:38:25 15843

转载 设计模式之策略模式(Strategy Pattern)

策略模式是软件开发中较为常用的一种模式。简单的解释就是,对一组算法封装在同一个接口下,从而在使用的时候,不影响客户端的情况下,可以替换,实现不同功能。实例:Java中的TreeSet public TreeSet(Comparator&amp;lt;? super E&amp;gt; comparator) { this(new TreeMap&amp;lt;&amp;gt;(comparator))...

2019-01-07 11:00:55 101

转载 设计模式之单例模式

单例模式一个类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。这里只写3种单例模式1.双检锁/双重校验锁(DCL,即 double-checked locking)public class Singleton { private volatile static Singleton singleton;...

2019-01-04 15:09:08 94

原创 Java重写equals方法的错误——违反对称性

Java对重写equals方法有一些约定,其中一条就是要求对称性,即ab返回true,ba也要返回true。下面的例子就是重写所范的错误。代码:public final class CaseInsensitiveString { private final String s; public CaseInsensitiveString(String s) { t...

2018-12-20 15:09:36 940 1

原创 Java8 Optional

Optional学习,常用方法学习,注意Optional是用final修饰的。//Optional学习 //of方法,为一个非null的对象T创建一个Optional //通过Objects方法返回对象,为空则抛NullPointerException Optional&amp;lt;String&amp;gt; optional=Optional.of(&quot;zha...

2018-11-28 15:57:19 107

原创 Java8接口默认方法、静态方法

用处:1.落库 有个一个接口 Save 里面提供了insert()、update()、delete()、select()四种方法,现在想加入一个方法query(). Java8之前,就是所有的实现都要改,Java8之后你就可以写在Save这个接口里。*例子不是很准确,理解才是目的。代码:@FunctionalInterfacepublic interface PdfService { ...

2018-11-16 11:11:17 80

原创 Function接口之andThen

Function 是一个函数式接口,andThen它的一个默认方法,就是在Function1执行后执行Function2。代码: Function&amp;lt;Integer, Integer&amp;gt; first=x -&amp;gt;x*x; Function&amp;lt;Integer, Integer&amp;gt; after=y-&amp;gt;y*2; ...

2018-11-16 10:26:52 4282

转载 Java8之Function

函数式接口Function1.源码@FunctionalInterfacepublic interface Function&amp;lt;T, R&amp;gt; { /** * Applies this function to the given argument. * * @param t the function argument * @return...

2018-11-15 15:33:26 135

转载 去除eclipse自动生成的// TODO Auto-generated method stub

windows-&amp;amp;gt;preferences-&amp;amp;gt;Java-&amp;amp;gt;Code Style-&amp;amp;gt;Code templates-&amp;amp;gt;Code-&amp;amp;gt;Method Body-&amp;amp;gt;edit转载自:

2018-11-15 14:20:19 382 1

转载 Java 8 Lambda

一、入门1.一个参数方法 List&amp;amp;amp;amp;lt;Integer&amp;amp;amp;amp;gt; list=new ArrayList&amp;amp;amp;amp;lt;Integer&amp;amp;amp;amp;gt;(); list.add(1); list.add(2); list.forEach((i)-&amp;amp;amp;amp;gt;{

2018-11-12 16:29:10 125

转载 设计模式之桥接模式(Bridge Pattern)

设计模式之桥接模式(Bridge Pattern)## 标题1.用处将抽象部分与实现部分分离,使它们都可以独立的变化。2. UML3. 代码

2018-11-12 13:59:19 192

空空如也

空空如也

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

TA关注的人

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