自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 资源 (4)
  • 收藏
  • 关注

原创 JeecgBoot新增一个module

1、目的将新增的业务代码和jeecgboot的原框架代码,尽可能解耦,方便后面的升级,也减少因修改框架源码,造成框架性错误;2、步骤1、新建一个maven项目,作为业务module,在这里我的module为yuanqu-module<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www..

2022-05-24 17:12:27 3905 1

原创 软件项目开发分工贡献占比

1、缘起最近公司项目开发工作比较繁重,为了激励大家,公司决定拿出一部分奖金给大家发放。作为项目经理,需要考虑尽可能保证公平,根据大家的贡献值,拿到相应的奖金。2、各岗位共享占比 工作分工 贡献占比 设计(概要、详细) 25% 项目负责人 10% 后端接口开发 25% 前端界面开发 25% .

2021-05-22 10:19:03 1936

原创 阿里云ECS服务器配置FileZilla(FTP)

1.异常现象阿里云ECS安装FileZilla,配置FTP,在客户端连接时,经常看到如下提示:425 Can't open data connection2.解决办法1.修改FileZilla的监听端口,因为ECS默认一般开放的是22端口2.修改访问模式为被动模式,并开发通信的自定义端口,60001~60020,注意端口要避开关键端口,比如数据库、常见软件等的端口3.最后,也是最容易忘记的一点,在阿里云安全组中开放对应的端口段...

2021-05-13 14:46:43 739

原创 pandas+pymysql将Excel数据导入MySql

1、碰到的问题昨天,碰到一个问题;需要将客户整理的Excel数据,导入MySql数据库的临时表,然后,根据临时表中的数据,更新MySql库中的数据。2、解决思路方法一首先,尝试mysql自带数据导入,我使用的是Mysql8.0,如下图所示,找到Data Import 打开导入界面,如下图所示:经验证,发现该数据导入,只支持自己的导出文件,显然无法导入Excel数据。方法二开始尝试第二种方法,Navicat for Mysql,继续下一步,提示必须输入表

2021-04-16 11:51:02 1503

原创 阿里云RDS任务编排踩坑纪实

1.奇怪的问题前段时间,将一个本地版sqlServer2008的数据库,迁移到了阿里云RDS for SqlServer2008上。原本在任务计划中执行的一个任务,迁移到了云数据库的任务编排中。任务的主要目的是对当日无效的业务数据,状态更新为已过期。客户反映,最近一段时间,一直有应该过期没有过期的数据,影响了新业务的录入。2.解决问题思路根据客户反映的问题,我列举如下两个原因:1、任务编排中的代码没有执行;2、任务按时执行了,因为业务复杂,其他业务将历史数据修改了状态。为此,我做了如

2021-04-13 14:37:15 401

原创 2020~2021年度总结

一、2020总结1.1开发日志模板制定系统开发日志模板,作用有三个,一是梳理、明确需要开发的内容,确保开发时没有模糊的地方;二是为升级做准备,升级时能够针对到每一个接口、每一个文件、每一个数据结构的变更。1.2冀平交运平台在领导带领下,完成案件费用、财务营收流水、财务营收报表、财务收支流水、财务收支明细的部分设计和开发工作。1.3系统升级工作系统升级工作既简单,也困难。简单是因为功能开发都做好了,困难是,升级要尽可能的减少出错的机会。抛砖引玉,下图是当前的系统升级流程。通过大

2021-03-26 09:24:18 283 2

原创 统筹业务再梳理-记前两个月奋斗的那些结构设计

1、统筹业务2、系统架构2.1补偿计算2.1.1补偿计算动态图2.1.2动态图应用2.1.3数据结构2.2出单业务流水2.2.1数据来源2.2.2数据应用2.2.3数据结构2.3出单收支流水2.3.1数据来源2.3.2数据应用2.3.3数据结构2.4补偿收支流水2.4.1数据来源2.4.2数据应用2.4.3数据结构2.5统计报表和基础数据3、设计方法论每一次复杂业务具体

2021-03-25 15:59:11 251

原创 补偿计算业务动态图

2021-03-13 14:16:17 129

原创 记SqlServer2008数据库迁移到阿里云RDS for sqlserver

