自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 算法:回文字符串

要求:给定一个字符串数组,判断出所有的回文字符串class Solution { public List<List<Integer>> palindromePairs(String[] words) { // 出参 List<List<Integer>> result = new ArrayList(); // 入参判断 空数组? // 1.字段两两对拼 for.

2020-08-06 17:02:36 234

原创 我喜欢的博客汇总

月光博客 http://www.williamlong.info/archives/4147.htmlhttps://www.jianshu.com/p/2947b9e37d1e

2020-08-06 14:17:36 159

原创 算法:多线程-三个线程依次工作

要求:实现三个线程,A线程执行完成后B线程执行,B线程执行完成后C线程执行PS:个人娱乐,欢迎讨论,欢迎斧正/** * @author: lizheng * @create: 2020-08-03 */public class ThreadTest { public static void main(String[] args) { Foo foo = new Foo(); CountDownLatch countDownLatchFirst = n

2020-08-06 14:15:48 240

原创 算法:两个数组取中位数

要求:任意两个数组取中位数,在保证空间复杂度的同时,时间复杂度要求log(m + n)PS: 所有代码均个人所写,欢迎讨论,请勿COPY/** * @author: lizheng * @create: 2020-08-03 */public class Test { /** * 查找中位数 * @param nums1 * @param nums2 * @return */ public Double findMedian

2020-08-06 14:11:32 662

原创 第一天:知识储备

一、分布式系统的实现方式1.基于消息方式实现系统间通信2.基于远程调用实现系统间通信二、部署一台ngix作为负载均衡,两台应用服务器,两台数据库服务器三、saas (software as a service)saas系统除了实现微服务之外,还需要不同公司及客户均可以使用平台,实现数据隔离...

2020-08-03 07:59:44 134

原创 思维模式

1.整体思维 整体宏观的思考2.反向思维 不断的问自己如果不这样3.方法思维 不断的寻找方法不断的提高自己,从知识范围,方法等宏观角度,还有特有技术方向。

2020-08-03 07:59:33 78

原创 使用docker需要注意的十件事

当你最后投入容器的怀抱,发现它能解决很多问题,而且还具有众多的优点: 第一:它是不可变的 – 操作系统,库版本,配置,文件夹和应用都是一样的。您可以使用通过相同QA测试的镜像,使产品具有相同的表现。 第二:它是轻量级的 – 容器的内存占用非常小。不需要几百几千MB,它只要对主进程分配内存再加上几十MB。 第三:它很快速 – 启动一个容器与启动一个单进程一样快。不需要几分钟,您可以在几秒钟内启动一个全新的容器。但是,许多用户依然像对待典型的虚拟机那样对待容器。但是他们都忘记了除了与虚...

2020-08-03 07:59:28 301

原创 Linux 数据库备份与恢复

1.备份数据主要使用dump命令,格式为 mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"_"$time.sql" -p 和$db_passwd之间没有空格,不然$db_passwd会被当做参数[数据库名]来解析2.写成脚本 使用chmod +x修改全限3.使用crontab来启用定时任务 crontab -e 或者 cat /etc/crontab 格式为: 分钟 小时 *** ./t.

2020-08-03 07:59:23 716

原创 Tomcat内存设置

Tomcat的启动分为startupo.bat启动和注册为windows服务的启动,下面一一说明。1.startup.bat启动在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开,加上下面一行:set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M解释一下各个参数:-Xms1024M:初始化堆内存大小(注意,不加M的话.

2020-08-03 07:59:18 98

原创 Maven 子项目

使用maven搭建的子项目,其中包含web子项目和其他依赖子项目,在使用tomcat构建war的时候,会构建该web相对应的war,maven关联的其他子项目会以jar包的形式关联到lib中。从而,使得web项目中可以引用其他包的类以及配置文件。web项目中classpath的配置也会从jar中查找classpath只加载一个;classpath*会加载多个。...

2020-08-03 07:59:13 184

原创 项目总结:开发过程中犯过的错误

其实很多错误都是老生常谈了,但是没想到自己在接手这个项目的时候仍然会在这里踩坑~当然也有可能是这个项目逻辑太过复杂、团队工作方式仍存在问题~希望自己在今后再处理复杂流程时,所有问题都能更好的规避~即过不纠,下不为例1.工欲善其事必先利其器要想把分配的工作做好,作为一个研发人员,一定要熟悉自己项目的开发环境和项目中的技术框架。前段时间接了一个需求,我们的订单需要按层级进行展示,但是问题来了,在某系统的供应商页面查看订单数据时,始终无法找到对应的接口是哪个,别说接口了甚至连在哪个项目都不知道,而且没

2020-08-03 07:59:09 362

原创 项目总结:如何上手一个业务系统

作为一个已经上线运行已久的业务系统,它的功能相对完备,若以一个新手的姿态去上手,肯定都需要花些功夫,但我觉得可以从以下几点去入手~当然,即便作为一个老的团队成员,对项目到底掌握到什么程度,我觉得仍然可以通过以下几点来衡量。只不过新手从以下几点入手,每一点都只处在一个较浅的层面,老的团队成员,需要在每个点上都有更深层次的认识~1.工欲善其事必先利其器开发环境的熟悉程度(比如阿里的一套开发环境,新手刚接触时还真的需要花些时间去了解)项目使用了哪些工具/哪些中间件/哪些框架 (可以多花些时间去钻研一下

2020-08-03 07:59:03 288

原创 项目总结:复杂业务场景的设计与实现

我理解的复杂业务场景,指的是处理链路长(一个完整流程需要多个节点处理),链路中某个节点的分支情况多(同一节点下根据不同业务类型有不同的处理逻辑),数据结构繁多且复杂(数据流入时结构越复杂,则说明处理内容增加,业务场景更为复杂)对于复杂的业务场景,建议可以从下面几个方面参看处理:1....

2020-08-03 07:58:41 1890

原创 项目总结:如何开发出好的项目

业务复杂度及解决方案复杂业务场景的设计与实现作为新手如何快速上手新的业务系统开发过程中犯过的错误什么样的项目是好项目好的项目好的代码又该如何开发好的项目需要哪些支持 文档/产品/...

2020-08-03 07:58:04 425

原创 分析模式

1.找方向方向是最重要的,如果一开始找错了方向,那么努力多久都是白费,最开始一定要确定有多少方向。然后选择一个最靠谱的。2.过程中反思方向在过程中一定要经常反思,自己的方向是否正确,是否还有其他方向,尤其是在碰壁之后一定要好好反思。3.方法论 与 swot分析方法论:不止只有swot一种模式,做事之前一定要先找方法,可以先百度有哪些分析模式,在百度结果中发现swot 模式比较实用,再去选择,一定不要局限于自己现在的知识范围,按照已有的知识去解决问题,时代不断更新,我们也要不断接收新事物!所以,遇事

2020-07-31 09:59:27 285

原创 软件学习方法

1.gitHub下载相关工程2.官方教程和文档3.书籍4.博客5.相关论坛6.大型软件教程网站(3wschool、传智播客官网、极客学院等)7.视频搜索8.百度网盘搜索9.大型软件交流会(QCON、阿里开发者交流会等等)...

2020-07-31 09:59:22 153

原创 类加载机制

任何一个类在使用之前,都会经历加载、连接和初始化3个步骤,随后程序中便可以访问它的静态方法和用new关键字创建的对象实例。(静态变量存储在常量池中)1、加载过程根据一个类的全限定名,加载该类的二进制字节流到JVM内部2、连接验证:验证是否符合JVM规范,是否为正确的字节流文件准备:为静态变量分配内存空间解析:将常量池中符号引用变为直接引用3、初始化将类中被static标示的代码段执行一遍,如果执行的是静态变量,就会用指定的值替换JVM预设的初始值...

2020-07-31 09:58:29 54

原创 JVM垃圾回收机制

JVM会在什么时候回收一个对象呢?1.该对象没有被引用时2.作用域发生未捕获异常3.作用域执行完毕4.System.exit()5.程序发生意外终止

2020-07-31 09:58:25 65

原创 编译原理

1、词法解析2、语法解析3、语义解析4、生成字节码

2020-07-31 09:58:19 131

原创 JVM内存模型

内存模型主要分为共享内存和线程独享内存,内存分配原理为1.JVM先检查new关键字,并在常量池中定位到一个类的引用;2.检查定位到的类是否已经经过了加载、解析、初始化等步骤;3.为其分配内存,存储对象实例。一、共享内存1、运行时常量池编译期已经确定的数值等2.方法区JAVA类的结构信息3.堆对象实例的存储区域,同时也是JC的主要回收区二、线程独享内存1、PC寄存器程序计数2.JAVA栈原始数据类型、对象引用、以及returnAddress3.本地方法栈比如用其他语言实现某一功能时

2020-07-31 09:58:14 95

原创 SSH的简单教程(整合)

使用框架Sping+SpringMVC+Hibernate+Shiro一、简介1.spring管理bean2.SpringMVC分发HTTP请求3.Hibernate数据库连接4.shiro登录及授权二、配置1.web.xml首先配置全站字符集,否则中文乱码<filter> <!-- 配置字符集 --> <filter-name>encodingFilter</filter-name> <filter-cla

2020-07-31 09:58:09 190

原创 程序开发外围:使你的开发更有效

程序开发并不只是代码的编写,使用一些思维模式及工具,可以帮你更好的明确系统功能,理清编程思路,从而代码也会更为合理。一、明确需求 明确需求就两点:1.明确用户需求,让你的产品更有价值;2.让组员明确要什么东西,有一个共同的认知,避免做出来四不像。 软件开发的第一步永远都是明确需求,只有明确的需求,才能使得你的组员明了功能,朝着一个方向努力,不然不同开发人员按照自己的想法开发,产品出来就是四不像,比如:FLASH第一版,前后台各自按自己的理解去开发流程,前台建议使用对象封装类型,...

2020-07-31 09:57:43 356

原创 一 大型网站演化

一.初始阶段 初始阶段,应用、数据、文件同时部署在同一台服务器上。二、应用和数据库分离 应用需要更高的CPU来处理大量请求,而数据库则需要更大的内存,文件服务器需要更大的硬盘,将其分离,选择更适合的硬件三、缓存 二八定律,80%的人只访问20%的数据,所以采用缓存服务器可以有效减轻数据服务器压力四、使用应用服务器集群改善并发能力五、数据库读写分离六、使用反向代理和CDN加速网站响应速度七、分布式文件系统和分布式数据库系统八、使用NO...

2020-07-31 09:57:29 72

原创 优良代码

代码的衡量:1.健壮性 程序能稳定运行,不会出现BUG2.脆弱性 系统功能修改时的难易程度,不能出现一个功能修改,需要多处变动,更不能一变动就出问题,这需要在创建代码时就考虑到变动问题,而且运用抽象和多态去实现内部逻辑3.重复性 同一个功能应该只有一处代码,不能一部分代码多处编写,所以在写代码时需要将不同的功能分离,细化,分层4.晦涩性 代码要通俗易懂,所以注释清晰,逻辑结构明了,功能分层等思想是十分重要的5.算法的复杂度 不同的功能在实现时有不同的实现方...

2020-07-31 09:57:04 102

原创 BAT面试记录

1.HashMap 线程不安全(多线程产生hash冲突),实现线程安全可以使用Map<String, String> synchronizedHashMap = Collections.synchronizedMap(newHashMap<String, String>());hash冲突底层是key的数组+指向value的链表,链表所在的地址是有key.hashcode的值,若hashcode相同则产生冲突,如果hashcode和key同时相同则覆盖,若果...

2020-07-30 09:49:40 79

原创 顶尖程序员的五种思维模式

一、勇于研究你不懂的代码 通过研究不同的代码,从而熟悉不同的代码结构和设计模式二、精通代码调试 几乎所有的代码都不是一遍写好,学会怎么去调试代码三、重视能够节约时间的工具 工具是很重要的,它们能帮我们节省大量的时间四、优化你的迭代速度 熟悉你的编译器及其他开发工具,如果搜索一个函数要12秒,一天搜索60次,当你熟悉你的编译器之后你只需2秒,这样一天就可以节省10分钟,每年可以节约40小时。五、系统性的思考方式...

2020-07-30 09:49:13 856

原创 清算管理总结

一、代码要一遍写好,千万不要留着一部分没想好就开始写其他的,想着等写完其他的再回头来写,当你回头的时候你回发现自己一脸懵比,不知道当时发生了什么,也不知道该改些什么。二、降低耦合一个功能只提供一个对外接口,外部要做这么一件事时,统一使用该接口实现(addUserCommand、delUserCommand)使用接口编程,降低重写的难度减少代码复制,这样更改代码逻辑的时候会更改很多地方,然而你并不知道应该修改那些地方,这样逻辑BUG就出现了三、当你做一个功能的时候,一定要宏观考虑我要修改的东西需要变

2020-07-30 09:49:05 246

原创 吞吐量、并发量

并发数、吞吐量的概念最初用来衡量网络设备的性能,后来推广到服务器及业务上评估系统的整体性能。一、网络设备的并发数、吞吐量并发数(Concurrency):也叫并发连接数,指网络设备所能处理的最大会话数量。这里的会话数是指请求->响应一次会话。吞吐量(Throughput):用户请求是由一个个数据包组成,网络设备(防火墙/路由器/交换机)对每个数据包的处理要耗费资源。吞吐量是指在不丢包的情况下单位时间内通过网络设备的数据包数量。网络层面并发数和吞吐量的关系:并发数x包长度=吞吐量参考:吞吐与并发

2020-07-30 09:48:53 11508 1

原创 Maven多模块依赖

使用Maven以后,可以更方便的进行构件化开发,一般项目中存在多模块,它们的关系,包括父子关系以及依赖关系,都可以通过pom文件的配置来实现的。1. 父子关系 一个多模块项目通过一个父POM 引用一个或多个子模块来定义。 a. 在父目录中分别创建子项目 b.父项目,通过以下配置,将子项目关联:如下:<modules> <module>myapp-client</module> &lt...

2020-07-30 09:48:46 274

原创 JAVA异常机制

1.Java异常机制Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:图片来源:http://blog.csdn.net/wuwenxiang91322/article/details/103463372.ThrowableThrowable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常。.

2020-07-30 09:48:38 86

原创 BlurAdmin

官网:https://akveo.github.io/blur-admin/github:https://github.com/akveo/blur-admin安装启动步骤:https://akveo.github.io/blur-admin/articles/002-installation-guidelines/环境需要:Node.jsGit第一步[html]view plaincopygitclonehttps://github.com/a...

2020-07-30 09:48:29 1458

原创 Log4j使用

1.利用类加载机制,重写需要修改日志的类2.如何加载log4j--->mybatis在spring中的加载mybatis会自动加载mybatis-config,当与spring集成时,将所有的bean交给spring管理log4j使用 / slf4j / log4j的加载机制 / mybatis的日志加载机制 / spring的bean管理功能 / 问题的解决过程 / 项目结构classpath,jar.maven / java虚拟机加载哪些资源到内存中 / 发展方向 / listener

2020-07-30 09:48:19 67

原创 应用空指针处理心得

对于应用系统最头疼的莫过于要写很多的非空处理,经过一些资料研究,对于空指针的处理,做如下总结(SSM)():根据部分博客及框架源码分析得出的结论总结:具体情况具体分析1.有的地方允许传空,也允许返回空,这种情况下不做非空处理2.系统安全性大于冗余的非空处理3.controller层的入参是比做非空处理的,为了方便处理,建议使用注解的方式@NotNull4.通过约定,避免不必要的非空判断controller对service出参进行判断service对入参做非空处理,减免cont

2020-07-30 09:48:09 509

原创 SSO部署问题

使用SpringBoot搭建的SSO项目将其通过JAR包的方式部署在服务器中,本以为很简单,却遇到了很多麻烦,现在总结一下。1.JDK版本不同,高版本编译的class在低版本中可能无法运行,有可能高版本的class格式不一样2.ant和maven对比:java的构建工具有很多,根据自己情况 选择合适的即可3.idea更换JDK后:这是我今天下午遇到的最扯淡的一个问题,只是换了一个JDK,却重新配置了很多地方,真是汗。。。。setting,structureSetting,MavenCompi

2020-07-30 09:47:31 249

原创 如何评价一个程序员的好坏

想写这篇博客很久了,但一直没时间,觉得自己技术还差的太多,拼命累积代码量,这件事一拖就是好久。。。今天终于下定决心,把自己心里一直以来的结打开。于是写下了这篇博客,由于自己的经验有限,在写之前特地了解一下别人的看法。一、先从一个故事开始魏文王问扁鹊家里三兄弟谁的医术最好。扁鹊回答说大哥最好,二哥次之,他自己最差。魏文王疑惑了,又问道,为什么扁鹊最有名呢?扁鹊回答说因为大哥治病的时候人没病就防止了,所以毫无名气。二哥呢,病刚起来的时候,就给治好了,大家以为只能治小病。而自己呢,能耐不够,非要到了病的很

2020-07-29 11:39:29 1147

原创 软件开发的三把金斧头

1.认真架构,一遍做好:磨刀不误砍柴工,一颗认真的心,尤其在解决BUG的时候更不能心急,一定要静下心来,认真思考问题出在什么地方,并制定解决方案,闷头去做反而一个很小的问题,一天不见得做完开发之前,一定要把整个逻辑理清楚,可以先列大纲,然后开发的时候一步到位,不能心想返工优化,软件开发和做事一样,一鼓作气,再而衰,三而竭。一定要有精益求精的精神,一遍做好!2.没什么困难的:除非你方法错了,找准方法和解决方案,事半功倍我觉得没有什么问题是不可逾越和解决的,遇到麻烦,走不下去了,很简单,你方法.

2020-07-29 11:39:20 165

原创 JVM -JAVA程序执行流程1

1.子类继承父类新建对象时,内存分配1.1子类存有父类对子类的可见信息1.2子类堆中存有指向父类堆的一个指针1.3子类堆中有一块区域存放父类信息,子父类中同一变量在堆中位置不同,在方法区子类存有父类方法,若子类复写了该方法,则子类的方法区中父类所占区域的方法会被覆盖。子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区,当把引用付给父类时,是把子类内存区里面的父类实例区域的引用给了父类的实例.继承的基本概念:(1)Java不...

2020-07-29 11:39:13 119

原创 JVM -JAVA程序执行流程2

简单说来,一个java程序的运行需要编辑源码、编译生成class文件、加载class文件、解释或编译运行class中的字节码指令。下面有一段简单的java源码,通过它来看一下java程序的运行流程: 1 class Person 2 3 { 4 5 private String name; 6 7 private int age; 8 9 10 11 public Person(int age, String name){

2020-07-29 11:39:05 91

原创 致--不期而至的某一重大BUG

某月某日晚,被BUG耽误至深夜。。。总结,这次处理BUG时踩过的坑。1.没有有效的日志配置,有效日志没有输出,解决方案:合理使用日志框架,日志信息合理输出至相关位置,如控制台、日志文件,项目配置DEBUG启动模式2.在核心业务逻辑中应采用打桩的方式,跟踪程序流程,不能程序走到什么地方,在哪里出了BUG,你竟都不知道3.程序应该有合理的控制平台,如在管理页面显示每个接口处理时常,每条sql语句处理时常等。4.程序的压力测试...

2020-07-29 11:38:58 77

原创 URL和URI

经验式理解:http://localhost:8080/my/hello.html以上web地址,红色字体部分+绿色字体部分=URL;绿色字体部分=URI。这是大部分程序员对两者理解的一个典型代表。

2020-07-29 11:38:51 90

空空如也

空空如也

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

TA关注的人

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