小程序怎么跳转到手机APP下载页面? 5C

在小程序里跳转到手机app,如果这个APP不存在,则可以跳转到手机APP下载页面??

2个回答

可以采用Universal Links(通用链接)的方式来做

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android程序里面 用intent直接跳转到该APP的权限设置页面
如题。 android程序里面 用intent直接跳转到该APP的权限设置页面
如何实现1点击进入App后进入欢迎页面,几秒钟后自动跳转到程序主页面
刚开始学 希望 能得到相关方面的知识点。。求个大神告诉我。我自己去找学习。度娘上也没找到
小程序使用navigator组件跳转报错
**在wxml中使用navigator传参跳转,代码如下,** **已经在app.json中祖册了post-detail页面,可居然报错页面没找到???** **问题出在哪儿呢?小白求大佬指点指点** ``` <navigator url="/pages/post-detail/post-detail?title={{item.title}}"open-type="navigate"> ``` ``` navigateTo:fail page "pages/post-detail/post-detail?title=%E6%AC%A2%E8%BF%8E%E5%8A%A0%E5%85%A5%E5%BF%83%E7%90%86%E5%8D%8F%E4%BC%9A" is not found ```
Android页面跳转出现卡顿或者ANR,可以从哪些方面进行优化?
情景如下:在A页面执行完拍照上传或者选择本地图片上传后,跳转到B页面,程序卡住,无法操作,但是如果不传照片德华程序跳转压根就不会卡住。在开发过程中,每当发生页面跳转时均会调用this.finish()刚发对当前页面进行销毁,尽管如此,跳转发生时APP卡顿依旧存在,且频频发生,请问各位前辈可有好的解决办法,求传授,小生将对此不胜感激!
求教,微信小程序怎么保存多用户数据?
## 现在有两个页面A和B,关系为:A跳转到B。 ## ## A页面可以分享到群里供用户操作,A的js中有一个数组array,用户在A页面的操作记录会被保存到这个数组array中。 ## ## 现在的问题是,当用户退出小程序时怎么把记录他操作数据的array保存下来,使得后来打开A页面的用户可以获取到? ## ## 我尝试过把array放在app.js的globalData中,但每当用户打开A页面时,看到的array一直是globalData中的初始状态,并没有别人的操作记录。 ## ## 求大神告知该怎么做?谢谢!!
微信小程序扫一扫成功以后为什么没有跳转到另一个页面,而是直接在当前页面?
![图片说明](https://img-ask.csdn.net/upload/201812/11/1544491226_937328.png) // pages/home/home.js var app = getApp(); Page({ data: { show: "", }, onLoad: function () { console.log('onLoad') }, click: function () { var that = this; var show; wx.scanCode({ success: (res) => { this.show = "--result:" + res.result + "--scanType:" + res.scanType + "--charSet:" + res.charSet + "--path:" + res.path; this.show = res.result; that.setData({ show: this.show }) wx.navigateTo({ url: '../artcle1/artcle1' }) }, fail: (res) => { wx.showToast({ title: '失败', icon: 'success', duration: 2000 }) }, complete: (res) => { }, }, ) },
安卓入门,一个有关页面跳转的程序闪退
做了两个页面,通过按钮跳转。跳转时闪退。个人感觉时第二个页面的声明出了问题,但是找不出解决办法,求大神帮看看,感谢 debug 线程 [main](已暂挂(异常 ActivityNotFoundException)) Instrumentation.checkStartActivityResult(int, Object) 行: 1879 Instrumentation.execStartActivity(Context, IBinder, IBinder, Activity, Intent, int, Bundle) 行: 1546 Activity1(Activity).startActivityForResult(Intent, int, Bundle) 行: 4284 Activity1(Activity).startActivityForResult(Intent, int) 行: 4231 Activity1(Activity).startActivity(Intent, Bundle) 行: 4568 Activity1(Activity).startActivity(Intent) 行: 4536 Activity1$1.onClick(View) 行: 28 Button(View).performClick() 行: 5698 Button(TextView).performClick() 行: 10896 View$PerformClick.run() 行: 22565 Handler.handleCallback(Message) 行: 739 ViewRootImpl$ViewRootHandler(Handler).dispatchMessage(Message) 行: 95 Looper.loop() 行: 148 ActivityThread.main(String[]) 行: 7224 Method.invoke(Object, Object...) 行: 不可用 [本机方法] ZygoteInit$MethodAndArgsCaller.run() 行: 1230 ZygoteInit.main(String[]) 行: 1120 报错 04-08 08:51:19.992: E/AndroidRuntime(24556): FATAL EXCEPTION: main 04-08 08:51:19.992: E/AndroidRuntime(24556): Process: com.example.secondact, PID: 24556 04-08 08:51:19.992: E/AndroidRuntime(24556): android.content.ActivityNotFoundException: No Activity found to handle Intent { } 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1879) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1546) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.Activity.startActivityForResult(Activity.java:4284) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.Activity.startActivityForResult(Activity.java:4231) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.Activity.startActivity(Activity.java:4568) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.Activity.startActivity(Activity.java:4536) 04-08 08:51:19.992: E/AndroidRuntime(24556): at com.example.secondact.Activity1$1.onClick(Activity1.java:28) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.view.View.performClick(View.java:5698) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.widget.TextView.performClick(TextView.java:10896) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.view.View$PerformClick.run(View.java:22565) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.os.Handler.handleCallback(Handler.java:739) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.os.Handler.dispatchMessage(Handler.java:95) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.os.Looper.loop(Looper.java:148) 04-08 08:51:19.992: E/AndroidRuntime(24556): at android.app.ActivityThread.main(ActivityThread.java:7224) 04-08 08:51:19.992: E/AndroidRuntime(24556): at java.lang.reflect.Method.invoke(Native Method) 04-08 08:51:19.992: E/AndroidRuntime(24556): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 04-08 08:51:19.992: E/AndroidRuntime(24556): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Manifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.secondact" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".Activity1" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:name=".Activity2"></activity> </application> </manifest> 第一页面代码 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Activity1 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 设置显示main.xml布局*/ setContentView(R.layout.main); /* findViewById(R.id.button1)取得布局main.xml中的button1 */ Button button = (Button) findViewById(R.id.button1); /* 监听button的事件信息*/ button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /* 新建一个Intent对象*/ Intent intent = new Intent(); /* 指定intent要启动的类*/ startActivity(intent); /* 关闭当前的Activity */ intent.setClass(Activity1.this, Activity02.class); /* 启动一个新的Activity */ Activity1.this.finish(); } }); } } 第二页面代码 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Activity02 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 设置显示main2布局*/ setContentView(R.layout.main2); /* findViewById(R.id.button2)取得布局main.xml中的button2 */ Button button = (Button) findViewById(R.id.button2); /* 监听button的事件信息*/ button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /* 新建一个Intent对象*/ Intent intent = new Intent(); /* 指定intent要启动的类*/ intent.setClass(Activity02.this, Activity1.class); /* 启动一个新的Activity */ /* startActivity(intent); /* 关闭当前的Activity */ Activity02.this.finish(); } }); } }
需要微信自动添加手机号
代码需实现的功能: 1.扫描文本或点击按钮或超链接实现跳转到打开微信APP的添加好友(或直接添加某用户)页面 2.在微信页面可以直接粘贴账户进行添加好友。
mfc 单文档应用问题!
我现在要做一个程序,根据账号登录后,通过不同账号权限加载不同的页面。登录教授页 面后可以在此页面上点击“显示波形”按钮,出现一个新的界面显示波形。 我现在的思路是:在SDI程序中,app::initinstance中加载登录和其他页面,用view做 波形显示页面。可是现在我不知道怎么跳转到波形界面,关键是关闭波形洁面后还能跳 转到当前页面! 求解答!!
SSM框架中,怎么通过controller实现页面的跳转?
今天接触SSM框架的第四天,后台Mybatis生成dao、entity和mapper后,测试成功,能够正常读写数据库了,但是,在加入页面之后,通过controller不能实现页面的跳转,特求助~~ 访问情况: ![图片说明](https://img-ask.csdn.net/upload/201811/27/1543304296_872148.png) 点击跳转后, ![图片说明](https://img-ask.csdn.net/upload/201811/27/1543304328_484707.png) 出现404的错误,个人认为,可能是没有找到controller 代码: messageController.java ``` @Controller public class messageController { @RequestMapping("/message/go") public String gotest(){ return "second"; } } ``` index.jsp ``` <%@page contentType="text/html; charset=UTF-8" language="java" %> <html> <head> <title>首页</title> </head> <body> <h2>Hello World!</h2> <a href="/message/go">点击跳转</a> <p id="test">Hello World!</p> <button type="button" onclick="selectUser()">onclick test</button> </body> </html> ``` reach.jsp ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>跳到这里了</title> </head> <body> 跳转成功!!! </body> </html> ``` 文件路径: ![图片说明](https://img-ask.csdn.net/upload/201811/27/1543304458_62372.png) SpringMVC的配置 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <!-- ①:top.xiaofeng包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --> <context:component-scan base-package="top.xiaofeng"/> <mvc:annotation-driven/> <!-- 静态资源访问 --> <!--如果webapp下你新建了文件夹,想访问里面的静态资源,那么就要在这配置一下--> <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/js/" mapping="/js/**"/> <!-- ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"/> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <!-- 配置视图解析器,把控制器的逻辑视频映射为真正的视图 --> <!-- /WEB-INF/views/second.jsp --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/views/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 拦截器 --> <mvc:interceptors> <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 --> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/> </mvc:interceptors> <!-- 定义无Controller的path<->view直接映射 --> <!-- <mvc:view-controller path="/" view-name="redirect:/" /> --> </beans> ``` web.xml配置 ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>mydemo</display-name> <!-- 配置编码方式--> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置springmvc的前端控制器 指向spring-mvc.xml 程序在启动的时候就加载springmvc 可以接受所有请求 load-on-startup:表示启动容器时初始化该Servlet; --> <servlet> <servlet-name>springServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 可以自定义servlet.xml配置文件的位置和名称, 默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 将前端URL请求和后台处理方法controller建立对应关系--> <servlet-mapping> <servlet-name>springServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 取消对某一类文件的拦截--> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.md</url-pattern> </servlet-mapping> <!-- Spring配置 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext.xml</param-value> </context-param> <!-- 欢迎页面--> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <!--&lt;!&ndash;404错误展示页面&ndash;&gt;--> <!--<error-page>--> <!--<error-code>404</error-code>--> <!--<location>/404.jsp</location>--> <!--</error-page>--> <!--设置session失效时间为30分钟 --> <session-config> <session-timeout>600</session-timeout> </session-config> </web-app> ```
新手开发安卓app的欢迎界面
程序已经写好了 想加一个图片作为欢迎页面 再点击一下进入主页面 没什么思路 是要在做一个界面然后加个按钮吗? 希望大神解答 为什么这样修改之后做程序会停止运行呢? 这是修改之前 ``` protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SearchView searchview = (SearchView)findViewById(R.id.searchView); searchview.setOnQueryTextListener(this); //初始化载入数据库的数据 list = Utils.getList(); if(list.isEmpty()) loadFromDatabase(list); //先检查缓存,若没有数据再从数据库加载 Utils.MillisToDate(list); listAdapter = new SimpleAdapter(this,list,R.layout.list_item,new String[]{"datetime","content"}, new int[]{R.id.datetime,R.id.content}); setListAdapter(listAdapter); //将备忘录数据显示出来 Button button = (Button)findViewById(R.id.createButton); button.setOnClickListener(new ClickListener()); getListView().setOnItemClickListener(new ListItemClickListener()); getListView().setOnItemLongClickListener( new ItemLongClickListener()); } ``` 这是修改之后 app会停止运行 ``` protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.jump); /* 以findViewById()取得Button对象,并添加onClickListener */ Button b1 = (Button) findViewById(R.id.jumpbutton); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { jumpToLayout2(); } }); } protected void jumpToLayout2() { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SearchView searchview = (SearchView)findViewById(R.id.searchView); searchview.setOnQueryTextListener(this); //初始化载入数据库的数据 list = Utils.getList(); if(list.isEmpty()) loadFromDatabase(list); //先检查缓存,若没有数据再从数据库加载 Utils.MillisToDate(list); listAdapter = new SimpleAdapter(this,list,R.layout.list_item,new String[]{"datetime","content"}, new int[]{R.id.datetime,R.id.content}); setListAdapter(listAdapter); //将备忘录数据显示出来 Button button = (Button)findViewById(R.id.createButton); button.setOnClickListener(new ClickListener()); getListView().setOnItemClickListener(new ListItemClickListener()); getListView().setOnItemLongClickListener( new ItemLongClickListener()); } ``` 明明就是加了一个按钮判断加xml跳转 结果app都打不开 请问为什么会这样呢?
怎么解决微信小程序数据删除后有自动出现问题?
微信小程序 通过删除按钮已经删除了,但是重新进入后删除的又出现了是怎么回事呢? ``` Delete: function (event) {//删除代码 var position = event.currentTarget.id // console.log("delete: " +position) var tempTask = this.data.desArr.splice(position, 1); this.setData({ desArr: this.data.desArr }) var link = "删除成功" wx.setStorageSync("01", this.data.desArr); wx.setClipboardData({ data: link, success: function (res) { wx.showToast({ title: '删除成功', icon: 'success' }) } }) }, ``` 整个js代码块 ``` //index.js //获取应用实例 const app = getApp() Page({ data: { today: '',//当天日期 image: '/images/eaef35dd160a667ff53b1778e8baf4b6.jpg',//背景图片 desArr: []//数据源数组 }, //Zha: 取得时间日期信息 getNowFormatDate() { //获取当天日期 var date = new Date(); var seperator1 = "-"; var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate return currentdate; }, //Zha: 点击进入添加note的详细界面 newButton() { //跳转页面 wx.switchTab({ url: '/pages/ssj/indexssj/indexssj' }) wx.redirectTo({ url: '/pages/ssj/indexssj/indexssj', }) }, onLoad: function (options) { //-监听页面加载 //获取缓存内容 this.setData({ desArr: wx.getStorageSync('oldText') }) if (this.data.desArr == null && this.data.desArr == '') { //如果没有缓存则为空 this.setData({ desArr: [] }) } //获取当天日期 var day = this.getNowFormatDate() this.setData({ today: day }) }, Delete: function (event) { var position = event.currentTarget.id // console.log("delete: " +position) var tempTask = this.data.desArr.splice(position, 1); this.setData({ desArr: this.data.desArr }) var link = "删除成功" wx.setStorageSync("01", this.data.desArr); wx.setClipboardData({ data: link, success: function (res) { wx.showToast({ title: '删除成功', icon: 'success' }) } }) }, onShow: function () { // 生命周期函数--监听页面显示 //获取当前缓存 var arrayA = wx.getStorageSync('oldText'); var isChange = wx.getStorageSync('isChange'); if (arrayA.length != this.data.desArr.length) { //如果数量改变从新赋值 this.setData({ desArr: arrayA }) } else if (isChange == 1) { wx.setStorageSync('isChange', 0); this.setData({ desArr: arrayA }) } }, onShareAppMessage: function () { // 用户点击右上角分享 return { title: '文笔记+', // 分享标题 desc: '我们的功能不仅笔记', // 分享描述 path: 'path' // 分享路径 } }, cancelTap(e) { //删除按钮 console.log(e) } }) ```
Asp.net core identityServer4 回调跳转到signin-oidc得到404 Not Found的问题
我采用IdentityServer4[示例代码(Combined_AspId_and_EFStorage)](https://github.com/IdentityServer/IdentityServer4.Samples/tree/master/Quickstarts/Combined_AspId_and_EFStorage "") ,并参考了晓晨的博客([IdentityServer4(10)- 添加对外部认证的支持之QQ登录)](https://www.cnblogs.com/stulzq/p/7879101.html "")。 在第三方登录时开始都没问题,能够跳转到QQ授权页面并成功返回QQ用户信息,但是在跳转回MvcClient时却得到404空白页面: ## **404 Not Found** identity服务器的startup.cs代码如下: ``` public void ConfigureServices(IServiceCollection services) { Services = services; var connectionString = Configuration.GetConnectionString("qcloud-postgres-applicationdb"); var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name; services.AddDbContext<ApplicationDbContext>(options => options.UseNpgsql(connectionString)); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2); services.Configure<IISOptions>(iis => { iis.AuthenticationDisplayName = "Windows"; iis.AutomaticAuthentication = false; }); var builder = services.AddIdentityServer(options => { options.Events.RaiseErrorEvents = true; options.Events.RaiseInformationEvents = true; options.Events.RaiseFailureEvents = true; options.Events.RaiseSuccessEvents = true; }) // this adds the config data from DB (clients, resources) .AddConfigurationStore(options => { options.ConfigureDbContext = b => b.UseNpgsql(Configuration.GetConnectionString("qcloud-postgres-configurationdb"), sql => sql.MigrationsAssembly(migrationsAssembly)); }) // this adds the operational data from DB (codes, tokens, consents) .AddOperationalStore(options => { options.ConfigureDbContext = b => b.UseNpgsql(Configuration.GetConnectionString("qcloud-postgres-persistedgrantdb"), sql => sql.MigrationsAssembly(migrationsAssembly)); // this enables automatic token cleanup. this is optional. options.EnableTokenCleanup = true; options.TokenCleanupInterval = 60; }) .AddAspNetIdentity<ApplicationUser>(); builder.AddDeveloperSigningCredential(); /* if (Environment.IsDevelopment()) { builder.AddDeveloperSigningCredential(); } else { throw new Exception("need to configure key material"); }*/ services.AddAuthentication( options => { options.DefaultScheme = "QQ"; }) .AddQQ(qqOptions => { qqOptions.AppId = "AppId123456"; // qqOptions.AppKey = "AppKey1234567890"; }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); //app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseIdentityServer(); app.UseMvcWithDefaultRoute(); } ``` MvcClient端的startup.cs代码如下: ``` public void ConfigureServices(IServiceCollection services) { Services = services; Services.AddMvc(); JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); Services.AddAuthentication(options => { options.DefaultScheme = "Cookies"; options.DefaultChallengeScheme = "oidc"; }) .AddCookie("Cookies") .AddOpenIdConnect("oidc", options => { options.SignInScheme = "Cookies"; //options.Authority = "http://localhost:5000"; options.Authority = "https://identity.web123456.cn"; options.RequireHttpsMetadata = false; options.ClientId = "yingyu88"; options.ClientSecret = "secret"; options.ResponseType = "code id_token"; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; options.Scope.Add("yingyu88api"); //options.Scope.Add("offline_access"); //options.ClaimActions.MapJsonKey("website", "website"); }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); //app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseAuthentication(); app.UseStaticFiles(); app.UseMvcWithDefaultRoute(); } ``` 客户端得到的log如下: ``` 2019-03-23 11:36:07.588 +08:00 [INF] User profile not available. Using 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0\AutoGenKeys\S-1-5-82-1592072215-1740167268-757123690-3585059337-856257778\DataProtection' as key repository and Windows DPAPI to encrypt keys at rest. 2019-03-23 11:36:08.070 +08:00 [INF] Request starting HTTP/1.0 GET http://www.yingyu88.cn/Home/Secure 2019-03-23 11:36:08.187 +08:00 [INF] Route matched with {action = "Secure", controller = "Home"}. Executing action MvcClient.Controllers.HomeController.Secure (Yingyu88web) 2019-03-23 11:36:08.197 +08:00 [INF] Authorization failed. 2019-03-23 11:36:08.202 +08:00 [INF] Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'. 2019-03-23 11:36:08.209 +08:00 [INF] Executing ChallengeResult with authentication schemes ([]). 2019-03-23 11:36:08.713 +08:00 [INF] AuthenticationScheme: oidc was challenged. 2019-03-23 11:36:08.722 +08:00 [INF] Executed action MvcClient.Controllers.HomeController.Secure (Yingyu88web) in 531.87060000000008ms 2019-03-23 11:36:08.742 +08:00 [INF] Request finished in 673.8004ms 302 2019-03-23 11:36:15.048 +08:00 [INF] Request starting HTTP/1.0 POST http://www.yingyu88.cn/signin-oidc application/x-www-form-urlencoded 1532 2019-03-23 11:36:15.418 +08:00 [INF] AuthenticationScheme: Cookies signed in. 2019-03-23 11:36:15.419 +08:00 [INF] Request finished in 370.649ms 302 ``` 从以上Log可以看出Signin是成功的,但是callback回到signin-oidc之后请求就结束了,诡异的是应用并没有报错。 如有哪位大神熟悉IdentityServer的请多多赐教! 如果需要我这边更多的代码和log信息可以加QQ:352862120联系我私聊。多谢! 2019-03-29更新: ---- 经过试验发现,IdentityServer4的示例代码在调试状态下没有问题,能够在localhost:5000和localhost:5002之间跳转并传递相应的Cookies。但是部署到服务器后(我用的是windows 2016和iis)就不行了(代码完全一致)。最初直接想到的是跨域问题,但是加上AddCors也并没有解决。 ``` public void ConfigureServices(IServiceCollection services) { //配置跨域处理,允许所有来源: services.AddCors(options => options.AddPolicy("corspolicy", p => p.AllowAnyOrigin()) ); } public void Configure(IApplicationBuilder app) { if (Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseIdentityServer(); ** app.UseCors("corspolicy"); ** app.UseMvcWithDefaultRoute(); } ``` 以上代码加到了IdentityServer和MvcClient,但是并没有效果。 追踪部署环境和调试环境下的log可以发现,公网部署时IdentityServer运行到signin-oidc就停止了,没有任何报错。 这是公网部署时的log: ``` 2019-03-25 13:46:19.030 +08:00 [INF] Request starting HTTP/1.0 GET http://www.yingyu88.cn/Home/Secure 2019-03-25 13:46:19.031 +08:00 [INF] Route matched with {action = "Secure", controller = "Home"}. Executing action MvcClient.Controllers.HomeController.Secure (MvcClient) 2019-03-25 13:46:19.039 +08:00 [INF] Authorization failed. 2019-03-25 13:46:19.041 +08:00 [INF] Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'. 2019-03-25 13:46:19.045 +08:00 [INF] Executing ChallengeResult with authentication schemes ([]). 2019-03-25 13:46:19.403 +08:00 [INF] AuthenticationScheme: oidc was challenged. 2019-03-25 13:46:19.408 +08:00 [INF] Executed action MvcClient.Controllers.HomeController.Secure (MvcClient) in 376.51370000000003ms 2019-03-25 13:46:19.413 +08:00 [INF] Request finished in 382.7936ms 302 2019-03-25 13:46:40.244 +08:00 [INF] Request starting HTTP/1.0 POST http://www.yingyu88.cn/signin-oidc application/x-www-form-urlencoded 1531 2019-03-25 13:46:40.651 +08:00 [INF] AuthenticationScheme: Cookies signed in. 2019-03-25 13:46:40.651 +08:00 [INF] Request finished in 406.993ms 302 ``` 这是调试环境下的log: ``` 2019-03-25 12:32:15.062 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:5002/Home/Secure 2019-03-25 12:32:15.064 +08:00 [INF] Route matched with {action = "Secure", controller = "Home"}. Executing action MvcClient.Controllers.HomeController.Secure (MvcClient) 2019-03-25 12:32:15.070 +08:00 [INF] Authorization failed. 2019-03-25 12:32:15.072 +08:00 [INF] Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'. 2019-03-25 12:32:15.073 +08:00 [INF] Executing ChallengeResult with authentication schemes ([]). 2019-03-25 12:32:15.077 +08:00 [INF] AuthenticationScheme: oidc was challenged. 2019-03-25 12:32:15.077 +08:00 [INF] Executed action MvcClient.Controllers.HomeController.Secure (MvcClient) in 13.078700000000001ms 2019-03-25 12:32:15.077 +08:00 [INF] Request finished in 14.6766ms 302 2019-03-25 12:32:39.168 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:5002/signin-oidc application/x-www-form-urlencoded 1522 2019-03-25 12:32:39.543 +08:00 [INF] AuthenticationScheme: Cookies signed in. 2019-03-25 12:32:39.543 +08:00 [INF] Request finished in 375.4138ms 302 //以下是调试环境下继续执行跳转回/home/secure的动作。部署后这些动作就没有被执行。 2019-03-25 12:32:39.550 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:5002/Home/Secure 2019-03-25 12:32:39.551 +08:00 [INF] Route matched with {action = "Secure", controller = "Home"}. Executing action MvcClient.Controllers.HomeController.Secure (MvcClient) 2019-03-25 12:32:39.551 +08:00 [INF] Authorization was successful. 2019-03-25 12:32:39.551 +08:00 [INF] Executing action method MvcClient.Controllers.HomeController.Secure (MvcClient) - Validation state: "Valid" 2019-03-25 12:32:39.552 +08:00 [INF] Executed action method MvcClient.Controllers.HomeController.Secure (MvcClient), returned result Microsoft.AspNetCore.Mvc.ViewResult in 0.2637ms. 2019-03-25 12:32:39.556 +08:00 [INF] Executing ViewResult, running view Secure. 2019-03-25 12:32:39.562 +08:00 [INF] Executed ViewResult - view Secure executed in 10.0428ms. 2019-03-25 12:32:39.563 +08:00 [INF] Executed action MvcClient.Controllers.HomeController.Secure (MvcClient) in 11.7323ms 2019-03-25 12:32:39.565 +08:00 [INF] Request finished in 14.3843ms 200 text/html; charset=utf-8 ``` 观察对比两种环境下的cookie,发现部署后从IdentityServer跳转到MvcClient/signin-oidc后少了两个cookie: .AspNetCore.Identity.Application idsrv.session ---- 从IdentityServer4官方的示例代码来看,其示例代码可能还无法直接应用于部署环境,在startup.cs中有一段代码: ``` if (Environment.IsDevelopment()) { builder.AddDeveloperSigningCredential(); } else { throw new Exception("need to configure key material"); } ``` 由此可见sigin-oidc的404问题有可能是解密凭据引起的。但是我对ASP.net core源码了解太少,提供上述信息希望能够得到大神的指点。 2019-03-29更新:AddDeveloperSigningCredential会生成RSA加密证书,使得程序能够正常运行,虽然其安全性会比较差。详见[IdentityServer4部署到服务器,配置证书问题](https://www.jianshu.com/p/1b82f6d2644e "")。因此AddDeveloperSigningCredential并非导致本次问题的原因。 ---- 2019-03-26更新: 如果把IdentityServer4.Samples\Quickstarts\4_ImplicitFlowAuthenticationWithExternal示例部署到同样的环境,发现能够运行通过。但是如果改为Hybrid模式就会出现signin-oidc 404 Not Found的问题。 identityserver.config.cs代码: ``` // OpenID Connect hybrid flow client (MVC) new Client { ClientId = "mvc", ClientName = "MVC Client", // 能正常部署运行: AllowedGrantTypes = GrantTypes.Implicit, // 会出现404问题: AllowedGrantTypes = GrantTypes.Hybrid, ClientSecrets = { new Secret("secret".Sha256()) }, RedirectUris = { "http://www.someweb.cn/signin-oidc" }, PostLogoutRedirectUris = { "http://www.someweb.cn/signout-callback-oidc" }, AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, "api1" }, AllowOfflineAccess = true } ``` MvcClient.startup.cs: ``` { options.DefaultScheme = "Cookies"; options.DefaultChallengeScheme = "oidc"; }) .AddCookie("Cookies") .AddOpenIdConnect("oidc", options => { options.SignInScheme = "Cookies"; options.Authority = "https://identity.someweb.cn"; options.RequireHttpsMetadata = false; options.ClientId = "mvc"; options.ClientSecret = "secret"; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; options.Scope.Add("offline_access"); options.ClaimActions.MapJsonKey("website", "website"); // 能够正常部署运行: options.ResponseType = "id_token"; // 会发生signin-oidc 404错误: options.Scope.Add("api1"); options.ResponseType = "code id_token"; // 会发生"invalid_scope" 错误: options.Scope.Add("api1"); options.ResponseType = "id_token"; }); ``` 现在虽然已经知道Hybrid模式下公网部署才会出现错误,但究竟是我对client的配置错误还是IS4的bug所引起的问题并不清楚。 我试过AddCors,但并没有解决以上问题。
SpringMVC页面无法跳转
出现问题:SpringMVC页面无法跳转,老是报: [WARN ] [19:58:55] org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/MVCdemo/user/login] in DispatcherServlet with name 'springMVC' 之前的项目也是这么写的,毫无问题,现在这个test项目也是简单模仿的,连Hibernate数据库都没用,居然出现这个问题,百度、google搜寻也无果,解决不了。。。下面贴几段核心配置和写法,完整程序见附件,导包的话只要导spring最新版本即可。 1、web.xml [code="java"] <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- Character Encoding filter --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 加载所有Spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/spring-common.xml </param-value> </context-param> <!-- 配置spring监听 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 配置SpringMVC --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/spring-common.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> [/code] 2、spring-common.xml [code="java"] <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 声明使用注解的风格 --> <context:annotation-config/> <!-- 开启mvc注解 --> <mvc:annotation-driven /> <!-- 静态资源(js/image)的访问 --> <mvc:resources location="/js/" mapping="/js/**"/> <!-- 定义视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans> [/code] 3、UserLoginAction [code="java"] package com.study.action; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.study.service.UserService; @Controller @RequestMapping("/user") public class UserLoginAction{ @Resource(name="userService") private UserService userService; @RequestMapping("/login") public String login(String username,String password,HttpServletRequest request){ boolean b = userService.search(username,password); if(b==true){ request.setAttribute("username",username); return "/ppp/success"; }else{ return "/ppp/fail"; } } } [/code] 4、index.jsp [/code] <form action="/MVCdemo/user/login" method="post"> 用户名<input type="text" name="username"><br /> 密&nbsp;&nbsp;码<input type="password" name="password"><br /> <input type="submit" value="提交"> </form> [/code]
有关微信navigator的问题
![图片说明](https://img-ask.csdn.net/upload/201703/05/1488677992_660717.png) **图一** ![图片说明](https://img-ask.csdn.net/upload/201703/05/1488678018_615998.png) **图二** ![图片说明](https://img-ask.csdn.net/upload/201703/05/1488678031_972124.png) ![图片说明](https://img-ask.csdn.net/upload/201703/05/1488678042_65672.png) **程序先从图一(userenroll)跳到图二(register),然后又从图二再点击链接navigator跳到图一,图一能够跳到图二,可图二不能跳到图一,页面json配置了,绝对路径、相对路径都写过了,可就是无法跳转,调试有时出现fail not url in app.json,有时又没出现问题,想问一下,微信的超链接在进入两层后的页面有讲究??? 不知道怎么才能实现跳转,请教各位开发微信的前辈**
多activity还是单activity的选择?
大家在开发APP的时候是用多个activity(例如一个页面一个activity),还是整个程序只用了一个activity(页面用view来呈现)? 它们的优点和缺点各是什么呢? 小弟不才,特来求解。 我自己做的APP除了登陆用一个activity,整个主程序只用了一个activity,页面跳转用viewflipper来实现,每个页面都是一个view,所有的页面都继承自自定义的一个抽象类BaseView,里面实现了页面之间的数据传递和一些共用的方法。 主要我觉得每个activity都有自己的生命周期,而且每次需要AndroidManifest中注册一遍感觉好麻烦,就自己想了这个办法,具体哪个好其实我自己也说不上来,哪位大神给小弟解释一下?
【Angular】如何更好的解决项目发布更新后的缓存问题?
缓存好,缓存妙,缓存一样让人头疼。 虽然说,angular可以使用npm script的--prod来打包程序,同时,也会在文件名上标注MD5,用以识别有更新内容和无更新内容的文件。 但是,假设我在更新前是一直停留在A页面,那么我在A页面上的变更,就算更新发布之后,也要过一小段时间后才会更新。那这个时候,如果要操作什么数据啊,等等就很麻烦了。这种情况该怎么破? 再假设,如果我一直停留在B页面,但是,这一次的更新,我已经删掉了B页面的内容,并更新发布了。结果,B页面还是可以继续操作,我从B跳转到A页面,然后再回退,还是可以进到B页面的。除非等到浏览器自动刷新或者我主动刷新,才会404。这种情况又该怎么破呢? 在网上,有看到一个方法,就是还可以在URL上加上随机数或者时间戳来保证没有缓存。如果是加时间戳,是加在href中或者js中,还是加在app.routing.ts中(loadChildren)? 或者,还有更好的办法吗?
Android webview里调用 支付宝接口
做的程序是Android框架嵌套js 用webview来加载这些页面,现在在webview里面点击支付时的时候, 会跳转到一个PC版的页面进行支付,这个功能在PC上是正常的。 现在嵌套在Android里的时候 ,经常出现无法登陆,扫码支付后不能返回的现象。 所以决定用支付宝的接口。 https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.t8Z1SV&treeId=59&articleId=104669&docType=1 就是这种介入方式,里面有个方法接口fetchOrderInfoFromH5PayUrl # 接口功能 # # 从拦截的URL中获取支付请求相关信息,封装成新的订单信息字符串作为返回值。如果该URL不是有效的支付宝支付URL,则返回空字符串。 但是现在这个我总是不能拦截到自己支付地址,还是会跳转到PC版的页面,想要的结果是可以直接底部弹出来支付框(有安装支付宝APP的时候),没有装的话是转到H5的页面中。 这个接入需要申请什么权限吗,我看官方demo里这种方式没有用到, 看到的朋友 可以指点一下吗,第一次集成支付宝 非常迷茫,项目快上线了,这个功能以及纠缠我好多天了,在线等
AnglurJs中A标签跳转后返回,如何保持原来的参数!
有这么一个需求: 用IoNic做移动端前端的时候,需要放大和缩小图片,用了好几种办法都不行,由于这款app是嵌套在类似于微信的app使用的,你就把它当做是仿微信的小程序算了。只有一种办法能够实现放大和缩小功能,哪就是直接给出a标签或者直接打开一个新窗口,这样用户可以双指滑动放大和缩小。 现在问题是:当用户点击a标签的时候,进去新的窗口,虽然说新窗口把久窗口覆盖,但是用户按返回键的时候,当初的页面的参数不在了。显示的是一堆angluar表达式。这方法如果用jQuery来做的话,返回的时候带参数回来就行,但是angluarJs怎么做的? ``` <div class="row row-wrap"> <div class="col col-33" ng-repeat="attach in data.attaches" ng-switch on="attach.mime | limitTo:5"> <a ng-href="#/image/{{attach.id}}" ng-switch-when="image"><img class="image-tb" ng-src="../../action/comm/file/image-tb/{{attach.id}}"></img></a> <a ng-href="#/video/{{attach.id}}" ng-switch-when="video"><img class="image-tb" ng-src="../../images/play.png"></img></a> </div> </div> ``` ``` <script id="image.html" type="text/ng-template"> <ion-view> <ion-content> <img width="100%" height="100%" ng-src="../../action/comm/file/online/{{fileId}}"></img> </ion-content> </ion-view> </script> ``` ``` // 图片查看页面的控制器 .controller('ImageCtrl', function($scope, $stateParams, $state, dqDataLoader) { $scope.fileId = $stateParams.fileId; }) ```
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问