1.需求公司当前有一个系统,后台数据库用的是SqlServer2008;当前系统已经运行8个月,数据库是ECS服务器上自己安装的SqlServer2008;整个系统大概有50多张表,有100多个存储过程,以及函数、视图、作业计划;整个系统大概有100万条数据。为了数据库的安全性,公司要求将数据库迁移到阿里云RDS for SqlServer2008,尽可能减少服务暂停时间。2.思路分析2.1传统数据库迁移2.1.1备份2.1.2传统数据库迁移可以先备份,再还原。经

2021-02-22 17:02:03 625

原创 阿里云DMS-创建数据库后要重新登录才能显示

1、遇到的问题最近在使用阿里云DMS工具管理SqlServer2008数据库,如下图所示,创建新的数据库,如下图在DMS工具中没有看到新建的数据库,第一反应是刷新,刷新后,还是没有见到新建的数据库,难道阿里云的DMS工具有Bug?2、解决问题看到已登录和未登录实例,尝试操作,发现重新登录后,可以看到新创建的数据库。这块一直不是太理解,为什么不刷新后立马显示,可能这是web和客户端的区别吧。为了下次遇到类似不能实时显示,特做记录,提醒自己。愿DMS越做越好!...

2021-02-19 17:48:13 496

原创 数据管理DMS任务编排之调度配置

1.为什么要写这篇文章? 刚接触阿里云数据管理DMS中的任务编排,新增任务流程后,往往找不到调度属性,即如何设置任务定期执行。偶尔出险调度属性,却不知道如何主动去设置调度周期。于是,对界面功能摸索尝试,记录下来。2.调度属性实践经过尝试,知道问题所在,一般进来后,容易选择具体的sql任务,这时,右侧显示的是Sql任务的属性。尝试过以后,很简单,只要左键点击一下空白处,即可在右侧显示“调度配置”。尝试后,思考了一下,这样的设计是合理的,调度配置是针对整个任务流的,点击空白处显示,如果.

2021-02-03 09:29:47 642

原创 RDS for sqlserver 定时任务实践

1、问题由来项目采用sqlserver2008数据库,因为汇总统计需求,需要每天定时生成一些中间表数据。很自然的,在本地是通过如下图所示的维护计划实现。项目为了数据安全,购买了阿里云的rds for sqlserver2008,在线云数据库。突然发现在DMS工具中,找不到对应的维护计划。2、问题解决记忆中,rds for mysql 的可编程对象部分,可以设置定时周期执行某个存储过程或者语句。查看以后发现空空如也。心里想着,如此重要的功能,阿里云一定有替代的方案。众里寻他千百度,

2021-02-01 15:23:29 451 1

原创 系统架构图

出单-补偿-财务系统架构图

2021-01-23 13:45:31 199

原创 记一次表结构大变更带来的处理数据问题

1、旧需求案件费用,每一个案件费用都要有审核流程,审核流程如下:2、新需求客户要求一次申请可以申请多个费用明细,支付的时候,一次可以按照业务要求,支付给同一个收款人多条明细。分析后得出的结论,申请和费用明细是一对多的关系,支付和费用明细也是一对多的关系;申请和支付无法做成一对一关系。关系如下图所示:基于新需求,将申请和支付分开,申请走审核流程,而支付不走流程,走完流程的费用,可以直接支付,支付时,可以根据同一个收款人,自由选择。建立新的pdm关系如下所示:3.

2021-01-22 11:07:50 249 1

原创 sqlserver根据子查询更新语句

语法结构:update 主表别名 set 主表别名.name=(select 子表别名.name from 子表 子表别名 where 主表别名.id=子表别名.id) from 主表 主表别名例子:update t set t.updateCol=(select b.col1 from t_subTableName b where t.userid=b.userid) from t_tableName t...

2021-01-18 14:51:36 780

原创 存储过程驱动开发的项目,如何更好的做好管理

一、缘由 存储过程开发的团队,一般在初始开发阶段还好,能够按照界面需求实现开发;随着开发功能增多,后期会出现很多问题,比如:1、对修改功能的理解不一致,做出来的不是需要的;2、比如问题修改了,升级的时候,整理升级文件不规范,出现漏传或者错传、覆盖等问题。面对这样的问题,针对功能新增或者修改,团队需要一个规范或者协议,来规范大家按照统一的理解做开发。二、解决问题思路1、修改规范 制定修改规范文档,修改规范应该包含如下内容:开发编号 开发内容描述 开始日期 是否升...

2021-01-15 11:38:00 101

原创 lp平台更新步骤

