自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何购买一只好的基金

提示:本文不构成任何投资建议,股市有风险,投资需谨慎什么样的基金才算是好基金涨的时候比大盘涨的多,跌的时候比大盘跌的少!!!基金的种类货币基金债券基金混合基金(可选)股票型基金(OMG,买它买它买它)But,请抛弃指数基金(被动型基金)虽然下图说被动型基金比主动型基金赚钱,But下图的描述是美股,并不是大A股看看大A股五年的指数走势前面都可以忽略了,只要知道购买股票型基金和混合型基金就可以了如何挑选一只好基金行业股票型基金一般都会专注在一个行业里面,也就是说如果

2020-06-18 09:24:00 1726 9

原创 Spring源码之ApplicationContextInitializer(二)

作用ApplicationContextInitializer是Spring的一个扩展接口,在spring框架刷新上下文(refresh方法)之前调用ApplicationContextInitializer的实现类完成一些ApplicationContext子类的初始化工作,例如加入一个数据源或者激活profile的环境,ApplicationContextInitializer实现类通常会实现一个Ordered接口或者使用@Order接口进行排序。配置方式spring.factories通过在M

2020-06-11 09:32:52 726

原创 Spring源码之SpringFactoriesLoader(一)

作用SpringFactoriesLoader可以加载jar包下META-INF下的spring.factories,把相关接口的实现按照key,value的形式加载到内存,一个接口的多个实现可以按照","进行分割。对程序员来说,利用SpringFactoriesLoader可以加载自定义的ApplicationListener、ApplicationContextInitializer、Configuration类等,spring-boot的starter就是通过SpringFactoriesLoade

2020-06-03 20:51:34 2059

原创 G1垃圾回收器

Region传统的垃圾收集器把堆内存划分成老年代和年轻代,每次回收的粒度都是整个分代,G1垃圾收集器把堆内存划分成了更小的Region,年轻代和老年代都拥有多个Region,堆内存中一个区域(Region)的大小可以通过-XX:G1HeapRegionSize参数指定,大小区间最小1M、最大32M,总之是2的幂次方。每个Region在逻辑上不是固定的年轻代和老年代,有可能现在是年轻代,下次垃圾回...

2020-04-09 18:31:59 593

原创 Linux内存之CPU如何访问内存

本文是从宏观上去阐述多个CPU如何访问内存,也就是多CPU访问内存的模型。大家可以先思考一个问题,如果有一块内存,四个CPU,那么这四个CPU如何访问内存?UMAUniform-Memory-Access简称UMA,叫做“均匀存储器存取”,在该模型下,所有的资源(CPU、内存、I/O等)都是共享的。不管有多少个CPU,访问内存的速度都是一样的,CPU都会连接到一条内存总线上,对内存的访问都要...

2019-09-28 15:08:40 384

原创 JVM之类加载过程

当我们在Java代码中写下new String()的时候,我们理所当然认为java会返回给我们一个String对象,但是在JVM背后做了很多事情,包括类的加载、对象内存的分配等等工作,这些工作对我们来说都是透明的,了解JVM背后做的这些事情能让我们更好的理解java的运行过程。今天我们就一起来看看jvm如何把一个类加载到内存中的。类的生命周期一个类在jvm中的生命周期如下图:其中链接又分为...

2019-09-28 13:56:20 112

原创 计算机系统总线结构

系统总线介绍系统总线就是把计算机中多个组件连接到一起的传输介质,负责设备间通信。系统总线上传送的信息包括数据信息、地址信息、控制信息,因此,系统总线包含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus)。在本文中,可能会有很多不同名称的系统总线,它们的功能都一样,只不过连接的设备不同而名称不同。计算机中的总线...

2019-09-08 17:46:37 10490 2

原创 多处理器内存架构

本文是从宏观上去阐述多个CPU如何访问内存,也就是多CPU访问内存的模型。大家可以先思考一个问题,如果有一块内存,四个CPU,那么这四个CPU如何访问内存?Uniform-Memory-AccessUniform-Memory-Access简称UMA,叫做“均匀存储器存取”,在该模型下,所有的资源(CPU、内存、I/O等)都是共享的,所以不管有多少个CPU,访问内存的速度都是一样的,CPU都会...

2019-09-07 15:51:17 736

原创 Linux内存结构

Linux内存结构Node首先, 内存被划分为结点. 每个结点关联到系统中的一个处理器,内核中表示为pg_data_t的实例. 系统中每个节点被链接到一个以NULL结尾的pgdat_list链表中<而其中的每个节点利用pg_data_tnode_next字段链接到下一节.而对于PC这种UMA结构的机器来说, 只使用了一个成为contig_page_data的静态pg_data_t结构。...

2018-12-20 18:58:07 2159

原创 Mysql Buffer Pool

Buffer Pool简介:Innodb维护了一个缓存区域叫做Buffer Pool,用来缓存数据和索引在内存中。Buffer Pool可以用来加速数据的读写,如果Buffer Pool越大,那么Mysql就越像一个内存数据库,所以了解Buffer Pool的配置可以提高Buffer Pool的性能。buffer pool的配置innodb_buffer_pool_size:缓存区...

