Java
RAYFUXK
这个作者很懒,什么都没留下…
展开
-
玩转Java线程池(3):如何用松耦合的思想来修改创建线程的策略?
创建线程的策略原创 2020-05-30 17:35:09 · 268 阅读 · 0 评论 -
玩转Java线程池(2):Tomcat是如何修改创建线程的策略的?
0 线程池创建线程的过程是怎样的?比如我创建了一个线程池ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 15, 60, TimeUnit.MINUTES, new ArrayBlockingQueue&...原创 2020-05-24 11:45:30 · 734 阅读 · 0 评论 -
玩转 Java 线程池(1):线程池到底应该怎么建?
0 创建线程池的核心问题根据阿里巴巴的《Java开发规范》里的一条规定,这条规定指出了,当我们想使用线程池的时候,最好不要偷懒,最好要自己手动创建线程池,那么问题就来了,手动创建线程池到底要如何去创建?1 我的核心线程书到底应该创建多少?2 我的阻塞队列到底需要多大?3 用默认的创建线程工厂还是自己实现?4 拒绝策略到底用哪个?5 改变线程池创建线程的策略...原创 2020-05-02 16:32:57 · 338 阅读 · 0 评论 -
Java 中的移位那些事
移位之所以会有移位操作,最重要的因为计算机中的数据就是用二进制的格式来保存的。所以,在计算机中的加减乘除都是要计算机利用移位操作来完成的。但是移位会伴随着一个问题的产生,就是移位操作后的,空出来的位置要补什么?根据补充的逻辑不同,移位操作又可以分成 “逻辑移位” 和 “算术移位” ,而且二者最主要的区别是在一个动作右移的动作上。因为数字在计算机中都是以二进制来存储的,这样就会产生一个问题,你要...原创 2020-03-11 17:01:03 · 263 阅读 · 0 评论 -
在并发编程中我们常说的“竞态”是什么?
1 何谓“竞态”之前在学习一篇文章的时候,就看到“竞态”,但是不知道什么意思,文章中也没有对“竞态”做更多的解释,后来经过一番的探索,终于弄的差不多明白了,今天写点总结。首先,我们要明白“竞态”是什么。先说我的结论吧,“竞态”就是在多线程的编程中,你在同一段代码里输入了相同的条件,但是会输出不确定的结果的情况。我不知道这个解释是不是够清楚,我们接着往下看,下面我们用一段代码来解释一下啊。出现...原创 2020-01-19 16:17:20 · 1098 阅读 · 0 评论 -
Java 11 的String是如何优化存储的?
优化的依据是什么?Java 中的 char 是两个byte大小,因为我们大多数的时候操作数据都是都是用拉丁语系的字符的,而拉丁语系的字符只要用byte就足够存储了,根本就不需要char。所以如果我们发现发现了一个字符串里只有拉丁语系的字符,那么我们全都用byte,这样就比原来的用char来存储节省一半的存储空间了。具体实现思想是什么?判断一个字符串里是否都是拉丁语系的字符,如果全都是,那么O...原创 2019-11-21 23:37:15 · 366 阅读 · 0 评论 -
第56周 ARTS 2019 11 10
A: 384. 打乱数组R: Java 8 HashMap Implementation and PerformanceT: B+树S: 无人机找小男孩原创 2019-11-11 21:37:11 · 237 阅读 · 0 评论 -
第55周 ARTS 2019 11 03
Algorithm 289. 生命游戏Review Become a Master of Java Streams — Part 1: Creating StreamsTip/Tech 数据库的索引Share 机器学习就是个炒作Algorithm289. 生命游戏https://leetcode-cn.com/problems/game-of-life/这他的难点就在于,你要原...原创 2019-11-03 13:16:33 · 168 阅读 · 0 评论 -
第54周 ARTS 2019 10 27
Algorithm 103 二叉树的锯齿形层次遍历Review Become a Master of Java Streams — Part 1: Creating StreamsTip/Tech 数据库的索引Share 机器学习就是个炒作103 二叉树的锯齿形层次遍历https://leetcode-cn.com/problems/binary-tree-zigzag-level-...原创 2019-10-27 10:43:51 · 1298 阅读 · 0 评论 -
第51周 ARTS 2019 10 06
https://leetcode-cn.com/problems/distance-between-bus-stops/class Solution { public int distanceBetweenBusStops(int[] distance, int start, int destination) { if (distance == null || dist...原创 2019-10-07 15:25:22 · 234 阅读 · 0 评论 -
读Java 11 源码(4)Hashtable
数据存在那?一个用Entry为元素的数组。private transient Entry<?,?>[] table;table,这个是由Entry这个内部类组成的数组,我们来看看这个类的代码。private static class Entry<K,V> implements Map.Entry<K,V> { final int hash; ...原创 2019-10-04 14:02:51 · 153 阅读 · 0 评论 -
狄克斯特拉算法--Java实现
狄克斯特拉算法(Dijkstra’s algorithm)为了什么而存在这个算法主要用在图这种数据结果中,而且是比较特殊的 加权图 。这里引用《算法图解》中的一个图片来进行讲解。比如我们要从双子峰到金门大桥,我们想在最短的时间内到达。这里就不是段数最少的问题了,因为条道路都有耗时的时间,可以看成每条路的权重,你要找的就是最后权重累加最少的路径。上面属于加权图,计算这种加权图的最短路径的方...原创 2019-10-02 06:59:01 · 845 阅读 · 0 评论 -
数据结构(2)堆
这里以最大堆来作为例子其实堆的本质上是个树,而且还是个完全二叉树。这种完全二叉树的堆,咱们也可以叫它二叉堆,但是这种完全二叉树个性质,导致了它与众不同,就像二叉搜索树一样。二叉搜索书就有个特殊的性质:左子树的左右节点一定小于当前节点,右子树的及节点一定大于等于当前节点。最大堆(最大二叉堆)特殊性质:孩子节点一定比当前节点小。最小堆(最小二叉堆)特殊性质:孩子节点一定比当前节点大。...原创 2019-09-29 16:32:31 · 152 阅读 · 0 评论 -
读Java11 源码(2)LinkedList
增加节点public void add(int index, E element) { checkPositionIndex(index); if (index == size) linkLast(element); else linkBefore(element, node(index));}private void checkPos...原创 2019-09-22 17:45:32 · 140 阅读 · 0 评论 -
读 Java 11 源码(1)ArrayList
查找这个最简单,基本逻辑上就是遍历,然后匹配,但是在匹配上,有讲究。/** * Returns the index of the first occurrence of the specified element * in this list, or -1 if this list does not contain the element. * More formally, return...原创 2019-09-20 09:41:35 · 174 阅读 · 0 评论 -
单例模式(一):单例的七种实现
单例模式是什么?单例模式为什么存在?单例模式为什么存在?原创 2019-09-11 19:59:07 · 241 阅读 · 0 评论 -
排序算法(2)归并排序
时间复杂度:非原地排序归并思想原创 2019-09-08 15:47:28 · 259 阅读 · 0 评论 -
实现一个最基本的锁
首先要我们要确定这个锁的对象是否已经被锁了用一个布尔类型的变量来确认是否被加锁了。需要一个集合来存放那些还没得到锁,在等候锁的线程。需要一个判断是否是当前的线程的对象。private Thread currentThread;private boolean locked = false;private final List<Thread> blockedList = new...原创 2019-09-05 18:31:23 · 257 阅读 · 0 评论 -
读Java 11 源码(3)HashMap
1 为什么是数组+链表数组是怎么来的?先来看个成员变量。/*** The table, initialized on first use, and resized as* necessary. When allocated, length is always a power of two.* (We also tolerate length zero in some operation...原创 2019-09-23 22:17:00 · 386 阅读 · 0 评论 -
Java finalize() 在对象回收之前执行某项操作
如果在一个对象被回收之前要进行某些操作,该如何?在Object类中有个finalize()方法,方法定义如下:protect void finalize() throws Throwable一个类只要覆写此方法即可在释放对象之前进行某些操作。package com.gzu.eleven.forth.two;/** * @author RayFuck Aug 5, ...原创 2016-08-05 11:37:54 · 1241 阅读 · 1 评论 -
开发中遇到的问题
1. Java 关于判断文件是否存在:public int saveCSV(String username) { String savepath = "D:/test"; String savePathAddUser = savepath + "/" + username; File savePathFile = new File(savePathAddUser); ...原创 2016-10-12 17:33:52 · 138 阅读 · 0 评论 -
Java判断是否是Ajax异步请求
是否是 Ajax 请求: ublic static boolean isAjaxRequest(HttpServletRequest request){ String accept = request.getHeader("accept"); String xRequestedWith = request.getHeader("X-Requested-With");...2017-06-26 11:12:34 · 227 阅读 · 0 评论 -
如何解决Unsupported major.minor version 52.0问题?
在编译器是1.8 的情况下,部署代码到服务器上,结果一直报错,网上一查,结果才知道,是因为环境的版本和贬义的版本不同而引起的错误。我操。。。十分搞笑是不是。。改一下自己的环境的版本就可以了。...原创 2017-08-01 21:03:44 · 268 阅读 · 0 评论 -
Eclipse 将第三方jar包打包进war中
项目中使用了第三方的jar包,在打成war包部署时,报了个错找不到引用的jar包,查了一下,竟然没有打进war包里去。主要是引用第三方jar包时,没有使用maven,直接在属性里引入的,所以没有打包成功。查了下资料,做如下更改: 项目--右键属性---deployment assembly--选择add -- add file --将第三方包引进来。 这样,在部署的时候,...原创 2017-08-02 10:37:32 · 716 阅读 · 0 评论 -
Java 必读书籍
一下是我看到专栏的总结,方便自己查看以便有路线可以遵循《Java编程思想》《Effective Java》《Head First 设计模式》《Java并发编程实战》 Brian Goetz《深入理解 Java 虚拟机》周志明《Java 性能优化权威指南》Charlie Hunt & Binu John《Spring 实战》(Spring In Action)《Netty...转载 2019-01-06 13:15:26 · 314 阅读 · 0 评论 -
ARTS 2019 03 03 (20)
ARTSAlgorithm:每周至少做一个leetcode的算法题;Review:阅读并点评至少一篇英文技术文章;Tip/Tech:学习至少一个技术技巧;Share:分享一篇有观点和思考的技术文章;Algorithm226. 翻转二叉树https://leetcode-cn.com/problems/invert-binary-tree/本周琐事比较多,所以就做了一些简单的关于...原创 2019-03-03 17:59:09 · 148 阅读 · 0 评论 -
并发测试的Java实现
如果单纯的说并发测试,现在有很多现成的测试工具就可以做到,比如Jmeter,但是如果你有需要自己做一些简单的接口测试的话,可以用下面的代码。并发测试Java实现的核心代码:(1)没有返回值的的核心代码:public void testCycleBarrier () { // 并发次数 int testCount = 100; CyclicBarrier cyclicBarrie...原创 2019-06-15 09:04:20 · 3105 阅读 · 0 评论 -
LeetCode 第3题 无重复字符的最长子串(Java)
3. 无重复字符的最长子串https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/最初始的解法方法就是遍历暴力每个元素,然后以那个元素为起始点,然后进行判断是否出现了重复元素,这样时间的复杂度就是O(n2)O(n^2)O(n2),这样的时间复杂度有点高,基本上已经预定了时间超出限制。所以我...原创 2019-07-28 17:13:09 · 129 阅读 · 0 评论 -
在Java中玩转时间
1 获取前几个月每个月的第一天和最后一天我们先来看看获取这个月的第一天和最后一天的日期的代码:public static void main(String[] args) { SimpleDateFormat sdfMonthDay = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getI...原创 2019-09-01 20:49:29 · 125 阅读 · 0 评论