导航
# 1、textarea文本域HTML代码 ```HTML .mian-textarea{width: 388px;height: 198px;background: #FFFFFF;border: 1px solid #CCCCCC;padding: 16px;} .mian-textarea-word{height: 22px;line-height: 22px;text-align: right;color: #999;font-size: 14px;margin-top: 23px;} .mian-textarea-word span{font-size: 14px;color: #333;} .mian-textarea textarea{width: 100%;line-height: 22px;height: 154px;font-family: "微软雅黑";color: #333;font-size: 16px;resize:none;outline: none;} .mian-textarea textarea::-webkit-input-placeholder{color: #ccc;} 0 / 240 ``` # 2、分析 我们需要在键盘输入后显示输入文本的长度,那么就需要在textarea中使用onkeyup事件(当用户释放键盘按钮时执行Javascript代码);并写入到span中 # 3、实现 HTML代码 ```HTML 0 / 240 ``` js代码 ```javascript function textareaLength(obj, maxLength, id) { var curr = obj.value.length; if (curr > maxLength) { alert("最多可输入240字!"); } else { // document.getElementId(id).innerHTML = curr; $('#' + id)[0].innerHTML = curr; } } ```
# 1、背景 [2021年8月5日 JavaScript获取工作日](https://minedeed.com/JavaScript/11.html "2021年8月5日 JavaScript获取工作日") 上篇文章讲到,Lucas提了个需求:初始时间为工作日,要找n天后的工作日的时间,要用JavaScript来写,周末又来了,JavaScript不满足需求了,要用Java来写。 还要写的通用一些。我脸上浮现了毫无灵魂的微笑。。。 当然,只是排除了周末,节假日不管的! 废话不多说,直接上代码吧! # 2、代码 ```java package com.mahalalel.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 获取n天后的工作日时间 * * @author Mahalalel * @createTime 2021/8/9 14:12 */ public class WorkDayUtil { /** * 日期格式 */ public static SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd"); /** * 获取工作日时间 * * @param startDate 起始时间 * @param num num个工作日 * @return */ public static Date getWorkDay(Date startDate, int num) throws ParseException { Date tomorrow = null; int delay = 1; while (delay
# 1、问题 FreeMarker template error (DEBUG mode; use RETHROW in production!): Template inclusion failed (for parameter value "../common/header.ftl"): Template not found for name "../common/header.ftl". Reason given: Backing out from the root directory is not allowed. 原因:**Backing out from the root directory is not allowed.** FreeMarker没法引入配置模版文件目录的上层文件夹中的模板文件. # 2、排查 ## 2-1、ftl文件引入 错误的引用: ```ftl ``` 项目的目录结构如下: [![](https://minedeed.com/content/uploadfile/202108/cddb1628231009.png)](https://minedeed.com/content/uploadfile/202108/cddb1628231009.png) ## 2-2、后台返回 ```java @GetMapping("/login") public String login(Model model) { return "admin/system/login"; } ``` ## 2-3、ftl引用修改 ```ftl ``` # 3、启动测试后正常显示页面
# 背景 小伙伴Lucas有个需求:初始时间为工作日,要找n天后的工作日的时间 # 实现 ## 第一种 ```javascript /** * 判断下一个工作日的时间 */ function get_next_weekday(date) { var tomorrow = new Date(date.setDate(date.getDate() + 1)) return tomorrow.getDay() % 6 ? tomorrow : get_next_weekday(tomorrow) } function getWeekday(date,num){ for (let i = 1; i
# 1、时间字段设置默认值 ```java @Column(name="CREATE_TIME", columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP", insertable = false, updatable = false) @Generated(GenerationTime.INSERT) private Date createTime; ``` 解释: ①、columnDefinition:设置默认值以及生成注释 ②、GenerationTime:可用选项ALWAYS、INSERT和NEVER; - 选项为NEVER,SQL执行INSERT和UPDATE时,不会获取数据库默认值 - 选项为INSERT,SQL只会在INSERT时,获取数据库默认值 - 选项为ALWAYS,表明该属性的值由数据库生成;在每次执行insert、update时执行select语句来查询获取该属性的值;此时属性也应该标识为只读(insertable、updatable) ③、insertable、updatable:设置为false,该属性就不会在insert或者update语句中出现,该属性的值就由数据库默认值设置 # 2、使用GetMapping获取数据异常解决 ## 2-1、异常如下: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.mahalalel.baseproject.entity.OperaterLog$HibernateProxy$JJMDYJDv["hibernateLazyInitializer"]) ## 2-2、原因 spring boot使用jpa查询返回实体后,返回接口时候json格式化出错; fastxml.jackson将对象转为json报错,发现有些字段为null; 在接口实现类中,使用了getOne(Long id)方法,这个方法返回的是对象的引用。 ## 2-3、解决 在实体类添加如下注解: @JsonIgnoreProperties(value = { "hibernateLazyInitializer"}) ## 2-4、测试 使用postman访问接口,返回正确数据库数据 # 3、时间设置 ## 3-1、一般创建时间只会在插入数据的时候,生成数据;更新时间只有在数据更新的时候,设置数据 创建时间字段添加注解@CreatedDate;更新时间字段添加注解@LastModifiedDate ```java @Column(name = "create_time") @CreatedDate private Date createTime; @Column(name = "update_time") @LastModifiedDate private Date updateTime; ``` ## 3-2、实体类添加监听器注解 ```java @EntityListeners(AuditingEntityListener.class) public class Entity { } ``` ## 3-3、最重要的,需要在启动类中添加启用JPA审计功能的注解 ```java @EnableJpaAuditing public class ProjectApplication { } ``` ## 3-4、经过测试,发现创建数据时,时间可以写入,但是更新时,创建时间仍然会被置为null 故使用第一种方式: ```java @Temporal(TemporalType.TIMESTAMP) @CreationTimestamp @Column(name = "create_time", updatable = false, columnDefinition = "timestamp default current_timestamp comment '创建时间'") private Date createTime; @Temporal(TemporalType.TIMESTAMP) @UpdateTimestamp @Column(name = "update_time") private Date updateTime; ``` ---未完待续
# 1、自定义了配置文件 ```properties praise.siteName = mahalalel praise.siteUrl = http://127.0.0.1 ``` # 2、配置文件配置 ```java @ConfigurationProperties(prefix = "praise", value = "site.properties") ``` # 3、启动应用 报如下错误 ```log In AnnotationAttributes for annotation [org.springframework.boot.context.properties.ConfigurationProperties] declared on class 'com.xxx.config.SiteConfig', attribute 'prefix' and its alias 'value' are declared with values of [praise] and [site.properties], but only one is permitted. ``` 错误原因在于,注解ConfigurationProperties的属性prefix和value不能同时使用 # 4、修改并验证 ```java @ConfigurationProperties(prefix = "praise") public class SiteConfig { private String siteName; private String siteUrl; // get/set方法省略 } ``` 控制器内调用 ```java @RestController @RequestMapping("/task") public class TaskController { @Autowired private SiteConfig siteConfig; @GetMapping("/hello") public String hello(){ String siteName = siteConfig.getSiteName(); return "Hello Task!!!!" + siteName; } } ``` 访问地址:http://localhost:8081/task/hello 页面显示: ``` Hello Task!!!!mahalalel ```
# 1、问题出现 项目需求,要求导出Excel带上时间,所以我就用常用的日期时间格式:yyyy-MM-dd HH:mm:ss; 但是测试过程中出现以下异常 Exception occurred during processing request: Invalid char (:) found at index (16) in sheet name '报名表2021-08-02 15:00:34' java.lang.IllegalArgumentException: Invalid char (:) found at index (16) in sheet name '报名表2021-08-02 15:00:34' # 2、问题分析 出现以上问题,是因为在导出Excel的时候,Excel的名字中带了“:”; 大家可以看到我取的Excel名称“报名表2021-08-02 15:00:34”,这样的Excel名称就会有问题 另外在桌面新建Excel时,名称不允许包含以下字符: \/:*?"| [![](https://minedeed.com/content/uploadfile/202108/20b51627952752.png)](https://minedeed.com/content/uploadfile/202108/20b51627952752.png) # 3、解决方法 修改java导出日期格式,使用“yyyy-MM-dd HH_mm_ss” SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH_mm_ss"); # 4、发散 通过图片我们可以知道导出Excel时,不能设置“\/:*?"|”,否则程序会报错
# 1、输出最近5次的提交信息 git log -5 # 2、创建新的提交 git rebase -i HEAD~1 输入命令后,回车,显示提交记录信息。 接下来,输入“i”进入编辑模式,将要修改的提交记录信息由“pick”改为“edit”; 然后,退出编辑模式(Esc键),输入“:wq”,保存编辑内容。 # 3、追加提交 git commit --amend 输入命令,回车,进入编辑器,显示最近一次提交; 接下来,输入“i”进入编辑模式,修改提交信息; 然后,退出编辑模式(Esc键),输入“:wq”,保存编辑内容。 # 4、修改完成 git rebase --continue 提示:“Successfully rebased and updated refs/heads/master.” # 5、推送远端 git push -f --set-upstream origin master 操作图片如下: [![](https://minedeed.com/content/uploadfile/202107/bb5d1627290528.png)](https://minedeed.com/content/uploadfile/202107/bb5d1627290528.png)
# 1、更新至指定版本 ## 1-1、命令 命令: svn update -r 指定版本号 ## 1-2、TortoiseSVN操作 首先,找到要更新的项目的文件夹 第二,右键 -->> 点击“TortoiseSVN” -->> 点击“更新至版本” 如下图所示: ![](https://minedeed.com/content/uploadfile/202107/thum-57121626763256.png)(版本提示框) 第三,在打开的对话框中,依次选择“版本”,输入要更新的版本号,然后点击“确定”,即可更新到指定版本。 ![](https://minedeed.com/content/uploadfile/202107/26c41626763466.png)(版本更新提示框) 未完待续。。。。
# 一、free 命令 作用 在Linux终端环境下,使用free命令可以看到系统实际使用内存的情况,一般使用free -m命令查看内存占用情况(以兆(MB)为单位)。 # 二、系统内存计算 ## 1、实际数据详解 这里我使用“free -h”命令查看(以合适的单位显示内存使用情况),如下图 [![Linux内存查看](https://minedeed.com/content/uploadfile/202107/thum-fe8c1626346086.png)](https://minedeed.com/content/uploadfile/202107/fe8c1626346086.png) 解释: 第一行Mem数据: total:内存总数,图中为7.8G used:已经使用的内存数,图中为7.6G free:空闲的内存数,图中为210M shared:多个进程共享的内存,图中为160K buffers:用于块设备数据缓冲,记录文件系统的metadata,图中为219M cached:用于文件内容的缓冲,图中为4.0G 第二行数据:内存的使用情况 -buffers/cache:被程序实际使用的内存数,即used - buffers - cached;图中为3.4G +buffers/cache:可以挪用的内存数,即free + buffers + cached;图中为4.4G 第三行数据:交换分区的使用情况,也就是虚拟内存 补充: 缓冲与缓存区别:数据的流向不同 缓存:磁盘 -->> 内存 -->> CPU 缓冲:CPU -->> 内存 -->> 磁盘 ## 2、公式 总内存:total = used + free 实际内存占用:total - free - buffers - cached 实际可用内存:buffers + cached + free