1、备份原有代码升级前,将原有服务端脚本和页面备份,以备出现问题时,恢复原有版本。2、sql脚本更新需要升级的数据库变更,整理成脚本。在生产环境快速更新。需注意整理的脚本一定是在测试环境验证过的。3、WebRoot目录页面更新通过FileZilla工具,将整理好的Web页面更新。4、服务端脚本文件更新通过FileZilla工具,将整理好的服务端脚本文件更新。5、服务重启重启服务端。如果数据结构,或者字段长度有变化,需要重启服务端。单独的脚本升级,不需要重启

2020-12-09 13:43:30 421

原创 MySQL之索引结构

1、索引结构2、二叉树结构3、BTREE结构4、B+TREE结构5、MySQL中的B+Tree结构

2020-10-22 14:18:01 74

原创 SSL证书更新-nginx

1、问题缘由现在用https的越来越多,ssl证书申请成了很常见的事情,证书有效期普遍为一年,尤其是免费证书。2、证书更新步骤2.1到期提醒2.2新证书申请点击上图续费购买,如下图所示购买后,证书列表出现新的证书证书申请,填写申请资料;2.3证书更新如上图,点击下载证书下载解压后,文件如下:点击证书下载,查看帮助文件帮助内容如下:按照文档,更新对应的pem、key两个文件。...

2020-10-14 12:00:59 1104

原创 MySql中Json字段双引号问题

一、问题引出需要将保存在Json字段中的数据,字符串连接起来,组成新的字符串,返回列表。二、解决办法1、JSON_EXTRACT(column, '$.key')2、column->'$.key'上面两种方法都可以取出Json数组中某一列的值。三、新的问题数据取出来了,如下图所示:取出的数据要求不能带引号,于是找新的办法,查找资料后,有两种办法:方法1select json->>'$.attr' from table; 方法2select JSON

2020-08-12 17:52:51 6222

原创 白帽子学习第2天-第一个批处理程序

功能删除E盘下所有的文件说明@echo off:批处理程序固定用法,可以在执行过程隐藏具体命令,有输出才会显示;e: 切换到E盘;cd \ :确保在根目录;echo 屏幕上打印一句话;pause : 暂停程序执行rd . /s/q >nul 2>nul :删除E盘下所有文件。...

2020-08-11 16:27:32 88

原创 白帽子第1天-学习常用DOS命令

1) dir–显示指定路径上所有文件或目录的信息它的格式为”dir [盘符:][路径][文件名] [参数]”,比如”DIR E:\FF.M3U”。2) md(mkdir)–建立目录它的格式为”md [盘符][路径]”,例如”MD TEMP”。3) rd(rmdir)–删除目录格式为”RD [盘符][路径]”。注意:该命令只能删除空目录,并且不能删除当前目录。4) cd–进入指定目录格式为” CD [路径]”,例如”CD HAPPY”。注意:只能进入当前盘符中的目录。其中”CD\”为回

2020-08-11 15:51:54 161

原创 JVM学习笔记第51天-Java中几种不同的引用

一、概述我们希望能描述这样一类对象,当内存空间还足够时,则能保留在内存中,如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象。强引用、软引用、弱引用、虚引用有什么区别?具体使用场景是什么?在JDK1.2之后,Java对引用概念进行了扩充,将引用分为强引用、软引用、弱引用、虚引用4种,这4种引用强度依次逐渐减弱。除强引用外,其它3种引用均可以在java.lang.ref包中找到他们的身影。如下图,显示了这3种引用类型对应的类,开发人员可以在应用程序种直接使用它们。二、四种引

2020-08-11 14:42:19 97

原创 JVM学习笔记第50天-StopTheWorld事件的理解

一、概述Stop-The-World ,简称STW,指的是GC事件发生过程中,会产生应用程序的停顿。停顿产生时整个应用程序线程都会被暂停,没有任何相应,有点像卡死的感觉,这个停顿称为STW。可达性分析算法中枚举根节点(GC Roots)会导致所有Java执行线程停顿。分析工作必须在一个能确保一致性的快照中进行。 一致性指整个分析期间整个执行系统看起来像被冻结在某个时间点上。 如果出现分析过程中对象引用关系还在不断变化,则分析结果的准确性无法保证。被STW中断的应用程序线程会在完成GC之后恢复

2020-08-07 17:02:48 232

原创 JVM学习笔记第49天-内存泄漏

