- 博客(60)
- 资源 (3)
- 问答 (2)
- 收藏
- 关注
原创 10.3总结(关于KIll)
常用KILL命令参数kill -3kill -9kill -15kill -3 向应用程序发出一个signquit的信号,如果应用程序是java服务 JVM会dump文件到stderr/logs。kill -9 kill -9向应用程序发出sigkill的信号,强制应用程序停止。僵尸 进程以及内核态进程无法kill。kill -15 系统发送一个sigterm到应用程序。应用程序收到后,或者释放资源,停止 或者忽略。...
2020-10-18 17:27:38
311
转载 Unique 及 Primary 区别
Unique 及 Primary 区别UniquePrimarySQL如何创建主键SQL如何删除主键Unique 定义了UNIQUE约束的字段中不能包含重复值Primary primary key = unique + not null uniqueSQL如何创建主键 ALTER TABLE table ADD PRIMARY KEY (id);SQL如何删除主键 ALTER TABLE table DROP PRIMARY KEY ;...
2020-10-14 10:39:32
488
原创 8.2周总结(CI/CD)
八月 一周小结CI/DIgit forceCheckOut/git smartCheckOutgit stashCI/DIContinuous Integration:持续集成Continuous Delivery:持续交付Continuous Deployment:持续部署简单来说,就是帮助开发,随时能够提交代码。一个可以随时部署到生成环境的代码库,可以随时交付git forceCheckOut/git smartCheckOutgit forceCheckOut:会丢失未提交部分git
2020-08-15 17:29:30
245
原创 7.2周总结(关于dev/null及java默认线程池)
七月 一周小结dev/null线程池dev/nulldev/null:代表空设备文件无法读取,也会丢弃写入其中的内容可以用于清空文本内容echo dev/null > log.txtecho “”> log.txt这两个命令都可以清空文本内容。区别是即使空字符串也是有长度的。线程池java默认提供四种线程池1.FixedThreadPoolpublic static ExecutorService newFixedThreadPool(int nThreads) {
2020-07-12 18:43:17
235
原创 7-1周总结(项目管理遇到的问题)
七月 一周小结确认需求确认干系人项目质量风险控制项目验收确认需求引导客户:明确客户需求,是为了解决什么问题。基于解决问题,提出合适的解决方案,让用户来做选择。客户,多数时候也并不明确自己的需求。重要的是了解,客户具体是想要解决什么问题,而不是按照用户的想法马上去做确认干系人在项目上线前一周左右。甲方提出要升级数据库版本,从oracle11g,替换到oracle19c。如果升级了数据库版本,这是我们的项目,之前没有使用过数据库版本,接口要全部重新测试。这是非常大的一个变更。这件事和确认干系人,有什
2020-07-05 20:57:22
279
原创 6-4周总结(钩子线程的使用)
六月 一周小结钩子线程cpu密集型和io密集型钩子线程 public static void main(String[] args){ Runtime.getRuntime().addShutdownHook(new Thread(()->{ try{ System.out.print("钩子线程测试"); TimeUnit.SECONDS.sleep(2); }catch(Exception e){ } System.out.print("t
2020-06-26 19:29:15
181
原创 6-3周总结(F5健康检查策略)
六月 一周小结知识点小结hostnameLinux文件大小F5健康检查策略关于网络堵塞Linux重启后,resolve.conf压测出现丢包知识点小结hostname hostname的意义:通过hostname 查找IP 在生产遇到这样一个问题。交易到zk报错,发请求到一个未知IP超时。一直找不到原因。后面发现是因为运维提供的服务器 ip和hostname 对应不上。ping hostname 并不是到本机IP ,而是解析出未知IP。Linux文件大小 du -h 查看当前目录下的文件夹大
2020-06-20 16:29:35
1204
原创 6-2周总结
六月 一周小结知识点小结检查服务器基本参数压测维度AES和RSADMZ关于交流知识点小结检查服务器基本参数 查看linux版本: uname -a 查看内存:free -m/-g 查看硬盘: df -h 查看cpu使用情况: top 查看cpu详细信息:cat /proc/cpuinfo 查看与其他服务器之间,网络是否想通:telnet 或者 curl压测维度 高可用 稳定性AES和RSADMZ 两个防火墙之间的空间称为DMZ,被称为隔离区关于交流...
2020-06-14 12:38:57
143
原创 6-1周总结
六月 一周小结一些小问题关于流控一些小问题1.serialVersionUID与加签。serialVersionUID 的意义是,在java序列化,和反序列化中通过比较serialVersionUid 是否一致,来判断实体类是否一致。这和加签的意义有相同的地方。加签的作用,也是防止内容篡改。2.Linux中单个txt文档,最多可以写入多少内容。3.select count(*) from 查询速度非常慢。oracle表里有2000w条的数据。查询表总数非常慢,大概需要5分钟4.存储过程批量插入
2020-06-07 13:22:29
152
原创 2020.5月总结
五月总结一工作感慨改进点二遇到问题网络及部署开发周期一工作感慨整个月五月份,都在加班中度过。项目急,开发人员少。到现在也算是忙完了。大概五周的时间,两个人,开发完一个项目。我对接通道,另外一个同事对接行内系统。连敏捷开发都算不上,除了上线需要的文档,再没有其他。所有的开发计划,都只有一个梗概。每个里程碑节点,即使尽量具象,也有很多遗漏的地方。关键流程需求,对账,清算,差错处理,中途也做了很多改动。回顾整个过程,反思还是有很多可以改进的地方。改进点1.里程碑节点,对应需要完成的工作,对应产出的文档,
2020-05-30 17:23:08
202
原创 主动引用和被动引用
Java初始化,有且只有5种场景,会导致初始化1)遇到new,getstatic,putstatic,invokestatic 这四条字节码指令时。2)使用java.lang.reflect包的方法对类进行反射调用时。3)初始化子类,其父类还未初始化4)虚拟机启动,指定主类5)java.lang.invoke.MethodHandler 实例最后解析结果REF_getStat...
2020-01-05 12:06:59
346
原创 Jdk常用命令
jps:JVM Process Status Tool,显示指定系统内所有的虚拟机进程。对我来说,每天都会用到的命令。可查看进程ID,使用Kill Pid ,快速关闭项目。1.jps -l :输出主类的全名2.jps -v:输出虚拟机启动时的就VM参数jstat:虚拟机统计信息监视工具,用于监视虚拟机各种运行状态信息的命令行工具1.jstat -gcutil pid...
2019-12-30 16:40:47
490
原创 JVM--垃圾收集器,与内存配分策略
又看了《深入理解Java虚拟机》中关于收集器这一章。简单做个总结,写下自己的想法。哪些内存需要回收?程序计数器,虚拟机栈,本地方法栈,这3个区域随线程而生,随线程而灭。这也是为什么,逃逸分析技术,能帮助虚拟机减少GC次数(确定域中的类,可以在栈上创建实例),优化代码,提高性能。需要回收的内存,主要是堆,方法区(线程共享的区域)。堆分为新生代(1/3),老年代(2/3),新生代下又分为E...
2019-12-27 18:32:57
236
原创 JVM--JIT编译与逃逸技术
《深入理解Java虚拟机》一书中有这样的表述。 对于大多数应用来说,Java堆,是Java虚拟机所管理的内存中最大的一块儿。Java堆是被所有线程共享的一块儿内存区域,在虚拟机启动时创建。此内存区域的唯一目的:就是存放对象实例,及数组都要堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一些微妙的变化发生,所有对象都分配在堆上也渐渐变得不那么绝对...
2019-12-25 18:03:46
278
1
原创 忘记某个Linux命令怎么办
背景:某次生产上线,忘掉了了一个Linux命令方法:history | grep 关键字可通过 history |wc -l 可查看,目前Linux系统,存了多少历史命令默认是有1000个历史命令。总结一下,history 相关的Linux命令history -c :清空当前历史命令history -10:查看最近使用的10条历史命令...
2019-12-06 18:02:35
1140
原创 二叉树的节点(java)
public int getAns(TreeNode root) { // write your code here HashMap map = new HashMap(); map.put("max",1); if(root == null) { return 0; } fin...
2019-09-18 14:34:16
567
原创 相反的顺序存储结构(递归-java)
给出一个链表,并将链表的值以倒序存储到数组中。样例样例1输入: 1 -> 2 -> 3 -> null输出: [3,2,1] public List<Integer> reverseStore(ListNode head) { // write your code here List list = ne...
2019-09-12 13:54:28
245
原创 多关键字排序(java)
给定n个学生的学号(从1到n编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。 public int[][] multiSort(int[][] array) { // Write your code here //先按成绩排序 for (int i=0;i<...
2019-09-11 14:09:12
1379
原创 出现字数最多的字母(java)
1654. 出现次数最多的字母给定一个字符串str,现在你需要统计出现次数最多的字母。返回这个字母出现的次数。样例样例1输入: str="ABCabcA"输出: 2解释:A出现了2次,B出现了1次,C出现了1次,a出现了1次,b出现了1次,c出现了1次,A出现的次数最多,所以返回2。利用HashMap呗 public int mostFrequentlyAp...
2019-09-10 14:10:40
562
原创 落单的数(java)
描述给出2 * n + 1个数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例:给出 [1,2,2,1,3,4,3],返回 4利用HashMap的特性 public static int singleNumber(int[] A) { // write your code here HashMap hashMap = n...
2019-09-06 14:45:03
352
转载 HashMap扩容机制
一、什么时候扩容:网上总结的会有很多,但大多都总结的不够完整或者不够准确。大多数可能值说了满足我下面条件一的情况。扩容必须满足两个条件:1、 存放新值的时候当前已有元素的个数必须大于等于阈值2、 存放新值的时候当前存放数据发生hash碰撞(当前key计算的hash值换算出来的数组下标位置已经存在值)二、下面我们看源码,如下:首先是put()方法 public...
2019-09-02 20:43:57
420
原创 千万级数据库
背景: 系统交易量与日俱增。目前负责系统,数据库单表存放的数据量越来越大,目前已是百万级。查询速度变慢,所以在思考,与同事交流,网上找相应问题需要注意的风险,以及后续解决方案。千万级数据库查询需要注意什么建立索引(where,order by) 避免在where字句中,进行null值判断,导致引擎放弃使用索引,进行全表扫描 索引提高了查询效率,但是降低了insert和u...
2019-08-30 11:58:26
3110
原创 java堆溢出 java.lang.outofMemoryError:java heap space
背景: 通过报文,向核心系统获取D-1日交易明细,存放数据库。每日交易量目前1w.每个月交易量有10%到20%的增长。获取核心交易明细,用于对账 建立socket短连接,10000条交易明细,需建立100次短连接。每次短连接,传输的报文大概50000个字节风险:1.因为需要建立多次短连接,某一次连接的失败,之前获取的数据全部丢弃。2.同时多次建立连接,关闭连接,...
2019-08-27 19:30:08
529
转载 TCP流量控制 ,拥塞控制
流量控制什么是流量控制?流量控制的目的?如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。如何实现流量控制?由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。主要的方式就是接收方返回的...
2019-08-13 20:58:26
174
转载 三次握手,四次挥手
public void shutdown() throws IOException { Socket socket = (Socket)this.socketHolder.getAndSet((Object)null); if (socket != null) { try { socket.setSoLing...
2019-08-12 20:52:18
130
原创 生产事故--交易的各种失败类型
背景: 团队内,三个系统,同时生产上线。因为另外一个系统凌晨的一个定时任务,弄错了参数。导致第二天,出现了大量业务处理失败的交易。业务失败,但是系统处理是成功的。所以,并没有发现直到用户打电话投诉思考: 交易系统处理虽然成功,但是业务处理失败,失败的原因,依然需要警醒。通过长期的统计,估算出一个比例。如果超过这个比例,应该报警,进行系统的检查。 除此...
2019-07-18 15:36:14
166
原创 失效转移
书上看到了失效转移这个概念。书中是这样描述的。保证数据高可用的手段,主要是数据备份和失效转移。失效转移机制保证当一个数据副本不可访问时,可以快速切换访问数据的其它副本,保证系统可用。百度了一下,是这样定义的。失效转移是一种备份操作模式,当主要组件由于失效或预定关机时间原因而无法工作时,这种模式中的系统组件的功能被嫁接到二级系统组件。这样看来的话,失效转移不是特指某一种操作。类...
2019-07-16 09:37:38
511
原创 花呗额度,为什么每个月只能修改一次。
背景:生产上线,遇到某些用户频繁修改额度的问题。用户把单笔交易金额,改成了5元钱。然后,当我看到,微信充值6元钱,结果报单笔超限,把我吓到了。排查了半天,结果发现,只是用户在玩儿,将自己的额度改小了,然后又改回原额度。联想:这让我联想到了花呗额度,为什么每个月只能修改一次。涉及到账户额度的限制,应该是在并发量很高的微服务里,处理频繁的账务交易。而修改花呗额度,这个东西。作为功...
2019-07-12 14:48:04
2040
1
原创 上线思考
昨天晚上,网联银联协议互备上线。涉及到三个系统,网联,银联无卡,统一支付,手机银行。我们团队负责前三个系统,其中,我负责网联上线部分。生产上线,一波三折。我们团队统一支付出了不少问题。但是,日志上打印的相关信息实在太少了。看着打印的日志信息,真的是很,一阵凉意从脚底,一直到头盖骨。好在最后解决。有一个想法,如果,开发的时候,在抛出错误信息之前。写出可能的解决方案。生产上线的时候,能够快速的...
2019-07-12 09:30:17
123
转载 Linux Java服务内存监控脚本
这个脚本主要是配合定时任务,前端通过echats 来实时显示Linux的Java服务内存情况。脚本也是我自己查阅一些博客琢磨的有什么问题可以指出,大家共同进步。pname就是需要监控的Java服务名#!/bin/bash#jvm monitorsource /home/pay/.bash_profilesource /home/pay/.bashrllpname=("PmcBack...
2019-07-10 18:04:04
323
转载 解决线程安全的几点方式
将对象设计为无状态对象 所谓无状态对象是指对象本身不存储状态信息(对象无成员变量或者成员变量也是无状态对象),这样多线程并发访问的时候,就不会出现状态不一致,java web开发中常用的servlet对象就设计为无状态对象,可以被应用服务器多线程并发调用处理用户请求。 无状态对象:无属性,或者有属性,没有操作这些属性的方法使用局部对象 即在方法内部创建的对象,这些对...
2019-07-10 09:25:38
200
原创 生产上线,先改数据库表结构,还是先增量上线代码
周四生产上线。本次上线,涉及到修改表结构,以及代码。但是我们公司的产品,有这样一个问题。如果表结构字段和代码里实体类不一致,则会报错。本次上线内容,涉及到所有的交易。总结。最后也没找出响应的解决方案,只能挑在用户少时间段,然后上线速度够快。大概3秒,4秒的样子如果,后续能够有更好的解决方案,在写下来吧。先在这儿,留一个坑...
2019-07-09 18:00:39
714
1
转载 Linux 如何用非root用户安装软件(SQLplus)
一. root用户安装:1.为了项目整洁创建一个文件夹存放安装包,mkdir install_package,下载sqlplus 三个安装包通过xftp放入。输入指令:rpm -ivh +文件名分别进行安装(我用的是18.5的,大家根据所需去官网下载即可)。oracle-instantclient18.5-basic-18.5.0.0.0-3.x86_64oracle-insta...
2019-06-26 11:28:15
1144
原创 生产问题--交易超时
问题背景:网联项目,两台服务器,F5负债均衡。每次生产上线,总会造成一两笔交易超时。操作过程:周四7点,增量上线响应代码,编译,停止其中一台,马上重启。(停止重启的操作,大概2到3秒)另一台服务器同样如此问题记录:每次生产上线。总会造成一两笔交易超时。问题分析:当我停止其中一台服务器时,F5,就不会将新的交易请求发到已停止的服务器来。可是为什么会有超时的交易。是因为,我在停止的过程中,...
2019-06-24 18:47:40
356
1
原创 SID和ServiceName
记录一些开发中遇到的问题开发环境,测试环境连接数据库,都用的SID。但是到了生产环境,改用SERVICE_NAMESID:数据库实例,实例是访问oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程所使用的内存(SGA)所构成的一个集合,就是用来访问和使用数据库的一块儿进程。它只存在于内存中。就像java中new出来的实例对象一样。我们访问oracle都是访问一个实例,但这个...
2019-05-27 17:15:59
1776
原创 如何处理日累计限额
目前在做的项目中。有一个很有意思的点。如何处理日累计限额。一个账户,每天的交易限额是有额度的。到了第二天,额度恢复。日累计重新计算也就是说。到了第二天,日累计额度应该是从0开始计算的。就很简单嘛。写一个存储过程。每天凌晨更新。但其实项目里并不是怎么处理的。数据库中这张表里,还有另外一个字段txn_date。表示交易日期。代码,判断,当前日期,是否和交易日期一致,如果一致,那么就在已...
2019-05-21 21:14:07
2711
原创 后台监控,及实现中遇到的问题。
后台系统监控背景:监控系统对另外服务器的系统进行监控方案一:监控系统定时通过地址访问,需要监控的系统,执行相关的Linux命令,返回需要的信息方案二:需监控服务器,提供查询内存使用的接口。监控系统定时,调用查询接口,获取内存数据方案三:在需要监控的服务器,写shell脚本,将信息存到数据库,然后,监控系统,读取数据库里的数据经过考虑,方案一,方案二都是不可行的。方案一:通过地址...
2019-01-25 17:23:59
2024
转载 关于Oracle锁的一些总结
烟一支一支地点酒一杯一杯的干请你要体谅我我酒量不好别给我挖坑不时会遇到,不小心把表锁住的情况。再此,相对Oracle锁相关的知识做一些粗浅的总结。 当不小心锁表时:1 查询session被锁的sql,简要查询,得到SID select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objec...
2019-01-09 23:06:13
249
原创 本周问题
1.yum( Yellow dog Updater, Modified)能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum makecache就是把服务器的包信息下载到本地电脑缓存起来配合yum -C search xxx使用不用上网检索就能查找软件信息yum search subversion2.df...
2018-09-20 10:46:46
136
VanDykeSecureCRT7.2.6
2017-11-21
ssh整合配置文件出现了一个问题(配置文件的位置问题,导致我不能访问,不明白)
2017-06-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人