java
文章平均质量分 69
java
亚洲小炫风
亚洲小炫风
展开
-
mybatis 以及plus 枚举处理
但是给转换仅仅是将对应的枚举转换为其索引位置,也就是"ordinal()"方法获取到的值。* 对于jackson 只需要在枚举常量添加@JsonProperty注解。* 对于gson 只需要在枚举常量添加需要@SerializedName。或者都不写序列化注解,那么会自动序列化枚举声明的字段名字 而不会导致报错。当然也可以通过代码来注册(找一个初始化bean的组件来调用下面的代码)很明显我们一般只关心序列化的注解,那么又增加一套注解麻烦。:该类实现了枚举类型和Integer类型的相互转换。原创 2024-04-08 17:51:33 · 365 阅读 · 0 评论 -
Gson 自动生成适配器插件
gson 零反射;编译生成gson typeAdapter;解析效率提升3倍,比moshi 和ks都快原创 2023-12-04 20:37:26 · 277 阅读 · 0 评论 -
Spring Cloud 微服务架构
分布式架构就是将一个项目拆分成n个子项目,每个子项目使用rpc远程调用技术。搭建eurake注册中心pom依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/X...原创 2018-04-15 17:20:09 · 261 阅读 · 0 评论 -
Mybatis 入门到精通
1. 引入依赖mybatis依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</versio...原创 2018-04-08 23:11:40 · 539 阅读 · 0 评论 -
Spring AOP 的实现原理
Spring AOP 的实现原理 原理概述:织入的时机1. 编译期(AspectJ)2. 类加载时(AspectJ 5+)3. 运行时(Spring AOP)运行时织入原理1. 从静态代理到动态代理2. 基于接口代理与基于继承代理简单代理对象: package com.example.proxy;/** * com.example.prox...原创 2018-04-07 19:57:51 · 1125 阅读 · 2 评论 -
Spring Boot 事务管理
事务 作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行,事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过一组相关操作的组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使用应用程序更加可靠,一个逻辑工作要成为事务,必须要满足ACID(原子性,一致性,隔离性和持久性)属性,事务是数据库中运行的逻辑工作单元,由DB...原创 2018-04-05 18:52:03 · 719 阅读 · 0 评论 -
微信红包算法
微信红包怎么出现随机金额,主要是随机数产生package com.example.hongbao;import java.util.Random;public class MyClass { public static class MoneyPackage { public int peoples; public double money原创 2016-02-18 10:12:58 · 648 阅读 · 0 评论 -
位运算的巧妙运用
1:位运算的符号与运算:&或运算:|异或运算:^非运算:~移位运算:>>和1:判断一个数是否是2的N次方 题目要求:用一个表达式,判断一个数x是否是2的N次方,既2,4,8,16....,要求不可以用循环语句: 分析:2,4,8,16这样的数转换成二进制是10,100,1000,10000. 如果x减去1的二进制是01,01原创 2016-01-08 17:29:56 · 498 阅读 · 0 评论 -
Java 8 Lambda表达式
只能用于函数式接口语法如下:/** * ():表示参数列表,不需要指定参数的类型,会自动推断 * -> :链接符 * {} :表示方法体 */实例1 @FunctionalInterface interface IWorker { void test(); } /** * ():表示参数列表,不需要指定参数...原创 2018-09-20 10:58:31 · 121 阅读 · 0 评论 -
Java8 在接口的变化
Java8 对接口的改变1.增加了default方法和static方法,这两种方法完全可以有方法体2.default方法属于实例,static方法属于类(接口)3.接口中的静态方法不会被继承,接口中的静态变量会被继承实例如下: package com.xxf.lambda.java8features;/** * com.xxf.lambda.java8features ...原创 2018-09-19 16:31:09 · 4743 阅读 · 2 评论 -
使用java进行excel读取和写入
https://www.cnblogs.com/liyafei/p/8146136.html原创 2018-05-16 11:17:38 · 219 阅读 · 0 评论 -
Redis 入门
redis的作用:1. 解决应用服务器的cpu和内存压力2. 减少io的读操作,减轻io压力3.关系型数据库的扩展性不强,难以改变表结构redis的优点:1. nosql数据库没有关联关系,数据结构简单,拓展表比较容易2. nosql读取速度快,对较大数据处理快redis搭建环境:下载地址:http://redis.io/安装完成,启动指令:redis-serve...原创 2018-04-09 23:26:09 · 192 阅读 · 0 评论 -
使用Google Guice实现依赖注入
使用Google Guice实现依赖注入原创 2018-04-07 20:10:15 · 329 阅读 · 0 评论 -
Spring Boot 热部署
Spring Boot 热部署原创 2018-04-07 20:06:39 · 157 阅读 · 0 评论 -
Spring Boot进阶之Web进阶
spring boot 进阶web原创 2018-04-06 16:35:19 · 346 阅读 · 0 评论 -
Spring Boot 数据库操作
Spring-Data-JpaJPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这以规范的产品有Hibernate,TopLink等@Entity 注解表示数据库 映射实体链接mysql 需要在pom文件中增加2个依赖<dependency> <groupId>org.springframework.boot</groupI...原创 2018-04-03 23:58:17 · 163 阅读 · 0 评论 -
Spring Boot 框架熟练使用
1. 及时体验,自动生成简单demo 链接2. 注解理解2.1 @RestControllerSpring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合。即@RestController是@ResponseBody和@Controller的组合注解。2.2 体验 HelloAPI运行效果:3. 项目属性配置运行效果:配置文件,代码访问值注意:yml文...原创 2018-03-20 20:40:57 · 1011 阅读 · 0 评论 -
Java源码之Class类
Java源码之Class类原创 2018-01-27 17:48:24 · 542 阅读 · 0 评论 -
Java源码之Object类
// IntelliJ API Decompiler stub source generated from a class file // Implementation of methods is not availablepackage java.lang;public class Object { public Object() { /* compiled code */原创 2018-01-20 16:51:53 · 2180 阅读 · 0 评论 -
java 对称加密算法
对称加密算法加密密钥=解密密钥常用对称加密算法DES,由于DES长度限制,又衍生出3DES,取代DES 有AESPBEIDEADES 数据加密标准,98年之后被破解,DES已经不安全了原创 2016-05-16 10:36:10 · 1459 阅读 · 0 评论 -
java Base64加密实现
Base64是网络上最常见的用于传输的8bit字节代码的编码方式,也常将把需要的二进制数据编码放在url中的形式上传,由于可读性差,所编码的数据不会被直接看到信息详情!Base64 是采用字符替换的方式,将3个8位字节(3*8=24)转换为4个6位字节(4*64),之后再6位的前面补两个0,形成8位一个字节的形式,如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能出现1或者2个'='Base64编码表:原创 2016-05-15 10:58:24 · 4415 阅读 · 0 评论 -
消息摘要-mac
摘要分类:MD SHA MAC可以说MAC是在SHA MD基础上发展而来,现也称HMAC算法,兼容了MD和SHA算法的特性,HMAC 摘要长度等同SHA1算法的摘要长度,160位的二进制数!原创 2016-05-14 20:43:15 · 1169 阅读 · 0 评论 -
消息摘要算法-SHA
SHA 安全散列算法散列算法:散列是信息的提炼,通常其长度要比信息小很多,且为一个固定长度,加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息,任何输入信息的变化,哪怕是一位,都将导致散列结果的明显变化,散列还是防冲突的,即找不出具有相同散列结果的两条信息.具有这些特性的散列结果都可以用于信息验证是否被修改 MD5:RSA数据安全公司开发的一种单项散列原创 2016-05-14 18:56:08 · 3152 阅读 · 0 评论 -
java md5,md2,md4 加密算法
java md5,md2,md4 加密算法md5(信息摘要算法5)用于确保信息传输的完整一致,是计算机广泛的使用杂凑算法之一(又名摘要算法,哈希算法),主流的编程语言普遍已经有md5的实现,将数据(如字符串)运算为另外一个固定长度值,是杂凑算法的基础原理,md5的前生,md5的前身有md2,md4。原创 2016-05-14 10:23:31 · 7799 阅读 · 2 评论 -
论 try catch是否影响性能
在实际项目中,io,数据库,网络等等,不可避免会发生未知异常,try catch 可以有效的避免页面崩溃,网上有人说一个页四五个try catch影响效率,这里给出验证:实例:100个线程,分别循环100次作为实验单位:package com.example;import java.util.concurrent.ExecutorService;import java.util.co原创 2016-05-06 10:05:41 · 5640 阅读 · 0 评论 -
Spring AOP探秘
什么是AOP1. AOP式一种编程范式,不是编程语言,如:面向对象编程 函数式编程 事件驱动编程 面向切面编程2.解决特定问题,不能解决所有问题3. 是oop的补充,不是替代面向切面编程的目的:1. 集中处理某一关注点/横切逻辑2.可以很方便地添加/删除关注点3.侵入性少,增强代码可读性及可维护性AOP的应用场景:1.权限控制2.缓存控制3.事务控制...原创 2018-04-06 16:34:11 · 260 阅读 · 0 评论 -
java重新认识线程的状态
java线程的状态又称为线程的生命周期,源码如下: /** * A thread state. A thread can be in one of the following states: * <ul> * <li>{@link #NEW}<br> * A thread that has not ye...原创 2018-09-29 19:31:34 · 164 阅读 · 0 评论 -
手动实现一个可重入锁
首先 自定义一个锁,我们可以实现Lock接口;lock接口源码如下:package java.util.concurrent.locks;import java.util.concurrent.TimeUnit;public interface Lock { void lock(); void lockInterruptibly() throws Inte...原创 2018-09-18 16:58:44 · 553 阅读 · 1 评论 -
java CountDownLatch
countdownlatch是一个用来控制并发很常见的工具,可以接受到其他线程都执行完毕的消息1.创建countdownlatch/** * Constructs a {@code CountDownLatch} initialized with the given count. * * @param count the number of times {@...原创 2018-08-19 22:33:21 · 162 阅读 · 0 评论 -
java cyclicbarrier的使用
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到...原创 2018-08-19 21:58:27 · 224 阅读 · 0 评论 -
java semaphore实现信号灯
java semaphore实现信号灯semaphore可以维护当前访问自身的线程个数,并提供了相应的同步机。使用semaphore可以控制同时访问资源的线程个数.例如:实现一个文件允许的并发访问数. semaphore实现的功能就类似测试所有的5个坑,假如有是个人要上测试,那么统发能有多少个人去上测试呢?同时只能有5个人能够占用,当5个人中的任何一个人让开后,其中等待的的...原创 2018-08-19 20:03:32 · 506 阅读 · 0 评论 -
java 线程池的使用
虽然说RxJava 与RxAndroid 已经能很好的处理多线程的问题,但是我们还是要总结一下线程池的使用为什么需要使用线程池?线程的频发创建,需要时间,也会加大系统的开销,最简单的办法就是复用,也因此产生线程池,产生线程池的核心就是ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, ...原创 2016-05-04 18:32:50 · 1552 阅读 · 0 评论 -
java Atomic原子更新
在jdk>=1.5提供了atomic原子数据类,其目的就是方便多线程,无锁简单地进行原子操作 大概分为4类: 变量类:AtomicBoolean,AtomicInteger,AtomicLong,AtomicRefrence 数组类:AtomicIntergerArray,AtomicLongArray,AtomicRefreceArray 更新器类:...原创 2016-05-04 14:52:28 · 3096 阅读 · 0 评论 -
java ReentrantLock与synchronized
synchronized 对象锁 当多个线程在更新共享状态时避免相互冲突,要保证数据的原子性与可见性,我们通常用synchronized上锁,,一个线程访问synchornied代码库或者方法时,其他线程都将暂时不能访问,知道上一个线程调用的这个synchronized执行完成,才能被另外线程调用,synchronized将自动释放锁,此后另外线程等待到这时才能执行 例1:并发线程...原创 2016-05-04 11:53:58 · 501 阅读 · 0 评论 -
Java 线程 callable 适合android的任务
java 开启一个线程可以使用thread 也可以使用runnable在jdk1.5 之后有一个callable 类 同样可以开启一个线程:优势:1:支持返回值(包含计算结果的future对象)2:任务可以取消 可以检查是否完成 callable 源码: public interface Callable<V> { V call() thro...原创 2016-04-11 17:15:52 · 627 阅读 · 0 评论 -
java Classloader 类加载器
类的加载时指将类的.class文件中的二进制数据读取到内存中,将其存放在运行时数据区的方法区,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区的数据结构java虚拟机与程序的生命周期在如下几张情况,java虚拟机讲结束生命周期1.执行了System.exit()方法2.程序正常执行结束3.程序在执行过程中遇到异常或错误终止4.由于操作系统出现错误...原创 2018-09-23 19:15:03 · 229 阅读 · 0 评论