Ubuntu下使用Shadowsocks GFWList

现有的SS客户端在Linux上仅支持全局代理,本文以Ubuntu发行版为例,配置PAC自动代理,达到无缝切换的目的。 更新系统 $ sudo apt update $ sudo apt upgrade 安装Shadowsocks GUI 非ubuntu系统可以参考此链接自行编译 https://github.com/shadowsocks/shadowsocks-qt5 在ubuntu上安装相当简单,可直接使用PPA源(14.04 lts以上……

阅读全文

DingTalk::通讯录单向同步实现示例

最近项目中需要实现对接钉钉,并实现单向通讯录同步(钉钉服务器 -> 对接平台)本文通过一个简单的案例快速实现相关的DEMO (本文主要实现与钉钉对接)。 钉钉API:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0……

阅读全文

ContiPerf::优雅且方便的单元压力测试工具

ContiPerf 是一个轻量级的单元测试工具,基于JUnit 4二次开发,使用它基于注解的方式,快速在本地进行单元压测并提供详细的报告。 示例 新建 SpringBoot 工程 POM文件中的核心依赖如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.databene</groupId> <artifactId>contiperf</artifactId> <version>2.1.0</version> <scope>test</scope> </dependency> 测试接口以及实现 package com.wuwenze.contiperf.service; import java.util.List; public interface ContiperfExampleService { List<String> findAll(); } import com.wuwenze.contiperf.service.ContiperfExampleService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Random; import lombok.extern.slf4j.Slf4j; @Slf4j @Service public class ContiperfExampleServiceImpl implements ContiperfExampleService { private final Random RANDOM = new Random(); @Override public List<String>……

阅读全文

SpringMVC实现优雅的API响应结构设计

一个规范、易懂和优雅,以及结构清晰且易于理解的API响应结构,完全可以省去许多无意义的沟通和文档。 预览 操作成功: {"succeed": true,"timestamp": 1525582485337} 操作成功:返回数据 { "succeed": true, "result": { "users": [ {"id": 1, "name": "name1"}, {"id": 2, "name": "name2"} ] }, "timestamp": 1525582485337 } 操作失败: { "succeed": false, "error": { "error_code": 5002, "error_reason": "illegal_argument_error", "error_description": "The String argument[1] must have length; it must not be null or empty" }, "timestamp": 1525582485337 } 实现 定义 ResponseData @Data @Accessors(chain = true) public class ResponseData<R extends Object> implements Serializable { @JSONField(ordinal = 0)……

阅读全文

使用Consul代替Spring Cloud Eureka

随着Eureka 2.0 开源工作宣告停止,其实是可以考虑转战其他方式来实现注册中心了(如:Zookeeper、Redis、Consul等) 本文通过简单的描述,快速将Consul集成到SpringCloud环境中。 Consul环境搭建 官网:https://www.consul.io/ 官网……

阅读全文

开放Spring Cloud Eureka API

一般来说,Eureka 默认提供了一套 UI 界面,但在大多数情况下,由于 UI 风格问题并不适合直接嵌入到业务系统中使用; 本文通过扩展 Eureka 项目,实现相关的自定义接口,以便业务系统集成调用; 1. Eureka Project; <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> @EnableEurekaServer @SpringBootApplication(scanBasePackages = "com.fastjee") public class FastjeeEurekaApplication { public static void main(String[] args) { FastjeeApplication.run(FastjeeEurekaApplication.class, args); } } 2. RESTful API package com.fastjee.eureka.rest; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.netflix.appinfo.AmazonInfo; import com.netflix.appinfo.ApplicationInfoManager; import com.netflix.appinfo.DataCenterInfo; import com.netflix.appinfo.InstanceInfo; import com.netflix.config.ConfigurationManager; import com.netflix.config.DeploymentContext; import com.netflix.discovery.shared.Application; import com.netflix.discovery.shared.Pair; import com.netflix.eureka.EurekaServerContext; import……

阅读全文

使用Sharding-JDBC实现MySQL读写分离

读写分离,简单来说,就是将DML交给主数据库去执行,将更新结果同步至各个从数据库保持主从数据一致,DQL分发给从数据库去查询,从数据库只提供读取查询操作。读写分离特别适用于读多写少的场景下,通过分散读写到不同的数据库实例上来提高性能,缓解单机数据库的压力: Name Remark DQL 数据查询语言,比如……

阅读全文

关于Java代码的一些优化技巧

减少重复计算 for (int i = 0; i < list.size(); i++) { // do something; } for (int i = 0; int len = list.size(); i < len; i++) { // do something; } // 不要觉得麻烦, 尽量减少变量的重复计算, 这在大量数据集合遍历时非常有效. 不要创建大量的对象引用 for (; ;) { Object obj = new Object(); } Object obj = null; for (; ;) { obj = new Object(); } // 能省就省. 卫语句 void fun(Date date) { if (isWorkDay(date)) { syso(date + " is work day."); } else { if (isWorkTime(date)) { syso(date + " is……

阅读全文

Spring Cloud Config 高可用架构

何为高可用? 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%. 如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可……

阅读全文

解决VMware安装CentOS无法联网的问题

由于centos 6.5 minimal默认没有开启网卡,所以需要手动配置一下; 导致的问题 无法与主机通讯; 无法连接外网; 配置步骤 1) 确认虚拟机是否使用NAT模式: 2) 记录一下网关、网段信息:进入菜单(编辑-虚拟网络编辑器) 3) 选择VMnet8 (NAT模式),取消DHCP服务勾选,然后点击NAT……

阅读全文