首页 文章 精选 留言 我的

精选列表

搜索[mvc框架],共10000篇文章
优秀的个人博客,低调大师

volley框架使用小Demo

MainActivity public class MainActivity extends AppCompatActivity { private static final String URL = "https://www.baidu.com/"; private RequestQueue mQueue; // volley的请求队列 @BindView(R.id.volley_get) Button btn; TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mQueue = Volley.newRequestQueue(getApplicationContext()); ButterKnife.bind(this); } @OnClick({R.id.volley_get}) public void onClick(View v) { get(); } /** * 创建一个请求,这里我们做一个最简单的通过GET方式请求网页源码的操作。请求成功后打印结果。 */ private void get() { StringRequest request = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() { @Override public void onResponse(String arg0) { //Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_LONG).show(); textView = (TextView) findViewById(R.id.text); textView.setText(arg0.toString()); //Log.d("onResponse", arg0); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { //Toast.makeText(getApplicationContext(), arg0.toString(), Toast.LENGTH_LONG).show(); textView = (TextView) findViewById(R.id.text); textView.setText(arg0.toString()); } }); mQueue.add(request); } } activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.an.volleytest.MainActivity"> <Button android:id="@+id/volley_get" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="get请求" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/text" android:layout_marginTop="25dp" android:layout_below="@+id/volley_get" android:layout_centerHorizontal="true" /> </RelativeLayout> 捕获.PNG 点击按钮 hello world 替换为请求网址的html文件

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

区块链开发知识框架

区块链学习更多的是去理解这种去中心化的思想和去中心化的价值所在,语言倒是其次的东西。 不过由于以太坊和Hyperledger Fabric 对go语言支持最好,所以go语言肯定是要学习的。 下面把我另外一个问题的答案copy过来,希望对你有所帮助。 背景介绍:本人从2015年开始研究区块链技术,也算是对区块链有一定的了解吧。 申明:预估看到本问题的知乎er应该都是想要入门区块链,那么本回答也主要是进行一个入门级别的介绍。只是入门级别介绍,不适合区块链从业人员提升学习。 ----------------------------------- 回答的目录如下: 一、区块链是什么? 二、从业务角度学习区块链技术? 三、从技术角度学习区块链技术? 四、学习资料推荐与共享? ------------------------------------- 一、区块链是什

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

Android Router路由框架使用

Router项目地址 1. 添加依赖 android { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = ["moduleName": project.name] } } } } dependencies { implementation 'com.chenenyu.router:router:1.4.0-beta1' annotationProcessor 'com.chenenyu.router:compiler:1.4.0-beta1' } 2. Application中注册 public class App extends Application{ @Override public void onCreate() { super.onCreate(); Router.initialize(new Configuration.Builder() // 调试模式,开启后会打印log .setDebuggable(BuildConfig.DEBUG) // 注册模块名,每个Router使用的Module都要在这里注册 .registerModules("module1", "module2", "app") .build()); } } 3. 跳转URI /** * uri 可填写网页链接 * 1. http://www.baidu.com/ * 2. 动态添加路由中map集合中的键 */ Router.build(uri).callback(new RouteCallback() { @Override public void callback(RouteResult state, Uri uri, String message) { if (state == RouteResult.SUCCEED) { Toast.makeText(MainActivity.this, "succeed: " + uri.toString(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "error: " + uri + ", " + message, Toast.LENGTH_SHORT).show(); } } }).go(this); 4. 动态添加路由 // 添加动态路由 Router.handleRouteTable(new RouteTable() { @Override public void handle(Map<String, Class<?>> map) { map.put("dynamic", DynamicActivity.class); } }); 5. 表过滤器与目标过滤器 Router.handleInterceptorTable(new InterceptorTable() { @Override public void handle(Map<String, Class<? extends RouteInterceptor>> map) { Log.e(TAG, "handle: " + map.toString()); } }); Router.handleTargetInterceptors(new TargetInterceptors() { @Override public void handle(Map<Class<?>, String[]> map) { Log.e(TAG, "handle: " + map.toString()); } }); 6. 跳转路由 Router.build("dynamic").go(this); 7. 注解注册 // 注解注册 @Route("result") public class ForResultActivity extends AppCompatActivity {} // 使用Bundle传递数据 Router.build("result").requestCode(0).with("extra", "Bundle From Module1Activity").go(this); 8. 自定义过滤器 // 1. 自定义过滤器 @Interceptor("SampleInterceptor") public class SampleInterceptor implements RouteInterceptor { @Override public boolean intercept(Context context, RouteRequest routeRequest) { Toast.makeText(context, String.format("Intercepted: {uri: %s, interceptor: %s}", routeRequest.getUri().toString(), SampleInterceptor.class.getName()), Toast.LENGTH_SHORT).show(); return true; } } // 2. 使用 @Route(value = "intercepted", interceptors = "SampleInterceptor") public class InterceptedActivity extends AppCompatActivity {} // 3. 添加过滤器 Router.build("test").addInterceptors("SampleInterceptor").go(this); // 4. 跳过过滤器Router.build("intercepted").skipInterceptors("SampleInterceptor").go(this); 9. 协议过滤 // 1. AndroidManifest.xml文件配置 <activity android:name=".SchemeFilterActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="filter" android:scheme="router" /> </intent-filter> </activity> // 2. 协议过滤 public class SchemeFilterActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scheme_filter); Uri uri = getIntent().getData(); if (null != uri) { Toast.makeText(this, "uri: " + uri.toString(), Toast.LENGTH_SHORT).show(); if (!uri.toString().startsWith("router://filter")) { Router.build(uri).go(this); } finish(); } } } // 3. 使用 Router.build("router://filter").go(this);

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

java安全框架shiro(一)

第一个简单的案例 ,通过读取.ini文件的方式模拟登陆, 1.通过Factory工厂的getInstance()方法来获取SecurityManager的实例,实例化Factory需要一个ini文件的路径作为参数; 2.将上面获取的实例set到 SecurityUtils这个类里,SecurityUtils类有一个get方法来获取Subject类 3.Subject这个类就是用来登陆和退出的,但是需要一个AuthenticationToken实例作为参数 上面是步骤,下面就来一步一步的介绍,最后会在最下面给出代码 第二步我就不说了,方法是静态的,直接类名调用就好了; 现在来到第三步,现在应该是得到subjiect的实例了,需要登录,但是需要一个token实例 现在token也有了,然后我们进行登录; 这里给出一个.ini文件的基本示例,把这个文件所在的路径填入第一步实例化工厂时的参数里即可 最后给出简单案例的代码 package com; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; /** * 测试shiro第一个案例 * */ public class App { public static void main( String[] args ) { { /*实例化工厂*/ Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); /*获取实例*/ SecurityManager instance = factory.getInstance(); /*设置参数*/ SecurityUtils.setSecurityManager(instance); /*获取登录实例*/ Subject subject = SecurityUtils.getSubject(); /*实例化token,传入登录的用户和密码*/ AuthenticationToken token = new UsernamePasswordToken("admin1", "admin"); try { /*进行登录*/ subject.login(token); /*退出登录*/ subject.logout(); }catch (Exception e){ System.out.println("登录错误!!"); } } } } maven中添加的依赖 <dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-aspectj</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> </dependencies>

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

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

用户登录
用户注册