java
文章平均质量分 85
white_156
星河滚烫,烫死人间理想;
皓月星辰 冻死人间曙光
展开
-
加密算法的简易应用
在介绍如何使用实现加密之前,首先来介绍一个类.这是java自带的加密实现类,也是本文依赖的重点。创建实例通过调用静态方法其中algorithm不做过多解释,就是AES/DES/RSA这样的具体具体加密算法。mode这里只介绍两种比较常见的CBC和ECB,至于OFB这种高阶模式,ECB全程是 Electronic CodeBook,它会将要加密明文msg分为固定长度,比如64,然后独立加密每一组。原创 2022-12-01 22:27:49 · 1151 阅读 · 1 评论 -
生产者/消费者模式
参考链接: 经典并发同步模式:生产者-消费者设计模式 - flyingcr的文章 - 知乎原创 2022-04-23 23:20:45 · 163 阅读 · 0 评论 -
spring整合Gson
spring整合Gson如何操作配置上没啥好说的,首先去除spring自带的Jackson# pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion>原创 2022-01-14 00:01:10 · 774 阅读 · 0 评论 -
spring-aop 学习记录
文章目录spring-aop 学习记录aop conceptspring implementsspring-aopspring-aspectsxml配置注解配置spring-aop 学习记录面向切面编程aspect oriented programming,实现对现有业务逻辑的非侵入式增强,如日志记录,权限管理的aop conceptjoin pointJoin point is any point in your program such as method execution, exce原创 2021-10-06 15:25:21 · 314 阅读 · 0 评论 -
Interceptor实现的权限管理
这几天老板突发奇想要我在app上搞个权限检验,“哎呀,这个很简单的,你从数据库里把权限找出来,然后放到手机里,用的时候比对一下就可以了”。这也太完蛋了,直接把权限暴露出去不说,这代码写的一点设计感都没有,真就开发一时爽,维护火葬场。所以在一上午面向百度编程之后,尝试了一下传说中的aop编程。在后端项目中,利用Interceptor在调用方法执行前进行拦截,根据调用方法上的注解验证当前session用户的权限。首先是实现检验用户持有权限完整代码不敢放,怕查水表,只能写个伪的 boolean check原创 2021-07-29 22:01:12 · 427 阅读 · 0 评论 -
Android Handler
文章目录Handler应用初始化发送消息接收消息内存泄漏解决措施Handler用于同一进程中的线程通信,Handler实例关联于一个线程以及其消息队列应用1. 安排Msg/Runnable在未来某一时间结点运行2. 将动作交付于其他线程执行 There are two main uses for a Handler: (1) to schedule messages and runnables to be executed at some point in the future; and原创 2021-01-05 18:54:24 · 1126 阅读 · 0 评论 -
java实现常用排序算法
参考文章:十大经典排序算法Data Structure and Algorithms - Quick Sort主程序 public static void main(String args[]){ int t=100; int sum=0; LearnSort a = new LearnSort(30); for (int i = 0; i < t; i++) { a.generate_rand_原创 2020-12-12 21:09:52 · 117 阅读 · 3 评论 -
Java basic
文章目录反射注解作用内置注解元注解自定义注解使用注解序列化抽象类 & 接口内部类枚举反射注解用于说明程序,是绑定到程序代码中的元数据作用编写文档。通过标识注解生成DOC文档利用属性配置文件编译检查内置注解@Override 重写检查@Deprecated 标注内容已过时@SuppressWarning 压制警告@FunctionaallInterface 标识接口中只允许有一个抽象方法元注解用于描述注解的注解@Document 被修饰类是否在JavaDOC当中@R原创 2020-08-30 00:26:41 · 803 阅读 · 1 评论 -
线程池讲解
文章目录为什么要用线程池线程池结构线程池生命周期任务执行机制任务调度任务缓冲任务申请任务拒绝线程执行过程线程添加线程执行任务线程回收应用动态化线程池设计为什么要用线程池降低资源消耗,提高响应速度池化将线程统一在一起,避免了创建/释放线程的损耗提高线程可管理性,合理配置资源防止对资源的无限申请,对线程合理的调度及监控线程池具有可扩展性线程池结构线程池生命周期线程池中有两个重要参数管理线程池的生命周期:线程池运行状态runState 和 线程数量workerCount,这两个参数在同一变原创 2020-08-29 10:04:21 · 447 阅读 · 0 评论 -
JDK集合类Collection解析--HashMap
文章目录HashMap源码解析内部结构重要参数构造方法常用方法putresizegetremove线程安全版本HashMap源码解析HashMap实现散列这一数据结构,维护一个散列表用于快速查询内部结构HashMap内部以词条(key-value)数组维护散列表,采用拉链法应对hash碰撞。所谓词条数组指:具有相同键值key的元素放在一起。当然我们不能key唯一,可能且允许出现重复。当出现重复时,就发生了hash碰撞。拉链法指:对于key相同,但是不equals的元素(即不能合并),以链表的形式原创 2020-08-26 10:45:18 · 507 阅读 · 1 评论 -
多线程之并发工具
文章目录ThreadLocal内存泄漏原子类CAS常用方法ThreadLocal除了将变量定义为immutable以外,ThreadLocal提供了新的线程安全思路。ThreadLocal实现线程安全是将变量独立的保存到每个线程中,这样就不存在竞争问题,也就用不到互斥锁了;同时每个线程中都有一个变量的独立副本(该副本对其他线程不可见),也不用考虑线程安全问题。实现上,ThreadLocal类中没有存储结构,ThreadLocal依赖于当前线程中的threadLocalMap存储 public原创 2020-08-26 01:31:37 · 278 阅读 · 1 评论 -
多线程之JMM
写在前面:笔者才疏学浅,本文参考网上众多前辈大佬的文章,整理引用了部分观点及内容,加之笔者些许愚见糅合而成。如有侵权还请联系笔者,必在第一时间处理若是有写的有误,还请务必指出,感激不敬文章目录CPU特性JMM主内存与工作内存内存间交互重排序as-if-serial内存屏障happens-before线程安全CPU特性由于存储设备与处理设备速度相差较大,因此采用多级缓存提升运算效率各处理器优先访问各自的寄存器获取数据,而非到RAM主内存中读取为了提升执行效率,处理器会在保证逻辑不变的前提.原创 2020-08-16 23:30:46 · 326 阅读 · 0 评论 -
Java GC及四种引用
文章目录GC判断对象可以被回收GC算法回收方法区四种引用GCGC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉显原创 2020-08-16 10:26:09 · 815 阅读 · 1 评论 -
Java类加载
文章目录.class文件类加载器执行过程:双亲加载机制类的生命周期类的内存布局对象分配规则对象的访问定位句柄直接指针对象创建过程JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class 对象,作为方法区类数据的访问入口。.class文件magic:确定一个文件是否能被JVM接收version:版本号。向下兼容:高版本能执行低版本生成的.class文件constants_pool:常量池相关。包括了代码原创 2020-08-16 09:20:17 · 333 阅读 · 0 评论 -
JVM内存分区
文章目录线程共享堆heap青年代 youngGeneration老年代oldGeneration方法区线程独享程序计数器JVM栈栈帧native方法栈JVM是一种用于计算设备的规范,通过在实际的计算机上仿真模拟各种计算机功能来实现的。线程共享堆heap用于所有对象实例(包括数组),也是GC管理的主要区域,并且可以要求分配的地址不是物理连续的,只要逻辑连续即可堆可更详细的分为下面几个区域青年代 youngGeneration青年带又具体分为Eden区新生对象首先分配在Eden区,如果内存原创 2020-08-15 20:34:39 · 326 阅读 · 0 评论 -
JDK集合类Collection解析--ArrayList
文章目录扩容在容量足够的条件下,自动扩容50%,容量上限为MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8private int newCapacity(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (原创 2020-08-13 11:38:05 · 150 阅读 · 0 评论 -
多线程面试题
三个线程按顺序打印0-100首先先考虑一个弱化版:如何多线程打印0-100?第一要多个线程共享内存;第二要对多线程同步控制,保证只有一个线程在操作。根据以上两点,我们这样写public class Print implements Runnable { Integer num; //共享内存 Lock lock; //这里new ReentrantLock是为了让所有线程用同一把锁 public Print(Integer num, Lock lock) {原创 2020-08-12 22:10:52 · 198 阅读 · 1 评论 -
单例模式
静态工厂模式public class Singleton { private Singleton(){} // 构造对外不可见,禁止在本类外创建对象 private static Singleton singleton = null; //初始值可以为null也可以为new Singleton // 获取单例的静态方法 public static Singleton getSingleton(){ if(singleton==null)原创 2020-08-08 14:44:30 · 163 阅读 · 0 评论 -
多线程同步控制
文章目录volatile内存可见性底层实现保证有序性保证64位数据的读写原子性应用单例模式实现双重检查锁volatile内存可见性当变量被volatile关键字修饰后,CPU将越过寄存器向主内存中直接请求。可理解为使用同一监视器对单个读写操作同步在这里我们可以说基于volatile读写在多线程中是安全的,当时基于volatile的运算是不安全的。原因在于JMM允许多个线程同时计算volatile变量,但运算操作却不是原子的底层实现如何volatile变量对不同线程的可见性缓存一致性协议原创 2020-08-05 15:52:15 · 1569 阅读 · 0 评论 -
Java多线程初步
写在前面:笔者才疏学浅,本文参考网上众多前辈大佬的文章,整理引用了部分观点及内容,加之笔者些许愚见糅合而成。如有侵权还请联系笔者,必在第一时间处理若是有写的有误,还请务必指出,感激不敬文章目录为何要用多线程[^1]多线程带来的问题:线程安全如何使得线程安全:线程通信及同步单个线程的说明线程的生命周期如何切换线程状态:Thread类部分常用函数中断机制[^6]如何实现一个线程守护线程线程优先级[^10]为何要用多线程1对于多核处理器来说:提高CPU利用率如果在多核处理器上运行单线程程序,会.原创 2020-07-28 23:52:38 · 738 阅读 · 0 评论 -
JDK源码解析之String与包装类
文章目录Integer内部存储数据格式构造器常量池常用方法自动拆装箱String成员变量构建String对象常用方法Integer内部存储数据格式/** * The value of the {@code Integer}. * * @serial */private final int value;所以Integer类中只有构造器和getter方法,并没有setter方法,原因就是value被final修饰不可再更改。因此我们想要修改Integer类的值只能新建Integer对象构造原创 2020-07-13 10:39:31 · 723 阅读 · 1 评论