- 博客(43)
- 资源 (2)
- 收藏
- 关注

原创 Java通过socket和DTU,RTU连接工业传感器通信
目录总体架构图工业名称解释思路整理结尾现在做DTU传感器监测数据一块,给大家分享如何通过socket技术连接到DTU,并能和DTU下面的传感器通信的,分享一下自己的心得和体会。总体架构图先来看下整体网络结构图。工业名称解释传感器:能够采集数据机器,电脑端通过下发指令通过DTU发给传感器,传感器通过DTU返回相应的数据给电脑端,比如雨量计能实时反馈雨量,这很好理解。RTU:远程传输单元,可以是一台plc(程序过程控制),通俗理解就是能够编程的还可以将数据
2021-10-13 20:51:52
2693
6

原创 Lamda(拉姆达)表达式演化过程
目录简介传统集合过滤演化1:接口策略模式演化2:匿名内部类演化3:lamda表达式总结简介HI!小伙伴们,好久没见了,4月份开始断更,中途有点事儿,今天开始更新了,整理一篇Lamda表达式演化过程,希望喜欢的一如既往的支持!传统集合过滤现在有2个需求:在一组学生集合中,1.找出年龄大于20学生;2.找出分数小于70的学生;下面让我们看看代码吧!/** * @author :jiaolian * @date :Creat...
2021-07-16 16:31:27
259
3

原创 CMS前世今生
目录垃圾回收器为什么要分区分代?单线程垃圾收集器:Serial+ Serial Old多线程垃圾收集器:PS+PO为啥蹦出来个CMS+ParNew介绍CMS阶段总结CMS一直是面试中的常考点,今天我们用通俗易懂的语言简单介绍下。垃圾回收器为什么要分区分代?如上图:JVM虚拟机将堆内存区域分代了,先生代是朝生夕死的区域,老年代是老不死的区域,不同的年代对象有不同特性,因此需要不同的垃圾收集器去处理。如下图,黑竖线左边的区域都是分代垃圾收集器,G1之后内存就不分代..
2021-04-01 22:57:56
1049

原创 ThreadLocal 慌不慌?
目录JVM引用ThreadLocal解析总结现在稍微大点的公司面试,可能会问到ThreadLocal源码实现,不过在介绍它之前,我们先介绍JVM中引用的概念。所谓这些概念就是我所说的基础了。引用强弱关系到内存垃圾回收时机,用好引用可以减轻内存压力。JVM引用一共分为4种,分别是强引用,软引用,弱引用和虚引用。JVM引用强引用:如上图:根引用list指向堆,一直向list添加512K的字节数组,程序几秒后会出现堆溢出,代码中list引用称为强引用。强引用内存一直不会被释放,.
2021-03-22 11:02:31
2196

原创 图解垃圾算法,No,捡垃圾算法
目录对象生与死引用计数法标记-清除法复制算法标记整理法总结对象生与死今天不是给大家介绍对象的,给大家介绍下垃圾,因为垃圾会霸占内存,需清理之,今天我们聊聊JVM用什么方式回收垃圾的!先上图吧,我们看看对象的生命周期。先解释几个名词:新生代:快速生长,存放年纪比较小的对象。 老生代:存放年纪比较大的对象。 Surviror:回收新生代内存后容纳其余存活的对象,分为From区和to内存区。新生的对象都在eden区,当eden区满时容纳不了大的对象,会..
2021-03-18 16:36:25
2147
1

原创 叫练手把手教你读JVM之GC信息
目录案例GC详细分析总结案例众所周知,GC主要回收的是堆内存,堆内存中包含年轻代和老年代,年轻代分为Eden和Surivor,如下图所示。我们用案例分析下堆的GC信息【版本:HotSpot JDK1.8】。/** * @author :jiaolian * @date :Created in 2021-03-15 15:02 * @description:新生代内存测试 * @modified By: * 公众号:叫练 */public class NewG.
2021-03-15 20:48:30
3076
1

原创 原来我还有网络天赋
目录问题思考分享问题如下图,之前公司有10多台服务器,都设置成了静态IP,因为现在更换成了类似IP为192.168.1.X 的1网段,看着下面的服务器,修改IP简单,但想想服务器里面还有许多配置需要随着IP一起修改加测试,想想头大还是算了。咋办?也不能耽误大家工作太久啊,于是在原有的路由器上增加虚拟网段(60段),分配IP来减轻原来服务器修改IP工作!公司没有网络管理员,于是我硬着头发干了!说实话,没有抱怨,我是朝学习态度去的。思考梳理下公司网络拓扑...
2021-03-12 22:22:37
4041

