- 博客(107)
- 资源 (2)
- 收藏
- 关注
原创 【毕业一年,聊聊什么】
我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老去,奢望也一天天消逝,最后变得像挨了锤的老牛一样。比如:《朵》里的:“我爱天上的云朵,但我手脏不能将它触摸,我爱这世间美妙的女子,可是他们却不是我的。最近有一首很火的歌,《若是月亮还没来》中有唱【若是月亮还没来,路灯也可照窗台,照着白色的山茶花微微开~】,很好的歌,写尽当下的言不由衷。只是偶感苍老,头发渐脱,作息不定,活力减少,体重增加。武汉,大雨连连,大雨如柱,大雨倾盆,任性的,傲娇的,一点没有想停的样子。
2024-07-01 10:13:24
352
原创 此地有崇山峻岭
兰亭集不就是我们的五一郊游么,人之相与,取诸怀抱,因寄所托。我们也放浪形骸,周游大好河山与风土人情;悟言一室,就是在家陪陪家人朋友,享受休假的闲暇时光。快乐五十分,拍照打卡;快乐八十分,来个精美短视频;快乐百分百,就是一篇直出的兰亭集序。五一前还在痛骂傻叉调休,五一放浪形骸之外不亦乐乎,五一后各种后遗症无法治疗。大家的喜乐是不一样的,但大家感受是一致的,这也是其致一也。全文给人的一种启迪就是,把握当下,专注当下。劝君莫惜金缕衣,劝君惜取少年时。
2024-05-12 15:53:46
167
原创 【WiFI问题自助】解决WiFi能连上但是没有网的问题
遇到事情不要慌,分析它,解决它,复盘它。典型的程序员处理问题的思维了,哈哈哈,自己也不知道如何评价了。
2023-11-19 11:26:13
784
原创 记一次半马之旅
15公里之后,温度逐渐上升(25度左右),我开始非常吃力了,虽然腿部早已没了感觉,心率也没明显加快的,但是感觉核心能量总是少了点,我开始在有谅阴的地方停下来行走,补充一点体力。停下之后,腿部会感到不适,应该是较痛的那种,但是当时身在江湖,身不由己,心脏的供氧情况会影响身体的各方面感觉,只感到累不感到痛。到了5公里左右,空间逐渐拉开,路上开始稳定节奏,配速也到熟悉的5分40。比赛中,我所感受到的是大家一起做一件事情,朝一个目标努力的氛围,感受外界对自己的影响,感受跑步对自己的影响,感受自己对自己的影响。
2023-04-22 11:33:50
291
1
原创 【读书笔记】打开心智
什么是打开心智?我认为是通过更好的认识人类,认识自己,了解自己的本性,然后顺应本性指导和改变自己对事物的看法,约束自己的行为的过程。这也是一个认识心智到打开心智的过程。其实我们每个人都有一个自己的心智模型,在每一天的处理的每一件小事上,都在反复运用自己的心智模型,只不过事情足够小不以体现出来心智模型的价值罢了。
2022-11-30 13:56:51
1000
原创 【读书笔记】《认知天性:让学习轻而易举的心理学规律》
我们大脑的思考方式就是对事务的处理方式。什么是举一反三,触类旁通,就是我们在掌握已知的基础上,根据已知和经验去面对和处理新事物的角度或者方式,这套理论在我们不断地潜移默化地练习和碰壁中打磨与成熟,最终形成自己的方法论。不仅仅针对学习与工作,甚至是待人接物之道,在这个过程我们不断地检索与重构自己的心智模型。
2022-10-05 21:20:19
628
原创 【Java基础】讲类的加载机制
最近在学习 Tomcat 的内部知识,了解到 Tomcat 也打破了双亲委派模型,想到之前 springBoot 的启动流程也是通过 SPI 机制破坏了双亲委派模型,因此觉得有必要总结一下类加载机制的原理。
2022-07-06 11:09:03
231
原创 【分布式理论】(一)分布式事务
本地事务:用关系型数据库来控制的事务,事务都具有 `ACID` 四大特性,其中这里的 C 指的是强一致性,依赖于 AID 实现而实现。Mysql 实现事务依靠日志、`MVCC`、`ReadView` 等手段。
2022-06-09 14:32:56
340
原创 【重新理解通信模型】Reactor 模式在 Redis 和 Kafka 中的应用
每个框架都有自己的通信模型,用于处理网络事件。只是不同的框架依据自身的侧重点,对网络通信的要求和实现方式不一样。
2022-05-27 13:41:36
617
原创 【重新理解Redis】(二)讲Redis实现分布式锁
微服务架构或分布式场景下,以往基于单机jvm的锁机制失效了,为此我们需要实现分布式锁。分布式锁的思路就是,将锁资源统一存放在一个外部共享系统,各进程实例在这个外部共享系统实现锁的互斥申请。
2022-05-21 15:37:01
485
原创 【重新理解Redis】(一) 讲Redis的持久化机制
讲Redis的持久化机制Redis作为内存键值对数据库,特性之一就是持久化机制。参考关系型数据库(Mysql)的持久化机制,你可以想到他们肯定都是采用类似日志的形式记录数据修改变动,然后系统宕机时,通过重做日志的形式恢复数据。在Redis的设计哲学中,一切的可靠性操作应尽可能少地侵入redis的设计出发点——快。也就是说,持久化机制应尽可能少地侵入redis主进程能力,这一点也是整个redis学习过程中都应该考虑到的。Redis主要提供了两种持久化机制:1,RDB持久化RDB(Redis Data
2022-05-13 12:56:28
438
原创 【重新理解Mysql】(一)讲 Mysql 和 Redis 如何保证数据一致性
当我们数据库性能有瓶颈时,一般我们使用缓存对热点数据进行分离,减轻数据库压力。当我们引入缓存机制(Redis)的时候,我们业务逻辑就是这样子的:
2022-05-10 22:22:16
364
原创 为什么是Kafka
消息队列是一种中间件技术,用来实现组件解耦,流量消峰,消息异步等功能。通俗理解,他就是一个大池子,池子里的资源被生产者生产,被消费者消费。和消息相关的叫客户端,做资源管理的叫服务端。
2022-05-01 16:44:25
1209
原创 【数据结构】4,树的基本概念及基本操作
树结构通常由一个父结点和若干子结点构成。它的查询和增删效率都非常高。任何一颗多叉树都能转换为二叉树的形式,所以研究二叉树不失一般性。
2021-12-24 22:30:28
298
1
原创 基于同态加密和秘密共享的无第三方纵向逻辑回归
基于同态加密和秘密共享的逻辑回归方案0,写在前面Fate升级1.7.0版本之后,实现了阿里2021KDD的一篇论文,[When Homomorphic Encryption Marries Secret Sharing: Secure Large-Scale Sparse Logistic Regression and Applications in Risk Control。当然他这里做了一定的修改,比如sigmod函数优化那里的一个变化,没有采用多项式近似的方式。本篇文章的主要目的是,对比FATE
2021-12-24 12:57:47
1853
9
原创 【数据结构】十大排序算法的分析与实现
排序算法排序算法可以分为内部排序和外部排序。内部排序即在内存中完成,不需要额外的空间;也可以分为比较排序和非比较排序。下图是常见的十种排序算法的性能对比。稳定性是基于排序是否改变原始元素的相对位置做判断的。1,冒泡排序冒泡排序采用相邻元素两两对比,如果顺序有误就交换他们的顺序,这样一轮下来,最大或最小元素就会交换到最顶端。由于形式极其像一次次的冒泡,我们称之为冒泡排序。下面演示从小到大排序的情况:/** * 冒泡排序:优化:如果一趟排序中没有发生冒泡,说明数组已经有序即可退出循环
2021-11-24 20:19:26
710
2
原创 【力扣刷题】(四)贪心专题
贪心1,贪心的算法思想贪心本质是求解局部最优,从而全局最优。assert:动规的原因是两个限制条件是互相干扰的,而贪心的子条件相互独立,所以才能确保局部最优到全局最优。因为有很多情况,局部最优不一定是全局最优,这个前提就是全局可以等价于局部的累加。2,力扣题型376,摆动序列https://leetcode-cn.com/problems/wiggle-subsequence/摆动序列就是一个上下波动的序列,如果不符合就要采用子序列的定义删掉这个波值,只不过这里的删掉不是真正的删掉数组元素,
2021-11-21 09:42:39
384
原创 【力扣】秒杀力扣区间重叠问题
秒杀力扣区间重叠问题两个区间重叠,有三种临界情况,但他们都满足一定的特点,比如第一区间的尾部一定大于或大于等于第二区间的头部(first>second)。我们可以按照这种情况区分重叠问题。此外,我们通常需要先对区间排序。这样比较才是确保有序的正确的。可以按照头部或是尾部从小到大排序。二维数组的排序方式: Arrays.sort(people, new Comparator<int[]>() { @Override public int co
2021-11-16 09:31:18
771
原创 【JVM系列(二)】垃圾回收算法
垃圾回收算法什么是垃圾?当一个对象没有被引用时就会被视为垃圾而回收。内存泄露:申请内存空间而没有被正确释放,造成该块内存空间不可达;内存溢出:存储数据超出了内存的额定大小,如栈溢出 stackoverflow。1,垃圾回收的基本策略:引用计数法:通过计算器机制:对象引用一次+1,引用实效一次-1;为0则回收。但是这样无法解决循环依赖问题。可达性分析法:GC Roots所引用的对象为有限对象,这里的引用包括:Java 虚拟机栈(栈帧中的本地变量表)中引用的对象本地方法栈中引用的对象
2021-11-02 20:05:17
141
原创 【JVM系列(零)】虚拟机主要架构解析
虚拟机主要架构解析1,虚拟机概述虚拟机的地位:虚拟机的存在使得 Java 具备跨平台特性,只要其他平台预装了JVM,Java程序就能够在上面执行。我们更多的是关注虚拟机中的运行时数据区。一些关键数据的交互和执行都发生在此。运行时数据区主要包括以下几部分:线程隔离区程序计数器:在线程上下文切换时,程序计数器用于记录当前线程正在执行的字节码指令的地址本地方法栈:调用本地方法所需要的数据区虚拟机栈:方法调用所需要的数据区线程共享区堆:存储实例对象方法区:存储类信息,常量信息2
2021-11-02 17:11:13
2767
原创 【力扣刷题】(三)动态规划专题
动态规划1,动态规划适合什么问题?求最值,而且核心是穷举思想。首先,穷举可能会非常复杂;所以你需要发现重叠的子问题,然后使用备忘录模式dp数组的形式优化。也就是你需要找到最优子结构,通过子问题才能拆解出复杂问题。要想正确的穷举,你还需要找出我们的状态转移方程。动态回归的优化:可以只用dp存储转态转移方程即可。(状态压缩)自顶向下:从大问题开始,向下分解,如递归树;自底向上:从基本问题开始,向上推导,如动态规划。动规五部曲:明确dp数组的下标及对应的值的意义找到子问题得到递推公式明确
2021-10-27 10:53:09
169
原创 周末晴日的午后
周末晴日的午后重庆的雨,不下则已,一下惊人。它不是那么大雨滂沱,山呼海啸的气势惊人,而是调情般的小雨滴滴,忧愁不觉的好不痛快。折磨脾气也是考验耐心,就看谁能耗过谁。这不,经历一番痛苦,周末的第一天,天晴了,我竟然小小的代表了人类战胜了恶劣的天气????(如果可以允许的话)这是个晴日的午后。路上顶着亮蓝空远的天空,在明媚暖阳的写意下,睡醒后我不舍的向实验室的方向走去。宿舍和实验室大概六七分钟的路程,穿过潮湿的小道,我迫不及待的感受着阳光对脸颊的温润。网球场上已经开始有人在打球了,旁边的栏杆上花花绿绿的被子
2021-10-23 15:41:43
156
原创 【Jvm系列(一)】类的加载机制
类加载机制1,类加载过程ClassLoader 只负责 class 文件的加载,至于它是否可以运行,则由 Execution Engine 执行引擎决定。加载阶段:通过一个类的全类名获取此类的二进制字节流;将该流所表示的静态存储结构转换为方法区的运行时数据结构;在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的访问入口。链接阶段:验证(Verify):确保 Class 文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性;主要包括四
2021-10-17 15:56:49
100
原创 纵向联邦学习中的逻辑回归方案介绍
纵向联邦学习中的逻辑回归方案1,传统机器学习里的LR计算:y′=σ(wx)y^\prime=σ(wx)y′=σ(wx)。w为模型;目标:输入x得到输出。如何训练w:w:=w−g,其中g=(y′−y)xw:=w-g,其中g=(y^\prime-y)xw:=w−g,其中g=(y′−y)x如何停止:设置迭代次数和loss收敛阈值。2,纵向联邦里的LR联邦学习里首先对标签{0,1}改动为{1,-1}。然后为了支持同态,对损失函数做了改动。2.1,有第三方:全局只有一对公私钥。第三方持有私钥,参
2021-09-29 19:37:48
2882
11
原创 【Spring源码系列(二)】循环依赖与三级缓存
三级缓存解决创建 Bean 过程中的循环依赖1,什么是循环依赖?即 A 依赖于 B,B 依赖于 C,C 依赖于 A。这样的问题导致 A 在实例化的时候永远都不能完成。循环依赖的分类:构造器循环依赖这种情况无法解决。因为必须通过构造器实例化,不可能不去调用构造器,也就无法避免依赖的发生。此时抛出 BeanCurrentlyInCreationException。setter 循环依赖。可以通过将实例化和初始化分开的方式,提前暴露已经实例化好的 bean。spring 只能解决 sette
2021-09-20 19:49:38
144
原创 【Spring源码系列(一)】Bean的生命周期
Spring 中 Bean 的生命周期1,什么是 Bean?凡是由 Spring IoC 容器负责实例化,组装和管理的对象,我们都称之为 Bean 对象。Bean 对象本身可以看做是 Pojo。官网解释:In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an obj
2021-09-15 19:22:35
199
原创 【设计模式】23,访问者模式
(二十三)访问者模式访问者模式(Visitor Pattern)是一种将数据结构与数据操作分离的设计模式。1,访问者模式的设计原则1,抽象访问者(IVisitor):接口或抽象类,定义一个visit()方法;2,具体访问者(ConcreateVisitor):具体元素的操作;3,抽象元素(IElement):定义一个接收访问者访问的方法accept();4,具体元素(ConcreateElement):接收访问者的具体实现;5,结构对象(ObjectStructure):内部维护一个元素集合,
2021-08-25 16:47:55
118
原创 【设计模式】22,观察者模式
(二十二)观察者模式观察者模式(Observer Pattern)也叫做发布-订阅模式,通过定义一种一对多的依赖关系,被观察者的变动能够及时通知到观察者。通过一种类似消息发布的机制,实现了二者的解耦。1,观察者模式的设计原则1,抽象主题(ISubject):定义通知观察者对象的抽象方法;2,具体主题(ConcreateSubject):具体被观察者;3,抽象观察者(IObserver):定义响应通知的更新方法;4,具体观察者(ConcreateObserver):做出响应。2,简单例子通过J
2021-08-25 16:46:45
110
原创 【设计模式】21,解释器模式
(二十一)解释器模式解释器模式(Interpreter Pattern)给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。1,解释器模式的设计原则1,抽象表达式(IExpression):,定义抽象方法interpret;2,终结符表达式(TerminalExpression):实现文法中与终结符有
2021-08-25 16:45:32
189
原创 【力扣刷题】(二)链表专题
链表1,链表链表是一种结点相连的数据结构,其中典型的结点构成包括一个存储数据的 data 域和一个存储执行下一结点的指针域 next。双链表则将指针域细化为前驱节点 pre 和后驱节点 next。循环链表则将尾节点和头节点相连。因此,链表的分类按照实现方式包括单链表、双链表、循环链表。链表的设计原则是增删快,查询慢。更多链表知识,可以参考:Java 中的链表:链表在 Java 中的实现是2,力扣题型2.1,203移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链
2021-08-22 22:18:23
204
原创 【剪不断,理还乱】Java 中 equals 和 == 的那些事
细说 equals 和==的那些事1,起源于 Object我们都知道 Java 中所有的类都默认继承了 Object 这个超类,其中 Object 有 10 多个方法,这里我们介绍一下toString,equals和hashcode方法。toSting方法默认返回“类名@地址值”;我们一般对它进行重写,然后就可直接打印对象得到输出重写后的形式。下面重点介绍一下equals和hashcode:equals方法默认比较对象(地址),即进行的是==运算。如果需要比较内容,需要进行重写。hashc
2021-08-04 21:56:42
134
原创 【Java集合源码】HashSet源码分析
HashSet1,HashSet 概念HashSet 是 Set 子接口的一个实现子类,它的底层由 HashMap 提供(数组+链表+红黑树),并借助 HashMap 的键来存储对象。由于是 Set 的实现子类,它具备 set 的无序、不可重复、非同步的特点;同时,由于 Hash 效果,它的查找会更快。public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneab
2021-08-03 23:01:53
288
2
原创 【Java 集合源码】ArrayList 源码分析
ArrayList1,概念ArrayList 是 List 接口的一个实现类,底层基于数组实现,具有查询快、增删慢;非线程安全,效率高的特点。同时,ArrayList 还具备了 List 接口的有序、可重复的特点,且允许插入空值。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializa
2021-08-01 22:31:11
126
原创 【数据结构】3,链表的概念及其基本操作的实现
3,链表链表是一种以结点的形式存储数据的结构,而结点通常由数据域(data)和指针域(next)组成,分别用于存放数据和指向下一个结点位置。常见的,有单链表、双链表、循环链表。链表通常有带头结点和不带头结点两种。为什么需要头结点?没有头结点时,在最前面插入删除需要修改表头指针,在其他位置插入删除时修改前驱结点的next域,两种操作需要分别处理。因此为了操作统一,我们一般使用一个虚拟的头结点,它本身不存储数据。3.1,单链表单链表定义:public class Node{ T data;
2021-07-29 16:12:04
290
1
原创 【SQL】不会写SQL ? 一篇文章搞定常见 SQL
0,写在前面以下内容主要来自于笔者的作业练习,应该会涉及到大部分的SQL语法。配合这篇文章 数据库理论 食用更佳。1,准备工作创建:学生表student,课程表course,选修表course。并插入数据。create table if not exists student( sid char(6) not null primary key, name varchar(25) not null, sex int(1) not null, age int(3) not
2021-07-11 20:39:03
911
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人