鲁春利的工作笔记 ,好记性不如烂笔头
Java客户端:
org.apache.hadoop.hbase.client.HTable类:该类的读写是非线程安全的,不再作为client API提供给开发用户使用,建议通过Table类替代。
/**
* Creates an object to access a HBase table.
* @param conf Configuration object to use.
* @param tableName Name of the table.
* @throws IOException if a remote or network exception occurs
* @deprecated Constructing HTable objects manually has been deprecated.
* {@link Connection} to instantiate a {@link Table} instead.
*/
@Deprecated
public HTable(Configuration conf, final String tableName)
throws IOException {
this(conf, TableName.valueOf(tableName));
}
org.apache.hadoop.hbase.client.Table类:
org.apache.hadoop.hbase.client.HConnectionManager类:
org.apache.hadoop.hbase.client.HBaseAdmin类:
@InterfaceAudience.Private
@InterfaceStability.Evolving
public class HBaseAdmin implements Admin {
private static final Log LOG = LogFactory.getLog(HBaseAdmin.class);
// 略
@Deprecated
public HBaseAdmin(Configuration c)
throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
// Will not leak connections, as the new implementation of the constructor
// does not throw exceptions anymore.
this(ConnectionManager.getConnectionInternal(new Configuration(c)));
this.cleanupConnectionOnClose = true;
}
// 略
}
# 说明:HBaseAdmin不在作为客户端API使用,标记为Private表示为HBase-internal class。
# 使用Connection#getAdmin()来获取Admin实例。
org.apache.hadoop.hbase.client.ConnectionFactory类:
@InterfaceAudience.Public
@InterfaceStability.Evolving
public class ConnectionFactoryextends Object
// Example:
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("table1"));
try {
// Use the table as needed, for a single operation and a single thread
} finally {
table.close();
connection.close();
}
客户端使用示例:
package com.invic.hbase;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.PageFilter;
import org.apache.hadoop.hbase.util.Bytes;
/**
*
* @author lucl
* HBase的配置实例
*
*/
public class HBaseManagerMain {
private static final Log LOG = LogFactory.getLog(HBaseManagerMain.class);
// 在Eclipse中运行时报错如下
// Caused by: java.lang.ClassNotFoundException: org.apache.htrace.Trace
// Caused by: java.lang.NoClassDefFoundError: io/netty/channel/ChannelHandler
// 需要把单独的htrace-core-3.1.0-incubating.jar和netty-all-4.0.5.final.jar导入项目中
private static final String TABLE_NAME = "m_domain";
private static final String COLUMN_FAMILY_NAME = "cf";
/**
* @param args
*/
public static void main(String[] args) {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.master", "nnode:60000");
conf.set("hbase.zookeeper.property.clientport", "2181");
conf.set("hbase.zookeeper.quorum", "nnode,dnode1,dnode2");
HBaseManagerMain manageMain = new HBaseManagerMain();
try {
/**
* HTable类读写时是非线程安全的,已经标记为Deprecated
* 建议通过org.apache.hadoop.hbase.client.Connection来获取实例
*/
Connection connection = ConnectionFactory.createConnection(conf);
Admin admin = connection.getAdmin();
/**
* 列出所有的表
*/
manageMain.listTables(admin);
/**
* 判断表m_domain是否存在
*/
boolean exists = manageMain.isExists(admin);
/**
* 存在就删除
*/
if (exists) {
manageMain.deleteTable(admin);
}
/**
* 创建表
*/
manageMain.createTable(admin);
/**
* 再次列出所有的表
*/
manageMain.listTables(admin);
/**
* 添加数据
*/
manageMain.putDatas(connection);
/**
* 检索数据-表扫描
*/
manageMain.scanTable(connection);
/**
* 检索数据-单行读
*/
manageMain.getData(connection);
/**
* 检索数据-根据条件
*/
manageMain.queryByFilter(connection);
/**
* 删除数据
*/
manageMain.deleteDatas(connection);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 列出表
* @param admin
* @throws IOException
*/
private void listTables (Admin admin) throws IOException {
TableName [] names = admin.listTableNames();
for (TableName tableName : names) {
LOG.info("Table Name is : " + tableName.getNameAsString());
}
}
/**
* 判断表是否存在
* @param admin
* @return
* @throws IOException
*/
private boolean isExists (Admin admin) throws IOException {
/**
* org.apache.hadoop.hbase.TableName为为代表了表名字的Immutable POJO class对象,
* 形式为:。
* static TableName valueOf(byte[] fullName)
* static TableName valueOf(byte[] namespace, byte[] qualifier)
* static TableName valueOf(ByteBuffer namespace, ByteBuffer qualifier)
* static TableName valueOf(String name)
* static TableName valueOf(String namespaceAsString, String qualifierAsString)
* HBase系统默认定义了两个缺省的namespace
* hbase:系统内建表,包括namespace和meta表
* default:用户建表时未指定namespace的表都创建在此
* 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分。
*
*/
TableName tableName = TableName.valueOf(TABLE_NAME);
boolean exists = admin.tableExists(tableName);
if (exists) {
LOG.info("Table " + tableName.getNameAsString() + " already exists.");
} else {
LOG.info("Table " + tableName.getNameAsString() + " not exists.");
}
return exists;
}
/**
* 创建表
* @param admin
* @throws IOException
*/
private void createTable (Admin admin) throws IOException {
TableName tableName = TableName.valueOf(TABLE_NAME);
LOG.info("To create table named " + TABLE_NAME);
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
HColumnDescriptor columnDesc = new HColumnDescriptor(COLUMN_FAMILY_NAME);
tableDesc.addFamily(columnDesc);
admin.createTable(tableDesc);
}
/**
* 删除表
* @param admin
* @throws IOException
*/
private void deleteTable (Admin admin) throws IOException {
TableName tableName = TableName.valueOf(TABLE_NAME);
LOG.info("disable and then delete table named " + TABLE_NAME);
admin.disableTable(tableName);
admin.deleteTable(tableName);
}
/**
* 添加数据
* @param connection
* @throws IOException
*/
private void putDatas (Connection connection) throws IOException {
String [] rows = {"baidu.com_19991011_20151011", "alibaba.com_19990415_20220523"};
String [] columns = {"owner", "ipstr", "access_server", "reg_date", "exp_date"};
String [][] values = {
{"Beijing Baidu Technology Co.", "220.181.57.217", "北京", "1999年10月11日", "2015年10月11日"},
{"Hangzhou Alibaba Advertising Co.", "205.204.101.42", "杭州", "1999年04月15日", "2022年05月23日"}
};
TableName tableName = TableName.valueOf(TABLE_NAME);
byte [] family = Bytes.toBytes(COLUMN_FAMILY_NAME);
Table table = connection.getTable(tableName);
for (int i = 0; i < rows.length; i++) {
System.out.println("========================" + rows[i]);
byte [] rowkey = Bytes.toBytes(rows[i]);
Put put = new Put(rowkey);
for (int j = 0; j < columns.length; j++) {
byte [] qualifier = Bytes.toBytes(columns[j]);
byte [] value = Bytes.toBytes(values[i][j]);
put.addColumn(family, qualifier, value);
}
table.put(put);
}
table.close();
}
/**
* 检索数据-单行获取
* @param connection
* @throws IOException
*/
private void getData(Connection connection) throws IOException {
LOG.info("Get data from table " + TABLE_NAME + " by family.");
TableName tableName = TableName.valueOf(TABLE_NAME);
byte [] family = Bytes.toBytes(COLUMN_FAMILY_NAME);
byte [] row = Bytes.toBytes("baidu.com_19991011_20151011");
Table table = connection.getTable(tableName);
Get get = new Get(row);
get.addFamily(family);
// 也可以通过addFamily或addColumn来限定查询的数据
Result result = table.get(get);
List cells = result.listCells();
for (Cell cell : cells) {
String qualifier = new String(CellUtil.cloneQualifier(cell));
String value = new String(CellUtil.cloneValue(cell), "UTF-8");
// @Deprecated
// LOG.info(cell.getQualifier() + "\t" + cell.getValue());
LOG.info(qualifier + "\t" + value);
}
}
/**
* 检索数据-表扫描
* @param connection
* @throws IOException
*/
private void scanTable(Connection connection) throws IOException {
LOG.info("Scan table " + TABLE_NAME + " to browse all datas.");
TableName tableName = TableName.valueOf(TABLE_NAME);
byte [] family = Bytes.toBytes(COLUMN_FAMILY_NAME);
Scan scan = new Scan();
scan.addFamily(family);
Table table = connection.getTable(tableName);
ResultScanner resultScanner = table.getScanner(scan);
for (Iterator it = resultScanner.iterator(); it.hasNext(); ) {
Result result = it.next();
List cells = result.listCells();
for (Cell cell : cells) {
String qualifier = new String(CellUtil.cloneQualifier(cell));
String value = new String(CellUtil.cloneValue(cell), "UTF-8");
// @Deprecated
// LOG.info(cell.getQualifier() + "\t" + cell.getValue());
LOG.info(qualifier + "\t" + value);
}
}
}
/**
* 安装条件检索数据
* @param connection
*/
private void queryByFilter(Connection connection) {
// 简单分页过滤器示例程序
Filter filter = new PageFilter(15); // 每页15条数据
int totalRows = 0;
byte [] lastRow = null;
Scan scan = new Scan();
scan.setFilter(filter);
// 略
}
/**
* 删除数据
* @param connection
* @throws IOException
*/
private void deleteDatas(Connection connection) throws IOException {
LOG.info("delete data from table " + TABLE_NAME + " .");
TableName tableName = TableName.valueOf(TABLE_NAME);
byte [] family = Bytes.toBytes(COLUMN_FAMILY_NAME);
byte [] row = Bytes.toBytes("baidu.com_19991011_20151011");
Delete delete = new Delete(row);
// @deprecated Since hbase-1.0.0. Use {@link #addColumn(byte[], byte[])}
// delete.deleteColumn(family, qualifier); // 删除某个列的某个版本
delete.addColumn(family, Bytes.toBytes("owner"));
// @deprecated Since hbase-1.0.0. Use {@link #addColumns(byte[], byte[])}
// delete.deleteColumns(family, qualifier) // 删除某个列的所有版本
// @deprecated Since 1.0.0. Use {@link #(byte[])}
// delete.addFamily(family); // 删除某个列族
Table table = connection.getTable(tableName);
table.delete(delete);
}
}
转载于:https://blog.51cto.com/luchunli/1737117
你可能感兴趣的:(HBase-1.0.1学习笔记(五)HBase Java客户端)
每天10道Java基础面试题,涵盖核心知识点,附简洁代码示例,掌握快速记忆的方法
小小鸭程序员
spring boot java 后端 开发语言 spring cloud
1.JDK、JRE、JVM区别JDK:开发工具包(含JRE+编译器)JRE:运行环境(含JVM+类库)JVM:执行字节码的虚拟机2.==与equals()区别Stringa="abc",b=newString("abc");System.out.println(a==b);//false(地址不同)System.out.println(a.equals(b));//true(内容相同)3.Stri
【Node.js】模块分类与 `require` 用法详解
Peter-Lu
# NodeJS node.js javascript 前端
文章目录一、Node.js模块概述1.模块的定义2.模块的作用二、Node.js模块的分类1.核心模块2.文件模块3.第三方模块4.全局模块三、`require`的用法详解1.`require`的基本用法2.模块导出机制3.模块的缓存机制4.`require`的动态引入四、模块的实际应用场景1.项目结构优化2.复用代码五、总结Node.js是一个强大的JavaScript运行环境,广泛应用于服务器
【JVM】卸载JDK后问题could not open …jvm.cfg
=PNZ=BeijingL
Java jvm
问题现象MicrosoftWindows[版本10.0.18363.592](c)2019MicrosoftCorporation。保留所有权利。C:\Users\User>java-versionError:couldnotopen`C:\ProgramFiles\Java\jre6\lib\amd64\jvm.cfg'出现这种情况大多是因为电脑上之前安装过JDK,卸载后没有处理完成造成卸载重装
【Java】Devops、CI/CD、jenkins
开心星人
JavaWeb java java devops ci/cd
https://heuqqdmbyk.feishu.cn/docx/ITjadnZfAoxauXxqgiccu9b6nGghttps://www.bilibili.com/video/BV1j8411N7Bm?spm_id_from=333.788.videopod.episodes&vd_source=6bec1f5b9fe3a91a9829e3a951692cc5&p=169CI/CD是近年来
JVM GC四大算法
coding_-_半生
jvm 算法 java
JVMGC四大算法文章目录JVMGC四大算法GC四大算法一、引用计数法二、复制算法(COPY)三、标记清除算法(MARK-SWEEP)四、标记整理算法(MARK-COMPACT)五、总结GC四大算法一、引用计数法描述:给每一个对象分配一个计数器,用于记录对象是否被引用,被引用一次,计数进行+1优点:方便直接判断对象是否能够回收缺点:使用计数器需要消耗一定的内存,且每一次计数的修改同样需要消耗内存致
linux jvm gc日志分析,JVM GC 日志详解
一只小小的IOS
linux jvm gc日志分析
本文采用的JDK版本:javaversion"1.8.0_144"Java(TM)SERuntimeEnvironment(build1.8.0_144-b01)JavaHotSpot(TM)64-BitServerVM(build25.144-b01,mixedmode)一、GC日志参数设置JVMGC格式日志的主要参数包括如下8个:-XX:+PrintGC输出简要GC日志-XX:+PrintGC
OOM系列之一:java.lang.OutOfMemoryError: Java堆空间问题详解
马小瑄
经验分享 开发语言 程序人生 java 性能优化
第一篇:java.lang.OutOfMemoryError:JavaheapspaceJava应用程序只允许使用有限的内存量。此限制是在应用程序启动期间指定的。为了让事情变得更复杂,Java内存被分成两个不同的区域。这些区域称为堆空间和Permgen(用于永久代):这些区域的大小是在Java虚拟机(JVM)启动期间设置的,可以通过指定JVM参数-Xmx和-XX:MaxPermSize进行自定义。
Vue2快速入门
Vic2334
前端 vue.js 前端框架 vue 快速入门
1.概念理解什么是vue?Vue.js是一套构建用户界面的渐进式框架。Vue从设计角度来讲,虽然能够涵盖这张图上所有的东西,但是你并不需要一上手就把所有东西全用上,因为没有必要。无论从学习角度,还是实际情况,这都是可选的。声明式渲染和组件系统是Vue的核心库所包含内容,而客户端路由、状态管理、构建工具都有专门解决方案。这些解决方案相互独立,你可以在核心的基础上任意选用其他的部件,不一定要全部整合在
商场促销-策略模式
WispX888
java 开发语言 学习 设计模式
商场促销-策略模式商场收银软件大鸟给小菜出了一个作业,让小菜做一个商场收银软件,营业员根据客户端所购买商品的单价和数量,向用户收费。核心代码如下:importjava.util.Scanner;publicclassMain{privatestaticdoubletotal=0;publicstaticvoidmain(String[]args){Scannersc=newScanner(Syst
【STM32】USART串口收发HEX数据包&收发文本数据包
傍晚冰川
stm32 网络 嵌入式硬件 单片机 笔记 学习 c语言
有关串口知识参考:【STM32】USART串口协议&串口外设-学习笔记-CSDN博客HEX模式/十六进制模式/二进制模式:以原始数据的形式显示文本模式/字符模式:以原始数据编码后的形式显示参考上面文章查看ASCII编码表HEX数据包包头包尾和载荷数据重复问题的解决方法:解决思路方法文本数据包文本模式有大量的字符可以作为包头包尾,可以有效避免载荷数据和包头包尾重复的问题HEX数据包和文本数据包两者的
Java 8 + Tomcat 9.0.102 的稳定环境搭建方案,适用于生产环境
无极低码
java java tomcat 开发语言
一、安装Java8安装OpenJDK8bashsudoaptupdatesudoaptinstallopenjdk-8-jdk-y验证安装bashjava-version应输出类似:openjdkversion“1.8.0_412”OpenJDKRuntimeEnvironment(build1.8.0_412-8u412-ga-1~22.04-b08)OpenJDK64-BitServerVM(
Java对正则表达式的支持(手机、身份证校验)
周里奥
工具 正则表达式 java
目录1【数量:单个】字符匹配2【数量:单个】字符集(可以从里面任选一个字符)。3【数量:单个】简化字符集;4【边界匹配】5【数量表示】默认情况下只有添加上了数量单位才可以匹配多位字符;6【逻辑表达式】可以连接多个正则7【理解字符\的含义】\在Java中的含义\在正则表达式中的含义\出现在Java的正则表达式中处理举例1: [email protected] 举例2:ab\abJava对正则的支持类-常用方法
Java与Elasticsearch集成详解,以及使用指南
qzw1210
java elasticsearch jenkins
Java与Elasticsearch集成详解1.环境配置首先,你需要在Maven项目中添加ElasticsearchJava客户端依赖:co.elastic.clientselasticsearch-java8.10.0com.fasterxml.jackson.corejackson-databind2.15.2jakarta.jsonjakarta.json-api2.1.12.客户端初始化E
深入理解C++内存管理机制
qzw1210
C++ c++ 学习 笔记
侯捷C++系列课程学习笔记:深入理解C++内存管理机制在侯捷老师的C++系列课程中,内存管理是一个极其重要且深刻的主题。通过对这部分内容的学习,我对C++的内存管理机制有了更深入的理解,特别是关于new/delete操作符、内存池设计以及智能指针的应用。一、C++内存分配的层次结构侯捷老师在课程中清晰地阐述了C++内存分配的层次结构,这让我对整个内存管理体系有了全局的认识:最底层:操作系统提供的内
java中校验手机号码的正则表达式
尼采呀
java 正则表达式 开发语言
一.匹配说明:正则表达式是描述字符串内容格式,使用它来匹配一个字符串的内容是否符合要求1.[]:表示一个字符,该字符可以是[]中指定的内容例如:[abc]:这个字符可以是a或b或c[a-z]:表示任意一个小写字母[a-zA-Z]:表示任意一个字母[a-zA-Z0-9_]:表示任意一个数字字母下划线[^abc]:该字符只要不是a或b或c预定义字符:.:表示任意一个字符,没有范围限制\d:表示任意一个
Hive SQL 精进系列: JSON_TUPLE 快速提取多键值
进一步有进一步的欢喜
Hive SQL 精进系列 hive sql hadoop
目录一、引言二、json_tuple函数基础2.1基本语法参数解释返回值简单示例三、应用场景3.1数据提取与分析3.2数据集成与转换3.3复杂JSON数据处理四、json_tuple、get_json_object和from_json的对比4.1功能特点4.2语法和使用复杂度4.3性能表现4.4示例对比使用json_tuple使用get_json_object使用from_json五、使用注意事项
回溯法--力扣第17题“电话号码的字母组合”(java)
27xixi
数据结构与算法 leetcode java 算法
力扣第17题“电话号码的字母组合”回溯法(DFS)回溯法通过递归遍历每个数字对应的字母,生成所有可能的组合。核心思想是构建搜索树,每次选择一个字母后进入下一层递归,回溯时撤销选择以尝试其他分支。实现步骤:构建数字到字母的映射表:使用数组或哈希表存储每个数字对应的字母。递归回溯:终止条件:当前路径长度等于输入数字字符串长度时,将结果加入列表。遍历当前数字对应的所有字母,依次选择、递归、撤销选择。Ja
Java突击小练习--利用正则表达式来简易的校验邮箱与手机号格式
CJH~
java 正则表达式 mysql
//校验邮箱publicclassTestEmail{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);//*号代表任意数量,放在0-9a-zA-Z后面,代表可以写任意数量的字母和数字//@是邮箱的符号,接在刚刚那串的后面//|代表或,也就是说@后可以跟着qq或163或sina中的任意字符串,代表哪家邮箱//
elasticsearch analyzer 学习笔记
weixin_40455124
elasticsearch 代码分析及扩展 elasticsearch analyzer token
基本定义analyzer执行将输入字符流分解为token的过程使用场景在indexing的时候,也即在建立索引的时候在searching的时候,也即在搜索时,分析需要搜索的词语analysisCharacterfiltering(字符过滤器):使用字符过滤器转换字符Breakingtextintotokens(把文字转化为标记):将文本分成一组一个或多个标记Tokenfiltering:使用标记过
【Quarkus】通过Quarkus集成后端服务示例
Vesper63
Quarkus java 开发语言
说明:REST资源接口(AuthResource)。REST资源实现类(AuthResourceImpl)。服务接口(AuthService)。服务实现类(AuthServiceImpl)。配置文件(application.properties)。测试类(AuthResourceTest)。1.项目结构my-quarkus-app/├──src/│├──main/││├──java/│││└──c
SSL证书自动续签(解决泛域名续签问题)
月会
ssl自动续签
文章目录SSL证书自动生成并自动续期Let’sEncryptCertbot介绍申请ssl证书下载certbot申请证书非泛域名申请证书nginx使用证书证书续期脚本linux定时执行脚本泛域名SSL证书自动生成并自动续期自动续期使用Let’sEncrypt证书颁发机构和certbot客户端共同完成Let’sEncryptLet’sEncrypt是一家免费、开放、自动化的证书颁发机构(CA),为公众
Redis7——进阶篇(四)
啥也不会的小神龙·
Redis系列 redis 缓存 学习 redis经典面试题
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。基础篇:Redis(一)Redis(二)Redis(三)Redis(四)Redis(五)Redis(六)Redis(七)Redis(八)进阶篇:Redis(九)Redis(十)Redis(十一)接上期内容:上期完成了缓存双写一致性方面的学习。下面学习HyperLogLog/Geo/Bitmap实际案
Groovy语言的漏洞扫描
花韵婷
包罗万象 golang 开发语言 后端
Groovy语言漏洞扫描:深入分析与实践引言Groovy是一种基于Java虚拟机(JVM)的动态编程语言,它结合了Python、Ruby和Smalltalk等语言的特性,提供了简洁的语法和强大的功能。Groovy广泛应用于脚本编写、自动化测试、构建工具(如Gradle)以及Web开发等领域。然而,随着Groovy的广泛应用,其安全性问题也逐渐显现出来。本文将深入探讨Groovy语言中的常见漏洞类型
描述K8S创建pod的全过程
小马不敲代码
云原生 kubernetes 容器 云原生
1、用户提交请求用户通过kubectl命令行工具或API客户端提交创建Pod的请求。请求中包含了Pod的配置信息,例如容器镜像、资源需求、环境变量等。2、APIServer接收请求APIServer是Kubernetes集群的入口,负责接收和处理所有API请求。APIServer会验证请求的合法性,例如用户权限、资源配额等。验证通过后,APIServer会将Pod的配置信息存储到etcd中。3、S
php openssl tls1.2,openssl建立tls1连接过程(s->state的变化过程)
开源故事
php openssl tls1.2
以下是调用openssl建立tls1连接过程中,openssl内部对握手阶段的处理过程,可以对照抓包观察以下服务端和客户端是并行进行的,只是需要接收对端消息时才会进入等待状态.为方面理解,所以将客户端和服务端的处理按顺序排好.具体的状态转换代码请见:server端/ssl/s3_srvr.c的ssl3_accept方法client端/ssl/s3_clnt.c的ssl3_connect方法clie
openssl TLS 单向认证
spring*-*
网络 服务器 运维
下面是一个简单的C语言程序示例,它展示了如何使用OpenSSL来实现基于TLS的加密TCP通信。这个程序包括一个服务器和一个客户端,它们通过TLS加密的TCP连接进行通信。步骤概览初始化OpenSSL库。创建SSL上下文(SSL_CTX)。在服务器端,加载服务器证书和私钥;在客户端,加载CA证书。使用SSL套接字进行加密通信。服务器端代码c复制代码#include#include#include#
server和client通信双方双向认证,基于openssl,使用TLS加密TCP流量
spring*-*
tcp/ip 服务器 网络协议
设计一个基于OpenSSL的C语言程序来实现双向认证的TLS加密TCP通信,需要包含服务器和客户端两部分。以下是该程序的核心步骤及示例代码。生成证书和私钥首先,需要为服务器和客户端生成证书和私钥。可以使用OpenSSL命令行工具生成这些文件。bash复制代码生成CA私钥和自签名证书opensslgenrsa-outca.key2048opensslreq-x509-new-nodes-keyca.
详解PriorityQueue
27xixi
算法 数据结构 java
PriorityQueue是Java集合框架中的一个类,它实现了优先级队列的数据结构。优先级队列是一种特殊的队列,其中的元素按照优先级顺序出队,而不是按照插入顺序(FIFO)。默认情况下,PriorityQueue是一个最小堆,即优先级最小的元素最先出队。1.PriorityQueue的特点基于堆实现:PriorityQueue通常基于二叉堆(最小堆或最大堆)实现。无界队列:PriorityQue
Java集合进阶
27xixi
java 开发语言
在Java中,集合框架(CollectionsFramework)是用于存储和操作一组对象的强大工具。它提供了多种接口和类,用于处理不同类型的集合(如列表、集合、队列、映射等)。1.Java集合框架概述Java集合框架主要包括以下接口和类:核心接口Collection:所有集合类的根接口。List:有序集合,允许重复元素(如ArrayList,LinkedList)。Set:无序集合,不允许重复元
java Stream API中的聚合操作
27xixi
java java18
聚合操作是指对一组数据进行处理,最终生成一个单一的结果。在编程中,聚合操作通常用于对集合(如列表、数组等)中的元素进行统计、计算或汇总。常见的聚合操作包括求和、求平均值、查找最大值/最小值、计数等。在Java的StreamAPI中,聚合操作是通过终端操作(TerminalOperations)来实现的。以下是一些常见的聚合操作及其用法:1.求和(Sum)对集合中的元素进行求和。示例:求整数列表的和
HttpClient 4.3与4.3版本以下版本比较
spjich
java httpclient
网上利用java发送http请求的代码很多,一搜一大把,有的利用的是java.net.*下的HttpURLConnection,有的用httpclient,而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。
httpclient又可分为
httpclient3.x
httpclient4.x到httpclient4.3以下
httpclient4.3
Essential Studio Enterprise Edition 2015 v1新功能体验
Axiba
.net
概述:Essential Studio已全线升级至2015 v1版本了!新版本为JavaScript和ASP.NET MVC添加了新的文件资源管理器控件,还有其他一些控件功能升级,精彩不容错过,让我们一起来看看吧!
syncfusion公司是世界领先的Windows开发组件提供商,该公司正式对外发布Essential Studio Enterprise Edition 2015 v1版本。新版本
[宇宙与天文]微波背景辐射值与地球温度
comsci
背景
宇宙这个庞大,无边无际的空间是否存在某种确定的,变化的温度呢?
如果宇宙微波背景辐射值是表示宇宙空间温度的参数之一,那么测量这些数值,并观测周围的恒星能量输出值,我们是否获得地球的长期气候变化的情况呢?
&nbs
lvs-server
男人50
server
#!/bin/bash
#
# LVS script for VS/DR
#
#./etc/rc.d/init.d/functions
#
VIP=10.10.6.252
RIP1=10.10.6.101
RIP2=10.10.6.13
PORT=80
case $1 in
start)
/sbin/ifconfig eth2:0 $VIP broadca
java的WebCollector爬虫框架
oloz
爬虫
WebCollector主页:
https://github.com/CrawlScript/WebCollector
下载:webcollector-版本号-bin.zip将解压后文件夹中的所有jar包添加到工程既可。
接下来看demo
package org.spider.myspider;
import cn.edu.hfut.dmic.webcollector.cra
jQuery append 与 after 的区别
小猪猪08
1、after函数
定义和用法:
after() 方法在被选元素后插入指定的内容。
语法:
$(selector).after(content)
实例:
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></scr
mysql知识充电
香水浓
mysql
索引
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。
根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。
大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;
MYISAM和InnoDB存储引擎
我的架构经验系列文章索引
agevs
架构
下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。
要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。
(内容是前几天写的,现附上索引)
前端架构 http://www.
Android so lib库远程http下载和动态注册
aijuans
andorid
一、背景
在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过查阅资料和实验,发现通过远程下载so文件,然后再动态注册so文件时可行的。主要需要解决下载so文件存放位置以及文件读写权限问题。
二、主要
linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法
baalwolf
option
在客户端访问subversion版本库时出现这个错误:
svnserve.conf:12: Option expected
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如### This file controls the configuration of the svnserve daemon, if you##
MongoDB的连接池和连接管理
BigCat2013
mongodb
在关系型数据库中,我们总是需要关闭使用的数据库连接,不然大量的创建连接会导致资源的浪费甚至于数据库宕机。这篇文章主要想解释一下mongoDB的连接池以及连接管理机制,如果正对此有疑惑的朋友可以看一下。
通常我们习惯于new 一个connection并且通常在finally语句中调用connection的close()方法将其关闭。正巧,mongoDB中当我们new一个Mongo的时候,会发现它也
AngularJS使用Socket.IO
bijian1013
JavaScript AngularJS Socket.IO
目前,web应用普遍被要求是实时web应用,即服务端的数据更新之后,应用能立即更新。以前使用的技术(例如polling)存在一些局限性,而且有时我们需要在客户端打开一个socket,然后进行通信。
Socket.IO(http://socket.io/)是一个非常优秀的库,它可以帮你实
[Maven学习笔记四]Maven依赖特性
bit1129
maven
三个模块
为了说明问题,以用户登陆小web应用为例。通常一个web应用分为三个模块,模型和数据持久化层user-core, 业务逻辑层user-service以及web展现层user-web,
user-service依赖于user-core
user-web依赖于user-core和user-service
依赖作用范围
Maven的dependency定义
【Akka一】Akka入门
bit1129
akka
什么是Akka
Message-Driven Runtime is the Foundation to Reactive Applications
In Akka, your business logic is driven through message-based communication patterns that are independent of physical locatio
zabbix_api之perl语言写法
ronin47
zabbix_api之perl
zabbix_api网上比较多的写法是python或curl。上次我用java--http://bossr.iteye.com/blog/2195679,这次用perl。for example: #!/usr/bin/perl
use 5.010 ;
use strict ;
use warnings ;
use JSON :: RPC :: Client ;
use
比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!
brotherlamp
linux运维工程师 linux运维工程师教程 linux运维工程师视频 linux运维工程师资料 linux运维工程师自学
比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!
-----------------------------------------------------
兄弟连Linux运维工程师课堂实录-计算机基础-1-课程体系介绍1
链接:http://pan.baidu.com/s/1i3GQtGL 密码:bl65
兄弟连Lin
bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(
bylijinnan
java
import java.util.Random;
/**
* 题目:
* 给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(y1,y2,y3,y4,y5),
* 使得他们的哈密顿距离(d=|x1-y1| + |x2-y2| + |x3-y3| + |x4-y4| + |x5-y5|)最大
map的三种遍历方法
chicony
map
package com.test;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestMap {
public static v
Linux安装mysql的一些坑
chenchao051
linux
1、mysql不建议在root用户下运行
2、出现服务启动不了,111错误,注意要用chown来赋予权限, 我在root用户下装的mysql,我就把usr/share/mysql/mysql.server复制到/etc/init.d/mysqld, (同时把my-huge.cnf复制/etc/my.cnf)
chown -R cc /etc/init.d/mysql
Sublime Text 3 配置
daizj
配置 Sublime Text
Sublime Text 3 配置解释(默认){// 设置主题文件“color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,// 设置字体和大小“font_face”: “Consolas”,“font_size”: 12,// 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和
MySQL server has gone away 问题的解决方法
dcj3sjt126com
SQL Server
MySQL server has gone away 问题解决方法,需要的朋友可以参考下。
应用程序(比如PHP)长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。 今天遇到类似的情景,MySQL只是冷冷的说:MySQL server h
javascript/dom:固定居中效果
dcj3sjt126com
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&
使用 Spring 2.5 注释驱动的 IoC 功能
e200702084
spring bean 配置管理 IOC Office
使用 Spring 2.5 注释驱动的 IoC 功能
developerWorks
文档选项
将打印机的版面设置成横向打印模式
打印本页
将此页作为电子邮件发送
将此页作为电子邮件发送
级别: 初级
陈 雄华 ( [email protected] ), 技术总监, 宝宝淘网络科技有限公司
2008 年 2 月 28 日
&nb
MongoDB常用操作命令
geeksun
mongodb
1. 基本操作
db.AddUser(username,password) 添加用户
db.auth(usrename,password) 设置数据库连接验证
db.cloneDataBase(fromhost)
php写守护进程(Daemon)
hongtoushizi
PHP
转载自: http://blog.csdn.net/tengzhaorong/article/details/9764655
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。
1、基本概念
&nbs
spring整合mybatis,关于注入Dao对象出错问题
jonsvien
DAO spring bean mybatis prototype
今天在公司测试功能时发现一问题:
先进行代码说明:
1,controller配置了Scope="prototype"(表明每一次请求都是原子型)
@resource/@autowired service对象都可以(两种注解都可以)。
2,service 配置了Scope="prototype"(表明每一次请求都是原子型)
对象关系行为模式之标识映射
home198979
PHP 架构 企业应用 对象关系 标识映射
HELLO!架构
一、概念
identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。
二、为什么要使用标识映射?
在数据源架构模式之数据映射器中
//c
Linux下hosts文件详解
pda158
linux
1、主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。 公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。 局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机
nginx配置文件粗解
spjich
java nginx
#运行用户#user nobody;#启动进程,通常设置成和cpu的数量相等worker_processes 2;#全局错误日志及PID文件#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log inf
数学函数
w54653520
java
public
class
S {
// 传入两个整数,进行比较,返回两个数中的最大值的方法。
public
int
get(
int
num1,
int
nu
| |