- 熟练使用 SpringBoot/Spring Cloud ——> 达成度70%
- 运用Redis数据库目标缓存任务 ——> 达成度 100%
- 运用ActiveMQ/RabbitMQ消息队列处理消息 ——> 达成度100%
- 运用Echarts图形化展示心率、呼吸等数据(动态显示心率波动)—> 达成度100%
- 运用Drools规则引擎 ——> 达成度80%
《别在吃苦的年纪选择安逸》
《将来的你一定感谢现在拼命的自己》
《决定你上限的不是能力,而是格局》
《你受的苦,总有一天会照亮你未来的路》
时光飞逝,伴随着比较紧凑又略显紧张的生活节奏,2019年就这样快接近尾声,虽然我来上海时间还不太长,可是时间的脚步依然没有放慢它前行的脚步,在这一段时光里,经历了很多事情也接触了不一样的人不一样的事物。
(由于时间匆忙,此处省略1000字,后续补上,晚安了各位~!)
.ε≡٩(๑>₃<)۶抱抱一直努力的自己,2019年拜拜,2020年你好!
]]>将spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题。
1 |
1 | "true", (allowCredentials= |
例子如下:
1 | // 注解方式 |
代码如下:
1 |
|
代码如下:
1 | /** |
如果微服务多的话,需要在每个服务的主类上都加上这么段代码,这违反了DRY原则,更好的做法是在zuul的网关层解决跨域问题,一劳永逸。
如果还有不了解的,可以在右下方与博主在线沟通
]]>1.使用@PostConstruct注解获取Service实现类并设置静态Service接收从而调用其功能或静态方法
1 |
|
2.从配置文件获取配置数据并转换给静态属性
1 | zz.properties静态文件配置 |
3.解析JSON格式数据并使用自定义队列接收符合先进先出原则
1 | 1. public static Queue<String> queue = new LinkedList<String>(); |
4.静态集合类对象的Iterator并在遍历时执行更新删除操作
1 | Base<T> 为泛型类 |
1. Jquery 字符串对应字符全部替换规则
1 | function replaceChar(s) |
2. Jquery 字符串截取
1 | function convertAlarmCon(e) { |
3. 设置页面定时器
1 | setInterval(function () {//定时器 |
4.年月日 Date类型转yyyy-MM-dd
1 | function formatDate(date) { //设置时间转换格式 |
5.获取当前日期所在周的所有年月日格式 参数 字符串yyyy-MM-dd
1 | function converToWeekDay(time) { |
6.获取当前日期所在月份的所有日期 参数 字符串yyyy-MM-dd
1 | function convertDayToMonth(time) { |
7.格式化日期,如月、日、时、分、秒保证为2位数
1 | function formatNumber(n) { |
8.参数number为毫秒时间戳,format为需要转换成的日期格式
1 | function formatTime(time, format) { |
9.参数number为毫秒时间戳,format为需要转换成的日期格式
1 | //根据开始时间 、长度、和步长(也就是间隔)获取时分秒格式的时间数据 |
10.将String 类型转换为Int类型
1 | function covertStringToInt(m) { |
11.解析Json格式字符串并转换成Int类型
1 | function covertPressureToInt(pressure) { |
12.根据传入时间戳转换获取时间戳对应的时分秒
1 | function convertTimeStampToTime(timestamp) { |
13.简单介绍使用Echarts实时数据获取显示
1 | var Chart = echarts.init(document.getElementById("actualbreath"));//初始化' |
14.MiniUI默认加载查询数据字段
1 | var grid2 = mini.get("datagrid2"); |
15.MiniUI获得当前tab页 并触发点击操作刷新页面重新加载数据
1 | var tabs=mini.get("app"); //tab页面ID |
1.将LocalDateTime转为自定义的时间格式的字符串
1 | 1. |
2.将long类型的timestamp转为LocalDateTime
1 |
|
3.将LocalDateTime转为long类型的timestamp
1 |
|
4.将某时间字符串转为自定义时间格式的LocalDateTime
1 |
|
Java 8中表示日期和时间的类主要的有:
Instant:表示时刻,不直接对应年月日信息,需要通过时区转换
LocalDateTime: 表示与时区无关的日期和时间信息,不直接对应时刻,需要通过时区转换
LocalDate:表示与时区无关的日期,与LocalDateTime相比,只有日期信息,没有时间信息
LocalTime:表示与时区无关的时间,与LocalDateTime相比,只有时间信息,没有日期信息
ZonedDateTime: 表示特定时区的日期和时间
ZoneId/ZoneOffset:表示时区
1 |
|
1 | java.util.Date date = new java.util.Date(); |
1 | LocalDateTime now = LocalDateTime.now(); |
1 | package com.libstar.lsp.find.utils; |
java8中计算时间差的三个函数
Period类方法getYears(),getMonths()和getDays()
1 | import java.time.LocalDate; |
结果输出:
today : 2019-07-12
BirthDate : 1995-03-12
年龄 : 24 年 ** 月 ** 日
提供基于时间的值(如秒,纳秒)测量时间量的方法
1 | import java.time.Duration; |
结果输出:
Inst1 : 2019-07-12T22:54:45.085Z
Inst2 : 2019-07-12T22:54:55.085Z
Difference in milliseconds : 10000
Difference in seconds : 10
ChronoUnit类可用于在单个时间单位内测量一段时间,例如天数或秒。
例子:
使用between()方法来查找两个日期之间的区别
1 | import java.time.LocalDate; |
结果输出:
开始时间 : 1995-03-12
结束时间 : 2019-07-12
两天之间的差在天数 : 8888
1 | 1.public static double ceil(double a)//向上取整 |
测试用例:
System.out.println(Math.ceil(1.01));
System.out.println(Math.ceil(-1.01));
System.out.println(Math.ceil(1.5));
System.out.println(Math.ceil(-1.5));
结果如下:
2.0
-1.0
2.0
-1.0
1 | 2.public static double floor(double a)//向下取整 |
Math.floor(-1.1): -2.0
Math.floor(-1.5): -2.0
Math.floor(-1.6): -2.0
Math.floor(0.1): 0.0
Math.floor(0.5): 0.0
Math.floor(0.6): 0.0
Math.floor(1.1): 1.0
Math.floor(11.5): 11.0
Math.floor(15.7): 15.0
Math.floor(-0.5): -0.0
测试用例:
1 | 舍掉小数取整:Math.floor(2)=2 |
1 | 3.RoundingMode模式 |
例子:
1 | RoundingMode.CEILING:取右边最近的整数 |
同理:
类似于四舍五入
1 | Math.round(x) = Math.floor(x + 0.5) |
Math.round(-1.1): -1
Math.round(-1.5): -1
Math.round(-1.6): -2
Math.round(0.1): 0
Math.round(0.5): 1
Math.round(0.6): 1
Math.round(1.1): 1
Math.round(1.5): 2
Math.round(1.6): 2
1 | 4.Math.rint 函数返回最接近参数的整数,如果有2个数同样接近,则会返回偶数的那个。 |
测试用例:
Math.rint(-1.1): -1.0
Math.rint(-1.5): -2.0
Math.rint(-1.6): -2.0
Math.rint(0.1): 0.0
Math.rint(0.5): 0.0
Math.rint(0.6): 1.0
Math.rint(1.1): 1.0
Math.rint(1.5): 2.0
Math.rint(1.6): 2.0
结合cron表达式实现根据时间差获取分钟数取整
1 | Double count=0d; |
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:
(1) Seconds Minutes Hours DayofMonth Month DayofWeek Year
(2)Seconds Minutes Hours DayofMonth Month DayofWeek
** 一、结构**
corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份
** 二、各字段的含义**
| 字段 | 允许值 | 允许的特殊字符 |
| 秒(Seconds) | 059的整数 | , - * / 四个字符 |59的整数 | , - * / 四个字符 |
| 分(_Minutes_) | 0
| 小时(_Hours_) | 023的整数 | , - * / 四个字符 |31的整数(但是你需要考虑你月的天数) | ,- * ? / L W C 八个字符 |
| 日期(_DayofMonth_) | 1
| 月份(_Month_) | 112的整数或者 JAN-DEC | , - * / 四个字符 |7的整数或者 SUN-SAT (1=SUN) | , - * ? / L C # 八个字符 |
| 星期(_DayofWeek_) | 1
| 年(可选,留空)(_Year_) | 1970~2099 | , - * / 四个字符 |
注意事项:
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:
(1):表示匹配该域的任意值。假如在Minutes域使用, 即表示每分钟都会触发事件。
(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用,如果使用表示不管星期几都会触发,实际上并不是这样。
(3)-:表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
(5),:表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
(6)L:表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。
(7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 。
(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。
三、常用表达式例子
(1)0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
(2)*0 15 10 ? * MON-FRI * 表示周一到周五每天上午10:15执行作业
(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
(4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
(5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
(6)0 0 12 ? * WED 表示每个星期三中午12点
(7)0 0 12 * * ? 每天中午12点触发
(8)*0 15 10 ? * * * 每天上午10:15触发
(9)0 15 10 * * ? 每天上午10:15触发
(10)*0 15 10 * * ? * * 每天上午10:15触发
(11)0 15 10 * * ? 2005 2005年的每天上午10:15触发
(12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
(13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
(14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(15)*0 0-5 14 * * ? * 在每天下午2点到下午2:05期间的每1分钟触发
(16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
(17)*0 15 10 ? * MON-FRI * 周一至周五的上午10:15触发
(18)*0 15 10 15 * ? * 每月15日上午10:15触发
(19)*0 15 10 L * ? * 每月最后一日的上午10:15触发
(20)*0 15 10 ? * 6L * 每月的最后一个星期五上午10:15触发
(21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
(22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
** 注:**
(1)有些子表达式能包含一些范围或列表
例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
“*”字符代表所有可能的值
因此,“”在子表达式(月)里表示每个月的含义,“”在子表达式(天(星期))表示星期的每一天
“/”字符用来指定数值的增量
例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写
但是它在两个子表达式里的含义是不同的。
在天(月)子表达式中,“L”表示一个月的最后一天
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT
如果在“L”前有具体的内容,它就具有其他的含义了
例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
Client does not support authentication protocol requested by server; consider upgrading MySQL client
1 | 为了提供更安全的密码加密, |
解决方式或者注意事项:
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; |
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set
Hibernate SQL方言没有设置导致的,在properties文件中加入:
1 | spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect |
Hibernate SQL方言整理如下:
| 数据库 | 方言 |
| ——- | :—— | ——: |
| DB2| org.hibernate.dialect.DB2Dialect |
| DB2 AS/400 | org.hibernate.dialect.DB2400Dialect |
| DB2 OS390 | org.hibernate.dialect.DB2390Dialect
| PostgreSQL| org.hibernate.dialect.PostgreSQLDialect
| MySQL | org.hibernate.dialect.MySQLDialect
| MySQL with InnoDB| org.hibernate.dialect.MySQLInnoDBDialect
| MySQL with MyISAM | org.hibernate.dialect.MySQLMyISAMDialect
| Oracle (any version) | org.hibernate.dialect.OracleDialect
| Oracle 9i/10g | org.hibernate.dialect.Oracle9Dialect
| Sybase | org.hibernate.dialect.SybaseDialect
| Sybase Anywhere | org.hibernate.dialect.SybaseAnywhereDialect
| Microsoft SQL Server | org.hibernate.dialect.SQLServerDialect
| SAP DB| org.hibernate.dialect.SAPDBDialect
| Informix| org.hibernate.dialect.InformixDialect
| HypersonicSQL| org.hibernate.dialect.HSQLDialect
| Ingres | org.hibernate.dialect.IngresDialect
| Progress| org.hibernate.dialect.ProgressDialect
| Mckoi SQL| org.hibernate.dialect.MckoiDialect
| Interbase| org.hibernate.dialect.InterbaseDialect
| Pointbase| org.hibernate.dialect.PointbaseDialect
| FrontBase | org.hibernate.dialect.FrontbaseDialect
| Firebird | org.hibernate.dialect.FirebirdDialect
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
com.mysql.jdbc.Driver'. This is deprecated. The new driver class is
com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.”,排除这个原因。也就是升级Mysql
_allowPublicKeyRetrieval=true_
参数,经过验证解决该问题。升级一个插件,即32位 visual C++ 2013 and visual C++ redistributable package,就是缺少这个才会出现failed,其实在安装的过程中跳出过这个的安装,但它是根据电脑直接匹配位数的也就是我们大多数的64位,所以需要再根据链接下载一个32位的,x86下载地址Visual C++ 2013 and Visual C++ Redistributable Package
下载如图:
####MySQL安装告一段落,其余的相关配置 请自行查看官网,去探索吧,少年!
如果还有不了解的,可以在右下方与博主在线沟通
]]>错误如下:
1 | threw exception [Request processing failed; nested exception is org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - admin, rememberMe=true] did not match the expected credentials.] with root cause |
解决方案:
白话文讲:
当你登陆的时候,你会创建一个UsernamePasswordToken
对象,或者UsernamePasswordToken
的子类对象,并且赋予账号、密码、rememberMe,这里的密码你需要和数据库一直,比如你做了md5加密
,那么你先做md5加密
然后再创建UsernamePasswordToken
对象.
然后你在校验完毕后:
1 | return new SimpleAuthenticationInfo(token,memberSecurity.getLoginPswd(), getName()); |
Spring的诞生是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的
轻量级代替品。无需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级
Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。
虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。
所有Spring配置都代表了开发时的损耗。 因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。
Spring Boot 让这一切成为了过去。
Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。
我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,或者采用传统的war部署方式。
Spring Boot 主要目标是:
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Apache Shiro 体系结构
1、 Authentication 认证 —- 用户登录
2、 Authorization 授权 — 用户具有哪些权限
3、 Cryptography 安全数据加密
4、 Session Management 会话管理
5、 Web Integration web系统集成
6、 Interations 集成其它应用,spring、缓存框架
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
1 | <!-- 导入依赖 --> |
1 | package com.itheima.controller; |
1 | package com.itheima; |
1 | <!-- 导入thymeleaf依赖 --> |
在Controller添加测试方法
1 | /** |
建立test.html页面
在src/main/resource目录下创建templates目录,然后创建test.html页面
1 |
|
在thymeleaf3.0以前对页面标签语法要求比较严格,开始标签必须有对应的结束标签。
如果希望页面语法不严谨,但是也能够运行成功,可以把thymeleaf升级为3.0或以上版本。
升级thymeleaf3.0.2版本:
1 | <!-- 修改参数 --> |
Subject: 用户主体(把操作交给SecurityManager)
SecurityManager:安全管理器(关联Realm)
Realm:Shiro连接数据的桥梁
修改pom.xml
1 | <!-- shiro与spring整合依赖 --> |
1 | package com.itheima.shiro; |
1 | package com.itheima.shiro; |
1 | package com.itheima.shiro; |
1 | | |
1 |
|
1 | package com.itheima.shiro; |
1 | <!-- 导入mybatis相关的依赖 --> |
位置:src/main/resources目录下
1 | spring.datasource.driverClassName=com.mysql.jdbc.Driver |
1 | package com.itheima.domain; |
1 | package com.itheima.mapper; |
1 |
|
接口
1 | package com.itheima.service; |
实现
1 | package com.itheima.service.impl; |
1 | package com.itheima; |
1 | package com.itheima.shiro; |
1 | /** |
UserRealm:
1 | /** |
1 | <!-- thymel对shiro的扩展坐标 --> |
在ShiroConfig类里面添加getShiroDialect方法
1 | /** |
1 |
|
如果还有不了解的,可以在右下方与博主在线沟通
]]>Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
1)、协同修改
可多人并行不悖的修改服务器上的同一个文件。
2)、数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
3)、版本管理
在保存每一个版本的文件信息时,要做到不保存重复数据,以节约存储空间,提高运行效率。(注:SVN增量式管理方式,Git采用的是文件快照方式。)
4)、权限控制
a)、对团队中参与开发的人员进行权限控制。
b)、对团队外的开发者贡献的代码进行审核—Git独有。
5)、历史记录
a)、查看修改人、修改时间、修改内容、日志信息等。
b)、将本地文件恢复到某一个历史状态。
6)、分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
工作区:用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
暂存区:保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作“索引”,不过一般说法还是叫暂存区域。
版本库:也叫本地版本库,之所以说git 快,大部分提交都是对本地仓库而言的,不依赖网络,最后一次会推送的到远程仓库。
远程仓库:可以看做是github,它是一个远程仓库,它提供web服务的 供大家方便下载、查看、提交、存储。文件的状态。
结构图:
新建文件状态为untracked,add命令执行后状态变为staged,已存在的文件状态为unmodified,修改文件内容,文件状态变为modified,commit提交,文件状态编程unmodifed。
描述图:
把文件往Git版本库里添加的时候,是分两步执行的:
1、用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
2、用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
1.来自:Git命令参考手册(文本版)
1 | git init # 初始化本地git仓库(创建新仓库) |
2.做参考手册请使用参考手册
1、创建git库
1 | git init #在当前目录中生成一个.git 目录(含有.git目录的目录即是git仓库) |
2、注册git用户
—>用于在团队合作开发中,表明代码作者。
1 | git config --global user.name XXX #用户名 |
注:加–global,全局设置。
3、向git库添加修改
1 | git add [path] #会把对应目录或文件,添加到stage状态 |
实际上是为修改内容添加index索引。
4、向版本库提交修改
1 | git commit –m “XXXX” #提交修改,添加注释 |
注:git 提示: 未有add红色字体,未有commit绿色字体,已提交则worktree是干净的
5、查看当前代码库的状态
1 | git status |
6、查看版本信息
—>实际是查看修改提交信息
1 | git log |
7、查看指定版本信息
1 | git show sdjf974654dd…. #(show后面为每次提交系统自动生成的一串哈希值) |
8、撤销修改
1 | git reset |
(1)撤销整体修改
1 | git reset --hard #回到原来编辑的地方,改动会丢失。(同样适用于团队对于其他人 |
(2)撤销某次修改
1 | 回退1个change的写法就是git reset HEAD^, |
9、向远端库推送修改(提交修改)
1 | git push origin 分支名 |
10、暂存修改
1 | git stash可以把当前的改动(stage和unstage,但不包括untrack的文件)暂存。 |
1、获取远端库项目
1 | git clone/pull |
2、团队开发的基本流程(多分支合并一个分支)
1 | git add . #添加改动的文件 |
1、建立分支
1 | git branch AAA #建立分支AAA |
2、分支切换
1 | git checkout AAA #从当前分支切换到AAA分支 (若AAA分支不存在,则自动新建) |
1 | git checkout master #(首先切换回主枝) |
注:git merge:默认情况下,Git执行”快进式合并”(fast-farward merge),会直接将Master分支指向Develop分支。
使用–no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰(保持提交曲线为直线),建议采用这种方法。
1 | git branch #默认有master(也称为主枝) |
1 | git branch –d AAA #删除分支AAA |
1 |
|
注:上面只是一些基本的操作命令,更多的命令可通过帮助文档查询。
帮助文档的使用:
1 |
|
1、Gtthub上建立远端仓库,复制下载链接。
2、本地指定目录下,Gitbash粘贴远端仓库下载链接拉取远端仓库代码。
3、复制本地需要提交的代码到远端仓库目录。
4、Git add、commit、push 提交本地代码至Github远端仓库。
如果还有不了解的,可以在右下方与博主在线沟通
]]>
1 | style="width: 100%; height: 500px; max-width: 100%;align:center; padding:20px 0;" |
同上
,此处不用修改页面适应宽度(注:使用该功能需要梯子)
找到你想要插入的视频
点击右下角的视频链接
复制链接即可,粘贴位置(同上)
如果还有不了解的,可以在右下方与博主在线沟通
]]>Navicat Premium 12是一套数据库开发管理工具,支持连接 MySQL、Oracle等多种数据库,可以快速轻松地创建、管理和维护数据库。
RCNJTECH
RCNJTECH
此时会弹出 navicat.exe - x64 -> Cracked.
libcc.dll
或navicat.exe
出错,检查是否未关闭Navicat Premium,或到安装目录下将libcc.dll
和navicat.exe
删除,并将libcc.dll.BAK
或navicat.exe.BAK
去掉.BAK
后缀名。否则卸载已安装的Navicat Premium并清理文件残留和注册表残留:此时点开安装好的Navicate,点击立即注册,立即激活
弹出提示框后->手动激活
经测试(博主激活下列软件,目前12.1.20注册机尚未发布)
注册机版本(Navicat Premium 12 注册机 V5.0.exe)
Navicate版本(Navicat Premium 12.1.19.0 简体中文 64位.exe)
(若此处出现错误,要么你未完全按照教程来,要么你所安装的版本高于注册机所支持的版本)
本文参考 (丿记忆灬永殇的简书)
\themes\next\source\js\src
该目录下。\themes\next\source\js\src
目录下,创建clipboard-use.js
,文件内容如下:1 | !function (e, t, a) { |
\themes\next\source\css\_custom\custom.styl
样式文件中添加下面代码:1 | .highlight{ |
在\themes\next\layout\_layout.swig
文件中引用位置如图:
代码如下:
1 | <!-- 复制代码操作 --> |
如果还有不了解的,可以在右下方与博主在线沟通
]]>
控制台
,进入控制台创建应用,应用名称随意选择开发版,创建应用并点击所创建的应用名称进入管理界面。
必须为
Comment的Class方可存储评论内容。当然可以定义其他的Class但是无效,系统会自动创建Comment
Class来存储。
Valine.min.js
放置于next\source\js\src\
valine配置文件路径:next\layout\_third-party\comments\valine.swig
1 | {% if theme.valine.enable and theme.valine.appid and theme.valine.appkey %} |
主题配置文件路径:next\_config.yml
打开_config.yml
使用Ctrl+F搜索到valine
进行如下配置:
1 | # Valine. |
Valine目前使用的是Gravatar作为评论列表头像。
请自行登录或注册Gravatar,然后修改自己的头像。
评论的时候,留下在的Gravatar注册时所使用的邮箱即可。
感谢gravatar.cat.net
提供的它的镜像就是服务。
如果你修改了头像后发现没有更新,请不要慌张,因为
gravatar.cat.net
有七天的缓存网络出版总库,安静的等待吧〜
如果还有不了解的,可以在右下方与博主在线沟通
]]>
如下图:
AddThis
提供了7种显示样式,你可以更加左边菜单栏点击,右边会自动显示你选择的相应样式。值得注意的是。在其右上角可以切换PC
和Phone
显示
如图:
add_this_id
也就是当前页面的pubid
。
如图:
在_config.yml
文件Ctrl+F 搜索 add_this_id
配置官网中获得的pubid
(建议RA采用小写ra)
配置如图:
如果还有不了解的,可以在右下方与博主在线沟通
]]>