和
,只能出现在其它某些特定的元素内部。
这会导致我们使用这些有约束条件的元素时遇到一些问题。例如:
这个自定义组件
会被作为无效的内容提升到外部,并导致最终渲染结果出错。幸好这个特殊的 is
特性给了我们一个变通的办法:
需要注意的是如果我们从以下来源使用模板的话,这条限制是不存在 的 :
字符串 (例如:template: '...'
)
单文件组件 (.vue
)
到这里,你需要了解的解析 DOM 模板时的注意事项——实际上也是 Vue 的全部必要内容 ,大概就是这些了。
举例:table标签插入一个tr
View Code
打开网页,效果如下:
查看html代码,发现它提升到外部了。通俗来讲,就是漂移到table外面了
使用is特性
View Code
刷新网页,效果如下:
查看html代码,这样就正常了
将原生事件绑定到组件
也就是
触发原生事件
你可能有很多次想要在一个组件的根元素上直接监听一个原生事件。这时,你可以使用 v-on
的 .native
修饰符:
在有的时候这是很有用的,不过在你尝试监听一个类似
的非常特定的元素时,这并不是个好主意。比如上述
组件可能做了如下重构,所以根元素实际上是一个
元素:
{{ label }}
<input
v -bind=" $attrs "
v -bind:value=" value "
v -on:input=" $emit('input', $event.target.value) "
>
View Code
这时,父级的 .native
监听器将静默失败。它不会产生任何报错,但是 onFocus
处理函数不会如你预期地被调用。
为了解决这个问题,Vue 提供了一个 $listeners
属性,它是一个对象,里面包含了作用在这个组件上的所有监听器。例如:
{
focus: function (event) { /* ... */ }
input: function (value) { /* ... */ },
}
View Code
有了这个 $listeners
属性,你就可以配合 v-on="$listeners"
将所有的事件监听器指向这个组件的某个特定的子元素。对于类似
的你希望它也可以配合 v-model
工作的组件来说,为这些监听器创建一个类似下述 inputListeners
的计算属性通常是非常有用的:
Vue.component(' base-input ' , {
inheritAttrs: false,
props: [ ' label ' , ' value ' ],
computed: {
inputListeners: function () {
var vm = this
// `Object.assign` 将所有的对象合并为一个新对象
return Object.assign({},
// 我们从父级添加所有的监听器
this.$listeners,
// 然后我们添加自定义监听器,
// 或覆写一些监听器的行为
{
// 这里确保组件配合 `v-model` 的工作
input: function (event) {
vm.$emit( ' input ' , event.target.value)
}
}
)
}
},
template: `
{{ label }}
<input
v -bind=" $attrs "
v -bind:value=" value "
v -on=" inputListeners "
>
`
})
View Code
现在
组件是一个完全透明的包裹器 了,也就是说它可以完全像一个普通的
元素一样使用了:所有跟它相同的特性和监听器的都可以工作。
举例:第一种写法,使用.native修饰符
"en " >
"UTF-8 " >
"app " >
'hehe ' >
View Code
刷新网页,点击按钮,效果如下:
举例:第二种写法,绑定自定义事件
"en " >
"UTF-8 " >
"app " >
'hehe ' >
View Code
刷新网页,点击按钮,效果同上!
针对这2种写法,推荐使用第一种!
一、Vue实例的生命周期
实例生命周期钩子
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
比如 created
钩子可以用来在一个实例被创建之后执行代码:
new Vue({
data: {
a: 1
},
created: function () {
// `this` 指向 vm 实例
console.log( ' a is: ' + this.a)
}
})
// => " a is: 1 "
View Code
也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mounted
、updated
和 destroyed
。生命周期钩子的 this
上下文指向调用它的 Vue 实例。
不要在选项属性或回调上使用箭头函数 ,比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod()) 。因为箭头函数是和父级上下文绑定在一起的,this 不会是如你所预期的 Vue 实例,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。
生命周期图示
下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。
Vue的生命周期,就是从Vue实例被创建开始到实例销毁时的过程, 整个过程主要可以分为 八个阶段 分别是:
创建前(beforeCreate)
已创建(created)
编译前(beforeMount)
编译后(mounted)
更新前(beforeUpdate)
更新后(update)
销毁前(beforeDestroy)
销毁后(destroyed)
以上各个阶分别会有对应的“钩子函数”以Vue实例的选项的形式存在。
Vue提供的生命周期钩子如下:
① beforeCreate
在实例初始化之后,数据观测(data observer,开始监控Data对象数据变化)和初始化事件(init event,Vue内部初始化事件)之前被调用。
② created
在实例已经创建完成之后被调用。实例已完成以下的配置:数据观测(data observer),属性和方法的运算,event事件回调。挂载阶段尚未开始,$el 属性不可见。
③ beforeMount
在挂载开始之前被调用。相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。
④ mounted
在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。此时模板中的html渲染到了html页面中,此时一般可以做一些Ajax操作。注意mounted只会执行一次。
⑤ beforeUpdate
在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。
⑥ updated
在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。
⑦ beforeDestroy
在实例销毁之前调用。实例仍然完全可用。
⑧ destroyed
在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。
关于Vue生命周期的详细解释,请参考文章:
https://www.cnblogs.com/penghuwan/p/7192203.html
这篇文章,写的非常详细,大家可以观摩一下!
如果有想做Vue开发的,vue生命周期必问。大概描述一下Vue实例被创建开始到实例销毁时的过程,就可以了!
二、组件间通信之中央事件总线bus
摘要
中央事件总线 - 就是一个名字可以叫做bus的vue空实例,里边没有任何内容; var bus = new Vue(); 人如其名,她就像一个公交车一样,来回输送人,将a站点的A输送到b站点,再将b站点的B输送到a站点; 这里a,b站点就像父、子组件,也像兄、弟组件,或者像两个没有任何亲戚关系的任何组件; 而A,B就像是各个组件内部要传输的数据或者要执行的命令信息,靠bus来通信。
中央事件总线 - 就是一个名字可以叫做bus的vue空实例 ,里边没有任何内容;
人如其名,她就像一个公交车一样,来回输送人,将a站点的A输送到b站点,再将b站点的B输送到a站点;
这里a,b站点就像父、子组件,也像兄、弟组件,或者像两个没有任何亲戚关系的任何组件;
而A,B就像是各个组件内部要传输的数据或者要执行的命令信息 ,靠bus来通信。
如果有父子组件通信知识基础的,应该记得当初父子组件通信,父组件中用$on监听,子组件中用$emit发射。
现如今父子组件(或任何其他关系的两个组件之间)达成一致协议:
将监听和发射的工作交给了bus来搞,就好像他们两头不自驾接送了,改乘公交了自己出发自己回家了。
那局面就是下边这样
$on和$emit现在绑在bus上了
bus.$emit(‘同名自定义事件名’,‘$on发送过来的数据’);
在a站点(第一个组件)中的methods方法 里,准备用bus的$emit 发射事件任务。
bus.$on(‘自定义事件名’,function(){
//然后执行什么你自己懂的。。。
});
在b站点(另一个组件)实例初始化(mounted钩子中) 时,用bus 的$on 监听自家$emit触发的事件。
Bus实例扩展:
可以再添加data、methods、computed等选项,在初始化时让bus获取一下,任何组件都可以公用了。就像公交车上的座位,只要有座谁都能坐。
可以包括一些共享通用的信息:比如用户登录的姓名、性别、邮箱等,还有油壶授权的token等。
举例:
View Code
刷新网页,效果如下:
、
一、Vue Router
Vue Router中文文档
https://router.vuejs.org/zh/
介绍
Vue全家桶:Vue + VueRouter + VueX
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:
嵌套的路由/视图表
模块化的、基于组件的路由配置
路由参数、查询、通配符
基于 Vue.js 过渡系统的视图过渡效果
细粒度的导航控制
带有自动激活的 CSS class 的链接
HTML5 历史模式或 hash 模式,在 IE9 中自动降级
自定义的滚动条行为
先来看一个网页
点击不同的选项时,页面并没有刷新。如何判断页面有没有刷新呢?看浏览器左侧这个 按钮,有没有闪动。
虽然看到url地址变化了,但它并没有刷新。这个,就是用vue实现的!
起步
用 Vue.js + Vue Router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 Vue Router 添加进来,我们需要做的是,将组件 (components) 映射到路由 (routes),然后告诉 Vue Router 在哪里渲染它们。下面是个基本例子:
基本使用
必须先引用vue.js,再引用vue-router.js
"en " >
"UTF-8 " >
Title
"app " >
"/index " >index页面
"/home " >home页面
View Code
刷新网页,效果如下:
动态路由匹配
我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User
组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router
的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:
const User = {
template: ' User
'
}
const router = new VueRouter({
routes: [
// 动态路径参数 以冒号开头
{ path: ' /user/:id ' , component: User }
]
})
View Code
现在呢,像 /user/foo
和 /user/bar
都将映射到相同的路由。
一个“路径参数”使用冒号 :
标记。当匹配到一个路由时,参数值会被设置到 this.$route.params
,可以在每个组件内使用。于是,我们可以更新 User
的模板,输出当前用户的 ID:
const User = {
template: ' User {{ $route.params.id }}
'
}
你可以看看这个在线例子。
你可以在一个路由中设置多段“路径参数”,对应的值都会设置到 $route.params
中。例如:
模式
匹配路径
$route.params
/user/:username
/user/evan
{ username: 'evan' }
/user/:username/post/:post_id
/user/evan/post/123
{ username: 'evan', post_id: 123 }
除了 $route.params
外,$route
对象还提供了其它有用的信息,例如,$route.query
(如果 URL 中有查询参数)、$route.hash
等等。你可以查看 API 文档 的详细说明。
举例:显示xx的页面
"en " >
"UTF-8 " >
Title
"app " >
"/user/zly " >赵丽颖
"/user/hx " >韩雪
View Code
刷新网页,效果如下:
举例2: 获取url中的年龄和爱好
比如: file:///E:/python_script/Vue/test.html#/user/hx?age=18&hobby=sing
"en " >
"UTF-8 " >
Title
"app " >
"/user/zsp " >赵丽颖
"/user/hx " >韩雪
View Code
刷新网页,访问以下url:
file:///E:/python_script/Vue/test.html#/user/hx?age=18&hobby=看电影
注意:后面的参数是手动加的! 效果如下:
嵌套路由
实际生活中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如:
借助 vue-router
,使用嵌套路由配置,就可以很简单地表达这种关系。
接着上节创建的 app:
html代码
View Code
js代码:
const User = {
template: ' User {{ $route.params.id }}
'
}
const router = new VueRouter({
routes: [
{ path: ' /user/:id ' , component: User }
]
})
View Code
这里的
是最顶层的出口,渲染最高级路由匹配到的组件。同样地,一个被渲染组件同样可以包含自己的嵌套
。例如,在 User
组件的模板添加一个
:
const User = {
template: `
class=" user " >
User {{ $route.params.id }}
`
}
View Code
要在嵌套的出口中渲染组件,需要在 VueRouter
的参数中使用 children
配置:
const router = new VueRouter({
routes: [
{ path: ' /user/:id ' , component: User,
children: [
{
// 当 /user/:id/profile 匹配成功,
// UserProfile 会被渲染在 User 的 中
path: ' profile ' ,
component: UserProfile
},
{
// 当 /user/:id/posts 匹配成功
// UserPosts 会被渲染在 User 的 中
path: ' posts ' ,
component: UserPosts
}
]
}
]
})
View Code
要注意,以 /
开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。
你会发现,children
配置就是像 routes
配置一样的路由配置数组,所以呢,你可以嵌套多层路由。
此时,基于上面的配置,当你访问 /user/foo
时,User
的出口是不会渲染任何东西,这是因为没有匹配到合适的子路由。如果你想要渲染点什么,可以提供一个 空的 子路由:
const router = new VueRouter({
routes: [
{
path: ' /user/:id ' , component: User,
children: [
// 当 /user/:id 匹配成功,
// UserHome 会被渲染在 User 的 中
{ path: '' , component: UserHome },
// ...其他子路由
]
}
]
})
View Code
举例:点击用户后,展示用户详细信息,并能点击查看
"en " >
"UTF-8 " >
Title
"app " >
"/user/zsp " >赵丽颖
"/user/hx " >韩雪
View Code
刷新网页,效果如下:
总结:
1. 基本使用
1. 必须导入vue-router.js文件
2. 要有VueRouter()实例
3. 要把VueRouter实例挂载到Vue实例中
4. 路由的入口
'/index ' >index页面
5. 路由的出口
2. 路由的参数
1. path: ' /user/:name ' --> 匹配路由
$route.params.name --> 取值
2. /user/alex?age=9000 --> url中携带参数
$route.query.age --> 取出url的参数
3. 子路由
children:[
{
path: '' ,
component: {
template: `...`
}
}
]
'info ' append>
View Code
四、webpack模板
官方文档:
https://vuejs-templates.github.io/webpack/
介绍
这个样板是针对大型,严肃的项目,并假设您有点熟悉Webpack和 vue-loader
。 请务必阅读 常用工作流程配方 vue-loader
的文档 。
如果您只想尝试 vue-loader
或制作快速原型,请使用 webpack-simple模板。
快速开始
要使用此模板,请使用 vue-cli构建 项目 。 建议使用npm 3+以获得更高效的依赖树。
$ npm install -g vue-cli
$ vue init webpack my -project
$ cd my -project
$ npm install
$ npm run dev
vue-cli 是进行vue开发的脚手架工具,方便快速生成一个vue项目
先来查看node和npm的版本
C:\Users\xiao>node - v
v10. 7.0
C:\Users\xiao >npm -v
6.1.0
新建一个文件夹vue-cli_demo,进入到此目录
C:\Users\xiao>e:
E:\ >cd E:\python_script\Vue\vue-cli_demo
安装vue-cli,-g表示全局
E:\python_script\Vue\vue-cli_demo>npm install -g vue-cli
npm WARN deprecated coffee [email protected] : CoffeeScript on NPM has moved to " coffeescript " (no hyphen)
C:\Users\xiao\AppData\Roaming\npm\vue -> C:\Users\xiao\AppData\Roaming\npm\node_modules\vue-cli\bin\vue
C:\Users\xiao\AppData\Roaming\npm\vue -init -> C:\Users\xiao\AppData\Roaming\npm\node_modules\vue-cli\bin\vue-init
C:\Users\xiao\AppData\Roaming\npm\vue -list -> C:\Users\xiao\AppData\Roaming\npm\node_modules\vue-cli\bin\vue-list
+ [email protected]
added 252 packages from 218 contributors in 29.948s
查看vue版本
E:\python_script\Vue\vue-cli_demo>vue -V
2.9.6
基于webpack模板创建项目mysite
E:\python_script\Vue\vue-cli_demo>vue init webpack mysite
提示项目名,直接回车
项目描述,直接回车
? Project name mysite
? Project description (A Vue.js project)
作者,直接回车
? Project name mysite
? Project description A Vue.js project
? Author (xiao <[email protected] >)
这个时候,文字是有颜色的,表示选中状态,可以用光标上下移动。选择默认的Runtime + 即可!
是否安装vue-router,直接回车
? Project name mysite
? Project description A Vue.js project
? Author xiao <[email protected] >
? Vue build standalone
? Install vue -router? (Y/n)
是否使用ESLint来编写代码?输入n
它是javascript代码检测工具,必须遵循一定的规则才行,否则会有提示!
对于初学者而言,不建议开启,否则写代码会很痛苦的!
? Project name mysite
? Project description A Vue.js project
? Author xiao <[email protected] >
? Vue build standalone
? Install vue -router? Yes
? Use ESLint to lint your code? (Y /n) n
设置单元测试,输入n
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
为了快速开发,直接关闭掉
? Project name mysite
? Project description A Vue.js project
? Author xiao <[email protected] >
? Vue build standalone
? Install vue -router? Yes
? Use ESLint to lint your code? No
? Set up unit tests (Y /n) n
是否使用Nightwatch设置e2e测试,输入n
Nightwatch.js是一个测试web app和web 站点的自动化测试框架, 使用Node.js编写, 基于Selenium WebDriver API.
它是一个完整的浏览器端真实用户场景测试解决方案, 致力于简化继续集成和编写自动化测试。
小白表示一脸懵逼,关闭掉!
? Project name mysite
? Project description A Vue.js project
? Author xiao <[email protected] >
? Vue build standalone
? Install vue -router? Yes
? Use ESLint to lint your code? No
? Set up unit tests No
? Setup e2e tests with Nightwatch? (Y /n) n
最后提示,使用npm安装组件
直接回车即可
上面的选项,是一条最简单的路。初学时,使用最简单的即可!
下面就表示开始安装了,耐心等待几分钟!
出现finished,表示安装成功
根据提示,执行2个命令,启动项目
它会开启本机的8080端口,通过即可
提示运行的应用在 http://localhost:8080
访问url,效果如下:
项目结构
.
├── build / # webpack 配置文件
│ └── ...
├── config /
│ ├── index.js # 主项目配置
│ └── ...
├── src /
│ ├── main.js # app 入口文件
│ ├── App.vue # 主应用程序组件
│ ├── components/ # ui组件
│ │ └── ...
│ └── assets / # 模块资产(由webpack处理)
│ └── ...
├── static / # 纯静态资产(直接复制)
├── test/
│ └── unit / # 单元测试
│ │ ├── specs/ # 测试规范文件
│ │ ├── eslintrc # eslint的配置文件,仅用于单元测试的额外设置
│ │ ├── index.js # 测试构建入口文件
│ │ ├── jest.conf.js # 使用Jest进行单元测试时的配置文件
│ │ └── karma.conf.js # 使用Karma进行单元测试时测试运行器配置文件
│ │ ├── setup.js # 在Jest运行单元测试之前运行的文件
│ └── e2e/ # e2e测试
│ │ ├── specs/ # 测试规范文件
│ │ ├── custom-assertions/ # e2e测试的自定义断言
│ │ ├── runner.js # 测试运行脚本
│ │ └── nightwatch.conf.js # 测试运行器配置文件
├── .babelrc # babel 配置
├── .editorconfig # 缩进,空格/制表符和编辑器的类似设置
├── .eslintrc.js # eslint 配置
├── .eslintignore # eslint 忽略规则
├── .gitignore # 默认的忽略设置
├── .postcssrc.js # postcss 配置
├── index.html # index.html 模板
├── package.json # 构建脚本和依赖项
└── README.md # 默认 README 文件
View Code
主要几个文件说明:
build/
此目录包含开发服务器和生产webpack构建的实际配置。 通常,您不需要触摸这些文件,除非您想要自定义Webpack加载器,在这种情况下您应该查看 build/webpack.base.conf.js
。
config/index.js
这是主要配置文件,它公开了构建设置的一些最常见的配置选项。 有关 详细信息, 请参阅 开发期间的API代理和 与后端框架集成。
src/
这是您的大多数应用程序代码所在的位置。如何构建此目录中的所有内容在很大程度上取决于您; 如果您使用的是Vuex,则可以参考 Vuex应用程序的 建议 。
static/
此目录是您不希望使用Webpack处理的静态资产的转义窗口。 它们将直接复制到生成webpack构建资产的同一目录中。
有关 详细信息, 请参阅 处理静态资产。
test/unit
包含单元测试相关文件。 有关 详细信息, 请参阅 单元测试
test/e2e
包含e2e测试相关文件。 有关 更多详细信息, 请参阅 端到端测试。
index.html
这是 我们单页面应用程序 的 模板 index.html
。 在开发和构建期间,Webpack将生成资产,这些生成的资产的URL将自动注入此模板以呈现最终的HTML。
package.json
包含所有构建依赖项和 构建命令的NPM包元文件 。
构建命令
所有构建命令都通过 NPM脚本执行 。
npm run dev
启动Node.js本地开发服务器。 有关 详细信息, 请参阅 开发期间的API代理。
Webpack + vue-loader
用于单个文件Vue组件。
状态保持热重载
状态保留编译错误覆盖
使用ESLint进行Lint-on-save
来源地图
npm run build
为生产建立资产。 有关 更多详细信息, 请参阅 与后端框架集成。
使用 UglifyJS v3缩小JavaScript 。
用 html-minifier缩小 HTML 。
将所有组件中的CSS提取到单个文件中并使用 cssnano缩小 。
所有静态资产都使用版本哈希编译,以实现高效的长期缓存,并 index.html
使用适当的URL自动生成 生产 ,以生成这些生成的资产。
npm run unit
使用 Jest在JSDOM中运行单元测试 。 有关 详细信息, 请参阅 单元测试
npm run e2e
使用 Nightwatch运行端到端测试 。 有关 更多详细信息, 请参阅 端到端测试。
在多个浏览器中并行运行测试。
使用一个开箱即用的命令:
自动处理Selenium和chromedriver依赖项。
自动生成Selenium服务器。
npm run lint
运行eslint并报告代码中的任何linting错误。 请参阅 Linter配置
修改默认的页面
先停止vue项目
安装bootstrap,执行版本为3.3.7。-D表示当前项目安装
E:\python_script\Vue\vue-cli_demo\mysite>npm install [email protected] -D
再开启vue项目
E:\python_script\Vue\vue-cli_demo\mysite>npm run dev
查看package.json,搜索bootstrap
它会自动增加一行
进入node_modules目录,里面有一个bootstrap文件夹
进入mysite\src,这里面才是我们需要编辑的文件
文件说明:
main.js # app 入口文件
App.vue # 主应用程序组件
components/ # ui组件
assets/ # 模块资产(由webpack处理)
查看App.vue文件内容,它由3部分组成
修改App.vue,导入bootstrap的css文件
"
app " >
class=" navbar navbar-default " >
class=
" container-fluid " >
class=
" navbar-header " >
"button " class =" navbar-toggle collapsed " data-toggle=" collapse "
data -target=" #bs-example-navbar-collapse-1 " aria-expanded=" false " >
class =" sr-only " >Toggle navigation
class =" icon-bar " >
class =" icon-bar " >
class =" icon-bar " >
class=" navbar-brand " href=" # " >Brand
class=
" collapse navbar-collapse " id=
" bs-example-navbar-collapse-1 " >
class=" nav navbar-nav navbar-right " >
"# " >登录
class=" dropdown " >
"# " >注册
"
./assets/logo.png " >
View Code
查看网页,效果如下:
注意:修改代码时,网页会自动加载,不需要刷新页面!
作业:
使用vue-cli,实现下面的效果:
修改App.vue,代码如下:
"
app " >
class=" navbar navbar-default " >
class=
" container-fluid " >
class=
" navbar-header " >
"button " class =" navbar-toggle collapsed " data-toggle=" collapse "
data -target=" #bs-example-navbar-collapse-1 " aria-expanded=" false " >
class =" sr-only " >Toggle navigation
class =" icon-bar " >
class =" icon-bar " >
class =" icon-bar " >
class=" navbar-brand " href=" # " >Brand
class=
" collapse navbar-collapse " id=
" bs-example-navbar-collapse-1 " >
class=" nav navbar-nav navbar-right " >
"# " >登录
class=" dropdown " >
"# " >注册
class=
" container-fluid text-left " >
class=
" row clearfix " >
class=
" col-md-12 column " >
class=
" row clearfix " >
class=
" panel panel-info " >
class=" panel-heading " >
class=" panel-title " >
我的笔记
class=
" panel-body " >
class=
" col-md-2 column " >
class=" list-group " >
class=" list-group-item " >
我的笔记1
class =" glyphicon glyphicon-trash pull-right " >
class =" glyphicon glyphicon-pencil pull-right " style=" margin-right: 15px " >
class=" list-group-item " >
我的笔记2
class =" glyphicon glyphicon-trash pull-right " >
class =" glyphicon glyphicon-pencil pull-right " style=" margin-right: 15px " >
class=" list-group-item " >
测试测试1
class =" glyphicon glyphicon-trash pull-right " >
class =" glyphicon glyphicon-pencil pull-right " style=" margin-right: 15px " >
class=" list-group-item " >
测试测试2
class =" glyphicon glyphicon-trash pull-right " >
class =" glyphicon glyphicon-pencil pull-right " style=" margin-right: 15px " >
class=
" col-md-5 column " >
"button " class =" btn btn-default btn-success " >添加
"height: 20px " >
"border: #C1C1C1 solid 1px;height: 600px " >
View Code
访问网页,效果如下:
posted @
2018-07-26 16:19 肖祥 阅读(
... ) 评论(
) 编辑 收藏
你可能感兴趣的:(python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...)
跟我一起学Python数据处理(七十五):网页抓取之网页分析技巧
lilye66
python 开发语言 pandas matplotlib
跟我一起学Python数据处理(七十五):网页抓取之网页分析技巧大家好呀!在Python数据处理的学习道路上,我深知独自摸索可能会遇到不少困难,所以希望通过这些博客,能和大家一起学习、共同进步,让我们都能更熟练地掌握这门技术。今天,咱们接着深入探讨网页抓取中的关键环节——分析网页。一、网页抓取与网页分析的关联网页抓取是获取网络数据的重要手段,在数据处理流程里占据着关键位置。而网页分析则是网页抓取的
怎么下载网页的视频
666z
音视频
内容来自b站痕继痕迹博主,本人只是部分总结(),有些未整,因为感觉不好用1.用网站-Parsevideo网址:https://pv.vlogdownloader.com/在不登录的情况下可以解析5条网站,登录了是10条-硕鼠网址:http://www.flvcd.com/-视频鱼网址:http://shipinyu.com/可以完全免费使用如果有很想下载却下载不了的视频,可以人工付费下载-一个国外
内网下,Ubuntu (24.10) 离线安装docker以及离线安装docker compose最新教程
AIOTASUD
python 人工智能 Ubuntu Python 人工智能 Ubuntu docker 离线安装docker
一般在数据比较敏感的情况下,是无法使用网络的,而对于Ubuntu系统来说,怎么离线安装docker和离线安装dockercompose呢?下面我给大家来讲一下:离线安装docker采用二进制安装:1.下载docker离线包官网下载:Indexoflinux/static/stable/x86_64/https://download.docker.com/linux/static/stable/x8
【MyBatis】处理数据库字段名和Java实体类的属性名不一致的5种方法
卡文迪许的引力常量
MyBatis mybatis 数据库 java
在MyBatis中,数据库表中的字段名和实体类的属性名可能不一致,下面是常见的几种方法来处理这种不一致的命名规则。方法1:SQL别名AS在SELECT语句中设置列别名(这是一个基本的SQL特性)可以强行使之匹配。selectuser_idas"id",user_nameas"userName",hashed_passwordas"hashedPassword"fromsome_tablewhere
串联型晶体管稳压电源的设计实验 《模拟电子技术仿真实验》实验任务及报告书
CHG727
模电实验 单片机
1.实验要求:(1)根据实验题目,进行系统分析,达到系统综合技能训练;(2)研究单相桥式整流、电容滤波电路的特性;(3)学习串联型晶体管稳压电源的设计方法以及主要技术指标的测试方法;2.实验仪器与元器件:(1)实验室仪器:MULTISIM软件、数字示波器、信号发生器、直流稳压电源、万用表、频谱仪等;(2)实验元器件:三极管三个、DIP--16插座一片、电阻若干个、电容若干个,导线若干、面包板(万能
曲率的计算
c栈算法小辰哥
微积分 微积分
1.弧段弯曲程度越大曲率越大,转角相同弧段越短弯曲程度越大,弧段相同转角越大弯曲程度越大2.直线的曲率处处为0,圆的曲率为半径分之一3.曲率公式:二阶导的绝对值除1+一阶导的平方的和的二分之三次方,而参数方程下,为x的一阶导乘y的二阶导-y的一阶导乘x的二阶导的差除以x的一阶导的平方+y的一阶导的平方和的二分之三次方4.曲率圆的半径为曲率的倒数
大学实验课设无忧 ------ 基于FPGA动态数码管数字时钟
FPGA猫
大学实验课设无忧 fpga开发
一、前言动态数码管显示是FPGA开发中常见的应用场景之一,尤其在数字时钟、计数器等设计中广泛应用。本文将介绍如何使用FPGA实现一个基于动态数码管的数字时钟,能够显示时、分、秒。该设计基于XilinxFPGA开发板,使用VerilogHDL编写代码,适合初学者学习和参考。二、设计思路本设计分为以下主要模块:时钟分频模块:将系统时钟分频为1Hz信号,用于计时或符合设计需求的频率。动态扫描模块:控制数
SpringAI集成DeepSeek实战
小马不敲代码
实战 DeepSeek
SpringAI集成DeepSeek实战教程引言SpringAI作为Spring生态系统中的新成员,为开发者提供了便捷的AI集成方案。本文将详细介绍如何在Spring项目中集成DeepSeek模型,实现智能对话等功能。环境准备在开始之前,请确保您的开发环境满足以下要求:JDK17或更高版本SpringBoot3.xMaven或Gradle构建工具DeepSeekAPI密钥项目配置首先,在pom.x
DeepSeek智能测试助手:分类+推理+导出一站式工具
Python测试之道
测试提效 python python 人工智能 DeepSeek 测试用例
前言测试开发工程师在日常工作中需要处理大量测试文档,并且这些文档需要被高效分类、清洗和管理,同时结合强大的AI推理能力(如DeepSeek模型)进行智能化处理和分析。为此,我们开发了一款基于PyQt5的GUI工具,集文件分类、内容清洗、内容展示、DeepSeek推理和结果导出于一体。本文将详细介绍这款工具的功能实现,并提供完整的源码,让测试工程师轻松实现测试文档的智能化管理与分析。功能特点智能文档
Nginx 的 stream 模块,配置转发redis和mysql
危险、
nginx redis mysql
Nginx的stream模块确实可以配置多个upstream块,用于定义多个后端服务器组。然而,需要注意的是,每个upstream块通常用于一种特定类型的服务,例如定义一组TCP服务器,可以是Redis服务器、MySQL服务器或其他任何TCP服务。如果你想要通过Nginx的stream模块转发Redis和MySQL,你可以分别为Redis和MySQL定义不同的upstream块,并在不同的端口上监
课外补充InnoDB知识:InnoDB表的优势
1.01^1000
# 关系型数据库 mysql
MySQL优化学习大纲1.InnoDB存储引擎在实际应用中拥有诸多优势,比如操作便利、提高了数据库的性能、维护成本低等。如果由于硬件或软件的原因导致服务器崩溃,那么在重启服务器之后不需要进行额外的操作。InnoDB崩溃恢复功能自动将之前提交的内容定型,然后撤销没有提交的进程,重启之后继续从崩溃点开始执行。2.InnoDB存储引擎在主内存中维护缓冲池,高频率使用的数据将在内存中直接被处理。这种缓存方
网络安全 | 入门:理解基本概念和术语
xcLeigh
网络安全知识 web安全 php 安全
网络安全|入门:理解基本概念和术语前言一、什么是网络安全?1.1网络安全的重要性1.2网络安全的三大核心目标(CIA三原则)二、网络安全常见术语2.1防火墙(Firewall)2.2入侵检测系统(IDS)与入侵防御系统(IPS)2.3零信任架构(ZeroTrustArchitecture)2.4漏洞(Vulnerability)2.5漏洞扫描(VulnerabilityScanning)2.6社会
后台管理系统的通用权限解决方案(四)SpringBoot整合Dozer实现对象属性复制
维先生d
后台管理系统的通用权限解决方案 spring boot 数据库 后端 Dozer beanutils 对象属性复制
1dozer介绍dozer是JavaBean到JavaBean映射器,它以递归方式将数据从一个对象复制到另一个对象。dozer是用来对两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的调用set和get方法了。dozer其实是对我们熟知的beanutils的封装。2dozer案例1)创建maven工程dozer-demo,并配置其pom.
Starlink卫星动力学系统仿真建模番外篇8-磁强计
瓦力的狗腿子
数学建模 算法 simulink
磁强计工作原理、相关算法、使用策略及注意事项1.工作原理磁强计用于测量磁场强度和方向,常见类型包括:霍尔效应磁强计:基于霍尔效应,当电流通过导体并置于磁场中时,会在垂直于电流和磁场的方向上产生电压,通过测量该电压可确定磁场强度。磁阻效应磁强计:利用某些材料的电阻随磁场变化的特性,通过测量电阻变化来推算磁场强度。磁通门磁强计:通过铁芯线圈在交变磁场中的饱和效应,测量外部磁场。SQUID磁强计:利用超
Starlink卫星动力学系统仿真建模第六讲-导航制导与控制系统概述
瓦力的狗腿子
simulink 数学建模
本文介绍现代典型卫星姿轨控系统的操作模式。每个模式以功能需求、功能框图和实现途径等形式给出,控制模式的动态效果以各种仿真的形式进行描述和验证。姿轨控系统主要负责卫星在轨期间的任务调度(姿轨控相关)、轨道、姿态确定与控制,具体功能与要求包括:a)任务调度:根据星上姿轨控设备反馈的卫星轨道和姿态信息情况确定姿轨控应采取的姿态指向模式以及控制算法等;b)轨道确定:通过卫星导航接收机完成自主轨道测量与确定
Java 毕业设计辅导:毕业答辩不再是噩梦,轻松顺利毕业
Hello毕设之家(专业接毕设)
java 课程设计 开发语言
毕业答辩是你人生的一个小考验,但也不必太紧张!想要把毕业设计做得既高效又不掉链子?我会带你从设计到实现,再到答辩环节,让你顺利毕业,轻松走向职场!让我们一起把这个“最后一关”变成你职业生涯的第一步!你需要我帮忙的地方:毕业设计的最后冲刺:项目实现后,我们一起整理、优化,让你的毕业设计在答辩时给导师留下深刻印象!不仅系统要好,文档、报告也要完美!答辩辅导:答辩怕什么?我会帮你准备答辩时最常见的问题,
Oracle和MySQL的分页查询语句
命中的缘分
oracle mysql 数据库
在数据库系统中,特别是在Oracle和MySQL中,分页查询是一种常见需求,用于处理大量数据时只展示部分结果。下面分别介绍在Oracle和MySQL中实现分页查询的语句。Oracle中的分页在Oracle中,你可以使用ROWNUM或者FETCHFIRST和OFFSET子句来实现分页。使用ROWNUMSELECT*FROM(SELECTyour_columns,ROWNUMrnumFROMyour_
【大数据分析】Spark SQL查询:使用SQL命令
sword_csdn
Spark spark 数据分析 sql
对于使用关系型数据库或分布式数据库的用户可能更容易和更自然地使用SQL,比如Hive。在SparkSQL编写SQL命令时,它们将被转换为DataFrame上的操作。通过连接到Spark的Thrift服务器,它们可以通过标准的JDBC或ODBC协议从应用服务器连接到Spark。Spark支持两种SQL方言:SQL和HQL。Spark社区推荐的是HQL,因为HQL具有更丰富的功能。要使用HQL,需要使
人工智能专业毕业设计题目精选:推荐合集
HaiLang_IT
毕业设计选题 计算机视觉 人工智能 目标检测
目录前言毕设选题开题指导建议更多精选选题选题帮助最后前言大家好,这里是海浪学长毕设专题!大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理了计算机专业最新精选选题,如遇选题困难或选题有任何疑问,都可以问学长哦(见文末)!对毕设有任何疑问都可以问学长哦!更多选题指导:最新最全计算机专业毕设选题精选推荐汇总
LVS-DR集群搭建
afei00123
Linux
目录1.LVS-DR实验拓扑2.实验环境3.配置LVS3.1IP配置3.2生成ens37:1配置文件3.3配置LVS-DR规则4.配置RealServer4.1配置IP,生成lo:1文件4.2安装httpd服务,编写测试页面4.3关闭ARP转发5.测试6.LVS的多种调度模式1.LVS-DR实验拓扑afeiLVS-DR的特点:(1)NAT模式效率太低;(2)LVS-DR基于2层的数据报文的转发,要
跨语言语义理解与生成:多语言预训练方法及一致性优化策略
网罗开发
AI 大模型 人工智能 深度学习 负载均衡
网罗开发(小红书、快手、视频号同名) 大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:CO
【虚拟机网络】虚拟机的网络配置教程,亲测有效!
2022lcl
网络
一、环境准备虚拟机软件:VMwareWorkstation17操作系统:CentOS7/Ubuntu22.04网络模式:NAT模式(VMnet8)二、配置虚拟网络编辑器1.启用VMnet8打开VMware,进入编辑>虚拟网络编辑器。选择VMnet8,勾选NAT模式,点击确定保存。2.设置默认网关和静态ip池点击更改设置获取管理员权限。进入NAT设置,填写默认网关(例如192.168.177.2)。
使用SingleStoreDB构建高效的AI检索器
qahaj
人工智能 python
在构建现代AI应用时,高效存储和检索向量数据是不可或缺的一环。SingleStoreDB是一款高性能的分布式SQL数据库,不仅支持云端和本地部署,还具备向量存储能力及相关函数(如dot_product和euclidean_distance),能够很好地支持基于向量的应用场景,如文本相似度匹配。本文将以SingleStoreDB为核心,结合LangChain生态系统,展示如何实现一个简单但功能强大的
C++虚函数:解锁多态的“动态密码
福鸦
c++ c++ 开发语言
C++虚函数:解锁多态的“动态密码”开篇小故事:遥控器的“智能按钮”假设你有一个万能遥控器,上面只有一个“开关”按钮:按下时,电视会开机,空调会制冷,电灯会亮起。同一个按钮,却能根据设备类型触发不同行为。C++中的虚函数(VirtualFunction)就像这个“智能按钮”,允许基类指针在运行时动态调用子类的具体实现。今天,我们就来揭开虚函数的神秘面纱!一、虚函数是什么?虚函数是C++实现运行时多
C语言pta程序设计---实验八(指针)
.又是新的一天.
大学课程汇总专栏 算法 数据结构 c++
6-1sdut-C语言实验-n个数的排序Qiao当上了体育委员,现在老师让他去给班级里的人排队,Qiao刚学了排序,所以他想以这种方式给班级里的人排队(从矮到高),他想知道排序完成后的结果。函数接口定义:voidsort(int*p,intn);其中p和n都是用户传入的参数。p的值为传递过来的地址;n的为正整数(1voidsort(int*p,intn);intmain(){inta[100];i
C语言pta程序设计---实验四(1、循环结构之for语句)
.又是新的一天.
大学课程汇总专栏 c语言
7-1sdut-C语言实验-A+BforInput-OutputPractice(Ⅳ)YourtaskistoCalculatea+b.输入格式:YourtaskistoCalculatea+b.输出格式:Foreachpairofinputintegersaandbyoushouldoutputthesumofaandbinoneline,andwithonelineofoutputforeac
SeaTunnel社区「Demo方舟计划」首期活动上线—— MySQL CDC实时同步至PostgreSQL实战
数据库
引言凌晨2点,某电商公司的数据工程师小李正对着屏幕抓狂——业务部门临时要求将MySQL的订单表实时同步到PostgreSQL进行分析,众所周知,在数据驱动的业务场景中,异构数据源同步是高频刚需。以MySQL到PostgreSQL的CDC同步为例,开发者常面临以下问题::配置复杂:CDC组件参数众多(如server-id分配、binlog解析模式)。调优缺失:社区示例多为基础配置,缺乏高并发、容错、
XSS 与 CSRF 攻击你了解多少呢
javascript前端安全
网络安全至关重要,它保护着我们的个人信息和网站的正常运行。XSS和CSRF是两种常见且危险的网络威胁,它常常困扰着我们,而你又了解多少呢?一、XSS攻击深度剖析(一)概念溯源与攻击本质XSS,即跨站脚本攻击,其核心在于攻击者利用网站对用户输入数据处理的漏洞,将恶意脚本注入网页。当其他用户访问该网页时,浏览器会误将这些恶意脚本当作正常网页内容执行,从而沦为攻击者的“傀儡”,实现用户敏感信息窃取、会话
Docker部署Kibana8
GitIDEA
docker 容器 运维
安装Kibana安装Kibana前置创建并配置kibana.yml启动Kibana检查是否启动成功通过页面访问Docker安装Kibana:GitIDEA安装Kibana前置Kibana是一款适用于Elasticsearch的源可用数据可视化仪表板软件。使用docker下载kibanadockerpullkibana:8.13.0查看es的ipdockerinspect809c99acde7f|g
基于Rust开发git-cryptx与Obsidian实现加密多机同步的写作方案
「知识管理的尽头,是安全与效率的平衡」——你的每一份笔记都值得被加密保护痛点直击:为什么需要加密同步?Obsidian的好用程度不必多说(个人心目中最佳),然而官方同步服务年费高达48~96美元,且对隐私敏感用户而言,将笔记明文存储在第三方平台存在风险。使用ObsidianGit插件同步方案虽然免费,但安全性存在两大硬伤:隐私泄露:配置文件、日记、账号密码等敏感内容以明文形式存储Github、Gi
knob UI插件使用
换个号韩国红果果
JavaScript jsonp knob
图形是用canvas绘制的
js代码
var paras = {
max:800,
min:100,
skin:'tron',//button type
thickness:.3,//button width
width:'200',//define canvas width.,canvas height
displayInput:'tr
Android+Jquery Mobile学习系列(5)-SQLite数据库
白糖_
JQuery Mobile
目录导航
SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。
因为Android已经集成了SQLite,所以开发人员无需引入任何JAR包,而且Android也针对SQLite封装了专属的API,调用起来非常快捷方便。
我也是第一次接触S
impala-2.1.2-CDH5.3.2
dayutianfei
impala
最近在整理impala编译的东西,简单记录几个要点:
根据官网的信息(https://github.com/cloudera/Impala/wiki/How-to-build-Impala):
1. 首次编译impala,推荐使用命令:
${IMPALA_HOME}/buildall.sh -skiptests -build_shared_libs -format
2.仅编译BE
${I
求二进制数中1的个数
周凡杨
java 算法 二进制
解法一:
对于一个正整数如果是偶数,该数的二进制数的最后一位是 0 ,反之若是奇数,则该数的二进制数的最后一位是 1 。因此,可以考虑利用位移、判断奇偶来实现。
public int bitCount(int x){
int count = 0;
while(x!=0){
if(x%2!=0){ /
spring中hibernate及事务配置
g21121
Hibernate
hibernate的sessionFactory配置:
<!-- hibernate sessionFactory配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<
log4j.properties 使用
510888780
log4j
log4j.properties 使用
一.参数意义说明
输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
配置日志信息输出目的地
log4j.appender.appenderName = fully.qua
Spring mvc-jfreeChart柱图(2)
布衣凌宇
jfreechart
上一篇中生成的图是静态的,这篇将按条件进行搜索,并统计成图表,左面为统计图,右面显示搜索出的结果。
第一步:导包
第二步;配置web.xml(上一篇有代码)
建BarRenderer类用于柱子颜色
import java.awt.Color;
import java.awt.Paint;
import org.jfree.chart.renderer.category.BarR
我的spring学习笔记14-容器扩展点之PropertyPlaceholderConfigurer
aijuans
Spring3
PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。
PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java
maven 之 cobertura 简单使用
antlove
maven test unit cobertura report
1. 创建一个maven项目
2. 创建com.CoberturaStart.java
package com;
public class CoberturaStart {
public void helloEveryone(){
System.out.println("=================================================
程序的执行顺序
百合不是茶
JAVA执行顺序
刚在看java核心技术时发现对java的执行顺序不是很明白了,百度一下也没有找到适合自己的资料,所以就简单的回顾一下吧
代码如下;
经典的程序执行面试题
//关于程序执行的顺序
//例如:
//定义一个基类
public class A(){
public A(
设置session失效的几种方法
bijian1013
web.xml session失效 监听器
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。具体设置很简单,方法有三种:(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所
java jvm常用命令工具
bijian1013
java jvm
一.概述
程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:
&nbs
【Spring框架一】Spring常用注解之Autowired和Resource注解
bit1129
Spring常用注解
Spring自从2.0引入注解的方式取代XML配置的方式来做IOC之后,对Spring一些常用注解的含义行为一直处于比较模糊的状态,写几篇总结下Spring常用的注解。本篇包含的注解有如下几个:
Autowired
Resource
Component
Service
Controller
Transactional
根据它们的功能、目的,可以分为三组,Autow
mysql 操作遇到safe update mode问题
bitray
update
我并不知道出现这个问题的实际原理,只是通过其他朋友的博客,文章得知的一个解决方案,目前先记录一个解决方法,未来要是真了解以后,还会继续补全.
在mysql5中有一个safe update mode,这个模式让sql操作更加安全,据说要求有where条件,防止全表更新操作.如果必须要进行全表操作,我们可以执行
SET
nginx_perl试用
ronin47
nginx_perl试用
因为空闲时间比较多,所以在CPAN上乱翻,看到了nginx_perl这个项目(原名Nginx::Engine),现在托管在github.com上。地址见:https://github.com/zzzcpan/nginx-perl
这个模块的目的,是在nginx内置官方perl模块的基础上,实现一系列异步非阻塞的api。用connector/writer/reader完成类似proxy的功能(这里
java-63-在字符串中删除特定的字符
bylijinnan
java
public class DeleteSpecificChars {
/**
* Q 63 在字符串中删除特定的字符
* 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
* 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
*/
public static voi
EffectiveJava--创建和销毁对象
ccii
创建和销毁对象
本章内容:
1. 考虑用静态工厂方法代替构造器
2. 遇到多个构造器参数时要考虑用构建器(Builder模式)
3. 用私有构造器或者枚举类型强化Singleton属性
4. 通过私有构造器强化不可实例化的能力
5. 避免创建不必要的对象
6. 消除过期的对象引用
7. 避免使用终结方法
1. 考虑用静态工厂方法代替构造器
类可以通过
[宇宙时代]四边形理论与光速飞行
comsci
从四边形理论来推论 为什么光子飞船必须获得星光信号才能够进行光速飞行?
一组星体组成星座 向空间辐射一组由复杂星光信号组成的辐射频带,按照四边形-频率假说 一组频率就代表一个时空的入口
那么这种由星光信号组成的辐射频带就代表由这些星体所控制的时空通道,该时空通道在三维空间的投影是一
ubuntu server下python脚本迁移数据
cywhoyi
python Kettle pymysql cx_Oracle ubuntu server
因为是在Ubuntu下,所以安装python、pip、pymysql等都极其方便,sudo apt-get install pymysql,
但是在安装cx_Oracle(连接oracle的模块)出现许多问题,查阅相关资料,发现这边文章能够帮我解决,希望大家少走点弯路。http://www.tbdazhe.com/archives/602
1.安装python
2.安装pip、pymysql
Ajax正确但是请求不到值解决方案
dashuaifu
Ajax async
Ajax正确但是请求不到值解决方案
解决方案:1 . async: false , 2. 设置延时执行js里的ajax或者延时后台java方法!!!!!!!
例如:
$.ajax({ &
windows安装配置php+memcached
dcj3sjt126com
PHP Install memcache
Windows下Memcached的安装配置方法
1、将第一个包解压放某个盘下面,比如在c:\memcached。
2、在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装。
3、再输入: 'c:\memcached\memcached.exe -d start' 启动。(需要注意的: 以后memcached将作为windo
iOS开发学习路径的一些建议
dcj3sjt126com
ios
iOS论坛里有朋友要求回答帖子,帖子的标题是: 想学IOS开发高阶一点的东西,从何开始,然后我吧啦吧啦回答写了很多。既然敲了那么多字,我就把我写的回复也贴到博客里来分享,希望能对大家有帮助。欢迎大家也到帖子里讨论和分享,地址:http://bbs.csdn.net/topics/390920759
下面是我回复的内容:
结合自己情况聊下iOS学习建议,
Javascript闭包概念
fanfanlovey
JavaScript 闭包
1.参考资料
http://www.jb51.net/article/24101.htm
http://blog.csdn.net/yn49782026/article/details/8549462
2.内容概述
要理解闭包,首先需要理解变量作用域问题
内部函数可以饮用外面全局变量
var n=999;
functio
yum安装mysql5.6
haisheng
mysql
1、安装http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
2、yum install mysql
3、yum install mysql-server
4、vi /etc/my.cnf 添加character_set_server=utf8
po/bo/vo/dao/pojo的详介
IT_zhlp80
java BO VO DAO POJO po
JAVA几种对象的解释
PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作.
VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可
java设计模式
kerryg
java 设计模式
设计模式的分类:
一、 设计模式总体分为三大类:
1、创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
2、结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
3、行为型模式(11种):策略模式,模版方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者
[1]CXF3.1整合Spring开发webservice——helloworld篇
木头.java
spring webservice CXF
Spring 版本3.2.10
CXF 版本3.1.1
项目采用MAVEN组织依赖jar
我这里是有parent的pom,为了简洁明了,我直接把所有的依赖都列一起了,所以都没version,反正上面已经写了版本
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht
Google 工程师亲授:菜鸟开发者一定要投资的十大目标
qindongliang1922
工作 感悟 人生
身为软件开发者,有什么是一定得投资的? Google 软件工程师 Emanuel Saringan 整理了十项他认为必要的投资,第一项就是身体健康,英文与数学也都是必备能力吗?来看看他怎么说。(以下文字以作者第一人称撰写)) 你的健康 无疑地,软件开发者是世界上最久坐不动的职业之一。 每天连坐八到十六小时,休息时间只有一点点,绝对会让你的鲔鱼肚肆无忌惮的生长。肥胖容易扩大罹患其他疾病的风险,
linux打开最大文件数量1,048,576
tianzhihehe
c linux
File descriptors are represented by the C int type. Not using a special type is often considered odd, but is, historically, the Unix way. Each Linux process has a maximum number of files th
java语言中PO、VO、DAO、BO、POJO几种对象的解释
衞酆夼
java VO BO POJO po
PO:persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
BO:business object业务对象
封装业务逻辑的java对象