首页 文章 精选 留言 我的

精选列表

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

spring cloud(学习笔记)微服务启动错误(1)

今天下午在启动spring cloud微服务的时候,报了这个错误: Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.2018-07-03 20:17:10.295 ERROR 19024 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : ***************************APPLICATION FAILED TO START*************************** Description: Cannot determine embedded database driver class for database type NONE Action: If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active). Disconnected from the target VM, address: '127.0.0.1:55393', transport: 'socket' Process finished with exit code 1 刚开始我以为是端口被占用。果断cmd并输入netstat -aon,找半天没发现占用的端口,然后又网上看了一下, 转自:https://blog.csdn.net/Loser100/article/details/78190703?locationNum=9&fps=1 SpringBoot启动报错:Cannot determine embedded database driver class for database type NONE springboot启动时会自动注入数据源和配置jpa 解决办法一: 启动类中加入注解:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}) 解决方法二: 在Application.properties文件内配置数据源即可。代码如下: spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.max-idle=10 spring.datasource.max-wait=10000 spring.datasource.min-idle=5 spring.datasource.initial-size=5 我仔细的检查了一下,也加了注解,试了一下,我靠,没用啊,人生呐,真是改不完的bedug, 只好用出终极大招,拷贝我自己的代码,删除项目,从新从svn更新项目,导入运行,哎呦我去。怎么还是这问题?难道是我项目配置问题?不对啊,我其他的项目都没有问题啊。束手无策,只好求助小碗(一个认真工作的大佬); 通过反复调试,终于找到了。问题所在,pom.xml里面有一个错误的配置, <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> 删了就可以运行,微服务也可以注册。配置文件请大家仔细检查。配置文件不对,什么都是扯淡。 小舟从此逝,江海寄余生。 --狐狸

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

Java学习(16)--System 类/Date 类/ Calendar类

System (1)系统类 ,提供了一些有用的字段和方法 (2)成员方法 A:运行垃圾回收器 public static void gc() B:退出 jvm public static void exit(int status): 终止当前正在运行的 Java虚拟机。参数用作状态码;根据惯例,非 0的状态码表示异常终止。 C:获取当前时间的毫秒值 public static long currentTimeMillis() D:数组复制 public static void arraycopy(Object src,int srcPos,Object dest,int destPos,intlength) 从指定源数组中复制一个数组, 复制从指定的位置开始, 到目标数组的指定位置结束。 示例: int [] arr = { 11, 22, 33, 44, 55}; int [] arr2 = { 6, 7, 8, 9, 10}; System.arraycopy(arr, 1, arr2, 2, 2); System. out.println(Arrays.toString (arr)); //[11, 22, 33, 44, 55] System.out.println(Arrays.toString(arr2));//[6, 7, 22, 33, 10] Date/DateFormat (1)Date是日期类,可以精确到毫秒。 A:构造方法 Date() Date(long time) B:成员方法 getTime() setTime(long time) C:日期和毫秒值的相互转换 案例:你来到这个世界多少天了 ? 代码: Scanner sc = newScanner(System. in ); // 键盘录入你的出生的年月日 System. out .println( " 请输入你的出生年月日 :" ); String line = sc.nextLine(); SimpleDateFormat sdf = newSimpleDateFormat( "yyyy-MM-dd" ); // 把该字符串转换为一个日期 Date d = sdf.parse(line); long myTime = d.getTime(); // 通过该日期得到一个毫秒值 long nowTime = System. currentTimeMillis (); // 获取当前时间的毫秒值 long time = nowTime - myTime; // 用 D-C得到一个毫秒值 long day = time / 1000 / 60 / 60 / 24; // 把 E的毫秒值转换为年 System. out .println( " 你来到这个世界: " + day + " 天" ); (1)DateFormat 针对日期进行格式化和针对字符串进行解析的类,但是是抽象类, 所以使用其子类 SimpleDateFormat A:SimpleDateFormat(Stringpattern) 给定模式 yyyy-MM-dd HH:mm:ss B:日期和字符串的转换 a:Date -- String format() b:String -- Date parse() 代码: // Date -- String Date d = new Date(); // 创建日期对象 // SimpleDateFormat sdf = new SimpleDateFormat(); // 创建格式化对象 SimpleDateFormat sdf =newSimpleDateFormat( "yyyy 年 MM月dd 日 HH:mm:ss" );//给定模式 // public final String format(Date date) String s = sdf.format(d); System. out .println(s); //String -- Date String str = "2008-08-08 12:12:12" ; //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配 SimpleDateFormat sdf2 = newSimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); Date dd = sdf2.parse(str); System. out .println(dd); Date d = new Date(); // 创建日期对象 // SimpleDateFormat sdf = new SimpleDateFormat(); // 创建格式化对象 SimpleDateFormat sdf =newSimpleDateFormat( "yyyy 年 MM月dd 日 HH:mm:ss" );//给定模式 // public final String format(Date date) String s = sdf.format(d); System. out .println(s); //String -- Date String str = "2008-08-08 12:12:12" ; //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配 SimpleDateFormat sdf2 = newSimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); Date dd = sdf2.parse(str); System. out .println(dd); Calendar (1)日历类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。 (2)如何得到一个日历对象呢 ? Calendar rightNow = Calendar.getInstance();本质返回的是子类对象 (3)成员方法 A:根据日历字段得到对应的值 // 其日历字段已由当前日期和时间初始化: Calendar rightNow= Calendar.getInstance(); // 子类对象 int year = rightNow.get(Calendar.YEAR);// 获取年 int month = rightNow.get(Calendar.MONTH);// 获取月 int date =rightNow.get(Calendar.DATE);// 获取日 B:根据日历字段和一个正负数确定是添加还是减去对应日历字段的值 public void add(int field,int amount): 根据给定的日历字段和对应的时间,来对当前的日历进行操作。 // 5 年后的 10天前 c.add(Calendar.YEAR,5); c.add(Calendar.DATE, -10); C:设置日历对象的年月日 public final void set(int year,int month,int date): 设置当前日历的年月日如: c.set(2011, 11, 1); (4)案例: 计算任意一年的 2月份有多少天? //键盘录入任意的年份 Scanner sc =newScanner(System.in); System.out.println(" 请输入年份:"); int year = sc.nextInt(); //设置日历对象的年月日 Calendar c = Calendar.getInstance(); c.set(year, 2, 1); // 其实是这一年的3月 1日,把时间往前推一天,就是2月的最后一天 System. out .println(c.get(Calendar.MONTH)); c.add(Calendar.DATE, -1); System. out .println(c.get(Calendar.MONTH)); //获取这一天输出即可 System. out .println(c.get(Calendar.DATE)); BigInteger (1)可以让超过 Integer范围内的数据进行运算 (2)构造方法A:BigInteger(String s) (3)成员方法 public BigInteger add(BigInteger val): //加 public BigInteger subtract(BigInteger val): //减 public BigInteger multiply(BigInteger val): //乘 public BigIntegerdivide(BigIntegerval): //除 public BigInteger[]divideAndRemainder(BigIntegerval) ://返回商和余数的数组 BigDecimal (1)浮点数据做运算, 会丢失精度。所以,针对浮点数据的操作建议采用 BigDecimal。 (2)构造方法 A:BigDecimal(String s) (3)成员方法: public BigDecimal add(BigDecimal augend) //加 public BigDecimal subtract(BigDecimal subtrahend) //减 public BigDecimal multiply(BigDecimal multiplicand) //乘 public BigDecimal divide(BigDecimal divisor) //除 public BigDecimal divide(BigDecimal divisor,int scale,introundingMode) //商,几位小数 减 减

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

