首页
在线工具
搜索
1
如何将Virtualbox和VMware虚拟机相互转换
2
使用Metrics指标度量工具监控Java应用程序性能(Gauges, Counters, Histograms, Meters和 Timers实例)
3
Markdown正确使用姿势
4
Typora+Picgo图床使用
5
Jumpserver的MFA配置
杂谈与随笔
工具与效率
源码阅读
技术管理
运维
数据库
前端开发
后端开发
AI人工智能
Search
标签搜索
Angular
Docker
Phabricator
SpringBoot
Java
Chrome
SpringSecurity
SpringCloud
DDD
Git
Mac
K8S
Kubernetes
ESLint
SSH
高并发
Eclipse
Javascript
Vim
Centos
Jonathan
累计撰写
88
篇文章
累计收到
0
条评论
首页
栏目
杂谈与随笔
工具与效率
源码阅读
技术管理
运维
数据库
前端开发
后端开发
AI人工智能
页面
搜索到
88
篇与
的结果
2016-07-28
项目中js文件修改后浏览器不能及时更新的解决办法
项目中js文件修改后浏览器不能及时更新的解决办法 现在就分别把IE,firefox,chrome中解决办法贴出来供大家参考: 1.firefox(火狐浏览器)解决问题 第一步,在浏览器中敲入:about:config ,然后回车 第二步,在显示出的内容中找到下面的列表内容,双击下面图中圈出的内容 在出现的对话框中将3改为1 然后关闭这个页面,你就可以让你的项目在更新时浏览器及时地更新你项目中的js文件。 2.IE 打开IE浏览器,同时按住ALT+X,在出现的页面上点击Internet选项,进入Internet选项配置界面中,点击在下面的图中圈出的按钮 进入设置界面,然后选中下面图中圈出的选项 然后依次点击确定,然后,IE浏览器就可以及时更新项目中更改的js文件。 3.chrome(谷歌浏览器) 此方法是根据下方评论整理,个人未验证。 只要F12打开开发者工具,点击右下角的齿轮“设置”按钮进入下一界面,选中General选项卡中的Disable cache (while DevTools is open) 就行了。下次只要你是在开发者工具打开的情况下,均会不保存缓存,因此会加载最新版本的js。 4.刚刚想起来的一个办法 这个办法也没有根本的解决为什么修改的js文件不能在浏览器中及时更新,但是使用本方法可以实现更新,这个方法就是手动删除部署的文件,然后从新部署项目。下面是分别针对myeclipse和eclipse找到部署的项目的位置。 4.1针对eclipse使用者: 使用eclipse的朋友们注意,由于eclipse默认的在tomcat中部署项目的位置并不在tomcat中的webapp目录下,而是在eclipse安装路径下,例如我使用的是eclipse luna ,我在tomcat中部署的项目的默认的位置为: .metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps ,你如果想找这个路径,那么,你就需要去你的workspace下去找.metadata文件夹,然后再按照上面的路径查找到你的部署的项目,手动删除后,在eclipse中从新部署项目,就可以消除浏览器不能更新的问题。 4.1针对Myeclipse使用者: myeclipse中部署的项目的路径就在tomcat的安装路径中webapp文件夹下,在这个webapp文件夹中查找到你的项目,手动删除,然后在myeclipse中重新部署项目即可。 5.其他方法 根据评论本文章的朋友们的建议,我也亲自尝试了一下他们的方法,觉得这个方法还是蛮不错的,比我的上面的方法要好的多,只需要在引用的js中加入下面的一句话即可 <script src="1.js?ver=1"></script> 一开始我还以为后面的ver=1需要经常修改值才不会造成仍旧读不出来,现在发现及时修改的js文件,也不需要修改这个数字就可以更新。 以上全部内容以markdown格式输出,不能漏掉一个字
2016年07月28日
2016-07-19
Eclipse中JSP、JS文件编辑时卡死现象解决汇总
Eclipse中JSP、JS文件编辑时,卡死现象解决汇总 使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下: 1、取消验证 路径:windows–>perferences–>validation 操作:把除了manual下面的全部点掉,build下只留classpath dependency Validator。 2、关闭拼写检查 路径:windows–>perferences–>general–> editors->Text Editors->spelling 操作:关闭拼写检查功能。 3、对于MyEclipse来讲,修改JSP页面时的编辑工具 路径:Window > perferences > General > Editors > File Associations > 在File types 中选择 *.jsp > 在Associated editors 中将"MyEclipse JSP Editor"设置为默认。 4、杜绝jar包访问网络 当用eclipse或myeclipse编辑JSP时,使用智能提示将可能导致ide卡死。这是因为eclipse提示时会根据JAR包指定的javadoc location访问网络。 解决方法:window-->preferences-->java-->installed JREs,编辑使用的jre,把rt.jar和charsets.jar的javadoc location设置为空(none)即可。当然也可以去下载javadoc到本机,进行相关设置也可以解决。另外:把自己项目中所有用到的jar包,都作同样处理。 5、修改打开链接的快捷键 最近在MyEclipse中编辑代码时,使用快捷键进行复制粘贴,经常会导致编辑器短暂的停顿,光标不跟随,居然反应不过来,几近假死。想来想去应该是编辑上的什么配置或者是IDE的什么功能导致,于是进入Preferences查找edit功能,进行一个个的测试,最后发现原来是代码的超链功能导致。 进入方法:Window -> Preferences -> General -> Editors -> Text Editors -> Hyperlinking 把超链的快捷键改为其他键比如Alt(不能改为shift)。说明:在Eclipse中,经常可以使用Ctrl+鼠标单击,可以直接将编辑界面引导到相关的方法,属性,或者类。这个功能确实非常好用,但是由于复制粘贴的功能快捷键也是Ctrl,以致我在快速进行操作的时候,Eclipse反应不过来,无法分析我的操作,现在只需要改变一个其他的快捷。 6、修改项目的.project文件 eclipse中默认js编辑器非常慢,尤其在拷贝粘贴代码时的解决方法。使用的是官网标准版的eclipse3.9 for javaEE未装任何插件,写JS时卡的简直无法忍受,尝试去掉所有的validate,包括菜单和项目属性中的都无作用,后来在项目根目录..project中发现以下红色行居然Validator都还在,把红色对应的配置段全部删去后,问题解决,编辑JS再也不似蜗牛了。 <buildSpec> <buildCommand> <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name> <triggers>full,incremental,</triggers> <arguments> <dictionary> <key>LaunchConfigHandle</key> <value><project>/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch</value> </dictionary> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.wst.common.project.facet.core.builder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name> <triggers>full,incremental,</triggers> <arguments> <dictionary> <key>LaunchConfigHandle</key> <value><project>/.externalToolBuilders/org.eclipse.wst.validation.validationbuilder.launch</value> </dictionary> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.wst.jsdt.core.jsNature</nature> </natures> 7、调整Eclipse运行内存。 在eclipse的安装目录下用EditPlus编辑eclipse.ini文件,将其中的参数改成 -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms512m -Xmx512m -XX:PermSize=256M -XX:MaxPermSize=256M -XX:-UseGCOverheadLimit
2016年07月19日
2016-07-05
AngularJS 中的 $apply 和 $digest
AngularJS 中的 $apply 和 $digest 避免在控制器中使用 $watch 永远不要在控制器中使用 $watch,因为它会使控制器难以测试。Angular 提供了 $watchCollection 方法来对对象属性或数组元素设置浅监控,只要属性发生变化就会触发监听器回调。 $watchCollection 示例 $watchCollection() 函数也返回一个注销函数。调用这个注销函数时,也会取消集合上的监听。 手动调用 $apply() 如果你使用了 JavaScript 中的 setTimeout() 来更新一个 scope model,那么 AngularJS 就没有办法知道你更改了什么。这种情况下,调用 $apply() 是你的责任,通过调用它来触发一轮 $digest 循环。 示例代码 HTML <body ng-app="myApp"> <div ng-controller="MessageController"> Delayed Message: {{message}} </div> </body> JavaScript (不使用 $apply()) angular.module('myApp', []).controller('MessageController', function($scope) { $scope.getMessage = function() { setTimeout(function() { $scope.message = 'Fetched after 3 seconds'; console.log('message:' + $scope.message); }, 2000); } $scope.getMessage(); }); 这段代码会在控制台显示更新后的 model,但视图不会更新。 使用 $apply() 修改后的代码 angular.module('myApp', []).controller('MessageController', function($scope) { $scope.getMessage = function() { setTimeout(function() { $scope.$apply(function() { // wrapped this within $apply $scope.message = 'Fetched after 3 seconds'; console.log('message:' + $scope.message); }); }, 2000); } $scope.getMessage(); }); 现在视图会在两秒钟后更新。 注意: 应该使用 $timeout service 而不是 setTimeout(),因为前者会自动调用 $apply()。 $digest 循环 当 $digest 循环运行时,watchers 会被执行来检查 scope 中的 models 是否发生了变化。如果发生了变化,相应的 listener 函数就会被执行。为了处理 listener 函数可能修改 scope model 的情况,AngularJS 实现了脏检查机制(Dirty Checking)。这意味着 $digest 循环会持续运行直到 models 不再发生变化,或者循环次数达到10次。 结语 总是将要执行的代码和函数传递给 $apply 去执行。 使用 $apply 时,应该像下面这样: $scope.$apply(function() { $scope.variable1 = 'some value'; executeSomeAction(); }); 而不是这样: $scope.variable1 = 'some value'; executeSomeAction(); $scope.$apply(); 这两种方式虽然都能工作,但是第一个方法更安全,因为它能确保异常被正确捕获并处理。
2016年07月05日
2016-06-21
Angular-UI-Router 学习笔记
Angular-UI-Router 学习笔记 路由 (Route) 为什么用 Route AJAX 请求不会留下 History 记录 用户无法直接通过 URL 进入应用中的指定页面(无法保存书签、链接分享给朋友) AJAX 对 SEO 是个灾难 AngularJS 路由配置示例 var bookStoreApp = angular.module('bookStoreApp', [ 'ngRoute', 'ngAnimate', 'bookStoreCtrls', 'bookStoreFilters', 'bookStoreServices', 'bookStoreDirectives' ]); bookStoreApp.config( function($routeProvider) { $routeProvider .when('/hello', { templateUrl: 'tpls/hello.html', controller: 'HelloCtrl' }) .when('/list/:bookId', { templateUrl: 'tpls/bookList.html', controller: 'BookListCtrl' }) .otherwise({ redirectTo: '/hello' }); } ); 嵌套 View (Nested Routing for AngularJS) AngularUI-Router (AngularUI) <div ui-view></div> 前端路由的基本原理 哈希 (#) HTML5 中新的 history API 路由的核心 是给应用定义 "状态" 使用路由机制会影响应用的整体编码方式 (需预先定义好状态) 考虑兼容性问题与 "优雅降级" Angular-UI-Router ui-sref 指令 <a ui-sref="home">Home</a> <a ui-sref="about">About</a> <a ui-sref="contacts.list">Contacts</a> $state.includes 返回 true / false <li ng-class="{active: $state.includes('contacts')}"> <a ui-serif="contacts.list">Contacts</a> </li> ui-sref-active <li ui-sref-active="active"> <a ui-sref="about">About</a> </li> 包含模块 angular.module('uiRouter', ['ui.router']); 方便获得当前状态的方法 (绑到根作用域) app.run(['$rootScope', '$state', '$stateParams', function($rootScope, $state, $stateParams) { $rootScope.$state = $state; $rootScope.$stateParams = $stateParams; } ]); 路由重定向 ($urlRouterProvider) app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { $urlRouterProvider .when('/c?id', '/contacts/:id') .when('/user/:id', '/contacts/:id') .otherwise('/'); } ]); 状态配置 $stateProvider. state('about', { url: '/about', template: '<h1>Welcome to UI-Router Demo</h1>', // 使用 templateProvider 处理异步加载 templateProvider: ['$timeout', function($timeout) { return $timeout(function() { return '<p class="lead">UI-Router Resource</p>' + '<p>The second line</p>'; }, 100); } ], templateUrl: 'about.html', controller: 'UIRouterCtrl', controller: ['$scope', '$state', 'contacts', 'utils', function ($scope, $state, contacts, utils) { $scope.contacts = contacts; $scope.goToRandom = function () { var randId = utils.newRandomKey($scope.contacts, 'id', $state.params.contactId); $state.go('contacts.details', { contactId: randId }); } } ] }); 嵌套路由 (Nested Router) 父级路由 (Parent Router) $stateProvider. state('contacts', { abstract: true, url: '/contacts', templateUrl: 'contacts.html', // 处理异步数据调用 resolve: { contacts: ['contacts', function(contacts) { return contacts.all(); } ] }, controller: ['$scope', '$state', 'contacts', 'utils', function ($scope, $state, contacts, utils) { $scope.contacts = contacts; $scope.goToRandom = function () { var randId = utils.newRandomKey($scope.contacts, 'id', $state.params.contactId); $state.go('contacts.details', { contactId: randId }); } } ] }); 子级路由 (Children Router) $stateProvider .state('contacts.list', { url: '', templateUrl: 'contacts.list.html' }) .state('contacts.detail', { url: '/{contactId:[0-9]{1,4}}', views: { // 默认 view '': { templateUrl: 'contacts.detail.html', controller: ['$scope', '$stateParams', 'utils', function ($scope, $stateParams, utils) { $scope.contact = utils.findById($scope.contacts, $stateParams.contactId); } ] }, // 其他 view 'hint@': { template: 'This is contacts.detail populating the "hint" ui-view' }, 'menuTip': { templateProvider: ['$stateParams', function($stateParams) { return '<hr><small class="muted">Contact ID: ' + $stateParams.contactId + '</small>'; } ] } } }); HTML 代码 <h2>All Contacts</h2> <ul> <li ng-repeat="contact in contacts"> <a ui-sref="contacts.detail({contactId:contact.id})">{{contact.name}}</a> </li> </ul>
2016年06月21日
2016-06-15
Windows下Phabricator Arcanist的安装与使用
Windows下Phabricator Arcanist的安装与使用 Arcanist是Phabricator提交代码评审的客户端工具,虽然可以直接在Differential界面手动创建Diff和Revision,但使用Arcanist会更加方便,特别是对于习惯命令行操作的开发者。 注意事项 如果遇到错误 ERR-CONDUIT-CORE: Invalid parameter information was passed to method 'differential.creatediff',请确保所有文件名均为英文。 安装步骤 1. 安装PHP 需要安装PHP 5.2或以上版本,推荐下载PHP 5.4 VC9 x86 Non Thread Safe版。具体步骤如下: 解压到指定目录:例如解压到 C:\PHP。 加入环境变量:将PHP安装目录(如 C:\PHP)添加到系统的 PATH 环境变量中。 配置php.ini: 复制 php.ini-development 文件为 php.ini。 在 php.ini 中取消以下几行的注释: extension_dir = "ext" extension=php_curl.dll extension=php_mbstring.dll 注册PHP文件类型(可选): 将 .php 扩展名添加到 PATHEXT 环境变量中。 关联 .php 文件类型: assoc .php=phpfile ftype phpfile="C:\PHP\php.exe" -f "%1" -- %~2 需要以管理员权限运行上述命令。 2. 安装SVN客户端 需要安装支持命令行的SVN客户端(不是TortoiseSVN)。可以从Subversion官方网站选择合适的版本,推荐安装CollabNet的Subversion 1.8.0,下载地址(需要注册):CollabNet Subversion。 测试安装是否成功 打开命令提示符并输入以下命令进行测试: C:> svn Type 'svn help' for usage.
2016年06月15日
1
...
16
17
18