Java
zhzhsxx
生活态度积极乐观
展开
-
Redis
Redis主要用于缓存,自定义map、guava的缓存也可以用于简单缓存。自定义缓存时,注意value要使用SoftReference包装,以便JVM回收guava缓存:CacheBuilder、LoadingCache1. 数据结构1. string2. list3. hash4. set5. zset6. stream(5.0新增)2. 持久化RDBAOF...原创 2020-02-19 10:12:19 · 204 阅读 · 0 评论 -
RabbitMQ
RabbitMQ是实现了AMQP(高级消息队列协议)的开源消息代理软件。RabbitMQ服务器是用Erlang语言编写的,而聚类和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。AMQP从上到下分为:Model(提供命令)、Session(协议处理)、Transport(数据传输)1.结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直...原创 2020-02-14 11:17:49 · 117 阅读 · 0 评论 -
通过一个外卖例子了解分布式事务解决方案
通过外卖例子了解分布式事务解决方案。使用SpringBoot和RabbitMQ为例。1. RabbitMQRabbitMQ使用Erlang语言开发,是AMQP(Advanced Message Queuing Protocol)高级消息队列协议的实现。有五个重要的概念生产者消费者QueueExchangeBind流程生产者发送消息时并不直接发送到队列,而是通过Exc...原创 2020-02-10 22:53:36 · 395 阅读 · 0 评论 -
Java注解
1.Java使用接口Annotation来描述注解。使用AnnotatedElement来获取Annotation其他注解不能继承该接口(直接报错)。可以使用接口继承,单继承后只能是普通接口,不再是注解。jvm在编译后自动为注解加上继承Annotation,可以使用javap反编译查看2.元注解(注解其他注解的注解)Target :注解位置 值为ElementType枚举的实例。如 类...原创 2019-12-16 11:51:58 · 101 阅读 · 0 评论 -
Java启动常用参数
-Duser.timezone=Asia/Shanghai启动设置时区用于:服务器时间正确,打印日志时间有问题-DskipTests跳过测试用于:mvn编译-Dfile.encoding=UTF-8编码格式用于:解决乱码问题...原创 2018-11-28 15:00:44 · 322 阅读 · 0 评论 -
【Spring-boot】使用filter对request body参数进行校验
@Slf4jpublic class ParameterCheckServletRequestWrapper extends HttpServletRequestWrapper { private byte[] requestBody; private Charset charSet; public ParameterCheckServletRequestWrap...原创 2018-11-02 12:01:50 · 8809 阅读 · 4 评论 -
使用KeyHolder 获取Spring JdbcTemplate插入记录ID
使用Spring JdbcTemplate插入数据之后,如果需要获取插入之后的ID,代码如下: public NamedParameterJdbcTemplate namedParameterJdbcTemplate; public void insert(){ String insertSql = "insert into user(name,a...原创 2018-09-27 09:41:10 · 5266 阅读 · 0 评论 -
【Spring-boot】前后端分离跨域以及session问题
一、后端@Configurationpublic class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override //重写父类提供的跨域请求处理的接口 ...原创 2018-11-28 15:07:00 · 4801 阅读 · 1 评论 -
Java8流式操作与Collectors
Java8 流式操作笔记集合关注的是它当中元素元素有效的管理和访问。Stream关注的是它的源source的各种聚合的计算操作一般来说Stream可分为三个部分:源source、中间操作Intermediate和终止操作Terminal。每一个流只能被使用一次(即调用中间操作或者终止操作)流的实际执行流程是这样的,在遇到中间操作的时候,其实只是构建了一个Pipeline对象,而该对象...原创 2018-12-11 11:41:09 · 633 阅读 · 0 评论 -
java.util.HashMap
一、注释hash table的Map接口实现。HashMap提供所有map的可选操作,允许键和值为null。(HashMap除了unsynchronized和允许null值,与Hashtable相同)。HashMap不保证元素顺序,特别是随着时间推移。在hash函数正确的分散元素到buckets中时,HashMap对基本的get和put操作提供常数项时间性能。对集合视图的迭代则与HashMa...原创 2019-01-11 11:06:10 · 1166 阅读 · 0 评论 -
【Spring-boot】shiro权限控制
缓存使用redis,自定义ShiroRedisCache、ShiroRedisCacheManager用于存储用户缓存信息自定义MyShiroToken继承自AuthenticationToken。用于用户名密码载体进行认证public class MyShiroToken implements AuthenticationToken { private AdminUse...原创 2019-01-07 15:28:21 · 139 阅读 · 0 评论 -
java中的AES 256算法遇到 Illegal key size or default parameters错的解决办法
报错信息:Caused by: java.security.InvalidKeyException: Illegal key size or default parameters问题原因:Java几乎各种常用加密算法都能找到对应的实现。因为美国的出口限制,Sun通过权限文件(local_policy.jar、US_export_policy.jar)做了相应限制。因此存在一些问题:密...转载 2019-01-16 11:07:21 · 239 阅读 · 0 评论 -
【转】彻底找到Tomcat启动速度慢的元凶
彻底找到Tomcat启动速度慢的元凶转载 2019-05-22 16:38:46 · 415 阅读 · 0 评论 -
Java中参数传递——值传递(拷贝)
Java中参数传递实际上是值传递(拷贝)参数分为两种:基本数据类型、引用类型比如方法M调用方法N,参数为x,则:如果x是基本类型,则会把x的值拷贝一份放入N方法实例的栈中。此时,方法N改变参数x的值,M中的x不受影响。如果x是引用类型,则会把x的引用拷贝一份(x’)放入N方法实例的栈中。此时,方法N可以通过引用x’改变x的值。因为引用x和引用x’都是指向同一个对象。...原创 2018-09-26 11:45:06 · 1739 阅读 · 0 评论 -
【算法】字符串反转
基本思路是找中间位置,然后镜像调换。需要注意的是,以字符串长度/2做中间值和以字符数组最大索引做中间值的区别。1,递归法 public static String swap1(String str) { if (null == str) { return str; } char[] oldArr = str.toCha...原创 2018-09-26 10:25:57 · 639 阅读 · 0 评论 -
详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法
当我们用 IntelliJ IDEA 编写类并实现 Serializable(序列化)接口的时候,可能会遇到这样一个问题,那就是:无法自动生成serialVersionUID.而serialVersionUID又是一个非常重要的字段,因为 Java 的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM 会把传来的字节流中的serialVer...转载 2018-06-15 15:16:28 · 120 阅读 · 0 评论 -
Spring @Transactional原理及使用
主要介绍Spring声明式事务中使用注解@Transactional的原理及注意事项。本文主要讨论Spring声明式事务中使用注解@Transactional的方式、原理及注意事项,主要包括以下内容:Spring @Transactional的配置使用; Spring @Transactional的传播行为和隔离级别; Spring @Transactional的工作原理; Spri...转载 2018-07-26 11:45:29 · 146 阅读 · 0 评论 -
Java Bean简化代码--lombok
lombok可以用来简化Java Bean 代码。常用的有 * @Getter * @Setter * @NonNull * @ToString * @EqualsAndHashCode * @Data * @Cleanup 类似于TWR * @Synchronizedpom依赖:<dependencies> <dependency> ...原创 2018-08-09 18:19:00 · 231 阅读 · 0 评论 -
【Spring-boot】热加载
spring-boot热加载只要在pom文件中添加下面代码段即可<!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b转载 2018-09-01 21:42:45 · 140 阅读 · 0 评论 -
Mybatis-Plus mybatis增强工具
Mybatis-Plus是一个Mybatis增强工具 特点无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring损耗小:启动即会自动注入基本 CU...原创 2018-09-03 22:21:52 · 1689 阅读 · 0 评论 -
【Spring-boot】使用校验框架validation校验
0,maven引入 SpringBoot starter-web自动引入依赖1, Bean代码import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import lombok.Data;import javax.validat...原创 2018-09-03 22:30:24 · 1313 阅读 · 0 评论 -
【Spring-boot】引入Swagger
1, pom文件 <swagger.version>2.7.0</swagger.version> <!--其他版本EnableSwagger2注解找不到,可能是个例,待验证。--> -------------------------------------------------原创 2018-09-03 22:42:13 · 160 阅读 · 0 评论 -
【Spring-boot】使用ActiveMQ
1 . pom文件引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId><原创 2018-09-12 16:09:24 · 321 阅读 · 0 评论 -
Bean Validation(使用Hibernate-Validator校验基本数据类型)
1,在controller上加Validated@Validatedpublic class UserBillController2,在方法参数上加注解public Object getUnSettled(@NotNull(message = "用户ID不能为空") Long userId) 3,处理异常if (e instanceof ConstraintVio...原创 2018-09-10 13:16:59 · 3127 阅读 · 0 评论 -
RequestBody使用(spring-boot集成swagger)
bean@Data@ApiModelpublic class UserRepay { @NotNull(message = "用户ID不能为空") @ApiModelProperty("用户ID") private Long userId;}controller@RestController@Api(tags = "还款管理", descr..原创 2018-09-10 17:46:13 · 7644 阅读 · 0 评论 -
Autowired的使用:推荐对构造函数进行注释
在编写代码的时候,使用@Autowired注解是,发现IDE报的一个警告,如下:![这里写图片描述](https://images2015.cnblogs.com/blog/380239/201704/380239-20170428140825334-1173551331.png) Spring Team recommends “Always use constructor base...转载 2018-09-07 10:53:33 · 1464 阅读 · 0 评论 -
【Spring-boot】发送邮件
1 . pom文件加入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st原创 2018-09-13 09:34:48 · 181 阅读 · 0 评论 -
Java注解
Spring@Controller @RestController RestController = Controller + ResponseBody@RequestParam @RequestBody @PathVariable 等参数绑定注解详解Spring-Boot@Configuration注解可以达到在Spring中使用xml配置文件的作用。@Bean就等同于xml配...原创 2018-09-07 17:09:59 · 119 阅读 · 0 评论 -
log4j记录日志到数据库
一、数据库表CREATE TABLE `admin_sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `uid` bigint(20) DEFAULT NULL COMMENT '操作者id', `username` varchar(255) DEFAULT '' COMMENT '操作者用户名', `client_ip` ch...原创 2018-06-12 19:47:08 · 1691 阅读 · 0 评论