- 博客(145)
- 资源 (2)
- 收藏
- 关注
原创 Angular 2 directive处理多次点击提交问题
在Angualr中,经常需要处理多次短时间重复点击提交等操作;比如,页面的一些操作需要经常提交请求到后台处理数据,或者搜索功能对于每一个输入的字符都到后端搜索处理返回结果,对短时间内频繁的重复提交来说,我们只需要这段时间内最后一次的提交请求;否则这些无效的网络请求会加大服务器的负担;在angular中,我们可以通过创建一个延时执行的click的directive来处理这种情况;1>首...
2018-03-21 23:25:11 2388 3
转载 spring中的异步操作
注意,thenApply如果前面一个任务抛出异常,这个任务是不会执行的;另外还有thenRun方法,只要前面一个执行完成,后面一个就开始执行;这两个方法,也可以传入一个线程池,通过线程池来执行;如果没有线程池,使用默认的ForkJoinPool.commonPool()来执行,默认的线程数是cpu的核数;注意,某些特别耗时的异步任务可能很浪费时间,因此强烈建议针对每个业务使用自己的线程池;发生异常时,先执行eceptionally中的,再执行whenComplete里面的方法;异步任务之间,可以串行执行。
2024-02-01 11:13:46 206 1
原创 Redis分布式锁
首先每个线程会在某个目录下创建一个顺序性节点,然后获取这个目录下的所有节点,判断当前的节点,是否是最小节点,如果是,获取到锁;如果是次小节点,则监听比自己小的节点变化,之后重新尝试比较判断自己是否是最小的,是则获取到锁;解决办法,在释放的时候,判断key对应的value是不是自己的就可以了,如果不是自己的,就不处理;数据库乐观锁:在表中增加一个version字段,每次更新数据的时候,先获取当前的version,更新的时候对比数据库中的version跟获取的version是否相同;如果存在,则返回失败;
2024-01-26 14:40:50 459
原创 logback日志过滤
系统中的错误日志,发送到群中,可以及时跟进系统中的异常情况;使用logback的filter功能,针对日志级别进行过滤,在过滤器中,可以发送到其他地方;FilterReply.NEUTRAL,表示根据后边的过滤规则,要不要记录日志。这里面可以写任何代码了,最后返回。
2024-01-24 15:33:09 487
原创 统一日志切面
需求:打印系统的controller的请求日志和返回结果,以及接口耗时,方便后续排查问题;可以使用filter来做,也可以使用切面,倾向于使用切面;* 以 iface 包下定义的所有请求为切入点。* 请求参数/返回结果的日志打印最大长度。// 开始打印请求日志。// 打印请求相关参数。
2024-01-24 14:38:01 374
原创 TransactionalEventListener
正常情况,B和A为同一个事务,B中读取到的为A中未提交的事务数据;B中抛出异常,会导致A中的事务回滚;会在A方法执行完成之后,再执行B方法;因为是commit之后,所以B中抛出异常,A中不会回滚;A和B是两个事务,之间不会有任何关联;B中方法会立刻执行,所以拿到的数据看当时的数据库数据;提交之前,所以抛出异常会影响A中事务的提交,但是读取的数据,是A中的数据是一样的;不区分哪个阶段,但是是同一个事务中的数据;而且抛出异常也不会影响A中事务的回滚;读取到的也是A中事务的数据,是一个事务;
2023-11-27 19:28:50 847
原创 DelayQueue使用
在项目中有使用到延时队列的场景,做个简单的记录说明;首先DelayQueue实现了BlockingQueue,加入其中的元素必须实现Delayed接口;当生产者元素调用put往其中加入元素时,出发Delayed接口的compareTo方法进行排序,这个排序是按照时间的,按照计划执行的时间排序,先执行的在前面,后执行的排后面;消费者获取元素时,调用getDelay方法返回的值大于0,则消费者线程wait返回的这个时间后,再从队列头部取出元素;下面是个简单的例子impo...
2022-04-11 21:58:59 1834
原创 springboot 构建多模块项目
记录下spring boot 多模块项目的设置过程;首先简单说下为啥需要多模块,一个模块分目录行不行,当然可以,但是这样会导致多个团队开发的时候混乱,会有很多冲突;如果根据领域设计将项目按照不同的领域进行划分,后续维护起来会方便很多;对于以后如果进行微服务的拆分也是很方便的,直接将对应的模块迁移成一个单独的服务即可;接下来会用一个简单的项目演示,将springboot的web层,service层,dao层拆分成不同的模块;通过一个简单的crud来测试下;项目目录结构1.首先最外层是pom.x
2022-03-14 23:19:19 8005
原创 grep命令常规用法
1.grep 搜索关键字 文件名grep port aaa.txt在aaa.txt中搜索含有port的行2.-r,递归查找某个目录,包含下面所有的文件grep port -r aaaa/递归查找aaaa这个目录下的所有文件,包含port的文件以及匹配的行3.-i 忽略大小写grep PORT -i aaa.txt在aaa.txt中搜索所有port匹配的行,不区分大小写4.-n 显示出行数grep port -n aaa.txt会把行数打印出来5.-
2022-01-21 16:06:38 1922
原创 Springboot集成log4j
log4j在项目中应该是使用的最多的日志框架了,一直没有好好去深入总结下,这篇文章记录下一些常规的用法;1.集成引入依赖,如下所示: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <...
2022-01-13 22:24:42 10694 2
原创 java中函数编程的妙用
上一篇分享了kotlin和java中,函数作为方法的参数的情况,这里记录下,函数作为方法返回值的使用的一些场景。1.在判断条件true时,抛出异常使用场景:简化项目中用if来判断当某个条件为true时,抛出异常信息;@FunctionalInterfacepublic interface ThrowExceptionFunction { /** * 抛出异常信息 * * @param message 异常信息 * @return void
2022-01-04 17:00:38 1423
原创 kotlin和java函数式编程
在java中有时候使用函数式编程的时候,有这种Producer,Consumer作为函数的参数的场景,在kotlin中的使用记录下;fun randomProvier(c: (Double) -> Unit): Double { var n = Math.random() // 步骤1:生成随机数 println("生成随机数") // 步骤2: c(n) // 步骤3:随机数n作为参数,执行传入的代码逻辑
2021-12-31 18:11:24 1399
原创 maven依赖本地jar包
1.dependency中添加本地依赖的jar在项目跟目录的lib目录下添加需要的jar包,groupId,artifactId,version都可以随便命名, <scope>system</scope>是必须的<dependency> <groupId>cas</groupId> <artifactId>cas</artifactId> <version>1.0</ver
2020-11-16 18:16:50 2451
原创 Springboot打包镜像
使用start.spring.io生成了一个spingboot的项目,然后考虑打包生成镜像来发布;然后搜了下,网上有使用"com.spotify dockerfile-maven-plugin"这个插件的,我本来也是用的这个,但是在打包的时候总是告诉我2375端口连接不上啥的报错;所以换成了jib-maven-plugin这个插件来打包镜像,过程比较简单:1>在pom.xml中添加依赖<plugin> <groupId>com.google.cloud.too
2020-06-01 19:10:51 2078
原创 arcgis代理的使用
1.在arcgis的4.x的版本中,在加载图层的时候可能出现跨域的问题,浏览器的console下可以看到如下的报错官网公布了后台来解决跨域的办法,具体的代码入下所示https://github.com/Esri/resource-proxy/blob/master/Java/proxy.jsp但是这个是jsp的,项目是基于springboot的,所以需要进行转换;具体的代码放在ht...
2020-03-03 17:24:33 557
原创 HikariDataSource 和jdbcTemplate
1.常用的数据库连接池有这些2.其中hikaricp是性能最快的连接池,使用它来构造jdbcTemplate对数据库进行操作;首先构造一个HikariDataSource,并配置数据库的属性private static final String DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver";HikariDataSource...
2020-03-03 15:43:24 1514 1
原创 csv文件转java类
1.引入jarcompile group: 'org.apache.poi', name: 'poi', version: '4.0.1'compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.0.1'2.假设csv的格式如下所示3.转换代码如下所示public List getCsvData(){...
2020-03-03 15:23:12 755
原创 Arcgis使用本地js和css的方法
默认的情况下,arcgis会使用官网的js和css样式,加载会很忙,地图有时候会因为js文件请求超时而加载不到,特别影响体验,所以很有必要将js文件打包到项目中来使用;1.官网下载对应的js包2.放到content目录下面,如图所示3.修改js中的路径地址修改两个js中的地址为相对路径,之前应该[HOSTNAME_PATH]啥的吧,不记得了;修改成相对路径4.在使...
2020-02-27 17:55:00 1179
原创 Angualr arcgis中使用flowmap
项目中需要制作迁徙图,就是从一个地方到另外一个地方;然后在arcgis的官网找了好久,也没找到类似的,然后搜了半天找了一个开源项目中的,是基于arcgis的;效果入下所示...
2020-02-27 17:24:06 342
原创 Angualr集成arcgis
刚接触这个arcgis,做个记录;特别是angular中引入;1.需要引入esri-loader来加载map,view以及图层等用到的模块;在package.json中添加引用的包:"esri-loader": "^2.13.0"2.开发具体的地图,这里先以点图为例首先页面的html元素内容:<div #mapViewNode></div>然...
2020-02-11 19:04:33 760
原创 k8s常用命令
1>根据关键字查询关键字前后100行kubectl -n namespace logs -f xxxnode | grep -100 '关键字'2>在所有的命名空间查询kubectl get po --all-namespaces | grep xxxx3>查看pod的状态,通常在pod状态异常的时候使用kubectl -n namespace desc...
2020-01-20 17:40:32 1470
原创 K8s中pv和pvc的使用
在我们的应用中可能经常有文件存储的需求,在docker的部署中,我们是通过将容器中的目录直接挂载到宿主机的目录上来解决这个问题的,那么k8s部署的方式肯定有所不同,k8s因为是多节点的,每个pod挂载的是对应节点的某个目录,这个会导致节点数据的一致性问题;在k8s中主要通过pvc的方式进行文件的挂载管理;1.PVCPVC 的全称是:PersistentVolumeClaim(...
2020-01-20 17:28:52 5333 1
原创 SpringBoot k8s部署
工作中需要将应用部署到k8s的集群上,之前是使用docker来部署的;这里使用service的nodePort的方式来访问;1.Deployment的配置apiVersion: apps/v1kind: Deploymentmetadata: name: powerflow namespace: powerflowspec: replicas: 2 selector...
2020-01-20 11:01:11 680
原创 Jpa 复杂查询
有时候需要通过Jpa进行复杂的查询,做个记录汇总,后面以便于可以进行查阅;1.首先Repository需要继承接口JpaSpecificationExecutor<T>,这里的T是具体的entity实例;这样就可以使用该接口提供的这些方法,进行复杂查询;相比JPQL,其优势是类型安全,更加的面向对象可以看到这个接口基本是围绕着Specification接口来的;2.Sp...
2020-01-07 15:39:18 1074
原创 hibernate.query.fail_on_pagination_over_collection_fetch 错误分析
起因是因为开发中遇到问题了报错,具体的截图如下所示所以后面搜索了下相关的内容,看到有一篇博客写的蛮不错的,地址是https://vladmihalcea.com/hibernate-query-fail-on-pagination-over-collection-fetch/来简单的陈述下原因:出错的hiberate版本是5.1.11;主要出错的原因是在获取实体的列表的时候分页...
2020-01-04 16:49:49 432
原创 Jhipster支持IE10和IE11的方法
工作中开发的应用需要支持IE10+的情况,简单记录下,其实在jhipster的官网也是有这个说明的,具体的地址是https://www.jhipster.tech/tips/028_tip_ie_support.html简单总结下步骤:1.添加依赖yarn add @babel/core @babel/preset-env babel-loader --exact --dev...
2020-01-04 16:02:32 211
原创 cas web app docker部署
上篇文章中是通过打包成war包的方式启动的,这篇讲下如何打包成docker镜像,以及打包的过程中遇到的坑1>clone 官方的项目https://github.com/apereo/cas-webapp-docker.git,然后切换到5.3的分支2>打包readme.txt中有打包和运行的命令,打包命令是,这里的#casVersion是版本,比如我要打包5.3的,打...
2019-11-27 19:05:23 991
原创 cas-overlay-template 搭建单点登录服务端
1.先下载overlay-template的源码git clone https://github.com/apereo/cas-overlay-template.git切换到5.3的分支2.编译的坑需要下载cas-server-webapp-tomcat这个包,100多m,下载需要很久,我已经添加了阿里的maven仓库,但是还是下载不下来,,所以使用迅雷下载,然后手动安装到本地的...
2019-11-19 18:35:29 1636
原创 gradle的一些知识
1.buildscript作用在项目中经常看到这样的代码;而且下面又会有一段dependencies代码块;这样子很容易让人奇怪,为什么repositories要声明两次哪?buildscript代码块中的声明与下半部分声明有什么不同?buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而在buil...
2019-10-28 18:55:03 155
原创 Springboot Cas 认证的源码解析
上面文章介绍了Springboot如何集成Cas的认证,但是在写代码的时候有一些疑问:1)我们获取认证的内容的时候是SecurityContextHolder.getContext(),那么这里面的内容是什么时候放进去的,放进去的内容是什么?2)我们自定义的userDetailService获取的结果是如何使用的,跟Authentication有什么关系?下面带着这两个问题,跟着源码的...
2019-08-26 23:54:29 1434
原创 SpringBoot 集成cas认证
之前一篇介绍了cas认证服务的整个流程;这篇文章Springboot框架里面如何整合cas实现整个认证的流程;1>首先引入Springsecurity cas的依赖jarcompile "org.springframework.security:spring-security-cas"2>配置CasSecurityConfig类@Configurationpubl...
2019-08-24 19:16:01 16550 2
原创 Cas登录流程
最近的项目中需要使用cas单点登录,做个简单的记录,梳理下整个cas的认证的流程;这里以自己的应用为例;我项目的地址是http://172.26.4.13:9998/1>第一次访问http://172.26.4.13:9998/应用;访问任何一个需要权限的地址,后端的filter会拦截请求,并重定向到cas的地址可以看到这里的状态码302,重定向的地址是https://g...
2019-08-24 16:26:32 2011 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人