目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定.程序启动的时候可以尝试看该端口是否已经被占用,如果占用则程序已经启动. 方案2:你可以在java程序中创建一个隐藏文件,程序退出的时候删除这个文件.这样在程序启动的时候,你判断是否存在这个文件,如果存在说明已经启动. import java.io.File; import java.io.IOExcepti…
通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的第三方jar目录,由wrapper统一加载,很方便.详细使用方法见“wrapper在unix下的使用”. apache daemon的安装与使用 1.运行环境: unix 64bit jre 1.6.x apache commons daemon 10.15,daemon较低的版本在安装上会有些差别…
怎么在一台电脑上同时启动多个tomcat? 应用场景: 一台电脑,需要同时部署多个tomcat,用于部署不同的系统 分布式系统,一个系统,同时需要开启多个tomcat,因为分布式系统可能会有多个war包,只用一个tomcat的话,可能配置的内存支持不了,所以需要打开多个tomcat分担负担.如图 同时开启多个tomcat,可能会出现的问题: 同时开启多个,如果不在系统变量新建CATALINA_BASE.CATALINA_HOME,系统的环境变量默认会取CATALINA_BASE.CATALINA…
方案1: 单进程程序可以用端口绑定.程序启动的时候可以尝试看该端口是否已经被占用,如果占用则程序已经启动. 方案2:你可以在java程序中创建一个隐藏文件,程序退出的时候删除这个文件.这样在程序启动的时候,你判断是否存在这个文件,如果存在说明已经启动. import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.channels.FileLock; /** *…
Redis中的多路复用模型 Redis6用到了多线程?那多线程应用在哪些地方,引入多线程后,又改如何保证线程安全性呢? 同时,如何在性能和线程安全性方面做好平衡? 关于Redis的单线程模型 在Redis6.0之前,我们一直说Redis是单线程,所以并不会存在线程安全问题,而这个单线程,实际上就是在做数据IO处理中,是用的主线程来串行执行,如图4-7所示. Redis基于Reactor模式设计开发了自己的一套高效事件处理模型,这个事件处理模型对应的就是Redis中的文件事件处理器,这个文件事件处…
1. Java程序运行原理:     Java 命令会启动Java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程.该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法.所以 main方法运行在主线程中.在此之前的所有程序都是单线程的. 2. 思考题:Jvm虚拟机的启动是单线程的还是多线程的? JVM启动至少启动了垃圾回收线程 和 主线程,所以是多线程的.…
有时候我们在开发的过程中难免会遇到需要在同一台电脑部署多个tomcat,且还要他们能够都单独同时启动不会对其他的tomcat造成影响 本文就简单记录一下,如何来实现这个骚操作 1. 下载tomcat的解压包以后解压,然后把解压之后的文件夹复制一份重命名为tomcat-2; 2. 创建系统变量  CATALINA_BASE2  和  CATALINA_HOME2  ; 变量值都是tomcat-2的路径地址: 至于为什么要新建这两个变量,原因是系统没有单独配置这两变量的时候,tomcat启动的时候都…
问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个SSH KEY 为个人账户生成SSH KEY: ssh-keygen -t rsa -C "your-self-email-address" -f /c/Users/Administrator/.ssh/id_rsa 为公司github账户生成SSH KEY: $ ssh-keygen -t…
前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset user.name #取消全局设置 git config --global --unset user.email #取消全局设置 git config -l #查看当前目录的git config 再分别去不同的项目目录中,设置这个目录中项目对应的账号. git config user.name "ne…