2018-07-15 17:02:51 12720 1

原创 史上最全linux内存管理

Linux内存结构Node首先, 内存被划分为结点. 每个结点关联到系统中的一个处理器,内核中表示为pg_data_t的 实例. 系统中每个节点被链接到一个以NULL结尾的pgdat_list链表中<而其中的每个节点利用pg_data_tnode_next字段链接到下一节.而对于PC这种UMA结构的机器来说, 只使用了一个成为contig_page_data的静态pg_data...

2018-07-08 12:06:21 11872

原创 求职经历及感想

求职经历及感想我是大三暑假出来开始找工作的,差不过一年的时间,经历了两三家公司才找到自己比较满意的工作,这一年的时间里面我经历了大学四年里最低谷,最难熬的一段时间,所以想写下来回顾一下。 大一下进入了老师的实验室学习,其实当时的想法不是想着以后会写代码,只是因为实验室里可以学到我们专业的一些课程,所以觉得提前学了,后面可能会轻松一点。在大一暑假的时候运气好进入的学长的公司开始练习...

2018-05-20 11:32:53 5172

原创 深入理解计算机操作系统(2.4.2)

IEEE浮点表示IEEE浮点标准用V=(-1)^s * M * 2^E来表示一个数。 符号s:s是符号位,1表示负数,0表示正数。 尾数M:M是一个二进制小数,范围是1~2-δ,或者是0~1-δ。 阶码E:E的作用是对浮点数加权,这个权重是2的E次幂。C语言中的float和double的表示:根据exp的值,被编码的值可以分成三种不同的情况,最后一种又分两种: 规格化:当exp的值不全是0也

2017-08-29 19:39:27 394

原创 深入理解计算机操作系统(2.3.3)

补码的非 解释:这里的非并不是C语言中的~,而是表示该数的加法逆元。 加法逆元:对于一个数x,总有一个数y,使得x+y=0,那么y就是x的加法逆元,相反x也是y的加法逆元。对于TMin(w),它的加法逆元就是它本身,因为TMin(w)+TMin(w) = -2^(w-)+(-2^(w-1))= -2^w,-2^w产生了负溢出,截断就是就是0。计算加法逆元:对于w位数x,它的加法逆元等于~x+1

2017-08-17 22:52:19 494 1

原创 深入理解计算机操作系统(2.3.2)

补码数加法原理: 原理解释:补码数相加有两种溢出,一种是正溢出,一种是负溢出。正溢出两个正数相加可能会变成负数,例如,一个两个8位的数相加,一个是127(011111111),一个是1(00000001),结果为100000000,在补码中表示为-128。另外一种负溢出就是两负数相加得到一个正数,8位的-128(10000000)+(-1(11111111))=127(101111111),截去最

2017-08-16 22:52:32 322

原创 深入理解计算机操作系统(2.3.1)

无符号数加法两个w位数相加,需要w+1位才能表示,如果支持无限精度的运算,那么就不能对字长做限制。反之,则需要截掉高位的数。无符号数加法原理: 解释原理:如果x+y<2^w,那么不会产生溢出,正常计算。如果x+y>=2^w,那么w位的二进制就不能表示两个数字的和,那么就必须截断二进制,截断无符号数就是从最高位开始截断,截断最高位1,就相当于减去了2^w。检测是否溢出原理: 无符号数求反:

2017-08-14 23:30:33 247

原创 深入理解计算机操作系统(2.2.7)

截断数字无符号数截断当一个w位的数截断位一个k位的数时,我们会丢掉w-k位。简单说就是截断几位就从最高位开始去掉几位。 原理: 举例: 101111(47)截断两位,那么截断后的二进制为1111。 47%2^4 = 15,也就是1111。补码数截断原理: 当把一个数x截断为k位时,步骤:x mod 2^k。用补码解释二进制数。举例:将x=53191从int类型转为short类型

2017-08-13 23:41:03 363

原创 深入理解计算机操作系统(2.2.7)

扩展一个数字的位表示把一个无符号数转为一个更大的数据类型时,在前面加添加0。因为在无符号数前面添加0并不会改变无符号数的值。把一个补码数转为一个更大的数据类型时,在前面添加最高有效位。 举例:二进制数101扩展到1101 101 -3 1101 -3 原理: 原理推导: 原理解释: 101扩展到1101时,最高位相当于加了1000(-8),但是101原本的最高位100(-4),

2017-08-13 00:02:46 237

原创 深入理解计算机操作系统(2.2.4)

有符号数和无符号数之间的转换在C语言中,对于有符号数和无符号数之间的转换是从位级的角度来考虑的而不是从数级的角度来考虑的。简单说就是,对于有符号数和无符号数之间的转换,我们希望的是在可以表示的范围内,数值表示不变,但是C语言中,是二进制位不变,改变解释二进制位的方式。 举例: 一个8位的无符号数128,二进制位是10000000,转为一个8位的有符号数,二进制位依旧是1000000,但是表示的是

