- 博客(46)
- 收藏
- 关注
原创 c++结构体指针
先上代码#include<iostream>using namespace std;struct Student1 { int id = 200; int s = 100; char* name = "lisi";};void test2() { Student1 *stu = (Student1 *)malloc(sizeof(Student1)); int *var = (int *)stu; cout << "stu->id == " <
2021-10-06 10:47:09
192
原创 C++在DOS中实现密码框
#include <iostream>#include <conio.h>using namespace std;int main() { fflush(stdin); cout << "请输入密码:"; int idx = 0; char compare[20], c; while((c = getch()) != 13) { // 13是回车,8是删除 if(c == 8 && idx >
2021-09-25 22:14:31
218
原创 C++中创建对象的方式
C++中创建对象的方式无参数的情况隐式创建:A a1;显式创建:A a2 = A();通过new关键字创建,返回的是指针:A *a3 = new A();#include <iostream>using namespace std;class A { public: int id;}; int main() { A a1; a1.id = 1; A a2 = A(); a2.id = 2; A *a3 = ne
2021-09-25 17:17:41
239
原创 typedef struct 和 struct在C和C++的区别
typedef struct 和 struct在C和C++的区别在C++中,下列程序可以直接编译通过,即Student1、Student2、TYPEDEF_STU2都相当于一种类型#include <stdio.h>struct Student1 { int id; char* name;};typedef struct Student2 { int id; char* name;}TYPEDEF_STU2;int main() { Student
2021-09-25 13:03:53
125
原创 Java中的Thread、Runnable、Callable
Thread和Runnable区别Thread实际上是将线程和任务合并在了一起,Runnable是将线程和任务分离,Thread内部的run方法的具体实现如下,target即使通过构造器传过来的参数,如果不为空则调用target的run方法。public void run() { if (target != null) { target.run(); }}Callable的使用举例:调用run方法时,Callable的call方法就会被调用,并且结果会.
2021-09-25 08:16:57
103
原创 配置分布式集群
要点创建用户,配置sudo免密useradd csw:创建用户passwd csw:设置密码sudo vim /etc/sudoers:然后添加对应的项更改主机名,设置静态IPsudo vim /etc/sysconfig/network:设置主机名sudo vim /etc/udev/rules.d/70-persistent-net.rules:设置单个网卡sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0:设置静态IP关
2021-09-25 08:14:40
65
原创 Java的Class类和相关的类
Class类位于java.lang包中,是一个泛型类,任何类型都有class对象,包括int,void重要方法获取类的名称信息:Class类是一个泛型类,主要方法getName()、getSimpleName()、getCanonicalName()、getPackage()获取字段信息:getFields()、getDeclaredFields()、getField(String name)、getDeclaredField(String name)获取方法信息:getMethods()、g.
2021-09-24 19:46:37
143
原创 操作系统和Java中的线程
操作系统将线程分为了5种状态,如图解释初始状态:表示在语言层面创建了线程,但是没有和操作系统线程相关联可运行状态:线程已经和操作系统相关联,等待CPU调度运行状态:正在CPU上执行阻塞状态:线程被阻塞,等待其他事件唤醒该线程终止状态:线程执行结束。Java将线程分为6中状态(在Thread类中有一个枚举类State),如图解释NEW:线程被创建,但是没有调用start()方法RUNNABLE:调用了start()方法,涵盖了操作系统的可运行、运行、阻塞(..
2021-09-24 19:45:24
68
原创 公钥和私钥
把密码分为公钥和私钥,由于两个秘钥并不相同,所以称为非对称加密。私钥时用来对公钥加密的信息进行解密的,是需要严格保密的。公钥是对信息进行加密,任何人都可以知道的。通信过程:甲告诉乙,使用RSA算法进行加密。乙说好的。甲和乙分别根据RSA生成一对密钥,互相发送公钥。甲使用乙的公钥给乙发送加密报文信息。乙收到信息后,用自己的秘钥进行解密。5.乙用甲的公钥加密信息后发送给甲,然后甲使用私钥解密信息。...
2021-09-24 19:44:45
188
原创 Java中与并发相关的一些方法
Thread.sleep(long):从本线程调用,让当前线程睡眠,可能睡眠被interrupt方法打断而抛出InterruptedException异常。t1.interrupt():从其他线程调用,将t1线程的sleep、wait、yield打断,强制唤起t1线程。此时可以在t1线程内部的调用Thread.curruptThread().inInterrupted()查看是否被其他线程打断,并且只能使用一次(如果在睡眠时被打断,那么还是会为false,但是此时会抛出异常,可以在catch语句中再次调.
2021-09-24 19:43:50
59
原创 数据的编码
有符号数的三种8位编码方式,其中二进制整数最终都是以补码的形式出现的。正数/负数原码反码补码10000 00010000 00010000 0001-11000 00011111 11101111 111120000 00100000 00100000 0010-21000 00101111 11011111 1110+00000 00000000 00000000 0000-01000 00001111 11110
2021-09-24 19:42:43
132
原创 UML中类的关系
继承:extends(is-a)实现:implements(can-do)组合:类是成员变量(contains-a)。类关系中的组合是一种完全绑定的关系,所有成员共同完成一个使命,他们的生命周期是一样的。组合体现的是非常强的整体与部分的关系,共生共死,部分不能在整体之间共享。聚合:类是成员变量(has-a)。聚合是一种可以拆分的整体与部分的关系,是非常松散的暂时组合,部分可以被拆出来给另一个整体。比如,汽车与轮子之间的关系就是聚合关系,轮子模块包括钢圈、轮胎、气嘴。轮子拆卸下来用到另一个汽车上是没有问
2021-09-24 19:42:01
172
原创 Java类加载器
什么时候需要实现自定义类加载器?想加载非 classpath 随意路径中的类文件都是通过接口来使用实现,希望解耦时,常用在框架设计这些类希望予以隔离,不同应用的同名类都可以加载,不冲突,常见于 tomcat 容器注意自定义类加载器加载同一个类的时候,如果使用的是同一个类加载器,那么两个加载出来的class对象是相通的,如果不是同一个类加载器,则加载出来的class对象是不同的。因为每一个类加载器进行加载类时,都会检查自己是否加载过这个类,如果加载过,则直接返回class对象。.
2021-09-24 19:40:16
64
原创 Java中的垃圾回收器
设置JVM参数-XX:+PrintGCDetails -verbose:gc可以在控制台输出垃圾回收相关信息垃圾回收器串行垃圾回收器用法:-XX:+UseSerialGC作用:在新生代和老年代都使用串行化垃圾回收器,并且该回收器是单线程的,即同时最多只占用一个CPU。图示:吞吐量优先垃圾回收器用法:-XX:+UseParallelGC和-XX:+UseParallelOldGC,JDK1.8默认是开启的作用:CPU占有率可能会激增,并且是并行运行,会占用所有的CPU,以尽快将垃.
2021-09-24 19:39:45
97
原创 JVM调优工具
jstack <进程号>:查看栈区域jmap -heap <进程号>:查看堆空间的快照,会显示堆中每个区域的内存占用情况jconsole:图形化的界面,动态查看内存和CPU的占用情况,也可以连接远程Linux机器,不过需要设置在启动是设置JVM参数比如:java -Djava.rmi.server.hostname='ip地址' -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port='连接端口'.
2021-09-24 19:39:08
62
原创 Java中的语法糖
字符串相加:实际上是创建的StringBuilder进行操作默认构造器自动生成默认无参构造器,调用super();自动拆装箱基本类型和对应的包装类会自动转换。泛型在编译后会进行擦除,比如在List中,编译器会自动将加入List的对象转换为Object,在取出时会转换为对应类型枚举类举个例子 enum Sex { MALE, FEMALE }经过编译器转化后 public final class Sex extends En.
2021-09-24 19:38:40
57
原创 汇编语言笔记
汇编语言文章目录基础知识DEBUG工具寄存器指令1. 数据传送指令2. 算术指令3. 逻辑指令4. 串处理指令5.控制转移指令数据定义中断原码、补码、反码寻址方式标志位的状态MASM5.0组成代码注意小技巧常见符号的ASCii码**寄存器赋值**基础知识DEBUG工具R: 查看、改变CPU寄存器内容;D: 查看内存中的内容;U: 将内存中机器指令翻译成汇编指令;T: 执行一条机器指令;A: 以汇编指令的格式在内存中写入一条机器指令;E: 查看并改变内存中的内容;(数据)寄存器
2021-09-23 17:34:16
1221
原创 Scala笔记
Scala数据类型Scala是一门纯粹的面向对象的语言,每个值都是对象。数据类型数据类型描述Unit表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。Nullnull , Null 类型只有一个实例值null,只可以赋值给AnyRef类或者其子类NothingNothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。 当一个函数,我们确定没有正常的返回值,可以用Nothing来指定返回
2021-09-23 17:33:43
213
原创 Scala集合操作
Scala集合操作Seq数组类型Array是什么Array是一个长度不可变的序列,在底层是用Java的数组存储,存在于scala.collection.immutable包中,会自动导入定义// 该方法实际调用了的伴生对象的apply方法,从而省去了new关键字var arr1 = Array[Int](1, 2, 3, 4, 5)添加元素(数组长度是不可变的,所以添加元素时会返回一个新的数组)// 在尾部添加元素var arr2 = arr1 :+ 6// 在头
2021-09-23 17:33:08
120
原创 用Scala实现算子
class MyOperation(arr: Array[Int]) { def foreach(f: (Int) => Unit): Unit = { for (num <- arr) { f(num) } } def filter(f: (Int) => Boolean): Array[Int] = { var res = Array[Int]() for (num <- arr if f(num)) yield num
2021-09-23 17:32:28
110
原创 Canal笔记
进入mysql,输入show variables like 'bin_log'查看是否开启binlog如果没有,则在/etc/my.cnf文件中添加如下内容 [mysqld] server-id= 1 log-bin= mysql-bin binlog_format= row3.重启mysql,sudo service mysql restart4.输入show variables like 'bin_log'查看是否开启binlog5.创建一个文件夹存放canal,mkdir.
2021-09-23 17:31:05
138
原创 JVM笔记
划分类加载将类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有:_java_mirror 即 java 的类镜像,例如对 String 来说,就是 String.class,作用是把 klass 暴露给 java 使用_super 即父类_fields 即成员变量_methods 即方法_constants 即常量池_class_loader 即类加载器_vtable 虚方法表_itable 接口方法表如果这个
2021-09-23 17:30:16
63
转载 数据仓库系列文章整理
声明:此系列文章来自http://webdataanalysis.net/category/web-data-warehouse/数据仓库的价值相信大家都了解数据仓库的4个基本特征:面向主题的、集成的、相对稳定的、记录历史的,而数据仓库的价值正是基于这4个特征体现的:1、高效的数据组织形式面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组.
2021-09-23 17:29:26
395
原创 HBase基本操作
通过hbase shell进入命令行窗口基本操作查看list:查看有哪些表格式:list举例:list,输出所有的表count:查看表有多少列格式:count '表名'举例:count 'student'get:获取列的值格式:get '表名', '行键'或者get '表名', '行键', '列族(字段)'举例:get 'student', '1001'或get 'student', '1001', 'info:name创建create: 创建表.
2021-09-23 17:27:34
52
原创 Spark笔记
Spark区别和共性三者的区别RDDRDD一般和spark mlib同时使用RDD不支持sparksql操作DataFrame与RDD和Dataset不同,DataFrame每一行的类型固定为Row,每一列的值没法直接访问,只有通过解析才能获取各个字段的值,DataFrame与DataSet一般不与 spark mlib 同时使用DataFrame与DataSet均支持 SparkSQL 的操作,比如select,groupby之类,还能注册临时表/视窗,进行 sql 语句操作D
2021-09-23 17:26:48
296
原创 算法与数据结构笔记
文章目录算法动态规划算法递归算法回溯算法搜索算法分治算法与树有关位运算二分查找单调栈单调队列滑动窗口并查集随机化算法双指针排序算法模拟数学数据结构位图二叉树链表图论正则匹配表达式求值模板算法动态规划算法关键点(求最值,有重叠子问题(计算过的结果用dp保存),最优子结构(最后的解包含上一步的解))状态和选择# 初始化 base casedp[0][0][...] = base# 进行状态转移for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值:
2021-09-23 17:20:20
146
原创 MySQL给表添加create_time和update_time字段并且设置触发器
如何实现SQLALTER TABLE <表名>ADD COLUMN `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `<create_time前一个字段>`,ADD COLUMN `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `create_time`;S
2021-09-22 20:33:32
939
原创 基于MapReduce的WordCount
MapReduce是一种编程模型,将任务分为两个阶段:Map和Reduce,用户只需编写map()和reduce()两个函数就可以完成简单的分布式程序的设计。MapReduce能够解决的问题有一个共同特点:任务可以被分解成多个子问题,且这些子问题相对独立,彼此之间不会有牵制,待并行完成这些子问题后,任务便被解决。第一个MapReduce程序(WordCount)代码package edu.hut;import org.apache.hadoop.conf.Configuration;imp.
2021-09-22 20:32:07
90
原创 Hive与数据仓库
HiveHive主要实现了两个功能:提供了一个存储和管理元数据的HiveMetastore,以库和表的形式管理HDFS中的元数据。实现了一套将SQL转换为MapReduce程序的执行引擎。Hive执行原理所有的命令和查询都会进入Driver(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce任务(Job)来执行),当需要启动MapReduce任务(Job)时,Hive本身是不会生成Java MapReduce程序的。
2021-09-22 20:30:51
132
原创 Java动态代理
主要是实现动态增强接口的功能具体实现:写一个接口,接口中封装了客户端需要的操作。写一个委托类实现该接口写一个代理类实现InvocationHandler接口,这个类中存在委托类的引用客户端利用Proxy类的静态方法(反射技术),让接口关联代理实现类的对象,利用接口来调用方法,实际通过代理来访问委托类的方法。静态代理写一个接口A,定义一些功能写一个类B,实现接口写一个类C,实现接口,并且C的内部有一个B实例,构造方法中也需要传入一个B对象b,重写接口方法时实际上是调用b对象的对应方.
2021-09-22 00:30:15
92
原创 Java中的反射
要弄清楚反射,先得弄清楚类加载过程和Class类中的内容类加载过程ClassLoader类有三个具体实现,AppClassLoader,ExtClassLoader,BootStrapClassLoader,并且类中有一个parent对象指向父加载器。当执行类加载过程时,执行loadClass()方法,会对进行类的字符串进行加锁,并且先判断是否加载过这个类,如果父类不为空,则调用parent.loadClass();加载成功则直接返回Class对象。当加载失败时会执行findClass()方法.
2021-09-22 00:22:38
69
原创 算法与数据结构之二分查找
要点找出判断的条件何时退出循环举例无重复数字的普通二分查找找出判断的条件:用arr[mid]和target去比较。如果arr[mid] == target时,返回mid;如果arr[mid] > target时,说明要找的值在左边,right = mid - 1;arr[mid] < target时,说明要找的值在右边,left = mid + 1;如果退出循环时还没有找到匹配到的项,则直接返回-1。何时退出循环:left <= right时执行循环体。代码publ
2021-09-22 00:21:59
53
原创 算法与数据结构之递归
要点搞清楚递归函数的作用处理当前状态和下一递归状态的关系处理好递归的出口举例反转链表当前递归函数的作用:反转链表,并返回新的头结点。当前状态和下一递归状态的关系:递归调用ReverseList(head.next),函数会返回新的头结点,我们需要处理好当前状态和下一状态的关系。递归的出口:如果head或者head.next为null,直接返回head;代码 public class Solution { public ListNode ReverseLis
2021-09-22 00:21:20
104
原创 Flume的组成
组成Agent:是一个JVM进程(可通过top -p < pid > -H查看),分为Source、Channel、Sink。Source:负责接收发送到Flume的数据,将数据以消息的形式通过事务提交到Channel。重要的Source有:TailDir、exec、netcat。Channel:位于Source和Sink之间的缓冲区。重要的Channel有:File、Memory、Kafka。Sink:轮询Channel中的消息,通过事务从Channel拉取数据,然后输出到指定位置
2021-09-22 00:19:06
181
原创 Linux笔记
Linux文章目录文件处理解压文件搜索文件位置配置环境变量文件软链接ext文件系统重定向设备文件文本处理grepawksedcutvim重要文件挂起进程的处理防火墙好用的命令查看历史命令权限管理修改用户权限创建用户机器管理关闭错误的下载进程关闭和重启网络监听端口软件管理更改镜像大数据HDFSShell脚本变量定义变量变量的引用变量替换算术运算特殊参数∗和*和∗和@的比较单引号和双引号的区别分支判断条件判断语句循环函数举例刷题备注命令行快捷键命令对应的单词文件处理解压文件tar -zxvf sourc
2021-09-22 00:16:29
104
原创 MySQL笔记
文章目录常见问题常用函数常规操作Join神奇操作特别注意格式规范参考文章常见问题排名问题普通排名-- 定义一个变量curRank表示当前的排名-- 思路:遍历所有记录,因为没有重复元素,curRank每次自增1即可SELECT pid, name, age, @curRank := @curRank + 1 AS rankFROM players p, (SELECT @curRank := 0) qORDER BY age普通并列排名-- 定义两个变量prevR
2021-09-22 00:14:25
1486
原创 Java笔记
Java文章目录数组和容器类容器类源码1. ArrayList2. LinkedList3. Vector二维数组的创建给ArrayList赋值ArrayList和String[]互相转换其他转换比较器内部类静态内部类和普通内部类的比较简单内部类JVM对象的创建Class文件格式常量池内各数据的引用关系类加载过程运行时栈帧结构Java8新特性Lambda表达式(因为可以由编译器推断出来)方法引用流式编程多线程Java中的锁线程安全状态术语和关键字重要小知识求模Spring概念设计思路与作用分层(分层结构)
2021-09-21 14:45:24
92
原创 Hive窗口函数
窗口函数和排名函数窗口函数格式# 函数的格式函数 over( partition by 字段 ,order by 字段 window_clause )# window_clause的格式(rows | range) between (unbounded | [num]) preceding and ([num] preceding | current row | (unbounded | [num]) following)(rows | range) between current row
2021-09-21 14:34:08
141
原创 Git笔记
Git文章目录开始使用步骤配置GIt初始化Git添加将 Workspace 中的文件 add 到 Index area将 Index area 中的文件 Commit 到 Repository查看查看Git状态对比文件差异查看日志撤销撤销文件更改回退版本远程仓库开始创建SSH Key添加SSH Key关联远程仓库推送和克隆将本地仓库 Push 到远程仓库从远程仓库Clone查看查看远程仓库的信息分支查看分支创建分支切换分支合并分支到当前分支(改变的是自己,合并后可删除另一个分支)删除分支解决冲突冲突1:本
2021-09-21 14:32:09
58
原创 Maven配置代理和阿里云仓库
<!--代理元素包含配置代理时需要的信息 --><proxy> <!--代理的唯一定义符,用来区分不同的代理元素。 --> <id>myproxy</id> <!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 --> <active>true</active> <!--代理的协议。 协议://主机名:端口
2021-09-21 14:19:59
375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人