首页 文章 精选 留言 我的

精选列表

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

使用Java类加载SpringBoot、SpringCloud配置文件

版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/81750872 我们都知道平常在使用SpringBoot和SpringCloud的时候,如果需要加载一两个配置文件的话我们通常使用@Value("${属性名称}")注解去加载。但是如果配置文件属性特别多的时候使用这种方式就显得特别的不友好了。 比如说,我们要加载下方这个名为application.yml的配置文件。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 kafka: brokerAddress: 110.35.113.62:9092,123.27.143.72:9095,180.17.133.52:9096 smsTopic: testTopic smsCosumeGroup: testTopicGroup timerTaskTopic: timerTopic timerTaskGroup: timerGroup jvmNumbers: 3 security: authentication: jwt: secret: 0550224055e1848081dba46d8ad325f503fa141b tokenValidityInSeconds: 86400 此时我们有两种方式来简化这个加载方式 1 这种方式呢,是同过层层嵌套的方式一层一层的按照配置文件属性的方式来进行注入的。大家只要把这个类跟上方提供的配置文件进行对比就会明白它的方式了。(注意,下方的所有属性因为篇幅问题没有增加get、set方法,实际使用过程中请自行添加) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 @ConfigurationProperties(prefix = "application", ignoreUnknownFields = false) public class ApplicationProperties1 { private final Security security = new Security(); private final Kafka kafka = new Kafka(); public static class Kafka { private String brokerAddress; private String smsTopic; private String smsCosumeGroup; private String timerTaskTopic; private String timerTaskGroup; private String jvmNumbers; } public static class Security { private final Authentication authentication = new Authentication(); public static class Authentication { private final Jwt jwt = new Jwt(); public static class Jwt { private String secret; private long tokenValidityInSeconds; } } } } 2 这种方式就是以指定的配置前缀为依据去取配置(同上没有写get、set方法) 例如:kafka的配置可以这样来 1 2 3 4 5 6 7 8 9 10 11 12 @Configuration @ConfigurationProperties(prefix = "kafka",ignoreUnknownFields = false) @PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false) public class ApplicationProperties { private String brokerAddress; private String smsTopic; private String smsCosumeGroup; private String timerTaskTopic; private String timerTaskGroup; private String jvmNumbers; } 而Security的配置这样来 1 2 3 4 5 6 7 8 9 @Configuration @ConfigurationProperties(prefix = "security.authentication.jwt",ignoreUnknownFields = false) @PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false) public class ApplicationProperties { private String secret; private long tokenValidityInSeconds; } 补充 大家可能会注意到我上方的几个类中都没有写get和set方法,因为那个东西其实所占的篇幅实在是太长了。那么,有什么办法可以补救么,其实是有办法的,一个注解就可以全搞定哟。 什么?你不信,不信来看看呀:IDEA中使用lombok插件 结语 怎么样,学会这个以后Leader还会担心你的代码臃肿么。 本文出自http://zhixiang.org.cn,转载请保留。

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

Java记忆篇 - 关键字与保留字

共“53”个关键字(含2个保留字) 保留字 1).const有道释义:n.常量,常数 用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改 2).goto有道释义:vi.转到 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 访问修饰符的关键字(共3个) 定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象(共6个) 包的关键字(共2个) 数据类型的关键字(共12个) 条件循环(流程控制)(共12个) 修饰方法、类、属性和变量(共9个) volatile 1.当写一个volatile变量时,JMM会把该线程对应的本地内存中的变量强制刷新到主内存中去; 2.这个写会操作会导致其他线程中的缓存无效。 上面的例子只需将status声明为volatile,即可保证在线程A将其修改为true时,线程B可以立刻得知 volatile boolean status = false; 错误处理(共5个) 其他 publicenumColor{RED,BLUE,GREEN,BLACK;}

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

Java 数组 之 一维数组 冒泡排序算法

