博客 / 列表

我不是碼農 - spring security oauth2.0 sso流程分析

現在我們系統使用的是spring security oauth2.0 sso單點登錄方案,偶爾出現會話失效,經過分析比對看了下日誌,出現會話失效時會出現一個警告, Could not fetch user details: class org.springframework.security.oauth2.client.resource.UserRedirectRequiredException,

oauth2.0 , spring , springsecurity , springboot , JAVA

我不是碼農 - jpa之hibernate和jackson踩坑記錄

在做的項目採用的是spring jpa,底層默認使用的是orm是hibernate,通過hibernate查詢出來的實體對象實際上都是代理對象,在序列化的時候,我們可能會遇到懶加載導致jackson無法正確解析對象的問題,這個可以通過導入maven包 dependency groupIdcom.fasterxml.jackson.datatype/groupId artifactI

jackson , hibernate , jpa , Json

我不是碼農 - hibernate的@ManyToOne(fetch=FetchType.LAZY)無效原因

遇到了一個hibernate查詢問題,當查詢實體時,並沒有任何顯式調用@ManyToOne註解的屬性的情況下,依然會進行查詢,(開始使用idea進行debug的時候,發現在debug過程中,idea會觸發hibernate的加載操作,當然了這是另外一個問題),我在hibernate官網找到了答案: https://docs.jboss.org/hibernate/orm/6.4/usergu

hibernate , jpa , spring-data-jpa

我不是碼農 - spring使用@Async註解導致循環依賴問題異常的排查

因為我用到了@async來實現異步操作,在本地跑的時候一直沒有報錯,可是當我打包到服務器啓動的時候卻報了一個BeanCurrentlyInCreationException Bean with name 'xxx' has been injected into other beans [xxx2] in its raw version as part of a circular reference

spring , async , aop , springboot , JAVA

我不是碼農 - mybatis和mybatis-plus的json字段類型失效以及處理原理解析

最近接手一個老項目,進行json類型字段的對象映射,使用的是老版本的mybatis-plus(2.1.8),出現了一些問題 1、@TableFiled註解沒有typeHandler屬性,只能通過@TableField(el = "filed, typeHandler=xxx.TypeHandler")這種方式來配置 2、配置了@TableField(el = "filed, typeH

mybatis-plus , springboot , JAVA , Json , Mybatis

我不是碼農 - 記錄一次使用線程池調用kafka發送消息產生的內存泄漏問題

在需求實現裏,我需要把持久化在數據庫中的對象一直往kafka裏發送,然後由flink進行消費,把當前的對象和存儲的用户軌跡記錄等等信息進行比對,如果比對成功則觸發 最開始我是通過單線程發送,發現發送速度有點慢,這裏面我需要把對象做一些處理(比如split,flat,fitler)後才發送到kafka,大概30w+的對象需要十多分鐘那邊才能預警到,於是開始進行性能優化,使用並行流進行處理,改變

gc , 多線程 , JAVA , 內存溢出

我不是碼農 - 由於鎖超時讓我發現了parallelStream並行流的關於線程上下文的一個坑

就我之前因為在處理jpa持久化對象上下文 (文:https://segmentfault.com/a/1190000043581830) 時,parallelStream並行流給我的印象就是會讀不到父線程的上下文的,所以應該在父線程裏的事務和在parallelStream裏的事務應該是區分的,而不是共用同一個事務的,然而今天因為一個鎖超時的問題,發現並沒有那麼簡單,下面我們一步一步來驗

spring , 多線程 , JAVA , stream , 事務

我不是碼農 - 用户組用户角色應用關係綁定批量插入應用用户和應用角色關聯關係數據(後續)

用户組用户角色應用關係綁定,先取最終用户需要綁定角色的交併集,然後再求用户組用户角色的笛卡爾積,最多可產生(用户數應用數角色數)條數據,多線程操作,從幾小時到幾十分鐘,增加一個查詢(open_role_user表的user_id)索引,變成6分鐘,改成批處理插入,變成秒級處理,之前是因為jpa在多線程環境下有問題(使用threadlocal維護本身context,默認使用open-view-int

性能優化 , jdbc , jdbctemplate , 線程 , mysql優化

我不是碼農 - spring jpa關於線程池異步執行導致detached entity passed to persist問題排查和解決

我這邊有個批量插入用户OpenUser和應用OpenApp關聯關係數據的操作,由於耗時較長時間,所以準備用線程池異步執行操作,然而卻遇到了一個jpa的detached entity passed to persist問題,我這邊的操作是批量保存一個OpenAppUser關聯關係表,所以需要先獲得對應OpenUser和OpenApp的引用,再設置到關聯對象OpenAppUser裏,然後在保存,我這邊

spring , jpa , springboot , JAVA , spring-data-jpa

我不是碼農 - kafka stream的自定義時間段窗口實現

最近系統需要做一個日誌平台,對所有接入的系統進行日誌的統計分析,因為之前用的是kafka來實現各業務系統日誌接入日誌平台的,所以想到了直接使用kafka官方本身提供的一個實時計算框架kafka stream。 kafka stream的時間窗口有兩個重要的屬性:窗口大小和步長(移動間隔),滾動窗口Tumbling Time Window:步長等於窗口大小,滾動窗口是沒有記錄的重疊;跳躍窗口H

大數據 , stream , kafka , 實時計算