一、概述也称作“存储泄漏”。严格来说,只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏。实际情况,很多时候一些不太友好的实践(或疏忽)会导致对象的生命周期变得很长,甚至导致OOM,也可以叫做宽泛意义上的“内存泄漏”。尽管内存泄漏并不会立刻引起程序崩溃,但是,一旦发生内存泄漏,程序中的可用内存就会被逐步蚕食,直至耗尽所有内存,最终出现OutOfMemory异常,导致程序崩溃。注意:这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘区交换设定的大

2020-08-07 16:40:46 102

原创 JVM学习笔记第48天-内存溢出

一、概述内存溢出相对于内存泄漏来说,尽管更容易被理解,但是同样的,内存溢出也是引发程序崩溃的罪魁祸首之一。 由于GC一直在发展,所以一般情况下,除非应用程序占用的内存增长速度非常快,造成垃圾回收已经跟不上内存消耗的速度,否则不太容易出现OOM的情况; 大多数情况下,GC会进行各年龄段的垃圾回收,实在不行了就放大招,来一次独占式的Full GC操作,这时候会回收大量的内存,供应用程序继续使用。 javadoc中对OutOfMemoryError的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存

2020-08-05 15:17:41 128

原创 JVM学习笔记第47天-分区算法

一、分区算法一般来说,在相同条件下,堆空间越大,一次GC所需要的时间越长,有关GC产生的停顿越长。为了更好的控制GC产生的停顿时间,将一块大的内存区域分割成多个小块,根据目标的停顿时间,每次合理的回收若干个小区间,而不是整个堆空间,从而减少一次GC停顿的时间。分代算法将按照对象的生命周期长短划分成两个部分,分区算法将整个堆空间划分成连续的不同小区间。每一个小区间都独立使用,独立回收。这种算法的好处是可以控制一次回收多少个小区间。二、内存图示三、特别提示上述算法只是基本思路,实际G

2020-07-30 10:22:24 245

原创 JVM学习笔记第46天-增量收集算法

一、增量收集算法现有算法,在垃圾回收过程中,应用软件将处于一种Stop the World 的状态。在Stop the World 状态下,应用程序所有的线程都会挂起,暂停一切正常的工作,等待垃圾回收的完成。如果垃圾回收时间过长,应用程序会被挂起很久,将严重影响用户体验或者系统的稳定性。为了解决这个问题,即对实时垃圾收集算法的研究直接导致了增量收集(Incremental Collecting)算法的诞生。基本思想如果一次性将所有的垃圾进行处理,需要造成系统长时间的停顿,那么就可以让垃圾收集线程

2020-07-30 10:12:27 483

原创 JVM学习笔记第45天-分代收集算法说明

前面所有这些算法,没有一种算法可以代替其它算法,他们都有自己独特的优势和特点。分代收集算法应运而生。 分代收集算法,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采用不同的收集方式,以便提高回收效率。一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点使用不同的回收算法,以提高垃圾回收的效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务有关,比如:http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因

2020-07-29 17:55:21 129

原创 JVM学习笔记第44天-标记-压缩(整理)算法

一、标记-压缩算法背景复制算法的高效性是建立在存活对象少、垃圾对象多的前提下的。这种情况在新生代经常发生,但是在老年代,更常见的情况是大部分对象都是存活对象。如果依然使用复制算法,由于存活对象多,复制成本也将很高。因此,基于老年代垃圾回收的特性,需要使用其它的算法。标记-清除算法确实可以应用在老年代中,但是,该算法不仅执行效率低下,而且在执行完内存收集后,还会产生内存碎片,所以JVM的设计者需要在此基础上进行改进。标记-压缩(Mark Compact)算法由此诞生。1970年前后,G.L.S

2020-07-29 10:38:27 831

原创 JVM学习笔记第43天-复制算法及优缺点

一、复制算法背景为了解决标记-清除算法在垃圾收集效率方面的缺陷,M.L.Minsky于1963年发表了著名的论文,“使用双存储区的Lisp语言垃圾收集器CA Lisp Garbage Collector Algorithm Using Serial Secondary Storage”。M.L.Minsky在论文中描述的算法被人们称为复制(Copying)算法,它也被M.L.Minsky本人成功的引入到了Lisp语言的一个实现版本中。核心思想将活着的内存空间分为两块,每次只使用其中一块,在垃

2020-07-29 10:01:58 741 1

原创 JVM学习笔记第42天-标记清除算法原理及优缺点

