`
eric_weitm
  • 浏览: 243091 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

java spi机制

    博客分类:
  • java
在spring出现之前,需要使用IOC的机制来动态提供实现类,这时jdk自身提供了一种轻量级的实现。具体方式: 1、需要方定义接口,并且用 java.util.ServiceLoader加载具体的实现(通过无参数构造函数实现对象创建) 2、提供者在jar包的META-INF/services/目录里创建前面接口的全名文件 3、在文本文件里写上具体实现类的全名 4、具体的例子,数据库驱动spi META-INF/services/java.sql.Driver ,实现者 /mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.ja ...
一、事物 0、事物的ACID:原子性、一致性、隔离性(不受干扰)、持久性(提交后不可回滚) 1、对数据库的所有操作,内部全部封装成事物(transaction)来运行。事物要满足ACID特性,数据库的恢复和管理全部基于事物。 2、数据库内的数据是所有人共享的,为了保证事物的ACID特性,必须在事物之间进行同步 3、最安全的同步策略是事物之间串行执行,但是效率最低、并发度最低,所以都会使用并发的方式 4、并发调度执行时,导致数据不一致。类型包括: 1》 丢失修改(Lost Update)2》 读“脏”数据(Dirty Read):事物结束前,别的事物回滚了所读的数据 3》 不可重 ...
lts 基本逻辑: lts 代表light-task-scheduler,https://github.com/ltsopensource/light-task-scheduler   一、是什么 分布式动态调度的框架 二、为什么 1、周期性、定时性的任务可以使用调度器scheduler(每个任务一个线程,对于周期性任务非常浪费资源) 2、如果有非常多调度性任务需要处理,可以每台机器分别布置一套调度器,并且不同机器调度不同的任务。 3、2中每个机器进行调度很浪费(比如每1ms检查一次条件),不同的任务不能跨机器共享硬件,而且无法看到所有调度任务的整体的情况。 另一种方案是, ...

关于java log框架

    博客分类:
  • java
log4j:最传统的log框架,核心概念 Logger appender layout commons-log:避免库实现者限制使用者的log实现,实现动态log绑定 slf4j:动态绑定有时会失败,或者不可控,slf4j使用静态绑定 logback:增强版的log4j,提供 配置扫描更新、占位符、运行时过滤器、处理IO异常……等功能     目前最佳搭配:slf4j logback   slf4j实现方式:org.slf4j.impl.StaticLoggerBinder由集成方实现   某个配置例子logback.xml <?xml version=" ...
一、应用分类: 数据库交易类、数据处理(大数据、机器学习、搜索、分布式存储)、IM、OA 二、演化过程 1、业务数字化(MIS)->数据库增删改查->数据分析 2、ETL、数据仓库->大数据、大规模分布式数据处理->大规模机器学习->实时数据处理 三、各个技术之间的演化对应关系 mysql VS redis  ETL VS storm 数据仓库 VS hive 数据挖掘 VS 机器学习 OA VS 工作流 IPC VS RPC 内存 VS redis 查找 VS 搜索(solr) 文件系统 VS 分布式存储 map/reduce VS ...
1、筛选数据 complaints[['Complaint Type', 'Borough']][:10]   is_noise = complaints['Complaint Type'] == "Noise - Street/Sidewalk" in_brooklyn = complaints['Borough'] == "BROOKLYN" complaints[is_noise & in_brooklyn][:5] 2、计数 complaint_counts = complaints['Complaint Type'].va ...
区块链技术概览 一、区块链主要组织 1、R3区块链联盟(全球顶级金融机构) 用以太坊和微软Azure技术,将11家银行连接至分布式私人账本Corda 源代码 https://github.com/corda/corda 实现语言  Kotlin(JVM) 2、超级账本hyperledger (代表技 ...
c++以太坊编译 https://github.com/ethereum/cpp-ethereum git clone --recursive https://github.com/ethereum/cpp-ethereum.git yum install leveldb-devel libmicrohttpd-devel   mkdir build; cd build   cmake ..                cmake --build .   编译结果在每个子目录中

编译solc

git clone https://github.com/ethereum/solidity.git cd solidity mkdir build cd build   # gcc yum install centos-release-scl-rh centos-release-scl yum check-update yum install devtoolset-3-gcc  devtoolset-3-gcc-c++ source /opt/rh/devtoolset-3/enable scl enable devtoolset-2 bash   # cmake ...

java并发二 api 抽象

    博客分类:
  • java
一、cpu cache 层面volatile 二、灵活的同步机制 对应互斥和同步 volatile--> atomicXXX syncronized-->Lock wait/notify-->Condition/LockSupport 三、数据结构  1、ConcurrentHashMap 分段加锁(二级的map结构) hashmap的实现:table数组里放了多个桶(bucket),一个桶对应一个hashcode,有冲突的时候用链表链接,jdk8中如果一个桶内的节点太多,会使用红黑树。  concurrencyLevel 分段的个数2^n initialC ...
一、概念 1、所有的并发只有2种:互斥(某种锁) +同步(某种条件) 2、互斥:只允许一个线程访问,jvm在调度时间片时使用 3、同步:应用间的协调,是应用为了实现某种逻辑而写的,一般基于互斥实现 4、POSIX中定义的工 ...

java invokedynamic和GC

    博客分类:
  • java
invokedynamic:java是静态类型语言,每一个函数调用一定是确定的映射到某个方法区,之后用解释器来执行;invokedynamic允许程序员指定,某个函数调用具体映射到哪个方法区(Callsite),可以实现根据数据类型的不同调用不同的指令(无类型的语言)。相应的Class文件的常量区里也设定了对应的字段。 jit:即时编译,有一个编译的过程,本身花费时间,同时表以后的体积膨胀很厉害,所以不是jit一定优于AOT gc:针对堆和方法区 一、算法 1、标记-清除:大量碎片,效率低 2、复制:内存使用率低(只有50%) 3、标记-压缩:清除的同时,进行压缩 4、分代收集: ...
1、java = jvm + 库 2、jvm = 数据类型+内存管理和GC+指令解析+函数调用+多线程+JIT 3、数据类型= 原子类型 + 引用 + 数组 4、动态运行:栈 = PC + 线程栈 每一帧 = 一个调用深度= 局部变量表+操作数栈 5、一个指令执行的例子: public ...
redis 配置和使用 一、安装: cd /usr/src tar xzf redis-3.0.7.tar.gz cd redis-3.0.7 make cd src make install PREFIX=/usr/local/redis mkdir /usr/local/redis/etc/ mv redis.conf /usr/local/redis/etc/   启动: /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf /usr/local/redis/bin/redis-cli ...
-- lua脚本要求所有的功能,不依赖内部或外部的状态 -- cd /root/workspace/java -- /usr/local/redis/bin/redis-cli -p 6379 --ldb --eval api.lua r , PRE -- /usr/local/redis/bin/redis-server 6379.conf -- /usr/local/redis/bin/redis-cli shutdown local keys = KEYS local args = ARGV local Wtm = {} -- Wtm library ...
Global site tag (gtag.js) - Google Analytics