摘要: 比较redis、数据库、文件存token https://www.cnblogs.com/penglei-it/p/wx_yh.html 阅读全文
posted @ 2019-07-10 14:20 TangXinPing 阅读(227) 评论(0) 推荐(0)
摘要: 实现分布式锁的几种方式: 数据库锁:性能不好,效率低。 Redis分布式锁(setnx):setnx存入key如果存入成功返回1,如果key已经存在返回0,只要谁创建key成功,谁就能获取到锁。redis执行完操作的时候删除key释放锁,如果删除失败,就释放锁失败了。所以最好的办法是给key设置有效 阅读全文
posted @ 2019-07-10 14:19 TangXinPing 阅读(230) 评论(0) 推荐(0)
摘要: AutoConfig加载 自己写代码加载 xml加载 使用这三种方式都需要: 1.添加依赖 2.写配置信息 spring.redis.database=0 spring.redis.host=localhost spring.redis.port=6379 # 连接超时时间 单位 ms(毫秒) sp 阅读全文
posted @ 2019-07-10 14:12 TangXinPing 阅读(10531) 评论(1) 推荐(0)
摘要: 如果只需要整合redis的单机版,只需要在redis.conf中进行如下配置: @Configuration @PropertySource("classpath:config/redis.properties") public class RedisConfig { @Value("${redis 阅读全文
posted @ 2019-07-10 14:06 TangXinPing 阅读(419) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/plei_yue/article/details/7936237 需要的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter 阅读全文
posted @ 2019-07-10 13:59 TangXinPing 阅读(264) 评论(0) 推荐(0)
摘要: 1.String类型 用于在Redis中管理字符串的基本命令:(看了一半) 编号 命令 描述说明 1 SET key value 此命令设置指定键的值。 2 GET key 获取指定键的值。 3 GETRANGE key start end 截取指定部分的字符串。start可以从0开始。会包含在内, 阅读全文
posted @ 2019-07-10 13:48 TangXinPing 阅读(241) 评论(0) 推荐(0)
摘要: 1.Window和Linux系统下安装Redis: http://www.cnblogs.com/HoverM/p/9448699.html 2.Redis解压后目录: redis-server:redis服务器程序 redis-cli:Redis客户端程序,它是一个命令行操作工具。也可以使用tel 阅读全文
posted @ 2019-07-10 13:45 TangXinPing 阅读(133) 评论(0) 推荐(0)
摘要: https://www.cnblogs.com/shamo89/tag/redis/ 阅读全文
posted @ 2019-07-10 13:44 TangXinPing 阅读(90) 评论(0) 推荐(0)
摘要: 1.NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是SQL"的意思,泛指非关系型的数据库。强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS。 NoSQL产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能。 2.R 阅读全文
posted @ 2019-07-10 13:44 TangXinPing 阅读(156) 评论(0) 推荐(0)
摘要: 主要参考:https://www.cnblogs.com/zxf330301/p/6534643.html 阅读全文
posted @ 2019-07-10 12:01 TangXinPing 阅读(5554) 评论(0) 推荐(2)
摘要: https://www.cnblogs.com/geek6/p/3951677.html https://blog.csdn.net/zhangerqing/article/details/8194653 https://www.cnblogs.com/malihe/p/6891920.html j 阅读全文
posted @ 2019-07-10 11:58 TangXinPing 阅读(146) 评论(0) 推荐(0)
摘要: jdk8废除永久代迎来元空间。 永久带又叫Perm区,只存在于hotspot jvm中,并且只存在于jdk7和之前的版本中,jdk8中已经彻底移除了永久带,jdk8中引入了一个新的内存区域叫metaspace。 (1)并不是所有的jvm中都有永久带,ibm的j9,oracle的JRocket都没有永 阅读全文
posted @ 2019-07-10 11:55 TangXinPing 阅读(1399) 评论(0) 推荐(0)
摘要: 1.什么是JVM?3W1H 定义: jvm是一个虚构出来的计算机,是在实际的计算机上仿真模拟出各种计算机的功能来实现的。 有什么用: Java语言最重要的特点就是跨平台运行,Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,使用JVM就是为了支持与操作 阅读全文
posted @ 2019-07-10 11:54 TangXinPing 阅读(394) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/jjwwmlp456/article/details/72771849 阅读全文
posted @ 2019-07-10 11:50 TangXinPing 阅读(194) 评论(0) 推荐(0)
摘要: 摘自:https://www.cnblogs.com/wangchuang/p/5737188.html 任务和线程的区别: 1、任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。 2、任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务 阅读全文
posted @ 2019-07-10 11:49 TangXinPing 阅读(681) 评论(0) 推荐(0)
摘要: 死锁: 可以认为是两个线程或进程在请求对方占有的资源。 饿死:一个线程在无限地等待另外两个或多个线程相互传递使用并且用不会释放的资源。 出现以下四种情况会产生死锁: 1,相互排斥。一个线程或进程永远占有共享资源,比如,独占该资源。 2,循环等待。例如,进程A在等待进程B,进程B在等待进程C,而进程C 阅读全文
posted @ 2019-07-10 11:48 TangXinPing 阅读(4204) 评论(0) 推荐(0)
摘要: Callable和Runnable很类似,主要区别在于Callable能返回运行结果,能抛出异常。 执行Callable方式,需要Future的实现类的支持,用于接收运算结果。FutureTask是Future接口的实现类。 public class TestCallable { public st 阅读全文
posted @ 2019-07-10 11:47 TangXinPing 阅读(833) 评论(0) 推荐(0)
摘要: 其他理解: 不应该只把它当作一个传参工具,它本身是为线程安全和某些特定场景的问题而设计的。 诡异的ThreadLocal最难琢磨的是“作用域”,尤其是在代码设计之初非常乱的情况下,假设再添加很多ThreadLocal。系统就会逐渐变成神龙见首不见尾的情况。使用ThreadLocal,不要简单粗暴地多 阅读全文
posted @ 2019-07-10 11:46 TangXinPing 阅读(185) 评论(0) 推荐(0)
摘要: 是什么:等工作来了就工作 为什么:启动线程是很花费时间的工作,ThreadPool将重复使用线程,资源再利用也作为主题之一。 1.用此模式时还可以如何优化: 1.1承载量(capacity): 简单来说就是worker与request的数量要如何去平衡。 worker多了,浪费内存,worker少了 阅读全文
posted @ 2019-07-10 11:44 TangXinPing 阅读(261) 评论(0) 推荐(0)
摘要: 通过此练习了解了线程中run()方法没有参数如何传参。 可以看出程序使用了匿名内部类。 尝试一: 以为不就是把Helper类extendsThread每次创建一个它然后启动吗。 碰到瓶颈1: 线程中没有带参数的run方法(如果想要实现带参数的run方法:1、定义线程内变量2、在继承thread的时候 阅读全文
posted @ 2019-07-10 11:41 TangXinPing 阅读(164) 评论(0) 推荐(0)
摘要: 一般可以把独立运行的程序看作一个进程,进程之间是相互独立存在的,像qq音乐,谷歌浏览器一样他们都是独立存在的,而且互不影响。 进程想要执行任务必须依赖于线程,进程中的最小执行单位是线程,进程中至少有一个线程。 进程与线程的最大区别在于内存能否共享:进程的内存空间是各种独立的,线程是共享内存的。 第二 阅读全文
posted @ 2019-07-10 11:34 TangXinPing 阅读(120) 评论(0) 推荐(0)
摘要: 概述:对每个命令或请求分配一个线程,由这个线程执行工作。 不像是一个有实权的将军,而像是一个传递消息的太监。 when: 原理进一步解析: 利用了调用方法与启动线程两个操作,实现“传送异步消息”的操作。 示例: 程序运行结果: request传个话就走了,不会等待响应结果而直接退出。 两个很重要的时 阅读全文
posted @ 2019-07-10 11:33 TangXinPing 阅读(166) 评论(0) 推荐(0)
摘要: 假设abcd在读ef在写,a关锁的时候bcd可以读,ef在等待中,a关完锁之后,e去写,bcd读不了了,bcd和f都在等待中。 阅读全文
posted @ 2019-07-10 11:30 TangXinPing 阅读(129) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/tanga842428/article/details/52789801 http://www.cnblogs.com/gongchengshidemeng/p/9420096.html https://www.cnblogs.com/shan1393/p 阅读全文
posted @ 2019-07-10 11:30 TangXinPing 阅读(94) 评论(0) 推荐(0)
摘要: 线程被interrupt的情况。 Before/After pattern模式 注:execute()是被synchronized的。 我以为被syn的方法内部没有改变,代码执行逻辑也没有改变,就不会有问题。 然而: 这道题答案与try有关,进入了try就一定会有finally 因为能改变四个变量的 阅读全文
posted @ 2019-07-10 11:02 TangXinPing 阅读(209) 评论(0) 推荐(0)
摘要: 定义: 当线程“读取”实例的状态时,实例的状态不会改变,因此可以被多个线程读取。而当写入的时候,实例的状态会改变,其他线程不可以进行读取或写入。 道理上如何实现: 用一个锁,读取的时候要获取读取的锁。写入的时候,要获取写入的锁。 优点: 一般来说,进行共享互斥会使程序性能变差,但将写入的共享互斥与读 阅读全文
posted @ 2019-07-10 10:34 TangXinPing 阅读(203) 评论(0) 推荐(0)
摘要: —————————————————示例——————————————————————— 阅读全文
posted @ 2019-07-10 09:49 TangXinPing 阅读(186) 评论(0) 推荐(0)
摘要: Data类 SaverThread类 ChangerThread类 Main类 ———————————————————示例结束—————————————————— Balking Pattern的所有参与者(只有一个): 何时使用: 不需要刻意去执行的时候 不想等待警戒条件成立的时候 警戒条件只有第 阅读全文
posted @ 2019-07-10 09:26 TangXinPing 阅读(162) 评论(0) 推荐(0)