- 博客(607)
- 收藏
- 关注
原创 GPU编程(1)GPU架构
风扇在下面,采用热管方式,用气体液体的转化来带走热量。包裹热管的是铜制散热板,外围是铝制格扇,更快排除热量。注意,不是每一个cuda核心可以支持整数计算。视频接口个pcie都是直接连接GPU。所有的供电模块公用一个PWM芯片。显存的型号就称之为显存颗粒。电源/pcie/视频输出。
2024-10-17 09:02:44
275
原创 Springboot中的起步依赖和自动装配
简单来说,每个依赖就是一盘菜,starter就是一个套餐,比如烤鸭和他的饼和蘸酱,而spring-boot-dependencies是一个口味精调过的套餐集合,保证这个套餐的每一个,都适合某个口味的食客。各种autoconfigure后缀的和其他依赖。starter内部时一些依赖,包括各种autoconfigure依赖和其他依赖。一般而言具体的版本配置由spring-boot-dependencies确定。注意,要是用EnableAutoConfiguration的依赖。
2024-02-04 17:31:18
430
1
原创 java的热部署/热更新(2)类加载机制
比如一个DataSource类里面用static字段维持着对若干个mysql的链接,按照mysql的某种alias进行查找。诚然,我们可以要求这个DataSource类的作者修改代码,但是在实际工作中,我们往往没有规范和审查他人写代码的权力和时间。但是不可避免的有一个问题,就是部分底层类是共用的。会在不同的webapp下共用。简述这个逻辑,仍然是一个基础类由框架加载器加载,其他类遵循先找其他bundle,再找本bundle的逻辑。类加载机制最困难的就是类的状态性。更直白的说,就是类的static的字段。
2024-02-04 16:24:16
593
原创 java的热部署/热更新(1)背景
所谓热部署,就是在应用正在运行时升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件,同时触发Spring以及其他常用第三方框架的一系列重新加载的过程。
2024-02-04 11:36:43
429
原创 posix
背景POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准。posix是IEEE制定的unix系统标准。目的是方便程序在不同unix操作系统之间进行移植。发展成熟于1991年~1993年。unix系统遵从了posix规范。linux也恰恰是在这个时段被开发的。所以Linus从一开始就对posix极为感兴趣。linux对unix有着良好的支持。window
2022-02-14 12:19:25
350
原创 规则引擎的行业概况
核心观点规则引擎使用于规则复杂度中等,规则变化频繁的场景。主要应用营销:相对来规则讲比较简单,主要是依据于预计算的人物标签就可以。更关心吞吐量,毕竟营销活动一般都是要挂在首页上的。当然营销一样会有实时场景,比如说反作弊,建议采取异步链路去加黑。风控:规则数据比较多,而且牵扯到用户核心敏感数据,会涉及外部数据采集,当天实时数据累计等,不能进行T+1的预计算。社交网站过滤等。其他规则密密集变动型应用:比如说税务核算,话费计算等等。各种规则引擎droolsaviator
2022-02-10 14:33:56
922
原创 设备指纹是什么
一般而言,一个公司会对每一个访问本公司服务的客户端创造一个指纹(包括web方式,APP,小程序)等来作为这个设备的唯一识别码,称为Device Fingerprint流程为客户端采集硬件信息:如固定信息,包括imei,mac,cpu,存储卡,动态信息,包括电池,传感器,内存,cpu。比如usb经常链接,电量常满,没有锁屏密码,设备倾斜角度不变的设备可能涉嫌群控,软件信息:如版本,调试,rom,root。比如输入法是自定义输入法,有按键精灵。环境信息: 比如有一些root操作。网络信息:如IP,风险
2022-01-27 11:51:08
5292
8
原创 数据湖概述
数据湖的解决方案主要有三种delta(背后是spark开发公司Databricks)Apache Iceberg(NetFlix推出的)Apache Hudi(Ubser推出的)
2022-01-18 14:39:02
1688
原创 LFU LRU和TinyLFU
LFULeast Frequently Used。在数据访问随时间概率不变时,这种缓存的命中率是最高的。而且LFU的成本也是最高的。LRU依赖于“时间局部性”的一种替代LFU的缓存方案叫做LRU,LRU中最近被访问的数据项都会被插入缓存,而当缓存满时,最久未被访问的会被淘汰。相比于LFU,LRU的性能会更高,而且自动适应数据的时间局部性,并且可以应对数据的突发流量。但是在实际的场景中,LRU需要更大的缓存空间,才能和LFU达到相同的缓存命中率。LRU的典型实现如下对于访问的节点,移送到/建立在
2022-01-16 21:24:22
845
原创 中国的网络部署
CHINANET,CERNET(教育网),CSTNET(科学技术网),CHINAGBN(经济信息网),合起来称为中国四大骨干网。其中 CHINANET有八个核心节点北京(骨干网节点)上海(骨干网节点)广州(骨干网节点)沈阳南京武汉成都西安核心节点可以和国际网络互联。骨干网节点部署有国际出口路由器。同时,一句八个核心节点,划分了八个大区。大区之间要想通信,必须经过核心节点之间的转发。所有的ISP都是以CHINANET资源为基础,为用户提供互联网接入服务。当然运营商也部署有自己的网络,比
2022-01-16 17:33:50
1394
原创 互联网上的路由和traceRoute
一个典型的结果如下(国内很多网络设备都关闭了traceroute,真是小气啊)很奇怪的是为什么IP中出现了一个内网地址呢?答案是内网外网只是人为制定的,并没有体现在网络协议栈的实现的。下一跳完全是路由表决定的。一些ISP内部互联使用的就是内网地址。这本质上没有什么问题,只要不冲突就可以。...
2022-01-16 17:18:10
1250
原创 DNS协议和问题排查
DNS基本介绍使用53端口。dig命令domain information groper。比nslookup更强大。可以看到上面进行了解析。默认查询的是A记录。使用的DNS服务器是192.168.4.251。端口是53。但是这个IP是ping不通的。如何确定这个记录是否正确的?我们换一个DNS服务器试一下。可见确实不正确。...
2022-01-16 13:52:27
402
原创 Java内存dump的结果
jmapjmap(linux下特有,也是很常用的一个命令)观察运行中的jvm物理内存的占用情况。参数如下:-heap:打印jvm heap的情况-histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。heap文件如下Attaching to process ID 129483, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.28
2022-01-12 14:47:22
1234
原创 java中的协程Quasar
HELLOWORLDpublic class Helloworld { @Suspendable static void m1() throws InterruptedException, SuspendExecution { String m = "m1"; //System.out.println("m1 begin"); m = m2(); //System.out.println("m1 end");
2022-01-10 23:55:18
371
原创 java调试和性能监测体系
https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/architecture.html
2021-12-27 14:29:18
260
原创 JVM和直接内存(JDK1.8)
一个简单的JVM的对内存的情况如下所示。可以看见,原来在堆中分配的永久代被移动到了meta区。而meta是单独的空间,使用JVM的直接内存。然而用户其实也可以使用直接内存。直接内存:direct/off-heap/native memory ,大家怎么叫都可以。用户可以使用如下方式使用直接内存:使用未公开的UnsafeNIO包下ByteBuffer。`...
2021-12-26 17:32:40
682
原创 移动设备的种种标识符
IMEI:International Mobile Equipment Identity,是手机设备的唯一识别码,例如,IMEI=358022050437682;也被称为手机的串号。相当于手机的身份证号。MAC地址:Media Access Control Address,设备在以太网络中是识别码,例如,MAC=48:43:7C:16:E7:65;正规厂家生产的手机肯定不会出现mac重复的问题。但是,mac是可以用户手动更改的。IDFA:Identity For Ad,广告标示符,适用于对外例如广告推
2021-12-15 16:24:55
1077
原创 磁盘和文件系统(5)
文件系统磁盘设备的使用有三个步骤,第一创建新分区,第二指定文件系统,第三进行挂载。没有文件系统的设备被称为裸设备创建文件系统的过程叫做格式化常见的文件系统fat32,ntfs,是windows所使用的。ext2,ext3,ext4是linux推荐的文件系统。不同文件系统支持的分区大小,单个文件大小,日志功能有区别,尤其是性能方面。llinux不同版本支持的文件系统不同。即使不支持,通过安装驱动也可以读取。mke2fs可以用来创建文件系统。fsck可以用来检查文件系统是否损坏,也可以用来恢
2021-11-17 21:39:58
925
原创 配置flink环境
下载https://archive.apache.org/dist/flink/flink-1.9.0/我们选择下载flink-1.9.0-bin-scala_2.11.tgz 。从名字上可以看出,需要scala_2.11的环境。如果没有,需要在下面地址下载https://www.scala-lang.org/download/参考下面文档进行安装https://www.jianshu.com/p/d7c94372020c安装本地环境flink支持如下环境LocalEnvironmen
2021-05-20 11:48:56
369
原创 flink的物理执行图
https://developer.aliyun.com/article/225618概念https://www.freesion.com/article/4063674538/Task(任务):Task 是一个阶段多个功能相同 subTask 的集合,类似于 Spark 中的 TaskSet。subTask(子任务):subTask 是 Flink 中任务最小执行单元,是一个 Java 类的实例,这个 Java 类中有属性和方法,完成具体的计算逻辑。Operator Chains(算
2021-03-29 21:52:35
504
原创 Mysql缓存的相关知识
关于peparedStatementhttps://blog.youkuaiyun.com/alex_xfboy/article/details/83901351关于查询结果
2021-03-15 19:26:19
96
原创 Flink代码阅读之API
TABLE APIDataSet/DataStream APIProcessFunction API最底层的API一共是八个ProcessFunctionProcessFunction dataStreamKeyedProcessFunction 用于KeyedStream,keyBy之后的流处理CoProcessFunction 用于connect连接的流ProcessJoinFunction 用于join流操作BroadcastProcessFunction 用于广播KeyedBr
2021-02-20 16:25:04
106
原创 Flink代码阅读之部署方式
客户端提交任务的方式主要有以下几种命令行REST接口SQLpythonscalaJobManager有三种提交任务的模式Application Mode: runs the cluster exclusively for one application. The job’s main method (or client) gets executed on the JobManager. Calling execute/executeAsync multiple times in an .
2021-02-08 20:51:44
135
原创 Flink代码阅读之代码架构
flink-core基础的内部数据定义一些函数(function)The base interface for all user-defined functions.This interface is empty in order to allow extending interfaces to be SAM (single abstract method) interfaces that can be implemented via Java 8 lambdas.org.apache.flink
2021-02-08 18:06:22
306
1
原创 linux命令之vmstat
$ vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st4294939112 0 0 61296 0 5746148 0 0 134 2602 0 0 1 1 93
2021-01-10 10:31:17
103
转载 JUC之AQS总结
转载https://www.cnblogs.com/liqiangchn/p/11960944.html简单而言AQS内部维护了这样一个CLH队列。这样,只要具体的锁的实现利用这个队列(调用acquire release)就可以了。acquire的第一步,尝试CAS直接修改状态。如果失败了,那就老老实实去排队吧获取失败的线程,加入到同步队列的队尾;加入到队列中后,如果当前节点的前驱节点为头节点再次尝试获取同步状态如果头节点的下一个节点尝试获取同步状态失败后,会进入等待状态如果抢占成功
2020-12-27 23:08:53
189
原创 ngnix
转载https://blog.youkuaiyun.com/weixin_47082274/article/details/107333450架构简介首先要明白,Nginx 采用的是多进程(单线程) & 多路IO复用模型。使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器。多进程的工作模式Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。master 接收来自外界的信号,向各 worker 进程发送信号,每个进程都有可能来处理这个连接。
2020-12-27 22:27:31
116
原创 分布式系统限流
hystrix可以参考下面的博文https://blog.youkuaiyun.com/loushuiyifan/article/details/82702522支付宝内部用的是guardianhttps://help.aliyun.com/document_detail/149848.html资源隔离的思想参考上述的舱壁隔离模式,在hystrix中提供了两种资源隔离策略:线程池隔离、信号量隔离。线程池隔离:线程池隔离会为每一个依赖创建一个线程池来处理来自该依赖的请求,不同的依赖线程池相互隔离,就算依赖
2020-12-27 19:48:26
366
原创 Tair
https://www.jianshu.com/p/ccb17daed766简单介绍简单而言,类似于redis的哨兵模式。统一的API。无论底层使用何种引擎,上层的API是一样的。Tair有四种引擎:mdb, rdb, kdb和ldb。分别基于四种开源的key/value数据库:memcached, Redis, Kyoto Cabinet和leveldb。Tair可以让你更方便地使用这些KV数据库。比如Redis没有提供sharding操作,如果有多个Redis Server,你需要自己写代码实现
2020-12-27 16:42:44
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人