- 博客(40)
- 收藏
- 关注
原创 zookeepe学习-客户端命令
zookeeper学习-客户端访问客户端启动由于只有一台机器,按照之前的步骤,分别在三个zookeeper根目录中启动了三个zookeeper节点组成的集群,server端口分别为2181、2182、2183.客户端启动的命令如下如果这里不加-server参数的话,默认去本机的2181端口查看是否有服务连接成功如下客户端命令创建节点我们可以看到,节点成功创建,同时,在另外一个节...
2019-10-03 04:06:26
203
原创 zookeeper学习-节点
一、集群角色Leader集群工作的核心事务请求(写操作)的唯一调度和处理,保证集群事务处理的顺序性,所有写操作,统一转发给leader,leader决定编号,执行操作,Follower(1)处理读请求,转发事务请求给leader(2)参与集群leader选举投票Observer处理读请求不会参与任何形式的投票二、节点属性dataVersion:数据版本号cversion:子...
2019-10-02 23:45:49
125
原创 《重构》读书笔记-20191001
Replace Method with Method Object处理场景有一个大型函数,其中有一段逻辑对多个局部变量进行了写操作(如果只有一个,可以用返回值,如果只是读,可以作为参数)。使得我无法对其进行提取函数的动作处理方法建立一个新类,根据待处理函数的用途,为这个类起个好名字。在新类中建立一个const字段,用来保存源函数所在的对象,我们将这个函数称为源对象。同时针对原函数的每个...
2019-10-01 23:14:38
151
原创 zookeeper学习-单机集群部署
集群模式集群模式有如下两种:1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程;2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程。在生产环境中,一般使用第一种形式。在本地环境中,一般使用第二种形式。下面我们演示下单台机器上如何实现集群部署。下载&解压http://mirrors.hust.edu.cn/apache/zooke...
2019-10-01 21:46:53
127
原创 一次mysql死锁问题的分析
首先问题始于生产环境的一批报错### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction### The erro...
2019-08-03 14:38:19
406
原创 ListHelper为什么不是线程安全的
java已经有很多有用的模块了。但是很多时候,一个类只能支持一部分操作,需要我们再不破坏线程安全的前提下,添加新操作,比如我们需要一个线程安全的list,给他加这么一个方法:缺少即加入有这么几种实现方式(1) 直接改源码(2)扩展类,继承原有的vector(3)扩展功能类:就是helper,原有模块作为其中的关键成员下面是一个错误的实现案例:Ja...
2019-03-04 04:37:21
299
原创 elasticsearch 中term与match区别
elasticsearch 中term与match区别两者的查询语句分别如下所示GET mall3/mall_info3/_search{ "query":{ "term":{ "refund_address":"上海市" } }}GET mall3/mall_info3/_count{ "query":{ "match":{
2018-12-18 16:36:44
4604
10
原创 JVM垃圾收集器概述
第一章 概述G1(Garbage First)垃圾收集器是当今垃圾回收技术最前沿的成果之一。早在JDK7就已加入JVM的收集器大家庭中,成为HotSpot重点发展的垃圾回收技术。同优秀的CMS垃圾回收器一样,G1也是关注最小时延的垃圾回收器,也同样适合大尺寸堆内存的垃圾收集,官方也推荐使用G1来代替选择CMS。G1最大的特点是引入分区的思路,弱化了分代的概念,合理利用垃圾收集各个周期的资源,解...
2018-11-19 00:18:46
255
原创 各种垃圾收集器整理
一、垃圾收集器示意图 (1)Serial收集器(2)ParNew收集器(3)Parallel Scavenge 收集器:使用复制算法,和ParNew的区别在于(1) parallel scanvenge 的关键点在于它关注的是吞吐量, 吞吐量 = 用户代码运行时间 / (用户代码运行时间 + 垃圾收集时间) 而与之对比的是,CMS收集器等的关注点是...
2018-11-18 23:37:34
230
原创 各种各样的编码
开发过程中我们一直会遇到各种各样的编码方式,basee64、utf-8、gbk等,这里做一个通俗易懂的梳理(转自其他微博)一、base64 百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。 什么是“可打印字符”呢?为什么要用它来传输8Bit字节...
2018-11-14 17:23:57
446
原创 数据库中的 varchar(255)
在字符集为UTF-8的情况下:MySQL | ver < 4.1: VARCHAR以字节为单位存储,所以假设全部为常用汉字(UTF-83字节编码长度),则VARCHAR(255)共可存放约85个汉字;MySQL | ver >= 4.1:VARCHAR以字符为单位存储,假设输入仍然为常用汉字,则VARCHAR(255)可以存放255个汉字。 另外,据我所知,My...
2018-11-14 16:46:37
15260
原创 Http状态码梳理
对网站管理工作者来说有个词不陌生,HTTP状态码,它是用以表示网页服务器HTTP响应状态的3位数字代码。状态码的第一个数字代表了响应的五种状态之一。 1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。 2XX系列:代表请求已成功被服...
2018-11-12 18:04:11
116
转载 VO、DTO、DO、PO概念,区别与联系
转自 http://blog.csdn.net/zjrbiancheng/article/details/6253232 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为
2017-11-20 12:28:44
203
转载 Spring mvc的注解是如何工作的
从前年开始使用spring和hibernate,mybatis等框架时,就转到注解来了。直到前些时,突然对注解开始好奇起来。为什么写注解就可以了?不需要大量配置文件呢?于是我查看了一些资料,对注解有了初步了解。引言:什么是注解?在IDE中,我们可以链接spring mvc中的@RequestMapping注解,发现以下源码[java] view plain copy print?@Target(
2017-11-19 23:43:41
1629
原创 JAVA注解
自定义注解定义注解后,需要有相应的注解解释器才有用。如dpsf的@Reference注解,定义的相关属性需要在启动的时候由相应的注解解释方法读取,才能对代码产生实质作用。
2017-11-18 22:30:34
161
原创 git 相关知识
(1)git config Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置: 1./etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。 2.~/.gitc
2017-11-18 21:51:49
214
原创 数据库相关
DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结
2017-11-18 20:21:30
264
原创 git从无到有过程
(1)github申请账号(2)本地安装git(3)安装git(4)本地建立目录并新建test.txt(5)远端建立相同目录(6)添加ssh密钥由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:使用以下命令生成SSH Key: $ ssh-keygen -t rsa -C "youremail@example.c
2017-11-17 13:54:47
307
转载 Volatile关键字
volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序:XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XBYTE[2]=0x58;对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化
2015-10-23 11:18:27
184
转载 unix/linux编程实践教程---sscanf函数的用法
函数原型: Int sscanf( const char * src, const char * format, ...);int scanf( const char * format, ...);这两个函数很相似,只是第一个函数以src作为输入,而第二个函数以标准输入STDIN读取输入;format 是格式控制字符串,它包含控制字符(如:%d,%i,%s等),空白字符(如:空格、制表符
2015-09-24 17:29:04
282
转载 unix/linux编程实践教程———open和fdopen的区别
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大
2015-09-24 16:26:07
1946
转载 unix/linux编程实践教程----I/O重定向和管道
(1)概念:I/O重定向:指针对一个进程,将其输入或者输出从标准I/O换成文件。 管道 :进程间通信。(2)I/O重定向:最低可用文件描述符原则:文件描述符的概念很简单,就是数组的索引。每个进程都有一系列与之相关联的文件,这些打开的文件保存在一个数组之中,文件描述符就是这个数组的下标。当打开文件时,为此文件安排的总是此数组中最低可用位置。
2015-09-24 09:17:36
390
转载 unix/linux编程实践教程------execve, execlp, execvp, execle比较笔记
(1)wait进程一旦调用了 wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息, 并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。wait(等待子进程中断或结束)相关函数 waitpid,fork表头文件#incl
2015-09-23 17:09:35
418
转载 unix/linux编程实践教程-Emacs常用命令整理
Emacs常用命令整理 [符号]--------------------------------------C- 意思是按住 Ctrol 键M- 意指 Meta 键 (键盘上若无Meta 键,则可以ALT 或 ESC 键来取而代之)DEL
2015-09-21 10:55:14
538
原创 算法学习日记----栈的编辑
#ifndef STRUCTSTACK#define STRUCTSTACK#include#includeusing namespace std;int counter=0;/***************定义错误类*****************/class illegal{public: illegal(){};};/*************
2015-09-19 13:29:49
212
转载 unix/linux编程实践教程------fcntl和ioctl
系统调用fcntl 和 ioctl 1,fcntl函数可以改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为 File Status Flag),而不必重新open文件。2,通过fcntl设置的都是当前进程如何访问设备或文件的访问控制属性,例如读、写、追加、非阻塞、加锁 等,但并不设置文件或设备本身的属性,例如文
2015-09-18 19:10:08
315
转载 unix/linux编程实践教程----fflush函数有什么作用
fflush函数有什么作用? 先来复习一个简单单词吧:flush(注意只有一个f):冲洗,冲刷,冲掉。 例句:I flushed the toilet and went back to work again. 下面,我们来看看一个简单的函数:fflush(file flush,注意有两个f), 先来看一个简单的程序:
2015-09-18 10:35:57
336
原创 unix/linux编程实践教程------学习笔记(五)
第六章:为用户编程:终端控制和信号终端驱动程序(终端就是人们用来和UNIX进程进行通信的设备,终端拥有一个可以让进程读取字符的键盘和可以让进程发送字符的显示器)的工作模式有三种:(1)规范模式:正常的模式,比如输入字符不立刻发送到程序,而是要接收到回车键;等(2)不规范模式:没有缓冲和编辑功能,但是ctrl+c和换行与回车之间的转换还有效.(3)RAW模式:所有对文字的处理都被关闭
2015-09-18 10:34:34
246
转载 unix/linux编程实践教程------学习笔记(四)
文件描述符和文件指针的区别 文件描述符就是open文件时产生的一个整数,直到一个索引作用,它用于UNIX系统中,用于标识文件。文件指针是指向一个FILE的结构体,这个结构体里有一个元素就是文件描述符。它用于ANSI C标准的IO库调用中,用于标识文件。 既然FILE中包含文件描述符元素,可以用fopen()直接获取指针fp,然后使用fp获得fp中所包含文件描述符fd的信息。
2015-09-16 15:47:15
189
转载 算法学习日记----虚函数与纯虚函数的区别
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plaincopy
2015-09-12 21:19:46
201
原创 算法学习日记
在写拷贝构造函数的时候,有个疑问:拷贝构造函数的参数是直接使用当前类的私有成员,这样可以吗?查书之后理解了,类的私有成员是针对其他调用这个类的代码所定义的,同一个类的不同对象之间可以互相调用私有成员.
2015-09-08 17:27:22
184
原创 算法学习日记 -----链表以及箱子排序算法
一、链表的构建C++链表的构建是分成了两部分,链表节点类和链表类。这两个class都是使用模板类的模式构建的。定义如下/*********链表节点类*********/templateclass Chainnode{friend Chain;private: T data; Chainnode *next;};/**********链表类********
2015-09-06 22:18:28
341
原创 unix/linux编程实践教程------学习笔记(三)
(一) qsort 函数用法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 各参数意义:1.待排序数组首地址 2.数组中带排序元素的数量 3.各元素占用空间大小 4.指向函数的指针(这里void * 如果函数参数不指定,就使用void *)
2015-09-06 08:48:00
358
原创 unix/linux编程实践教程------学习笔记(第二章)
第2.7节 提高文件i/o效率的方法-----使用缓冲在上一节编写who程序的过程中,我们词用的方法是从UTMP_FILE文件中每次读取sizeof(struct utmp)大小的数据,也就是每次读取一个结构体大小的登录信息。那么这样读取的效率非常低。这一节,我建立一个内存池,每次读取16个结构体大小的数据,这样的话我的程序使用系统调用的次数就变少了很多,有助于提高程序效率。程序如此/
2015-09-03 13:33:20
302
原创 unix/linux编程实践教程------学习笔记
从今天起开始学习基础linux知识。其实之前也曾经看过这几方面的内容。只不过一直了解不深刻。现在用鸟哥的书为教材,开始学习linux基本操作。大概花两个星期左右吧。看完这个以后,准备将主要工作放到linux上进行。后面的路线大致为:UNIX环境高级编程 ———nginx网络服务器的学习.......同时算法的学习同步进行,用的书是《算法竞赛入门经典》;(1)命令的格式 P117 ( 2
2015-08-29 15:33:33
814
原创 关于字符串加密程序中的一些问题
如题,见程序中的注释#include /*要加这一行才能用malloc*/#include#includeint find_char(char *new_char,char a){ int i=0; while(new_char[i]!='\0') { if(new_char[i]==a) return 1
2015-08-28 21:34:04
282
原创 算法学习日记 扑克牌比较 and 子网掩码对比
算法学习日记 扑克牌比较 and 子网掩码对比 问题:子网掩码格式为:255.255.255.0(11111111.11111111.11111111.00000000) IP地址举例为:192.168.0.254(11010000.10101000.00000000.11111110)如果两个IP地址与子网掩码按位与的结果相同,那么称这两个IP地址处于同一子网中
2015-08-25 17:09:44
305
转载 算法学习日记 字典法排序
算法学习日记 火车站进站问题 给定一个正整数N代表火车数量,0,接下来输入火车入站的序列,每辆火车以数字1-9编号,要求以字典序排序输出火车出站的序列号。 例如:输入为 3 1 2 3 输出为 123 132 213 231 321 问题分析:(1)如何对一组数找到他的全排列解答:采用字典序排列算法。用字典序法得到全排列的思路大概是这样的:我们需要有一个初始
2015-08-22 14:28:37
415
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人