fastjson字符串轉JSON的$ref問題-編程思維

先說結論: fastjson在把對象轉換成字符串的時候,如果遇到相同的對象的時候,默認開啟引用檢測将相同的對象寫成引用的形式。 官網文檔:https://github.com/alibaba/fastjson/wiki 問題出現的背景: 在開發過程中,使用了第三方的拓撲圖組件。組件生成圖形的json字符串在利用 fastjson 轉換成 JSON 對象的時候報錯如下所示: Exception i

【JUC】TimeUnit使用-編程思維

概述 TimeUnit是java.util.concurrent包下面的一個類。 TimeUnit表示給定粒度單位的持續時間,并提供跨單元轉換的實用方法,以及在這些單元中執行定時和延遲操作。 TimeUnit不保留時間信息,但僅幫助組織和使用可在各種上下文中單獨維護的時間表示。 納秒定義為千分之一微秒,微秒為千分之一毫秒,毫秒為千分之一秒,一分鐘為六十秒,一小時為六十分鐘,一天為二十四小時。 T

Java基礎(九)——網絡編程-編程思維

一、概述 1、介紹   Java提供的網絡類庫,可以實現無痛的網絡連接,聯網的底層細節被隐藏在 Java 的本機安裝系統裡,由 JVM 進行控制。并且 Java 實現了一個跨平台的網絡庫,程序員面對的是一個統一的網絡編程環境。  網絡編程的目的:直接或間接的通過網絡協議與其它計算機實現數據交換,進行通訊。  網絡編程中有兩個主要的問題:①如何準确的定位網絡上一台或多台主機,定位主機上的特定的應用

關于繼承的一點理解-編程思維

