- 博客(160)
- 问答 (2)
- 收藏
- 关注
原创 day1 linux下nodejs环境搭建(java转ts全栈/3R教室)
linux上肯定得安装吧,之后服务部署启动要用;windows安装过,开发用。该笔记已整合入个人知识体系,详见。:一种shell工具。
2024-03-19 16:42:00 279
原创 Struts2
Struts现在无疑是很老了,可能一些老项目还用Struts,但近五年已经基本被SpringMVC所取代。老技术虽然不用深入去研究,但还是要去了解和会用的,一方面扩展视野,另一方面更好的理解新技术的优势。是什么:Struts:2000年开发的Web层框架,符合Model-View-Controller三层架构的设计模式。名为 ActionServlet 的 Servlet 充当控制器(Controller)根据描述模型、视图、控制器对应关系的 struts-config.xml 的配置文件.
2020-07-30 23:55:50 243
原创 Java IDE 之间的异同 (IDEA, Eclipse)
Java常用的IDE有很多种,比较经典的Eclipse,MyEclipse,近年来比较流行的IDEA.而将eclipse创建的项目用IDEA打开多少会出现点问题,这需要我们比较两个IDE之间的不同. IDE是什么:IDE一般指集成开发环境,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。 区别:比如代码编辑器的自动生成策略就不一样 编译器:idea默认编译用JDK的javac,eclipse里面用的则是EPJ,编译时会有区别 其他:听同事说不同IDE对jdk和tomcat的版本选择也有区别.
2020-07-30 11:38:17 2578
原创 Day131 面试记录(3)
安博教育 微服务之间接口的调用怎么实现,从代码层面具体怎么写 springcloud你都用过那些组件 浏览器发一个请求到网关,网关是通过什么转发到微服务 线程安全的集合 concurrenthashmap和hashmap的区别 jdk1.8在集合方面的处理都增加了什么方法? List和set的区别 如何实现多线程 callable的返回值是拿什么方法接收的 Thread和Runable的区别 String、StringBuffer 和 StringBuilder .
2020-07-30 11:09:10 182
原创 Day131 面试记录(2)
多线程的应用场景线程的生命周期线程间的通讯机制进程和线程hashmapconcurrenthashmap常用的锁有哪些数据量特别大hashmap存储不了java的内存模型git的垃圾回收机制arraylist和linklistarraylist扩容机制spring用到那些设计模式aop怎么实现动态代理的为什么要用springcloud熔断机制的实现原理各层协议抓包工具的实现原理存储过程聚合函数用过索引吗?那些字段需要建立索引联合索引听到过吗项目中的并发常见介绍
2020-07-19 23:58:29 107
原创 Day131 面试记录(1)
人力面试问题离职的原因?是统招本科吗,学信网可查吗?可以接受外包/驻地/外派吗?上家公司的工资,福利,年终奖等期望薪资?什么时候入职?大学绩点排名?技术面试题目项目中并发的体现:优惠权展示: 如果优惠券列表缓存存在,从缓存中查询,缓存不存在从DB中查询并插入到缓存,在这里用到了分布式锁来解决并发问题。因为某个时间点缓存不存在请求量有很大的时候,会出现缓存并发的问题,多个线程会重复查询数据库,有重复查询缓存,出现两组优惠券,所以用分布式锁解决并发问题,拿到锁并且判断尚未缓存..
2020-07-08 12:45:23 179
原创 Day129 消息中间件
消息中间件基础知识消息队列 MQ:为什么:当数据进行更新时,数据库,索引库,静态页面都需要进行修改,如果直接让服务器端修改这些代码,违背了微服务的独立原则;即使通过接口进行修改也会导致代码的耦合,所以产生了消息队列的机制,如果数据发生修改,服务器端只需要向消息队列发送消息,就可以做其他工作了(异步),而索引库和静态页面的接口时刻监听消息队列,如果监听到服务端的消息便进行数据的更新。是什么:消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息
2020-06-30 11:59:44 128
原创 Day128 全面理解Redis
Redis基础知识NoSQL 数据库的产生就是为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql 数据库。Redis数据库:与传统数据库不同的是redis 的数据是存在内存中的,所以存写速度非常快,因此redis 被广泛应用于缓存方面。另外,redis 也经常用来做分布式锁。*常见问题集群1、常见问题 1、缓存穿透 1、概念 2、产生原因 3、解决方案 2、缓存击穿 1、概念
2020-06-29 19:22:39 237
原创 Day127 Redis基础
Redis基础NOSQL数据库是什么:NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。以下为主流的NOSQL产品:为什么:随着互联网 web2.0 网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种
2020-06-29 09:39:07 88
原创 Day126 JVM
JVMJVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一。Java语言的跨平台特性是由JVM实现的。类加载机制Java程序运行机制:先在IDE上编写源代码(.java)之后编译器会将源代码编译成字节码文件 (.class)然后类加载器再把字节码加载到内存中,将其放在运行时数据区的方法区内由执行引擎将字节码翻译成底层系统指令,再交由CPU去执行这里面重点关注
2020-06-27 10:20:59 99
原创 Day125 MySQL索引
MySQL索引索引概述索引:MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优点:提高数据检索的效率,降低数据库的IO成本;通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。缺点:实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,
2020-06-25 11:20:19 106
原创 Day124 MySQL优化
MySQL优化在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化。SQL优化优化SQL的步骤:当面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题?查看SQL执行频率:作为SQL优化的借
2020-06-24 10:50:56 109
原创 Day123 MySQL事务
MySQL高级数据库优化:* SQL优化,存储引擎选择,表结构优化,索引优化,分库分表,数据库分库分表一般数据量多大才需要?数据类型选择存储引擎和大多数数据库不同,MySQL有一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,所以存储引擎也可以被称为表类型。InnoDB:MySQL5.5之后默认引擎。支持事务的支持,提供了行级锁和外键的约束;数据一致性,完整性应用场景:需要事务支持的业
2020-06-23 23:06:06 134
原创 Day122 Linux常用命令
查看日志因为在生产环境会遇到很多问题,那么最快的定位方式莫过于去看日志,我们都知道服务器每天会产生大量的日志,那么如何快速的定位也就是最关键的。CentOS中的日志服务系统rsyslogLinux系统常见的日志文件路径1:/var/log/messages:记录 Linux 内核消息及各种应用程序的公共日志信息路径2:/var/log/cron:记录 crond 计划任务产生的事件信息路径3:/var/log/dmesg:记录 Linux 操作系统在引导过程中的各种事件信息路径4:/var/l
2020-06-21 23:38:27 104
原创 Day121 深入理解Spring与SpringBoot
SpringSpring是一个 轻量级 的 控制反转(IoC) 和 面向切面(AOP) 的容器框架,意在解决Java企业应用开发的复杂性。IOCIOC意在降低程序的耦合度,将对象创建和对象之间调用关系交给IOC容器管理,参与开发的每一成员只要实现自己的类就可以了,不需要依赖其他类。原理IOC容器就是一个管理对象的工厂IOC原理:工厂模式 + xml解析 + 反射为什么:为了尽可能的降低程序的耦合度new方法:原始方法用new来创建调用对象耦合度太高,一旦调用的对象路径方法发生
2020-06-19 11:48:27 143
原创 Day120 计算机网络
计算机网络重点了解网络分层模型(OSI、TCP/IP和五层模型)和常用的协议(HTTP/HTTPS 和 TCP/IP)分层模型概述:OSI模型七层,概念清楚,理论也比较完整,但其既复杂又不实用;TCP/IP模型四层,应用非常广泛,计算机网络的课程一般会把两者折中为五层架构,这样既简洁又能将概念阐述清楚。数据传输流程:应用进程数据线传送到应用层,加上应用层首部,成为应用层PDU在传送到运输层,加上运输层首部,成为运输层报文在传送到网络层,加上网络层首部,成为IP数据报在传送到数据链路层,加上链
2020-06-18 19:48:27 274
原创 Day118 并发编程进阶
JUCjava.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks
2020-06-15 16:07:43 126
原创 Day117 并发编程基础
并发编程基础概述基本概念:程序:程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。进程:进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。比如在Windows系统中,一个运行的xx.exe就是一个进程。线程: 一个进程之内可以分为一到多个线程,一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行,Java 中,线程作为最小调度单位,进程作为资源分配的最小单
2020-06-13 10:24:21 166
原创 Day116 并发编程之Lock体系
Lock体系对比同步方法和同步块,Lock 接口提供了更具扩展性的锁操作。基本概念悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。应用场景:Java 里面的synchronized 关键字的实现也是悲观锁。再比如传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,
2020-06-12 17:43:40 131
原创 Day115 并发关键字之synchronized与volatile
synchronized起因:在并发编程中存在线程安全问题,主要原因有多线程共同操作共享数据,我们可以使用同步机制(synchronized)来解决该问题,使得同一时刻,只有一个线程可以操作改数据。synchronized:通过使用synchronized关键字可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。用法使用方法:Java中每一个对象都可以作为锁,这是synchronized实现同
2020-06-11 15:12:12 172
原创 Day114 Java容器底层原理
ArrayList的扩容机制ArrayList的扩容机制还是相对容易理解的,就是在第一个添加元素时,创建一个长度为10的数组,之后随着元素的增加,以1.5倍原数组的长度创建一个新数组HashSet实现原理HashSet实际上为(key,null)类型的HashMap,而我们知道,HashSet的key是不能重复的,所以HashSet的值自然也是没有重复的.因为HashMap的key可以为null,所以HashSet的值可以为null.、sort方法的底层排序实现原理https://www.jia
2020-06-10 08:56:31 139
原创 Day113 ConcurrentHashMap底层原理
ConcurrentHashMap前言:现在很多会涉及到高并发的应用场景,最常用的双列集合HashMap是线程不安全的,HashTable虽然线程安全但却效率太低,所以就在HashMap的基础上有了并发安全的ConcurrentHashMap。为什么HashMap线程不安全:多线程put操作,导致元素丢失。多线程put操作后,get操作导致死循环。为什么HashTable线程安全:因为它的remove,put,get都做成了同步方法。HashTable安全机制的缺点:只有一把锁,效率
2020-06-09 13:28:03 217
原创 Day112 HashMap底层原理
Map 双列集合最顶层接口 Key(键,不能重复)—>Value(值,能重复),一对键值叫做Entry项 基本操作:增删查,判断包含等 遍历方法:键找值或键值对方法 HashMap<K,V>:自定义对象需要重写hashCode()和equals()方法。 LinkedHashMap<K,V>:有顺 Hashtable:最早,效率低,已被取代...
2020-06-07 22:36:25 197
原创 Day111 Java基础知识点 序列化+拷贝
序列化概述程序运行的过程中,所有变量都是在内存中操作的,当程序一旦执行完毕,结束退出后,变量占有的内存就被操作系统回收了。 因此我们需要将某些数据持久化存储到磁盘中,下次运行的时候从磁盘中读取相关数据。我们将变量从内存中变成可以存储或传输的过程称之为序列化。什么情况下需要序列化:a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;package pac.IOstream;import
2020-06-06 22:19:35 119
原创 凯文凯利 《必然》 读书笔记
THE INEVIABLE形成becoming罗辑思维假装成一个网络视频。进托邦但是未来科技出现的方式和上述三者都不同。它是——“形成”Becoming。1.渐变。2.变了之后,连亲妈都不认识。3.变的过程,绵长而持续,让你感觉不到。一、“不断升级”变成一种常态。不要守旧,用最新的app,最新的软件。不断尝试市面上的新东西,新的体验。二、我们都将是“菜鸟”。抓住不易变得东西,去学习,比如思想方法,比如思维习惯,在比如学习本身。三、“..
2020-06-06 10:49:07 1412
原创 计算机组成原理 笔记
总线&系统总线总线的意义:计算机系统部件之间的连接有两种,一种是分散连接,一种是总线连接,因为当部件多的时候,根据排列组合公式,每两个部件之间都用连线将变得不经济并且难以实现,故总线的出现是为了是各部件之间的通信体系实现最优化。总线是连接多个部件的信息传输线,是个部件共享的传输介质。某一时刻只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接受相同的信息。总线结构双总线结构 第一种:一组总线连接CPU和主存,称为存储总线(M总线); 第二种:在单...
2020-06-06 10:35:40 156
原创 Qt入门 Mdi案例 笔记整理
0 整体设计实现流程新建Qt Gui项,继承自QMainWindow首先界面设计,设计好菜单和工具栏,向主窗口中心区域拖入一个MdiArea部件创建子类窗口,为了实现多文档操作,必须子类化窗口的中心部件,继承自QTextEdit功能的实现功能的完善1 主窗口实现新建Qt Gui项,继承自QMainWindow\大概理解,下面自动生成的代码目的其一是生成主界面mainwindow类的基本函数,如构造函数,析构函数,这都是C++的知识;另外是把界面设计ui文件连接到了程序中,比如为界面设
2020-06-06 10:12:29 620
原创 汇编语言笔记整理
1. 基础知识概念汇编语言 汇编语言是机器指令的助记符,每一种CPU都有自己的汇编指令集 组成 汇编指令:机器指令的助记符,有对应的机器码 伪指令:由编译器执行,没有对应机器码,机器不执行 其他符号 存储单元 微型机存储单元可以存储一个B(Byte,字节),即8个二进制位,存储无符号值0~255 总线 计算机中专门连接CPU和其他芯片的导线,称为总线。导线从物理上讲,就是一根根导线的集合,一根导线可以传送的稳定状态只有两种,高电平或低电平,分别
2020-06-06 09:58:40 947
原创 《信息简史》摘录
编码:把一个东西映射到另一个东西上,好的映射应该保证信息不丢失。 语言的“信息”不仅仅包含在每个字词上,还包括在音调上,还包括在句话,整篇文章,整个语言背景的综合里。 语言上的冗余指的是“为了克服歧义和进行纠错而专门引入的额外的信息”,事实上每一种语言都包括冗余,这也就是为什么人们可以读懂错别字连篇的文章。但在通讯中,这种冗余明显会造成巨大的浪费。 可用的符号(信息载体)越少,为表示出给定信息量所需的符号(信息载体)就越多。 最难度量的是这些“中间符号层”,比如单个字母,和人类语言本身的关联。而正是
2020-06-06 09:43:33 1168
原创 信息论总览
1. 前言 熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。 在信息论里则叫信息量,即熵是对不确定性的度量。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。当我们不知道某事物具体状态,却知道它有几种可能性时,显然,可能性种类愈多,不确定性愈大。不确定性愈大的事物,我们最后确定了、知道了,这就是说我们从中得到了愈多的信...
2020-06-05 23:33:03 2065
原创 计算思维导论 笔记整理
1. 人计算与机器自动计算“人”计算与“机器”计算的差别?实际是人脑计算和人用机器计算的差别人计算人计算的优势是创造规则(公式),使计算量减小规则往往很复杂,而且局限性比较强机器计算机器的优势是计算速度,往往计算规则简单,局限性小。在一些人类无法得出合适规则的问题上机器可以通过暴力运算求解。其实这个问题可以扩展为,人怎么样用计算机来增强自己的解决问题能力,对于人脑而言,计算机的优势在于计算速度,就像pai的计算史一样,人类可以通过一次次方法的更新来算更多的位数,实验法
2020-06-05 23:17:10 5157
原创 PAT 害死人不偿命的(3n+1)猜想
1001 害死人不偿命的(3n+1)猜想 (15 分)卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹
2020-06-05 22:16:38 387
原创 最大子列和问题
最大子列和问题问题陈述: 给定N个整数的序列{A1, A2, … , AN},求函数ƒ(i, j) = max{0, Ai + Ai+1 + … + Aj}(1<=i<j<=N)的最大值。算法1:计算每个子列的和时间复杂度: T(N) = O(N2)int MaxSubSeqSum(int arr[], int n) { int i, j, currentSum, maxSum = 0; for(i=0; i<N-1; i++) { /* i是子列
2020-06-05 22:14:02 101
原创 链表合并
下面三道关于合并的题用到主要的思路是——设置3个指针pa、pb和pc,其中pa和pb分别指向当前带比较插入的节点,而pc指向LC当前最近插入的一个节点,然后顺序可以通过前插后插来控制,重复元素的去留可以通过多一次判断解决。习题1 将两个非递减有序链表合并为一个非递减的有序链表,要求结果链表仍使用原来两个链表的存储空间。void MergeSqList(LinkList LA, LinkList LB, LinkList &LC){ LNode *pa = LA->next; L.
2020-06-05 22:12:37 244
空空如也
这个项目的UI是怎么实现的?(Javascript)
2018-04-15
notepad++编码问题,求解
2018-03-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人