Werido_wjh
码龄6年
关注
提问 私信
  • 博客:27,824
    社区:1
    27,825
    总访问量
  • 22
    原创
  • 487,658
    排名
  • 7
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:河北省
  • 加入CSDN时间: 2018-12-14
博客简介:

weixin_44104798的博客

查看详细资料
个人成就
  • 获得9次点赞
  • 内容获得3次评论
  • 获得29次收藏
创作历程
  • 20篇
    2021年
  • 2篇
    2020年
成就勋章
TA的专栏
  • Java基础 小菜一碟
    17篇
  • 算法
    3篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    spring
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Volatile是如何保证线程可见的?详解 volatile 主内存 工作内存 jmm 缓存一致性 总线

Volatile是如何保证线程可见的?摘要本文以volatile最常见的2个问题为线索,基于汇编lock前缀指令和cpu原子操作等底层知识,初步对volatile的底层原理进行描述。通过本文的论述,基本上能够解释以下2个问题:1)为什么volatile能够保证线程可见性?2)为什么volatile不能实现操作原子性?研究思路首先分析jmm内存模型,结合cpu的8个原子操作然后介绍CPU的缓存一致性协议最后结合jmm和缓存一致性协议,解释为什么volatile可以保证线程可见基本概念首先对后文
原创
发布博客 2021.08.12 ·
358 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

ConcurrentHashMap分段锁详解 ConcurrentHashMap和Hashtable实现同步的区别 分段锁

concurrenthashmap采用分段锁思路我们都知道ConcurrentHashMap的底层数据结构实现原理其实和HashMap没什么两样,都是数组+链表+红黑树。那么我们就从HashMap入手,来理解。具体HashMap的实现原理剖析请看个人博客:https://blog.csdn.net/weixin_44104798/article/details/118683464怎么将HashMap数据结构使用分段锁的思想进行细分化。在jdk1.7及以前,是这样实现的:比如容器HashMap中存在1
原创
发布博客 2021.07.29 ·
603 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

接口中属性的默认修饰符 方法的默认修饰符

接口中的属性默认是public static final 的,方法默认是public abstract的
原创
发布博客 2021.07.27 ·
3033 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

spring boot 约定大于配置

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。spring Boot采用约定大约配置的方式,大量的减少了配置文件的使用。使用SpringBoot的同学可能经常看到这几个字“约定大于配置”,那么它到底是什么意思呢?百度一下意思如下:约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,
原创
发布博客 2021.07.27 ·
1079 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

try catch finally 执行顺序 多情况分析

情况1:try{} catch(){}finally{} return;显然程序按顺序执行。情况2:try{ return; }catch(){} finally{} return;程序执行try块中return之前(包括return语句中的表达式运算)代码;再执行finally块,最后执行try中return;finally块之后的语句return,因为程序在try中已经return所以不再执行。情况3:try{ } catch(){return;} finally{} return;程序先
原创
发布博客 2021.07.27 ·
493 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 类初始化顺序 实例讲解

对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。package javaThreadLearning;class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; protected int i = 1; protected int j = 8; // 变量 publi
原创
发布博客 2021.07.27 ·
421 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

i++与++i 详解 真正区别 一看就懂 深层理解

