- 博客(30)
- 收藏
- 关注
原创 JetLinks物联网平台源码解读
JetLinks 物联网平台源码解读BrokerEventBusDefaultDeviceOperator功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入BrokerEventBusJetLinks的消息总线,对(topic和消
2024-06-04 03:47:20
1536
4
原创 OAuth2LoginAuthenticationFilter授权码登录回调扩展
OAuth2LoginAuthenticationFilter授权码登录回调扩展。
2023-05-21 11:01:52
549
原创 挖矿病毒处理
挖矿病毒处理命令查看动态任务状况top查看病毒进程ps -ef |grep kdevtmpfsips -ef |grep kinsing查看异常ip和端口netstat -natp |grep查找异常文件find / -name kdevtmpfsifind / -name kinsing看看有哪些异常的docker镜像/var/lib/docker/overlay2/3d08459e1c8ed846432961e87ab0e6f82e17749342696997
2022-05-30 10:03:40
474
原创 RestTemplate 防坑指南
表单请求restTemplate 的表单请求必须使用MultiValueMap提交参数 MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); map.add("key","value"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPL
2022-03-16 08:47:01
3183
原创 从mysql到elasticsearch建立搜索——处理多表关联和频繁变化的数据
从mysql到elasticsearch建立搜索——处理多表关联和频繁变化的数据增量数据方案 maxwell -> kafka -> spring data (kafka + elasticsearch) -> elasticsearchmaxwell 简介该工具伪装成mysql的从库达到监听数据库日志的效果,后转成json数据发动到消费端,主要关注json的database、table、type(增删改)、data、old 字段。支持命令启动存量数据同步,命令指定一个独立的ma
2021-11-27 15:28:19
1777
原创 组和人员角色权限控制
组和人员角色权限控制在一般的角色权限控制里,只有用户拥有角色,权限的控制也是基于用户的角色。在有些企业并不是这样的,往往一个组织也有相应的权限,这时候角色的权限控制就需要通过成员所在组的角色和人员的角色一起去控制。虽然说组也有角色,但是最终都是实施在个人上,这里一般有两个实现思路在把角色授予给组的时候,同时授予给组的每一个成员(在组新增成员时也要执行一次,推出组织时也要做处理),在鉴权的时候判断用户的所有角色,按照角色类型做一个取舍规则只在鉴权的时候,取出当前人员所在组的角色,按照角色类型做一
2021-09-12 22:10:38
652
原创 多租户和或者多企业角色权限控制
多租户和或者多企业角色权限控制多租户数据隔离单租户多企业角色权限控制多租户要不要租户切换这个功能单租户下机构切换的思考多租户数据隔离在多租户的模式下,把相同的服务租给多个企业,因为企业独立运营,所以数据要进行隔离,通常有2种方式,一种是独立数据库,另外一种是每个业务表都加上tenantId,通常是全局拦截的。这种模式下角色权限控制交给tenantId去隔离,不用做特别的处理。单租户多企业角色权限控制方案一:需要区分控制的业务表模拟多租户加上companyId来控制方案二:添加user_dep
2021-09-12 21:10:00
1921
原创 web应用层次架构
web应用层次架构mybatis和mybatis-plus架构在实践中的异同mybatismybatis-plus参考资料业务层和DDD(Domain-Driven Design)领域驱动设计mybatis和mybatis-plus架构在实践中的异同mybatisdao层:在mybatis中sql主要写xml中,用mapper对xml进行映射,mapper中的方法都是基于sql的通用数据库操作,提供给service调用service层:组合调用底层mapper接口实现业务逻辑,这层主要是业务逻辑的
2021-09-12 20:11:14
514
原创 IDEA常用快捷键
IDEA常用快捷键搜索查找重构生成代码搜索查找双击shift:根据文件名搜索alt+shift+f:根据文件内容搜索ctrl+b:查看声明ctrl+atl+b:查看实现类alt+f7:查看类在哪里被调用ctrl+alt+shift+u:查看继承图重构ctrl+o:重写父类ctrl+alt+c:将变量提升为常量ctrl+alt+v:将内联变量提取为变量alt+enter:补全关联、修正操作,例如变量名,import class,加个@Override后在接口创建方法,为实现类创建
2021-08-28 18:10:30
227
原创 数据库设计实战
数据库设计实战数据库通常有一些通用字段例如id,创建者,更新者,软删除标志,状态等提取领域模型设计数据库首先要从需求中提取出领域模型xxx_info,并根据领域模型分为多个大小可控的模块,加上不同的前缀使得设计更清晰。之后根据业务逻辑建立表和表之间的关系。在这个阶段不用过多考虑功能实现的复杂度,影响设计进度,因为很多东西要试错的。多级复杂关系处理多级的复杂关系不适合使用一个表格聚合处理,可以把上级字段冗余分配到各个下级表上,这样处理起来更方便。多对多关联表处理多对多关联表可以适当减少通用字段
2021-07-10 23:02:38
358
原创 使用Feign进行远程调用注意事项
微服务实战微服务接口提供者和消费者提供者Controller,通过mapper暴露对外接口,并注册到注册中心。消费者使用@FeignClien(注册中心服务名字,[指定域名和端口])注解到接口启用远程调用。使用@GetMapper(“子路径”)指定调用的服务的路径,并和方法绑定,注入接口后调用这个方法就会创建动态代理进行远程调用。注意事项@FeignCilent默认为参数加上@RequestBody, @PostMapping只支持一个参数,多了无法启动项目。由于参数和返回结果的实体
2021-07-10 22:39:14
1070
1
原创 Spring读取yaml配置文件属性和自定作用域
Spring读取配置文件内容大全在Spring容器中使用@Value注解把环境变量里面的字段单独注入一个变量里面,有点笨重,使用只需要注入很少变量的情况。@ConfigurationProperties(prefix = “”)这个注解会把对应前缀下所有字段值注入实例变量里面,使用宽松绑定的规则@ConfigurationProperties不会向Spring容器注入相关处理类,只起到相关标记作用,要配合@Component或@EnableConfigurationProperties(指定类
2021-07-10 21:48:23
426
原创 Mybatis-Puls实践
Mybatis-Plus和MybatisMybatis-Plus在Mybatis的基础上做了增强,可以使用Mybatis的全部功能。另外增加了自己的代码生成,可以生成控制层、服务层、数据访问层的代码。另外增加了VO、DO、PO各层独有的实体生成,各层调用时要进行转换。各种实体类可选择继承一些通用的BaseEntetity,使得有通用的字段生成的XML文件中没有Mybatis的代码生成器的大量XML(估计是封装到一些通用的XML里面了)(这里要注意的是自定义查询语句的名字不要和内置的重名,会覆盖掉
2021-06-28 00:12:59
544
1
原创 Java程序员学点python
避坑指南来了,有些地方和Java很不一样python没有++运算符号,只能用+=看到 " : "符号不知所云?那是切片技术;1:n:1 返回1到n-1的数组,最后一个1是跳跃值,1:n:2 返回1,3,5…n-1;跳跃着可以省略,默认为1;前两个参数也可省略,默认为1到n。__len__这种形式的都是内置属性,有些有对应的获取函数。声明集合很简洁,=[array] ={dist} =(元组) =set()变量不用声明和指定类型多维数组创建有点奇怪。arr=[[0]*3 for i in ran
2021-06-14 21:34:29
1987
11
原创 WebFlux
相关名词Reator,Mono,Publisher,Subscriber,Subscription流程请求用户数据requset1(user1)WebFlux的控制层收到请求,创建一个user类型的Publisher1WebFlux的处理层收到Publisher1,创建一个Subscriber1且创建Subscription1用于返回结果给requset1,进行订阅Publisher1.subscribe(Subscriber1)5秒后Publisher1的user1从数据库取出完成,Subsc
2021-05-02 21:59:32
787
原创 微服务构架
微服务实战构架演进单体->集群->分布式集群认识京东jd.com 运营主页search.jd.com 搜索服务item.jd.com 商品服务cart.jd.com 购物车服务user.jd.com 用户服务(单点登录)passport.jd.com 购物服务miaosha.jd.com 秒杀服务SOA构架的三个角色provider 服务提供者consumer 服务消费者register 注册中心服务提供者的模型#mermaid-svg-3zBq7SB1ihbiL
2021-04-19 22:16:14
145
1
原创 MySQL数据库设计技巧
MySQL数据可设计原则命名原则只用小写字母(不同系统大小写敏感问题)多单词用"_"符号连接外键加表前缀,非外建不加主键选型自增 优:简单;缺:不适合分表分库,不安全(自增有规律)UUID 优:全局唯一,安全(无规律);缺:128位太大,乱序使得索引经常分裂雪花ID 长度可以自定义,通过时间戳+机器号或者业务表单id+自增ID这样可以保证有序性数据选型选型技巧尽量小的数据类型尽量简单的数据类型(int>date>char,IP用int)尽量不用NULL,特别是
2021-04-17 23:20:42
180
原创 spring三级缓存解决循环依赖
Spring三级缓存解决循环依赖(二级?)Spring中Bean的创建过程(生命周期)Spring的refresh()方法 把扫描XML和注解的Bean解析成BeanDefintion并注册到beanFactory,再注册一些Bean处理器后再调用finishBeanFactoryInitialization(beanFactory)创建单例Bean,步骤如下:实例化(掉用构造函数创建一个为填充任何属性的Bean)属性装配(@Autowried 依赖注入)初始华(aop增强)销毁Sprin
2021-04-15 22:43:19
195
原创 java的HashMap
java的HashMap初始化 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 初始容量16 static final int MAXIMUM_CAPACITY = 1 << 30; // 最大容量 static final float DEFAULT_LOAD_FACTOR = 0.75f; //扩容因子 static final int tableSizeFor(int cap) {//保证
2021-04-05 10:28:33
129
1
原创 maven打包插件
maven打包插件nohup java -jar xxx.jar >log.txt & <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.7.RELEASE</version>
2021-04-04 22:08:00
334
1
原创 vue-cli2 单个组件打包为js
vue-cli2 单个组件打包为jsvue-cli2和vue-cli3参考这篇文章还有这篇文章vue-cli3有更多的默认配置支持更多场景,支持直接把组件打包成js的脚本,不用配置vue-cli2vue-cli2开发小组件建议直接使用vue init simpleproject xxx 创建项目,默认没有导入route。或者把生成的vue.config.js复制一份到vue普通项目中,后新建脚本使用这个配置。vue.config.jsvar path = require('path')v
2021-04-04 21:50:45
3035
原创 Vue-cli项目运行流程
Vue-cli项目的运行流程1、package.jsonpackage.json是整个项目的配置文件,运行时首先读取里面的配置信息,定义了该项目的基本信息,项目依赖信息,和npm run …的脚本配置"scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "unit": "jest --conf
2021-03-22 21:52:23
946
原创 spring security 各个filter的主要功能
spring security 各个filter的主要功能spring security是一个安全框架,主要实现登录认证、权限鉴定、session管理等工作。其把工作委托给springsecurityFilterChain来操作,大约有14个Filter。1、WebAsyncManagerIntegrationFilter:提供了对securityContext和WebAsyncManager的集成,使其支持把SecurityContext设置基于ThreadLocal的SecurityContext
2021-03-21 23:55:54
1115
原创 spring security jwt认证
spring security jwt认证流程这是我的第一篇优快云博客。jwt简介传统的spring web应用,登录后把生成的token记录在session中,并于sessionid绑定,下次再访问时根据sessionid提取认证信息来认证身份。这里有很重要的一点,token是保存再服务器中的。jwt认证方式是登录后把{令牌信息,认证信息,认证码}加密成token返回给客户端,客户端自行解决token的存储方案。下次访问时携带者这个token,服务的把token解密,核对认证是否过期或伪造即可
2021-03-21 22:17:10
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人