- 博客(84)
- 资源 (17)
- 收藏
- 关注
原创 java虚拟机排查命令
查看GC情况 jstat -gc pid [时间间隔/ms] [打印条数] 打印线程堆栈 jstack pid > file.txt 导出dump文件 jmap -dump:live,format=b,file=dump.hprof PID
2020-08-04 20:47:29
251
原创 数据复制
一个可能出错的事物与一个不可能出错的事物之间的主要区别是,当一个不可能出错的事物出错了,通常也就意味着不可修复——Douglas Adams,《基本无害》(1992)复制主要指通过互联网络在多台机器上保存相同的数据副本。通过数据复制方案,通常系统大袋以下目的:使数据在地理位置上更接近用户,从而降低访问延迟 当部分组件出现故障,系统依然可以继续工作,从而提高可用性 扩展至多台机器以同时提供数据访问服务,从而提高吞吐量主节点与从节点主从复制的工作原理如下:指定某一个副本为主副本(主节点
2020-06-29 13:30:38
610
原创 数据编码与演化
一切都在改变,一刻都没有停止 ——Heaclitus,如柏拉图在Cratylus引用的那样(公元前360年)当数据格式或模式发生变化时,经常需要对应用程序代码进行相应的调整(例如,向记录中添加新字段,然后应用程序代码开始读取和写入该字段),然而,对于一个大型应用系统,代码更迭往往不是简单的:对于服务器端应用程序,可能需要执行滚动升级(也被称为分阶段分布),每次将新版本部署到少数的几个节点,检查新版本是否运行正常,然后逐步在所有节点上升级新的代码。这样新版本部署无需服务暂停,从而支持更频...
2020-06-15 08:28:20
602
原创 数据存储与检索
如果你把东西整理得井井有条,下次就不用再找了。 ——德国谚语从最基本的层面看,数据库只需要做两件事情:向它插入数据时,它就保存数据;之后查询时,它应该返回那些数据数据库核心:数据结构许多数据库都使用日志(log),日志是一个仅支持追加式更新的数据文件;实现原理大致为:每行包含一个key-value对,用逗号分割,每次调用插入时,追加新内容到文件末尾,因此多次更新某个键时,旧版本的值不会被覆盖,而是需要查看文件中最后一次出新的键来查找最新的值索引是基于原始数据派生而来的额外数...
2020-06-08 23:52:34
1279
原创 第一章 知识图谱概述
知识图谱的基本概念协议的知识图谱特指一类知识表示,本质上是一种大规模的语义网络。广义的知识图谱是大数据时代知识工程一系列技术的总称,在一定程度上指代大数据知识工程这一新兴学科知识图谱的狭义概念1、知识图谱作为语义网络的内涵作为一种知识表示形式,知识图谱是一种大规模语义网络,包含实体(Entity),概念(concept)及其之间的各种语义关系知识图谱概念其是语义网络,这是知识图谱的本质 其是大规模的,这是知识图谱和传统语义网络的根本区别语义网络是一宗以图形化形式通过点和边表达知识
2020-05-31 21:41:12
974
原创 数据模型与查询语言
语言的边界就是世界的边界。 ——Ludwig wittgenstein,《逻辑哲学轮》(1922)数据模型可能是开发软件中最重要的部分,它们不仅对软件的编写方式,而且还对思考待解决问题都有深远影响关系模型与文档模型...
2020-05-29 13:05:45
418
原创 可靠,可扩展和可维护的应用系统
数据密集型系统认知数据密集型应用通常基于标准模块构建,每个模块负责单一的常用功能(职责单一,模块的纵向拆分很重要),通常包含以下模块数据库:用以存储数据 高速缓存:缓存那些复杂或操作代价昂贵的结果,加快下次访问 索引:用户可以按关键字搜索数据并支持过滤 流式处理:持续发送消息至另一个进程,处理采用一部方式 批处理:定期处理大量累积数据数据系统的认知一个系统的设计需要考虑以下三个问题可靠性(Reliability)当出现意外情况如硬件,软件故障,人为失误等,系统应可以继续正常运转
2020-05-15 09:30:32
913
原创 记——数据库大小写敏感情况下兼容系统中原有的sql语句
1、问题 环境中MySQL数据库需要改成大小写敏感形式,而系统中存在着以前留下来的老sql,格式不规范,数目庞大,使用多种jdbc框架,如hibernate,jdbctemplate等;需要老sql的表名全部改为大写2、mysql 大小写策略说明my.cnf里将lower_case_table_names=1 表示对表名大写不敏感;MySQL在Linux下数据库名、表名...
2020-01-05 10:57:11
1293
1
原创 jvm记录
JVM内存模型1、方法区:2、堆Java虚拟机将堆划分为新生代和老生代(1:2). 其中新生代还被划分为Eden区和两个大小相等的Survivor区Java虚拟机采用动态分配的策略,根据生成对象的速率,以及Survivor区的使用情况动态调整Eden区和Survivor区的比例通常当我们调用new指令时,它会在Eden区中划分一段内存来存储对象. 但是堆内存时线程共...
2019-08-01 21:14:27
193
原创 记——通过点击表头弹出筛选选项列表,点击进行数据筛选
要求a.点击表头弹出列表b.点击筛选内容进行数据筛选c.允许多条件d.当点击筛选选项列表之外的区域时,列表收起e.筛选选项列表宽度与列宽度保持一致f.筛选选项列表需要有横向滚动条实现a.点击表头弹出列表思路:1.监听表头的点击动作2.在表头中通过append的方式将筛选选项列表异步加入表头代码中3.将选项列表改为绝对定位,使得选项列表成为一个独立窗口...
2019-06-23 22:48:43
2898
3
原创 MySQL使用记录
命令:创建用户 create user 'user'@'localhost' identified by 'password' 创建数据库 create database database_name 将某个数据库的所有权限授予某个用户 grant all privileges on database_name.* to 'user' 刷新权限 flush p...
2019-06-15 21:39:56
132
原创 前端开发记录
1.弹出层关闭响应事件layer.open({ closeBtn : 1, cancel: function(index, layero){ //layero表示弹出层的对象,可以通过这个对象获取弹出层的值 //例如弹出层中有<input id="cancelTest" value=1/> //var test = $(layero).find("ifram...
2019-05-01 09:51:18
243
原创 《Effective Java》第14条:在公有类中使用访问方法而非公有域
这一条应该在Spring开发中定义Bean中有明显的表现,以面向对象的原则,将field设为private,又向外提供getter与setter方法.这么做的目的是为了保持内部表示法的灵活性.阅读这一条内容,感觉这已经是一个默认的一个规则,所有的field尽量的保持隐藏,而访问这些field则通过方法进行操作...
2019-04-16 15:45:32
153
原创 《Effective Java》第13条:使类和成员的可访问性最小化
封装:封装的概念:封装,又名信息隐藏,设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离开来;然后模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况.为什么需要封装封装可以有效的解除组成系统的各个模块之间的耦合关系, 使得这些模块可以独立开发,测试,优化,使用,理解和修改. 因为模块间的耦合程度低,这样程序员就可以并行开发,从而加快项目...
2019-04-16 14:47:06
178
原创 《Effective Java》第12条:考虑实现Comparable接口
实现Comparable接口的好处 当类实现了Comparable接口后,它就可以跟许多泛型算法(generic algorithm)以及依赖于该接口的集合实现(Collection implementation)进行协作.例如排序collections.sort(list,Comparable)Comparable的约定在下面的说明中sgn表示数学中signum函数,它根据...
2019-04-02 13:46:06
186
原创 MySQL索引数据结构
数据结构及算法基础索引的本质Mysql官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。句子主干就是索引是数据结构。数据库查询是数据库的主要功能,我们都希望查询数据的速度尽可能快,因此数据库系统设计会从查询的优化的角度进行优化。最基本的查询算法就是顺序查找,但这种复杂度为O(n)查找在数据量大的时候是糟糕的。当然还有很多好的查找算法,如:二分查找(binary...
2019-03-20 22:13:33
189
原创 Java虚拟机学习12 | 垃圾回收(下)
https://time.geekbang.org/column/article/13137Java虚拟机的堆划分Java虚拟机将堆划分为新生代和老生代. 其中新生代还被划分为Eden区和两个大小相等的Survivor区Java虚拟机采用动态分配的策略,根据生成对象的速率,以及Survivor区的使用情况动态调整Eden区和Survivor区的比例通常当我们调用new指令...
2019-03-09 12:38:05
157
原创 Java虚拟机学习11 | 垃圾回收(上)
https://time.geekbang.org/column/article/13091垃圾回收:将已经分配出去,但现在不再使用的内存回收,以便再次分配,在Java虚拟机环境下,垃圾是指那些死亡对象占据的堆空间回收算法引用计数法引用计数法在每个对象中添加一个引用计数器,用来计算引用该对象的个数,当引用计数器归零时表明该对象已经死亡,可以被回收了.但是当两个对象相互引用时,类...
2019-03-08 22:33:24
179
原创 Java虚拟机学习10 | Java对象的内存布局
https://time.geekbang.org/column/article/13081对象Java创建对象的方式有以下:new语句:通过调用构造器初始化,它编译成的字节码包含用来创建内存的new指令,以及用来初始化的invokespecial 反射:通过调用构造器初始化 Object.clone 反序列化 Unsafe.allocateInstance压缩指针为什么...
2019-03-06 21:50:38
220
原创 Java虚拟机学习09 | JVM是怎么实现invokedynamic的?(下)
https://time.geekbang.org/column/article/12574invokedynamic指令invokedynamic指令是Java7引入的一条新指令,为了支持动态语言的方法调用 invokedynamic将调用点(CallSite)抽象成一个Java类,并且将原本由 Java 虚拟机控制的方法调用以及方法链接暴露给了应用程序 在第一次执行invokena...
2019-02-28 15:19:43
210
原创 Java虚拟机学习08 | JVM是怎么实现invokedynamic的?(上)
https://time.geekbang.org/column/article/12564在Java7以前,JVM提供以下4种字节码方法调用指令:invokestatic:用于调用静态方法. invokespecial:用于调用私有实例方法 构造器,以及使用 super 关键字调用父类的实例方法或构造器,和所实现接口的默认方法. invokevirtual:用于调用非私有实例方法....
2019-02-27 16:53:15
275
原创 Java虚拟机学习07 | JVM是如何实现反射的
https://time.geekbang.org/column/article/12192反射的应用情景在日常开发中使用Java编译器(IDE)的时候,当敲入点号时,IDE会根据点号之前的内容动态展示可以访问的字段与方法(在文章后续的评论中有人指出IDE在实现这个功能大部分是使用语法树来实现的) 在开发过程中使用的框架,例如Spring的IOC便是依赖反射机制反射调用的实现pu...
2019-02-24 16:02:08
391
原创 Java虚拟机学习06 | JVM是如何处理异常的?
https://time.geekbang.org/column/article/12134异常处理方式1.抛出异常显式抛出异常主体是应用程序,在程序中使用"throw"关键字手动抛出异常隐式抛出异常指Java虚拟机在执行过程中,碰到无法继续执行的异常状态,自动抛出异常,常见的有数组越界异常2.捕获异常tyy-catch-finally FileInputStream...
2019-02-20 16:51:37
291
原创 Java虚拟机学习05 | JVM是如何执行方法调用的?(下)
https://time.geekbang.org/column/article/12098虚方法调用Java中所有的非私有实例方法调用都会被编译成invokeirtual指令.而接口方法都会被编译成invokeinterface指令,这两种指令都属于Java的虚方法调用在大多数情况下,Java虚拟机需要根据调用者的动态类型,来确定虚方法调用的目标方法,这个过程我们称为动态绑定. 相对...
2019-02-19 16:12:32
269
原创 java虚拟机学习04 | JVM是如何执行方法调用的?(上)
https://time.geekbang.org/column/article/11539避免重载可变长参数方法错误示例:void invoke(Object obj, Object... args) { ... }void invoke(String s, Object obj, Object... args) { ... }invoke(null, 1); // 调...
2019-02-13 17:31:27
206
原创 java虚拟机学习-03 | Java虚拟机是如何加载Java类的?
https://time.geekbang.org/column/article/11523 java的语言类型分为基本类型(primitive types)和引用类型(reference types),其中引用类型还细分为接口,类,数组类和泛型参数. 其中泛型会在编译过程中被擦除. 因此java虚拟机中实际上只有三种,在类,接口,数组类中,数组类由虚拟机直接生成,其...
2019-02-11 17:31:13
161
原创 java虚拟机学习-02 | java的基本类型
https://time.geekbang.org/column/article/11503booleanboolean是无符号类型,在不违反规范情况下,在虚拟机中映射为整型,"true"映射为1,"false"映射为0; boolean在堆中存储时,boolean占1个字节,而boolean数组是直接存在byte数组中 为保证堆中boolean值合法,虚拟机将只取最后一位值存入堆中,...
2019-01-31 10:08:36
191
原创 java虚拟机学习-01 | Java代码是怎么运行的?
https://time.geekbang.org/column/article/11289Java为什么要在虚拟机中运行java语言复杂,抽象程度高,不能够直接转成字节码,需要进行一定的转换;目前主流方式是利用Java虚拟机将代码转为Java字节码,然后转成字节码. C++的策略是直接编译成对应机器的字节码运行 java虚拟机在不同的平台中运行,达到java代码"一处编译,处处运行"....
2019-01-29 17:12:58
262
原创 Oracle学习------SGA
Oracle内存结构图图一概述 Oracle的每个实例都有各自的SGA,当实例启动时会自动为SGA分配内存,当实例关闭时回收内存. SGA为实例下所有进程共享,所有进程都能用共享SGA内的信息如图一示:,SGA由几个内存组件组成,这些内存组件是用于满足特定类别的内存分配请求的内存池. 除重做日志缓冲区(Redo Log Buffer)之外的所有SGA组件都以称...
2019-01-22 13:16:41
282
原创 cxf-webService
服务端开发webService注解@webService这个注解表明这个Java类是webService的实现类或者这个Java接口为webService的接口,这个注解有以下6个参数可以配置这个webService的定义1、endpointInterface:定义服务抽象Web Service协定的服务端点接口的完整名称,如果注解通过endpointInterface属性引用某个S...
2019-01-16 11:08:50
455
原创 多线程
概念线程进程中负责程序执行的执行单元,一个进程至少有一一个线程。多线程解决多任务同时执行的需求 ,合理使用CPU资源。多线程的运行时根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性创建线程继承Thread类,扩展线程 1 2 3 4 5 6 7 8 9 ...
2019-01-16 11:02:55
119
原创 Oracle学习------PGA
目录instance PGA的示例图: PGA示例图private SQL AreaRuntime AreaPersistent AreaSQL Work Areas专属服务器与共享服务器内存对比Session Memory PGA非共享的内存空间,当服务进程或者后台进程建立时,将自动分配进程的专属PGA;当进程终止时,PGA将自动释放.insta...
2019-01-11 11:13:28
428
原创 Oracle学习------UGA
UGA是为session分配的内存区,存储着Oracle session状态等信息,包括登陆信息和其他session信息UGA示意图 :UGA示意图 当SQL代码包( PL/SQL package)加载进内存时,包规范(package Specification)存在UGA中,包规范中存储着这个代码包下的变量,代码包的另一部分是包体(package body),当...
2018-12-26 21:35:19
947
原创 Oracle学习------内存概述
当一个oracle实例启动时,会分配内存空间和启动后台进程内存空间主要存储以下信息:程序代码 每个连接的session,即使并不在活动中 程序执行期间需要的信息,例如正在被查询的行的状态 在进程间共享的数据,例如锁(lock)的信息 缓存数据,例如数据块和重做记录oracle数据库内存结构主要包含以下部分:System global area(SGA)...
2018-12-25 21:04:55
140
原创 oracle使用记录
命令命令 清除共享池(shared_pool)缓存 alter system flush shared_pool 清除buffer cache alter system flush buffer_cache 刷新oracle连接池 alter system flush global context 杀死session alter system kill s...
2018-12-09 12:11:39
160
原创 linux安装redis
1.获取redis安装包wget -p /home/download http://download.redis.io/releases/redis-4.0.11.tar.gz2.解压安装包cd /usr/localmkdir redis#到安装包目录tar -xzvf redis-4.0.11.tar.gz -C /usr/local/redis3.编译redis...
2018-11-19 20:31:59
100
原创 weblogic命令安装记录
一. 配置hosts文件vi /etc/hosts 二. 配置limits.conf配置用户能打开的文件,默认是1024vi /etc/security/limits.conf三. 新建用户与组groupadd -g 2001 weblogicuseradd weblogic -u 2001 -g weblogic -d /home/weblogicpas...
2018-11-15 14:39:40
329
原创 Linux命令记录
1.自动补齐命令tab2.文件查看命令2.1文本编辑命令vi退出vi及保存 w 保存 q 退出 wq 保存退出 q! 强制退出 移动光标 ctrl+b 往后翻一页 ctrl+f 往前翻一页 ctrl+u 往后翻半页 ctrl+d 往前翻半页 0 回到文章开头,需要进入命令模式...
2018-10-25 10:49:33
238
原创 《Effective Java》第11条: 谨慎地覆盖clone
一. 什么情况下能够用到clone() 当我们需要一个与原对象一模一样的副本时,并且对副本进行改动而不会影响到原对象时,需要使用到clone().二.深拷贝与浅拷贝 浅拷贝:浅拷贝只是单纯的对于对象的拷贝,对象属性对于其它对象的引用并没有进行拷贝(也就是说浅拷贝创建的对象和原来对象指向不同的地址空间,但是对象属性里面对其它对象的引用【引用属性】指向的还是同一...
2018-09-17 16:15:51
344
Xshell6个人免费版
2018-08-12
instantclient_x86
2018-04-24
instantclient_64
2018-04-24
instantclient_win32
2018-04-24
好用的前端开发模版
2018-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人