java基础
西瓜味白菜
这个作者很懒,什么都没留下…
展开
-
java double类型比较
Double比较最近发现使用equals去比较两个double类型的时候,会产生一个有趣的bug。使用firstDouble.equals(secondDouble)的时候,有时候会出现错误的结果。这个问题的产生源于double类型在java中是以64bytes去存储的,为了适用64位,往往会去四舍五入它比如下面的例子Double firstDouble = 0d;for (int i = 1; i <= 42; i++) { firstDouble += 0.1;}Double s翻译 2021-05-14 15:24:14 · 1079 阅读 · 0 评论 -
spring kafka 和spring cloud stream 对比(国外文章翻译)
在微服务中使用kafka作为消息队列系统,使用spring-kafka和使用spring cloud stream+spring cloud starterstream kafka 有什么区别呢spring cloud stream框架支持更多的消息队列,所以是一种更加模块化的设计。但是如果仅从功能性上来说,这两种方式在功能性上来说是否有着本质上的区别呢?哪一个在api的设计上更好呢?回答spring cloud stream 依赖于spring kafka,所以spring kafka有的功能sp翻译 2021-05-09 19:20:15 · 1040 阅读 · 0 评论 -
什么是IOC(stackoverflow翻译)
原文链接当我们第一次遇到Inversion of Control (IOC)的时候脑袋会觉得很混乱,有几个问题会感觉很困惑IOC是什么?它解决了什么问题什么时候该用它,什么时候又该不用?回答:控制反转(IOC)和依赖注入(DI)都是为了从我们的代码中去掉相互依赖而产生的概念,举个例子,假设你的项目中有一个文本编辑组件,然后你想再加一个拼写检查功能。比较正常的写法是这样的:public class TextEditor { private SpellChecker checker;翻译 2021-05-08 18:06:18 · 163 阅读 · 0 评论 -
redis缓存回收算法 LRU算法
参考文献:redis官方文档redis的缓存redis可以使用maxmemory命令来配置redis存储数据时可以使用的最大内存大小,在redis.conf中设置,为0代表没有限制,默认也是没有限制。当内存达到最大时,这时候就需要采取恰当的行动来解决,这就是回收策略回收策略redis支持多种不同的策略:noeviction:但内存达到限制无法再执行命令时,直接返回错误allkeys-lru: 按照lru算法来回收数据volatile-lru:按照lru算法来回收过期的数据allkeys-原创 2020-06-23 17:36:17 · 1142 阅读 · 0 评论 -
redis入门学习日志(一)
简介redis在国内被众多的企业作为使用内存来实现高性能的io的解决方案。使用场景包括了数据库,缓存,消息中间件等。支持多种类型的数据结构,以及提供持久化,LRU,事务,负载均衡等多种功能redis的数据结构redis支持的数据结构包括了stirng、list、set、sorted set、hashes等多种形式redis keyredis key值是二进制安全的,意思是可以使用任何的二进制序列作为key值,包括了空字符串。不宜设置太长的key,因为消耗内存,对查找key的计算成本很高。太短也原创 2020-06-18 17:03:49 · 154 阅读 · 0 评论 -
面试题目及答案基本类型 String,StringBuilder,StringBuffer集合类
java面试基础题目及答案有什么基本类型?占用了多少字节?String,StringBuilder,StringBuffer集合类NIO有什么基本类型?占用了多少字节?boolean,1字节byte 1字节short 2字节int 4字节long 8字节char 2字节float 4字节double 8字节String,StringBuilder,StringBuffer...原创 2020-05-27 16:44:18 · 156 阅读 · 0 评论 -
java实习学习第一天(MVC框架初步学习)
#[TOC]java实习学习第一天一、利用svn check out 出项目通过公司给的一个项目,练习svn的使用方法。首先是安装svn,公司给的文件地址不见了,所以我另外在网上找了svn的下载地址,这里推荐使用百度网盘搜索,去百度下百度网盘搜索,然后随便点一个看起来厉害点的网站进去搜索你想要的文件,这种方法特别容易就找到你想要的文件。下载完成后正常的安装svn,全部默认设置就可以了,这一...原创 2019-03-04 20:58:24 · 377 阅读 · 0 评论 -
servlet实现文件下载功能(demo)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String savePath = request.getParameter("path");//路径 String filename =...原创 2019-02-22 13:41:23 · 501 阅读 · 0 评论 -
NullPointerException的常见情况(记录)
空指针异常的常见问题,记录下方便自己需要时看空指针,可以理解为找不到对象,一般发生这个错误时先定位到错误地点寻找对应语句找出对象是否确实存在,是否为空,一个一个对象排除问题1.equals()data.equals(“success”),当data为空时会抛出异常,应当字符串在前2.初始化了忘记赋值如Map map;map.put(),忘记给map初始化具体类了正确:Map map=n...原创 2019-02-22 13:31:08 · 1210 阅读 · 0 评论 -
java前后端使用ajax数据交互(简单demo)
文章目录参考文献一、导入ajax二、前端写script脚本三、后端的servlet代码参考文献利用ajax和servlet实现前后端数据交互(json)前后端数据交互一、导入ajax<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js">先在前端导入jQuery二、前端写script脚本wind...原创 2019-01-23 13:46:24 · 14421 阅读 · 4 评论 -
不借助框架只用原生servlet实现文件上传功能demo
文章目录一、前端代码二、servlet后端代码三、注意的点一、前端代码<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head> <m原创 2019-01-31 18:19:56 · 508 阅读 · 0 评论 -
初步了解什么是java nio
文章目录参考文献一、概念参考文献深入理解Java NIOJava NIO?看这一篇就够了!一、概念在java1.4中引入了nio类,完整名字为new input output ,是一种同步非阻塞的io模型。他的nio主要由三大块构成,channel管道、buffer缓存区、selector选择区。数据从管道进入缓存区,在缓存区写入;读取则是先读取到缓存区中,然后再通过管道输出。选择区...原创 2019-01-19 20:44:20 · 318 阅读 · 0 评论 -
java线程池
java线程池参考文献为什么需要线程池?ThreadPoolExecutor类参考文献Java并发编程:线程池的使用为什么需要线程池?并发编程里,每个线程会执行一些任务。当任务处理完毕后,线程的生命周期就会结束销毁。但有一个问题就是线程频繁创建与销毁需要耗费大量的资源,如果存在可以复用线程的方法那么运行效率就会大大提升,线程池的概念就出现了。线程池的基本概念就是创建一批线程,然后当有任务...原创 2018-12-31 14:10:07 · 93 阅读 · 0 评论 -
java线程优先级和守护线程的概念
线程优先级和守护线程的概念优先级守护线程守护线程与用户线程区别参考文献优先级java的线程优先级总共有10个级别,从1到10,1为优先级最小,10为最大。通过线程的setPriority(int)方法来设置优先级。优先级也并非绝对的优先级,低优先级的线程有时候还是会先于高优先级的线程运行守护线程java线程分为两种,用户线程即普通的线程包括主线程、以及守护线程。守护线程主要用于后台提供...原创 2018-12-25 10:13:05 · 167 阅读 · 0 评论 -
java io流汇总
io,input、output的缩写,意思为输入输出,传统的io方式是基于流的形式实现出流。输入流&输出流java中所有的输入流都继承了InputStream抽象类,负责读取字节信息,一般通过read()方法。反之输出流继承了OutputStream,通过write()方法写入。常见的操作需要捕获IOException。ByteArrayInputStream&ByteAr...原创 2018-12-24 21:32:11 · 127 阅读 · 0 评论 -
多线程同步方法汇总
多线程同步方法汇总为什么需要同步?synchronized关键字使用同步锁线程通信Volatile关键字参考文献为什么需要同步?多个线程同时访问一个对象时,可能会同时出现读写这个对象,那么这个对象的状态就会混乱,从而出现异常。synchronized关键字可以用于修饰代码块和方法,让修饰的代码可以同时运行使用同步锁Lock的系列子类等常见锁,悲观锁的形式保证同步,具体锁的种类可以查看我...原创 2018-12-29 13:26:05 · 106 阅读 · 0 评论 -
多线程的通信
多线程的通信为什么需要通信?怎么样实现?等待唤醒机制Conditionsleep/yield/joinCyclicBarrier栅栏管道通信机制参考文献为什么需要通信?当我们在多并发的环境下多个线程同时完成一个任务时,我们需要线程之间相互协调,如果没有一个合理的通信机制,那么线程之间相互争夺对象会造成很大的内耗,所以需要一个合理的通信机制。怎么样实现?可以根据不同的环境,有不同的机制实现。...原创 2018-12-28 13:50:31 · 155 阅读 · 0 评论 -
Java比较实用的三种集合类
java集合类哪三种?1.map集合类1.1hashmap1.2treemap1.3hashtable1.4concurrenthashmap2.list集合类2.1arraylist2.2linkedlist2.3Vector3.Set3.1hashset3.2linkedhashset3.3 treeset参考文献哪三种?四种集合类对应四个接口1.map接口,常见的实现有hashmap、...原创 2018-12-20 13:34:01 · 185 阅读 · 0 评论