首页 文章 精选 留言 我的

精选列表

搜索[懒加载],共10000篇文章
优秀的个人博客,低调大师

在线图源或者离线资源的国家队-天地图简介及Qgis加载相关资源实战

相信作为地理信息方面的从业者,大家一定在平时的工作或者学习过程中或多或少的需要使用到在线图源,比如在WebGIS方面的地图应用,需要访问到在线的底图、地名标记图层等。于此同时,如果需要进行空间分析,我们通常需要将矢量文件和栅格数据进行空间分析。这里用的物理文件就是离线的物理文件,比如Shp和GDB等矢量文件。在互联网上有很多公开的矢量数据或者在线的图源,但是由于某些原因(具体的原因暂且不表),它的空间位置和空间范围或者标志信息是不对的,不符合现状的。

优秀的个人博客,低调大师

springboot页面加载时找不到静态资源下的文件,js与css以及图片,拦截器

最近在使用springboot时,前几天正常访问的页面,突然间访问不到js、css、图片等静态资源。经过排查发现是由于我发现程序中提示webmvcconfigureradapter已过期,所以改成了WebMvcConfigurationSupport 而WebMvcConfigurationSupport在 springboot的web自动配置类WebMvcAutoConfiguration 上有条件注解,这个注解的意思是在项目类路径中缺少WebMvcConfigurationSupport类型的bean时改自动配置类才会生效 @ConditionalOnMissingBean(WebMvcConfigurationSupport.class) 所以当我们使用拦截器并继承WebMvcConfigurationSupport这个类的时候需要重写addInterceptors这个方法 所以拦截器的配置应该如下 代码1: package com.example.syscloud.Interceptor; import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; @Configurationpublic class WebSecurityConfig extends WebMvcConfigurationSupport { @Bean public SessionInterceptor getSessionInterceptor() { return new SessionInterceptor(); } @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); super.addResourceHandlers(registry); } @Override public void addInterceptors(InterceptorRegistry registry) { /*调用我们创建的SessionInterceptor。 * addPathPatterns("/**)的意思是这个链接下的都要进入到SessionInterceptor里面去执行 * excludePathPatterns("/login")的意思是login的url可以不用进入到SessionInterceptor中,直接 * 放过执行。 * 注意:如果像注释那样写是不可以的。这样等于是创建了多个Interceptor。而不是只有一个Interceptor * * */ SessionInterceptor sessionInterceptor=new SessionInterceptor(); registry.addInterceptor(sessionInterceptor).addPathPatterns("/**") .excludePathPatterns("/user/login","/userAPI/login","/user/defaultKaptcha","/publicPage/login","/css/**","/js/**","/img/**","/static/**","/mapper/**"); super.addInterceptors(registry); } }代码2: package com.example.syscloud.Interceptor; import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.example.syscloud.bean.templeBean.UserTokenBean;import com.example.syscloud.token.TokenUse;import com.example.syscloud.unit.ReturnCode;import com.example.syscloud.unit.ReturnData;import com.example.syscloud.unit.UserTokenMap;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.util.HashMap;import java.util.Map; public class SessionInterceptor implements HandlerInterceptor { /*在执行Controller的任务之前判断是否有Session信息 如果有Session信息就往下执行,去调用Controller。 如果没有Session就跳转到登录页面 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setCharacterEncoding("utf-8"); String token=request.getHeader("token"); String android=request.getHeader("android"); if (token!=null){ boolean bo= TokenUse.tokenVerify(token); int userid=TokenUse.getUserID(token); UserTokenBean userTokenBean =UserTokenMap.getMap(userid); if (userTokenBean!=null) { if (userTokenBean.getToken().equals(token) && bo) { Map<Integer,UserTokenBean> map=new HashMap<>(); map=UserTokenMap.getMap(); map.put(userid,userTokenBean); UserTokenMap.setMap(map); return true; } } } HttpSession session=request.getSession(); if(session.getAttribute("LoginName")!=null){ return true; } if(android!=null){ ReturnData returnData=new ReturnData(); returnData.setCode(ReturnCode.Timeout.value()); returnData.setMessage(ReturnCode.Timeout.getDesc()); String str=JSON.toJSONString(returnData); JSONObject jsonObject=JSON.parseObject(str); response.getWriter().print(jsonObject); }else { //拦截后返回的页面 String url = "/publicPage/login"; // response.sendRedirect(url); response.getWriter().print("<script> top.window.location.href = '"+url+"?r='+Math.random() ;</script>"); } return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }第二段代码是通过验证session与token实现拦截与放行功能,我写一起了,可根据需要删除部分内容

优秀的个人博客,低调大师

安卓开发, 遇到WebView不能加载静态网页, WebView显示 "net::ERR_PROXY_CONNECTON_FAILED" h...

http://blog.csdn.net/zhouchangshi/article/details/44454695 Android开发中遇到网络连接问题, 要找WebView中显示一个静态的网页, 结果 ---- > logcat输出: "[INFO:CONSOLE(12)] "Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (12)"; webview中显示"net::ERR_PROXY_CONNECTION_FAILED"字样, 这是什么问题? 折腾一番后.........原来是手机网络设置了代理, 只要把代理去掉就ok了 !! 分类: android solve 本文转自wanqi博客园博客,原文链接:http://www.cnblogs.com/wanqieddy/p/4915442.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:后台加载数据之使用CursorLoader进行查询

原文地址:http://android.xsoftlab.net/training/load-data-background/index.html 引言 在ContentProvider中查询数据是需要花点时间的。如果你直接在Activity进行查询,那么这可能会导致UI线程阻塞,并会引起”Application Not Responding”异常。就算不会发生这些事情,那么用户也能感觉到卡顿,这会非常恼人的。为了避免这样的问题,应该将查询的工作放在单独的线程中执行,然后等待它执行完毕后将结果显示出来。 你可以使用一个异步查询对象在后台查询,然后等查询结束之后再与Activity建立连接。这个对象就是我们要说的CursorLoader。CursorLoader除了可以进行基本查询之外,还可以在数据发生变化后自动的重新进行查询。 这节课主要会学习如何使用CursorLoader在后台进行查询。 使用CursorLoader进行查询 CursorLoader对象在后台运行着一个异步查询,当查询结束之后会将结果返回到Activity或FragmentActivity。这使得查询在进行的过程中Activity或FragmentActivity还可以继续与用户交互。 定义使用CursorLoader的Activity 如果要在Activity中使用CursorLoader,需要用到LoaderCallbacks接口。CursorLoader会调用该接口中的方法,从而使得与Activity产生交互。这节课与下节课都会详细描述该接口中的回调。 举个例子,下面的代码演示了如何定义一个使用了CursorLoader的FragmentActivity。通过继承FragmentActivity,你可以获得CursorLoader对Fragment的支持: public class PhotoThumbnailFragment extends FragmentActivity implements LoaderManager.LoaderCallbacks<Cursor> { ... } 初始化查询 使用LoaderManager.initLoader()可以初始化查询。它其实初始化了后台查询框架。可以将初始化这部分工作放在用户输入了需要查询的数据之后,或者如果不需要用户输入数据,那么也可以将这部分工作放在onCreate()或onCreateView()中执行: // Identifies a particular Loader being used in this component private static final int URL_LOADER = 0; ... /* When the system is ready for the Fragment to appear, this displays * the Fragment's View */ public View onCreateView( LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) { ... /* * Initializes the CursorLoader. The URL_LOADER value is eventually passed * to onCreateLoader(). */ getLoaderManager().initLoader(URL_LOADER, null, this); ... } Note: getLoaderManager()方法只对Fragment类可用。如果需要在FragmentActivity中获得LoaderManager,调用getSupportLoaderManager()方法即可。 开始查询 后台查询框架的初始化一旦完成,紧接着你所实现的onCreateLoader()就会被调用。如果要启动查询,需要在该方法内返回一个CursorLoader对象。你可以实例化一个空的CursorLoader,然后再使用它的方法定义查询,或者你也可以在实例化CursorLoader的时候定义查询。 /* * Callback that's invoked when the system has initialized the Loader and * is ready to start the query. This usually happens when initLoader() is * called. The loaderID argument contains the ID value passed to the * initLoader() call. */ @Override public Loader<Cursor> onCreateLoader(int loaderID, Bundle bundle) { /* * Takes action based on the ID of the Loader that's being created */ switch (loaderID) { case URL_LOADER: // Returns a new CursorLoader return new CursorLoader( getActivity(), // Parent activity context mDataUrl, // Table to query mProjection, // Projection to return null, // No selection clause null, // No selection arguments null // Default sort order ); default: // An invalid id was passed in return null; } } 一旦后台查询框架获得了该对象,那么它会马上在后台开始查询。当查询结果完成,后台查询框架会调用onLoadFinished(),该方法的具体内容会在下节课说明。

优秀的个人博客,低调大师

HVCI 与 Secure Boot 双重拦截下,为什么你的内核驱动必须通过 WHQL 认证才能正常加载?

前阵子帮一个做安全软件的团队排查问题。他们的过滤驱动在自家测试机上一切正常,发给客户后设备管理器直接黄叹号,事件查看器 System 日志刷出 Event ID 219,应用层拿到的错误是 0xC0000428(STATUS_INVALID_IMAGE_HASH)。客户那台机器开着 Secure Boot,组策略又把 VBS / HVCI 打开了。团队负责人第一句话是"可我都用 EV 代码签名证书签过了啊"。问题就在这儿:在 64 位 Windows 上,内核驱动真不是你签了名就能跑,得微软签过、还得 HVCI 认,缺一样都白搭。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册