脚本内容 #!/bin/bash appname=$2 usage() { echo "Usage: sh operate.sh [start|stop|restart|status]" exit 1 } is_exist() { pid=`ps -ef | grep $appname | grep java | grep -v grep | awk '{print $2}' ` if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start() { is_exist if [ $? -eq "0" ]; then echo "${appname} is already running. pid=${pid}." else nohup java -jar $appname & fi } #停止方法 stop() { is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${appname} is not running" fi } #输出运行状态 sta.... Linux jar包脚本 Linux
使用单例模式 1.2.1. HttpClient thread safety HttpClient implementations are expected to be thread safe. It is recommended that the same instance of this class is reused for multiple request executions. 由官方文档可知,HttpClient 是线程安全的,建议使用同一实例。 因此使用单例模式创建,优化反复创建的开销。 设置 Pooling connection manager PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); // Increase max total connection to 200 cm.setMaxTotal(200); // Increase default max connection per route to 20 cm.setDefaultMaxPerR.... HttpClient 4.5 的一些优化 Java
阿里巴巴Java开发手册中有这样一条: 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这 样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 说明:Executors 返回的线程池对象的弊端如下: 1) FixedThreadPool 和 SingleThreadPool: 允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。 2) CachedThreadPool: 允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量的线程,从而导致 OOM。 因此,我们最好自己实现。 ThreadPoolExecutor 的实现 在 java.util.concurrent 包中,提供了 ThreadPoolExecutor 的实现。 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Blockin.... Java 线程池的使用 Java
流程 前端调用wx.login接口获取code,然后再调用wx.getUserInfo接口获取用户的信息。 调用服务器接口,将获取到的code,rawData,signature,encryptedData,iv发送到后端。 服务器通过code获取openid和session_key 数据签名校验 解密用户敏感数据获取用户信息 Java后端实现 数据签名校验 使用sha1加密rawDate+session_key,和signature进行比对 String sha1Hex = DigestUtils.sha1Hex(wxLogin.getRawData() + sessionKey); boolean signatureResult = sha1Hex.equals(wxLogin.getSignature()); 解密用户敏感数据获取用户信息 base64解码 Java 8 内置了 Base64 编码的编码器和解码器。 // 被加密的数据 byte[] dataByte = Base64.getDecoder().decode(encryptedData); // 加密秘钥.... Java获取小程序用户信息 小程序