原创 最简单的JVM内存结构图
目录JVM内存结构图方法区堆栈程序计数器本地方法栈直接内存内存分配性能优化-逃逸分析总结JVM内存结构图大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样,案例先行,方便大家理解记忆。/** * @author :jiaolian * @date :Created in 2021-03-10 21:28 * @description:helloworld测试jvm内存区域 * @modified By.
2021-03-11 20:48:28
4455

原创 Semaphore实战
目录简介实战实现原理总结简介Semaphore信号量计数器。和CountDownLatch,CyclicBarrier类似,是多线程协作的工具类,相对于join,wait,notify方法使用起来简单高效。下面我们主要看看它的用法吧!实战限流。限制线程的并发数。比如在一个系统中同时只能保证5个用户同时在线。import java.util.concurrent.Semaphore;/** * @author :jiaolian * @date :C..
2021-03-04 16:52:21
6969
2

原创 ||运算你真的了解吗?
目录或运算介绍总结或运算介绍或运算:只要有一个条件为true,即为true。通过如上逻辑关系图,还有另外一层隐含的意思:如果A条件是true,B条件不执行!如果A条件是false,B条件要执行!下面我们来看一个案例:如果A条件是true,B条件不执行!/** * @author :jiaolian * @date :Created in 2021-03-02 11:32 * @description:或条件判断 * @modified By: ..
2021-03-03 20:56:19
7590
1

原创 图解CyclicBarrier运动员接力赛
目录图解游戏规则案例说明比较CountDownLatch总结图解游戏规则大家都知道运动员短跑接力赛,今天我们并不是讲接力赛,我们讲“接力协作赛”,需要我们重新定义下游戏规则:如下图所示现在有运动员A,B,先定义游戏规则:赛道目前是300米,每个运动员在跑完第一个100米时,需要等待其他运动员跑完第一个100米,比如运动员A先跑完100米,而此时运动员B只跑了95米,那运动员A必须要等待运动员B跑完剩余的5米,然后再一起接着跑第2个100米,第三个100米,规则也和第1个.
2021-03-01 16:55:35
8094
3

原创 join为啥会阻塞主线程?
join使用上篇我们介绍了CountDownLatch,顺便说到了Thread中的join方法!import java.util.concurrent.TimeUnit;/** * @author :jiaolian * @date :Created in 2021-02-28 21:43 * @description:join测试 * @modified By: * 公众号:叫练 */public class JoinTest { public s.
2021-02-28 22:32:55
10034
5

原创 正月十五吃汤圆CountDownLatch
CountDownLatch实际应用今天是正月十五,给大家拜个晚年啦!元宵节是中国传统节日,吃汤圆不能少啊,今天我们统计下“叫练”吃汤圆时间,并用代码模拟下叫练吃汤圆!其中用到我们的CountDownLatch了!import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;/** * @author :jiaolian * @date :Created in 2021-02-26
2021-02-26 17:03:46
8577
1

原创 图解定时任务线程池
目录线程池概念定时任务延时原理scheduleWithFixedDelay和scheduleAtFixedRate区别FutureTask获取返回值Timer比较总结线程池概念我们上篇文章分析了ThreadPoolExecutor,如果要用一句话说明它的主要优势,就是线程置换。还有Executors工具类,极大的简化了研发人员工作。我用一个图重复描述下线程池概念。多生产-多消费模型。生产者将线程任务丢进线程池中,生产者就就结束了。 线程池控制消费者消..
2021-02-25 14:41:58
10077

原创 线程池面试必考
目录为什么要用线程池?你说下线程池核心参数?execute任务添加流程?饱和策略知道吗?你平时线程池怎么用的?源码中线程池是怎么复用线程的?总结你对Java线程池了解吗?你有用过线程池吗?那先说下线程池核心参数吧。。。对不起,我回去再看看吧。为了一丝体面,我们今天来整理几个面试中常考线程池面试问题吧!为什么要用线程池?线程复用。线程的重复使用是线程池设计的重点,如果需要开启1000个线程执行程序,系统会创建1000个线程,如果用线程池来执行1000个任务.
2021-02-23 10:25:08
8149
1

原创 2020回顾,2021学习目标
目录2020生活2020学习2021展望今天初九,也是是上班第一天,本来这篇文章准备过年时候打完的,结果在家玩的太开心了就给忘了,从腊月29回老家到现在一个多星期了,恍如昨日,感叹时光如梭。过年“吃”过年“玩”2020生活2020是特殊的一年,由于疫情原因被隔离在老家到4月初才到南京上班,上半年做了一个人生最大的一个决定,就是在南京买房,5月份买房到7月份银行下贷款这段时间可谓是心力交瘁,因为不懂,又担心征信上有记录贷款下不来,跑这跑那,和销售博弈,谈价,那段时.
2021-02-20 14:22:25
11207
5

原创 并发队列:PriorityBlockingQueue和DelayQueue案例使用
目录PriorityBlockingQueue使用DelayQueue使用总结PriorityBlockingQueue使用import java.util.concurrent.PriorityBlockingQueue;/** * @author :jiaolian * @date :Created in 2021-02-03 15:44 * @description:priorityBlockingQueue优先级队列测试 * @modified By: * 公众号
2021-02-05 10:57:43
319

原创 并发队列:ArrayBlockingQueue实际运用场景和原理
目录ArrayBlockingQueue实际应用场景ArrayBlockingQueue简化类图结构并发队列阻塞和非阻塞概念非阻塞阻塞ArrayBlockingQueue实现原理浅析完全非阻塞队列ConcurrentLinkedQueueList 多线程安全方案:LinkedBlockingQueue总结ArrayBlockingQueue实际应用场景之前在某公司做过一款情绪识别的系统,这套系统通过调用摄像头接口采集人脸信息,将采集的人脸信息做人脸识别和情绪.
2021-02-03 10:13:59
10026

原创 ReentrantReadWriteLock读写锁简单原理案例证明
目录ReentrantReadWriteLock存在原因?独占获取锁简单流程共享获取锁简单流程写锁降级总结ReentrantReadWriteLock存在原因?我们知道List的实现类ArrayList,LinkedList都是非线程安全的,Vector类通过用synchronized修饰方法保证了List的多线程非安全问题,但是有个缺点:读写同步,效率低下。于是就出现了CopyOnWriteArrayList,它通过写时复制数组实现了读写分离,提高了多线程对List读的效.
2021-01-31 20:08:08
7867

原创 面试官:你说说ReentrantLock和Synchronized区别
目录使用方式实现方式公平和非公平可重入锁可中断的条件队列总结大家好!又和大家见面了。为了避免面试尴尬,今天同比较通俗语言和大家聊下ReentrantLock和Synchronized区别!使用方式Synchronized可以修饰实例方法,静态方法,代码块。自动释放锁。ReentrantLock一般需要try catch finally语句,在try中获取锁,在finally释放锁。需要手动释放锁。实现方式Synchronized是重量级锁。重量..
2021-01-26 11:01:47
14935

原创 核酸检测:让我明白AQS原理
春节越来越近了,疫情也越来越严重,但挡不住叫练携一家老小回老家(湖北)团聚的冲动。响应国家要求去我们做核酸检测了。独占锁早上叫练带着一家三口来到了南京市第一医院做核酸检测,护士小姐姐站在医院门口拦着告诉我们人比较多,无论大人小孩,需要排队一个个等待医生采集唾液检测,OK,下面我们用代码+图看看我们一家三口是怎么排队的!import java.util.concurrent.locks.ReentrantReadWriteLock;/** * @author :jiaolian.
2021-01-23 20:59:09
13105
2

原创 CopyOnWriteArrayList 读写分离,弱一致性
目录为什么会有CopyOnWriteArrayList?什么是弱一致性fail-safe特性总结为什么会有CopyOnWriteArrayList?我们知道ArrayList和LinkedList实现的List都是非线程安全的,于是就有了Vector,它是基于ArrayList的线程安全集合,但Vector无论是add方法还是get方法都加上了synchronized修饰,当多线程读写List必须排队执行,很显然这样效率比较是低下的,那有没有一种办法让效率提升,让当读Li..
2021-01-18 17:45:37
4153
4

原创 Java单例7种测试实践
目录1.饿汉模式。 主动型太粗暴。2.懒汉模式 线程不安全3.懒汉加锁模式 线程还是不安全4.双重检测加锁 指令重排序5.双重检测加锁 volatile必要性6.静态内部类 被动型创建实例(推荐使用)7.静态代码块8.枚举总结单例:一个进程中只能存在唯一一个对象。1.饿汉模式。 主动型太粗暴。/** * @author :jiaolian * @date :Created in 2021-01-10 21:25 * @description:饿汉.
2021-01-12 09:49:52
1161

原创 Java中定时器Timer致命缺点(附学习方法)
目录简介案例1:定时器打印Hello World!线程不死问题?案例2:单线程问题定时器实际应用场景学习方法心得总结简介这篇文章我一直在纠结到底要不要写,不想写一来因为定时器用法比较简单,二来是面试中也不常问。后来还是决定写了主要是想把自己分析问题思路分享给大家,让大家在学习过程中能够参考,学习态度我相信大部分人没有问题,特别是正在看我博文的小伙伴那更不用说了!!给你们点个狂力赞。接下来就是学习方法了,我发现近期来咨询我问题的小伙伴学习姿势不对,所以我用Java中定时器T
2021-01-08 10:17:23
994

原创 排队打饭:公平锁和非公平锁(面试)
目录简介公平锁、非公平锁概念synchronized非公平锁ReentrantLock非公平锁ReentrantLock公平锁ReentrantLock底层原理总结简介有个小伙伴最近咨询我,前段时间他被面试官问了synchronized是公平锁还是非公平锁?当时就蒙圈了,最后面试结果可想而知,今天我们就用一个通俗的案例加上代码来说明公平锁和非公平锁。其实公平锁这个概念是JUC工具包才有的,比如ReentrantLock才有公平锁的概念,这篇文章我们结合生活中的实例用.
2021-01-03 21:04:55
14131
3

原创 母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列
目录简介一对一生产和消费:一只母鸡和叫练wait/notifyLock条件队列多对多生产和消费:2只母鸡和叫练/叫练媳妇wait/notifyAllLock条件队列Lock和synchronized比较总结简介多线程通信一直是高频面试考点,有些面试官可能要求现场手写生产者/消费者代码来考察多线程的功底,今天我们以实际生活中母鸡下蛋案例用代码剖析下实现过程。母鸡在鸡窝下蛋了,叫练从鸡窝里把鸡蛋拿出来这个过程,母鸡在鸡窝下蛋,是生产者,叫练捡出鸡蛋,叫练是消费者.
2020-12-31 09:47:50
873

原创 volatile,synchronized可见性,有序性,原子性代码证明(基础硬核)
目录0.简介1.可见性1.1 不可见性1.2 volatile可见性1.3 synchronized可见性2.原子性2.1 原子性2.2 volatile 非原子性2.3 synchronized 原子性3.有序性3.1 有序性3.2 volatile有序性3.3 synchronized有序性4.程序员学习方法心得5.总结0.简介前一篇文章《Synchronized用法原理和锁优化升级过程》从面试角度详细分析了synchronized关键
2020-12-22 17:03:39
7092

原创 Synchronized用法原理和锁优化升级过程(面试)
目录简介synchronized使用层面synchronized JVM层面synchronized的优化层面总结简介多线程一直是面试中的重点和难点,无论你现在处于啥级别段位,对synchronized关键字的学习避免不了,这是我的心得体会。下面咱们以面试的思维来对synchronized做一个系统的描述,如果有面试官问你,说说你对synchronized的理解?你可以从synchronized使用层面,synchronized的JVM层面,synchronized的优化层.
2020-12-21 10:37:09
7403
1

原创 Java中多线程安全问题实例分析
案例package com.duyang.thread.basic.basethread;/** * @author :jiaolian * @date :Created in 2020-12-16 14:02 * @description:线程不安全分析 * @modified By: * 公众号:叫练 */public class ThreadUnsafe { public static void main(String[] args) { Thread
2020-12-16 17:23:34
724

原创 Java中CAS原理分析(volatile和synchronized浅析)
CAS是什么?CAS英文解释是比较和交换,是cpu底层的源语,是解决共享变量原子性实现方案,它定义了三个变量,内存地址值对应V,期待值E和要修改的值U,如下图所示,这些变量都是在高速缓存中的,如果两个线程A,B分别通过cas方式同时修改共享变量,假设当A线程先获取时间片,如果发现V的值和E相等就将主内存值更新为U,如果不相等说明线程B在线程A更新之前已经成功更新过,线程A会失败重试,此时根据缓存一致性协议,线程A的本地副本会失效,需要从主内存再同步最新的变量到本地内存副本,在Java中通过调用UnSaf
2020-12-14 15:56:48
6249

原创 可见性是什么?(通俗易懂)
谈谈硬件架构模型先谈谈硬件是如何工作的,举个例子,你在window操作系统上需要下载一个游戏(20M),就需要使用cpu和内存了,在这个过程中cpu负责计算,比如计算下载进度,统计下载完成一共需要多少时间等,内存为cpu提供数据的,负责保存游戏的所有信息,比如游戏的大小(20M)数据。在这个过程中,cpu从内存上取游戏大小这个数据,然后cpu去计算下载进度,把计算出的进度结果再写到内存,最终呈现到用户页面,大概对cpu和内存应该有个大概的认识了吧!看上去下载游戏这个过程分工明确,没有问题,但实际上cpu
2020-12-10 10:02:42
6972
5

原创 indexOf原理,Java,javascript,python实现
简介最近做项目的时候,发现无论是前端还是后端,indexOf出现的概率都非常频繁,今天我们来看下他的实现原理吧!indexOf的含义:给定一个字符串去匹配另一个字符串的下标,如果匹配到,返回下标,如果匹配不到则返回-1,其实原理还是比较简单的,如果需要你实现,那么应该怎么做呢?原理现在给定匹配的字符串A,原始字符串B,比如匹配字符串A等于“叫练”,原始字符串B等于“边叫边练,我喜欢叫练”,你可能一眼就发现“叫练”是最后两个字符,我们以B做循环,一个一个单词去匹配,先找“叫”,找到...
2020-09-08 18:45:11
805

原创 我们一起学程序-五指棋
前言目录前言体验效果关键技术简介从无到有思路代码实现过程1.棋盘实现2.计算棋子是否获胜3.网络聊天室实现4.查看复盘实现遇到问题源码下载地址及注意事项总结小时候很喜欢玩电视上自带的积木游戏,那时候电子产品也不少,小学就认识了low和high两个单词,因此攒了零花钱搞到了高级版的游戏--小霸王学习机,说错了,是“游戏机”,特别是一放暑假,插个小霸王游戏机卡就能开始撸几把魂斗罗,坦克大战,比夏天吃根冰棍可香多了,那时候没有空调,不惧严寒酷暑的..
2020-09-03 17:31:20
1371

原创 高效读书,实用阅读指南
前言曾几何时,你是否为阅读书籍而困扰呢?那种眼睁睁看同龄人在学习进步,你却只能干着急的心情,你是否为此焦虑过?那种拿起一本书,却又看不下去,复杂的心情,你是否有过?那种读书三天晒网,二天打鱼的状态,你是否经历过?那种书读了一半,中途却不知道什么原因放弃了,你是否恨铁不成钢?那种读书效率特别低,一本书可能会读半个世纪,自己都怀疑人生,世上怎么有如此愚笨的人?对,你想的没错,我和你一样,眼看着隔壁的王老三马上迎娶我暗恋20年的女神,我暗自神伤了...不,我不能放弃,哪怕有一丝机会
2020-07-22 16:16:31
957
原创 展示大屏-24小时天气预报
3.开发工具:IntelliJ IDEA、Eclipse。2.UI界面:jQuery、HTML、CSS、 VUE。1.语言&框架:java、springboot。显示未来一周天气和24小时天气详情。1.调取免费或收费的API接口。3.提供API给前端。2.在页面内回显数据。
2024-03-28 10:01:51
782
4
原创 优雅的MVC思想
好了,今天我们就介绍到这里吧,有不明白的可以下面留言哦。我是叫练【公众号】,边叫边练。MVC模式_Jeffery Feng的博客-优快云博客MVC不属于23种设计模式之MVC框架_百度百科百度百科。
2022-09-16 16:23:06
278
原创 cookie+拦截器 实现不同角色对应不同的登录页
问题描述:由于业务需求,系统中有 A角色需要看A登录页、B角色需要看B登录页面。注意是同一个系统哦。现在问题来了,有同学可能会回答了,这样就太简单了,A角色直接访问A登录页,B角色直接访问B登录页就完事了,那么的地址肯定不是一样的,但是退出的时候怎么办,页面怎么跳转呢?我们下面分析问题!...
2022-07-29 15:57:28
659
原创 Mybaits plus 数据库映射java实体三种方式
数据库一般是用下划线进行设计字段,Java实体一般用驼峰法设计属性。这是不成文的规定。当数据库字段映射java实体会出现问题。下面分别是数据库字段和实体属性。
2022-07-20 16:58:39
1835
原创 基于Javaweb,Mysql生物信息数据管理系统
一、项目简介生物信息学是跨越和融合世界科技中两个最活跃领域的一-门新兴前沿学科,它使用计算和分析方法来解决生物学问题。生物信息平台则是一个集生物信息算法WEB集成,生物信息发布,和实验室管理等功能模块组成的综合性平台。本文将首先阐述构建基于J2EE的WEB应用系统的相关技术,然后从一个软件开发者的角度描述了如何应用上述技术设计和构建一个实际的WEB应用系统-生物信息平台。从系统的需求技术实现入手,进而介绍系统的总体功能。希望本文能对如何开发这种基于J2EE的生物信息平台有些借鉴作用。二、
2022-01-24 23:45:18
9317
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人