首页
友链
关于
免责声明
Search
1
王者营地战绩数据王者荣耀查询网页源码
6,209 阅读
2
群晖Active Backup for Business套件备份Linux服务器教程
4,384 阅读
3
影视分享
4,313 阅读
4
(亲测)Jrebel激活破解方式2019-08-21
4,289 阅读
5
centos7 安装及卸载 jekenis
3,573 阅读
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
登录
Search
标签搜索
docker
springboot
Spring Boot
java
linux
Shiro
Graphics2D
图片
游戏账号交易
Mybatis
Spring Cloud
centos
脚本
Web Station
群辉
王者营地
战绩查询
平台对接
Spring Cloud Alibaba
nacos
绿林寻猫
累计撰写
249
篇文章
累计收到
26
条评论
首页
栏目
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
页面
友链
关于
免责声明
搜索到
52
篇与
Linux
的结果
2021-12-08
通过域名访问web项目
1.首先把项目导出成*.war文件 2.把项目放到Linux系统tomcat中的webapps下(到此步骤重启tomcat可以通过ip地址加端口号加项目名访问项目如: 192.168.44.199:8080/项目名/index.jsp) 3.配置域名解析(注意:不管是在腾讯云或阿里云购买的域名,记得配置解析,不然不能通过域名访问项目记录值里填的是对应的) 4.打开tomcat中conf文件中的server.xml进行修改(此步骤为更改端口配置域名访问)在把此文件中的defaultHost的值改为自己的域名 ------------------------------------------------------在把name改为域名如果没有context则添加一行docBase 填的是对应项目名记得在安全组里添加80端口最后重启tomcat就可以通过域名访问项目
2021年12月08日
181 阅读
0 评论
0 点赞
2021-12-08
Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException
1.进入redis的src目录下 输入:./redis-cli将受保护模式选项设置为“no”,为了让服务器开始从外部接受连接输入:config set protected-mode "no"
2021年12月08日
274 阅读
0 评论
0 点赞
2021-12-08
利用Redis锁解决并发问题
转发 https://blog.csdn.net/fuyifang/article/details/83008884用redis处理高并发是个很常见的方式,因为redis的访问效率很高(直接访问内存),一般我们会用来处理网站一瞬间的并发量。那如果要使用redis来进行高并发问题的解决的话,应注意以下几点:1、首先我们要先知道,我们在存储时,应使用redis的setnx方法,不应该使用set方法,因为setnx拥有原子操作命令(正确点说法应该是使用setnx,根据其属性可以保证共享资源的原子性操作),当资源锁存在不能设置值,则返回0,而当锁不存在,则设置锁,返回1; 但如果使用set方法,则会出现在高并发情况下,进程同时获取锁状态为null,同时设置,锁之间相互覆盖,但是俩进程仍在并发执行业务代码的情况。2、为了防止死锁,我们不应直接使用jedis.setnx(lock, 1) 来进行简单的加锁,这样会导致当进程执行出现问题,锁未释放,则其他进程永远处于阻塞状态,出现死锁。 为了避免死锁,我们在加锁时带上时间戳,setnx(lock, 时间戳+超时时间),当发现锁超时了,便可以对锁进行重置,避免死锁。接下来,实际操作!设置锁://其中currentTimeMullis为当前时间、valideTime为超时时间,key为资源//对该资源进行锁获取,如果存在锁则会返回false,不存在则设置值并返回trueboolean lock = redisService.setnx(key, currentTimeMullis+valideTime);//如果不存在并设置了值,则可以直接返回,因为已经获取资源锁成功//否则,则代表存在这个锁,则进行锁是否超时的判断。获取该资源的锁时间,用于判断是否超时了String keyTime = redisService.get(key);if((Long.valueOf(currentTimeMullis)-Long.valueOf(keyTime))>valideTime){ //该判断代表该资源锁已经超时,那么便进行资源锁的重置,也就是进行资源锁的重新设置(删除并重新设置)//重新设置成功后也返回,因为获取锁成功,可以进行操作啦。}//如果以上操作都没有成功,则返回失败,代表获取锁失败,不可以进行操作。释放锁:当对资源处理结束后,则调用释放方法释放锁资源(经提醒,我发现我这里少了个判断逻辑…)//在删除前,应该先对该资源锁进行获取,判断值与此时释放锁的线程所携带的值是否相等,也就是我们上面创建时用的currentTimeMullis+valideTime。String keyLockTime = redisService.get(key);if(keyLockTime!=null&&keyLockTime.equals(currentTimeMullis+valideTime)){ //此时锁还由当前线程保持则释放锁redisService.del(key);}else{ //此时说明该资源锁被其他线程重置或释放,已不再拥有锁的释放权//结束}
2021年12月08日
274 阅读
0 评论
0 点赞
2021-12-08
SSM 整合之Redis
ssm整合:https://blog.csdn.net/qq_40369944/article/details/842567671.导入依赖<spring.redis.version>1.6.0.RELEASE</spring.redis.version> <jedis.version>2.7.2</jedis.version> <commons.version>2.4.2</commons.version> <!-- config redis data and client jar--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${spring.redis.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>${commons.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency> 2.在resources中创建redis.propertiesredis.host=47.106.8.233 redis.port=6379 redis.password= redis.maxIdle=300 redis.maxWaitMillis=1000 redis.maxTotal=600 redis.testOnBorrow=true redis.testOnReturn=true 3.在resources中创建redis-context.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" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--扫描redis配置文件--> <context:property-placeholder ignore-unresolvable="true" location="classpath:redis.properties"/> <!--设置连接池--> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}"/> <property name="maxTotal" value="${redis.maxTotal}" /> <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> <property name="testOnReturn" value="${redis.testOnReturn}" /> </bean> <!--设置链接属性--> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:hostName="${redis.host}" p:port="${redis.port}" p:password="${redis.password}" p:pool-config-ref="poolConfig" p:timeout="100000"/> <!-- Jedis模板配置 --> <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> </bean> </beans>4.在Spring.xml中引入配置<!-- 引入redis配置文件 --> <import resource="classpath:redis-context.xml"/> 5.创建RedisUtil@Component public class RedisUtil { @Autowired private RedisTemplate redisTemplate; /** * 删除对应的value * * @param key */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * 判断缓存中是否有对应的value * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 读取缓存 * * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations<Serializable, Object> operations = redisTemplate .opsForValue(); result = operations.get(key); return result; } /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate .opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate .opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } } 6.创建controller@Controller @RequestMapping("/index") public class indexController { @Resource private RedisUtil redisUtil; @RequestMapping("/a") @ResponseBody public String index(){ redisUtil.set("aa","123"); System.out.println( redisUtil.get("aa")); return "Hello"; } } 7.创建index.jsp<a href="/index/a.do">redis</a> 8.测试8.1运行界面8.2 结果 控制台输出:界面显示:
2021年12月08日
120 阅读
0 评论
0 点赞
2021-12-08
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested
redis连接报错Type Exception ReportMessage Request processing failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the poolDescription The server encountered an unexpected condition that prevented it from fulfilling the request. 进入Linux,修改redis配置 config set protected-mode "no"
2021年12月08日
292 阅读
0 评论
0 点赞
2021-12-08
FirewallD is not running
1.执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示FirewallD is not running,如下图所示。2.通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。3.通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。4.再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。5.如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。6.再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。7.重新加载配置,使得修改有效。firewall-cmd --reload 8.查看开启的端口firewall-cmd --permanent --zone=public --list-ports
2021年12月08日
201 阅读
0 评论
0 点赞
2021-12-08
org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
tomcat 能访问界面,但是程序接口一直没有响应。修改server.xml,添加 maxHttpHeaderSize="81920" <Connector port="8989" protocol="HTTP/1.1" maxHttpHeaderSize="81920" connectionTimeout="20000" redirectPort="8443" />重启tomcat测试发现没有问题
2021年12月08日
564 阅读
0 评论
0 点赞
2021-12-08
SEVERE: Could not contact [localhost:8005] (base port [8005] and offset [0]). Tomcat may not be runn
问题在关闭tomcat是提示(./shutdown.sh):SEVERE: Could not contact localhost:8005. Tomcat may not be running. Jul 20, 2018 3:17:45 PM org.apache.catalina.startup.Catalina stopServer SEVERE: Catalina.stop: java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSoc at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.j at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:498) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorIm at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:34 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:430) 信息显示端口8005没有启动,同时命令查看进程端口netstat -tunlp|grep 8005 netstat -tunlp|grep 8080可以看到8080启动,8005没有启动。 解决方式修改${JAVA_HOME}/jre/lib/security/Java.securitysecurerandom.source=file:/dev/random 改为: securerandom.source=file:/dev/urandom然后杀死8080的进程kill -9 进程号重启tomcat就可以访问了
2021年12月08日
870 阅读
0 评论
0 点赞
2021-12-08
uniapp本地项目配置域名报Invalid Host header
再manifest.json中配置"h5":{ "devServer":{ "disableHostCheck":true}}
2021年12月08日
400 阅读
0 评论
0 点赞
2021-12-08
tomcat9.0配置多个sll证书
第一步 <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />改:<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" /> 第二步<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />改:<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />第三步 <!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true" > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig> <Certificate certificateKeyFile="conf/localhost-rsa-key.pem" certificateFile="conf/localhost-rsa-cert.pem" certificateChainFile="conf/localhost-rsa-chain.pem" type="RSA" /> </SSLHostConfig> </Connector> --> 改:<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="默认域名" > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig hostName="域名1" > <Certificate certificateKeystoreFile="conf/域名1-tomcat.pfx" certificateKeystorePassword="域名1密码" type="RSA"/> </SSLHostConfig> <SSLHostConfig hostName="域名2"> <Certificate certificateKeystoreFile="conf/域名2-tomcat.pfx" certificateKeystorePassword="域名2密码" type="RSA"/> </SSLHostConfig> </Connector> 第四步修改host <Host name="域名1" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="" reloadable="true" docBase="webapps下项目名称"/> </Host> <Host name="域名2" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="" reloadable="true" docBase="webapps下项目名称"/> </Host>记得开放80和443端口
2021年12月08日
89 阅读
0 评论
0 点赞
1
2
3
4
...
6