如何实现服务器之间的协同功能呢? 通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力:同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度. 代理和反向代理 代理(正向代理,目标服务器不知道谁在访问) 位于客户端和目标服务器之间,起到一个中转的作用.其实就是客户端想访问目标服务器,但是因为某些原因不能够直接访问,则把请求和目标服务器发给代理服务器,代理服务器再去请求目标服务器,把返回的响应结果返回给客…
1.   引言 搞Java的弟兄们肯定都想要达到更高的境界,用更少的代码解决更多的问题,用更清晰的结构为可能的传承和维护做准备.想想当初自己摸着石头过河,也看过不少人介绍的学习路线,十多年走过来多少还是有些收获.现通过自身经历总结一篇文章,供弟兄们参考. 2.   用好正在用的框架 在已经加入的团队中,和大家协作使用团队已选好的框架.不管框架优劣与否,特点如何,选择了它必然有一定的道理.并且能够在业界经久流行的框架也一定有它的优秀之处. 使用框架第一步是熟悉,可能通过复制和修改前人的代码来实现新…
前段时间在发送短信的代码块上通过网上找的工具类基于Redis实现了分布式锁的功能 对应的链接https://www.cnblogs.com/c-h-y/p/9391602.html 周末想细细看一下. 之后郁闷的是为什么java自带的为什么在分布式的环境下就会失效.(都是自己的low逼见解) 想想:单机情况下,使用Syncronized或者lock实现锁机制,没啥问题,单进程多线程实现同步没毛病 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,…
转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关注一下我的个人专栏<Java 进阶集中营>,会给大家即时分享一个最新的java资讯,有优秀的java技术内容,也欢迎分享在我的专栏.** JAVA 进阶集中营​zhuanlan.zhihu.com 那么,话不多说,继续刚才的话题,如果面试官看你简历里写了MQ中间件的使用经验,很有可能会有如下问题:…
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数. 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间.分钟.秒和毫…
Java中的大小写字母相互转换(不利用Java自带的方法) 1.设计源码 /** * * @title:UpperAndLower.java * @Package:com.you.utils * @Description:<h3>一句话描述功能</h3> * @author:游海东 * @date:2015-3-25下午10:30:52 * @version V1.0 * */ package com.you.utils; /** * * 项目名称:SSH * 类名称:UpperA…
Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public static void main(String[] args) { // 继承thread类实现多线程 new Thread() { public void run() { for (int x = 0; x < 100; x++) { System.out.println(Thread.current…
Java自带RPC实现,RMI框架入门 首先RMI(Remote Method Invocation)是Java特有的一种RPC实现,它能够使部署在不同主机上的Java对象进行通信与方法调用,它是一种基于Java的远程方法调用技术. 让我们优先来实现一个RMI的RPC案例吧. 项目源码地址:RPC_Demo,记得是项目里面的comgithubrmi 1.首先我们需要为服务端创建一个接口方法,而且这个接口最好继承Remote package com.github.rmi.server; impor…
Java进阶4表达式中的陷阱 20131103 表达式是Java中最基本的组成单元,各种表达式是Java程序员最司空见惯的内容,Java中的表达式并不是十分的复杂,但是也有一些陷阱.例如当程序中使用算术表达式的时候,表达式的类型自动提升,复合赋值运算符所隐含的类型转换,给程序带来一些潜在的陷阱.还有就是JDK1.5之后支持泛型也会带来一些陷阱,因为之前的Java版本是不支持泛型的,为了兼容之前的版本,引入了原始类型的概念,而原始类型在泛型编程中存在着极大的陷阱. 1.字符串中的陷阱 JVM对于字…
在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可以获取与当前时间有关的各方面信息,例如获取小时,分钟等等,而且还可以格式化输出,包含的信息是比较丰富的.但是有些时候或许你并不需要获取那么多信息,你只需要关心它返回的毫秒数就行了,例如getTime().为了获取这个时间戳,很多人也喜欢使用new Date().getTime()去获取,咋一看没什么问题,但其实没这个必要.其实看一下Java的源码就知道了: public Date() { this(…