一、标记清除算法背景标记-清除算法(Mark-Sweep)是一种非常基础和常见的垃圾收集算法,该算法被J.McCarthy等人在1960年提出并应用于Lisp语言。执行过程当堆中的有效内存空间(available memory)被耗尽的时候,就会停止整个程序(也被称为Stop The World),然后进行两项工作,第一项是标记,第二项则是清除。标记:Collector从引用根节点开始遍历,标记所有被引用的对象。一般是在对象的Header中记录为可达对象。 清除:Collector对堆

2020-07-29 09:43:46 721

原创 JVM学习笔记第41天-对象的finalization机制

2020-07-24 14:29:34 143

原创 JVM学习笔记第40天-可达性分析算法

一、概述可达性分析算法,又叫根搜索算法或者追踪性垃圾收集。 相对于引用计数算法而言,可达性分析算法不仅同样具备实现简单和执行高效等特点,更重要的是该算法可以有效的解决在引用计数算法中循环引用的问题,防止内存泄露的发生。 相较于引用计数算法,这里的可达性分析就是Java、C#选择的。这种类型的垃圾收集通常也叫做追踪性垃圾收集(Trace Garbage Collection); 所谓“GC Roots"根集合就是一组必须活跃的引用。 基本思路可达性分析算法是以根对象集合(GC Roots)为起始

2020-07-24 11:59:36 375

原创 JVM学习笔记第39天-引用计数算法

一、原理引用计数算法(Rerference Counting)比较简单,对每个对象保存一个整型的引用计数器属性,用于记录对象被引用的情况。 对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1;只要对象A的引用计数器为0,即表示对象A不可能再被使用,可进行回收。二、优缺点优点实现简单,垃圾对象便于辨识,判定效率高,回收没有延迟性。缺点它需要单独的字段存储计数器,这样的做法增加了存储空间的开销。 每次赋值都需要更新引用计数器,伴随着加法和

2020-07-24 10:50:10 194

原创 JVM学习笔记第38天-垃圾标记阶段

在Java堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。 那么在JVM中,如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何存活的对象继续引用时,就可以宣判为已经死亡。 判断对象存活一般有两种方式:引用计数算法和可达性分析算法。...

2020-07-24 10:35:42 112

原创 JVM学习笔记第37天-String.intern()相关的面试题

题目1new String("ab")会创建几个对象?代码字节码结论会创建2个对象,一个是new String("ab")对象,一个是ldc放到字符串常量池中的对象;题目二思考:new String("a")+new String("b") 创建了几个对象;代码字节码结论题目三代码结论内存图解...

2020-07-23 15:35:26 113

原创 JVM学习笔记第36天-字符串拼接操作的底层原理

例子1代码字节码结论例子2代码字节码结论

2020-07-23 11:21:45 74

原创 JVM学习笔记第35天-字符串拼接操作

一、概述常量与常量的拼接结果在常量池,原理是编译期优化; 常量池中不会存在相同内容的常量。 只要其中有一个是变量,结果就在堆中。变量拼接的原理是StringBuilder。 如果拼接的结果调用intern()方法,则主动将常量池中还没有的字符串对象放入池中,并返回此对象地址。二、举例例子1class文件的反编译结果如下:证明常量与常量的拼接,在编译期就优化了;"a"+"b"+"c" 相当于 "abc";例子2证明,如果拼接过程有变量,则拼接结果是放在堆中,而不是常

2020-07-23 10:52:09 93

原创 JVM学习笔记第34天-机器码 、指令、汇编、高级语言理解与执行过程

一、机器码各种用二进制编码方式表示的指令,叫做机器指令码;刚开始,人们就用它编写程序,这就是机器语言。 机器语言虽然能够被计算机理解和接受,但是和人们的语言差别太大,不易被人们理解和记忆,并且用它编程容易出差错。 用它编写的程序一经输入计算机,CPU直接读取运行,因此和其它语言编的程序相比,执行速度最快。 机器指令与CPU紧密相关,所以不同种类的CPU所对应的机器指令也就不同。二、指令指令由于机器码是由0和1组成的二进制序列,可读性实在太差,于是,人们发明了指令。 指令就是把机器码..

2020-07-22 15:01:55 568

全国行政区划字典表数据-excel

全国行政区划字典表数据-exce

2022-04-28

Oracle备份还原练习

对于初学oracle备份还原的朋友用处很大,可以学习完整的备份还原!多看几遍,一定会有收获!

2012-11-07

delphi7好用的代码帮助

大大方便delphi代码写的速度 尤其对新手,一直手工按照原来的方式写 可以

2010-05-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除