自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 每日一省吾身,码真懂乎?

学而不思则罔,思而不学则殆这句话为孔子所提倡的一种读书及学习方法。指的是一味读书而不思考,就会因为不能深刻理解书本的意义而不能合理有效利用书本的知识,甚至会陷入迷茫。而如果一味空想而不去进行实实在在地学习和钻研,则终究是沙上建塔,一无所得。告诫我们只有把学习和思考结合起来,才能学到切实有用的知识,否则就会收效甚微。古人诚不欺我...

2020-09-21 14:05:03 258

原创 工作四年半的一个反思

毕业四年半了,为什么没有说五年,其实也是不太愿意承认毕业接近五年,职业还处于一个起步期想想这四年多都干了什么上学的时候学习php,前端,做一个CURD boy,不知索引 缓存为何物,其他的就更别说了,不得不承认现在行业也是真的内卷,我刚毕业那会还没流行什么leetCode,也可能流行了,我比较low不知道,哈哈1 第一年毕业,进入了一家小公司,做一个CURD boy,是真的CUrd,开始接触缓存,索引,只知道背什么索引优化原则,最左前缀什么,不知道干什么用,也没什么用的机会2 第二年,去了一家用户k

2020-12-21 22:08:37 268

原创 BeanFactoryPostProcessor的作用可不仅仅是修改Bean定义