2017-08-09 23:12:08 262

原创 深入理解计算机操作系统(2.2.2 2.2.3)

无符号数编码定义: 举例: 范围:w位二进制表示的范围:0~2^w-1。 重要属性:每个介于0~2^w-1之间的数都有唯一一个w位的编码。 补码编码定义: 解释定义,就是最高位既是符号位,也参与运算,最高位为1时,表示负数。 一个有符号的8位int类型的数表示的范围是-128~127,负数的范围要比正数大1,就是负数最大可以表示为10000000,而正数只能表示为01111111

2017-08-08 22:46:25 350

原创 深入理解计算机操作系统(2.1.8 2.1.9)

C语言的逻辑运算三种逻辑运算符:||、&&、! ||:只要有一个表达式为真,该运算符的结果就是真。 &&:两个表达式全为真,该运算符的结果才为真。 !:取得相反的结果。 非零的值表示都为真(TRUE),零表示为FALSE。||和&&运算符,只有第一个参数能确定表达式的值,那么后一个参数将不会进行运算。因此表达式a&&5/a不会造成被零除。C语言中的位移运算左移:位向左边移动,左边的位直接截断

2017-08-06 14:55:55 299

原创 深入理解计算机操作系统(2.1.3)

字节序

2017-08-03 23:26:42 391

原创 深入理解计算机操作系统(2.1.1、2.1.2)

信息存储计算机中字节(8位二进制)是最小的内存单位,意思就是小于8位二进制的表示都是没有意义的。内存中每个字节都有唯一的数字来表示,称为地址。

2017-08-02 23:27:34 1215

原创 Let's Encrypt申请认证获取证书

Let’s Encrypt申请认证获取证书访问https://www.sslforfree.com/,输入你要申请证书的域名。选择Manual Verification(手动验证)。下载DownLoad File#1和DownLoad File#2文件。在Tomcat中建立.well-known文件夹,注意是.well-known,在windows下建立以点开头的文件需要在开头和末尾同时加上

2017-05-09 14:59:44 738

原创 Spring事物设置回滚点

@Transactional @RequestMapping("/show") public String show(){ userService.addUser(); Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();

2017-03-01 14:41:48 5207

原创 MySQL集群搭建及问题解决

192.168.81.147 管理节点192.168.81.143 192.168.81.144 数据节点192.168.81.145 195.168.81.146 SQL节点配置好五台虚拟机(CentOS 7.2)。在官网下载Mysql-Cluster二进制安装包(MySQL Cluster 7.5.5)。配置管理节点(192.168.81.147)。 (1) cd /var/tmp

2017-02-21 16:09:54 2270

原创 HashMap实现序列化

HashMap怎么实现序列化的前几天在看HashMap的源代码,看到了HashMap实现了Serializable接口(这个接口就是使得对象实例可以被保存成文件,在后续使用的时候可以直接从文件中把这个对象实例给读出来,对象中的数据还在),但是又发现了transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;,table是HashMap用来存储

2017-01-08 00:10:42 21324

原创 csf防火墙配置

服务器经常被人猜解,打开ssh的日志secure一看,都是尝试登录的。无语啊,唉,黑客你就不能安分点吗?好吧,虽然说用shell脚本来定时检测日志文件,统计一个时间段有多少次访问,超过一定的阀值就封掉IP,也是个可行之法。但是,,,但是,,好吧,我承认我比较懒,,,,,其实吧,,硬件防火墙才是王道,,,可是,,,好吧,大家都懂的。。。。。简单说说csf防火墙吧1 防止暴力破解密码,自动

2016-08-24 16:01:59 1649

原创 CentOS服务器安全

毋庸置疑,对于系统管理员,提高服务器的安全性是最重要的事情之一。因此,也就有了许多针对这个话题而生的文章、博客和论坛帖子。一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制的解决方案。这篇文章尽可能涵盖一些有所裨益的小技巧来帮助管理员保证服务器和用户安全。有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在本文将不会提及:务必保证系统是 最

2016-08-24 15:58:23 332

转载 centos下安装mysql5.7.10

1.先从www.mysql.com 网站上下载到最新版的mysql社区版安装包,我下到的是mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz 2.mysql安装包里是没有./configure & make这一套东东的,需要按照其说明文档进行操作,这里从安装包里看到的是INSTALL-BINARY,用UE打开后其中有一段shell>

2016-08-18 14:45:26 300

原创 linux搭建nginx

1.      安装yum install gcc gcc-c++,直接使用yum安装。2.      安装yum install pcre-8.21.tar.gz,直接使用yum安装。3.      安装yum -y install openssl openssl,直接使用yum安装。4.      解压nginx文件。5.      创建nginx组和nginx用户。(grou

2016-08-11 16:50:01 228

原创 liunx下搭建redis主从复制

linux下搭建redis主从复制。

2016-08-11 16:46:13 228

空空如也

空空如也

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

TA关注的人

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