- 博客(51)
- 收藏
- 关注
原创 final、finally、finalize
finalize 是基础类 java.lang.Object 的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize 机制现在已经不推荐使用,并且在 JDK 9 开始被标记为 deprecated。对于final修饰的变量,必须有默认值。当执行 try,finally 的线程被杀死时。finally是一个关键字,保证重点代码一定被执行的一种机制。final关键字是最终的意思,可以修饰成员方法、变量、类。final是一个修饰符,也是一个关键字。final修饰的特点。
2023-04-05 08:52:51
143
原创 架构学习-架构实战
架构是系统的顶层结构。架构设计的主要目的是为了解决软件系统复杂度带来的问题。架构设计需要遵循三个主要原则:合适原则、简单原则、演化原则。架构设计首先要掌握业界已经成熟的各种架构模式,然后再进行优化、调整、创新。技术演进方向技术演进的动力市场、技术、管理,这三者构成支撑业务发展的铁三角。对于产品类业务:技术创新推动业务发展!对于服务类业务,业务发展推动技术的发展!技术演进的模式基于业务的发展阶段判断互联网技术演进的模式不同时期的差别:复杂性、用户规模初创
2022-03-13 11:56:30
637
原创 可扩展架构
基本思想和模式拆面向流程拆分:将整个业务流程拆分为几个阶段,每个阶段作为一部分。面向服务拆分:将系统提供的服务拆分,每个服务作为一部分。面向功能拆分:将系统提供的功能拆分,每个功能作为一部分。传统的可扩展架构模式:分层架构和SOA分层架构C/S架构、B/S架构MVC架构、MVP架构逻辑分层架构SOA面向服务的架构SOA是把多个系统整合,而微服务是把单个系统拆开来微服务架构微服务和SOA的关系微服务是SOA的实现方式“微服务就是使用 HTTP RE
2022-03-13 11:55:44
618
原创 高可用架构
CAP理论一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)FMEA方法FMEA(Failure mode and effects analysis,故障模式与影响分析)又称为失效模式与后果分析、失效模式与效应分析、故障模式与后果分析等分析方法给出初始的架构设计图。 假设架构中某个部件发生故障。分析此故障对系统功能造成的影响。 根据分析结果,判断架构是否需要进行优化。功能点 故障模式--故障点和故障形式故
2022-03-13 11:55:06
2334
原创 高性能架构
高性能数据库集群:读写分离基本实现数据库服务器搭建主从集群,一主一从、一主多从都可以 数据库主机负责读写操作,从机只负责读操作数据库主机通过复制将数据同步到从机,每台数据库服务器都存储所有的业务数据 业务服务器将写操作发给数据库主机,将读操作发送给数据库从机注意点主从复制延迟解决办法写操作后的读操作指定发送给数据库主服务器 对业务的侵入性和影响较大 读从机失败后再读一次主机 如果有很多二次读取,将大大增加主机的读操作压力 关键业务读写操作全部指向主机,非关键业务采
2022-03-13 11:54:35
3589
原创 架构基础认识
系统与子系统一个系统的架构,只包括顶层这一个层级的架构,而不包括下属子系统层级的架构。所以微信架构,就是指微信系统这个层级的架构。当然,微信的子系统,比如支付系统,也有它自己的架构,同样只包括顶层。模块与组件业务--模块技术--组件框架与架构框架关注的是“规范”,架构关注的是“结构”。软件架构指软件系统的顶层(Rank)结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。架构设计的目的架构设计的主要目的是为了解决软件系统
2022-03-13 11:54:11
3375
原创 高效学习--综合运用
认知遗留系统分清现象与根因在动手改动之前,我们需要先分析一下,找到问题的根因。比如,实现一个直觉上需要两天的需求,要做两周或更长时间,根因是代码耦合太严重,改动影响的地方太多;再比如,性能优化遇到瓶颈,怎么改延迟都降不下来,根因是架构设计有问题,等等。确定方案先尝试重构你的代码,尽可能在已有代码上做小步调整,不要走到大规模改造的路上,因为重构的成本是最低的。既然选择重写代码,至少新的代码应该按照“最佳实践”来做,才能够尽可能减缓代码腐化的速度。改造遗留系统构建测试防护
2022-03-13 11:50:33
354
原创 高效学习-自动化
写代码之前,先问问自己真的要做吗?能不做就不做,直到你有了足够的理由去做。在软件开发中,其它的东西都是易变的,唯有设计的可变性是你可以控制的。运维体系持续交付持续交付环境持续集成环境,持续集成是持续交付的前提,这个过程主要是执行基本的检查,打出一个可以发布的包。 测试环境(Test),这个环境往往是单机的,主要负责功能验证,这里运行的测试基本上都是验收测试级别的,而一般把单元测试和集成测试等执行比较快的测试放到持续集成环境中执行。预生产环境(Staging),这个环境通常与生产环
2022-03-13 11:49:51
68
原创 高效学习-沟通反馈
我们努力地学习各种知识,为的就是更好地理解这个世界的运作方式,而沟通反馈,就是我们与真实世界互动的最好方式。改善编解码方式:编码器,让信息能输出更准确;解码器,减少信号过滤,改善解码能力;还有编解码算法,也就是各种来自行业的“最佳实践”,协调沟通的双方。编码规范 开会--做了什么、计划做什么、有什么问题技术雷达/可视化 CI检查复盘---做得好的、做得欠佳的、问题或建议 倾听用户声音遇到问题,尽早把问题暴露出来。把自己的工作透明化,让别人尽可能多了解自己的工作进展,了解自己的想法。
2022-03-13 11:49:10
128
原创 高效学习-任务分解
多写单元测试 每个任务完成之后,代码都是可以提交的,将任务拆的越小越好。通过任务拆解来砍需求 优先级--重要且紧急的事情要立即做。重要但不紧急的事情应该是我们重点投入精力的地方。紧急但不重要的事情,可以委托别人做。不重要不紧急的事情,尽量少做。最小的代价做产品,善用产品工具。 技术分解,先把它变为熟悉的技术。...
2022-03-13 11:48:25
6917
原创 高效学习-以终为始
两次创造任何事物都要经过两次创造:一次是在头脑中的创造,也就是智力上的或者第一次创造(Mental/First Creation),然后才是付诸实践,也就是实际的或第二次创造(Physical/Second Creation)。我们应该在第一次创造上多下功夫,统一集体想象,让目标更明确。DoD,确定好完成的定义,减少团队内部的理解不一致。 用户故事,细化出有价值的需求。持续集成,通过尽早集成,减少改动量,降低集成的难度。 精益创业,减少过度开发不确定性产品带来的浪费。迭代 0,在项目开始
2022-03-13 11:47:32
341
原创 String的相关
源码Stringpublic final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; ...StringBuffer public final class StringBuffer extends AbstractStringBuilder implements java.io.S
2021-07-03 19:28:19
65
原创 封装、继承、多态、抽象
封装、继承、多态1.封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。(信息隐藏或数据访问保护)属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同类事务的共性(属性和方法)归到一个类中,以方便使用。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自
2021-07-03 19:27:26
2495
原创 JAVA-面向过程
面向过程以过程(可以理解为方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性)与方法相分离为最主要的特点。面向过程风格是一种流程化的编程风格,通过拼接一组顺序执行的方法来操作数据完成一项功能。⾯向过程 : ⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⽐较⼤,⽐较消耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、 Linux/Unix 等⼀般采⽤⾯向过程开发。但是, ⾯向过程没有⾯向对象易维护、易复⽤、易扩展。面向对象和面向过程的区别面向
2021-07-03 19:26:20
331
原创 JAVA-面向对象
面向对象面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming。对应地,面向对象编程语言的英文缩写是 OOPL,全称是 Object Oriented Programming Language。面向对象编程中有两个非常重要、非常基础的概念,那就是类(class)和对象(object)。面向对象编程从字面上,按照最简单、最原始的方式来理解,就是将对象或类作为代码组织的基本单元,来进行编程的一种编程范式或者编程风格。⾯向对象 : ⾯向对象易维护、易复⽤、
2021-07-03 19:23:49
269
1
原创 MySQL的一些基础知识
1.入门概念数据库:以某种有组织的方式存储的数据集合。表:某种特定类型数据的结构化清单。列:表中的一个字段。所有的表都是由一个或者多个列组成的。数据类型:所容许的数据的类型。每个表列都由相应的数据类型,它限制(容许)该列中存储的数据。列名定义要存储的是啥,类型定义存储的格式。行:表中的一条记录。主键:一列(一组列),其值能够唯一区分表中每个行。任意两行都不具有相同的主键;每个行都具有一个主键值(主键列不允许NULL值)。主键的特征:唯一,不能为空。DBMS:数据库软件系统。
2020-07-02 09:59:14
171
原创 02-IO介绍
1.IO的基本原理用户程序进行IO的读写,依赖于底层的IO读写,基本上会用到底层的read&write两大系统调用。在不同的操作系统中,IO读写的系统调用的名称可能不完全一样,但是基本功能是一样的。调用操作系统的read,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用,是把数据从进程缓冲区复制到内核缓冲区。2.几种主要的IO模型1.同步与异步同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。异步: 异步就是发起一个调用后,立刻得到被调用者的回应表示已接
2020-06-23 23:07:55
267
原创 01-netty、redis、zookeeper基本介绍
1.netty简介基于NIO的客户端/服务器编程框架,它既能快速开发高并发、高可用、高可靠性的网络服务器程序,也能开发高可用、高可靠的客户端程序。Netty是互联网中间件领域使用最广泛、最核心的网络通信框架之一。NOI是指非阻塞输入输出(Non-Blocking IO),也称非阻塞IO。2.redis简介Redis的主要应用场景:缓存(数据查询、短连接、新闻内容、商品内容等)、分布式会话(Session)、聊天室的在线好友列表、任务队列(秒杀、抢购、12306等)、应用排行榜、访问统计、数
2020-06-23 23:02:37
277
原创 06-哈希表
基本介绍散列表(Hash table,也叫哈希表 ),是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中 一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放的数组叫做散列表。时间复杂度接近于O(1)。哈希介绍hash-散列散列可以通过一定的计算规则,使得集合中的元素可以分类排列,从而快速查找。哈希函数介绍哈希的过程中需要...
2020-04-11 22:26:47
114
原创 05-堆栈
1.堆栈的定义堆栈是一种只允许在表的一端进行插入操作和删除操作的线性表。允许操作的一端成为栈顶,栈顶元素的位置由一个称为栈顶指针的变量给出。当表中没有元素时,称之为空栈。先进先出2.堆栈的使用名词解释寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制。栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中...
2020-04-11 22:21:44
146
原创 04-线性表
1.线性表的定义及逻辑结构线性表(LinearList)是由n(n$ \geq 0)个属于同一个数据对象的数据元素(节点)0)个属于同一个数据对象的数据元素(节点)0)个属于同一个数据对象的数据元素(节点)a_1,a_2,a_3,…,a_n$组成的有限序列。线性表中每个元素必须具有相同的结构(即拥有相同的数据项)。线性表是线性结构中最常用而又最简单的一种数据结构。线性表中每个数据元素其实可以...
2020-04-11 22:20:42
561
原创 03-队列
队列的定义先进先出队列是一个有序列表,可以用数组或是链表来实现。队列简称队。时一种只允许在表的一端进行插入操作,而在表的另一端进行删除操作的线性表。允许插入的一端称为队尾,队尾元素的位置由rear指出;允许删除的一端成为队头,队头元素的位置由front指出。...
2020-04-11 22:12:28
114
原创 02-数组
1.基本概念定义:一个连续的存储单元的有限集合。数组的主要操作初始化和销毁给出一组下标,检索对应的数组元素给出一组下标,存、取或者修改对应数组元素的值检索满足条件的数组元素升序或者降序排列数组没有插入和删除操作2.一维数组和二维数组的存储数组一般采用的顺序存储结构1.一维数组若一维数组的每个元素占k个存储单元,并且从I0开始存储数组的第一个元素,则数组的第i个元素的...
2020-04-11 22:11:04
110
原创 01-数据结构和算法的基本介绍
1.数据结构和算法的关系1.数据结构的定义数据元素之间的联系称之为结构,数据结构就是具有结构的数据元素的集合。数据结构是一个二元组Data-Structure=(D,R)其中,D是数据集合的有限集合,R是D上的关系的集合。1.逻辑结构研究数据数据元素之间的客观联系集合在集合结构中,数据元素仅存在“同属于一个集合”的关系。线性结构数据元素的关系是“一对一”的关...
2020-04-11 22:06:34
353
原创 关于ssm框架的mybatis的xml文件报错
报错的主要提示no enum contant org.apache.ibatis.type.JdbcType.Decimal原因在Mybatis中jdbcType的类型不符和要求Decimal不是jdbc的数据类型,必须写为大写的DECIMALMybatis中javaType和jdbcType对应和CRUD例子<resultMap type="java.util.Map" id...
2020-03-27 20:57:06
270
原创 shell编程
文章目录1.介绍2.快速入门新建helloworld.sh编辑shell文件脚本执行3.变量shell的语法要求shell的变量类型变量的使用1.定义变量2.引用变量4.参数传递5.shell字符串6.shell数组7.特殊字符8.算术运算符1. 算术运算符2. 关系运算符3. 布尔运算符4. 字符串运算符5. 文件测试运算符9.流程控制1.if-else2.case3.for4.while5.u...
2020-03-27 20:53:12
116
原创 02-事务
事务技术在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败,就进行事务的回滚,所有的SQL语句全部执行失败。例如转账: 1 tom 1000 2 rose 1000 完成转账这个业务需要操作2次数据库 1.从tom...
2020-03-25 10:10:42
238
原创 01-数据库基础
1.数据库概述1.存放数据的方式1.存在内存中2.保存在普通文件中3.保存在数据库中2.什么是数据库存储数据的仓库,用户可以对数据库中的数据进行增加,修改,删除及查询操作。1.数据库的优点数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。2.数据库管理系统(DBMS)数据库管理系...
2020-03-24 17:37:30
84
原创 03-线程(三)
1.对比1.ArrayList和Vector有什么区别?一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半2.HashMap和HashTable有什么区别?一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是...
2020-03-23 13:04:20
107
原创 03-线程(一)
文章目录1.基本概念1.1进程1.2 线程1.3 多线程1.4并发1.5并行2.使用多线程的意义3.线程的状态4.创建线程的方法4.1 继承Thread类4.2 实现Runnable接口4.3 使用Callable和Future创建线程4.4 三种创建方式的对比1.基本概念1.1进程操作系统中的独立运行的程序,每一个进程执行都有一个执行顺序。一个进程中可以有多个线程。1.2 线程从进程创...
2020-03-23 13:03:19
51
原创 03-线程(二)
1.同步的安全问题1.同步代码块格式: synchronized(锁对象){ //同步代码 } 锁对象:它必须是一个引用类型,可以是任何对象。另外: 要保证多个线程要共享“同一个锁对象”。示例:1).Tickets类:public class Tickets implements Runnable { private int tickets = 10...
2020-03-23 13:01:56
75
转载 02-数据结构(三)--BigDecimal
BigDecimalBigDecimal 的用处《阿里巴巴Java开发手册》中提到:浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用 equals 来判断。 具体原理和浮点数的编码方式有关,这里就不多提了,我们下面直接上实例:float a = 1.0f - 0.9f;float b = 0.9f - 0.8f;System.out.println(a);// ...
2020-03-22 20:30:27
362
原创 02-数据类型(二)
1.Collection接口Coollection是所有单列集合的根接口1.List接口特点:1.有序的;2.可以存储重复元素;3.可以通过索引访问元素。ArrayList(子类):数组结构,无任何特有方法。LinkedList(子类):链表结构Vector:Object 数组Arraylist 与 LinkedList 区别是否保证线程安全: ArrayList...
2020-03-21 22:48:21
136
原创 02-数据类型学习(一)
1.四类八种-基本类型整数类型 byte,short,int(默认),long小数类型 float,double(默认)字符类型 char布尔类型 oolean2.引用类型类,接口,数组类型,枚举类型,注解类型3.基本类型和引用类型的区别基本类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。引用类型在被创建时,首先在栈上给其引用(句柄)分配一块内存,而对象的...
2020-03-20 20:27:43
174
原创 01-java基本入门
java是面向对象编程1.封装、继承、多态1.封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动...
2020-03-19 09:56:44
88
转载 常用的linux连接工具
常用的远程连接Linux工具有:XShell、Putty、SecureCRT、等。下面重点介绍该三种工具:1、Xshell:是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。软件强大,在windows环境下使用用户多,非常重要的一点是:对个人、教育用户是免费的。建议深度用户使用。2、Putty:一个Telnet、SSH...
2019-07-06 23:06:40
5044
转载 前后端分离技术
一、前端前后端分离已成为互联网项目开发的业界标准使用方式,通过 nginx+tomcat 的方式(也可以中间加一个 nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS 等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端 html 页面通过 ajax 调用后端的 ...
2019-07-06 22:21:11
2643
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人