JAVA
ross
专注于音视频相关的开发和解决方案,包括视频客服、视频会议等相关的行业解决方案提供者
展开
-
记一次SpringBoot无法连接Mysql的问题追踪
记一次SpringBoot无法连接Mysql的问题追踪原创 2022-04-02 19:22:26 · 3033 阅读 · 0 评论 -
java之sync与lock的区别?
1.sync是一个关键字,lock是一个接口;2.sync可以锁代码块,也可以锁方法,而lock只能锁代码块;3.lock提供的有trylock方法,通过trylock可以中断锁;4.lock提供有读写锁,读读不互斥,从而提高了读的效率,读写,写写互斥;5.sync是非公平锁,而lock支持公平锁和非公平锁;6.sync不需要手动释放锁,而lock需要手工释放锁;...原创 2021-05-05 17:08:05 · 2865 阅读 · 0 评论 -
Mybatis源码解读
1.mybatis4种加载配置文件的方式: (1)相对应类资源路径的引用,属性关键字resource: <mappers> <mapper resource="mapper/PostMapper.xml"/> <mappers> (2)相对应资源定位符,属性关键字url: <mappers> <mapper url=""fil...原创 2021-02-22 22:03:24 · 93 阅读 · 0 评论 -
idea在debug模式下,由于Method breakpoints造成项目无法正常启动
今天在idea中以debug模式启动项目时,项目一直处于启动状态,无法正常启动完毕;表现为:而以run方式启动项目,则可以正常启动;这说明debug模式下有什么特殊的配置造成启动无法正常,百度后,发现有人也遇到了类似的情况,主要原因是由于在方法上打了断点造成的,把方法上的断点去掉即可;...原创 2021-02-03 10:16:21 · 870 阅读 · 0 评论 -
Web微信协议
Web微信协议[文档]Web微信协议1.登录1.1 获取uuid(get)请求https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=n...转载 2020-02-14 17:06:28 · 6646 阅读 · 0 评论 -
window批处理方式,上传jar及pom至私有仓库
刚好项目中使用到了maven进行jar的管理,但因为这些jar在客户的私有仓库里,公司为了想让其它地方的同事,使用本项目,提出要将这些依赖的jar包及maven描述文件上传到公司的maven仓库里。 为了方便操作,一种方式是将jar打包给公司的管理员,另一种是使用maven的命令工具将jar一个个的传到仓库里,因为涉及到权限问题,管理员不太愿意直接让我们打包给其文件包,因...原创 2018-03-13 15:11:17 · 1432 阅读 · 0 评论 -
JPS命令原理解析
今天突发奇想,想看看JPS命令是如何找到java进程的,原来想着它可能是使用find或ps命令进行结果过滤而来,结果看完源码,真实情况却是:原来java的程序启动后,都会将自己的进程信息写到临时文件夹下,window下对应的目录为:C:\Users\username\AppData\Local\Temp\hsperfdata_username;linux下是/tmp/hsperfdat...原创 2018-02-28 11:43:24 · 409 阅读 · 0 评论 -
idea配置TortoiseSVN
默认安装TortoiseSVN时,安装包没有安装svn.exe文件,需要选择connect client tool选项才会安装对应的svn.exe,这个文件正是idea配置svn时需要的原创 2018-01-20 10:16:15 · 1020 阅读 · 0 评论 -
Java安全之自定义SecurityManager
package com.leasehouse;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.security.AccessControlException;/** * Created by yulifan on 2017/7/26原创 2017-07-26 18:07:37 · 797 阅读 · 0 评论 -
Java并发之Callable和Runnable
Java并发中,提供的Callable和Runnale最大的区别即为: Callable接口可以返回值,而Runnable不能返回值;package com.leasehouse;import java.util.concurrent.*;public class TestCallable { public static void main(String[原创 2017-07-24 16:37:13 · 288 阅读 · 0 评论 -
Java并发之Semaphore
package com.leasehouse;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class原创 2017-07-24 10:38:18 · 180 阅读 · 0 评论 -
Java并发之CountDownLatch
package com.leasehouse;import java.util.concurrent.CountDownLatch;/** * Created by yulifan on 2017/7/22. */public class TestCountDownLatch { static CountDownLatch downLatch = new CountDown原创 2017-07-24 10:36:33 · 175 阅读 · 0 评论 -
Java并发之Exchanger
package com.leasehouse;import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TestExchanger { static ExchangerSt原创 2017-07-24 10:38:54 · 222 阅读 · 0 评论 -
Elasticsearch一些概念
1.DSL : domain specfic language2.分词分析经历三步: (1)词汇识别; (2)分词; (3)去掉无语义的词;3.CAP; consistancy avaibility,partition tolerance;4.shard的计算公式: shard = hash(routing) / number_of_primary_sha...原创 2018-03-23 15:50:20 · 161 阅读 · 0 评论 -
推荐系统的余弦相似度算法
在推荐系统中,对于文章内容和物品相似度有多种算法可以使用,而余弦相似度算法相对简单并且准确性也不错,因此使用率比较高。 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。通过计算两个向量之间的夹角来衡量两个向量的相似度,角度越小说明相似度越高。在向量表示的三角形中,假设a向量...原创 2018-04-10 15:18:41 · 13027 阅读 · 1 评论 -
maven本地仓库有对应的jar包,但进行编译时,还提示jar找不到的原因
这种情况一般均是从别的电脑或同事那里拷贝的他们的.m2目录下的文件造成的,可以查看本地.m2仓库jar目录下的对应_remote.repositories文件,如果后面不是central=,将其改为central即可,一般存在找不到的情况下,这个值为nexus。...原创 2019-09-18 16:46:12 · 3401 阅读 · 0 评论 -
jstack导出的线程分析说明
前两天,我们集成测试环境的系统运行很慢,通过对在运行的线程分析,并没有发现特别有价值的内容,但dubbo-serverHandler的线程特别多(达到200个),开始以为是dubbo线程的问题,但最后发现并不是,通过对dubbo源码分析后,只是dubbo默认的情况下会创建一个200的线程池而已;真正的原因是由于数据库的sql走全表扫描造成的反应比较慢。这样将分析过程中,对线程中的各个状态及每行的含...原创 2019-08-29 18:34:50 · 864 阅读 · 0 评论 -
使用java instrument 动态调试在jvm中运行中的java类,及给class path动态增加jar
使用java instrument 动态调试在jvm中运行中的java类,及给class path动态增加jar;使用到java agent和javassist技术原创 2019-03-05 19:10:13 · 341 阅读 · 0 评论 -
springboot2.0--结合spring security5.0进行权限控制,从数据库中取权限信息及增加验证码
1.在pom.xml中增加spring security jar的引用: <!--引入spring security--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security&...原创 2018-06-01 11:23:34 · 12491 阅读 · 3 评论 -
springboot2.0-启动cache和session同时存入redis(使用不同的数据库)
1.在springboot2.0中,通过pom.xml引入spring-boot-starter-cache,spring-boot-starter-data-redis,spring-session-data-redis;2.在application.properties中配置如下内容: #session使用redis进行储存spring.session.store-type=rediss...原创 2018-05-28 15:28:07 · 3498 阅读 · 0 评论 -
SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展
正常情况上,我们访问上面的http://localhost:8000/,在配置了messageConverter后,如下图所示,返回内容类似于如下内容:返回值所下所示: {"createDate":"2018-05-15 14:09:05","loginName":"","operType":"add","userId":101,"userName&am原创 2018-05-15 14:19:55 · 4723 阅读 · 0 评论 -
Spring Boot application.properties的多环境配置说明
springboot的参数属性配置使用application.properties文件进行配置,对于多环境配置时,可以在application.properties中配置参数:spring.profiles.active=dev,来表示开发环境,这样对应的开发环境的参数属性可以配置在文件application-dev.properties中;目录结构及内容类似下图所示: 那么这里有一个简单的小问...原创 2018-05-08 09:56:59 · 5385 阅读 · 1 评论 -
快速排序-使用多线程做快速排序
package com.spark;import org.junit.Before;import org.junit.Test;import scala.tools.nsc.Global;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.Exe...原创 2018-05-03 11:19:46 · 1050 阅读 · 0 评论 -
Java并发之CyclicBarrier
package com.leasehouse;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class TestCyclicBarrier { static CyclicBarrier cyclicBarrier = new原创 2017-07-24 10:37:35 · 211 阅读 · 0 评论 -
Java并发之彻底搞懂偏向锁升级为轻量级锁
网上有许多讲偏向锁,轻量级锁的文章,但对偏向锁如何升级讲的不够明白,有些文章还相互矛盾,经过对jvm源码(biasedLocking.cpp)的仔细分析和追踪,基本升级过程有了一个清晰的过程,现将升级流程阐述如下: 因为偏向锁,锁住对象时,会写入对象头相应的标识,我们先把对象头(官方叫法为:Mark Word)的图示如下(借用了网友的图片): 通过上面的图片,原创 2017-07-10 11:22:22 · 3058 阅读 · 8 评论 -
Spring之JDK动态代理和cgLib的区别
Spring的aop主要使用到了代理技术,对bean对象做代理,主要目的方便为bean对象增加一个额外的控制功能,如增加事务控制等,Spring的Bean管理主要用到了两种代理技术,一种是jdk提供的代理,另一种是引入cglib等jar进行代理管理,这2类代理主要的区别如下: jdk代理要求bean的class必须实现了接口,这样没有实现接口的类无法进行代理,没有实现接口的bean类原创 2017-07-12 14:18:27 · 243 阅读 · 0 评论 -
Java常量池之String.intern()
java的内存区主要有,heap堆区,方法区(permGen space),我们说的常量池就在permGen区,而String的intern表示从常量池中取对应常量字符串, 如果常量池中存在,则直接取对应的字符串,如果不存在,则将自己身的字符串写入常量池. 示例: 1. String cc = "abc"; --该语句,在类加载时,已将abc加载至常量池原创 2017-07-03 11:03:16 · 174 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程转载 2017-05-15 14:49:49 · 293 阅读 · 0 评论 -
使用jstack查看最耗CPU的java的线程
(1)首先第一步通过top -Hp proccessId,看对应的java进程中那些线程正在执行,及占用的cpu和memory的比例,如下图所示(PID列即为线程id) 查 (2) printf "%x\n" PID 获取对应的pid的16进制, 如下所示:[root@emos-centos DEV]# printf "%x\n" 95132529 (3) jst原创 2017-04-05 14:51:50 · 1980 阅读 · 0 评论 -
Spring父子容器加载过程描述
原创 2017-03-22 18:30:31 · 351 阅读 · 0 评论 -
SpringBean的生命周期-示意图
原创 2017-03-06 13:57:17 · 275 阅读 · 0 评论 -
spring session配置详解
1.为什么要使用spring session? 使用spring session后可以将session对象存储至redis中,这样在做分布式或负载均衡布署时,涉及需要进行session共享的操作,均可以正常使用,由于session对象存储于redis中,即使中间层服务器重启(如tomcat重启)后,session对象也不丢失.赞一个。2.如果配置spring sess原创 2017-02-28 17:44:30 · 2837 阅读 · 1 评论 -
nginx+tomcat+redis做集群负载均衡
下面说明详细的配置步骤: (1)nginx中配置nginx.conf文件内容: upstream myserver{ server 192.168.1.10:80 weight=3 max_fails=3 fail_timeout=20s; server 192.168.1.20:80 weight=1 max_fails=3 fa原创 2016-11-18 18:22:58 · 534 阅读 · 0 评论 -
java之远程web应用调试
有时间,我们上传至远程服务器的java程序代码,可能会有一定运行时问题,但在本机测试时没有问题!这时最想做的就是调试一下远程服务器上的代码,但由于环境条件我们一般都无法直接在远程服务器上进行代码的调试,基于以上原因JAVA的jvm规范为我们提供了一个JPDA(JAVA platform debug archicture),制定了相关的调试规范,该规范就定义了远程调试java代码的规原创 2012-08-08 11:58:04 · 2177 阅读 · 1 评论 -
java 中的gc的几种方式及各个方式使用的收集算法
Gc moduleNew generation Old generation-XX:+UseSerialGC串行gcMark-sweep-compact-XX:+UseParallelGC并行gcParallel mark sweep GC-XX:+UseconcMa原创 2011-08-11 18:29:18 · 4547 阅读 · 0 评论 -
Java并发之HashMap内部结构解析
jdk1.7中HashMap内部使用数组+链表的形式,进行数据的存储,图示如下: (1) put动作: HashMap在执行put动作时,会根据put的key的做一次 h = hash(key.hashCode()),然后再h & length -1(该结果不可能大于数组的长度);得到一个数组的位置,然后根据key,value生成一个entry对象,挂到数组的第原创 2017-07-13 18:57:03 · 297 阅读 · 0 评论 -
Java并发之synchronized机制(wait和notify)
每个对象都有一个monitor对象,只有获取到这个monitor对象后,将当前线程id写至这个对象的monitorObject的_waitSet列表中。 如果当前线程没有锁住该对象,可能会造成数据的紊乱,因此必须要当前线程锁住该对象后,才能放心将当前线程的ID写入_waitSet列表中; 因此所有obj.wait()都需要写在 synchronized的方法中,或代码块中,例如:原创 2017-07-03 18:44:50 · 358 阅读 · 0 评论 -
Java并发之BlockingQueue
jdk一共提供了7个类型的阻塞式队列: ArrayBlockinQueue :一个使用数组实现的有界阻塞队列,有两个condition,notEmpty和notFull; LinkingBlockQueue: 使用链表实现的有界阻塞队列; PriorityBlockingQueue: 使用数组实现的无界阻塞队列, 默认使用key值排序; synchr原创 2017-07-30 02:25:47 · 233 阅读 · 0 评论 -
Java并发之Serializable
package com.lxht.test;import java.io.*;/** * Created by yulifan on 2017/7/7. */public class TestSerial { public static void main(String[] args) { SerialObject seObject = new SerialO原创 2017-07-07 12:13:17 · 210 阅读 · 0 评论 -
Java并发之UncaughtExceptionHandler
package com.lxht.test;/** * Created by yulifan on 2017/7/6. */public class TestUnCaughtException { public static void main(String[] args) { //所有的线程发生异常均会进入MyUncaughtException,包括main线程原创 2017-07-07 11:55:36 · 241 阅读 · 0 评论