Memory River

记忆河,记今日之事忆往昔之流

异常:java.io.IOException: The temporary upload location [/tmp/tomcat.676857388762

springboot的项目,部署在Linux下,刚开始一切都很OK的,今天突然发布文章的时候无法上传文件了,跟踪日志发现报错异常了,异常如下:java.io.IOException: The temporary upload location [/tmp/tomcat.6768573887622289341.8602/work/Tomcat/localhost/ROOT] is not valid 异常原因:在Linux 系统中,SpringBoot 应用服务在启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。所以如果系统长时间无人问津的话,就可能导致上面这个问题。解决方案:一.临时的,直接重新启动项目就行,会重新建立临时文件夹二.在配置文件中配置tomcat的临时目录:server.tomcat.basedir=/home/temp 三. 写个配置类,通过@Bean的方式配置目录:/** * 文件上传临时路径 */ @Bean MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setLocation("/home/temp"); return factory.createMultipartConfig(); } 我使用的是第二种,在项目启动时生成该文件。
    2019-11-14 10:42:52    ·    1       0

Js 移除Array/数组中指定元素

首先需要找到元素的下标:var array = [0,1,2,3,4,5]; var index = array.indexOf(5); 使用splice函数进行移除:if (index > -1) { array.splice(index, 1); } indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。splice 函数的第二个参数指删除的数目。splice直接修改原数组,并把删除的所有元素以另一个新数组的方式返回。
    2019-11-14 10:15:46    ·    4       0

js取整数、取余数的方法

取整1.取整// 丢弃小数部分,保留整数部分 parseInt(5/2) // 2 2.向上取整// 向上取整,有小数就整数部分加1 Math.ceil(5/2) // 3 3.向下取整// 向下取整,丢弃小数部分 Math.floor(5/2) // 2 4.四舍五入// 四舍五入 Math.round(5/2) // 3 取余// 取余 6%4 // 2
    2019-11-12 09:51:37    ·    3       0

js判断变量是不是数组的方法

方案一:instanceof变量 instanceof 类型返回的是布尔值true false<br>例: var a = []a instanceof Array 方案二:原型prototype + toString +call() 首先: Object.prototype.toString.call(variable)来判断,返回值是字符串 其次: Object.prototype.toString.call(variable).indexOf('Array') 如果变量对象是纯数组,返回的数字不是-1 最后: Object.prototype.toString.call(variable).indexOf('Array') !== -1 比对数值是否等于-1就能判断是否是数组类型 是为true方案三:原型prototype + isPrototypeOf()Array.prototype.isPrototypeOf(variable) isPrototypeOf() 函数 : 用于指示对象是否存在于一个对象的原型链中。如果存在返回true,反之返回false。该方法属Object对象,由于所有的对象都继承了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。如果variable的原型链中存在Array对象,就会返回true,也就说明variable是数组类型。方案四:构造函数 constructorvariable.constructor variable.constructor.toString() variable.constructor.toString().indexOf("Array") !== -1 一个数组类型的实例,其原型__proto__.constructor右边是Array关键字,再拿到字符串,最后查找字符串中Array关键字的位置是否等于-1方案五:数组方法 isArray()Array.isArray(variable)
    2019-10-21 10:28:59    ·    29       0

解决unable to start within 45 seconds

在启动eclipse或启动服务时,有时会出现这个错Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor. eclipse里启动服务时,有时会报错 Server Tomact was unable to start within 45 seconds的错误,通过如下操作可解决。方法一:可直接修改配置文件,在工作控件目录:workspace\.metadata\.plugins\org.eclipse.wst.server.core\,有一个servers.xml文件,把start-timeout的值由45改成一个大一些的值,比如120。方法二:在eclipse里修改,server窗口选中服务,双击(或者右键,点击打开)Timeouts下,start的值改大一些,默认是45然后重启eclipse
    2019-10-21 10:21:11    ·    28       0

Sublime Text3快捷键大全

