随笔分类 - Java
Java相关
摘要:JWT的优点和实现Token认证的安全问题 一、什么是JWT JWT——Json web token 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,可实现无状态、分布式的Web应用授权。 二、我们为什么需要JWT? 首先,当前后端分离时我们会因为同源策略而无法设置cookie和s
阅读全文
摘要:Redis的ZSet排行榜功能实现 1. 功能需求 类似给用户n张图片, 用户左滑不喜欢右滑喜欢。所以每个用户就会有一些喜欢的图片集合和不喜欢的图片集合。现在我们要做一个将按照一个算法将喜欢的排到前面。算法 ctr = (喜欢数+20)/ (喜欢数+不喜欢数+20),所有的内容按照这个算法的结果进行
阅读全文
摘要:SpringBoot读取war包jar包Resource资源文件解决办法 场景描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近在SpringBoot项目中时碰到一个问题,就是在本地运行时,获取本地的xml资源文件是能够获取到的,但是项目打成war包jar包启动运行时,就会发生
阅读全文
摘要:云服务器ECS挖矿木马病毒处理和解决方案 最近由于网络环境安全意识低的原因,导致一些云服务器ECS中了挖矿病毒的坑。 总结了一些解决挖矿病毒的一些思路。由于病毒更新速度快仅供参考。 1、查看cpu爆满的进程 cpu占用率 100%, 用top 查看cpu100 2、杀死进程 kill -9 pid
阅读全文
摘要:Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路。 一共两个类: 1 、实现自己的证书信任管理器类 2、阿里云上传工具类 结论: 两个类搭配着用,完美解决下载https文件上传到阿里oss返回上传之后路径。
阅读全文
摘要:本文主要描述,Springboot框架下上传excel,处理里面相关数据做逻辑分析,由于用到的是前后端分离技术,这里记录的主要是后端java部分,通过与前端接口进行对接实现功能 1.在pom.xml文件中导入注解,主要利用POI 2. springboot java实现代码 3. PostMan调用
阅读全文
摘要:每个项目全局异常处理非常重要, 今天在处理项目架构的时候添加了一个全局异常处理。 大概三种异常情况: 一:在进入Controller之前,譬如请求一个不存在的地址,404错误。 二:在执行@RequestMapping时,进入逻辑处理阶段前。譬如传的参数类型错误。 三:以上都正常时,在control
阅读全文
摘要:最近写了一个小微信签名功能,记录一下希望用到的朋友可以参考下。
阅读全文
摘要:1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取,
阅读全文
摘要:RandomAccessFile类的常用的操作方法 1、public RandomAccessFile(File file, String mode)throws FileNotFoundException 构造方法 接收File类的对象,指定操作路径,但是在设置时需要设置模式:"r": 只读、"w
阅读全文
摘要:ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap,为了对ConcurrentHashMap有更深入的了解,本文将对ConcurrentHashMap1.
阅读全文
摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现
阅读全文
摘要:阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变
阅读全文
摘要:这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。 线程 JVM 系统线程 每个线程相关的 程序计数器 栈 本地栈 栈限制 栈帧 局
阅读全文
摘要:第一章 Java开发中通用的方法和准则 建议1:不要在常量和变量中出现易混淆的字母; (i、l、1;o、0等)。 建议2:莫让常量蜕变成变量; (代码运行工程中不要改变常量值)。 建议3:三元操作符的类型务必一致; (不一致会导致自动类型转换,类型提升int->float->double等)。 建议
阅读全文
摘要:Semaphore-信号灯机制 当我们创建一个可扩展大小的线程池,并且需要在线程池内同时让有限数目的线程并发运行时,就需要用到Semaphore(信号灯机制),Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目,它是一个计数信号量,从概念上讲,信号量维护了一个许可集合,如有必
阅读全文
摘要:java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。 java内置锁是一个互斥锁,这就是意味着最多只有一个线程能够获得该锁,当线程
阅读全文
摘要:数据库事务的四大特性: 事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。 1、数据库事务必须具备ACID特性,ACI
阅读全文
摘要:“Java is still not dead—and people are starting to figure that out.” 本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字。 一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 defaul
阅读全文
摘要:静态内部类可以达到线程安全问题,但是如果遇到序列化对象时,使用默认的方式运行得到的结果 坑你还是多例的。 我们知道java 对象的序列化操作是实现Serializable接口,我们就可以把它往内存地写再从内存里读出而"组装"成一个跟原来一模一样的对象. 但是当我们遇到单例序列化的时候,就出现问题了。
阅读全文