问题描述记得刚开始学编程的时候还是从c语言开始的,还是看的谭浩强写的那本书,上面对介绍i++和++i的区别如下:i++是先赋值,然后再自增;++i是先自增,后赋值。用代码表示就是:若 a = i++; 则等价于 a=i;i=i+1;而 a = ++i; 则等价于 i=i+1;a=i;那么事实真是这样么,只是曾经我深信不疑,但是直到我看到下面这段代码: @Test public void test(){ int i = 0; i=i++; System.o
原创
发布博客 2021.07.27 ·
2517 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

算法基础 滑动窗口算法 原理分析

滑动窗口算法基本原理学过计算机网络的同学,都知道滑动窗口协议(Sliding Window Protocol),该协议是 TCP协议 的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。滑动窗口算法其实和这个是一样的,只是用的地方场景不一样,可以根据需要调整窗口的大小,有时也可以是固定窗口大小。滑动窗口算法(Sliding Window Algorith
原创
发布博客 2021.07.27 ·
1156 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

RPC 一篇文章搞懂rpc 不看后悔五百年

1. 基本的RPC模型主要介绍RPC是什么,基本的RPC代码,RPC与REST的区别,gRPC的使用1.1 基本概念RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务本地过程调用:如果需要将本地student对象的age+1,可以实现一个addAge()方法,将student对象传入,对年龄进行更新之后返回即可,本地方法调用的函数体通过函数指针来指定。远程过程调用:上述操作的过程中,如果addAge()这个方法在服务端,执行函数的函数体
原创
发布博客 2021.07.27 ·
576 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

八大排序算法 排序 C语言

前言不管是提高自身的能力,还是面试,八大排序都是很重要的一个知识点,所以理解并实践实现是很有必要的,以下给出算法思想与代码实现,并且进行运行时间测试八大排序的效率。时间复杂度对比图先看下对于算法时间复杂度的对比:冒泡排序冒泡排序是一种简单的排序算法。主要思想是顺序的比较相邻的两个数,如果符合比较条件就替换两个数,做法可以从后往前推,也可以从前往后推,每次推出当前长度的最大值,直至最后便可以完整的排序。时间复杂度为 : O(n*n);#include<time.h>#include
原创
发布博客 2021.07.27 ·
497 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring Security 原理

Spring Security核心原理Spring Security是Spring生态系统的一个安全组件,而且和Spring MVC整合非常方便。Spring Security最基本的原理是基于J2EE的拦截器原理,拦截器会形成一个拦截器链,这是一种责任链设计模式。Spring Security使用实现的一些拦截器来对访问的url进行拦截,通过对缓存中的角色进行相应判定后决定是否能url访问权限。当一个URL请求到来时,Spring Security的AuthenticationProcessingFi
原创
发布博客 2021.07.25 ·
1099 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

mysql 排序 (row_number、dense_rank、rank)索引(主键索引、唯一索引、普通索引、全文索引、多列索引)语句执行顺序

mysql 添加索引 mysql 如何创建索引1.添加PRIMARY KEY(主键索引)mysql>ALTER TABLE table_name ADD PRIMARY KEY ( column )2.添加UNIQUE(唯一索引)mysql>ALTER TABLE table_name ADD UNIQUE ( column )3.添加INDEX(普通索引)mysql>ALTER TABLE table_name ADD INDEX index_name ( column )
原创
发布博客 2021.07.25 ·
1213 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于理解Java虚拟机总结 JVM高级特性与最佳实践 jvm自动内存分配

笔者最近在总结关于JVM的知识,此篇文章建立在 周志明编写的 《深入理解Java虚拟机 JVM高级特性与最佳实践》第三版的基础之上进行总结。总结如果不正之处,还望多多指教。关于对Java虚拟机的介绍以及虚拟机的发展史在这里就不在赘述,如果感兴趣可以看一些资料。Java内存区域学过c++的开发人员会知道,c++在内存管理领域是扮演者“皇帝”的角色,他们负责着一个对象从出生到终结的整个过程。然而对于Java程序员来说,他们只负责创建对象,而不用去释放这些对象所消耗的内存,这些工作全部交由jvm去做。
原创
发布博客 2021.07.15 ·
813 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

约瑟夫环问题

约瑟夫环问题。你和另外 n-1 个人围成一个圈,按 1,2,…,n 依次编号。第一个人从 1 开始报数,数到 k 的人会被杀掉,然后下一个人重新从 1 开始报数。如此往复,直到最后只剩下一个人。问题是,你应该如何选择自己的初始位置,才能保证最后不被杀掉呢?速度越快的算法当然越好,毕竟这是一个生死攸关的问题。下面你将会看到,我们如何通过一些基本的数学推导最终得到这个问题的递推解。初步思考考虑这样一种相对简单的情况:总共有 5 个人,数到 3 的人被杀掉。那么,死亡过程如下图所示:经过一番模拟之后,
原创
发布博客 2021.07.13 ·
729 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ArrayList的扩容机制

ArrayList是实现了List的接口的类,底层数据结构是一个数组,但是该数组实现了可变大小,具备了更好的性能。那么Arraylist是如何实现可变大小的呢,一起深入源码看一下。首先看一下它的几个属性 /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; /** * Shared empty array instance used f
原创
发布博客 2021.07.12 ·
4837 阅读 ·
4 点赞 ·
0 评论 ·
5 收藏

代理(Proxy)模式

代理模式(Proxy Pattern),23个经典模式中的一个,又称之为委托模式,就是为目标对象提供了一个代理,这个代理可以控制对目标对象的访问。代理对象可以在被代理对象的基础上添加额外功能。为什么要使用代理?某人要找对象,但是由于某些原因(如工作太忙)不能直接去找,于是委托一个中介机构去完成这一过程,如婚姻介绍所,在这里婚姻介绍所就是一个代理,与此相类似的还有房屋中介、职业中介,它们充当的都是一个代理的角色。所谓代理,就是一个人或者一个机构代表另一个或者另一个机构采取行动。静态代理静态代理要求被代
原创
发布博客 2021.07.12 ·
1071 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

关于对反射的理解 java

反射的定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射的作用一般情况下,我们使用一个类时,都知道它是用来干什么的。先是对其进行实例化,然后在使用它。反射正好与之相反。当我们不知道一个类是什么时可以用反射对其进行分析。若想了解一个类,那一定是从其属性和方法下手,通过反射可以获得一个类的所有属性和方法。import java.lang.
原创
发布博客 2021.07.11 ·
709 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 128陷阱

在java中 List list = new ArrayList(); 中 如果写为List<> list = new ArrayList(); 这样会报错的。 那么int 和Integer有什么区别呢??我们知道int是基本数据类型,而Integer是int的包装类。这里就设计到了自动装箱和自动拆箱了,简单一点讲装箱就是基本数据类型自动转换为包装类,拆箱与之对应,包装类自动转换为基本数据类型。 //自动装箱 Integer s = 123; /
原创
发布博客 2021.07.10 ·
820 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

关于微信商家向个人零钱付款 后端实现

关于微信商家向用户零钱付款 后端实现网络上大部分都是用户向商家付款的案例。近期碰到这样一个需求,要求商家向个人账号付款,查询相关资料却寥寥无几。现将个人实现过程总结如下,以供大家批评指正。首先我先是看了微信支付的接口文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1,建议大家在实现之前可以阅读一下,熟悉一下流程。整体的实现思路:1、获取数据,具体请求参数请参考微信支付文档(https://pay.weix
原创
发布博客 2021.07.05 ·
1491 阅读 ·
1 点赞 ·
1 评论 ·
3 收藏

零件分组 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi)。现在为了加工需要,要将它们分成若干组,使每一组的零件都能排成一个长度和重量都不下降

零件分组题目描述某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi)。现在为了加工需要,要将它们分成若干组,使每一组的零件都能排成一个长度和重量都不下降(若i<j,则Li<=Lj,Wi<=Wj)的序列。请问至少要分成几组?输入第一行为一个整数N(N<=1000),表示零件的个数。第二行有N对正整数,每对正整数表示这些零件的长度和重量,长度和重量均不超过10000。输出仅一行,即最少分成的组数。样例输入58 4 3 8 2 3 9 7 3 5样例输出
原创
发布博客 2021.07.05 ·
1938 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多