
java
文章平均质量分 51
Kent Chiang
这个作者很懒,什么都没留下…
展开
-
每日一练防手生
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。public class GivenNumPlusDemo { public static void main(String[] args) { System.out.println("请输入运算的数字:"); Scanner scanner = null; try { ...原创 2022-02-11 23:57:04 · 208 阅读 · 0 评论 -
每日一练防手生
题目:输入一个字符串,分别统计出英文字母、数字、空格和其他字符的数量。public class CharStatDemo { public void analyseNum(String content) { int eng_letters_count = 0; int space_count = 0; int figure_count = 0; int other_count = 0; for (int i = ...原创 2022-02-10 22:55:00 · 235 阅读 · 0 评论 -
每日一练防手生
题目:给定两个正整数,输出最大公约数和最小公倍数public class GCDDemo { public void printGCDNum(int a, int b) { int divisorNum = getDivisorNum(a, b); System.out.println(a + "和" + b + "的最大公约数为" + divisorNum); System.out.println(a + "和" + b + "的最小公被数为" ...原创 2022-02-09 22:17:10 · 218 阅读 · 0 评论 -
每日一练防手生
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。public class PrimeFactorDemo { private final static int START_FACTOR = 2; public void printPrimeFactor(int i) { int factor = START_FACTOR; System.out.print(i + "="); int leftNum = i; ...原创 2022-01-29 23:08:13 · 512 阅读 · 0 评论 -
每日一练防手生
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?public class RabbitNum { private static final int BASE_NUM = 2; /** * 递归 * * @param dayNum * @return */ public int getRabbitNum2(int dayNum) { ...原创 2022-01-28 16:26:22 · 465 阅读 · 0 评论 -
关于Thread.join()方法的理解
一、用法:main方法中调用其他线程的join方法public static void main(String[] args) {...Thread t1 = new Thread(runnable);t1.start();t1.join();...}二、源码解读:public final synchronized void join(long millis)throws InterruptedException {...if (millis == 0原创 2021-12-29 15:36:05 · 335 阅读 · 0 评论 -
关于ForkJoin框架的一点小坑
一、使用ForkJoinPool执行ForkJoinTask,如果main方法中使用pool.execute(task);主函数中没有其他操作,会看不到task执行结果。原因分析:1.execute是异步执行(不需要等待task执行完毕主函数就继续执行下面的语句);invoke是同步执行,主函数等待invoke执行完毕再继续执行。2.主线程是非守护线程,ForkJoinPool执行任务的线程是守护线程。主线程执行execute后没有等...原创 2021-10-26 17:42:59 · 1514 阅读 · 0 评论 -
不定时练习之使用ForkJoin框架实现连续整数累加
public class PlusWithForkJoinTask extends RecursiveTask<Integer> { private static final int STEP = 200; private int startNum; private int endNum; public PlusWithForkJoinTask(int startNum, int endNum) { super(); this.s...原创 2021-10-26 17:40:28 · 142 阅读 · 0 评论 -
关于SynchronousQueue的一些随笔v1.1
最近用到了SynchronousQueue,也在网上查阅了相关资料,总感觉有些话说得让人费解,下面结合自己的理解总结下。1、一个不存储元素的阻塞队列。这句话就让我困惑了,不存储元素,那元素保存到哪里了?通过阅读源码,以非公平模式为例: ...casHead(h, s = snode(s, e, h, mode)) ...static SNode snode(SNode s, Object e, SNode next, int m...原创 2021-07-12 17:52:24 · 251 阅读 · 1 评论 -
ArrayBlockingQueue和LinkedBlockingQueue的区别
两者都是常用的有界阻塞队列,不同点如下:1、ArrayBlockingQueue是数组结构的(final Object[] items;),LinkedBlockingQueue是链表结构的(private transient Node<E> head;)。2、ArrayBlockingQueue直接保存对象,LinkedBlockingQueue需要把对象转为Node类型再保存。3、ArrayBlockingQueue读写共用一把锁,不能做到同时(任意时刻)读写,宏观上看是读写交替原创 2021-07-06 12:50:59 · 306 阅读 · 0 评论 -
实现两个线程交替执行
比如线程1输出0,线程2输出0,线程1输出1,线程2输出1。既然有先后顺序,优先想到和顺序有关的锁,ReenTrantLock的公平锁,等待时间最长的线程优先获取锁。代码如下:public class AlternateDemo { public static void main(String[] args) { Task task = new Task(); Thread ta = new Thread(task); Thread tb...原创 2021-02-05 22:28:21 · 641 阅读 · 0 评论 -
二叉树的遍历
目录3.后序遍历(左-右-根)2.中序遍历(左-根-右)1.先序遍历(根-左-右)二叉树如图: 无论我们用哪种顺序遍历二叉树,都要明确下面几点:什么时候入栈 什么时候出栈 什么时候打印由于先序遍历和中序遍历比较简单,就没详细...原创 2020-10-11 11:56:22 · 182 阅读 · 0 评论 -
ConcurrentHashMap1.8源码学习之扩容(链表结构)
读源码时,transfer(Node<K,V>[] tab, Node<K,V>[] nextTab)方法总是看不懂,咋整呢?画图吧,梳理下执行过程。初始容量16,标号为0的槽位下各节点Hash值如下图,intn= tab.lengthintrunBit= fh& n;Node<K,V> lastRun = f;如图,n=16,二进制位10000,如果fh是10000,那么runBit=10000&10000(16&1...原创 2020-10-06 21:55:32 · 796 阅读 · 0 评论 -
Java温故篇之位移运算符<<,>>和>>>
如题,3种位移运算符可分为2以10和-10为例:10原码、反码、补码:00000000 00000000 00000000 00001010-10原码:10000000 00000000 00000000 00001010 反码: 11111111 11111111 11111111 11110101 补码: 11111111 11111111 11111111 11110110(计算机中以补码表示负数)一、有符号位移<<,>>位移前后符号位不变...原创 2020-09-25 17:59:27 · 192 阅读 · 0 评论 -
for循环中删除元素结果不正确的原因分析及处理方法
先上代码:blic static void main(String[] args) { Integer[] arr = new Integer[] { 1, 2, 3, 4, 5, 4, 3, 2, 1 }; List<Integer> list = new ArrayList<Integer>(Arrays.asList(arr)); for (int i = 0; i < list.size(); i++) { ...原创 2020-09-10 18:07:30 · 495 阅读 · 0 评论 -
List使用遍历时删除元素抛出异常java.lang.UnsupportedOperationException
我们都知道集合在遍历时删除元素要么使用迭代器,要么倒序遍历删除,可是我这使用迭代器了为啥删除依然报错呢?找到List的remove()方法,Arrays$ArrayList->AbstractList,父类方法如下public E remove(int index) { throw new UnsupportedOperationException(); }乖乖,父类直接抛出异常,而且子类没有重写,等等,这个ArrayList怎么这么奇怪,还有前缀?原来是一...原创 2020-09-09 18:15:13 · 740 阅读 · 0 评论 -
发送ajax请求后收不到响应
向后台发送ajax请求,判断服务器处理完成后继续处理,结果发现一直获取不到处理完成状态代码如下:xmlHttp.onreadystatechange = callback;xmlHttp.open("GET", "AJAXServletClient?userName="+ $("#description").val(), true);xmlHttp.send(null);if原创 2018-01-29 22:35:40 · 7175 阅读 · 0 评论 -
使用ajax发送post请求后调用servlet成功前台没有调用success
使用jquery ajax发送请求后,前台success方法一直没有调用。经调试,返回状态码200说明请求发送成功,后台执行OK,猜测问题应该在前台解析返回值部分。错误示例:function validateName() {var name = $("#nameInputId").val();$.ajax({type:"POST",url:"JsonReturnClie原创 2018-02-14 23:02:02 · 1705 阅读 · 0 评论 -
mybatis集成spring开荒问题
1、log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).log4j:WARN Please initialize the log4j system properly.没有log4j.properties文件或log4j.properties配置不正确...原创 2018-03-15 22:42:34 · 264 阅读 · 0 评论 -
Result Maps collection already contains value for
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error c...原创 2018-03-19 21:44:37 · 909 阅读 · 0 评论 -
使用log4j控制台报错
log4j:ERROR Could not instantiate class [log4j].java.lang.ClassNotFoundException: log4j at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoad...原创 2018-10-18 21:43:41 · 1070 阅读 · 0 评论 -
Mybatis映射文件Mapper.xml中#和$的区别
关于Mapper.xml映射语句中什么时候用"#"什么时候用"$",已经有很多人做过总结,我最近在写项目时仍然遇到了一点问题,所以在这里结合项目文档和案例,再做一下总结,也作为个人的笔记,在这里再总结下。一、先看一下在mybatis api中关于"#"和"$"的描述1、"#"图 1来自于mybatis api “Mapper XML文件”章节, 简单来说"#"在编译时使用&原创 2018-12-06 20:02:51 · 9169 阅读 · 0 评论 -
Maven中央仓库地址整理
转载:http://blog.youkuaiyun.com/win7system/article/details/51260282最近做项目的时候,一直发现常用的oschina maven源一直都没有反应,后面发现原来oschina竟然关闭了maven源服务,后面经同事推荐了阿里云的maven源,这速度杠杠的Maven 中央仓库地址:1、http://www.sonatype.org/nexus/...转载 2018-12-30 00:05:45 · 1074 阅读 · 2 评论 -
线程知多少(一)线程实现数据共享的方式
一、继承Thread1、使用static关键字,使被共享的数据变为类变量,这样即使创建多个Thread对象,也可以使多个Thread对象共用类变量package demo.threadtest;public class TicketsThread extends Thread {private static int tickets = 500;public void ru...原创 2019-04-07 17:08:00 · 422 阅读 · 1 评论 -
彻底理解ThreadLocal
彻底理解ThreadLocal参考:http://www.iteye.com/topic/103804http://www.iteye.com/topic/777716源码分析 为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类) Thread 首先,在Thread类中有一行: /...转载 2019-05-15 19:10:50 · 227 阅读 · 0 评论 -
枚举及赋值
public enum EnumDemo { read(0), blue(1), green(2); private int value; EnumDemo(int value) { this.value = value; } public int getValue() { return value; ...原创 2019-08-14 17:15:11 · 1595 阅读 · 0 评论 -
Java线程间通信的同步问题、wait/notify使用
Java线程间通信简单来说就是多个线程同时操作同一个资源,比如一个线程设置了姓名、性别,另一个线程读取姓名、性别。伴随而来的就是同步问题:比如线程a先设置了张三、男,后设置了李四、女,线程b要打印这些信息,由于多线程的随机性,a设置张三、男后,然后a又设置了李四,还未设置性别时,b这时候读取数据,独到的就是李四、男,这样结果就不对了。解决方法就是加锁,保证a在赋值时,b没有读取;b读取时,a没原创 2017-12-09 17:25:03 · 328 阅读 · 0 评论