Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需求,可以灵活回收空闲线程,若无可回收则新建线程 newFixedThreadPool创建一个定长线程池,可以控制线程最大并发数,超过的线程会在队列中等待 ne
schedule和scheduleAtFixedRate方法都可以实现任务的延时和不延时执行且都会按顺序执行,因此不需要考虑非线程安全的情况。它们的主要区别只在于有没有追赶特性。其中,schedule方法不具有追赶特性,而scheduleAtFixedRate方法具有追赶特性。 首先验证schedu
前言 MVC、MVP、MVVM是当下Android开发中主要的项目架构,当开发一个App时,合理的软件架构有利于后期的维护。Android开发中我们可以选择的架构只有以上三种,三种架构各有优缺点,我们可以从中选择最合适我们的架构。 MVC MVC(Model-View-Controller)是最常
介绍 @AutoConfigureBefore和@AutoConfigureAfter是 spring-boot-autoconfigure 包下的注解 用途 (1)@AutoConfigureBefore(AAAA.class)或AutoConfigureBefore({AAAA.class,
最近在做一些缓存改造的场景,有如下一些经验总结: Ehcache支持持久化到本地磁盘,Guava不可以 Ehcache有现成的集群解决方案,Guava没有。不过个人感觉比较鸡肋,对JVM级别的缓存来讲太重了 Ehcache jar包庞大,Guava Cache只是Guava jar包中的工具之一,
项目可能会遇到需要对多个数据库进行读写的需求,此时就需要配置多个数据源。 依赖配置 pom.xml配置的依赖如下: <dependencies> <dependency> <groupId>org.springframework.boot
添加相关依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo
双亲委派机制的工作流程: (1)当前ClassLoader首先从自己已经加载的类中查询是否此类已经加载,如果已经加载则直接返回原来已经加载的类。每个类加载器都有自己的加载缓存,当一个类被加载了以后就会放入缓存,等下次加载的时候就可以直接返回了。 (2)当前ClassLoader的缓存中没有找到被加载
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象 Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测 Optional 类的
以支付宝为例,使用Java模拟Form表单提交 /** * 建立请求,以表单HTML形式构造(默认) * @param sParaTemp 请求参数数组 * @param strMethod 提交方式。两个值可选:post、get * @param strButtonName 确认按钮显示
基本使用 Map -> Bean BeanUtils.populate(Object bean, Map<String, ? extends Object> properties); Bean -> Map BeanMap testMap = new BeanMap(Obj
关于Java中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密,一般为了安全采用的是 私钥加签,公钥验签 本地私钥加密,远程公钥解密(公钥可以用Base64转换后公开) 远程公钥加密,本地私钥解密 import org.apache.commons.codec.binary.Base64;
RSA加密简介 RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥
将一个Java Bean转换为Map数据结构,key为Bean字段名,value为Bean字段值,允许通过map的api进行调用 缺点:不能自定义key名称 pom.xml依赖 <dependency> <groupId>commons-beanutils</gr
总结:按顺序执行 public class StaticTest { public static String API_DEV_BASE_URL = "http://192.168.10.10/"; public static String API_PRO_BAS