自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 2021-09-30

关于日期得各种格式化和时区问题// localdatetime 2020-09-01T23:23:23.000//// joda datetime 2020-09-01T23:23:23.000+8.00//// timestamp 2020-09-01 23:23:23.0 String str="2020-09-09 10:23:23.000Z"; DateTimeFormatter fmt2 = DateTimeF

2021-09-30 17:40:16 85

原创 哈希集合应用

1.中心索引//左侧所有元素相加的和等于右侧所有元素相加的和。class Solution { public int pivotIndex(int[] nums) { int presum = 0; //数组的和 for (int x : nums) { presum += x; } int leftsum = 0; for (int i = 0; i < nu

2021-05-24 21:33:33 123

原创 spring springboot springmvc

1.springspring 是一个开源的轻量级 JavaBean 容器框架。使用 JavaBean 代替 EJB ,并提供了丰富的企业应用功能,降低应用开发的复杂性。轻量:非入侵性的、所依赖的东西少、资源占用少、部署简单,不同功能选择不同的 jar 组合容器:工厂模式实现对 JavaBean 进行管理,通过控制反转(IOC)将应用程序的配置和依赖性与应用代码分开松耦合:通过 xml 配置或注解即可完成 bean 的依赖注入AOP:通过 xml 配置 或注解即可加入面向切面编程的能力,完成切面功能

2021-05-23 14:37:02 134

原创 gc

GCRoot一个对象可以属于多个root,GC root有几下种:Class - 由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的,他们可以以静态字段的方式保存持有其它对象。我们需要注意的一点就是,通过用户自定义的类加载器加载 的类,除非相应的java.lang.Class实例以其它的某种(或多种)方式成为roots,否则它们并不是roots,.Thread - 活着的线程Stack Local - Java方法的local变量或参数JNI Local -

2021-05-23 14:12:01 88

原创 redis

1.redis数据结构字符串、stringraw动态字符串 比较长的字符串 aaaaaaa…a 被编码为 rawint类型整数 可以用整数编码类型表示的值embstr 比较短的字符串 abc 被编码为 embstrembstr 只申请了一次内存,而 raw 需要申请两次,因此节约了一次申请内存的消耗释放 embstr 只需要释放一次内存,而 raw 需要两次,因此节约了一次释放内存的消耗embstr 的 redisObject 和 sdshdr 放在一块连续的内存里,因此更能利用 缓存 带来

2021-05-23 13:55:57 61

原创 new 对象过程

1.在new的开始过程中,首先检查该类是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化过。没有则进行类加载机制加载类加载过程的一个阶段,ClassLoader通过一个类的完全限定名查找此类字节码文件,并利用字节码文件创建一个class对象。验证目的在于确保class文件的字节流中包含信息符合当前虚拟机要求,不会危害虚拟机自身的安全,主要包括四种验证:文件格式的验证,元数据的验证,字节码验证,符号引用验证。准备为类变量(static修饰的字段变量)分配

2021-05-22 10:23:18 296

原创 cms

CMS 基于“标记-清除”算法(Concurrent Mark Sweep)初始标记:仅仅只是标记一下GC Roots能直接关联到的对象,速度很快,需要“Stop The World”。并发标记:进行GC Roots Tracing的过程,在整个过程中耗时最长。重新标记:为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记的时间短。此阶段也需要“Stop The World”。并发清除。有什么缺点第一,

2021-05-21 22:20:58 297

原创 二分查找,左右边界查找

public class BinarySearch { static int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) {

2021-05-20 22:19:48 112

原创 ...

单例模式还不会。。。饿汉public class S { private static S ex=new S(); private S(){ } private static S getEx(){ return ex; } public static void main(String[] args) { System.out.println(ex); }}懒汉public class S2 { pr

2021-05-20 22:16:13 55

原创 进程通信与线程通信

进程通信管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。消息队列( message

2021-05-18 15:51:06 84

原创 代码重构

关于重构1.原因编码之前缺乏有效的设计成本上的考虑,在原功能堆砌式编程缺乏有效代码质量监督机制2.定义重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。3.大型重构和小型重构4。代码的坏味道1)代码重复实现逻辑相同、执行流程相同2)方法过长方法中的语句不在同一个抽象层级逻辑难以理解,需要大量的注释面向过程编程而非面向对象3)过大的类类做了

2021-05-17 10:53:06 274

原创 jmm原理