一说到 BeanFactoryPostProcessor,很多人的第一反映就是他可以修改Bean定义,对,他是可以修改Bean定义,然而,他的作用仅限于修改Bean定义吗?显然不是,他是Spring提供的一个扩展点,解耦的一个手段,下面仔细说一下:先说下他是怎么修改Bean定义的@FunctionalInterfacepublic interface BeanFactoryPostProcessor { void postProcessBeanFactory(ConfigurableListab

2020-09-25 18:01:17 2175

原创 @Autowired 写在属性和构造函数上的区别

下面是@Autowired的作用域@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})构造方法方法参数属性注解类型本文主要介绍一下,写在构造方法和属性上的区别,举一个例子来说明@Componentpublic class C2 { public void say(){ S

2020-09-24 11:13:55 2879

原创 BeanFactory 和 ApplicationContext的区别

BeanFactory 是顶级接口ApplicationContext 继承于BeanFactory , 都具有生产Bean的能力,但BeanFactory不具备包扫描的能力ApplicationContext 具有更多的功能,事件发布等,服务非常好BeanFactory 就是一个无情的生产机器,没有其他服务,只能通过下面的方式去注册Bean定义,生产BeanDefaultListableBeanFactory defaultListableBeanFactory = new DefaultList

2020-09-22 14:22:41 152

原创 Mac 安装 hsdis 查看 java 汇编指令

先安装下hgbrew install mercurial官网地址: https://www.chrisnewland.com/updated-instructions-for-building-hsdis-on-osx-417hg clone http://hg.openjdk.java.net/jdk8u/jdk8u# 官网上少了这一步sh get_source.shcd jdk8u/hotspot/src/share/tools/hsdis/wget http://ftp.hean

2020-09-22 10:18:25 396 1

原创 写一个单例,无论什么情况下都能保证只有一个

方式一:双重检查package app;/** * @author devilu */public class Single{ private static volatile Single instance; private Single() throws Exception { // 如果用反射的方式new,直接抛异常 if(instance != null){ throw new Exception(getCla.

2020-09-22 09:37:50 127

原创 java 中的各种锁原理介绍 之 Synchronized

Synchronized轻量级锁基于java自身实现,重量级锁依赖系统底层互斥量实现太长不看,这里有总结, 整个流程在文章末尾有流程图Synchronized 中有几种锁,听起来感觉这话有点怪,Synchronized本身不就是一种锁吗?是的,但是JVM内置锁在1.5之后版本做了重大的优化,存在一个锁的膨胀升级过程,下面会一一介绍偏向锁,基于Mark Word实现 ,Mark Word 底下有介绍轻量级锁,所谓轻量级锁是基于对象头Mark Word实现的,这里升级为轻量锁其实就是Mark W

2020-09-15 17:47:13 316

原创 python xlrd 过滤excel里的隐藏行

可以过滤,前提是你的文件格式是xls,xlsx不可以记得加formatting_info=True,加上这个读出来的才是带格式的代码为wb=xlrd.open_workbook(file, formatting_info=True)wb_sheet = wb.sheet_by_index(0)hidden = wb_sheet.rowinfo_map[row_idx].hidden...

2020-09-08 09:57:43 1909

原创 最简单易懂的Spring boot,mybatis,sharding jdbc 分库分表教程

网上的基于配置文件的文章太多了且有些写的乱七八糟对新手极为不友好,本篇文章采用 全部 Java 编码的方式,来实现数据的分库分表,并力求做到简单明了工具准备安装Spring boot,我这里是通过idea安装, java8,maven这里采用mybatis逆向工程生成代码,生成插件选择Maven连接池采用阿里巴巴的Druid安装依赖pom文件如下,主要依赖有,mybatis-spring-boot-starter,druid-spring-boot-starter,sharding-jdbc

2020-08-31 10:40:16 370

原创 Spring boot 结合 Mybatis , 并用Mybatis逆向工程生成Model

先用Idea 安装Spring boot安装完,用以下内容替代pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http

2020-08-26 10:53:57 283 1

原创 git 命令行的使用

毕业快两年,前一年一直在使用git图形化管理工具,最近喜欢上了命令行操作,简单暴力美啊,随心所欲的感觉真的不错,以致于放弃了SourceTree等工具提到命令行,推荐一本书,《git权威指南》 ,适合边读边实践简单理解基础概念工作区:你的工作目录暂存区:git add 之后本地版本库:git commit 之后远程版本库:git push 之后常见命令git init 初始化一个git仓库,也就是在你的工作目录下创建一个.git文件夹git remote add 别名 仓库地址

2020-08-22 14:10:33 116

原创 手写trie树实现屏蔽字匹配

/** * 生成字典树 * @param $words */ protected function initTrie($words) { $wordArr = self::splitStr($words); $curNode = &$this->dict; foreach ($wordArr as $char) { // 初始化dict if (!is.

2020-08-22 14:08:51 210

原创 从源码角度看 Spring Bean 的创建时机

先说结论非懒加载的单例Bean在容器创建的过程中就创建好了多例或者懒加载的在使用的时候创建废话少说,上源码// Instantiate all remaining (non-lazy-init) singletons. 实例化所有剩余的(非懒加载的)单例finishBeanFactoryInitialization(beanFactory);// Trigger initialization of all non-lazy singleton beans...触发所有非懒加载单例bean的

2020-08-22 14:06:06 216

原创 Spring 源码编译遇到的坑

系统 : Macidea版本 :2019.3gradle :两个版本,4.10.3 和 5.5.1Spring 版本:v5.1.17.RELEASE按照官方给的说明:下载源码,先不要打开,进入源码目录,执行 ./gradlew :spring-oxm:compileTestJava,这个时候它会自动下载gradle 4.10.3 (好吧,我得承认,前前后后,gradle的版本我下载了n个, Spring 的源码版本我也下载了n个, 只有这个编译通过了)导入项目 Impor..

2020-08-22 14:04:43 1183

原创 java & 0xff

最近在tcp的基础上写一个自定义的协议,处理拆包粘包的时候发现一个情况数据是以字节流的形式在tcp中传输,所以,大于一个字节的数据类型,都要转为byte[] 的形式以int类型举例,在java中一个int类型的数据占4个字节,也就是需要new byte[4] int a = 9071; byte[] bytes = new byte[4]; bytes[0] = (byte) (a >> 24 ); // 拿到最高位的8位 b

2020-08-22 14:02:47 634 2

原创 Spring 是如何解决循环依赖的

一般想到这个问题,答案就是三级缓存,那么问题又来了,缓存的啥?用啥缓存的?为啥是三级不是二级?三级缓存指的其实就是三个Map。源码如下图/** Cache of singleton objects: bean name to bean instance. */private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);/** Cache of singleton fact

2020-08-22 14:01:40 212

原创 用栈解决括号匹配问题

问题: 输入一系列的括号,判断格式是否正确这里直接用java写好的栈,栈的实现较简单,不单独手写栈了,可以用数组实现栈,也可以用链表实现import java.util.Collection;import java.util.HashMap;import java.util.Set;import java.util.Stack;public class BracketMatch { /** * 用栈解决括号匹配的类似问题 * */ publ.

2020-08-22 14:00:47 348

原创 如何快速用docker搭建一个php7的开发环境

编写DockerfileFROM centos:7RUN wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \&& wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo \&& yum install epel-release -y \# 安

2020-08-21 14:59:14 626

原创 详解二叉搜索树

要点:增先判断树是否为空,为空则先init树从根节点遍历,如果大于根节点,找右边,否则找左边,递归,找到left或者right为null的插入删left != null 的找前继节点right == null 的找后继节点改先删后加查从根节点遍历,如果大于根节点,找右边,否则找左边找不到的抛异常前序遍历根左右中序遍历左根右后续遍历左右根层次遍历引入队列说明使用了lombok插件,安装方式:<depend

2020-08-21 14:57:51 102

原创 为什么mysql索引选择b+树作为底层存储结构?

这篇文章解决一个问题mysql 底层为什么是用b+树作为存储结构?为什么不是二叉树,红黑树,b树?我们先构造一个应用场景,我们有1kw的数据需要存储在一张表里面,那么我们怎么设计能让查询速度尽可能的快我们实验的可视化的数据结构皆从以下网站获取,地址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.htmlok,我们先来看下二叉树怎么存储这1kw数据,假设我有一张表,这张表里只有一个字段,他是递增的,看看用二叉树是什么情形于

2020-08-21 14:56:18 656

原创 tomcat 在Spring boot 中的启动时机

之前遇到一个问题,我们需要在Spring Boot 启动后做一些配置表刷新的工作,这个刷新比较耗时于是,我们实现了 xxRunner implements CommandLineRunner但发现一个问题,配置还未刷新,tomcat就对外服务了近来正在阅读源码,在源码里找到了答案简单来看,Tomcat 在 refreshContext 的时候便创建了,而 CommandLineRunner 的调用却在最后。但在 onRefresh 的时候,tomcat 只是完成了注册操作,并没有真的启动,真

2020-08-21 14:52:45 434

原创 redis 的事件调度

redis 的过期key 的删除策略有三种 惰性删除 定时删除 定期删除 上面三种的区别自行搜索,这里主要围绕 3 展开关于redis 有几个线程,上篇文章有介绍,但还有一个问题,redis 处理 过期key的线程和 接受请求的线程是不是同一个?如果是它们是怎么协调的首先,它们是同一个线程,具体的实现是通过利用时间分片的方式解决的redis 分为两种事件,时间事件和文件事件,文件事件也就是处理客户端请求,时间事件是指周期性的处理一些后台任务,后台任务不一定就..

2020-08-21 14:46:15 245

原创 redis 源码 编译

最近,想一个问题,redis 到底有几个线程,百思不得其解,为寻究竟,看源码,静态看源码后,有了大概结论,想证实一下,编译源码,debug,修改,测试准备工具macredis 5.0Clion编译记录下源码编译步骤 先下载 源码,我这边下载的是5.0 git clone https://github.com/redis/redis.git,切到 5.0 分支 安装 cmake,brew install cmake, 这个步骤,我执行了蛮久,中间出现的..

2020-08-21 14:42:32 1032

原创 redis 到底有几个线程

redis5.0 是 4 个,废话少说,上源码initServer();/* Ready to spawn our threads. We use the single argument the thread * function accepts in order to pass the job ID the thread is * responsible of. */for (j = 0; j < BIO_NUM_OPS; j++) { void *arg = (voi...

2020-08-21 14:41:15 1899

原创 php7 安装phalcon 扩展 -- docker centos7

网上安装 phalcon 扩展的文章较多,但用docker装了centos,在centos安装php扩展的文章比较少,这里记录一下,希望能给一些人带来帮助先说下问题,要安装和 php 版本匹配的 扩展,去pecl上看发现要求 版本大于7.2 了,于是,去github下载编译安装,也是可以解决任何版本的万金油。找到与你php版本匹配的分支,我这里是3.4.xhttps://github.com/phalcon/cphalcon.gitgit fetchgit b...

2020-08-21 14:40:01 902

原创 Linux 如何定位文件锁的问题

以php举例,在php里,session默认是文件存储的,同一个用户同一个cookie,session文件是固定的。以下php说的情况都是同一个用户同一个cookie那么,我们模拟一种情况,在一个多核CPU机器上,php-fpm设置多一点,保证,有进程可以处理请求,且资源打不满,同一个用户发起多个请求,其中一个请求 while(true)可以看到这里后续的请求都pending了我们查找下原因,通过 cat /proc/locks 来查看文件锁我们发...

2020-08-21 14:38:36 678

原创 Mac 下输入法的比较与选择,rime,鼠须管

选择尝试了以下几种: 自带的,真难用 搜狗,好用,但隐私问题严重 rime 一个开源的输入法 最终选择的是rime官网:https://rime.im/按住ctrl + ` 可以切换成简体拼音配置放点配置,在~/Library/Rime 下新建一个 squirrel.custom.yamlpatch: style: candidate_format: "%c %@  " color_scheme: purit...

2020-08-21 14:37:25 1821

hsdis-amd64.dylib

mac 专用,mac 专用,mac 专用,mac 专用,mac 专用,mac 专用,mac 专用,mac 专用,mac 专用,mac 专用,mac 专用

2020-09-22

空空如也

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

TA关注的人

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