http://www.verejava.com/?id=16992682424030 /** 用冒泡算法:将成绩arrays 从小到大排序输出 思路: 第一趟排序 1. 将数组中n个元素从第一个元素开始 一一跟后面的元素比较 2. 如果前面的数据比后面的数据大, 两个交换位置直到一次循环完成,那么数组中最大的数据将会排在数组的最后一个位置。 第 i 趟排序 3. 依次类推, 将剩下未排序的n-i个元素再类似 1,2过程一遍,这样直到循环 n次结束后,数组中的元素就是从小到大排好序了. 注意: 只需要经过 n-1趟排序 */ public class BubbleSort { public static void sort(int[] arrays) { //第一个循环控制n-1趟排序 for (int i = 0; i < arrays.length - 1; i++) { //第二个循环控制每次要比较的元素个数n-1 for (int j = 0; j < arrays.length - i - 1; j++) { if (arrays[j] > arrays[j + 1]) { int flag = arrays[j]; arrays[j] = arrays[j + 1]; arrays[j + 1] = flag; } } } } public static void main(String[] args) { //一维数组的定义和初始化 int[] scores = { 90, 70, 50, 80, 60, 85 }; sort(scores); //输出排序后的 scores for (int i = 0; i < scores.length; i++) { System.out.print(scores[i] + ","); } } } http://www.verejava.com/?id=16992682424030

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

JAVA以后是怎么找工作的呢?

最低什么程度就可以出去碰碰运气? 我这里并不是教大家投机取巧,而是为不了解求职的小白朋友提供一个参考。理论上当然是基础越牢固越好,你最好把科班的“四大课”都啃了。 就我自己做外包的经验,基本上培训视频中ssm框架往后教的就用不太到了,什么redis,ActiveMQ负载均衡等等,都用不太到(但我不敢打包票)。而且你一个零基础的,学了能咋滴?工作一两年的人都没怎么搞透的技术,你还能用它写出花?最多学会几个单词罢了。总之,如果你没有朋友内推,没有过人天赋,我默认你和我一样,学得再好几个月刚出来也就外包水平。那么既然做外包,视频中电商项目啦、高并发这些都和你没什么关系了。甚至什么maven也和你没什么关系。什么?你说导包太繁琐、自己不会独立搭建ssm框架?别逗了老铁,给你几千块,你还真当自己是架构师啊....外包工作基本就是ssm一套,前端搞个layui或者easyui这种第三方模块化框架凑合一下,而这些环境都是项目经理给你搭好的,你就是增删改查而已。另外,你要知道,外包很少有什么前端工程师、后端工程师之分的,给你一把键盘,你就是从前台页面撸到后台数据库的“全绽”工程师。也就是什么都会一点,但是代码都是“破绽”的码农。所以有心思搞什么高并发,还是学好怎么切图做页面吧。 但我也要对我说的话负责,万一你们心直,信了我的话,学完ssm就出去骗钱,然后被社会主义无情扇耳光,我也是很心痛的。给个重点吧: 1.JavaSE基础: 一定要好好学,很多人都不明白基础的重要性。上来就什么ssm,springBoot,redis。比谁认识的单词多吗?面向对象、字符串处理、集合、IO一定要重点学!2.JavaWeb前端:不要老一副吊样,觉得自己出去就是后端工程师,不学什么HTML, CSS, JavaScript。老铁,不存在的。进了外包公司你万一发现后台逻辑简单的一逼,就几个接口,反而前端页面切个图都要一天,难道你还好意思暗搓搓问老板:怎么我们公司没有前端的吗?所以前端一定要重视。div+css布局一定要麻溜的,js的dom操作必须给力。jQuery/bootstrap你必须会吧!3.JavaWeb服务器端:Tomcat目录结构必须了如指掌吧。让你手动部署个webapp总要会吧。哪里配置虚拟主机,哪里改端口号,web-info文件夹下的内容外部无法访问这些都要懂一点吧?这些皮毛都不懂,怎么好意思说自己搞服务器端?jsp和servlet什么关系,servlet最常见的三种创建方式,Javaweb四大域对象,jsp九大内置对象都要知道吧?el表达式必须熟悉吧?mysql增删改查sql语句要会写吧,多表关联、左外右外不能怂吧?jdbc是干嘛的,sql注入是啥,如何用jdbc实现事务等等都要知道吧?4.框架预备知识:xml读写操作要知道,反射、内省、泛型不要求精通,但怎么用总要心里有点那个什么数吧。不然你框架学起来就是懵逼的。5.ssh、ssm框架:不要求你精通底层原理,但是山寨版的原理总要略知一二吧。如何山寨实现IoC容器,如何对dao进行抽取,如何借助反射实现同一个servlet处理多个请求,这些最好都要了解吧。在理解山寨版框架的基础上,把配置多配几遍,做到心里有数。明白每个配置大致起到什么作用。另外,我一向觉得,学习框架必须带着下面的疑问:这个框架没有出现之前,我们的前辈们如何解决的?它的出现解决了哪些痛点?又有什么缺点没有?都是需要去琢磨的。最后,还是忍不住说一下,很多小白老是觉得框架是学习路上的终极boss。too young, too simple. Sometimes naive! 框架如果不细究底层(我承认底层很复杂),其实完全可以看做很大很大的工具类。只不过以前我们写代码调工具类,现在我们写点代码让框架调...工具类就像钥匙,是工具,我们用它开门。框架就像房子,我们的代码是窗户,窗户是嵌在房子了的。反正,框架不是大boss,你的项目经验和编码能力才是拦路虎! 2.学到什么程度比较保险? 那这个就没有上限了。你面试上去就说:我,20年开发经验,6岁开始开发。对方就应该准备递烟了。但是很显然,你没有经验。没有经验,那么大公司就会要求你基础要扎实。你越往后学,就会越发现自己和科班出身的朋友的差距。就好比你开车,能到目的地不被违章拍照就好了。而人家开车,考虑的是乘客的舒适性、耗油、轮胎磨损等等。这个时候,是不是老司机就高下立判了。你没有底层知识的支撑,难免浮沙筑高台。要么后期心有余力不足,要么垮了。所以,我建议啊,培训班视频ssm后面的内容可以看,也鼓励多学一点。但是能掌握多少,到时你自己就知道了。压根就是天书,听完就忘。你只是学到几个高级单词,还心里美滋滋。所以还在校,不急着找工作的朋友,建议数据结构,操作系统有时间都学学。万一你出来找不到工作,还可以曲线救国,先去考个计算机的研究生,然后出来报复社会呢?考研基本上数据结构,操作系统必考啊... 最后呢,建议大家不要执着。现在转行工作真的不好找。360行,哪条不是路呢?更不要贸然裸辞,今天看IT人傻钱多,第二天就裸辞。脱衣服都没见你这么快的。大可以先自学试试,万一你发现你一学编程就脱发,女朋友就闹着分手呢? 最后,给个路线吧,我8个月学出来差点找不到工作,很是心酸。但是有了我这个路线相信你只要6个月 此文章为隋七哥原创,特此声明!”

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

