Wesley13 Wesley13
3年前
J2Cache 和普通缓存框架有何不同,它解决了什么问题?
不少人看到J2Cache第一眼时,会认为这就是一个普普通通的缓存框架,和例如Ehcache、Caffeine、SpringCache之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!目前缓存的解决方案一般有两种:内存缓存(如Ehcache)——速度快,进程内可用集中式缓存(如Redis)——
Stella981 Stella981
3年前
JVM调优实战:G1中的to
最近刚刚将自己的一个应用从CMS升级到G1,在一天早上,刚刚到办公室坐下,就收到手机一阵报警,去查看了监控,发现机器的内存出现了一个90度的涨幅,如下图所示:!image.png(https://oscimg.oschina.net/oscnet/ae6bebe36fe95ba28b8ee7c4ac673c52a81.png)在查看GC日志后,发
Stella981 Stella981
3年前
Hadoop+Spark分布式集群环境搭建
  Hadoop是一个能够让用户轻松架构和使用的分布式计算平台,而Spark是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。下面使用在同一个局域网下的两台电脑搭建分布式计算的环境:  其中JDK、Hadoop、Spark都已经在两台电脑上安装好。  一台Ubuntu主机系统Master,IP地址假设为:192.168.1.101(i
Wesley13 Wesley13
3年前
Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是Java语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java语言包括了跨线程传达并发性约束的构造—— synchronized 和 volatile 。在简化与平台无关的并发类的开发的
Stella981 Stella981
3年前
Python(32bit)运行报错:MemoryError
由于最近使用的是32位系统,安装和运行Python各种问题有在网上搜这方面的问题,大多数回答是:python32bit最大只能使用2G内存,超过2G报错MemoryError,解决的办法是使用64bitpython。而我面临的情况是操作系统无法更换,只能自己去摸索解决办法了首先我查看了数据量是不小但是运行应该是没有问题的
Wesley13 Wesley13
3年前
IO 的底层实现问题
最近在看JAVANIO的相关知识,了解一下IO的底层实现原理。IO涉及到的底层的概念大致如下:1)缓冲区操作。2)内核空间与用户空间。3)虚拟内存。4)分页技术。一,虚拟存储器虚拟存储器是硬件异常(缺页异常)、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。虚拟存储器的
Stella981 Stella981
3年前
Docker运行时的监控
linux的容器依赖cgroups,cgroups不光追踪进程、还跟踪CPU、内存、块IO等使用信息,你可以访问这些度量信息,并且获得网络使用情况的度量信息,这些在纯粹的LXC上可以使用的同样也可以在docker上使用。cgroups通过一个虚假的操作系统暴露出来,在最近的linux发行版中,你可以在操作系统的/sys/fs/cgroup目录下发现这些。在
Stella981 Stella981
3年前
Linux 多线程编程
1.Linux“线程”进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的资源(如作为共享内存的全局变量)。Linux
Stella981 Stella981
3年前
Redis做LRU缓存
当Redis用作缓存时,通常可以让它在添加新数据时自动逐出旧数据。这种行为在开发人员社区中非常有名,因为它是流行的memcached系统的默认行为。LRU实际上只是支持的驱逐方法之一。本页介绍了Redismaxmemory指令的更一般主题,该指令用于将内存使用限制为固定数量,并且它还深入介绍了Redis使用的LRU算法,实际上是精确LRU的近似值。
Stella981 Stella981
3年前
PostgreSQL 动态更新 C 语言函数
PostgreSQL对于C语言编写的函数(包括其他与C语言兼容的语言,如C、Rust等),是动态装载的,用CREATEFUNCTION创建完函数后,并不会立即装载,而是有连接建立之后,客户端第一次调用时才会进行装载,而且是装入到会话进程的内存里面去了。这时候,就算我们把.so文件删除,如果会话之前已调过一次函数的话,客户端还是