avatar
文章
197
标签
94
分类
0

首页
书单
歌单
关于
LeFer
搜索
首页
书单
歌单
关于
Spring Boot 多数据源的另一种实现
发表于2018-08-03
Spring Boot提供了一套比较完善的多数据源的自动化配置机制,比如这里,但它的缺点是无法应对数据源不确定的场景,即软件在真正交付使用之前不知道到底会配置多少数据源。所以我这里提供多数据源自动化配置的另一种实现方法。可以把数据源配置放在库里或者放在配置文件里,程序启动时会自动根据你配置的多少初始化为对应的连接池供程序使用。 实现思路st=>start: 开始op0=>operation: 创建单例模式类:>https://www.lefer.cn/posts/10448/op1=>operation: 读取配置op2=>operation: 循环初始化连接池op3=>operation: 放入map中op4=>operation: 对外提供获取方法e=>end: 结束st->op0(right)->op1(right)->op2(right)->op3(right)->op4->e 核心代码初始化连接池这里使用的是hikar作为连接池。dataSourceMap是存放连接池的map。 Hika ...
disruptor的理解和应用
发表于2018-08-01
disruptor是一个大名鼎鼎的高性能的线程间的消息传递库,国内的资料不是很多。我近期在一个项目中使用了disruptor,有了一点理解,尝试着表达出来。可能不对,希望大家指正。 disruptor能干什么,不能干什么disruptor是Java阻塞队列,比如 ArrayBlockingQueue的替代,它在性能上高于阻塞队列。disruptor是线程级的,无法在进程间共享,也不会提供持久化、灾备等系统级的功能。disruptor的用处是通过线程级的消息传递来做线程间的解耦,通过发布订阅模式,去实现线程级的并发。但disruptor不是HQ,MQ等消息队列容器的替代品,没有监控API,没有宕掉后的自动恢复机制,也不能被其他程序访问。 为什么用disruptor,而不是queue下图是queue的处理示意。queue的线程安全的读写,至少需要维持3个变量:尾部位置,头部位置,容量。写入线程需要争用头部位置,以便写入数据;读取线程需要争用尾部位置,以便读到数据(假定是不重复读场景);同时都要争用容量,容量满了不能再写,容量空了,也不应再读,读写成功后容量要加减。此时在三个争用位置处, ...
自定义通用URL协议实现在浏览器中打开本机任意程序
发表于2018-07-20
以前写过一篇文章,总结了跨浏览器调用的方法。近期遇到一个场景,需要在浏览器中去打开本地的客户端程序,而且限定不允许使用IE。所以我实现了一个通用协议。通过这个协议,可以从浏览器去打开本机任意程序并支持传参数。以下是具体内容。 注册协议将以下文件保存为.reg文件。导入注册表项,注册协议ff。你可以将所有的ff替换成别的字符串,来实现自己的协议。 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\ff]"URL Protocol"=""@="Genaral Call"[HKEY_CLASSES_ROOT\ff\DefaultIcon]@=""[HKEY_CLASSES_ROOT\ff\shell][HKEY_CLASSES_ROOT\ff\shell\open][HKEY_CLASSES_ROOT\ff\shell\open\command]@="cmd /v:on /k set m=%1 &&call set n=%% ...
如何处理 gitlab fork pull request 冲突
发表于2018-07-18
gitlab提供了git的一个ui界面,但是在处理冲突方面表现的不好,一些复杂场景还需要通过命令行来解决。本文所述即是一例,解决过程记录如下。 问题背景repo A :http://ip:port/share/adminApi.git repo B: http://ip:port/esb_dept/adminApi.git B是从A里fork出来的。在实际软件开发过程中,A是框架工程,B是由A派生而出的一个实际项目。 现在A发生了更新,需要将A的变动合并到B中。 正常情况下,通过gitlab,在repo A中新建合并请求到B即可,但由于repo B中有工程师修改了框架代码,导致产生冲突,合并失败。 解决步骤 在本地 B 项目根目录,查看可用的远程仓库。默认情况下,只会有repo B [web@localhost esbadminapi]$ git remote -vorigin http://ip:port/esb_dept/adminApi.git (fetch)origin http://ip:port/esb_dept/adminApi.git (push) 将 rep ...
解决 Centos7 IDEA IBUS 无法输入中文的问题
发表于2018-07-18
网上很多帖子都在说环境变量的事,说要在/etc/profile 或idea.sh中增加: export XIM="ibus"export XIM_PROGRAM="ibus"export XMODIFIERS="@im=ibus"export GTK_IM_MODULE="ibus"export QT_IM_MODULE="ibus" 但很多时候问题并不出在这里,而是由于你的ibus包安装不完整,至少应该安装以下包: ibus-setup-1.5.17-2.el7.noarchlibusbmuxd-1.0.10-5.el7.x86_64ibus-libs-1.5.17-2.el7.x86_64ibus-kkc-1.5.18-7.el7.x86_64ibus-gtk3-1.5.17-2.el7.x86_64libuser-python-0.60-9.el7.x86_64libusbx-1.0.21-1.el7.x86_64ibus-gtk2-1.5.17-2.el7.x86_64ibus ...
VMware内CentOS7 /dev/mapper/cl-root 扩容
发表于2018-07-18
刚遇到/dev/mapper/cl-root空间不足的问题,就看到了CSDN上Wang_Xin_SH写的文章,非常好,所以转载收藏 (已在原文末留言转载,侵删)。 简介CentOS7虚拟机原硬盘空间只分配了10GB,需要扩容到20GB。环境:VMware 10 VMware分配空间选中虚拟机->虚拟机设置->硬盘->实用工具->扩展->设置最大磁盘大小->点击扩展 CentOS7内部分配可以参考:http://jingyan.baidu.com/article/54b6b9c0fc8b0b2d583b47c6.html 查看当前磁盘空间,/dev/mapper/cl-root硬盘空间只有8GB,打算扩容: # df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/cl-root 8.0G 3.8G 4.3G 47% /devtmpfs 482M 0 482M 0% /devtmpf ...
CentOS 7 直接安装 gcc 7
发表于2018-07-17
在一台没有安装过低版本gcc的系统里,如何安装gcc 7 ?以下是详细步骤。 使用开发工具集安装: sudo yum install centos-release-sclsudo yum install devtoolset-7-gcc*scl enable devtoolset-7 bashwhich gccgcc --version 这种方法同样适用于安装gcc6,只需要将上面命令中7改成6即可。详情请参考:devtoolset
覆盖 Spring Boot 配置项
发表于2018-07-12
Spring Boot中的配置项默认是在application.properties中。如: test.item=lefer 现在考虑两个场景: 场景1:不修改配置文件将test.item的值更改为另一个值 场景2:lefer 是一个密文,使用前需要做转换 下面说说这2个场景的实现方法。 通过命令行参数覆盖配置项场景1的实现非常简单,只要在启动时,指定对应参数就能覆盖配置项,比如: java -Dtest.item=orous -jar test.jar 这时 Spring Boot 会自动将该配置项的值替换成 orous 。更进一步,如果在命令参数里指定的参数在配置文件中不存在,那么等同于在配置文件中新增了一个配置项和对应值。之所以会出现这种现象,是Spring Boot的配置加载机制决定的,从官方文档可以看到,Spring Boot 加载配置项的顺序如下: home目录下的devtools全局设置属性(~/.spring-boot-devtools.properties,如果devtools激活)。 测试用例上的@TestPropertySource注解。 ...
使用google jib实现java应用快速容器化
发表于2018-07-11
前天(2018年7月9日),谷歌宣布将其内部使用的 jib 正式开源。jib 是一个在 java 体系内部生成 docker 镜像的插件,它的设计初衷是将代码->可运行程序->docker image整个过程打通,无需编写 docker file,直接通过编译器生成 docker 镜像。因为刚出来,中文资料比较少,我撸了一个样例,第一时间体验一下这个新玩意。以下是整个过程。 环境说明我选定的是一个maven构建的spring boot项目,编译后是一个内嵌 tomcat 的可执行jar。目标是通过引入jib,直接生成该项目的镜像发布到阿里云镜像仓库。 引入依赖jib最新版本是0.9.4。通过在pom.xml的plugins标签下增加jib标签,引入依赖。 <build> <plugins> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-p ...
使用nginx反向代理websocket
发表于2018-07-10
随着HTML5大大简化了websocket的开发,websocket的使用越来越广泛,毕竟它在实时交互场景下较http有很大的优势。websocket的协议为ws或wss,使用nginx能很方便的反向代理。 下面是一个典型的配置。原本这个站点只是支持将xxx.lefer.cn转发给http://127.0.0.1:7017处理。但在增加了11行,12行,13行后,就一并对websocket进行了转发。整个配置很简单,这得益于HTTP 中的 Upgrade 协议头将连接从HTTP升级到WebSocket,使得http和websocket的信息得以复用。 server { listen 80; server_name xxx.lefer.cn; ssl on; ... location / { proxy_pass http://127.0.0.1:7017; proxy_set_header Host $host; proxy_set_header X-Real- ...
1…678…20
avatar
LeFer
日拱一卒,功不唐捐
文章
197
标签
94
分类
0
公告
不见五陵豪杰墓,无花无酒锄作田!
最新文章
全球智能危机(第二部分:一场来自未来的金融史思想实验)2026-02-26
全球智能危机(第一部分:Agentic AI的兴起)2026-02-25
技术组织重构——基于 Multi-Agent 的研发新范式2026-02-16
警惕!AI时代的马车误区2026-02-08
代码之外:AI浪潮下,开发者的“变”与“不变”2026-02-06
最新评论
正在加载中...
标签
spring boot starter spring cloud jib ocr 软件工程 cdh ibus spring security spring modulith sse vmware websocket jointjs vscode mysql docker 架构 gitbook 可信数据空间 postgresql gitlab 项目 机器学习 disruptor 干货 xfce DDD emby nodejs spring boot mdm webservice 数据仓库 nas drools ubuntu AI 常识 pdf his
网站资讯
文章数目 :
197
已运行时间 :
本站总字数 :
180.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2015 - 2026 By LeFer
沪ICP备2024075747号沪公网安备31011502401302号
搜索
数据库加载中