- 博客(21)
- 收藏
- 关注
原创 线程池的简单实现
线程池的简单实现线程池的组成有一个BlockingQueue阻塞队列用于保存还未执行的任务一个线程池保存执行任务的线程主线程向任务队列中添加任务,线程池中的线程不断从任务队列获取任务来执行,当任务全部执行完成就将自己移除线程池的实现BlockingQueue@Slf4j(topic = "c.BlockingQueue")class BlockingQueue<T> { //任务队列 private Deque<T> queue = new Arra
2021-08-21 17:30:19
177
原创 concurrenthashmap学习
ConcurrentHashMap源码添加操作ConcurrentHashMap源码学习添加操作put方法putVal方法spread方法initTable方法tabAt方法casTabAthelpTransfer方法transfer方法addCount方法sumCount方法fullAddCount方法putTreeVal方法lockRoot方法unlockRoot方法contendedLock方法balanceInsertion方法findTreeNode方法treeifyBin方法tryPresize
2021-08-20 11:45:52
280
原创 Treemap的红黑树的删除和添加
Treemap的红黑树操作TreeMap源码中的红黑树红黑树的添加put方法fixAfterInsertion方法红黑树的删除remove方法getEntry方法getEntryUsingComparator方法deleteEntry方法successorf方法fixAfterDeletion方法TreeMap源码中的红黑树红黑树的添加put方法public V put(K key, V value) { //保存根节点 Entry<K,V> t = root;
2021-08-18 19:14:30
133
原创 Hashmap红黑树源码学习
HashMap中的红黑树源码学习红黑树添加操作put方法public V put(K key, V value) { //调用putValue存值 return putVal(hash(key), key, value, false, true);}hash方法static final int hash(Object key) { int h; //让hash高16位和低16位进行异或得到hash值,这样得到的hash比较散列 //保证键可以均匀的分布在
2021-08-18 14:44:32
270
原创 Centos6.5下redis集群搭建
Redis-Cluster简介为何要搭建Redis集群。Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。Redis集群搭建的方式有多种,例如使用客户端分片、Twemproxy、Codis等,但从redis 3.0之后版本支持redis-cluster集群,它是R
2021-06-08 22:39:08
145
原创 区块链的java简单实现
区块链的简单实现定义区块链就是一串或者是一系列区块的集合,类似于链表的概念,每个区块都指向于后面一个区块,然后顺序的连接在一起。在区块链中的每一个区块都存放了很多很有价值的信息,主要包括三个部分:自己的数字签名,上一个区块的数字签名,还有一切需要加密的数据(这些数据在比特币中就相当于是交易的信息,它是加密货币的本质)。每个数字签名不但证明了自己是特有的一个区块,而且指向了前一个区块的来源,让所有的区块在链条中可以串起来,而数据就是一些特定的信息,你可以按照业务逻辑来保存业务数据。这里的hash指的就是数
2021-04-24 13:54:46
586
原创 密码学
密码学密码学基本概念密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。密码学有数千年的历史,从最开始的替换法到如今的非对称加密算法,经历了古典密码学,近代密码学和现代密码学三个阶段。密码学不仅仅是数学家们的智慧,更是如今网络空间安全的重要基础。分类:古典密码学:替换法:就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 w ,e 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。
2021-04-08 13:02:59
494
原创 PHP学习笔记
PHP学习笔记PHP简介PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP 可免费下载使用。第一个PHP程序新建一个hello.php文件,输入一段代码,运行。PHP基本代码格式为以 ‘<?php’ 开头,以 ‘?>’ 结尾,当php文件只是一个单独的文件并未嵌入到html页面中时,可以不用写?>结尾<?phpecho "Hello world!"; //echo表示打印内容到控制台?>PHP的变量变量以$开头加变量名称<
2021-03-05 22:35:01
291
原创 Node.js学习
Node.js学习笔记Node.js简介简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。Node.js第一个应用创建一个http服务器const http = require('http')const url=require('ur
2021-02-20 01:57:35
320
原创 Python学习笔记
Python学习笔记Python 简介Python 是一种解释型语言。Python 是交互式语言Python 是面向对象语言Python 是初学者的语言Python 发展历史Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。Python 源代码
2021-01-09 07:05:12
506
1
原创 Linux C语言指针与内存
Linux C语言指针与内存 编译程序gcc -g main.c -o main.out调试程序gdb ./main.out调试时查看程序源代码list或l从main函数入口单步调试start查看变量的值p 变量名查看变量的内存地址:p &变量名单步运行n 回车进入函数内部s 回车查看函数堆栈bt切换函数栈f 函数标号退出调试q打断点break 断点所在行打印出指定内存地址中的
2020-12-17 18:41:00
179
1
原创 Linux C语言编程基本原理与实践
Linux C语言编程基本原理与实践c语言文件类型main.c 源文件main.o 连接文件main.out 可执行文件main.h 声明文件vim操作//命令行模式下:a //在字符后插入字符i //在字符前插入字符shift+a //在行尾插入字符shift+i //在行首插入字符o //在下一行插入字符shift+o //在上一行插入字符x //删除当前字符shift+x //删除当前字符的前一个字符dd //删除当
2020-12-17 18:39:49
152
原创 工程师思维浅析
工程师思维的笔记从一个问题说起:使用c语言在屏幕上画出指定的图形,如三角形,矩形,菱形等图形如果我们一开始去做的话,会先想如何画一个矩形,根据过往的经验,会准备用双层for循环,然后很轻易的画出一个矩形,void rect(int a,int b,char c){ for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ printf("*"); } printf("\n"
2020-12-14 21:34:38
434
原创 Git和GitHub常用命令
Git学习笔记Git的两大特点版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。Git安装和创建本地版本库安装gitsudo apt install git在git文件夹下创建本地版本库git initGit常用命令创建版本git add filenamegit commit -m "version_name"查看版本git log //完整显示g
2020-12-10 18:39:27
85
原创 Ubuntu20.04 FTP服务器的搭建
Ubuntu20.04 FTP服务器的搭建输入命令 apt install vsftpd 安装vsftpd创建用户用于登录ftp服务器 adduser ftp-user1在/etc目录下创建文件allowed_users,用于存储允许登录ftp服务器的本地用户 echo ‘ftp-user1’ >> /etc/allowed_users修改ftp的配置文件,vim /etc/vsftpd.conf,打开文件,添加以下内容userlist_deny=NOuserlist_enabl
2020-11-30 00:06:00
5703
1
原创 Linux常用命令
Linux系统的常用命令系统信息压缩命令关机重启命令Linux管道vim常用命令用户及用户组管理文件权限管理文件操作命令系统信息arch显示机器的处理器架构uname -r 显示内核版本who 显示在线登录用户whoami显示当前操作用户hostname显示主机名du 查看目录大小df 查看磁盘大小ifconfig 查看网络情况ping 测试网络连通netstat 显示网络状态信息man 查看某个命令的帮助信息clear 清屏kill 杀死进程压缩命令gzipbzip
2020-11-29 23:44:41
104
1
原创 ubuntu远程使用ssh登录服务器
Ubuntu安装ssh服务以及密钥登陆安装ssh及密码登录使用密钥免密登录安装ssh及密码登录输入命令 apt install openssh-server安装ssh服务器输入命令 apt install openssh-client 安装ssh客户端输入 vim /etc/ssh/ssh_config 修改ssh客户端配置文件将PasswordAuthentication yes的注释去掉,表示需要密码登陆5. 由于服务器端配置文件注释比较多,可以去掉注释重新写入文件5.1复制
2020-11-29 22:16:55
2279
1
原创 Linux系统安装
制作Linux启动盘及安装Linux系统1.在Linux官网下载Linux版本的镜像iso文件2.下载rufus,用于制作Linux启动盘3.启动rufus,开始制作4.启动盘制作完成,关机重启,插入u盘,进入BIOS模式,选择u盘作为启动盘,进入Linux系统,...
2020-11-28 13:11:09
158
1
原创 Mybatis学习,自定义Mybatis的基本实现
Mybatis学习,自定义Mybatis1.创建maven项目,在pom.xml中导入需要的依赖 <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22<
2020-10-29 18:27:03
90
原创 魔术师发牌问题java双向循环链表实现
魔术师发牌问题,java双向循环链表实现魔术师发牌问题的简介:一位魔术师掏出一叠扑克牌,魔术师取出其中13张黑桃,洗好后,把牌面朝下。说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念一,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌,第二次数1,2,将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。第三次数1,2,3,前面二张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13张牌翻出,全部都准确无误。求解:魔术师手中牌的原始顺序是什么
2020-10-04 15:31:47
144
原创 java多线程,等待唤醒机制,生产者消费者问题
**# java多线程等待唤醒机制,生产者消费者问题涉及的类:包子铺类线程,消费者线程,包子类,测试类。包子铺线程:import java.util.Random;/** * @ClassName> - [ ] - ~~这里是引用~~ : SteamedBunRestaurant * @Description 本类功能:包子铺线程,生产包子 * @Author lzl * @Date 2020.10.03 * @Time 20:24 */public clas
2020-10-03 20:54:06
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人