java -----------------LeetCode——电话号码的字母组合

回溯算法是不是很是陌生啊,我敢开始也是一脸你蒙蔽,后来我终于忍不住了,就去查查什么是回溯,原来是这个情况,回溯和递归有点类似,但是又不是递归,比如我现在计算数据从0开始到2,当到达状态值2我就回溯,我从1开始回溯,我在回到0,就是for循环我不按套路从小到打,去输出了,我采用回溯, public class Main { public static void main(String[] args) { List<String> stringList = begin("23"); System.out.println(stringList.toString()); } // 定义每个数字对应的字符 static String[] a = new String[] {"","","abc","def", "ghi","jkl","mno","pqrs","tuv","wxyz"}; // 这个是输出的字符串 static StringBuffer sb = new StringBuffer(); private static List<String> begin(String str) { if (str.length() == 0) { return null; } List<String> result = new ArrayList<>(15); zihe(str,0,result); return result; } private static void zihe(String str, int n, List<String> result) { if (n == str.length()) { result.add(sb.toString()); return; } for (int i = 0; i < a[str.charAt(n)-'0'].length(); i++) { sb.append(a[str.charAt(n)-'0'].charAt(i)); zihe(str, n + 1, result); sb.deleteCharAt(sb.length() - 1); } } }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册