选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名、函数名等。Ctrl+L 选中整行,继续操作则继续选择下一行,效果和 Shift+↓ 效果一样。Ctrl+Shift+L 先选中多行,再按下快捷键,会在每行行尾插入光标,即可同时编辑这些行。Ctrl+Shift+M 选择括号内的内容(继续选择父括号)。举个栗子:快速选中删除函数中的代码,重写函数体代码或重写括号内里的内容。Ctrl+M 光标移动至括号内结束或开始的位置。Ctrl+Enter 在下一行插入新行。举个栗子:即使光标不在行尾,也能快速向下插入一行。Ctrl+Shift+Enter 在上一行插入新行。举个栗子:即使光标不在行首,也能快速向上插入一行。Ctrl+Shift+[ 选中代码,按下快捷键,折叠代码。Ctrl+Shift+] 选中代码,按下快捷键,展开代码。Ctrl+K+0 展开所有折叠代码。Ctrl+← 向左单位性地移动光标,快速移动光标。Ctrl+→ 向右单位性地移动光标,快速移动光标。shift+↑ 向上选中多行。shift+↓ 向下选中多行。Shift+← 向左选中文本。Shift+→ 向右选中文本。Ctrl+Shift+← 向左单位性地选中文本。Ctrl+Shift+→ 向右单位性地选中文本。Ctrl+Shift+↑ 将光标所在行和上一行代码互换(将光标所在行插入到上一行之前)。Ctrl+Shift+↓ 将光标所在行和下一行代码互换(将光标所在行插入到下一行之后)。Ctrl+Alt+↑ 向上添加多行光标,可同时编辑多行。Ctrl+Alt+↓ 向下添加多行光标,可同时编辑多行。编辑类Ctrl+J 合并选中的多行代码为一行。举个栗子:将多行格式的CSS属性合并为一行。Ctrl+Shift+D复制光标所在整行,插入到下一行。Tab 向右缩进。Shift+Tab 向左缩进。Ctrl+K+K 从光标处开始删除代码至行尾。Ctrl+Shift+K 删除整行。Ctrl+/ 注释单行。Ctrl+Shift+/ 注释多行。Ctrl+K+U 转换大写。Ctrl+K+L 转换小写。Ctrl+Z 撤销。Ctrl+Y 恢复撤销。Ctrl+U 软撤销,感觉和 Gtrl+Z 一样。Ctrl+F2 设置书签Ctrl+T 左右字母互换。F6 单词检测拼写搜索类Ctrl+F 打开底部搜索框,查找关键字。Ctrl+shift+F 在文件夹内查找,与普通编辑器不同的地方是sublime允许添加多个文件夹进行查找,略高端,未研究。Ctrl+P 打开搜索框。举个栗子:1、输入当前项目中的文件名,快速搜索文件,2、输入@和关键字,查找文件中函数名,3、输入:和数字,跳转到文件中该行代码,4、输入#和关键字,查找变量名。Ctrl+G 打开搜索框,自动带:,输入数字跳转到该行代码。举个栗子:在页面代码比较长的文件中快速定位。Ctrl+R 打开搜索框,自动带@,输入关键字,查找文件中的函数名。举个栗子:在函数较多的页面快速查找某个函数。Ctrl+: 打开搜索框,自动带#,输入关键字,查找文件中的变量名、属性名等。Ctrl+Shift+P 打开命令框。场景栗子:打开命名框,输入关键字,调用sublime text或插件的功能,例如使用package安装插件。Esc 退出光标多行选择,退出搜索框,命令框等。显示类Ctrl+Tab 按文件浏览过的顺序,切换当前窗口的标签页。Ctrl+PageDown 向左切换当前窗口的标签页。Ctrl+PageUp 向右切换当前窗口的标签页。Alt+Shift+1 窗口分屏,恢复默认1屏(非小键盘的数字)Alt+Shift+2 左右分屏-2列Alt+Shift+3 左右分屏-3列Alt+Shift+4 左右分屏-4列Alt+Shift+5 等分4屏Alt+Shift+8 垂直分屏-2屏Alt+Shift+9 垂直分屏-3屏Ctrl+K+B 开启/关闭侧边栏。F11 全屏模式Shift+F11 免打扰模式
    2019-10-21 10:12:37    ·    18       0

莫让懒惰磋砣了你的青春

