- 博客(174)
- 收藏
- 关注
原创 Java的继承和多态
继承使用extends关键字进行继承,子类天然有父类的属性和方法,子类也可以声明自己的方法和属性。例如一个管理系统,有多种身份:管理员、老板、员工,这十三种身份都需要账号、密码、手机等,这就可以通过继承来实现。通过实现一个系统用户的父类,每一种身份继承系统用户,再新增身份的属性。final关键字修饰的类不能再进行扩展,比如String类。单继承Java中的一个类只能继承自一个类,目的是继承数据。但是一个类可以实现多个接口,有多种方法。当子类和父类有相同方法时,可用super方法,使用父类中的方法什
2021-02-19 22:45:17 297
原创 Java中的Map
Map类型LinkedHashMap继承自HashMap,TreeMap继承自SortedMap, HashMap和SortedMap都实现了Map接口。Map的主要方法有remove、size、containsKey、clear、containsValue、putIfabsentMap构造方法不带参数的构造方法,默认长度是16,默认的负载因子是0.75。等同于Map<Integer,String> map = new HashMap(16, 0.75f);超过75的坐标被占用后会进
2021-02-19 20:40:12 322
原创 spring对象管理和mybatis一级缓存
控制反转控制什么?控制bean的创建和销毁(生命周期),反转什么,把bean的生命周期交给ioc容器。开车回家,创建一辆车,车对象左转,车对象右转最后销毁车辆。人对象有goHome、goShop等方法,这些需要依赖车对象,如果在人的类里面创建一辆车的对象,如果车要换,所有上层应用都要感知。实现控制反转被依赖的bean需要优先创建,同时还需要:实例化bean保存bean提供bean,每个bean都有一个id对应可以使用一个conCurrentHashMap来保存创建的bean,每个bean
2021-02-17 14:54:43 391
翻译 Java Socket编程
Socket概念tcp协议全称是Transmission Control Protocol,传输控制协议,ip全称为Internet Protocol互联网协议,tcp/ip协议在四层模型中的传输层。http、ftp、telnet(ssh)远程登录服务为应用层协议,是应用层感知和选择的协议。IP地址+端口号组成了socket的逻辑概念,socket是tcp/ip的基础。InetAddress...
2019-04-09 17:27:20 255
原创 权限管理
RBAC模型是基于角色的权限管理(Role-Based Access Control),权限与角色关联,用户与角色相关联。具体到用户登录时,先拉取用户相关的角色,再拉取这些角色相关的操作,返回给用户所有操作list。数据库设计首先设计用户表,user表中有id,name和pwd字段,包含用户名密码。角色表role中有id和name字段。user_role映射表中有id,role_id,...
2019-04-07 11:07:26 257
翻译 Shell基础
Shell是一个命令行解释器(翻译成01机器码),它向用户提供了一个向Linux内核发送请求的程序(用户通过应用程序或者Shell操作内核和硬件),在Shell中可以直接调用Linux系统命令。Shell的主要语法类型有Bourne和C,Bourne包括Bash、zsh等。echoecho -e可以输出很多特殊字符,包括换行符等。ASCII码输入需要以16进制输入,\x代表16进制(68转化...
2019-02-16 17:05:39 210 2
翻译 Linux进程管理
进程概念进程是正在运行中的程序或者命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。只要程序在运行,都至少会产生一个进程。比如最简单的ls命令,会产生一个进程去执行,ls这个进程时间比较短,而有一些线程存活时间长,会常驻在内存中。打开一个网页,至少会在对方服务器上产生一个进程。进程管理的主要作用如下:判断服务器健康状态查看系统中所有进程杀死进程想必大家都用...
2019-02-12 19:27:23 301
原创 Mysql索引
我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。 索引就是为特定的mysql字段进行一些特定的算...
2019-02-12 18:17:55 202
翻译 简单项目上线流程
准备工作一台Linux(CentOS/Ubuntu)服务器web服务器(Nginx/Apache/Tomcat)一个属于自己的独立域名aliyun上购买服务器可以先选择ECS服务中的入门级,选择2v cpu(2核),2GiB内存的实例,镜像中选择CentOS系统,版本选择7.0以上版本。点击下一步,网络端口勾选上80端口(IP访问默认到达80端口)。再下一步,直接选择密码登录,设置登...
2019-02-11 15:33:51 287
翻译 Hadoop入门
大数据包括以Hadoop和Spark为代表的基础大数据框架,包括实时数据处理,离线数据处理,数据分析,数据挖掘和用机器学习进行预测分析。HadoopHadoop = HDFS(分布式文件系统) + MapReduce(分布式计算)。举个栗子,从100M的文件中读取出指定字符串,首先会想到两种方法linux的grep命令编写java代码,读取每行进行匹配那么如果是100T的文件,就需要...
2019-02-04 13:31:53 244
原创 vim编辑器
vim是vi的加强版,vim可以通过vimrc来进行配置。(vimrc是包含初始化命令的文件)vimrcrc的意思是run command,vimrc分为系统级vimrc和用户级vimrc,在vim下输入version指令可以看到如下信息...
2019-02-04 11:44:24 219
翻译 Java动态代理
解决的问题在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在访问此对象时加上一个对此对象的访问层。Java动态代理实现方式:JDK 自带的动态代理Cglib动态代理JDK 自带的动态代理public interface People{ /** * 交谈 */ void speak();}在实例化test这个对象的时候,...
2019-01-13 23:26:42 157
翻译 Java向上转型和向下转型
高阶函数定义函数可以作为参数被传递函数可以作为返回值输出(返回一个函数)高阶组件定义高阶组件基本概念(High Order Component,HOC)高阶组件是接收一个组件作为参数并返回一个新组件的函数高阶组件是一个函数,并不是组件高阶组件...
2019-01-13 22:36:04 3173
翻译 Java注解
元注解元注解是可以注解到注解上的注解:@Retention当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间。它的取值如下: RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。 RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。 RetentionPoli...
2019-01-02 16:14:08 194
翻译 spring中的IoC
没有使用maven的时候,我们在项目开始就要下载各种jar包,Spring、mybatis等等。 maven是基于项目对象模型(POM),可以用一小段信息来描述和管理项目构建、报告和文档的软件项目管理工具。 maven项目一般的结构如下所示 src -main -java -package -t...
2018-12-31 20:44:24 231
翻译 mysql入门
整型mysql的整数型按照存储范围和存储占用字节数主要分为这几种TINYINTSMALLINTMEDIUMINTINT(INT大于MEDIUMINT)BIGINT无符号位存储会是有符号存储数目的大致两倍(有符号位包括负数)。如果没有选择合适的数据类型存储,数据占据的字节就会大大增多。浮点型浮点型分为FLOAT和DOUBLE。这两种类型除了存储范围的不同之外,保留小数点的数目也...
2018-11-04 20:02:41 233
翻译 算法与数据结构应用
数组越界在C语言中,只要不是受限内存,都可以直接访问。当越界的数组a[index]的时候,会被定位到可能不属于数组的内存上。如果这个内存可用,那么不会报任何错误,这就会导致逻辑错误。一些语言如Java会做越界检查。数组下标数组是通过一组连续的内存空间来存储的。当需要访问其中一个数组元素的时候,会通过计算内存来访问a[i]_address = base_address + i * data_...
2018-10-21 12:33:31 1042
原创 spring-boot入门
依赖我们使用IDE初始化spring-boot的时候,会发现这两个依赖&amp;amp;amp;lt;artifactId&amp;amp;amp;gt;spring-boot-starter-web&amp;amp;amp;lt;/artifactId&amp;amp;amp;gt; // spring-boot针对web的依赖&amp;amp;amp;lt;artifactId&amp;amp;am
2018-10-04 15:53:41 236
原创 java虚拟机入门
我们可以把java语言、java虚拟机,java API类库这三部分统称为JDK(Java Development Kit),JDK是支持java程序开发的最小环境。可以把java API类库中的java SE API子集和java虚拟机这两部分统称为JRE(Java Runtime Environment), JRE是支持java程序运行的标准环境(java SE支持桌面级应用,java EE支...
2018-10-04 09:46:28 207
原创 linux入门
用户与用户组我们可以用ls -al来查看当前目录文件的权限,-al表示列出所有权限。drwxr-xr-x 11 yupen staff 352 6 6 23:24 fsp-114507-rw-r--r--@ 1 yupen staff 76769 8 28 15:47 future使用流程图.png第一列表示这个文件的类型和权限。第一个字符代表这个文件是...
2018-10-03 14:58:12 138
翻译 js抽象语法树
function add(a, b) { return a + b}这个语法块,是一个FunctionDeclaration(函数定义)对象。拆解之后包括一个id,就是它的名字,即add两个params,就是它的参数,即[a, b]一个body,也就是大括号内的一堆东西add没办法继续拆下去了,它是一个最基础Identifier(标志)对象,用来作为函数的唯一标志...
2018-09-08 14:53:36 1845
原创 分页功能实现
常见的分页功能实现方式常见的分页功能实现方式有这几种使用List接口中的subList(int startIndex, int endIndex) 的方式进行分页。使用数据库SQL语句实现分页(limit)使用hibernate框架等进行跨数据库的分页SQL语句实现从第0条开始取10条数据select * from student limit 0, 10使用hibe...
2018-09-01 20:23:57 559
原创 消息中间件
为什么要使用消息中间件消息中间件的最简单例子就是微信公众号,读者只需要订阅作者的文章,在作者每次发表文章之后都会收到推送。作者完全不需要关心读者手机电或者信号不好的情况,只要读者重新连上网络,就可以收到作者的推送。 当我们需要调用多个服务的时候,比如注册的时候想要调用短信服务、积分服务和日志服务,这时候逐个同步去调用就不现实。这时可以通过消息中间件来解决这个问题,注册服务发送消息给消息中间件...
2018-09-01 19:50:49 171
翻译 Spring AOP
面向切面编程范式包括面向过程、面向对象、函数式编程、事件驱动编程和面向切面编程。 面向切面(AOP)编程是对面向对象(OOP)的补充,解决某一类特定问题。 面向切面主要要解决的问题是DRY(don’t repeat yourself)和SOC(separation of concerns)关注点分离。 关注点分离既包括横向分离(展示层、服务层、持久层),又包括垂直分离(不同的模块)。面向...
2018-07-27 20:58:35 173
原创 分布式锁表
当想在机器上部署一个定时任务,而不想在分布式的所有机器上都执行,可以通过一个分布式数据库锁来实现: public ServiceResult<Long> getPartyOrgLock(String type){ ServiceResult<Long> result = new ServiceResult<>(); re...
2018-07-27 19:35:35 303
翻译 高可用简介
入口层我们通常会将服务定位在一个IP,如果这个IP对应的服务器当机了,那么用户的访问肯定会中断。例如,机器A 的IP是 1.2.3.4,机器 B 的 IP 是 1.2.3.5, 那么再申请一个 IP 1.2.3.6(称为⼼跳IP), 平时绑定在机器A上,如果A当机,IP会自动绑定在机器B上;如果B当机,IP会自动绑定在机器A上。对于这种形式,我们将DNS绑定到心跳IP上,即可实现入口层的高可用...
2018-07-16 21:28:36 275
翻译 消息服务的生产消费者模式
Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 JMS规范目前支持两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)。点对点消息生产者生产消息发送到queue...
2018-07-16 17:55:42 811
翻译 Java-web接口开发
接口返回的Json数据格式如下: {&quot;code&quot;:&quot; &quot;,&quot;msg&quot;:&quot; &quot;,&quot;time&quot;:1464937933230,&quot;object&quot;:{}}Json格式数据中的“code”属性是
2018-07-14 10:31:33 2899
翻译 Java-web知识点总结
DNS解析在浏览器输入域名之后,浏览器会先从缓存中寻找域名对应的IP地址。如果没有找到,会在操作系统缓存中寻找是否有对应的IP地址。如果在/etc/hosts文件中设置了IP地址,则会优先使用这个IP。我们在测试时可以将域名指向一台测试服务器。 如果这两个过程无法解析,操作系统会将域名发送给本地区的域名服务器。如果还是没有命中缓存,那么将会请求Root Server的服务器。 可以通过ns...
2018-07-12 18:17:11 237
翻译 Java反射
很多自动化的功能都是通过反射完成的,这对很多框架是非常重要的,因为很多框架就是做顶层抽象处理公用的逻辑,所以对于实现层的东西是不清楚的,有了反射机制,框架就可以在运行时获取到自己需要的实现层的一些信息 Java的的反射包java.lang.reflect中提供的最常用且重要的几个类就是Field、Method、Constructor这3个类了 Field提供如下几种方法:Class.ge...
2018-07-12 16:57:53 195
原创 缓存使用
我们一般都会把数据存放在关系型数据库中,不管数据库的性能有多么好,一个简单的查询也要消耗毫秒级的时间,这样我们常说的 QPS 就会被数据库的性能所限制,我们想要提高QPS,只能选择更快的存储设备。(即每秒的响应请求数) 对于缓存来说,数据不常变更且查询比较频繁是最好的场景,如果查询量不够大或者数据变动太频繁,缓存也就是失去了意义。(数据变动频繁要不断让缓存失效) 日常工作使用的缓存可以分为内部...
2018-07-11 17:53:20 196
翻译 Java包管理工具-maven
没有使用maven的时候,我们在项目开始就要下载各种jar包,Spring、mybatis等等。 maven是基于项目对象模型(POM),可以用一小段信息来描述和管理项目构建、报告和文档的软件项目管理工具。 maven项目一般的结构如下所示 src -main -java -package ...
2018-07-11 15:31:41 6589 1
翻译 Java工具类
StringUtilsStringUtils 方法的操作对象是 java.lang.String 类型的对象,是对 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的,除了构造器,StringUtils 中一共有130多个方法,并且都是 static 的,所以我们可以这样调用 StringUtils.xxx()。public static boolean isEm...
2018-07-04 11:42:10 141
翻译 Java日志
Log4JLog4J的三个组件:Logger:日志记录器,负责收集处理日志记录 (如何处理日志)Appender:日志输出目的地,负责日志的输出 (输出到什么地方)Layout:日志格式化,负责对输出的日志格式化(以什么形式展现)Loggerlogger可以有选择的启动和禁用日志的输出private static final Logger log = Log...
2018-07-03 20:01:12 191
原创 Java异常
RuntimeExceptionJava程序在运行的过程中产生异常,就会中断程序的正常执行,为了保证程序在出现异常时 依然能继续执行,就需要对异常进行处理。异常处理就是当程序运行发生不可预知的错误时, 程序能获得异常并进行处理。 Exception 类:指由程序和外部环境引起的错误,它是可以被捕获且可能恢复的异常情况, 它包括 RuntimeException 类异常与其他 Exceptio...
2018-07-03 16:12:36 281
原创 Java内部类
成员内部类 public class OuterClass { private String name; private int age; public String getName() { return name; } public void setName(String name)...
2018-07-03 15:05:12 154
原创 Java泛型
当把一个对象丢进集合中后,集合就会忘记这个对象的数据类型,再次取出时变成了Object,有可能出现异常。 public class ListErr { public static void main(String[] args) { List strList = new ArrayList(); strList.add(...
2018-07-01 21:18:30 138
原创 Java集合
Java集合为了保存数量不确定的数据,以及保证具有映射关系的数据。集合类主要负责保存、承装其他数据,因此集合类也被称为容器类。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口。 如果访问List集合中的元素,可以直接根据元素的索引来访问。如果访问Map集合中的元素,可以根据每项元素的key来访问其value。如果访问...
2018-07-01 19:26:20 136
原创 Java基础
基本类型Java支持的类型分为两类:基本类型和引用类型。 Java的基本类型分为两类,布尔类型和数值类型。又细分为整数类型、浮点数类型、布尔类型和字符类型。 整型(整数类型)按照值域从小到大分为byte、short、int、long。 字符型使用单引号,使用unicode字符集作为编码方式(支持世界上所有书面语言的字符)。字符串则是引用类型(由String类构造)。 浮点型分成floa...
2018-06-30 21:24:45 144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人