![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
开荒人
这个作者很懒,什么都没留下…
展开
-
Condition的使用,实现三个线程,轮流打印A,B,C,打印十次
import com.sun.org.apache.xml.internal.security.Init;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;// 写一个程序,实现打印完A,打印Bpublic class ReentryLockTest { public st.原创 2020-07-29 11:17:12 · 477 阅读 · 3 评论 -
Java学习升级的一些感悟
从事java开发6年左右,自己总结下一些必要的点,这个工作也好,学习也好,晋级也好首先程序员得不怕事,一个需求很可能就是之前没有接触的,尽量突破自我下,接下来再说,要有一份承担的勇气吧,很多时候这个勇气这个东西很重要,能帮你披荆斩棘,寻找自我的这个突破口,比较重要的再一个,就是要有全局思维观念,写程序尽量别冰山一角,只考虑一个功能实现,忽略在整个情景下的作用啊,这个很多人都能忽略的一个技能啊,比如实现一个功能啊,考虑下并发,可扩展性,伸缩性,尽量预支一下可能有的变化细耕技术啊,技术这个东西,宏观原创 2020-06-29 14:30:57 · 132 阅读 · 0 评论 -
经典的CAP原则
CAP也即:consistencec(consistence),一致性,就是说要么给你返回一个错误,要么就给你绝对正确的一个值,在这个分布式中,比如说,你这个数据库和es或者redis,比如数据库更新了一个值,其他组件的值也要同步更新,而且必须返回值这个正确的值,这个叫一致性A(avalible),可用性,什么意思呢,就是说你必须给客户端一个值,那不管这个值是对的还是错的,承诺客户端的一个...原创 2020-04-13 11:46:46 · 173 阅读 · 0 评论 -
Jvm一些思考
一、JVM Root可达性分析Root节点是Set集合,里面存储许多根节点元素,怎么去定义根节点呢4种情况:1、JVM虚拟机栈-(栈帧中的局部变量区,也为局部变量表)中的引用对象 如:void main () { call ();// 栈帧引用 }2、方法区中的类静态属性引用的对象 如:private static D...原创 2020-04-09 11:07:12 · 93 阅读 · 0 评论 -
BIO、NIO、AIO的总结
BIO blockingIONIOAIO 异步IO传统的这个input、output 都是属于 BIO范畴,阻塞等待NIO无需等待返回结果原创 2020-04-08 13:33:54 · 65 阅读 · 0 评论 -
spring Bean是线程安全的吗
spring bean是线程安全的吗?思路:1、spring bean的一个作用域,比如singleton,protopyte等在这个Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装处理实际上大部分时间Bean是无状态的(比如Dao) 所以说在某种程度上来说Bean其实是安全的但是如果Bean是有状态的 那就需要开发人员自己来进行线程安全的保证,最简单...原创 2020-04-02 12:35:59 · 365 阅读 · 0 评论 -
动态代理和cgLib代理的区别
1、动态代理和cgLib的代理区别动态代理是jdk实现,CgLib采用的是CGLIB库看下CgLib的demo:import org.springframework.cglib.proxy.Enhancer;import org.springframework.cglib.proxy.MethodInterceptor;import org.springframework.cgl...原创 2020-04-02 10:37:08 · 645 阅读 · 0 评论 -
demo 体验下 静态代理和动态代理
上代码:// 定义主体类接口,提供接口public interface IUser { String find(); void save(String value);}// 实体类public class UserImp implements IUser { @Override public void save(String value) { ...原创 2020-04-01 13:36:49 · 88 阅读 · 0 评论 -
spring 源码的基本结构
分为几个核心的:core层,包含beans,core,context,spEL,core层提供这个IOC控制反转,DI依赖注入,其中DI通过动态代理和反射技术来实现,其中代理分为这个,静态代理和动态代理,比如什么是静态代理,学员报个驾校,不是学员亲自来做这些,而是交给驾校来办理,比如说打印资料,报名费,等等,让客户端更加简单,高效,不需要亲自操作这个动态代理的一些使用场景:Spring...原创 2020-04-10 10:34:13 · 169 阅读 · 0 评论 -
volatile 非原子性证明demo
class MyData { volatile int num =0; public void addTo60() { num++; }}public class VoliatleCanSee { public static void main(String[] args) { MyData myDa...原创 2020-04-01 09:29:53 · 109 阅读 · 0 评论 -
redis的线程模型-定义篇
1)文件事件处理器redis基于reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器,file event handler。这个文件事件处理器,是单线程的,redis才叫做单线程的模型,采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理这个事件。如果被监听的socket准备好执行accept、read、write、cl...原创 2020-04-09 11:07:44 · 104 阅读 · 0 评论 -
ReentrantLock 可重入锁测试
import java.util.ArrayList;import java.util.List;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.ReentrantLock;public class ReentryLockTest { private static void test...原创 2020-03-14 18:10:23 · 119 阅读 · 0 评论 -
写一个线程池操作CallableFuture的demo,自定义线程池,有返回的线程调用
package com.dnaer.core.user.utils.executors;import java.util.concurrent.*;class FutureRunnable implements Callable<String> { @Override public String call() throws Exception { ...原创 2020-03-12 14:36:46 · 210 阅读 · 0 评论 -
用传统方式,Lock写一个生产者消费者模式demo
package com.dnaer.core.sale.saleinvitelog.util;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent...原创 2020-03-08 23:30:31 · 77 阅读 · 0 评论 -
使用BlockQueue,模仿写一个生成者和消费者demo
package com.dnaer.core.sale.saleinvitelog.util;import ch.qos.logback.core.util.TimeUtil;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util...原创 2020-03-08 15:54:25 · 112 阅读 · 0 评论 -
Java反射应用-遍历一个对象的属性和值
本文是Java反射的一个常见的案例,常见的情况是,给到一个对象,需要把对象的每个属性和值重新生成一个Map或者Array,这个时候就是要要到反射啦,不多说,上干货:public static ArrayList<NameValuePair> getObjNameAndValueList(Object obj) { try { if (obj == null...原创 2019-01-17 16:30:28 · 2755 阅读 · 2 评论