- 博客(40)
- 资源 (5)
- 收藏
- 关注
原创 Git项目创建与项目迁移
工作中一直在用Git作为项目管理工具,最近发生了几次项目创建和项目迁移的作业,特在此总结一下,方便以后查看。目录一、项目创建1、远程服务器2、本地主机二、项目迁移1、在远程服务器创建项目2、项目迁移一、项目创建需求:在远程的Git服务器上创建新的项目,供项目组成使用。条件:Git远程服务器:git@192.168.1.311、远程服务器方便起见,直接在用户的home目录下创建在用户目录下创建目录git-test.gitmkdir git-test.g
2020-11-18 09:33:18
309
原创 Ubuntu 18.04 LTS设置固定ip
最近新装的Ubuntu 18.04 LTS搞起来还是略不习惯啊,相比之前的SUSE和CentOS差别还是比较大的。这不,想要配置个固定IP还搞了大半天。。。下面介绍一下在18.04上使用netplan命令配置静态IP。网卡信息配置在/etc/netplan/01-network-manager-all.yaml文件,需做如下配置:# Let NetworkManager manage all devices on this systemnetwork: version: 2 # rend
2020-10-17 17:11:35
1202
4
原创 C++ 容器适配器常用函数总结
C++标准库定义了三个顺序容器适配器:stack、queue和priority_queue。适配器是标准库中的一个通用的概念。容器、迭代器和函数都有适配器。 本质上,适配器是一种机制,能使某物的行为看起来像另外一种事物一样。一个容器适配器接受一种已有的容器类型,使其行为看起来像另外一种事物。例如:stack适配器接受一个顺序容器(array、forward_list除外),使其...
2020-04-08 16:55:35
307
原创 C++11 基础之多线程二
四、future和promise C++11创建了线程之后,我们不能直接从thread.joid()获取结果,C++11提供了future来获取异步操作的结果。这个结果是不能立即获取的,会在未来的某个时间内进行获取。而future和和promise的作用就是在线程之间传递数据。#include <future>void test_pro(promise<str...
2020-04-06 11:02:45
349
原创 C++ 11 基础之多线程一
C++11 增加了对多线程的支持,是多线程编程变得简单、易用。一、线程的创建#include <string>#include <thread>//用于时间延时 获取时间#include <chrono>#include <iostream>using namespace std;void test_create...
2020-04-04 17:43:21
158
原创 C++ 基础之string
一、string概述 string是一个字符串的类,它集成的操作函数足以完成大多数情况下的需要。我们甚至可以把它当作C++的基本数据类型。 头文件:#include <string> 注意:string.h和cstring都不是string类的头文件。这两个头文件主要定义C风格字符串操作的一些方法,如strcpy() 、strlen()等。string.h...
2020-04-02 11:43:23
488
原创 C++容器基础之vector
一、vector概述 vector是线性容器,元素按照线性顺序排序,容器中元素存储在一块连续的内存中,类似与数组,不过vector可以自动增长或缩小存储空间。 与数组相比:在自动处理容量的大小时会消耗更多的内存,当时vector可以提供和数组一样的性能,并且可以很好的调整存储空间的大小。 和其他标准的顺序容器相比:vector可以更有效的访问容器内元素,和在末尾添加、删...
2020-04-01 16:09:05
406
原创 C++容器基础之map详解
一、概述1、是什么 map是一类关联式容器,关联的本质在于元素值与某个特定的键相关联。增删节点对迭代器影响很小,对于迭代器而言,不可修改键,只能修改其对应的值。map内部自建一棵红黑树,对内部元素有自动排序的功能。 红黑树:一种二叉查找树,此外在每个节点上增加一个存储位表示节点的颜色,可以是red,也可以是black。通过对一条从根到叶子节点的路径上各个节点着色方式的限制,...
2020-03-31 11:15:55
393
原创 leetcode problem1---Two Sum
1、题目 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。2、思路 程序中定义了一个map,存储key-value,key是vector中的元素值,value是该元素值对应的index索引值。对vector中元素...
2019-08-10 16:09:43
141
转载 C++ 中static关键字总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#inclu...
2019-08-02 15:47:30
218
原创 C++ lambda表达式
lambda简介 一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个无名的内联函数。lambda表达式形式如下: [捕获列表] (参数列表)-> 返回值类型 {函数体} 捕获列表是一个lambda所在函数中定义的局部变量的列表(通常为空),与普通函数不同,lambda必须使用尾置返回来指定返回类型。参数列表和返回类型可以省略,但是必须包含捕获...
2019-08-01 16:22:22
230
原创 Base64前世今生
一、背景 早期的一些传输协议,例如传输邮件的SMTP协议,只能传输可打印的ASCII字符(ASCII码的范围是0~127)。导致原本8Bit字节码(范围是0~255)超出了可用范围。 例如:当邮件传输图片资源的时候,某一个Byte是10111100B,对应的十进制数是188,不在ASCII码的范围内,因此无法被传输。此时,Base64编码应运而生,它利用6bit字符...
2019-06-08 14:48:04
411
原创 slf4j和Log4j
作为一个程序员,我想大家应该知道日志对于一个程序的重要性。很多情况下,日志是我们了解程序如何执行的唯一方式。对于强大的Java语言来讲,在日志方面有很多成熟的开源框架可以被直接使用,如:JDK自带的原生日志框架java.util.logging、Log4j、LogBack、Log4j2。而我们在使用日志框架的时候,建立使用日志门面的方式。那么问题来了,日志门面是什么?实际上,SLF...
2019-04-11 12:03:05
169
原创 socket通讯,长度+数据
需求:socket通讯,传输的数据格式为长度(4个字节)+数据,其中此长度不包含本身的长度服务端: ServerSocket ss = new ServerSocket(12345); Socket s = ss.accept(); InputStream is = s.getInputStream(); DataInputS...
2019-03-18 10:17:16
2306
转载 Java 字节读取流的read方法返回int的原因
为什么InputStream.read()读取一个byte确返回一个int呢?java 字节读取流的read方法一次读一个byte但返回int的原因读取二进制数据按字节读取,每次读一个字节(byte)。read()的底层是由C++实现的,返回的是unsigned byte,取值范围为[0~255],在java中没有对应的类型,所以只能用int类型接收,由Java接收得到的就是int[0...
2019-03-11 20:54:35
2187
转载 在java中String类为什么要设计成final?
转载地址:在java中String类为什么要设计成final?String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平!1. 什么是不可变?String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。...
2019-03-06 16:00:36
153
原创 java中i=i++
1、i++和++i自增的两种形式:i++表示先赋值后加1,++i表示先加1后赋值2、i=i++,看如下代码:public class Test { public static void main(String[] args) { int i = 0; i = i++; System.out.println("i=" + i);...
2019-02-20 15:33:32
2198
原创 HashMap实现原理及源码分析
一、什么是哈希表 哈希表和数组、链表、二叉树一样,是一种数据结构。和其他数据结构相比,哈希表在进行添加、查找、删除等操作时具有十分好的性能,在不考虑哈希冲突的情况下,只需要一次定位即可完成操作,时间复杂度为O(1)。 计算机底层的物理存储结构分为两种:顺序存储和链式存储。我们一般意义上说的栈、队列等结构是逻辑结构。数组中查找元素是根据index查找,一次定位即可实现...
2018-11-22 21:40:27
172
原创 netty心跳检测,定时任务
刚接触Netty,写的不好敬请谅解。最近有一个需求,需要从客户端客户端定时的向服务器发送数据,通知服务器自己的一些状态信息,比如本地的cup使用率,内存使用率等信息,大体实现如下: 是用到了java提供的线程池, newScheduledThreadPool:定长线程池,支持定时及周期性任务执行。TestTask.java:public clas...
2018-10-20 10:07:17
3241
原创 netty拆包粘包
一、TCP拆包粘包 TCP是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的包进行发送,这就是所谓的TCP拆包粘包的问题。二、问题的解决策略:1、消息定长,例如每个报文的大小是固定长度200字...
2018-09-21 22:19:28
263
原创 单例与多线程
单例的两种实现:1、立即加载(饿汉模式)public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return s...
2018-09-18 21:25:11
128
原创 java线程,interruped()和isInterrupted()
首先看一下中文解释及API实现:1) interrupted():测试当前线程是否已中断。public static boolean interrupted() { return currentThread().isInterrupted(true);}是静态方法,属于类。2)isInterrupted():测试线程是否已中断public boolean i...
2018-09-18 14:44:45
362
原创 jsch实现sftp秘钥登录,传输文件
需求:实现文件的上传和下载,对安全性有较高的要求。在ftp与sftp中选择sftp,SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议,可以为文件提供一种安全的加密方法。跟ftp的语法功能几乎一模一样。sftp传输方式采用了加密/解密技术,故效率要比ftp低很多,当对安全性要求更高的时候,代替ftp使用使用秘钥方式建立连接,秘钥配置如下:假设服...
2018-08-07 15:00:49
8360
3
原创 Java 对象与垃圾回收
当程序创建对象、数组等引用型实体的时候,系统会在堆内存中分配一块内存区,对象保存在这块内存区中,当该内存不再被任何引用变量引用时,这块内存就变成了垃圾,等待垃圾回收机制进行回收。垃圾回收机制的特征:1、只负责回收堆内存中的对象,不会回收任何的物理资源(数据库连接、网络IO等资源)。2、程序无法精确控制垃圾回收的进行,垃圾回收会在合适的时候进行当对象永久性失去引用后,系统会在合适...
2018-08-06 15:41:00
551
转载 Java的native关键字
今天研究Java基础类库,Object类的时候,发现了一个关键字:native咦?这是个什么东东?它认识我,我可不认识它!嘿嘿,没关系,baidu一下。 java native关键字 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现...
2018-07-20 15:20:34
127
原创 使用jsch中ChannelShell,使用readline方法读取执行结果时,被阻塞
最近使用jsch中的ChannelShell,使用BufferedReader的readLine()方法读取返回结果,代码如下:while ((line = dataIn.readLine()) != null){ stdout.add(line);}执行的时候,代码一直在while循环中,无法跳出该循环。原因: 在代码中,使用的是ChannelShell...
2018-07-17 16:31:34
9664
3
原创 Linux下,mysql重置密码以及转储、导入sql文件
一、mysql重置密码root用户登录Linux1、修改/etc/my.cnf文件 #vi /etc/my.cnf 在[mysqld]后添加 skip-grant-tables2、重启mysql服务 如果是mysql:/etc/init.d/mysqld restart 如果是mariadb:systemctl restart mariadb3、登录数据库 mysq...
2018-06-09 10:05:43
621
原创 后台运行Linux服务器程序
Problem: 用XShell远程连接Linux服务器,使用命令开启服务器程序,但是当我把XShell关掉的时候,服务器程序也跟着关掉了,如何让Linux服务器上的程序一直执行呢?Solution: 在Linux命令中,有一个nohup命令,可以让程序后台执行,就算你把XShell关掉,程序依然执行,现在讲解一下,nohup命令的用法。 nohup 命令 用途:不挂...
2018-05-17 10:06:20
802
原创 Zookeep启动异常:Error contacting service. It is probably not running
我的zk集群有三台机器,其中一台机器突然就挂了,zk启动的时候没有报错,但是查看zk状态的时候报错Error contacting service. It is probably not running从网上搜索这个异常的解决方法,尝试了一些方案,但是问题仍然未解决。 之后想起来查看zk的日志,日志如下: 从日志来看,应该是配置文件出
2018-05-09 15:49:57
437
转载 设计模式之策略模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系...
2018-04-30 10:39:09
117
转载 并发模型:Future模式
多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLocal、信号量等在并发控制中发挥着巨大的作用。这里重点介绍第一种并发——Future模型。一、什么...
2018-04-28 16:35:50
189
原创 java获取本地真实ip
一、问题在获取本地ip这个问题上遇见了问题。1、InetAddress.getLocalHost()得到的是VMnet8的ip地址,而并非本地真实ip。2、InetAddress.getLocalHost().getHostAddress()获取到的是127.0.0.1二、解决方法接下来上正确代码:StringBuilder sb = new StringBuilder(); tr...
2018-04-28 11:31:24
6747
2
原创 log4j自动加载
在项目中,log4j的jar导入之后,会自动加载配置文件。看源代码: 快捷键,进入org.apache.log4j.Logger中的getLogger()方法: 继续,进入LogManager类中,查看该类的静态代码块: 到这里我们可以看到,加载该类的时候,会进行判断,找不到配置的话,log的配置的话,会优先找log4j.xml文件,然后再去找log4j.properties文件...
2018-04-27 11:10:37
533
转载 ZooKeeper原理及使用
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。Z...
2018-04-19 11:03:55
191
原创 zookeeper状态和事件类型以及znode类型
事件类型(znode节点相关):①EventType.NodeCreated:节点创建②EventType.NodeDataChanged:节点数据变更③EventType.NodeChildrenChanged:子节点变更④EventType.NodeDeleted:节点删除状态类型(客户端实例相关):①KeeperState.Disconnected:未连接②KeeperState.SyncC...
2018-04-18 10:04:38
1067
原创 zookeeper集群搭建
环境:win10下的vmware12虚拟机,centos7(简易版)一、前期准备 1、jdk1.8安装,我的另外一篇文章有讲解。 2、下载安装包,我下载的是 3、三台虚拟机的ip是192.168.136.130,192.168.136.131,192.168.136.132二、安装 1、将安装包拷贝到centos中,使用的是SSH连接的centos,拷贝到/usr/loca...
2018-04-18 10:02:02
173
原创 win10 上vmware12虚拟机centos7安装jdk
环境:win10 上vmware12虚拟机centos7简易版本Jdk: jdk-8u11-linux-x64.tar(网站 --》https://download.youkuaiyun.com/download/qq1137623160/10046280)工具:ssh (用来拷贝文件)步骤:1、 在/usr/下新建文件夹java,使用ssh将jdk拷贝到/usr/java/目录下2、 cd /usr/j...
2018-04-13 11:06:20
447
原创 C++往string数据前添加四个字节的首部表示数据长度
采用移位的形式实现:int realLength = dataLength + sizeof(int);//dataLength是数据的长度char *sendData = new char[realLength];//sendData是最后得到的数据 memset(sendData, 0, realLength*sizeof(char));//sendData初始化int num
2018-01-07 08:16:47
1369
原创 Linux下C++动态库
本人是刚毕业的大学生一枚,这是写的第一篇博客,若有不对的地方,恳请指正!由于工作原因,不得已在Linux下开发项目,而且还是用C++,对于C++,本人是有一些白痴的。项目完成,在此做一下总结,给自己一个交代。首先先对动态库方面的只是做一个总结 1、动态库的简单介绍 首先,动态库就是动态链接库,本人有些懒,一下都成为动态库。在Linux下,动
2017-01-25 15:00:32
499
c++primer高清中文版-第5版.zip
2019-07-15
notepad++json插件
2018-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人