關于繼承,把握一點,子類繼承父類: 其實繼承了父類所有的屬性和方法,隻不過有些屬性和方法因為權限的問題,沒辦法直接調用拿到隻能通過調用父類的相關方法間接的拿到自己從父類那裡繼承到的屬性和方法。 示例代碼: package com.ethan; public class Demo { public static void main(String[] args) { Pho

LinkedHashMap-編程思維

目錄LinkedHashMap繼承關系構造器field方法containsValue(Object) 檢測指定值是否在map中getafterNodeAccessafterNodeInsertion(boolean)afterNodeRemovalnewNode(int, K, V, Node),>newTreeNode(int, K, V, Node),>疊代器 LinkedHa

Java基礎(八)——IO流3_對象流-編程思維

一、對象流 1、序列化與反序列化   序列化:将内存中的Java對象保存到磁盤中或通過網絡傳輸出去。  反序列化:将磁盤文件中的對象還原為内存中的一個Java對象。   用途:  (1)将對象保存到物理硬盤:比如Web服務器中的Session對象,當有10萬用戶并發訪問時,有可能出現10萬個Session對象,内存可能吃不消,從而導緻OOM。于是Web容器就會把一些Session序列化到硬盤中

Java基礎(八)——IO流4_随機訪問文件流-編程思維

一、随機訪問文件流 1、介紹   RandomAccessFile既可以作為一個輸入流,又可以作為一個輸出流。作為輸出流時,寫出到的文件如果不存在,則在執行過程中自動創建。若存在,則會對原有文件内容進行覆蓋,默認情況下,從頭覆蓋。注意,不會覆蓋掉整個文件内容。  創建 RandomAccessFile 類實例需要指定一個 mode 參數,該參數指定它的訪問模式:   r:以隻讀方式打開。  r

Java基礎(八)——IO流5_其他流-編程思維

一、其他 1、System.in、System.out(标準輸入、輸出流)   System.in:标準的輸入流,默認從鍵盤輸入。  System.out:标準的輸出流,默認從控制台輸出。  改變标準輸入輸出(System下的靜态方法)。   void setIn(InputStream in):重新分配"标準"輸入流  void setOut(PrintStream out):重新分配"标準

Java基礎(八)——IO流2_緩沖流、轉換流-編程思維

一、緩沖流 1、介紹   緩沖流:不能直接作用在文件上,需要包一層,它是一種處理流。用于提高文件的讀寫效率。它在流的基礎上對流的功能進行了增強。提高讀寫速度的原因:内部提供了一個緩沖區。缺省使用 8192 個字節(8Kb)的緩沖區 。  源碼示例:BufferedInputStream 1 public class BufferedInputStream extends FilterInput

JavaWeb項目的部署以及遠程調試-編程思維

Linux環境下軟件的安裝 Linux環境下的程序的安裝、更新、卸載和查看。 rpm 命令:相當于windows程序的添加/卸載程序,進程程序的安裝,查看,卸載。 本地程序安裝:rpm -ivh 程序名 本地程序查看:rpm -qa 本地程序卸載:rpm -e --nodeps 程序名 yum 命令:相當于可以聯網的rpm命令,相當于聯網下程序的安裝和更新,自動執行rpm命令 JDK的安裝 1

SpringBoot中關于Excel的導入和導出-編程思維

前言   由于在最近的項目中使用Excel導入和導出較為頻繁,以此篇博客作為記錄,方便日後查閱。本文前台頁面将使用layui,來演示對Excel文件導入和導出的效果。本文代碼已上傳至我的gitHub,歡迎訪問,地址:https://github.com/rename123/excel-demo 準備工作 1. 添加操作Excel的有關依賴,如下: <dependency&g

關于Java中泛型、反射和注解的掃盲篇-編程思維

泛型 泛型概念   泛型是在JDK1.5之後引入的,旨在讓我們寫出更加通用化,更加靈活的代碼。通用化的手段在于讓數據類型變得參數化,定義泛型時,對應的數據類型是不确定的,泛型方法被調用時,會指定具體類型,其核心目标是為了解決容器類型在編譯時安全檢查的問題。   泛型:一般用在類、方法、接口中,叫做泛型類、泛型接口、泛型方法 泛型的使用 package demo.generic; impo

Java基礎(八)——IO流1_字節流、字符流-編程思維

一、概述 1、介紹   I/O是 Input/Output 的縮寫,IO流用來處理設備之間的數據傳輸,如讀/寫文件,網絡通訊等。Java對數據的操作是通過流的方式進行。java.io 包下提供了各種"流"類和接口,用以獲取不同種類的數據,并通過标準的方法輸入或輸出數據。  輸入input:讀取外部數據(磁盤、光盤等存儲設備的數據)到程序(内存)中。  輸出output:将程序(内存)數據輸出到磁

枚舉類與注解 之 枚舉類講解-編程思維

枚舉類與注解 參考網站:https://www.bilibili.com/video/BV1X741147h5?p=4 枚舉類和注解可以看做是jdk5.0出現的兩個新特性。 枚舉類的使用:入門 類的對象隻有有限個,确定的。 舉例子: 星期:星期一,星期二,,星期日。 季節:春、夏、秋、冬。 等等 當需要定義一組常量的時候,強烈建議使用枚舉類。 如果枚舉類中隻有一個對象,則可以作為單例模式的一種實

volatile-編程思維

JMM(java内存模型) JMM屏蔽了底層不同計算機的區别,描述了Java程序中線程共享變量的訪問規則,以及在jvm中将變量存儲到内存和從内存中讀取變量這樣的底層細節。 JMM有以下規定: 所有的共享變量都存儲與主内存中,這裡所說的變量指的是實例變量和類變量,不包含局部變量,因為局部變量是線程私有的,因此不存在競争問題。 每一個線程還存在自己的工作内存,線程的工作内存,保留了被線程

LinkedList源碼分析-編程思維

LinkedList LinkedList 底層數據結構 是一個雙向鍊表 鍊表結構的優缺點: 鍊表查詢慢,需要遍曆鍊表 鍊表增删快,每次隻需要對鍊表中的一個結點添加或删除 LinkedList繼承關系 Serializable 标記性接口 Cloneable 标記性接口 Deque雙向隊列 LinkedList源碼分析 構造方法 無參構造 /** * 構造一個空列表。 */

深入學習synchronized-編程思維

synchronized 并發編程中的三個問題: 可見性(Visibility) 是指一個線程對共享變量進行修改,另一個先立即得到修改後的最新值。 代碼演示: public class Test01Visibility { public static boolean flag = true; public static void main(String[] args)

線程池-編程思維

線程池 線程池的定義 線程池其實是一種多線程的形式,處理過程中可以将任務添加到隊列中,然後創建線程後自動啟動這些任務。 為什麼使用線程池 使用線程池最大的原因就是可以根據系統的需求靈活控制線程的數量,且可以對所有線程進行統一的管理和控制,從而提高系統運行的效率,降低系統的運行壓力。 使用線程池有哪些優勢 線程和任務分離,提升線程的重用性; 控制線程并發數量,降低服務器壓力,統一管理所有線程; 提