JavaScript高级程序设计学习(五)之对象

众说周知,java是面向对象的编程语言。一个类包含多个对象,例如车类,它包含宝马,奔驰,东风,本田,莲花等这样的车,而品牌和颜色或者某种标识就是它的属性。车包含很多种类,但是共性还是有的,比如共性有四个轮子,有品牌,有发动机等等。这些可以抽象为一个类,让子类继承这些共性,子类重写父类的方法,然后在此可以新增自己的属性和方法,以此标明差异活不同。 js为什么不是面向对象的编程语言呢? 用一句说明: 面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可 以创建任意多个具有相同属性和方法的对象。前面提到过,ECMAScript中没有类的概念,因 此它的对象也与基于类的语言中的对象有所不同。所以js不是面向对象的语言。 ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲, 这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射 到一个值。正因为这样(以及其他将要讨论的原因),我们可以把 ECMAScript的对象想象成散列表:无 非就是一组名值对,其中值可以是数据或函数。 var person = new Object(); person.name = "Nicholas"; person.age = 29; person.job = "Software Engineer"; person.sayName = function(){ alert(this.name); }; 上面的例子创建了一个名为 person 的对象,并为它添加了三个属性(name、age 和 job)和一个 方法(sayName())。其中,sayName()方法用于显示 this.name(将被解析为 person.name)的值。 早期的 JavaScript开发人员经常使用这个模式创建新对象。几年后,对象字面量成为创建这种对象的首选 模式。前面的例子用对象字面量语法可以写成这样: var person = { name: "Nicholas", age: 29, job: "Software Engineer", sayName: function(){ alert(this.name); } }; (1)属性类型 ECMA-262第 5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征。 ECMA-262定义这些特性是为了实现 JavaScript引擎用的,因此在 JavaScript中不能直接访问它们。为了 表示特性是内部值,该规范把它们放在了两对儿方括号中,例如[[Enumerable]]。尽管 ECMA-262 第 3版的定义有些不同,但本书只参考第 5版的描述。 ECMAScript中有两种属性:数据属性和访问器属性。 a.数据属性 数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4个描述其行为的 特性。  [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特 性,或者能否把属性修改为访问器属性。像前面例子中那样直接在对象上定义的属性,它们的 这个特性默认值为 true。  [[Enumerable]]:表示能否通过 for-in 循环返回属性。像前面例子中那样直接在对象上定 义的属性,它们的这个特性默认值为 true。  [[Writable]]:表示能否修改属性的值。像前面例子中那样直接在对象上定义的属性,它们的 这个特性默认值为 true。  [[Value]]:包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候, 把新值保存在这个位置。这个特性的默认值为 undefined。 对于像前面例子中那样直接在对象上定义的属性,它们的[[Configurable]]、[[Enumerable]] 和[[Writable]]特性都被设置为 true,而[[Value]]特性被设置为指定的值。 var person = { name: "Nicholas" }; b.访问器属性 访问器属性不包含数据值;它们包含一对儿 getter和 setter函数(不过,这两个函数都不是必需的)。 在读取访问器属性时,会调用 getter函数,这个函数负责返回有效的值;在写入访问器属性时,会调用 setter函数并传入新值,这个函数负责决定如何处理数据。访问器属性有如下 4个特性:  [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特 性,或者能否把属性修改为数据属性。对于直接在对象上定义的属性,这个特性的默认值为 true。  [[Enumerable]]:表示能否通过 for-in 循环返回属性。对于直接在对象上定义的属性,这 个特性的默认值为 true。  [[Get]]:在读取属性时调用的函数。默认值为 undefined。  [[Set]]:在写入属性时调用的函数。默认值为 undefined。 访问器属性不能直接定义,必须使用 Object.defineProperty()来定义。 set和get方法作为java开发者再熟悉不过了。 var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function(){ return this._year; }, set: function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005; alert(book.edition); //2 描述: 以上代码创建了一个 book 对象,并给它定义两个默认的属性:_year 和 edition。_year 前面 的下划线是一种常用的记号,用于表示只能通过对象方法访问的属性。而访问器属性 year 则包含一个 getter函数和一个 setter函数。getter函数返回_year 的值,setter函数通过计算来确定正确的版本。因此, 把 year 属性修改为 2005会导致_year 变成 2005,而 edition 变为 2。这是使用访问器属性的常见方 式,即设置一个属性的值会导致其他属性发生变化。 补充说明: 不一定非要同时指定 getter和 setter。只指定 getter意味着属性是不能写,尝试写入属性会被忽略。 在严格模式下,尝试写入只指定了 getter 函数的属性会抛出错误。类似地,只指定 setter 函数的属性也 不能读,否则在非严格模式下会返回 undefined,而在严格模式下会抛出错误。 在java中get和set是必须一同存在的,当然也可以不存在,前提是属性必须为非私有和默认,必须为公共的,即public。否则无法调用该属性。 (2)定义多个属性 由于为对象定义多个属性的可能性很大,ECMAScript 5 又定义了一个 Object.definePro- perties()方法。利用这个方法可以通过描述符一次定义多个属性。这个方法接收两个对象参数:第一 个对象是要添加和修改其属性的对象,第二个对象的属性与第一个对象中要添加或修改的属性一一对 应。 var book = {}; Object.defineProperties(book, { _year: { value: 2004 } , edition: { value: 1 }, year: { get: function(){ return this._year; }, set: function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } } } ); (3)读取属性特性 使用 ECMAScript 5的 Object.getOwnPropertyDescriptor()方法,可以取得给定属性的描述 符。这个方法接收两个参数:属性所在的对象和要读取其描述符的属性名称。返回值是一个对象,如果 是访问器属性,这个对象的属性有 configurable、enumerable、get 和 set;如果是数据属性,这 个对象的属性有 configurable、enumerable、writable 和 value。 var book = {}; Object.defineProperties(book, { _year: { value: 2004 }, edition: { value: 1 }, year: { get: function(){ return this._year; }, set: function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } } } ); var descriptor = Object.getOwnPropertyDescriptor(book, "_year"); alert(descriptor.value); //2004 alert(descriptor.configurable); //false alert(typeof descriptor.get); //"undefined" var descriptor = Object.getOwnPropertyDescriptor(book, "yea 作为java的开发者很容易理解对象。这个概念。不过如果是初学者的话对此往往头有点大。 因此记得一位朋友说过,学java的时候最好先是从前端html,css,js这样的学,因为学到js的时候存在一个对象的概念,有助于理解java的面向对象和比较。 当然,反过来java的话,也可以方便比较。 对象,这个概念,博大精深啊! 想起对象这个概念,我想起了伟大的spring,有了spring,再也不怕对象管理和操控问题。 因为spring有控制反转的概念,可以帮我们进行对象管理。但是js没有。 调侃一句,记得某个笑话讲过,程序员最怕什么?不懂这个是笑话的人肯定会讲最怕出bug。其实这个说的也是有道理的。 不过最终的答案是,程序员最怕找不到对象,作为java程序员,java称之为面向对象的编程语言,如果找不到对象,那还有什么意思呢? 玩笑一下,程序员有的时候还是得自我调侃调侃一下。有助于身心放松。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

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

用户登录
用户注册