-
常用API_1
所属栏目:[Java] 日期:2020-12-15 热度:70
API API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学 习这些类如何使用即可。所以我们可[详细]
-
java调用html模板发送html内容的邮件
所属栏目:[Java] 日期:2020-12-15 热度:90
在项目需要发送邮件,普通内容的邮件觉得太单调、太丑,没逼格,所以说直接把用到的邮件内容做成一个html模板,发送之前将对应参数替换掉,发送html内容的高逼格邮件。 首先需要引用jar包,这就不多说了,直接贴代码: 1.发送邮件处理 1 String host = "" ;[详细]
-
Android开发 Failed to install *.apk on device 'emulat
所属栏目:[Java] 日期:2020-12-15 热度:81
在运行android 程序时出现这样的错误: Failed to install homework.apk on device 'emulator-5554': EOF? java.io.IOException: EOF 在网上查找资料,问题在于 adb ,可能的原因在于 解决方案: 一:打开cmd命令提示符,先执行adb kill-server,再执行adb sta[详细]
-
Android 多语言
所属栏目:[Java] 日期:2020-12-15 热度:175
Android 多语言 在res文件上右击创建新的values文件 在strings文件中设置多语言 3. 在layout文件中使用 @strings/key 引用相应资源[详细]
-
windows上JSP开发环境全搭建
所属栏目:[Java] 日期:2020-12-15 热度:90
JSP开发环境全搭建 ???? 最近需要用到JSP做项目,所以要配置JSP的开发环境,总结一下配置步骤以备以后再配置需要。 配置JAVA开发环境,配置JDK 下载JDK,在这里下载开发所需的JDK,可以根据自己电脑的实际情况选择64位或32位来进行选择下载 执行下载好的安装[详细]
-
JSP利用freemarker生成基于word模板的word文档
所属栏目:[Java] 日期:2020-12-15 热度:200
利用freemarker生成基于word模板的word文档 freemarker简介 ? FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生[详细]
-
电商促销后台逻辑
所属栏目:[Java] 日期:2020-12-15 热度:188
电商所谓营销,归根结底都是订单金额的变化;如果我们清楚的知道订单金额的计算流程是怎样的,那么我们只需要顺着系统的计算流程做促销,就不用担心各种促销类型之间产生重叠或者冲突的情况了。当我们知道这个关系后,就可以将营销活动区分为三种类型:改商[详细]
-
Java生成全局唯一ID代码演示
所属栏目:[Java] 日期:2020-12-15 热度:144
看了GitHub上的两个生成唯一ID的算法程序(一个出自百度,一个出自美团),打算运行着试试看,至于原理什么的文档上讲得很详细了,此处不再一一粘贴了,此处只演示代码 https://github.com/baidu/uid-generator https://github.com/zhuzhong/idleaf 百度UID[详细]
-
Java Fork/Join 框架
所属栏目:[Java] 日期:2020-12-15 热度:155
简介 从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。 这种思想和MapReduce很像( input -- split -- map -- reduce -- output ) 主要有两步: 第一、任[详细]
-
JDK1.8中HashMap实现
所属栏目:[Java] 日期:2020-12-15 热度:101
JDK1.8中的HashMap实现跟JDK1.7中的实现有很大差别。下面分析JDK1.8中的实现,主要看put和get方法。 构造方法的时候并没有初始化,而是在第一次put的时候初始化 putVal方法的主要逻辑是这样的: 1、如果数组还没有初始化(数组长度是0),则先初始化 2、通过[详细]
-
Java 8 Stream
所属栏目:[Java] 日期:2020-12-15 热度:163
1、关于Java8部分新特性介绍 Java8的新特性很多,在此就不一一介绍了,这里只说一下我自己在工作用用得比较多的几点: 1.1、Lambda表达式 Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中) 语法格式: (parameters) - expression 或者 (para[详细]
-
CompletableFuture基本用法
所属栏目:[Java] 日期:2020-12-15 热度:138
异步计算 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 JDK5新增[详细]
-
java内存模型
所属栏目:[Java] 日期:2020-12-15 热度:194
共享内存模型[详细]
-
Java 8 Documentation Download
所属栏目:[Java] 日期:2020-12-15 热度:65
Java API 下载方法 https://www.oracle.com/index.html https://www.oracle.com/java/technologies/java-se.html http://www.oracle.com/technetwork/java/javase/downloads/index.html http://www.oracle.com/technetwork/java/javase/documentation/jdk8-d[详细]
-
令牌桶算法限流
所属栏目:[Java] 日期:2020-12-15 热度:100
限流 限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。常用的限流算法有令牌桶和和漏桶,而Google开源项目Guava中的RateLimiter使用的就是令牌桶控制算法。 在开发高并发系统时有三把利器用[详细]
-
并发减库存
所属栏目:[Java] 日期:2020-12-15 热度:55
秒杀的场景有很多,比如:抢购、抢票、抢红包等等。总之,就是在极短时间内有大量的请求。 我们都知道,这种系统设计的大方向就是限流,即通过层层过滤,最终只让相对较少的请求进入到核心业务处理层。 这里不谈秒杀设计,不谈使用队列等使请求串行化,就谈[详细]
-
利用jmap和MAT等工具查看JVM运行时堆内存
所属栏目:[Java] 日期:2020-12-15 热度:178
jmap JDK自带了一些工具可以帮助我们查看JVM运行的堆内存情况,常用的是 jmap 命令 jmap -heap pid 打印堆的使用情况 那么,从这个输出中我们也可以大致看出堆的结构,分为Young Generation (年轻代) 和 Old Generation (老年代) Young Generation又被划[详细]
-
JDK1.8中的线程池
所属栏目:[Java] 日期:2020-12-15 热度:96
? 上面这段代码一直在用,面试的时候也经常被问到,却从未深究过,不知道线程池到底是怎么回事,今天看看源代码,一探其究竟 线程池主要控制的状态是ctl,它是一个原子的整数,其包含两个概念字段: workerCount:有效的线程数量 runState:线程池的状态 为[详细]
-
Java导出CSV文件
所属栏目:[Java] 日期:2020-12-15 热度:82
? 以前导出总是用POI导出为Excel文件,后来当我了解到CSV以后,我发现速度飞快。 如果导出的数据不要求格式、样式、公式等等,建议最好导成CSV文件,因为真的很快。 虽然我们可以用Java再带的文件相关的类去操作以生成一个CSV文件,但事实上有好多第三方类库[详细]
-
如何合理地估算线程池大小?(转载)
所属栏目:[Java] 日期:2020-12-15 热度:162
如何合理地估算线程池大小? 这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成[详细]
-
Java导出Excel
所属栏目:[Java] 日期:2020-12-15 热度:127
前言 众所周知,导Excel分为两步: 抓取数据(查数据) 写数据到Excel文件 这两步都比较耗时间,一般我们从数据库查数据,然后组装数据,最后写数据。 查数据不是本节的重点,主要是SQL,索引这一块,此处不讨论。本节重点是写数据。 问题 当数据量小(比如[详细]
-
ThreadLocal原理
所属栏目:[Java] 日期:2020-12-15 热度:177
1.? ThreadLocal是什么 ThreadLocal提供线程局部变量。这些变量与普通的变量不同之处在于,每个访问这种变量的线程(通过它的get或set方法)都有自己的、独立初始化的变量副本。 ThreadLocal实例通常是希望将状态关联到一个线程的类的私有静态字段(比如,us[详细]
-
Java NIO
所属栏目:[Java] 日期:2020-12-15 热度:53
1. 概述 Java NIO (New IO) 由以下三个核心组件组成: Channels (通道) Buffers (缓冲区) Selectors (选择器) 通常,在NIO中,IO从一个Channel开始。数据可以从Channel中读到Buffer,也可以从Buffer中写道Channel。而Selector允许单个线程处理多个Chan[详细]
-
问题排查与优化
所属栏目:[Java] 日期:2020-12-15 热度:117
通常,功能上线之前,压测是必不可少的,可以从以下几个点进行优化 : 1、Redis连接数、大key(hash key)。但凡用到线程池的地方,都是有优化空间的,合理设置线程池参数可以提高吞吐量。这些参数的设置是经过很多次的压测调整再压测这样试出来的; 2、Dubbo[详细]
-
最佳内存缓存框架Caffeine
所属栏目:[Java] 日期:2020-12-15 热度:198
Caffeine是一种高性能的缓存库,是基于Java 8的最佳(最优)缓存框架。 Cache(缓存) ,基于Google Guava,Caffeine提供一个内存缓存,大大改善了设计Guava's cache 和 ConcurrentLinkedHashMap 的体验。 1 LoadingCache Key , Graph graphs = Caffeine . n[详细]