首页
友情链接
Search
1
centos 7 部署ollama 本地大模型并使用open-webui 可视化
2,047 阅读
2
利用calibre-web搭建私人书库
1,152 阅读
3
webStrom 通过electron创建第一个桌面程序
923 阅读
4
AdGuardHome 个人DNS服务器搭建记录
775 阅读
5
gitee 发了个人生第一个开源项目
715 阅读
默认分类
kafka
JavaScript
linux
java
vue
自建服务
spring
登录
Search
标签搜索
kafka
vue
docker
electron
JavaScript
spring
quartz
图床
Nginx
spring boot
宝塔
aria2
webUI
docker-compose
Python
小程序
SUI Mobile
k8s
html
PotPlayer
Abdulla
累计撰写
43
篇文章
累计收到
39
条评论
首页
栏目
默认分类
kafka
JavaScript
linux
java
vue
自建服务
spring
页面
友情链接
搜索到
43
篇与
的结果
2021-11-09
javaScript 因为int类型数据太长导致传参的时候失去精度问题解决
今天开发的时候遇到 数据库主键19位数字145794804860374220 ,在conclick的时候传参发现失去精度了。变成1457948048603742200, 怀疑是数据失去精度了,因此换了下传参方式:之前是<button type="button" id="'+alarmId+'_confirm" class="btn btn-success" onclick="cancelAlarm(' + alarmId +')">无效报警</button> 改完之后是<button type="button" id="'+alarmId+'_confirm" class="btn btn-success" onclick="cancelAlarm(\'' + alarmId +'\')">无效报警</button> 注意这里前:' + alarmId +'后:\'' + alarmId +'\'一些其他的语句//添加样式 $('#'+alarmId+'_confirm').addClass("disabled"); //移除click事件 $('#'+alarmId+'_confirm').removeAttr("onclick"); //按钮赋值 $('#'+alarmId+'_confirm').text('已处理');
2021年11月09日
216 阅读
0 评论
0 点赞
2021-11-02
spring 项目 接入Quartz 实现定时任务
因为项目框架比较老,因此没办法像spring boot 或者maven项目一样快捷引入,因此百度了些方法整理了下。开发工具 :idea1、导入quartz包, 右键jar包,选择 Add as library2、新建spring-quartz.xml文件3、xml文件内容<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--注入任务处理类bean --> <bean id="quartzTask" class="{yourPackageName}.service.quartz.GbSyncQuartz"> </bean> <!-- 2.任务触发器详细信息bean --> <bean id="myJobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 设置任务执行对象 --> <property name="targetObject" ref="quartzTask"></property> <!-- 设置任务执行对象中对应的执行方法 --> <property name="targetMethod" value="doSync"></property> <!-- 设置任务是否可并发执行,默认为不并发 --> <property name="concurrent" value="false"></property> </bean> <!-- 2.任务触发器 --> <bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 设置任务详细信息 --> <property name="jobDetail" ref="myJobDetail2"></property> <!-- 设置quartz任务执行表达式 ,每隔三秒执行一次任务--> <property name="cronExpression" value="0/50 * * * * ?"></property> </bean> <!-- 设置触发器调度工厂 --> <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <!-- 触发器调度工厂调度简单触发器 --> <ref bean="cronTrigger2"/> <!--<rel bean=""> 多个触发器可以这样配置--> </list> </property> </bean> </beans> 3、加载配置文件,在spring-config*.xml中引入spring-quartz.xml文件<import resource="classpath:{路径}/spring-quartz.xml"/>4、启动Tomcat项目,可以看到日志import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class GbSyncQuartz { private Logger logger = LoggerFactory.getLogger(GbSyncQuartz.class); public void doSync() { logger.info("同步调度正在执行......"); } }
2021年11月02日
262 阅读
0 评论
0 点赞
2021-10-29
利用calibre-web搭建私人书库
alibre-web是一个支持opds的在线阅读网站的开源项目,主要支持的是对主流电子书文档(epub、txt等)的在线阅读、推送至kindle、在支持opds的平台的下载阅读等我是觉得在线阅读的界面很好看,opds也相当方便就当做了几个宅友私下的轻小说书站|ू・ω・` )。你需要1.已经安装好宝塔面板的服务器2.耐心安装过程本文采用的安装方法为源码安装法,是经作者测试后最简单最不容易出错的一个方法。首先,下载calibre-web的文件【https://github.com/janeczku/calibre-web】,上传并解压至你的网站。将你解压的位置复制下来,待会儿要用,比如说我的位置是在/www/wwwroot/calibre-web-master然后去软件商店下载安装Python项目管理器打开后添加项目,路径是我们刚复制的,启动文件是该路径下的cps.py文件,启动方式选Python,端口选8083(记得去宝塔面板和服务器供应商的安全组开放端口),下面的选项都勾选。如果是绿色三角,就是启动成功了。如果你需要域名访问,就点击映射,填写你要映射的域名,他会自动帮你创建好网站如果不需要域名访问,则在浏览器打开你的ip:8083即可。之后能看到类似于这个界面,就算搭建完成了【你的初始账号一般是admin,密码是admin123】导入书库首先,去calibre官网【https://calibre-ebook.com/download】下载你电脑对应版本的客户端。创建好空白书库后将你的书库资源(txt、epub等文件)直接拖入这个窗口可以ctrl多个书籍然后右键编辑元数据,也可以一个个编辑元数据,将你书的标签、作者、简介、评分等进行修改,直到你满意为止。比如我是直接利用标签把书籍分类的编辑好之后,右键一本书,打开所在目录将这个文件夹(名字可能不同,找绝对路径就行)压缩打包上传至你的服务器,并解压复制其目录,粘贴到之前你的书库页面中的书库配置中这样就搭建完成了SMTP邮箱设定首先选择你要设定的smtp服务器【https://jingyan.baidu.com/article/295430f1fc28a60c7e0050f9.html】,发件人邮箱可以用你自己的邮箱。这里注意加密与未加密的端口是不一样的,详情可以百度。然后在你的邮箱处获取你的smtp密码,我拿网易举例。在设置里找到smtp然后开启这个功能得到一串密码,将它复制到之前需要填写的密码处。然后保存并测试即可,测试的话需要你的管理员账号绑定好收件邮箱opds你的opds地址就是你的书库地址/opds,ios可以使用kybook,安卓可以使用静读天下,都支持opds功能,相当于为本地书库添加了一个自定义的网络书城,还是挺方便的。结语至此,你的书站就基本搭建完成,怎么修改得更合自己心意,就看各位自己的了,当然,如果你只是需要一个比较纯粹的有云功能的阅读产品,我还是推荐neat Reader【https://www.neat-reader.cn/】,这是个国人开发的阅读软件,会员有10g的存书空间,可以多端同步,还是挺方便的。补充一下:按照楼主教程到最后启动的时候提示启动失败,这时候就可能是因为依赖没有安装, 宝塔面板安装依赖的教程如下:1、进入到目录:cd /www/wwwroot/blog.s9ip.cn2、查看是否有_env文件夹3、激活python环境source /www/wwwroot/blog.s9ip.cn/book_venv/bin/activate 4、安装依赖pip install -r requirements.txt5、宝塔面板启动文章来源:https://api.xiaoheihe.cn/v3/bbs/app/api/web/share?link_id=50245602
2021年10月29日
1,152 阅读
4 评论
0 点赞
2021-10-29
AdGuardHome 个人DNS服务器搭建记录
AdGuardHome 有什么优势 我就不记录了, 百度搜索一堆 讲的很透彻。本次装AdGuardHome 的原因是因为在xj地区很多网络访问不到,因此自己记录了一些解析记录 来打到访问网站的问题, 但是不想每一台电脑都改一次host,因此想找了好久才找到这个DNS服务器,目前部署在阿里云上的windows server服务器上, 用起来效果还很不错。1、下载,解压2、运行AdGuardHome.exe ,看到界面启动成功, 启动地址为:http://127.0.0.1:30003、用浏览器打开http://127.0.0.1:3000 , 看到初始化界面,53端口用默认,http端口3000不变,设置用户名密码,一路下一步到成功。4、刷新页面重新登陆,这是可看到设置页面5、根据设置中的指导,设置本地dns服务器地址为阿里云服务器公网IP。6、这时候如果不设置备用dns则发现访问不了网络,排查阿里云53端口开放正常之后,解析不了的原因很有可能是因为没有设置上游dns, 这里根据提示设置上游dns , 设置为完成之后可以正常解析了。7、最后把自己整理的DNS加上去,当我们电脑访问指定的域名之后可以跳转到自己记录的IP地址,不走上游DNS解析。
2021年10月29日
775 阅读
6 评论
1 点赞
2021-10-29
Spring Data Jpa 实现in查询
protected Specification<AitpModel> createSpecification(AitpModelCriteria criteria) { Specification<AitpModel> specification = new Specification<AitpModel>() { @Override public Predicate toPredicate(Root<AitpModel> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { List<Predicate> list = new ArrayList<Predicate>(); if (null!=criteria.getModelType()){ String modelType = criteria.getModelType().getEquals(); if (!StringUtils.isEmpty(modelType)) { if (modelType.contains(",")) { // in查询 String[] ids = modelType.split(","); CriteriaBuilder.In<Object> in = criteriaBuilder.in(root.get("modelType")); for (int i = 0; i < ids.length; i++) { in.value(ids[i]); } list.add(in); } else { // 普通查询 list.add(criteriaBuilder.equal(root.get("modelType").as(String.class), modelType)); } } } return criteriaBuilder.and(list.toArray(new Predicate[list.size()])); } }; if (criteria != null) { if (criteria.getId() != null) { specification = specification.and(buildRangeSpecification(criteria.getId(), AitpModel_.id)); } if (criteria.getUserId() != null) { specification = specification.and(buildRangeSpecification(criteria.getUserId(), AitpModel_.userId)); } if (criteria.getPicCover() != null) { specification = specification.and(buildStringSpecification(criteria.getPicCover(), AitpModel_.picCover)); } if (criteria.getModelName() != null) { specification = specification.and(buildStringSpecification(criteria.getModelName(), AitpModel_.modelName)); } // if (criteria.getModelType() != null) { // specification = specification.and(buildStringSpecification(criteria.getModelType(), AitpModel_.modelType)); // } if (criteria.getLanguage() != null) { specification = specification.and(buildStringSpecification(criteria.getLanguage(), AitpModel_.language)); } if (criteria.getFramework() != null) { specification = specification.and(buildStringSpecification(criteria.getFramework(), AitpModel_.framework)); } if (criteria.getType() != null) { specification = specification.and(buildStringSpecification(criteria.getType(), AitpModel_.type)); } if (criteria.getScope() != null) { specification = specification.and(buildStringSpecification(criteria.getScope(), AitpModel_.scope)); } if (criteria.getModelVersion() != null) { specification = specification.and(buildStringSpecification(criteria.getModelVersion(), AitpModel_.modelVersion)); } if (criteria.getModelUseInstructions() != null) { specification = specification.and(buildStringSpecification(criteria.getModelUseInstructions(), AitpModel_.modelUseInstructions)); } if (criteria.getOutputPath() != null) { specification = specification.and(buildStringSpecification(criteria.getOutputPath(), AitpModel_.outputPath)); } if (criteria.getCreateWay() != null) { specification = specification.and(buildStringSpecification(criteria.getCreateWay(), AitpModel_.createWay)); } if (criteria.getProjectId() != null) { specification = specification.and(buildRangeSpecification(criteria.getProjectId(), AitpModel_.projectId)); } if (criteria.getJobId() != null) { specification = specification.and(buildRangeSpecification(criteria.getJobId(), AitpModel_.jobId)); } if (criteria.getFilePath() != null) { specification = specification.and(buildStringSpecification(criteria.getFilePath(), AitpModel_.filePath)); } if (criteria.getAccuracy() != null) { specification = specification.and(buildStringSpecification(criteria.getAccuracy(), AitpModel_.accuracy)); } if (criteria.getModelFormat() != null) { specification = specification.and(buildStringSpecification(criteria.getModelFormat(), AitpModel_.modelFormat)); } if (criteria.getModelLabelType() != null) { specification = specification.and(buildStringSpecification(criteria.getModelLabelType(), AitpModel_.modelLabelType)); } if (criteria.getDelFlag() != null) { specification = specification.and(buildStringSpecification(criteria.getDelFlag(), AitpModel_.delFlag)); } if (criteria.getRemark() != null) { specification = specification.and(buildStringSpecification(criteria.getRemark(), AitpModel_.remark)); } if (criteria.getCreateBy() != null) { specification = specification.and(buildStringSpecification(criteria.getCreateBy(), AitpModel_.createBy)); } if (criteria.getCreateTime() != null) { specification = specification.and(buildRangeSpecification(criteria.getCreateTime(), AitpModel_.createTime)); } if (criteria.getUpdateBy() != null) { specification = specification.and(buildStringSpecification(criteria.getUpdateBy(), AitpModel_.updateBy)); } if (criteria.getUpdateTime() != null) { specification = specification.and(buildRangeSpecification(criteria.getUpdateTime(), AitpModel_.updateTime)); } if (criteria.getOrganizationId() != null) { specification = specification.and(buildRangeSpecification(criteria.getOrganizationId(), AitpModel_.organizationId)); } } return specification; }
2021年10月29日
216 阅读
0 评论
0 点赞
1
...
7
8
9