古人云:“一勤天下无难事”。“勤奋”可以说是从古至今几乎所有的成功者都在践行的真理,然而更多的人则把成功寄托于“勤奋”之外的偶然性。“业精于勤,荒于嬉;行成于思,毁于随”。学业由于勤奋而精通,但它却荒废在嬉笑声中,事情由于反复思考而成功,但他却能毁于随随便便。 学业、工作、事业,乃至一个小小的兴趣爱好、良好习惯的养成没有一个不与勤勉息息相关。勤奋的人纵使出身卑微,形象丑陋,但他始终有一颗积极向上的心态,微笑面对不尽如人意的生活与挑战,即使在通往成功的道路上遭到周围很多人的冷嘲热讽,但依旧能保持那种我就是王者的自信,他们一旦看到了黎明,便不惧怕夜的黑和孤独,不会轻易放弃,不忘初心,始终坚持着那份执着的梦想,形单影只又何防?即使世上没有一个人为自己喝彩,世界都与你无关又怎样,你还是你,一个特立独行的你,一个独一无二的你,一个不负青春的你…… 古往今来,多少政治家、企业家亦或权势官员,天道勤酬的事例比比皆是,他们用自己勤奋至极的人生态度诠释了努力的意义。 汉朝时,少年时的匡衡,非常勤奋好学。由于家里非常贫穷,所以他白天必须干许多活,挣钱糊口。只有晚上,他才能坐下来安心读书。不过,他又买不起蜡烛,天一黑,就无法看书了。匡衡心痛这浪费的时间,内心非常痛苦。 而他的邻居家里很富有,一到晚上好几间屋子都点起蜡烛,把屋子照得通亮。匡衡有一天鼓起勇气,对邻居说:“我晚上想读书,可买不起蜡烛,能否借用你们家的一寸之地呢?”邻居一向瞧不起比他们家穷的人,就恶毒地挖苦说:“既然穷得买不起蜡烛,还读什么书呢!”匡衡听后非常气愤,不过他更下定决心,一定要把书读好。 于是,匡衡回到家中,悄悄地在墙上凿了个小洞,邻居家的烛光就从这洞中透过来了。他借着这微弱的光线,如饥似渴地读起书来,渐渐地把家中的书全都读完了。 匡衡就是这样勤奋学习的,后来他做了汉元帝的丞相,成为了西汉时期有名的学者。这就是典故“凿壁偷光”的由来。 华人首富李嘉诚曾说过:“勤奋是个人成功的要素,所谓一分耕耘,一分收获,一个人所获得的报酬和成果,与他所付出的努力是有极大的关系的。运气只是一个小因素,个人的努力才是创造事业的最基本条件”。 当年,一家公司的老板有晚上在办公室加班的习惯,因为白天应酬太多,他发现有个员工也跟他一样,晚上经常出现在办公室里,上司于是对他说:“不要太晚,注意休息。”他说“今天还有工作没完成,做完就休息。”有一天晚上,我发现他走了,可过了一会儿又回来了,于是过去问他,他说在路上突然想起电脑系统的一个数据弄错了,所以马上回来,改了再回家,后来公司成立了一家新部门,老板让他做了部门经理,因为工作交给他,不会耽误在他手里,他现在已是公司的副总。这位员工就是李嘉诚。 青春就像一列转瞬即逝的列车,你即使早已等在站台,目不转睛地盯着它从远方飞驰而来的方向,但当它经过你身边时,你才发现你即使很努力但还是没有足够时间驻足观看它的外观和内在,把握青春,不负最美的年华,让自己学会勤勉,拒绝懒惰,不再拖延,始终保持谦虚谨慎的态度、骄傲自信的内心和勤奋踏实的风采。 就像等了22年之久才拿到奥斯卡第88届奥斯卡金像奖最佳男主角的著名影星莱昂纳多•迪卡普里奥一样,成功没有捷径,勤奋勤奋还是勤奋,坚持坚持还是坚持,莫让懒惰磋砣了你的青春,莫让空虚浪费了你的生命,用成就丰富你的内心,用梦想填补你的人生。
    2019-10-16 23:25:52    ·    31       0

Linux中MySQL数据库的时间相差13个小时

