Browsed by
日期:2020年3月13日

Java中如何锁文件

Java中如何锁文件

閱讀本文約花費: 8 (分鐘) Java中如何锁文件 1. 概览 当读写文件时,需要确保有适当的文件锁定机制,来保证基于并发I/O应用程序的数据完整性。 「本教程中, 我们将介绍使用 Java NIO 库实现这一点的各种方法。」 2. 文件锁简介 「一般来说,有两种锁」: 独占锁——也称为写锁共享锁——也称为读锁 简单地说,在写操作完成时,独占锁防止所有其他操作(包括读操作)。 相反,共享锁允许多个进程同时读取。读锁的目的是防止另一个进程获取写锁。通常,处于一致状态的文件确实应该被任何进程读取。 在下一节中,我们将看到Java如何处理这些类型的锁。 3. Java中的文件锁 Java NIO库支持在操作系统级别锁定文件。FileChannel 中的lock() 和*tryLock()*方法就是为了这个而存在。 我们可以通过 FileInputStream, FileOutputStream,RandomAccessFile 来获取FileChannel,三者均可通过 getChannel() 方法返回 FileChannel对象. 或者, 我们可以直接通过静态方法 open 来创建 FileChannel  : try (FileChannel chan…

Read More Read More

从架构师到唯品会中间件负责人,我对技术的那些思考

从架构师到唯品会中间件负责人,我对技术的那些思考

閱讀本文約花費: 13 (分鐘) 2018 年 ArchSummit 全球架构师峰会上,薛珂分享了唯品会基于 ElasticSearch 开发出自己的统一检索平台的话题,很受技术人员关注。2019 年 7 月,薛珂升任唯品会中间件团队负责人,统帅包括服务化、消息服务、数据访问中间件、检索平台、任务调度和数据管道服务等团队。从架构师到团队负责人,经过这一年的历练,在技术上有哪些沉淀,在团队管理上有哪些心得? InfoQ 就此采访了薛珂,希望向读者展示一个鲜活的技术人,除了技术,还有工作价值的思考。(薛珂也是 ArchSummit 全球架构师峰会 · 2020 深圳站“服务化架构”专题出品人) 1个人发展 从架构师一路走来,到目前唯品会中间件团队负责人,薛珂用更形象的“点线面”方式来描述个人在工作技能上的提升,以及在思考问题的方式方法上的变化。 “点” 初任架构师时,他最开始关注的是“点”,也就是某一个领域的具体问题点,比如解决数据访问层的标准化和治理问题,解决任务的调度和执行问题; “线” 到后来关注“线性”问题,比如整个服务化体系的共同协作问题,服务化体系要真正发挥作用,要在服务治理、配置管理、开发框架、测试框架、调用链治理和发布系统共同发力,形成有机的整体; “面” 再到后来站在面上思考问题,比如基础技术的发展趋势,基础技术趋势如何与公司业务发展趋势相契合,再进一步,关注公司当前…

Read More Read More

Dockerfile部署Nginx、Apache、Tomcat

Dockerfile部署Nginx、Apache、Tomcat

閱讀本文約花費: 1 (分鐘) nginx #安装nginx并用CMD设置默认启动命令 #默认初始镜像为centos:7 FROM centos:7 RUN yum install -y epel-release && yum install -y nginx CMD [“nginx”,”-g”,”daemon off;”] apache #安装http并用CMD设置默认启动命令 #默认初始镜像为centos:7 FROM centos:7 RUN yum install -y httpd CMD [“httpd”,”-D”,”FOREGROUND”] tomcat #安装jdk tomcat并启动 #默认初始镜像为centos:7 FROM centos:7 ADD ./apache-tomcat-9.0.12.tar.gz /root ADD ./jdk-8u181-linux-x64.tar.gz /root ENV JAVA_HOME /root/jdk1.8.0_181 ENV PATH $JAVA_HOME/bin:$PATH RUN echo JAVA_OPTS=”-Djava.security.egd=file:/dev/./urandom” >> /root/apache-tomcat-9.0.12/bin/catalina.sh ENTRYPOI…

Read More Read More

@FeignClient注解的深度交流

@FeignClient注解的深度交流

閱讀本文約花費: 8 (分鐘) 那天晚上和@FeignClient注解的深度交流 Feign 基本介绍 首先来个基本的普及,怕有些同学还没接触过 Spring Cloud。Feign 是 Netflix 开源的一个 REST 客户端,通过定义接口,使用注解的方式描述接口的信息,就可以发起接口调用。 GitHub 地址: https://github.com/OpenFeign/feign[1] 下面是 GitHub 主页上给的一个最基本的使用示列,示列中采用 Feign 调用 GitHub 的接口。 interface GitHub { @RequestLine(“GET /repos/{owner}/{repo}/contributors”) List contributors(@Param(“owner”) String owner, @Param(“repo”) String repo); @RequestLine(“POST /repos/{owner}/{repo}/issues”) void createIssue(Issue issue, @Param(“owner”) String owner, @Param(“repo”) String repo); } public static class Contributor { String login; int con…

Read More Read More