前言 传统socket编程中服务端一般为每一个客户端开启一个线程(一对一)。这样虽然可以使程序的结构简单明了并且方便对数据处理,但是这些都是建立在创建多个线程的基础上,也就是以牺牲线程为代价。一旦有大量数量了客户端连接服务端,我们的服务端需要开启很多线程这显然是不能被我们所接受的。那么为了解决这个问 ...
分类:
其他好文 时间:
2020-07-24 09:57:03
阅读次数:
95
概述 在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数。 序列化serialize() 序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象: class S{ public $test="pikachu"; } $s=new S( ...
分类:
Web程序 时间:
2020-07-24 09:22:53
阅读次数:
79
Linux是一套免费使用和自由传播的类Unix操作系统,是多用户、多任务、支持多线程和多CPU的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个出色的性能稳定的多用户网络操作系统。 现在会点Linux基本操作的人大有人在、多如牛毛,然而,真正把Linux运用到极致的少之又少,这就造成 ...
分类:
系统相关 时间:
2020-07-23 23:05:46
阅读次数:
116
现代CPU为了提升性能都会有自己的缓存结构,而多核CPU为了同时正常工作,引入了MESI,作为CPU缓存之间同步的协议。MESI虽然很好,但是不当的时候用也可能导致性能的退化。 到底怎么回事呢?一起来看看吧。 false-sharing的由来 为了提升处理速度,CPU引入了缓存的概念,我们先看一张C ...
分类:
其他好文 时间:
2020-07-23 16:11:03
阅读次数:
80
QThread编程示例 class MyThread: public QThread //创建线程类 { protected: void run() //线程入口函数 { for(int i=0; i<5; i++) { qDebug() << objectName() << ":" << i; s ...
分类:
编程语言 时间:
2020-07-23 09:21:43
阅读次数:
103
当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问 ...
分类:
编程语言 时间:
2020-07-23 01:47:26
阅读次数:
97
方法一 配置类 //redis配置类 @Configuration public class RedisConf extends CachingConfigurerSupport { /* 配置自定义RedisTemplate */ @Bean public RedisTemplate<String ...
分类:
编程语言 时间:
2020-07-22 20:59:54
阅读次数:
138
springboot集成redis序列化的问题 在springboot中RedisTemplate默认使用的是Java本地的序列化(JdkSerializationRedisSerializer)方式 public void afterPropertiesSet() { super.afterPro ...
分类:
编程语言 时间:
2020-07-22 20:56:29
阅读次数:
85
@Async注解的原理及使用 本文讲述@Async注解,在Spring体系中的应用。本文仅说明@Async注解的应用规则,对于原理,调用逻辑,源码分析,暂不介绍。对于异步方法调用,从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方 ...
分类:
编程语言 时间:
2020-07-22 20:51:52
阅读次数:
83
##Redis事务的概念 Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 简单来说就是:redis事务就是一次性、顺序性、排他性的执行一个队列中 ...
分类:
其他好文 时间:
2020-07-22 20:33:17
阅读次数:
69