在做一个项目中,使用的是Linux系统,yun安装了MySQL5.7,在Linux上跑一个springboot的工程,使用JDK8,发现页面数据库保存的时间格式的数据比传入的时间相差13个小时。以前一般都是碰到相差8个小时的情况,一直以为是相差8个小时,奈何仔细一看竟是13小时!敏锐的猿类嗅觉判断这种情况肯定是时区的问题。开始有了怀疑的对象。 怀疑:1、Linux系统时区。2、mysql时区。Linux系统时区击破怀疑1,Linux时区。 连上服务器,输入命令 date -R ,查看系统时间与时区: 从上图可以得出,Linux的系统时区是正确的。怀疑1不成立。mysql时区 连上mysql,输入命令 show variables like '%time_zone%' ,查看MySQL的时区: 上图可以看出来,MySQL使用的是系统时区,而系统时区验证过是正确的。郁闷良久。本着死马当作活马治,也没什么可以怀疑的对象了,就试试把mysql的时区设为东八区,明确指定 MySQL 数据库的时区,不使用引发误解的CST。输入命令 vim /etc/my.cnf ,编辑配置文件,并加入 default_time-zone='+08:00' :按Esc进入命令模式,输入 :wq 并回车保存退出vim。然后重启MySQL服务。再次输入命令 show variables like '%time_zone%' ,查看MySQL的时区:OK,测试一下工程的时间保存,问题得到解决。完美!
    2019-10-16 23:11:45    ·    38       0

3D打印“赵州桥”

10月14日,装配式混凝土3D打印赵州桥落成典礼在河北工业大学北辰校区举行。据了解,由该校副校长兼土木与交通学院院长马国伟教授带领团队完成的这座装配式混凝土3D打印桥梁,是目前世界上跨度最长、桥梁总长最长、规模最大的混凝土3D打印桥梁。 据介绍,桥梁跨度18.04米、总长28.1米。建造过程中,按照赵州桥1:2缩尺打印后现场装配式组装,不仅混凝土材料是独家特殊配制的,3D打印水泥基机械设备是自主开发设计的,还综合考虑了各项桥梁常规设计中的荷载因素,安全系数高。该步行桥的成功落成,可推进智能建造关键技术的长足发展,对我国建筑行业实现绿色化、工业化、智能化具有重要意义。 据马国伟介绍,混凝土3D打印是一种将水泥基复合材料逐层堆叠的新型增材制造技术,相比传统的施工建造,3D打印无需模板与支撑,具有自动化、快速化和灵活化的建造优势,可以利用打印中的特殊纹理赋予建筑特殊表皮,同时还可运用于古建筑保护中,精准恢复古建筑的残损、遗失部分,能节省约1/3的建筑材料和2/3的人工,高度自动化的打印过程可大大提高建造效率,也不因结构的几何复杂程度而增加成本,而且装配式设计结合3D打印能大大减少对现场环境的污染,是推动装配式建筑与智能建造发展的革新技术。“而且我们在进行3D打印桥梁过程中,内嵌了许多传感器,用于24小时对桥梁进行健康监测,保证安全运行的同时,也体现了智能化集成。”
    2019-10-16 08:42:19    ·    25       0

工信部:11月30日前全国范围内正式提供携号转网服务

据央视新闻消息,从工信部了解到,今年11月30日之前,三大电信运营商将在全国范围内提供携号转网服务。此外,工信部也将于近期正式发布《携号转网服务管理暂行办法》。 据悉,携号转网工作推进将分为三个阶段:9月20日前,天津市、海南省、江西省、湖北省、云南省5个试点省(市)完成试验,正式提供服务;11月10日至25日,其他26个省(自治区、直辖市)“携号转网”服务上线试运行;11月30日前,全国范围内正式提供服务。 今年5月14日,国务院常务会议确定:通过普惠制套餐升档降费、降低套餐外流量单价、对低收入和老年群体推广“地板价”资费等,实现移动流量平均资费降低20%以上;11月底前在全国实施“携号转网”;年内再精简套餐数量15%以上,解决数量多、选择难等问题。那如何办理携号转网呢?简单来说,可以分以下三步:手机发送短信指令,CXXZ#姓名#证件号码,发送至归属运营商。其中,移动发送到10086,联通发送到10010,电信发送到10001。查询是否具备办理携号转网的资格。如果符合办理需求,继续编辑短信,SQXZ#姓名#证件号码,发送至归属运营商,获取携号转网所需要的授权码。拿着“授权码”,代号本人有效身份证,前往需要转入的运营商网店办理新卡。需要注意的是,当前手机号不能有拖欠费用的行为,必须是自己实名的电话卡,与此同时,参加相运营商的套餐,都要已经结束。
    2019-10-16 08:40:17    ·    23       0