特点 Java 比较突出的特点: 面向对象:封装,继承,多态。 平台无关性(跨平台):Java 是一种 “一次编写,到处运行(Write Once,Run any Where)” 的语言。也就是说,采用 Java 语言编写的程序具有很好的可移植性。保证 Java 可移植性的正是 Java 的虚拟机机制。 多线程:Java 语言提供了多线程支持。 JIT(Just-In-Time)编译:指的是即时编译器,它可以在程序运行时将字节码转换为本地机器码来提高程序运行速度。 编译与解释并存:需要先将源代码编译成字节码,再解释执行字节码。 JVM、JDK 和 JRE JVM(Java Virtual Machine,Java 虚拟机):JVM...
Java提供了三种创建线程的方法: 重写Thread类的run(); 通过实现Runnable接口; 通过Callable和FutureTask创建线程。 通过 Thread 类创建 在Java中,每一个线程实际的创建和运行都是通过Thread类。Thread类的run()方法就是当前线程的入口点(入口方法)。 在Java中,在运行main()方法时,实际上是创建了一个名为main的线程。而main()方法则是当前应用程序main线程的入口点(入口方法)。 直接通过Thread类的无参构造函数创建Thread对象,创建出来的线程并没有任何实际的作用。也就是说它的run()方法并没有执行任何实际的任务。 通过Thread类直接创建线程...
概念 Java 并发编程中涵盖了以下这些概念: 进程 线程 并发 并行 进程 进程(Process)是指在计算机中正在运行的一个程序的实例。进程是操作系统进行资源分配和调度的基本单位(资源分配的最小单位),用于执行程序的代码和管理与该程序相关的资源。每个进程都有自己的地址空间、内存、文件句柄等资源。 进程的一些相关概念: 程序:程序是静态的,是一组指令和数据的集合;而进程是程序在执行时的一个实例,是一个动态的实体。 程序被运行时,程序的代码从硬盘被加载到内存中,此时就开启了一个进程。 程序可以同时运行多个实例进程,也可以仅运行一个实例线程。 地址空间:进程的地址空间包括代码段、数据段、堆和栈。 地址空间使得每个进程都在自己的独立内...
Vue UI 组件库 在Vue中,可以通过引入他人编写好的组件库,来构建自己的页面,提高开发效率。 Vue中常用的UI组件库有: 移动端常用UI组件库: Vant Cube UI Mint UI NutUI PC端常用UI组件库: Element UI IView UI Ant Design Vue 安装 Element-UI 1npm i element-ui 引入并应用 Element-UI 1import ElementUI from 'element-ui'; // 引入 Element-UI 2import 'element-ui/lib/theme-chalk/index.css'; // 引入 Element-UI...
Vue Router中有两种工作模式,它们分别是: hash模式:使用URL的hash来模拟一个完整的URL。 hash:在URL中,#符号及其之后的内容。 当URL改变时,页面不会重新加载。 URL中会包含一个/#/,不够美观。 在浏览器中,hash的内容并不会被浏览器作为请求中的一部分发送给后端服务器。 hash模式兼容性强。 工作原理:通过监听hashchange事件,从而监控hash的变化。当hash发生变化时,Vue Router会解析hash之后的内容,并将对应的结果呈现出来。 history模式(依赖于HTML5):通过HTML5新增的history,将hash URL中的#符号去除。 去除了URL中的#符号之后,在刷...
Vue Router提供的路由守卫主要用来通过跳转或取消的方式守卫导航。 在路由守卫中,你可以自定义何时何种情况放行或拦截页面的路由。通过Vue Router,可以实现对前端页面路由的权限控制。 Vue 路由守卫有以下分类: 全局守卫 独享守卫 组件内守卫 全局路由守卫 全局路由守卫,是在Router配置文件中,在router上配置的路由守卫。 在配置路由守卫之前,在Router配置文件中需要先接收到router实例: 1const router = new VueRouter({ 2 /* ... */ 3}) 全局路由守卫对整个Vue Router下的所有路由都生效。 全局前置守卫 全局前置路由守卫的使用方式如下:...
路由组件生命周期钩子 Vue路由组件除了能使用组件的那些生命钩子外,还能使用两个专用于路由组件的生命周期钩子。 当用户打开链接,路由到相应的组件时,这个被路由的组件就呈现激活状态;反之则呈现失活状态。 activated():在路由组件被激活时自动调用。 deactivated():在路由组件失活时自动调用。 路由组件的生命周期钩子使用方式与生命周期钩子相同: 1export default { 2 activated() { 3 /* ... */ 4 }, 5 deactivated() { 6 /* ... */ 7 }, 8} 组件内路由守卫 Vue路由组件钩子除了生命周期钩子外,还有组件内路由守卫。、 组件内路由守卫和生...
Vue Router中,开启路由组件缓存可以使用<keep-alive>将<router-view>包裹起来。使用了<keep-alive>之后,路由组件被用户切换掉时,不会被销毁。 1<keep-alive> 2 <router-view></router-view> 3</keep-alive> <keep-alive>默认会缓存当前在<router-view>中展示的所有组件。如果要指定缓存的组件,可以使用include。在include中指定要缓存的组件的名称即可。 例如: 1<keep-alive include="Home"> 2 <router-view></router-view> 3</keep-alive> 如果...
编程式路由导航是指不通过<router-link>创建<a>标签来定义导航链接,而是借助路由组件实例中的$router实例,通过编写代码来实现路由导航。 使用编程式路由导航,可以让路由的跳转方式变得更加灵活。 两种导航方式 $router也有与<router-link>相同两种导航方式,分别是push和replace。这两种方式分别调用两个不同的API,不过这两个API的使用方式是一致的。并且他们传入的参数与<router-link>中to props的值一样,可以传入两种类型的参数。 $router.push(): 1this.$router.push('/user/zhangsan') 1router.push({ 2...
路由的props配置可以让路由组件更方便地接收到参数。在组件中使用$route会让组件与路由紧耦合(使用组件必须配置路由)。通过props可以解除组件与路由的紧耦合。 注:使用props,让组件通过props接收参数,让路由通过props给组件传递参数。这样当组件被用在其它不使用路由的组件中时,组件依然可以通过props接收参数,而无需配置路由。 对象模式 当props是一个对象时,它将被作为组件的props,原封不动地被传递给组件props。在props为静态的时候可以使用这种方式。 1routes: [ 2 { 3 path: '/promotion/from-newsletter', 4 component:...