1.可见性共享内存带来可见性问题使用java volatile关键字(缓存一致性协议(MESI)对此变量进行写操作时,汇编指令中会有一个LOCK前缀指令,会引发两件事情:将当前处理器缓存行的数据写回到系统内存这个写回内存的操作会使得在其他处理器缓存了该内存地址无效java synchronized代码块解决竞争现象线程解锁前,必须把共享变量的最新值刷新到主内存中线程加锁前,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值。2.有序性提高性能重排序带来有序性问

2021-05-16 12:41:41 109

原创 mysql提交机制

1.mysql日志物理日志redo恢复 持久性undo 回滚 原子性WAL机制 (Write Ahead Log)逻辑日志binlog二阶段提交保持一致性1.Storage Engine(InnoDB) transaction prepare阶段:存储引擎的准备阶段,写redo-buffer此时SQL已经成功执行,并生成xid信息及redo和undo的内存日志。2.Binary log日志提交:写binlog并落盘.write()将binary log内存日志数据写入文件系统缓存。f

2021-05-16 12:12:52 252

原创 代理

静态代理public interface Subject { public void request();}public class RealSubject implements Subject { @Override public void request() { // 卖房 System.out.println("卖房"); }}public class Proxy implements Subject { private Rea

2021-05-15 15:36:59 89

原创 jvm补充

1.为什么堆要分新生代和老年代如果不分新老代,内存就一整块,垃圾收集器每次都要把那些长期存在的对象,和生命周期很短的对象放在一起回收,一般长生命周期的对象可能跟应用生命周期一致,你基本回收不掉的,比如Spring 框架里面的Bean管理相关的对象(ApplicationContext),整个应用运行期间都存在,这种一般经过几次回收最后都放在老年代,但是如果不区分新老代,每次都一起回收,性能消耗很大。区分新老代之后,老年代放长期存活的对象,新生代就放生命周期短的对象,老年代对象很稳定,新生代回收不影响老年

2021-05-14 21:34:48 58

原创 相交链表

相交链表/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ListNode ta=pHead

2021-05-14 21:25:22 46

原创 滑动窗口

滑动窗口public int[] maxSlidingWindow(int[] nums, int k) { if(nums.length==0||k==0||nums.length<2) return nums; Deque<Integer>deque=new LinkedList<>(); int[]res=new int [nums.length-k+1]; for(int i=0;

2021-05-11 20:13:36 60

原创 AQS

AQS1.由来因为sychronized不能中断,阻塞,不知道是否成功获取锁,所以出现了lock,lock的实现-AQS(抽象队列同步器)

2021-05-11 20:12:08 60

原创 threadLocal

1.线程变量的隔离—每个线程处理自己的用户信息,线程之间互不干扰 private static final ThreadLocal<UserInfo> userInfoThreadLocal = new ThreadLocal<>();//指向堆中的ThreadLocal 对象; userInfoThreadLocal.set(userInfo);//ThreadlocalMap中put了一个元素(Entry),key是Threadlocal对象,value是userI

2021-05-11 19:25:43 68

原创 dfs-2

矩阵最长递增路径import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 递增路径的最大长度 * @param matrix int整型二维数组 描述矩阵的每个数 * @return int整型 */ int [][] dp; int[] directions = new int[]{0,1,0,-

2021-05-10 16:57:30 65

原创 dfs

import java.util.*;public class Solution { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> out = new ArrayList<Integer>(); public ArrayList<ArrayList<Integ

2021-05-10 16:17:45 54

原创 打印矩阵

顺时针打印矩阵import java.util.ArrayList;import java.util.LinkedList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer>res=new ArrayList<>(); if(matrix==null||matrix.length==

2021-05-07 18:09:25 211

原创 LIS字典序

LISimport java.util.*;public class Solution { /** * retrun the longest increasing subsequence * @param arr int整型一维数组 the array * @return int整型一维数组 */ public int[] LIS (int[] arr) { // write code here if(arr.l

2021-05-05 22:56:38 72

原创 垃圾收集器

垃圾收集器

2021-05-03 17:18:43 39

原创 操作系统

从缓存读取数据时发生了什么1.进程调用read函数,操作系统向磁盘发起IO请求2.进程阻塞,进入阻塞队列3.记录进程运行状态,执行其他程序b4.磁盘driver将数据copy到进程的buff中(DMA零拷贝)5.磁盘通过中断通知操作系统任务完成6.b时间片完进入就绪队列7.继续执行A...

2021-04-26 15:51:17 95

原创 HashMap源码

1.默认容量 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 2.加载因子 /** * The load factor used when none specified in constructor. */ static final

2021-04-25 23:23:25 39

原创 Stack,ArrayDeque,LinkedList

Stack,ArrayDeque,LinkedListStack线程同步1.频繁的插入、删除操作:LinkedList(底层链表2.频繁的随机访问操作:ArrayDeque(底层长度为16的数组,Stack底层长度为10的数组3.未知的初始数据量:LinkedList(...

2021-04-24 16:14:43 73

原创 leetcode笔记

组合与排列int[] memo; public int combinationSum4(int[] nums, int target) { memo=new int[target+1]; Arrays.fill(memo,-1); return dfs(nums,target); } private int dfs(int[] nums, int target) { int sum=0; if(tar

2021-04-24 13:50:37 47

原创 leetcode笔记

0-1背包之凑零钱 int[]dp=new int[aim+1]; Arrays.fill(dp,aim+1); dp[0]=0; for(int i=0;i<arr.length;i++){ for(int j=aim;j>=arr[i];j--){ dp[j]=Math.min(dp[i],dp[j-arr[i]]+1); } } return d

2021-04-24 10:43:52 45

原创 mysql

mysql日志

2021-04-22 12:55:03 51

原创 计算机网络

计算机网络

2021-04-22 12:52:17 62

原创 动态数据结构

动态数据结构1.哈希表2.跳表3.红黑树4.B树,B+树

2021-04-21 18:16:49 92

原创 IO篇

IO1,IO多路复用2.DMA1)传统IO2)零拷贝mmapsendfilepagecache直接io

2021-04-21 18:13:04 50

原创 String

String源码分析定义public final class String implements java.io.Serializable, Comparable<String>, CharSequence { } String类被final关键字修饰,不能被继承,创建后不可修改。String类实现了Serializable接口,可以实现序列化。String类实现了Comparable,可以比较大小。String类实现了CharSequence接口,Strin

2021-04-19 15:53:05 44

原创 mysql练习

//此处注意,先禁用外键检查,在删除,否则报错

2021-04-11 19:45:52 36

原创 消息队列

消息队列

2021-04-11 14:16:32 49

原创 javaweb概述

javaweb概述

2021-04-11 14:11:04 71

原创 redis

redis

2021-04-11 14:08:19 68

原创 jmm内存模型和原理

jmm内存模型和原理

2021-04-10 09:31:28 119

原创 jvm垃圾回收

2021-04-09 11:45:53 68

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除