基础概念
Coprocessor
Coprocessor
其实是一个类似 MapReduce
的分析组件,不过它极大简化了 MapReduce
模型。将请求独立地在各个 Region
中并行地运行,并提供了一套框架让用户灵活地自定义 Coprocessor
编程技巧
充分利用好 CellUtil
CellUtil.matchingFamily(cell, cf) && CellUtil.matchingQualifier(cell, col)
发挥好协处理的并行计算能力
static String getStartKeyPrefix(HRegion region) {
if (region == null ) throw new RuntimeException("Region is null!" );
byte [] startKey = region.getStartKey();
if (startKey == null || startKey.length == 0 ) return "00" ;
String startKeyStr = Bytes.toString(startKey);
return isEmpty(startKeyStr) ? "00" : startKeyStr.substring(0 , 2 );
}
private static boolean isEmpty (final String s) {
return s == null || s.length() == 0 ;
}
处理好协处理器程序里的异常
如果在协处理器里面有异常被抛出,并且 hbase.coprocessor.abortonerror
参数没有开启,那么,该协处理器会直接从被加载的环境中被删除掉。否则,则需要看异常类型,如果是 IOException
类型,则会直接被抛出;如果是 DoNotRetryIOException
类型,则不做重试,抛出异常。否则,默认将会尝试 10 次 (硬编码在 AsyncConnectionImpl#RETRY_TIMER
中了)。因此需要依据自己的业务场景,对异常做好妥善的处理
日志打印
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
private static final Log log = LogFactory.getLog(CoprocessorImpl.class.getName());
部署
$ hadoop fs -copyFromLocal /home/hbase/script/coprocessor-0.0 .1 .jar hdfs://yuzhouwan/hbase/coprocessor/
$ hadoop fs -ls hdfs://yuzhouwan/hbase/coprocessor/
$ alter 'yuzhouwan' , METHOD => 'table_att_unset' , NAME =>'coprocessor$1'
$ alter 'yuzhouwan' , METHOD => 'table_att' , 'coprocessor' => 'hdfs://yuzhouwan/hbase/coprocessor/coprocessor-0.0.1.jar|com.yuzhouwan.hbase.coprocessor.Aggregation|111|'
常用命令
集群相关
$ su - hbase
$ start-hbase.sh
$ jps | grep -v Jps
32538 ThriftServer
9383 HMaster
8423 HRegionServer
$ jps | grep -v Jps
24450 jar
21882 HMaster
2296 HRegionServer
14598 ThriftServer
5998 Jstat
$ jps | grep -v Jps
31119 Bootstrap
8775 HMaster
25289 Bootstrap
14823 Bootstrap
12671 Jstat
9052 ThriftServer
26921 HRegionServer
$ jps | grep -v Jps
29356 hbase-monitor-process-0.0 .3 -jar-with-dependencies.jar
11023 Jstat
26135 HRegionServer
$ export -p | egrep -i "(hadoop|hbase)"
declare -x HADOOP_HOME="/home/bigdata/software/hadoop"
declare -x HBASE_HOME="/home/bigdata/software/hbase"
declare -x PATH="/usr/local/anaconda/bin:/usr/local/R-3.2.1/bin:/home/bigdata/software/java/bin:/home/bigdata/software/hadoop/bin:/home/bigdata/software/hive/bin:/home/bigdata/software/sqoop/bin:/home/bigdata/software/hbase/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
$ java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
uintx MaxHeapSize := 32126271488 {product}
java version "1.7.0_60-ea"
Java(TM) SE Runtime Environment (build 1.7 .0 _60-ea-b15)
Java HotSpot(TM) 64 -Bit Server VM (build 24.60 -b09, mixed mode)
$ top
top - 11 :37 :03 up 545 days, 18 :45 , 5 users, load average: 8.74 , 10.39 , 10.96
Tasks: 653 total, 1 running, 652 sleeping, 0 stopped, 0 zombie
Cpu(s): 32.9 %us, 0.7 %sy, 0.0 %ni, 66.3 %id, 0.0 %wa, 0.0 %hi, 0.1 %si, 0.0 %st
Mem: 264484056 k total, 260853032 k used, 3631024 k free, 2235248 k buffers
Swap: 10485756 k total, 10485756 k used, 0 k free, 94307776 k cached
$ java -classpath ~/opt/hbase/soft/yuzhouwan.jar:`hbase classpath` com.yuzhouwan.hbase.MainApp
Usage: hbase [] []
Options:
--config DIR Configuration direction to use. Default: ./conf
--hosts HOSTS Override the list in 'regionservers' file
Commands:
Some commands take arguments. Pass no args or -h for usage.
shell Run the HBase shell
hbck Run the hbase 'fsck' tool
hlog Write-ahead-log analyzer
hfile Store file analyzer
zkcli Run the ZooKeeper shell
upgrade Upgrade hbase
master Run an HBase HMaster node
regionserver Run an HBase HRegionServer node
zookeeper Run a Zookeeper server
rest Run an HBase REST server
thrift Run the HBase Thrift server
thrift2 Run the HBase Thrift2 server
clean Run the HBase clean up script
classpath Dump hbase CLASSPATH
mapredcp Dump CLASSPATH entries required by mapreduce
pe Run PerformanceEvaluation
ltt Run LoadTestTool
version Print the version
CLASSNAME Run the class named CLASSNAME
$ hbase version
2017 -01 -13 11 :05 :07 ,580 INFO [main] util.VersionInfo: HBase 0.98 .8 -hadoop2
2017 -01 -13 11 :05 :07 ,580 INFO [main] util.VersionInfo: Subversion file:///e/hbase_compile/hbase-0.98 .8 -r Unknown
2017 -01 -13 11 :05 :07 ,581 INFO [main] util.VersionInfo: Compiled by 14074019 on Mon Dec 26 20 :17 :32 2016
$ hadoop fs -ls /hbase
drwxr-xr-x - hbase hbase 0 2017 -03 -01 00 :05 /hbase/.hbase-snapshot
drwxr-xr-x - hbase hbase 0 2016 -10 -26 16 :42 /hbase/.hbck
drwxr-xr-x - hbase hbase 0 2016 -12 -19 13 :02 /hbase/.tmp
drwxr-xr-x - hbase hbase 0 2017 -01 -22 20 :18 /hbase/WALs
drwxr-xr-x - hbase hbase 0 2015 -09 -18 09 :34 /hbase/archive
drwxr-xr-x - hbase hbase 0 2016 -10 -18 09 :44 /hbase/coprocessor
drwxr-xr-x - hbase hbase 0 2015 -09 -15 17 :21 /hbase/corrupt
drwxr-xr-x - hbase hbase 0 2017 -02 -20 14 :34 /hbase/data
-rw-r--r-- 2 hbase hbase 42 2015 -09 -14 12 :10 /hbase/hbase.id
-rw-r--r-- 2 hbase hbase 7 2015 -09 -14 12 :10 /hbase/hbase.version
drwxr-xr-x - hbase hbase 0 2016 -06 -28 12 :14 /hbase/inputdir
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :40 /hbase/oldWALs
-rw-r--r-- 2 hbase hbase 345610 2015 -12 -08 16 :54 /hbase/test_bulkload.txt
$ hadoop fs -ls /hbase/WALs
drwxr-xr-x - hbase hbase 0 2016 -12 -27 16 :08 /hbase/WALs/yuzhouwan03,60020 ,1482741120018 -splitting
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :36 /hbase/WALs/yuzhouwan03,60020 ,1483442645857
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan02,60020 ,1483491016710
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan01,60020 ,1483443835926
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :36 /hbase/WALs/yuzhouwan03,60020 ,1483444682422
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :16 /hbase/WALs/yuzhouwan04,60020 ,1485087488577
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan05,60020 ,1484790306754
drwxr-xr-x - hbase hbase 0 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan06,60020 ,1484931966988
$ hadoop fs -ls /hbase/WALs/yuzhouwan01,60020 ,1483443835926
-rw-r--r-- 3 hbase hbase 127540109 2017 -03 -01 09 :49 /hbase/WALs/yuzhouwan01,60020 ,1483443835926 /yuzhouwan01%2 C60020%2 C1483443835926.1488330961720
-rw-r--r-- 3 hbase hbase 83 2017 -03 -01 10 :37 /hbase/WALs/yuzhouwan01,60020 ,1483443835926 /yuzhouwan01%2 C60020%2 C1483443835926.1488335822133
$ vim /home/hbase/logs/hbase-hbase-regionserver-yuzhouwan03.log
$ echo "" | hbase shell
$ hbase shell ../script/batch.hbase
$ hbase shell
$ status
1 servers, 0 dead, 41.0000 average load
$ zk_dump
HBase is rooted at /hbase
Active master address: yuzhouwan03,60000 ,1481009498847
Backup master addresses:
yuzhouwan02,60000 ,1481009591957
yuzhouwan01,60000 ,1481009567346
Region server holding hbase:meta: yuzhouwan03,60020 ,1483442645857
Region servers:
yuzhouwan02,60020 ,1483491016710
/hbase/replication:
/hbase/replication/peers:
/hbase/replication/peers/1 : yuzhouwan03,yuzhouwan02,yuzhouwan01:2016 :/hbase
/hbase/replication/peers/1 /peer-state: ENABLED
/hbase/replication/rs:
/hbase/replication/rs/yuzhouwan03,60020 ,1483442645857 :
/hbase/replication/rs/yuzhouwan03,60020 ,1483442645857 /1 :
/hbase/replication/rs/yuzhouwan03,60020 ,1483442645857 /1 /yuzhouwan03%2 C60020%2 C1483442645857.1488334114131 : 116838271
/hbase/replication/rs/1485152902048 .SyncUpTool.replication.org,1234 ,1 :
/hbase/replication/rs/yuzhouwan06,60020 ,1484931966988 :
/hbase/replication/rs/yuzhouwan06,60020 ,1484931966988 /1 :
Quorum Server Statistics:
yuzhouwan02:2015
Zookeeper version: 3.4 .6 -1569965 , built on 02 /20 /2014 09 :09 GMT
Clients:
/yuzhouwan:62003 [1 ](queued=0 ,recved=625845 ,sent=625845 )
/yuzhouwan:11151 [1 ](queued=0 ,recved=8828 ,sent=8828 )
Latency min/avg/max: 0 /0 /1
Received: 161
Sent: 162
Connections: 168
Outstanding: 0
Zxid: 0 xc062e91c6
Mode: follower
Node count: 25428
yuzhouwan03:2015
Zookeeper version: 3.4 .6 -1569965 , built on 02 /20 /2014 09 :09 GMT
Clients:
/yuzhouwan:39582 [1 ](queued=0 ,recved=399812 ,sent=399812 )
/yuzhouwan:58770 [1 ](queued=0 ,recved=3234 ,sent=3234 )
$ stop-hbase.sh
增删查改
$ list
TABLE
mytable
yuzhouwan
20 row(s) in 1.4080 seconds
$ create 'yuzhouwan' , {NAME => 'info' , VERSIONS => 3 }, {NAME => 'data' , VERSIONS => 1 }
0 row(s) in 0.2650 seconds
=> Hbase::Table - yuzhouwan
$ put 'yuzhouwan' , 'rk0001' , 'info:name' , 'Benedict Jin'
$ put 'yuzhouwan' , 'rk0001' , 'info:gender' , 'Man'
$ put 'yuzhouwan' , 'rk0001' , 'data:pic' , '[picture]'
$ get 'yuzhouwan' , 'rk0001' , {FILTER => "ValueFilter(=, 'binary:[picture]')" }
COLUMN CELL
data:pic timestamp=1479092170498 , value=[picture]
1 row(s) in 0.0200 seconds
$ get 'yuzhouwan' , 'rk0001' , {FILTER => "QualifierFilter(=, 'substring:a')" }
COLUMN CELL
info:name timestamp=1479092160236 , value=Benedict Jin
1 row(s) in 0.0050 seconds
$ scan 'yuzhouwan' , {FILTER => "QualifierFilter(=, 'substring:a')" }
ROW COLUMN+CELL
rk0001 column=info:name, timestamp=1479092160236 , value=Benedict Jin
1 row(s) in 0.0140 seconds
$ scan 'yuzhouwan' , { TIMERANGE => [0 , 1416083300000 ] }
$ put 'yuzhouwan' , 'rk0003' , 'info:name' , 'asdf2014'
$ scan 'yuzhouwan' , {COLUMNS => 'info' , STARTROW => 'rk0001' , ENDROW => 'rk0003' }
$ put 'yuzhouwan' , 'aha_rk0003' , 'info:name' , 'Jin'
$ scan 'yuzhouwan' , {FILTER => "PrefixFilter('rk')" }
ROW COLUMN+CELL
rk0001 column=data:pic, timestamp=1479092170498 , value=[picture]
rk0001 column=info:gender, timestamp=1479092166019 , value=Man
rk0001 column=info:name, timestamp=1479092160236 , value=Benedict Jin
rk0003 column=info:name, timestamp=1479092728688 , value=asdf2014
2 row(s) in 0.0150 seconds
$ delete 'yuzhouwan' , 'rk0001' , 'info:gender'
$ get 'yuzhouwan' , 'rk0001'
COLUMN CELL
data:pic timestamp=1479092170498 , value=[picture]
info:name timestamp=1479092160236 , value=Benedict Jin
2 row(s) in 0.0100 seconds
$ disable 'yuzhouwan'
$ drop 'yuzhouwan'
行列修改
$ disable 'yuzhouwan'
$ alter 'yuzhouwan' , NAME => 'f1'
$ alter 'yuzhouwan' , NAME => 'f2'
Updating all regions with the new schema...
1 /1 regions updated.
Done.
0 row(s) in 1.3020 seconds
$ create 'yuzhouwan' , {NAME => 'info' }
$ put 'yuzhouwan' , 'rk00001' , 'info:name' , 'China'
$ get 'yuzhouwan' , 'rk00001' , {COLUMN => 'info:name' }, 'value'
$ put 'yuzhouwan' , 'rk00001' , 'info:address' , 'value'
$ scan 'yuzhouwan'
ROW COLUMN+CELL
rk00001 column=info:address, timestamp=1480556328381 , value=value
1 row(s) in 0.0220 seconds
$ alter 'yuzhouwan' , {NAME => 'f3' }, {NAME => 'f4' }
$ alter 'yuzhouwan' , {NAME => 'f5' }, {NAME => 'f1' , METHOD => 'delete' }, {NAME => 'f2' , METHOD => 'delete' }, {NAME => 'f3' , METHOD => 'delete' }, {NAME => 'f4' , METHOD => 'delete' }
$ deteleall ,
清空表数据
$ describe 'yuzhouwan'
Table yuzhouwan is ENABLED
COLUMN FAMILIES DESCRIPTION
{NAME => 'data' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'ROW' , REPLICATION_SCOPE => '0' , VERSIONS => '1' , COMPRESSION => 'NONE' , MIN_VERSIONS => '0' , TTL => 'FOREVER' , KEEP_DELETED_CELLS => 'FALSE' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
{NAME => 'f5' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'ROW' , REPLICATION_SCOPE => '0' , COMPRESSION => 'NONE' , VERSIONS => '1' , TTL => 'FOREVER' , MIN_VERSIONS => '0' , KEEP_DELETED_CELLS => 'FALSE'
, BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
{NAME => 'info' , DATA_BLOCK_ENCODING => 'NONE' , BLOOMFILTER => 'ROW' , REPLICATION_SCOPE => '0' , VERSIONS => '3' , COMPRESSION => 'NONE' , MIN_VERSIONS => '0' , TTL => 'FOREVER' , KEEP_DELETED_CELLS => 'FALSE' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
3 row(s) in 0.0230 seconds
$ truncate_preserve 'yuzhouwan'
$ truncate 'yuzhouwan'
$ scan 'yuzhouwan'
ROW COLUMN+CELL
0 row(s) in 0.3170 seconds
改表名
$ disable 'yuzhouwan'
$ snapshot 'yuzhouwan' , 'yuzhouwan_snapshot'
$ clone_snapshot 'yuzhouwan_snapshot' , 'ns_site:yuzhouwan'
$ delete_snapshot 'yuzhouwan_snapshot'
$ drop 'yuzhouwan'
$ grant 'site' , 'CXWR' , 'ns_site:yuzhouwan'
$ user_permission 'yuzhouwan'
User Table,Family,Qualifier:Permission
site default,yuzhouwan,,: [Permission: actions=CREATE,EXEC,WRITE,READ]
hbase default,yuzhouwan,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
$ disable 'ns_site:yuzhouwan'
$ drop 'ns_site:yuzhouwan'
$ exists 'ns_site:yuzhouwan'
Table ns_site:yuzhouwan does not exist
0 row(s) in 0.0200 seconds
改表属性
$ disable 'yuzhouwan'
$ alter 'yuzhouwan' , NAME => 'f' , VERSIONS => 5
$ alter 'yuzhouwan' , NAME => 'f' , TTL => 20
$ enable 'yuzhouwan'
$ describe 'yuzhouwan'
压缩算法
$ create 'yuzhouwan' , {NUMREGIONS => 15 , SPLITALGO => 'HexStringSplit' }, {NAME => 'v' , COMPRESSION => 'LZ4' , BLOOMFILTER => 'NONE' , DATA_BLOCK_ENCODING => 'FAST_DIFF' }
$ describe 'yuzhouwan'
Table yuzhouwan is ENABLED
COLUMN FAMILIES DESCRIPTION
{NAME => 'v' , DATA_BLOCK_ENCODING => 'FAST_DIFF' , BLOOMFILTER => 'NONE' , REPLICATION_SCOPE => '0' , VERSIONS => '1' , COMPRESSION => 'LZ4' , MIN_VERSIONS => '0' , TTL => 'FOREVER' , KEEP_DELETED_CELLS => 'FALSE' , BLOCKSIZE => '65536' , IN_MEMORY => 'false' , BLOCKCACHE => 'true' }
1 row(s) in 0.0280 seconds
权限控制
$ grant 'benedict' , 'WRXC' , 'yuzhouwan'
$ echo "scan 'hbase:acl'" | hbase shell > acl.txt
yuzhouwan column=l:benedict, timestamp=1496216745249 , value=WRXC
yuzhouwan column=l:hbase, timestamp=1496216737326 , value=RWXCA
$ user_permission
$ user_permission 'yuzhouwan'
User Table,Family,Qualifier:Permission
hbase default,yuzhouwan,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
benedict default,yuzhouwan,,: [Permission: actions=WRITE,READ,EXEC,CREATE]
2 row(s) in 0.0510 seconds
$ revoke 'benedict' , 'yuzhouwan'
分区
$ create 'yuzhouwan' , {NAME => 'f' }, SPLITS => ['1' , '2' , '3' ]
$ alter 'yuzhouwan' , SPLITS => ['1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ]
$ alter 'yuzhouwan' , {METHOD => 'table_att' , SPLIT_POLICY => 'org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy' }
$ balance_switch true
$ balance_switch false
命名空间
$ list_namespace_tables 'hbase'
TABLE
acl
meta
namespace
3 row(s) in 0.0050 seconds
$ list_namespace
NAMESPACE
default
hbase
50 row(s) in 0.3710 seconds
$ create_namespace 'www'
$ exists 'www:yuzhouwan.site'
$ create 'www:yuzhouwan.site' , {NAME => 'info' , VERSIONS=> 9 }, SPLITS => ['1' ,'2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9' ]
$ alter_namespace 'www' , {METHOD => 'set' , 'PROPERTY_NAME' => 'PROPERTY_VALUE' }
$ drop_namespace 'www'
手动 Split
$ create 'yuzhouwan' , {NAME => 'info' , VERSIONS => 3 }, {NAME => 'data' , VERSIONS => 1 }
$ put 'yuzhouwan' , 'rk0001' , 'info:name' , 'Benedict Jin'
$ put 'yuzhouwan' , 'rk0001' , 'info:gender' , 'Man'
$ put 'yuzhouwan' , 'rk0001' , 'data:pic' , '[picture]'
$ put 'yuzhouwan' , 'rk0002' , 'info:name' , 'Yuzhouwan'
$ split 'yuzhouwan' , 'rk0002'
yuzhouwan,,1500964657548 .bd21cdf7ae9e2d8e5b2ed3730eb8b738. yuzhouwan01:60020 rk0002 1.0 0
yuzhouwan,rk0002,1500964657548.76 f95590aed5d39291a087c5e8e83833. yuzhouwan02:60020 rk0002 1.0 2
Phoenix 命令
$ sqlline.py :/phoenix sql.txt
实战技巧
Hive 数据导入(Bulkload)
Bulkload 就是 依据 Hive 表的 schema 解析 RCFile,然后通过 MapReduce 程序 生成 HBase 的 HFile 文件,最后直接利用 bulkload 机制将 HFile 文件导入到 HBase 中。也就是 直接存放到 HDFS 中。这样会比 调用 Api 一条条的导入,效率会高很多(一般的,Hive 数据入库 HBase,都会使用 bulkload 的方式)
集群间复制(CopyTable + Replication)
相关命令
Commend
Comment
add_peer
添加一条复制连接,ID 是连接的标识符,CLUSTER_KEY 的格式是 HBase.zookeeper.quorum: HBase.zookeeper.property.clientPort: zookeeper.znode.parent
list_peers
查看所有的复制连接
enable_peer
设置某条复制连接为可用状态,add_peer 一条连接默认就是 enable
的,通过 disable_peer 命令让该连接变为不可用的时候,可以通过 enable_peer 让连接变成可用
disable_peer
设置某条复制连接为不可用状态
remove_peer
删除某条复制连接
set_peer_tableCFs
设置某条复制连接可以复制的表信息
默认 add_peer 添加的复制连接是可以复制集群所有的表。如果,只想复制某些表的话,就可以用 set_peer_tableCFs,复制连接的粒度可以到表的列族。表之间通过 ‘;’ 分号 隔开,列族之间通过 ‘,’ 逗号 隔开。e.g. set_peer_tableCFs ‘2’, “table1; table2:cf1,cf2; table3:cfA,cfB”。使用 ‘set_peer_tableCFs’ 命令,可以设置复制连接所有的表
append_peer_tableCFs
可以为复制连接添加需要复制的表
remove_peer_tableCFs
为复制连接删除不需要复制的表
show_peer_tableCFs
查看某条复制连接复制的表信息,查出的信息为空时,表示复制所有的表
list_replicated_tables
列出所有复制的表
监控 Replication
HBase Shell
$ status 'replication'
Metrics
源端
Metrics Name
Comment
sizeOfLogQueue
还有多少 WAL 文件没处理
ageOfLastShippedOp
上一次复制延迟时间
shippedBatches
传输了多少批数据
shippedKBs
传输了多少 KB 的数据
shippedOps
传输了多少条数据
logEditsRead
读取了多少个 logEdits
logReadInBytes
读取了多少 KB 数据
logEditsFiltered
实际过滤了多少 logEdits
目的端
Metrics Name
Comment
sink.ageOfLastAppliedOp
上次处理的延迟
sink.appliedBatches
处理的批次数
sink.appliedOps
处理的数据条数
完整步骤
CopyTable
2017 -01 -01 00 :00 :00 (1483200000000 ) 2017 -05 -01 00 :00 :00 (1493568000000 )
$ echo "`date -d " 2017 -01 -01 00 :00 :00 " +%s`000"
$ echo "`date -d " 2017 -05 -01 00 :00 :00 " +%s`000"
$ hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1483200000000 --endtime=1493568000000 --peer.adr=,,...::/
$ hbase org.apache.hadoop.hbase.mapreduce.RowCounter --endtime=1493568000000
$ hadoop fs -du hdfs:// /hbase/data//
Replication
$ list_peers
$ add_peer '' , ",,...::/"
$ disable ''
$ alter '', {NAME => '' , REPLICATION_SCOPE => '1' }
$ enable ''
Trouble shooting
$ hbase hbck
$ balance_switch true
关闭自动分区
$ alter 'yuzhouwan' , {METHOD => 'table_att' , SPLIT_POLICY => 'org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy' }
JMX 获取部分指标项
http://namenode:50070 /jmx?qry=<指标项>
http://namenode:50070 /jmx?qry=hadoop:service=NameNode,name=NameNodeInfo
架构
总图
(图片来源: HBase:The Definitive Guide)
踩过的坑
Table is neither in disabled nor in enabled state
描述
执行完正常的建表语句之后,一直卡在 enable table
这步上
解决
$ is_enabled 'yuzhouwan'
false
$ is_disabled 'yuzhouwan'
false
$ hbase zkcli
$ delete /hbase/table/yuzhouwan
$ hbase hbck -fixMeta -fixAssignments
$ is_enabled 'yuzhouwan'
true
$ disable 'yuzhouwan'
No GCs detected
解决
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=0
-XX:-UseBiasedLocking
十六进制无法在命令行被识别
解决
$ put 'yuzhouwan' , 'rowkey01' , 'cf:age' , "\xFF"
性能优化
社区跟进
详见,《开源社区》
资料
Doc
Blog
Put
Read
Replication
BulkLoad
HBaseBulkLoad
Bulkload Hive 表到 HBase
Flush
HBase – Memstore Flush 深度解析
Code Resource
有态度的 HBase / Spark / BigData
更多资源,欢迎加入,一起交流学习
Technical Discussion Group:(人工智能 1020982(高级)& 1217710(进阶)| BigData 1670647)
Post author:Benedict Jin Post link: https://yuzhouwan.com/posts/45888/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
你可能感兴趣的:(Apache,HBase)
Tomcat从入门到精通:全方位深度解析与实战教程
墨瑾轩
一起学学Java【一】 运维 tomcat java
一、Tomcat入门1.Tomcat简介ApacheTomcat,简称Tomcat,是一个开源的轻量级应用服务器,专为运行JavaServlet和JavaServerPages(JSP)技术设计。它是JavaWeb开发中最常用的Servlet容器之一,遵循JavaServlet和JavaServerPages规范,为开发者提供了一个稳定的、易于使用的部署环境。2.安装与启动安装下载最新版Tomca
Apache Tomcat 远程代码执行漏洞复现(CVE-2025-24813)(附脚本)
iSee857
漏洞复现 apache tomcat java web安全 安全
免责申明:本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。0x01产品描述:ApacheTomcat是一个开源的JavaServlet容器和Web服务器,支持运行JavaServlet、JavaServerP
Spring Boot 与 Couchbase 整合教程
嘵奇
提升自己 spring boot 后端 java
精心整理了最新的面试资料和简历模板,有需要的可以自行获取点击前往百度网盘获取点击前往夸克网盘获取SpringBoot与Couchbase整合教程环境要求JDK8+SpringBoot2.7.xCouchbaseServer7.xMaven/Gradle步骤1:创建SpringBoot项目使用start.spring.io创建项目,添加以下依赖:SpringWeb(可选,用于RESTAPI)Spri
探索Astra DB与LangChain的集成:从向量存储到对话历史
eahba
数据库 langchain python
技术背景介绍AstraDB是DataStax推出的一款无服务器的向量数据库,基于ApacheCassandra®构建,并通过易于使用的JSONAPI提供服务。AstraDB的独特之处在于其强大的向量存储能力,这在处理自然语言处理任务时尤为突出。LangChain与AstraDB的集成为开发者提供了强大的工具链,从数据存储到语义缓存,再到自查询检索,帮助简化复杂的数据操作。核心原理解析LangCha
Linux常见的敏感目录
306Safe
linux php apache
渗透过程中,我们可能会碰到一些任意文件读取,以下是Linux下的常见的敏感目录,可以使用burp进行爆破。/apache/apache/conf/httpd.conf/apache/apache2/conf/httpd.conf/apache/php/php.ini/bin/php.ini/etc/anacrontab/etc/apache/apache.conf/etc/apache/httpd
JDBC:Apache DBUtils的使用
恒奇恒毅
JavaSE
•commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。•API介绍:–org.apache.commons.dbutils.QueryRunner–org.apache.commons.dbutils.ResultSetHandler以及一些实现类–工
SpringBoot集成Pulsar 生产者与消费者示例代码
七维大脑
技术&解决方案分享 java 中间件
目录介绍功能特点一、导入pulsar依赖二、pulsar配置(示例为yml文件)三、生产者示例代码四、消费者代码介绍Pulsar是一个多租户、高性能的服务器到服务器消息传递解决方案。Pulsar最初由Yahoo开发,由Apache软件基金会管理。功能特点Pulsar的主要功能如下:原生支持Pulsar实例中的多个集群,并可跨集群无缝地复制消息。非常低的发布和端到端延迟。无缝扩展到超过一百万个主题。
Java:Apache HttpClient中HttpRoute用法的介绍
netyeaxi
Java java apache 开发语言
当使用ApacheHttpClient组件时,经常会用到它的连接池组件。典型的代码如下:PoolingHttpClientConnectionManagerconnectionManager=newPoolingHttpClientConnectionManager();connectionManager.setMaxTotal(httpConfig.getMaxPoolTotal());conn
Apache Tomcat漏洞公开发布仅30小时后即遭利用
FreeBuf-
资讯 apache tomcat 网络 安全
近日,ApacheTomcat曝出一项安全漏洞,在公开发布概念验证(PoC)仅30小时后,该漏洞即遭到攻击者利用。这一漏洞编号为CVE-2025-24813,主要影响以下版本:1.ApacheTomcat11.0.0-M1至11.0.22.ApacheTomcat10.1.0-M1至10.1.343.ApacheTomcat9.0.0-M1至9.0.98漏洞详情与利用条件该漏洞可能导致远程代码执行
深入理解 Kafka 的 ConsumerRebalanceListener
t0_54coder
编程问题解决手册 kafka linq 分布式
深入理解Kafka的ConsumerRebalanceListener在分布式系统中,数据的一致性和可靠性是至关重要的。ApacheKafka作为一个流行的分布式流处理平台,提供了强大的数据传输和处理能力。在Kafka中,消费者组(ConsumerGroup)的概念允许多个消费者实例共同处理一个主题的数据。然而,当消费者实例的个数发生变化时,如何确保数据的平衡和一致性呢?这就引出了我们今天要讨论的
Apache Tomcat默认文件漏洞
m0_67401606
java tomcat apache servlet 后端
ApacheTomcat默认文件漏洞一、概要漏洞描述:默认错误页面,默认索引页面,示例JSP和/或示例servlet安装在远程ApacheTomcat服务器上。应删除这些文件,因为它们可能有助于攻击者发现有关远程Tomcat安装或主机本身的信息。漏洞风险:中修复建议:删除默认索引页并删除示例JSP和servlet。按照Tomcat或OWASP说明更换或修改默认错误页面。二、解决办法1、直接删除do
【Apache Tomcat信息泄露漏洞】
猫饭_ACE
业务所需 tomcat apache java
一、漏洞详情ApacheTomcat是一个流行的开源Web服务器和Java代码的Servlet容器。9月28日,Apache发布安全公告,公开披露了Tomcat中的一个信息泄露漏洞(CVE-2021-43980)。由于某些Tomcat版本中的阻塞式读写的简化实现导致存在并发错误(极难触发),可能使客户端连接共享一个Http11Processor实例,导致响应或部分响应被错误的客户端接收,造成信息泄
大数据学习(75)-大数据组件总结
viperrrrrrr
大数据 impala yarn hdfs hive CDH mapreduce
大数据学习系列专栏:哲学语录:用力所能及,改变世界。如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦一、CDHCDH(ClouderaDistributionIncludingApacheHadoop)是由Cloudera公司提供的一个集成了ApacheHadoop以及相关生态系统的发行版本。CDH是一个大数据平台,简化和加速了大数据处理分析的部署和管理。CDH提供Hadoop的
Sqoop安装部署
愿与狸花过一生
大数据 sqoop hadoop hive
ApacheSqoop简介Sqoop(SQL-to-Hadoop)是Apache开源项目,主要用于:将关系型数据库中的数据导入Hadoop分布式文件系统(HDFS)或相关组件(如Hive、HBase)。将Hadoop处理后的数据导出回关系型数据库。核心特性批量数据传输支持从数据库表到HDFS/Hive的全量或增量数据迁移。并行化处理基于MapReduce实现并行导入导出,提升大数据量场景的效率。自
mysql总结
tianyunlinger
大数据 mysql 数据库
MySQL基础1.数据库基本介绍数据库定义:用于存储数据的仓库,通过SQL语句操作。数据库作用:存储应用程序中的数据,便于管理和查询。数据库分类:关系型数据库(如MySQL、Oracle、DB2)和非关系型数据库(如Redis、HBase)。关系型数据库:通过E-R图描述数据之间的关系,支持复杂查询。2.MySQL在Linux中的安装安装前准备:配置防火墙、创建统一的管理目录(如/export/s
mysql数据库应用与开发姜桂洪 课后答案_清华大学出版社-图书详情-《MySQL数据库应用与开发》...
韦盛江
课后答案
前言Oracle公司的MySQL是目前最流行的关系数据库管理系统之一。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL数据库以其精巧灵活、运行速度快、经济适用性强、开放源码等优势,作为网站数据库获得许多中小型网站的开发公司的青睐。MySQL性能卓越,搭配PHP和Apache可组成良好的软件开发环境,并且已经大量部署到中小型企业和高校的教学平台。本书从教学实际需求出发,结合
优化Apache Spark性能之JVM参数配置指南
weixin_30777913
jvm spark 大数据 开发语言 性能优化
ApacheSpark运行在JVM之上,JVM的垃圾回收(GC)、内存管理以及堆外内存使用情况,会直接对Spark任务的执行效率产生影响。因此,合理配置JVM参数是优化Spark性能的关键步骤,以下将详细介绍优化策略和配置建议。通过以下优化方法,可以显著减少GC停顿时间、提升内存利用率,进而提高Spark作业吞吐量和数据处理效率。同时,要根据具体的工作负载和集群配置进行调整,并定期监控Spark应
快速启动flink项目
for your wish
flink java 大数据
按照这个步骤1分钟内创建完成idea-----File----new---Project------Maven----Createfromarchetype----AddArchetype弹出框:GroupId填org.apache.flinkArtifactId填flink-quickstart-javaVersion填1.14.0选中刚刚添加的Archetype,点Next填写你要创建的这个f
IDEA本地启动flink 任务
Direction_Wind
intellij-idea flink java
1pom中添加org.apache.flinkflink-clients_${scala.binary.version}${flink.version}org.apache.flinkflink-runtime-web_${scala.binary.version}${flink.version}2下载flink-dist包并3打印日志中搜索localhost可以找到flink的管理页面
[解决] PDF转图片,中文乱码或显示方框的解决方案
DazedMen
开发遇到的问题 pdf java pdf转图片
在Java开发中,将PDF文件转换为图片是一项常见的需求,但过程中可能会遇到中文乱码或显示方框的问题。本文将深入探讨这一问题,并提供详细的解决方案,帮助开发者顺利地完成PDF到图片的转换。一、问题现象在使用Java库(如ApachePDFBox)将PDF转换为图片时,如果PDF文件中包含中文字符,转换后的图片中可能会出现中文乱码或显示为方框的情况。控制台日志可能会显示类似以下信息:noglyphf
Mybatis和Mybatis-plus常用注解
AWen_X
Java常用框架注解 mybatis 开发语言 java 后端 spring boot spring
Mybatis和Mybatis-Plus常用注解一、Mybatis常用注解1.@Select注解说明:标记查询语句,用于定义查询操作的SQL语句。代码示例:@Select("SELECT*FROMusersWHEREid=#{id}")UsergetUserById(@Param("id")Longid);注解处理类:由org.apache.ibatis.builder.annotation.Ma
第二十九篇 数据仓库与商务智能:技术演进与前沿趋势深度解析
随缘而动,随遇而安
数据库 数据仓库 大数据 数据库架构 数据库开发
声明:文章内容仅供参考,需仔细甄别。文中技术名称属相关方商标,仅作技术描述;代码示例为交流学习用途,部分参考开源文档(Apache2.0/GPLv3);案例数据已脱敏,技术推荐保持中立;法规解读仅供参考,请以《网络安全法》《数据安全法》官方解释为准。目录一、核心差异:技术定位与实现路径1.1核心能力矩阵二、协同关系:现代数据供应链的双引擎2.1数据价值链协同2.2典型技术栈集成三、前沿技术动态(2
基于BCLinux制作Apache HTTPD 2.4.63 的RPM安装包
IT布道
apache
在这之前,我写过一篇《基于CentOS7制作ApacheHTTPD2.4.58的RPM安装包》的文章。本文大部分内容和之前差不多,但因为操作系统由CentOS7变成了BC-Linux,所以,有些内容就可以删减了。编译环境:操作系统:BC-Linuxhttpd版本:2.4.63制作工具:rpmbuild(这个之前的文章有介绍,看这里)下载httpd源码:官网目前的最新版本是2.4.63(2025.1
【JavaEE】Mybatis 简单启动
鸽鸽程序猿
JavaEE java-ee mybatis 数据库
目录一、Mybatis简介二、MyBatis⼊⻔2.1创建项目2.2准备数据2.3配置文件2.4实体类2.5执行结果一、Mybatis简介Mybatis是一个操作数据库驱动的持久层框架,用来简化JDBC操作的,SpringBoot集成了这个框架。MyBatis本是Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到了googlecode,并且改名为MyBatis。2013
JAVA学习-练习试用Java实现“实现一个Spark应用,对大数据集中的文本数据进行情感分析和关键词筛选”
守护者170
java学习 java 学习
问题:实现一个Spark应用,对大数据集中的文本数据进行情感分析和关键词筛选。解答思路:要实现一个Spark应用,对大数据集中的文本数据进行情感分析和关键词筛选,需要按照以下步骤进行:1.环境准备确保的环境中已经安装了ApacheSpark。可以从[ApacheSpark官网](https://spark.apache.org/downloads.html)下载并安装。2.创建Spark应用以下是
ActiveMQ
z小天才b
ActiveMQ java-activemq activemq spring boot
一、ActiveMQ概述1.1什么是ActiveMQ?ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它完全支持JMS(Java消息服务)规范,并提供了高可用性、高性能和可扩展性。ActiveMQ允许不同的应用程序通过消息传递进行异步通信,从而实现系统解耦。1.2ActiveMQ核心特性多协议支持:支持OpenWire、STOMP、AMQP、MQTT等多种协议持久化:支持多种持久
使用Jmeter进行接口测试的基本步骤有哪些?
海姐软件测试
Jmeter 测试工具 职场和发展 面试
使用JMeter进行接口测试通常包含以下基本步骤:1.环境准备下载与安装:访问ApacheJMeter的官方网站(ApacheJMeter-ApacheJMeter™)下载适合你操作系统的JMeter版本,解压下载的压缩包到指定目录。启动JMeter:在解压后的目录中,找到bin文件夹,根据操作系统不同,双击jmeter.bat(Windows)或jmeter.sh(Linux/Mac)启动JMe
CentOS 7系统中hadoop的安装和环境配置
代码小张z
centos hadoop linux
1.创建Hadoop安装解压路径:mkdir-p/usr/hadoop2.进入路径:cd/usr/hadoop3.下载安装包(我这里用的是阿里云镜像压缩包):wgethttps://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz4.解压安装包到hadoop文件路径:tar-zxvf/usr/hadoo
RocketMQ 和 Kafka
重生之我在成电转码
rocketmq Kafka java 消息队列
✅RocketMQ和Kafka是两种非常流行的分布式消息队列系统,它们广泛用于大规模、高并发的消息传递和事件驱动架构中。虽然它们都属于消息队列,但在设计理念、特性和应用场景上有一些差异。接下来,我们来深入分析这两者的区别与优缺点。一、Kafka和RocketMQ的概述✅1️⃣KafkaKafka是一个分布式的流处理平台,由Apache软件基金会开发,最初由LinkedIn开发并开源。Kafka主要
麒麟V10 arm cpu aarch64 下编译 RocketMQ-Client-CPP 2.2.0
eamon100
Linux操作系统 java-rocketmq rocketmq c++
国产自主可控服务器需要访问RocketMQ消息队列,最新的C++SDK是2020年发布的rocketmq-client-cpp-2.2.0这个版本支持TLS模式。用默认的版本安装遇到一些问题,记录一下。下载Releases·apache/rocketmq-client-cpp·GitHubhttps://github.com/apache/rocketmq-client-cpp/releases操
多线程编程之join()方法
周凡杨
java JOIN 多线程 编程 线程
现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢?
Java实现过程如下:
public class T1 implements Runnabl
java中switch的使用
bingyingao
java enum break continue
java中的switch仅支持case条件仅支持int、enum两种类型。
用enum的时候,不能直接写下列形式。
switch (timeType) {
case ProdtransTimeTypeEnum.DAILY:
break;
default:
br
hive having count 不能去重
daizj
hive 去重 having count 计数
hive在使用having count()是,不支持去重计数
hive (default)> select imei from t_test_phonenum where ds=20150701 group by imei having count(distinct phone_num)>1 limit 10;
FAILED: SemanticExcep
WebSphere对JSP的缓存
周凡杨
WAS JSP 缓存
对于线网上的工程,更新JSP到WebSphere后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存。要清除WebSphere中JSP的缓存,就要找到WAS安装后的根目录。
现服务
设计模式总结
朱辉辉33
java 设计模式
1.工厂模式
1.1 工厂方法模式 (由一个工厂类管理构造方法)
1.1.1普通工厂模式(一个工厂类中只有一个方法)
1.1.2多工厂模式(一个工厂类中有多个方法)
1.1.3静态工厂模式(将工厂类中的方法变成静态方法)
&n
实例:供应商管理报表需求调研报告
老A不折腾
finereport 报表系统 报表软件 信息化选型
引言
随着企业集团的生产规模扩张,为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表体系成为必须。 业务目标
1、通过报表为采购决策提供数据分析与支撑
2、对供应商进行综合评估以及管理,合理管理和
mysql
林鹤霄
转载源:http://blog.sina.com.cn/s/blog_4f925fc30100rx5l.html
mysql -uroot -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@centos var]# service mysql
Linux下多线程堆栈查看工具(pstree、ps、pstack)
aigo
linux
原文:http://blog.csdn.net/yfkiss/article/details/6729364
1. pstree
pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) &n
html input与textarea 值改变事件
alxw4616
JavaScript
// 文本输入框(input) 文本域(textarea)值改变事件
// onpropertychange(IE) oninput(w3c)
$('input,textarea').on('propertychange input', function(event) {
console.log($(this).val())
});
String类的基本用法
百合不是茶
String
字符串的用法;
// 根据字节数组创建字符串
byte[] by = { 'a', 'b', 'c', 'd' };
String newByteString = new String(by);
1,length() 获取字符串的长度
&nbs
JDK1.5 Semaphore实例
bijian1013
java thread java多线程 Semaphore
Semaphore类
一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。
S
使用GZip来压缩传输量
bijian1013
java GZip
启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6。
PJL Compressi
【Java范型三】Java范型详解之范型类型通配符
bit1129
java
定义如下一个简单的范型类,
package com.tom.lang.generics;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value = value;
}
}
【Hadoop十二】HDFS常用命令
bit1129
hadoop
1. 修改日志文件查看器
hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml
cat edits.xml
修改日志文件转储为xml格式的edits.xml文件,其中每条RECORD就是一个操作事务日志
2. fsimage查看HDFS中的块信息等
&nb
怎样区别nginx中rewrite时break和last
ronin47
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
location /
{
proxy_pass http://test;
java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class CombinationToSum {
/*
第21 题
2010 年中兴面试题
编程求解:
输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 ,
使其和等
eclipse svn 帐号密码修改问题
开窍的石头
eclipse SVN svn帐号密码修改
问题描述:
Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。
解决思路:
删除subclipse记录的帐号、密码信息,重新输入
[电子商务]传统商务活动与互联网的结合
comsci
电子商务
某一个传统名牌产品,过去销售的地点就在某些特定的地区和阶层,现在进入互联网之后,用户的数量群突然扩大了无数倍,但是,这种产品潜在的劣势也被放大了无数倍,这种销售利润与经营风险同步放大的效应,在最近几年将会频繁出现。。。。
如何避免销售量和利润率增加的
java 解析 properties-使用 Properties-可以指定配置文件路径
cuityang
java properties
#mq
xdr.mq.url=tcp://192.168.100.15:61618;
import java.io.IOException;
import java.util.Properties;
public class Test {
String conf = "log4j.properties";
private static final
Java核心问题集锦
darrenzhu
java 基础 核心 难点
注意,这里的参考文章基本来自Effective Java和jdk源码
1)ConcurrentModificationException
当你用for each遍历一个list时,如果你在循环主体代码中修改list中的元素,将会得到这个Exception,解决的办法是:
1)用listIterator, 它支持在遍历的过程中修改元素,
2)不用listIterator, new一个
1分钟学会Markdown语法
dcj3sjt126com
markdown
markdown 简明语法 基本符号
*,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号
空白行表示另起一个段落
`是表示inline代码,tab是用来标记 代码段,分别对应html的code,pre标签
换行
单一段落( <p>) 用一个空白行
连续两个空格 会变成一个 <br>
连续3个符号,然后是空行
Gson使用二(GsonBuilder)
eksliang
json gson GsonBuilder
转载请出自出处:http://eksliang.iteye.com/blog/2175473 一.概述
GsonBuilder用来定制java跟json之间的转换格式
二.基本使用
实体测试类:
温馨提示:默认情况下@Expose注解是不起作用的,除非你用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeField
报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList
gundumw100
android
有一个工程,本来运行是正常的,我想把它移植到另一台PC上,结果报:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobovip.bgr/com.mobovip.bgr.MainActivity}: java.lang.ClassNotFoundException: Didn't f
JavaWeb之JSP指令
ihuning
javaweb
要点
JSP指令简介
page指令
include指令
JSP指令简介
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令的基本语法格式:
<%@ 指令 属性名="
mac上编译FFmpeg跑ios
啸笑天
ffmpeg
1、下载文件:https://github.com/libav/gas-preprocessor, 复制gas-preprocessor.pl到/usr/local/bin/下, 修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl
2、安装yasm-1.2.0
curl http://www.tortall.net/projects/yasm
sql mysql oracle中字符串连接
macroli
oracle sql mysql SQL Server
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
Mysql 中 CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CON
Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate
qiaolevip
学习永无止境 每天进步一点点 git 纵观千象
// 报错如下:
$ git pull origin master
fatal: unable to access 'https://git.xxx.com/': SSL certificate problem: unable to get local issuer ce
rtificate
// 原因:
由于git最新版默认使用ssl安全验证,但是我们是使用的git未设
windows命令行设置wifi
surfingll
windows wifi 笔记本wifi
还没有讨厌无线wifi的无尽广告么,还在耐心等待它慢慢启动么
教你命令行设置 笔记本电脑wifi:
1、开启wifi命令
netsh wlan set hostednetwork mode=allow ssid=surf8 key=bb123456
netsh wlan start hostednetwork
pause
其中pause是等待输入,可以去掉
2、
Linux(Ubuntu)下安装sysv-rc-conf
wmlJava
linux ubuntu sysv-rc-conf
安装:sudo apt-get install sysv-rc-conf 使用:sudo sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
背景知识
sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconf
svn切换环境,重发布应用多了javaee标签前缀
zengshaotao
javaee
更换了开发环境,从杭州,改变到了上海。svn的地址肯定要切换的,切换之前需要将原svn自带的.svn文件信息删除,可手动删除,也可通过废弃原来的svn位置提示删除.svn时删除。
然后就是按照最新的svn地址和规范建立相关的目录信息,再将原来的纯代码信息上传到新的环境。然后再重新检出,这样每次修改后就可以看到哪些文件被修改过,这对于增量发布的规范特别有用。
检出