首页 文章 精选 留言 我的

精选列表

搜索[Java],共10000篇文章
优秀的个人博客,低调大师

使用 java 基础语言实现万年历

已知(只有一个已知条件): 1900年1月1号是星期一 实现的功能: 通过本条件来写一个输入相应的年份和月份就可以在控制台输出相应月份月历 基本的思路: 已知1900年的1月1日是周一,要输出这个月的月历首先最需要知道的就是本月1号是周几,这样我们才可以排列出来这个月的月历第一天的位置 本月1号距离1900年1月1号多少天设为days,这个天数对7取余数就可以求出本月1号是周几 0周一 | 1周二 | 2周三 |3 周四 | 4周五 | 5周六 | 6周日 天数 = (输入的年份 - 1900)* 365 (如果是闰年在加一天) 闰年的判断条件(可以被4整除但是不能被100整除的 或者 是可以被400整除的年份) 第二点就是要知道这个月有多少天 本月的天数就是从1月份到12月份判断(中间要注意平年和閏年的2月份不一样,加一个条件判断) 第三点就是每次要在周六的日期输出之后换到下一行(以周日为每周的第一天的情况) 判断日期为周几的方法和判断1号的方法是一样的,为了方便可以直接在本月1号的时间上加上今天的日期减一就可以知道今天的时间 距离1900年1月1号的时间差,对7取余就知道是周几了 下面是个人写的代码: public class WanNianLi { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 欢迎界面 System.out.println("*************************"); System.out.println("******** 万年历 *********"); System.out.println("*************************"); System.out.print("请输入年份:"); // 年份 int year = input.nextInt(); System.out.print("请输入月份:"); // 月份 int month = input.nextInt(); boolean isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0; /** * 当前月份的月1日距离1900 年的1月1日多少日 */ int dates = 0; for (int i = 1900; i < year; i++) { dates += 365; //判断是不是闰年,如果是闰年就在dates的基础上+1天 if ((i % 4 == 0 && i % 100 != 00) || (i % 400 == 0)) { dates += 1; } // System.out.println(i + "年:" + dates); } // System.out.println(dates); // 1、3、5、7、8、10月份加31天,3、6、9、11月加30天,平年2月加28,闰年2月加29天 for (int i = 1; i < month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: dates += 31; break; case 4: case 6: case 9: case 11: dates += 30; break; case 2: if (isRun) { dates += 29; } else { dates += 28; } break; } } // System.out.println(dates); System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); /** * 1号需要空几个制表符 */ int week = dates % 7; switch (week) { case 0: System.out.print("\t");// 周一 break; case 1: System.out.print("\t\t");// 周二 break; case 2: System.out.print("\t\t\t");// 周三 break; case 3: System.out.print("\t\t\t\t");// 周四 break; case 4: System.out.print("\t\t\t\t\t");// 周五 break; case 5: System.out.print("\t\t\t\t\t\t");// 周六 break; default: break; } /** * 选择输出的这个月的天数 */ int days = 31; switch (month) { case 4: case 6: case 9: case 11: days = 30; break; case 2: if (isRun) { days = 29; } else { days = 28; } break; } /** * 循环输出本月的每一天,判断如果是周六就换行 */ for (int i = 1; i <= days; i++) { System.out.print(i + "\t"); if ((dates + i - 1) % 7 == 5) { System.out.println(); } } } } 结果演示:

优秀的个人博客,低调大师

Java编程基础阶段笔记 day06 二维数组

​ 二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 二维数组的元素是一维数组 二维数组的声明和初始化 String [][] persons; String persons2[][]; String [] persons3[]; 二维数组的初始化 //静态初始化 persons = new String[][]{{"小龙哥","110"},{"小仓","119"},{"小强","120"}}; //声明和初始化不能分开 int[][] numbers = {{1,2},{3,4},{5,6}}; //动态初始化 persons2 = new String3; //3值得是二维数组长度,2指的是二维数组元素(一维数组)的长度 //创建一个长度为3的二维数组,二维数组的元素为null persons3 = new String[3][]; persons3[0] = new String[2]; persons3[1] = new String[3]; 获取二维数组的值,元素的值 String aString = persons3[2][2]; int a = persons3.length; int b = persons3[0].length; 遍历二维数组的元素 //遍历二维数组 for (int i = 0; i < numbers.length; i++) { for (int j = 0; j < numbers[i].length; j++) { System.out.print(numbers[i][j] + " "); } System.out.println(); } 二维数组内存解析 打印杨辉三角 使用二维数组打印一个 10 行杨辉三角。 【提示】 第一行有 1 个元素, 第 n 行有 n 个元素 每一行的第一个元素和最后一个元素都是 1 从第三行开始, 对于非第一个元素和最后一个元素的元素。即: yanghuii = yanghuii-1 + yanghuii-1; public class YangHui { public static void main(String[] args) { //创建二维数组 int[][] numbers = new int[10][]; //给二维数组的元素赋值 for (int i = 0; i < numbers.length; i++) { //创建二维数组的元素(一维数组) numbers[i] = new int[i + 1]; //给二维数组中的元素的第一个元素和最后一个元素赋值 numbers[i][0] = numbers[i][i] = 1; //遍历二维数组中的元素(一维数组),不包括第一个和最后一个 for (int j = 1; j < numbers[i].length - 1; j++) { numbers[i][j] = numbers[i - 1][j] + numbers[i - 1][j - 1]; } } //遍历二维数组 for (int i = 0; i < numbers.length; i++) { for (int j = 0; j < numbers[i].length; j++) { System.out.print(numbers[i][j] + " "); } System.out.println(); } } } Arrays工具类使用 int[] ns = {5,2,30,4,1,90}; int[] ns2 = {5,2,3,4,1}; //比较两个数组是否相等 : 比较的是内容,个数,顺序 boolean equals = Arrays.equals(ns, ns2); System.out.println(equals); //输出数组信息 String nsStr = Arrays.toString(ns); System.out.println(nsStr); //将指定的数值填充到数组中 Arrays.fill(ns, 100); System.out.println(Arrays.toString(ns)); //对数组中的内容进行排序 Arrays.sort(ns); System.out.println(Arrays.toString(ns)); //二分法查找 - 使用前必须先排序 - 如果找不到会返回负数 int index = Arrays.binarySearch(ns, 4); System.out.println(index); 数组中常见的异常 //1.数组下角标越界 :ArrayIndexOutofBoundsException int[] numbers = new int[2]; //索引值合理范围 :0 ~ 长度-1 System.out.println(numbers[2]); //发生了异常 System.out.println(numbers[-1]); //发生了异常 //2.空指针异常 :: NullPointerException String str = "aaa"; str = null; System.out.println(str.toUpperCase());//发生了异常 String[] names = new String[2]; System.out.println(names[0].toUpperCase());//发生了异常 String[][] persons = new String[3][]; System.out.println(persons[0][0]); //发生了异常 System.out.println(persons[0].length); //发生了异常 习题:数组声明 声明:int[] x,y[]; 在给x,y变量赋值以后,以下选项允许通过编译的是: a ) x[0] = y; //类型不符,x[0]为int类型,而y为引用类型 b) y[0] = x; //可以 c) y0 = x; //类型不否,x为引用类型,而y0为int类型 d) x0 = y; //x为一维数组 e) y0 = x[0]; //可以 f) x = y; //类型不符,一个是一维数组,一个是二维数组 提示: 一维数组:int[] x 或者int x[] 二维数组:int[][] y 或者 int[] y[] 或者 int y[][] 总结Summary 二维数组遍历二维数组内存解析杨辉三角Arrays工具类数组常见异常

优秀的个人博客,低调大师

突破Java面试(49)-分库分表之后全局id的生成

0 Github 1 面试题 分库分表之后,id主键如何处理? 2 考点分析 其实这是分库分表之后你必然要面对的一个问题,就是id咋生成? 要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持! 下面来看看有哪些可行方案~ 3 数据库自增id 分库分表的id主键问题 系统每次得到一个id,都是 往一个库的一个表里插入一条没什么业务含义的数据 然后获取一个数据库自增id 拿到该id后,再写入对应的分库分表中 3.1 优点 就是方便简单,谁都会用 3.2 缺点 就是单库生成自增id,要是高并发的话,就会有瓶颈 如果你硬是要改进,那就专门开一个服务 该服务每次就拿到当前id最大值 然后自己递增几个id,一次性返回一批id 然后再把当前最大id值修改成递增几个id之后的一个值 但是无论怎么说都是基于单个数据库的! 3.3 适用场景 分库分表就俩原因 要

优秀的个人博客,低调大师

突破Java面试(35)-Dubbo负载均衡及动态代理的策略

0 Github 1 面试题 Dubbo负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 2 考点分析 这些都是关于Dubbo必须知道,基本原理,序列化是什么协议,具体用dubbo的时候,如何负载均衡,如何高可用,如何动态代理等. 就是看你对Dubbo掌握程度 工作原理:服务注册,注册中心,消费者,代理通信,负载均衡 网络通信、序列化:dubbo协议,长连接,NIO,hessian序列化协议 负载均衡策略,集群容错策略,动态代理策略:dubbo跑起来的时候一些功能是如何运转的,怎么做负载均衡?怎么做集群容错?怎么生成动态代理? dubbo SPI机制:你了解不了解dubbo的SPI机制?如何基于SPI机制对dubbo进行扩展? 3 负载均衡策略 3.1 random loadbalance dubbo默认采用random load balance,

优秀的个人博客,低调大师

突破Java面试(23-9) - 深入解析Redis哨兵底层原理

​# 0 Github 1 sdown和odown转换机制 两种失败状态 1.1 概念 sdown主观宕机一个哨兵自己觉得一个master宕机 odown客观宕机quorum数量的哨兵都觉得一个master宕机 1.2 达成条件 sdown一个哨兵ping一个master,超过is-master-down-after-milliseconds odown一个哨兵在指定时间内,收到了quorum指定数量的其他哨兵也认为那个master是sdown了,那么就认为是odown 2 自动发现机制 通过Redis的pub/sub实现哨兵互相之间的发现,每个哨兵都会往__sentinel__:hello这个channel发一个消息,此时所有其他哨兵都可消费到该消息,于是感知到其他哨兵的存在. 每隔2s,哨兵都会往自己监控的某个master+slaves对应的__

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册